Skip to content

Commit ff323ce

Browse files
vikrant8052jhedberg
authored andcommitted
samples: mesh: nrf52: separately save default & last target values
Separately saved default & last target values of lightness, temperature & delta_uv on flash (using settings layer). Signed-off-by: Vikrant More <[email protected]>
1 parent 5ad8828 commit ff323ce

File tree

6 files changed

+60
-44
lines changed

6 files changed

+60
-44
lines changed

samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/main.c

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,20 @@ static void light_default_var_init(void)
3232
ctl->light->range_max = LIGHTNESS_MAX;
3333
ctl->light->last = LIGHTNESS_MAX;
3434
ctl->light->def = LIGHTNESS_MAX;
35+
ctl->light->target = ctl->light->def;
3536

3637
ctl->temp->range_min = TEMP_MIN;
3738
ctl->temp->range_max = TEMP_MAX;
3839
ctl->temp->def = TEMP_MAX;
40+
ctl->temp->target = ctl->temp->def;
3941

4042
ctl->duv->def = DELTA_UV_DEF;
41-
42-
ctl->light_temp_def = (u32_t) ((LIGHTNESS_MAX << 16) | TEMP_MAX);
43-
ctl->light_temp_last_tgt = (u32_t) ((LIGHTNESS_MAX << 16) | TEMP_MAX);
43+
ctl->duv->target = ctl->duv->def;
4444
}
4545

4646
/* This function should only get call after execution of settings_load() */
4747
static void light_default_status_init(void)
4848
{
49-
u16_t light_def;
50-
5149
/* Retrieve Range of Lightness */
5250
if (ctl->light->range) {
5351
ctl->light->range_max = (u16_t) (ctl->light->range >> 16);
@@ -60,12 +58,9 @@ static void light_default_status_init(void)
6058
ctl->temp->range_min = (u16_t) ctl->temp->range;
6159
}
6260

63-
/* Retrieve Default Lightness Value */
64-
light_def = (u16_t) (ctl->light_temp_def >> 16);
65-
ctl->light->def = constrain_lightness(light_def);
66-
67-
/* Retrieve Default Temperature Value */
68-
ctl->temp->def = (u16_t) ctl->light_temp_def;
61+
ctl->light->last = constrain_lightness(ctl->light->last);
62+
ctl->light->def = constrain_lightness(ctl->light->def);
63+
ctl->light->target = constrain_lightness(ctl->light->target);
6964

7065
ctl->temp->current = ctl->temp->def;
7166
ctl->duv->current = ctl->duv->def;
@@ -82,8 +77,9 @@ static void light_default_status_init(void)
8277
}
8378
break;
8479
case STATE_RESTORE:
85-
ctl->light->current = (u16_t) (ctl->light_temp_last_tgt >> 16);
86-
ctl->temp->current = (u16_t) ctl->light_temp_last_tgt;
80+
ctl->light->current = ctl->light->target;
81+
ctl->temp->current = ctl->temp->target;
82+
ctl->duv->current = ctl->duv->target;
8783
break;
8884
}
8985

samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/mesh/device_composition.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,7 @@ static void light_lightness_default_set_unack(struct bt_mesh_model *model,
14951495
ctl->light->def = constrain_lightness(lightness);
14961496

14971497
light_lightness_default_publish(model);
1498-
save_on_flash(LIGHTNESS_TEMP_DEF_STATE);
1498+
save_on_flash(DEF_STATES);
14991499
}
15001500
}
15011501

@@ -1946,7 +1946,7 @@ static bool light_ctl_default_setunack(struct bt_mesh_model *model,
19461946
ctl->duv->def = delta_uv;
19471947

19481948
light_ctl_default_publish(model);
1949-
save_on_flash(LIGHTNESS_TEMP_DEF_STATE);
1949+
save_on_flash(DEF_STATES);
19501950
}
19511951

19521952
return true;

samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/mesh/device_composition.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,6 @@ struct light_ctl_state {
8282

8383
u8_t onpowerup, tt;
8484

85-
u32_t light_temp_def;
86-
u32_t light_temp_last_tgt;
87-
8885
u8_t last_tid;
8986
u16_t last_src_addr;
9087
u16_t last_dst_addr;

samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/mesh/state_binding.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ void set_target(u8_t type, void *dptr)
174174
}
175175

176176
if (ctl->onpowerup == STATE_RESTORE) {
177-
save_on_flash(LIGHTNESS_TEMP_LAST_TARGET_STATE);
177+
save_on_flash(LAST_TARGET_STATES);
178178
}
179179
}
180180

samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/storage.c

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,15 @@ static void save_gen_onpowerup_state(void)
2727
settings_save_one("ps/gpo", &ctl->onpowerup, sizeof(ctl->onpowerup));
2828

2929
if (ctl->onpowerup == 0x02) {
30-
save_on_flash(LIGHTNESS_TEMP_LAST_TARGET_STATE);
30+
save_on_flash(LAST_TARGET_STATES);
3131
}
3232
}
3333

34-
static void save_lightness_temp_def_state(void)
34+
static void save_def_states(void)
3535
{
36-
ctl->light_temp_def = (u32_t) ((ctl->light->def << 16) |
37-
ctl->temp->def);
38-
39-
settings_save_one("ps/ltd", &ctl->light_temp_def,
40-
sizeof(ctl->light_temp_def));
36+
settings_save_one("ps/ld", &ctl->light->def, sizeof(ctl->light->def));
37+
settings_save_one("ps/td", &ctl->temp->def, sizeof(ctl->temp->def));
38+
settings_save_one("ps/dd", &ctl->duv->def, sizeof(ctl->duv->def));
4139
}
4240

4341
static void save_lightness_last_state(void)
@@ -47,15 +45,16 @@ static void save_lightness_last_state(void)
4745
printk("Lightness Last values have been saved !!\n");
4846
}
4947

50-
static void save_lightness_temp_last_target_state(void)
48+
static void save_last_target_states(void)
5149
{
52-
ctl->light_temp_last_tgt =
53-
(u32_t) ((ctl->light->target << 16) | ctl->temp->target);
50+
settings_save_one("ps/llt", &ctl->light->target,
51+
sizeof(ctl->light->target));
5452

55-
settings_save_one("ps/ltlt", &ctl->light_temp_last_tgt,
56-
sizeof(ctl->light_temp_last_tgt));
53+
settings_save_one("ps/tlt", &ctl->temp->target,
54+
sizeof(ctl->temp->target));
5755

58-
printk("Lightness & Temp. Target values have been saved !!\n");
56+
settings_save_one("ps/dlt", &ctl->duv->target,
57+
sizeof(ctl->duv->target));
5958
}
6059

6160
static void save_lightness_range(void)
@@ -87,14 +86,14 @@ static void storage_work_handler(struct k_work *work)
8786
case GEN_ONPOWERUP_STATE:
8887
save_gen_onpowerup_state();
8988
break;
90-
case LIGHTNESS_TEMP_DEF_STATE:
91-
save_lightness_temp_def_state();
89+
case DEF_STATES:
90+
save_def_states();
9291
break;
9392
case LIGHTNESS_LAST_STATE:
9493
save_lightness_last_state();
9594
break;
96-
case LIGHTNESS_TEMP_LAST_TARGET_STATE:
97-
save_lightness_temp_last_target_state();
95+
case LAST_TARGET_STATES:
96+
save_last_target_states();
9897
break;
9998
case LIGHTNESS_RANGE:
10099
save_lightness_range();
@@ -137,19 +136,39 @@ static int ps_set(const char *key, size_t len_rd,
137136
sizeof(ctl->onpowerup));
138137
}
139138

140-
if (!strncmp(key, "ltd", key_len)) {
141-
len = read_cb(cb_arg, &ctl->light_temp_def,
142-
sizeof(ctl->light_temp_def));
139+
if (!strncmp(key, "ld", key_len)) {
140+
len = read_cb(cb_arg, &ctl->light->def,
141+
sizeof(ctl->light->def));
142+
}
143+
144+
if (!strncmp(key, "td", key_len)) {
145+
len = read_cb(cb_arg, &ctl->temp->def,
146+
sizeof(ctl->temp->def));
147+
}
148+
149+
if (!strncmp(key, "dd", key_len)) {
150+
len = read_cb(cb_arg, &ctl->duv->def,
151+
sizeof(ctl->duv->def));
143152
}
144153

145154
if (!strncmp(key, "ll", key_len)) {
146155
len = read_cb(cb_arg, &ctl->light->last,
147156
sizeof(ctl->light->last));
148157
}
149158

150-
if (!strncmp(key, "ltlt", key_len)) {
151-
len = read_cb(cb_arg, &ctl->light_temp_last_tgt,
152-
sizeof(ctl->light_temp_last_tgt));
159+
if (!strncmp(key, "llt", key_len)) {
160+
len = read_cb(cb_arg, &ctl->light->target,
161+
sizeof(ctl->light->target));
162+
}
163+
164+
if (!strncmp(key, "tlt", key_len)) {
165+
len = read_cb(cb_arg, &ctl->temp->target,
166+
sizeof(ctl->temp->target));
167+
}
168+
169+
if (!strncmp(key, "dlt", key_len)) {
170+
len = read_cb(cb_arg, &ctl->duv->target,
171+
sizeof(ctl->duv->target));
153172
}
154173

155174
if (!strncmp(key, "lr", key_len)) {

samples/boards/nrf/mesh/onoff_level_lighting_vnd_app/src/storage.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@ enum ps_variables_id {
1212
RESET_COUNTER = 0x01,
1313
GEN_DEF_TRANS_TIME_STATE,
1414
GEN_ONPOWERUP_STATE,
15-
LIGHTNESS_TEMP_DEF_STATE,
15+
16+
DEF_STATES,
17+
1618
LIGHTNESS_LAST_STATE,
17-
LIGHTNESS_TEMP_LAST_TARGET_STATE,
19+
20+
LAST_TARGET_STATES,
21+
1822
LIGHTNESS_RANGE,
1923
TEMPERATURE_RANGE
2024
};

0 commit comments

Comments
 (0)