@@ -20,35 +20,15 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
20
20
21
21
#define APP_BANNER "Run LWM2M client"
22
22
23
- #if !defined(CONFIG_NET_CONFIG_PEER_IPV4_ADDR )
24
- #define CONFIG_NET_CONFIG_PEER_IPV4_ADDR ""
25
- #endif
26
-
27
- #if !defined(CONFIG_NET_CONFIG_PEER_IPV6_ADDR )
28
- #define CONFIG_NET_CONFIG_PEER_IPV6_ADDR ""
29
- #endif
30
-
31
- #if defined(CONFIG_NET_IPV6 )
32
- #define SERVER_ADDR CONFIG_NET_CONFIG_PEER_IPV6_ADDR
33
- #elif defined(CONFIG_NET_IPV4 )
34
- #define SERVER_ADDR CONFIG_NET_CONFIG_PEER_IPV4_ADDR
35
- #else
36
- #error LwM2M requires either IPV6 or IPV4 support
37
- #endif
38
-
39
-
40
23
#define WAIT_TIME K_SECONDS(10)
41
24
#define CONNECT_TIME K_SECONDS(10)
42
25
43
26
#define CLIENT_MANUFACTURER "Zephyr"
44
27
#define CLIENT_MODEL_NUMBER "OMA-LWM2M Sample Client"
45
28
#define CLIENT_SERIAL_NUMBER "345000123"
46
29
#define CLIENT_FIRMWARE_VER "1.0"
47
- #define CLIENT_DEVICE_TYPE "OMA-LWM2M Client"
48
30
#define CLIENT_HW_VER "1.0.1"
49
31
50
- #define ENDPOINT_LEN 32
51
-
52
32
static uint8_t bat_idx = LWM2M_DEVICE_PWR_SRC_TYPE_BAT_INT ;
53
33
static int bat_mv = 3800 ;
54
34
static int bat_ma = 125 ;
@@ -62,17 +42,8 @@ static int mem_total = 25;
62
42
63
43
static struct lwm2m_ctx client ;
64
44
65
- #if defined(CONFIG_LWM2M_DTLS_SUPPORT )
66
- #define TLS_TAG 1
67
-
68
- /* "000102030405060708090a0b0c0d0e0f" */
69
- static unsigned char client_psk [] = {
70
- 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 ,
71
- 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f
72
- };
73
-
74
- static const char client_psk_id [] = "Client_identity" ;
75
- #endif /* CONFIG_LWM2M_DTLS_SUPPORT */
45
+ static const char * endpoint =
46
+ (sizeof (CONFIG_LWM2M_APP_ID ) > 1 ? CONFIG_LWM2M_APP_ID : CONFIG_BOARD );
76
47
77
48
static struct k_sem quit_lock ;
78
49
@@ -103,32 +74,25 @@ static int device_factory_default_cb(uint16_t obj_inst_id,
103
74
104
75
static int lwm2m_setup (void )
105
76
{
106
- int ret ;
107
- char * server_url ;
108
- uint16_t server_url_len ;
109
-
110
77
/* setup SECURITY object */
111
78
112
79
/* Server URL */
113
- ret = lwm2m_get_res_buf (& LWM2M_OBJ (0 , 0 , 0 ), (void * * )& server_url , & server_url_len , NULL ,
114
- NULL );
115
- if (ret < 0 ) {
116
- return ret ;
117
- }
118
-
119
- server_url_len = snprintk (server_url , server_url_len , "coap%s//%s%s%s" ,
120
- IS_ENABLED (CONFIG_LWM2M_DTLS_SUPPORT ) ? "s:" : ":" ,
121
- strchr (SERVER_ADDR , ':' ) ? "[" : "" , SERVER_ADDR ,
122
- strchr (SERVER_ADDR , ':' ) ? "]" : "" );
123
-
124
- lwm2m_set_res_data_len (& LWM2M_OBJ (0 , 0 , 0 ), server_url_len + 1 );
80
+ lwm2m_set_string (& LWM2M_OBJ (0 , 0 , 0 ), CONFIG_LWM2M_APP_SERVER );
125
81
126
82
/* Security Mode */
127
83
lwm2m_set_u8 (& LWM2M_OBJ (0 , 0 , 2 ), IS_ENABLED (CONFIG_LWM2M_DTLS_SUPPORT ) ? 0 : 3 );
128
84
#if defined(CONFIG_LWM2M_DTLS_SUPPORT )
129
- lwm2m_set_string (& LWM2M_OBJ (0 , 0 , 3 ), (char * )client_psk_id );
130
- lwm2m_set_opaque (& LWM2M_OBJ (0 , 0 , 5 ),
131
- (void * )client_psk , sizeof (client_psk ));
85
+ lwm2m_set_string (& LWM2M_OBJ (0 , 0 , 3 ), endpoint );
86
+ if (sizeof (CONFIG_LWM2M_APP_PSK ) > 1 ) {
87
+ char psk [1 + sizeof (CONFIG_LWM2M_APP_PSK ) / 2 ];
88
+ /* Need to skip the nul terminator from string */
89
+ size_t len = hex2bin (CONFIG_LWM2M_APP_PSK , sizeof (CONFIG_LWM2M_APP_PSK ) - 1 , psk ,
90
+ sizeof (psk ));
91
+ if (len <= 0 ) {
92
+ return - EINVAL ;
93
+ }
94
+ lwm2m_set_opaque (& LWM2M_OBJ (0 , 0 , 5 ), (void * )psk , len );
95
+ }
132
96
#endif /* CONFIG_LWM2M_DTLS_SUPPORT */
133
97
134
98
#if defined(CONFIG_LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP )
@@ -161,8 +125,8 @@ static int lwm2m_setup(void)
161
125
lwm2m_register_exec_callback (& LWM2M_OBJ (3 , 0 , 5 ), device_factory_default_cb );
162
126
lwm2m_set_res_buf (& LWM2M_OBJ (3 , 0 , 9 ), & bat_level , sizeof (bat_level ), sizeof (bat_level ), 0 );
163
127
lwm2m_set_res_buf (& LWM2M_OBJ (3 , 0 , 10 ), & mem_free , sizeof (mem_free ), sizeof (mem_free ), 0 );
164
- lwm2m_set_res_buf (& LWM2M_OBJ (3 , 0 , 17 ), CLIENT_DEVICE_TYPE , sizeof (CLIENT_DEVICE_TYPE ),
165
- sizeof (CLIENT_DEVICE_TYPE ), LWM2M_RES_DATA_FLAG_RO );
128
+ lwm2m_set_res_buf (& LWM2M_OBJ (3 , 0 , 17 ), CONFIG_BOARD , sizeof (CONFIG_BOARD ),
129
+ sizeof (CONFIG_BOARD ), LWM2M_RES_DATA_FLAG_RO );
166
130
lwm2m_set_res_buf (& LWM2M_OBJ (3 , 0 , 18 ), CLIENT_HW_VER , sizeof (CLIENT_HW_VER ),
167
131
sizeof (CLIENT_HW_VER ), LWM2M_RES_DATA_FLAG_RO );
168
132
lwm2m_set_res_buf (& LWM2M_OBJ (3 , 0 , 20 ), & bat_status , sizeof (bat_status ),
@@ -307,35 +271,11 @@ void main(void)
307
271
308
272
(void )memset (& client , 0x0 , sizeof (client ));
309
273
#if defined(CONFIG_LWM2M_DTLS_SUPPORT )
310
- client .tls_tag = TLS_TAG ;
274
+ client .tls_tag = CONFIG_LWM2M_APP_TLS_TAG ;
311
275
#endif
312
276
313
- #if defined(CONFIG_HWINFO )
314
- uint8_t dev_id [16 ];
315
- char dev_str [33 ];
316
- ssize_t length ;
317
- int i ;
318
-
319
- (void )memset (dev_id , 0x0 , sizeof (dev_id ));
320
-
321
- /* Obtain the device id */
322
- length = hwinfo_get_device_id (dev_id , sizeof (dev_id ));
323
-
324
- /* If this fails for some reason, use all zeros instead */
325
- if (length <= 0 ) {
326
- length = sizeof (dev_id );
327
- }
328
-
329
- /* Render the obtained serial number in hexadecimal representation */
330
- for (i = 0 ; i < length ; i ++ ) {
331
- sprintf (& dev_str [i * 2 ], "%02x" , dev_id [i ]);
332
- }
333
-
334
- lwm2m_rd_client_start (& client , dev_str , flags , rd_client_event , observe_cb );
335
- #else
336
277
/* client.sec_obj_inst is 0 as a starting point */
337
- lwm2m_rd_client_start (& client , CONFIG_BOARD , flags , rd_client_event , observe_cb );
338
- #endif
278
+ lwm2m_rd_client_start (& client , endpoint , flags , rd_client_event , observe_cb );
339
279
340
280
k_sem_take (& quit_lock , K_FOREVER );
341
281
}
0 commit comments