Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

#include <drivers/gpio.h>

#include "app_gpio.h"
#include "publisher.h"

struct device *led_device[4];
Expand All @@ -31,6 +32,7 @@ void app_gpio_init(void)
GPIO_DIR_OUT | GPIO_PUD_PULL_UP);
gpio_pin_write(led_device[0], DT_ALIAS_LED0_GPIOS_PIN, 1);

#ifndef ONE_LED_ONE_BUTTON_BOARD
led_device[1] = device_get_binding(DT_ALIAS_LED1_GPIOS_CONTROLLER);
gpio_pin_configure(led_device[1], DT_ALIAS_LED1_GPIOS_PIN,
GPIO_DIR_OUT | GPIO_PUD_PULL_UP);
Expand All @@ -45,7 +47,7 @@ void app_gpio_init(void)
gpio_pin_configure(led_device[3], DT_ALIAS_LED3_GPIOS_PIN,
GPIO_DIR_OUT | GPIO_PUD_PULL_UP);
gpio_pin_write(led_device[3], DT_ALIAS_LED3_GPIOS_PIN, 1);

#endif
/* Buttons configuration & setting */

k_work_init(&button_work, publish);
Expand All @@ -61,6 +63,7 @@ void app_gpio_init(void)
gpio_add_callback(button_device[0], &button_cb[0]);
gpio_pin_enable_callback(button_device[0], DT_ALIAS_SW0_GPIOS_PIN);

#ifndef ONE_LED_ONE_BUTTON_BOARD
button_device[1] = device_get_binding(DT_ALIAS_SW1_GPIOS_CONTROLLER);
gpio_pin_configure(button_device[1], DT_ALIAS_SW1_GPIOS_PIN,
(GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE |
Expand Down Expand Up @@ -93,4 +96,5 @@ void app_gpio_init(void)
BIT(DT_ALIAS_SW3_GPIOS_PIN));
gpio_add_callback(button_device[3], &button_cb[3]);
gpio_pin_enable_callback(button_device[3], DT_ALIAS_SW3_GPIOS_PIN);
#endif
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@

void update_led_gpio(void);
void update_light_state(void);
void update_vnd_led_gpio(void);

#endif
40 changes: 26 additions & 14 deletions samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,20 @@ static void light_default_var_init(void)
ctl->light->range_max = LIGHTNESS_MAX;
ctl->light->last = LIGHTNESS_MAX;
ctl->light->def = LIGHTNESS_MAX;
ctl->light->target = ctl->light->def;

ctl->temp->range_min = TEMP_MIN;
ctl->temp->range_max = TEMP_MAX;
ctl->temp->def = TEMP_MAX;
ctl->temp->target = ctl->temp->def;

ctl->duv->def = DELTA_UV_DEF;

ctl->light_temp_def = (u32_t) ((LIGHTNESS_MAX << 16) | TEMP_MAX);
ctl->light_temp_last_tgt = (u32_t) ((LIGHTNESS_MAX << 16) | TEMP_MAX);
ctl->duv->target = ctl->duv->def;
}

/* This function should only get call after execution of settings_load() */
static void light_default_status_init(void)
{
u16_t light_def;

/* Retrieve Range of Lightness */
if (ctl->light->range) {
ctl->light->range_max = (u16_t) (ctl->light->range >> 16);
Expand All @@ -60,12 +58,12 @@ static void light_default_status_init(void)
ctl->temp->range_min = (u16_t) ctl->temp->range;
}

/* Retrieve Default Lightness Value */
light_def = (u16_t) (ctl->light_temp_def >> 16);
ctl->light->def = constrain_lightness(light_def);
ctl->light->last = constrain_lightness(ctl->light->last);
ctl->light->def = constrain_lightness(ctl->light->def);
ctl->light->target = constrain_lightness(ctl->light->target);

/* Retrieve Default Temperature Value */
ctl->temp->def = (u16_t) ctl->light_temp_def;
ctl->temp->def = constrain_temperature(ctl->temp->def);
ctl->temp->target = constrain_temperature(ctl->temp->target);

ctl->temp->current = ctl->temp->def;
ctl->duv->current = ctl->duv->def;
Expand All @@ -82,18 +80,30 @@ static void light_default_status_init(void)
}
break;
case STATE_RESTORE:
ctl->light->current = (u16_t) (ctl->light_temp_last_tgt >> 16);
ctl->temp->current = (u16_t) ctl->light_temp_last_tgt;
ctl->light->current = ctl->light->target;
ctl->temp->current = ctl->temp->target;
ctl->duv->current = ctl->duv->target;
break;
}

default_tt = ctl->tt;

ctl->light->target = ctl->light->current;
ctl->temp->target = ctl->temp->current;
ctl->duv->target = ctl->duv->current;
}

void update_vnd_led_gpio(void)
{
#ifndef ONE_LED_ONE_BUTTON_BOARD
if (vnd_user_data.current == STATE_ON) {
/* LED2 On */
gpio_pin_write(led_device[1], DT_ALIAS_LED1_GPIOS_PIN, 0);
} else {
/* LED2 Off */
gpio_pin_write(led_device[1], DT_ALIAS_LED1_GPIOS_PIN, 1);
}
#endif
}

void update_led_gpio(void)
{
u8_t power, color;
Expand All @@ -112,6 +122,7 @@ void update_led_gpio(void)
gpio_pin_write(led_device[0], DT_ALIAS_LED0_GPIOS_PIN, 1);
}

#ifndef ONE_LED_ONE_BUTTON_BOARD
if (power < 50) {
/* LED3 On */
gpio_pin_write(led_device[2], DT_ALIAS_LED2_GPIOS_PIN, 0);
Expand All @@ -127,6 +138,7 @@ void update_led_gpio(void)
/* LED4 Off */
gpio_pin_write(led_device[3], DT_ALIAS_LED3_GPIOS_PIN, 1);
}
#endif
}

void update_light_state(void)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,39 +16,97 @@
#include <bluetooth/mesh.h>

/* Model Operation Codes */
#define BT_MESH_MODEL_OP_GEN_ONOFF_GET BT_MESH_MODEL_OP_2(0x82, 0x01)
#define BT_MESH_MODEL_OP_GEN_ONOFF_SET BT_MESH_MODEL_OP_2(0x82, 0x02)
#define BT_MESH_MODEL_OP_GEN_ONOFF_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x03)
#define BT_MESH_MODEL_OP_GEN_ONOFF_STATUS BT_MESH_MODEL_OP_2(0x82, 0x04)

#define BT_MESH_MODEL_OP_GEN_LEVEL_GET BT_MESH_MODEL_OP_2(0x82, 0x05)
#define BT_MESH_MODEL_OP_GEN_LEVEL_SET BT_MESH_MODEL_OP_2(0x82, 0x06)
#define BT_MESH_MODEL_OP_GEN_LEVEL_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x07)
#define BT_MESH_MODEL_OP_GEN_LEVEL_STATUS BT_MESH_MODEL_OP_2(0x82, 0x08)
#define BT_MESH_MODEL_OP_GEN_DELTA_SET BT_MESH_MODEL_OP_2(0x82, 0x09)
#define BT_MESH_MODEL_OP_GEN_DELTA_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x0A)
#define BT_MESH_MODEL_OP_GEN_MOVE_SET BT_MESH_MODEL_OP_2(0x82, 0x0B)
#define BT_MESH_MODEL_OP_GEN_MOVE_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x0C)

#define BT_MESH_MODEL_GEN_DEF_TRANS_TIME_STATUS BT_MESH_MODEL_OP_2(0x82, 0x10)

#define BT_MESH_MODEL_GEN_ONPOWERUP_STATUS BT_MESH_MODEL_OP_2(0x82, 0x12)

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_STATUS BT_MESH_MODEL_OP_2(0x82, 0x4E)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LINEAR_STATUS \
#define BT_MESH_MODEL_OP_GEN_ONOFF_GET BT_MESH_MODEL_OP_2(0x82, 0x01)
#define BT_MESH_MODEL_OP_GEN_ONOFF_SET BT_MESH_MODEL_OP_2(0x82, 0x02)
#define BT_MESH_MODEL_OP_GEN_ONOFF_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x03)
#define BT_MESH_MODEL_OP_GEN_ONOFF_STATUS BT_MESH_MODEL_OP_2(0x82, 0x04)

#define BT_MESH_MODEL_OP_GEN_LEVEL_GET BT_MESH_MODEL_OP_2(0x82, 0x05)
#define BT_MESH_MODEL_OP_GEN_LEVEL_SET BT_MESH_MODEL_OP_2(0x82, 0x06)
#define BT_MESH_MODEL_OP_GEN_LEVEL_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x07)
#define BT_MESH_MODEL_OP_GEN_LEVEL_STATUS BT_MESH_MODEL_OP_2(0x82, 0x08)
#define BT_MESH_MODEL_OP_GEN_DELTA_SET BT_MESH_MODEL_OP_2(0x82, 0x09)
#define BT_MESH_MODEL_OP_GEN_DELTA_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x0A)
#define BT_MESH_MODEL_OP_GEN_MOVE_SET BT_MESH_MODEL_OP_2(0x82, 0x0B)
#define BT_MESH_MODEL_OP_GEN_MOVE_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x0C)

#define BT_MESH_MODEL_GEN_DEF_TRANS_TIME_GET BT_MESH_MODEL_OP_2(0x82, 0x0D)
#define BT_MESH_MODEL_GEN_DEF_TRANS_TIME_SET BT_MESH_MODEL_OP_2(0x82, 0x0E)
#define BT_MESH_MODEL_GEN_DEF_TRANS_TIME_SET_UNACK \
BT_MESH_MODEL_OP_2(0x82, 0x0F)
#define BT_MESH_MODEL_GEN_DEF_TRANS_TIME_STATUS BT_MESH_MODEL_OP_2(0x82, 0x10)

#define BT_MESH_MODEL_GEN_ONPOWERUP_GET BT_MESH_MODEL_OP_2(0x82, 0x11)
#define BT_MESH_MODEL_GEN_ONPOWERUP_STATUS BT_MESH_MODEL_OP_2(0x82, 0x12)
#define BT_MESH_MODEL_GEN_ONPOWERUP_SET BT_MESH_MODEL_OP_2(0x82, 0x13)
#define BT_MESH_MODEL_GEN_ONPOWERUP_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x14)

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_GET BT_MESH_MODEL_OP_2(0x82, 0x4B)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_SET BT_MESH_MODEL_OP_2(0x82, 0x4C)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x4D)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_STATUS BT_MESH_MODEL_OP_2(0x82, 0x4E)

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LINEAR_GET \
BT_MESH_MODEL_OP_2(0x82, 0x4F)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LINEAR_SET \
BT_MESH_MODEL_OP_2(0x82, 0x50)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LINEAR_SET_UNACK \
BT_MESH_MODEL_OP_2(0x82, 0x51)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LINEAR_STATUS \
BT_MESH_MODEL_OP_2(0x82, 0x52)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LAST_STATUS \

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LAST_GET \
BT_MESH_MODEL_OP_2(0x82, 0x53)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_LAST_STATUS \
BT_MESH_MODEL_OP_2(0x82, 0x54)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_DEFAULT_STATUS \

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_DEFAULT_GET \
BT_MESH_MODEL_OP_2(0x82, 0x55)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_DEFAULT_STATUS \
BT_MESH_MODEL_OP_2(0x82, 0x56)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_RANGE_STATUS \

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_RANGE_GET \
BT_MESH_MODEL_OP_2(0x82, 0x57)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_RANGE_STATUS \
BT_MESH_MODEL_OP_2(0x82, 0x58)

#define BT_MESH_MODEL_LIGHT_CTL_STATUS BT_MESH_MODEL_OP_2(0x82, 0x60)
#define BT_MESH_MODEL_LIGHT_CTL_TEMP_RANGE_STATUS \
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_DEFAULT_SET \
BT_MESH_MODEL_OP_2(0x82, 0x59)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_DEFAULT_SET_UNACK \
BT_MESH_MODEL_OP_2(0x82, 0x5A)

#define BT_MESH_MODEL_LIGHT_LIGHTNESS_RANGE_SET \
BT_MESH_MODEL_OP_2(0x82, 0x5B)
#define BT_MESH_MODEL_LIGHT_LIGHTNESS_RANGE_SET_UNACK \
BT_MESH_MODEL_OP_2(0x82, 0x5C)

#define BT_MESH_MODEL_LIGHT_CTL_GET BT_MESH_MODEL_OP_2(0x82, 0x5D)
#define BT_MESH_MODEL_LIGHT_CTL_SET BT_MESH_MODEL_OP_2(0x82, 0x5E)
#define BT_MESH_MODEL_LIGHT_CTL_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x5F)
#define BT_MESH_MODEL_LIGHT_CTL_STATUS BT_MESH_MODEL_OP_2(0x82, 0x60)

#define BT_MESH_MODEL_LIGHT_CTL_TEMP_GET BT_MESH_MODEL_OP_2(0x82, 0x61)

#define BT_MESH_MODEL_LIGHT_CTL_TEMP_RANGE_GET \
BT_MESH_MODEL_OP_2(0x82, 0x62)
#define BT_MESH_MODEL_LIGHT_CTL_TEMP_RANGE_STATUS \
BT_MESH_MODEL_OP_2(0x82, 0x63)
#define BT_MESH_MODEL_LIGHT_CTL_TEMP_STATUS BT_MESH_MODEL_OP_2(0x82, 0x66)
#define BT_MESH_MODEL_LIGHT_CTL_DEFAULT_STATUS BT_MESH_MODEL_OP_2(0x82, 0x68)

#define BT_MESH_MODEL_LIGHT_CTL_TEMP_SET BT_MESH_MODEL_OP_2(0x82, 0x64)
#define BT_MESH_MODEL_LIGHT_CTL_TEMP_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x65)
#define BT_MESH_MODEL_LIGHT_CTL_TEMP_STATUS BT_MESH_MODEL_OP_2(0x82, 0x66)

#define BT_MESH_MODEL_LIGHT_CTL_DEFAULT_GET BT_MESH_MODEL_OP_2(0x82, 0x67)
#define BT_MESH_MODEL_LIGHT_CTL_DEFAULT_STATUS BT_MESH_MODEL_OP_2(0x82, 0x68)

#define BT_MESH_MODEL_LIGHT_CTL_DEFAULT_SET BT_MESH_MODEL_OP_2(0x82, 0x69)
#define BT_MESH_MODEL_LIGHT_CTL_DEFAULT_SET_UNACK \
BT_MESH_MODEL_OP_2(0x82, 0x6A)

#define BT_MESH_MODEL_LIGHT_CTL_TEMP_RANGE_SET \
BT_MESH_MODEL_OP_2(0x82, 0x6B)
#define BT_MESH_MODEL_LIGHT_CTL_TEMP_RANGE_SET_UNACK \
BT_MESH_MODEL_OP_2(0x82, 0x6C)

void bt_ready(void);

Expand Down
Loading