Skip to content

Commit 73bfead

Browse files
committed
samples: cellular: lwm2m_client: Fix number of buttons and switches on DK
Only nRF9160DK have ON/OFF switches for application. Other DKs have only various number of push-buttons so update the UI module and related LwM2M modules to reflect that. Also, some minor fixes for number of leds on each board. Signed-off-by: Seppo Takalo <[email protected]>
1 parent 087d1e6 commit 73bfead

File tree

7 files changed

+76
-80
lines changed

7 files changed

+76
-80
lines changed

samples/cellular/lwm2m_client/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ config APP_PUSH_BUTTON
2020

2121
config APP_ONOFF_SWITCH
2222
bool "Enable switches"
23-
depends on BOARD_NRF9160DK_NRF9160_NS || BOARD_NRF9161DK_NRF9161_NS
23+
depends on BOARD_NRF9160DK_NRF9160_NS
2424
select UI_INPUT
2525
select LWM2M_IPSO_ONOFF_SWITCH
2626
select LWM2M_APP_ONOFF_SWITCH

samples/cellular/lwm2m_client/boards/nrf9151dk_nrf9151_ns.conf

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@
88
# App
99
CONFIG_APP_GNSS=y
1010
CONFIG_APP_LIGHT_CONTROL=y
11-
CONFIG_APP_ONOFF_SWITCH=y
1211
CONFIG_APP_PUSH_BUTTON=y
1312

1413
# IPSO
15-
CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT=2
16-
CONFIG_LWM2M_IPSO_ONOFF_SWITCH_INSTANCE_COUNT=2
14+
CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT=4
1715
CONFIG_LWM2M_IPSO_LIGHT_CONTROL_INSTANCE_COUNT=4
18-
CONFIG_LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_1=y
1916
CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1=y
2017

2118
# Sensor module

samples/cellular/lwm2m_client/boards/nrf9161dk_nrf9161_ns.conf

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22
# App
33
CONFIG_APP_GNSS=y
44
CONFIG_APP_LIGHT_CONTROL=y
5-
CONFIG_APP_ONOFF_SWITCH=y
65
CONFIG_APP_PUSH_BUTTON=y
76

87
# IPSO
9-
CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT=2
10-
CONFIG_LWM2M_IPSO_ONOFF_SWITCH_INSTANCE_COUNT=2
8+
CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT=4
119
CONFIG_LWM2M_IPSO_LIGHT_CONTROL_INSTANCE_COUNT=4
12-
CONFIG_LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_1=y
1310
CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1=y
1411

1512
# Sensor module

samples/cellular/lwm2m_client/boards/thingy91x_nrf9151_ns.conf

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,9 @@ CONFIG_FMFU_FDEV_SKIP_PREVALIDATION=n
2929
CONFIG_BME680=y
3030

3131
# IPSO
32-
CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT=2
33-
CONFIG_LWM2M_IPSO_ONOFF_SWITCH_INSTANCE_COUNT=2
34-
CONFIG_LWM2M_IPSO_LIGHT_CONTROL_INSTANCE_COUNT=4
35-
CONFIG_LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_1=y
32+
CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT=1
33+
CONFIG_LWM2M_IPSO_LIGHT_CONTROL_INSTANCE_COUNT=1
3634
CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1=y
37-
CONFIG_LWM2M_IPSO_APP_COLOUR_SENSOR_VERSION_1_1=y
3835
CONFIG_LWM2M_IPSO_GENERIC_SENSOR_VERSION_1_1=y
3936
CONFIG_LWM2M_IPSO_HUMIDITY_SENSOR_VERSION_1_1=y
4037
CONFIG_LWM2M_IPSO_PRESSURE_SENSOR_VERSION_1_1=y

samples/cellular/lwm2m_client/src/lwm2m/lwm2m_light_control.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ static int lwm2m_init_light_control(void)
224224
snprintk(colour_str, RGBIR_STR_LENGTH, "0x010101");
225225
}
226226

227-
if (IS_ENABLED(CONFIG_BOARD_THINGY91_NRF9160_NS)) {
227+
if (IS_ENABLED(CONFIG_BOARD_THINGY91_NRF9160_NS) ||
228+
IS_ENABLED(CONFIG_BOARD_THINGY91X_NRF9151_NS)) {
228229
/* Create RGB light control object */
229230
lwm2m_create_object_inst(&LWM2M_OBJ(IPSO_OBJECT_LIGHT_CONTROL_ID, 0));
230231
lwm2m_register_post_write_callback(

samples/cellular/lwm2m_client/src/lwm2m/lwm2m_push_button.c

Lines changed: 63 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -23,46 +23,67 @@ LOG_MODULE_DECLARE(app_lwm2m, CONFIG_APP_LOG_LEVEL);
2323
#define BUTTON2_OBJ_INST_ID 1
2424
#define BUTTON2_APP_NAME "Push button 2"
2525

26-
static time_t lwm2m_timestamp[2];
26+
static const char * const button_names[] = {
27+
"Push button 1",
28+
#if CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT > 1
29+
"Push button 2",
30+
#endif
31+
#if CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT > 2
32+
"Push button 3",
33+
#endif
34+
#if CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT > 3
35+
"Push button 4",
36+
#endif
37+
};
38+
39+
static time_t lwm2m_timestamp[ARRAY_SIZE(button_names)];
2740

2841
static int lwm2m_init_push_button(void)
2942
{
30-
ui_input_init();
31-
32-
/* create button1 object */
33-
lwm2m_create_object_inst(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, BUTTON1_OBJ_INST_ID));
34-
35-
lwm2m_set_res_buf(
36-
&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, BUTTON1_OBJ_INST_ID, APPLICATION_TYPE_RID),
37-
BUTTON1_APP_NAME, sizeof(BUTTON1_APP_NAME), sizeof(BUTTON1_APP_NAME),
38-
LWM2M_RES_DATA_FLAG_RO);
39-
40-
if (IS_ENABLED(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)) {
41-
lwm2m_set_res_buf(
42-
&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, BUTTON1_OBJ_INST_ID, TIMESTAMP_RID),
43-
&lwm2m_timestamp[BUTTON1_OBJ_INST_ID],
44-
sizeof(lwm2m_timestamp[BUTTON1_OBJ_INST_ID]),
45-
sizeof(lwm2m_timestamp[BUTTON1_OBJ_INST_ID]),
46-
LWM2M_RES_DATA_FLAG_RW);
43+
int ret;
44+
45+
ret = ui_input_init();
46+
if (ret < 0) {
47+
return ret;
4748
}
4849

49-
if (CONFIG_LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT == 2) {
50-
/* create button2 object */
51-
lwm2m_create_object_inst(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID,
52-
BUTTON2_OBJ_INST_ID));
50+
/* create button objects */
51+
for (int i = 0; i < ARRAY_SIZE(button_names); i++) {
52+
struct lwm2m_obj_path path = LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, i);
53+
54+
ret = lwm2m_create_object_inst(&path);
55+
if (ret < 0) {
56+
return ret;
57+
}
58+
59+
path = LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, i, APPLICATION_TYPE_RID);
5360

54-
lwm2m_set_res_buf(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID,
55-
BUTTON2_OBJ_INST_ID, APPLICATION_TYPE_RID),
56-
BUTTON2_APP_NAME, sizeof(BUTTON2_APP_NAME),
57-
sizeof(BUTTON2_APP_NAME), LWM2M_RES_DATA_FLAG_RO);
61+
const uint16_t len = sizeof("Push button X");
62+
63+
ret = lwm2m_set_res_buf(&path, (void *)button_names[i], len, len,
64+
LWM2M_RES_DATA_FLAG_RO);
65+
if (ret < 0) {
66+
return ret;
67+
}
5868

5969
if (IS_ENABLED(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)) {
60-
lwm2m_set_res_buf(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID,
61-
BUTTON2_OBJ_INST_ID, TIMESTAMP_RID),
62-
&lwm2m_timestamp[BUTTON2_OBJ_INST_ID],
63-
sizeof(lwm2m_timestamp[BUTTON2_OBJ_INST_ID]),
64-
sizeof(lwm2m_timestamp[BUTTON2_OBJ_INST_ID]),
65-
LWM2M_RES_DATA_FLAG_RW);
70+
path = LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, i, TIMESTAMP_RID);
71+
ret = lwm2m_set_res_buf(&path, &lwm2m_timestamp[i], sizeof(time_t),
72+
sizeof(time_t), 0);
73+
if (ret < 0) {
74+
return ret;
75+
}
76+
}
77+
path = LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, i, DIGITAL_INPUT_STATE_RID);
78+
ret = lwm2m_set_bool(&path, false);
79+
if (ret < 0) {
80+
return ret;
81+
}
82+
83+
path = LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, i, DIGITAL_INPUT_COUNTER_RID);
84+
ret = lwm2m_set_s64(&path, 0);
85+
if (ret < 0) {
86+
return ret;
6687
}
6788
}
6889

@@ -79,37 +100,17 @@ static bool app_event_handler(const struct app_event_header *aeh)
79100
return false;
80101
}
81102

82-
switch (event->device_number) {
83-
case 1:
84-
lwm2m_set_bool(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID,
85-
BUTTON1_OBJ_INST_ID,
86-
DIGITAL_INPUT_STATE_RID),
87-
event->state);
88-
89-
if (event->state) {
90-
if (IS_ENABLED(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)) {
91-
set_ipso_obj_timestamp(IPSO_OBJECT_PUSH_BUTTON_ID,
92-
BUTTON1_OBJ_INST_ID);
93-
}
94-
}
95-
break;
96-
97-
case 2:
98-
lwm2m_set_bool(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID,
99-
BUTTON2_OBJ_INST_ID,
100-
DIGITAL_INPUT_STATE_RID),
101-
event->state);
102-
103-
if (event->state) {
104-
if (IS_ENABLED(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)) {
105-
set_ipso_obj_timestamp(IPSO_OBJECT_PUSH_BUTTON_ID,
106-
BUTTON2_OBJ_INST_ID);
107-
}
108-
}
109-
break;
103+
uint16_t id = event->device_number - 1;
110104

111-
default:
112-
return false;
105+
lwm2m_set_bool(&LWM2M_OBJ(IPSO_OBJECT_PUSH_BUTTON_ID, id,
106+
DIGITAL_INPUT_STATE_RID),
107+
event->state);
108+
109+
if (event->state) {
110+
if (IS_ENABLED(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)) {
111+
set_ipso_obj_timestamp(IPSO_OBJECT_PUSH_BUTTON_ID,
112+
id);
113+
}
113114
}
114115

115116
LOG_DBG("Button %d changed state to %d.", event->device_number, event->state);

samples/cellular/lwm2m_client/src/ui/ui_input.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,15 @@ static void dk_input_device_event_handler(uint32_t device_states, uint32_t has_c
4848

4949
struct ui_input_event *event = new_ui_input_event();
5050

51-
event->type = dev_num > 2 ? ON_OFF_SWITCH : PUSH_BUTTON;
52-
if (dev_num > 2) {
53-
event->device_number = (dev_num % 3) + 1;
51+
/* Only nRF9160DK have ON/OFF switches */
52+
if (IS_ENABLED(CONFIG_BOARD_NRF9160DK_NRF9160_NS)) {
53+
event->type = dev_num > 2 ? ON_OFF_SWITCH : PUSH_BUTTON;
54+
event->device_number = (dev_num > 2) ? (dev_num - 2) : dev_num;
5455
} else {
56+
event->type = PUSH_BUTTON;
5557
event->device_number = dev_num;
5658
}
59+
5760
event->state = (device_states & BIT(dev_num - 1));
5861

5962
APP_EVENT_SUBMIT(event);

0 commit comments

Comments
 (0)