@@ -54,6 +54,9 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
5454#ifdef CONFIG_LWM2M_RW_CBOR_SUPPORT
5555#include "lwm2m_rw_cbor.h"
5656#endif
57+ #ifdef CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT
58+ #include "lwm2m_rw_senml_cbor.h"
59+ #endif
5760#ifdef CONFIG_LWM2M_RD_CLIENT_SUPPORT
5861#include "lwm2m_rd_client.h"
5962#endif
@@ -1685,6 +1688,12 @@ static int select_writer(struct lwm2m_output_context *out, uint16_t accept)
16851688 break ;
16861689#endif
16871690
1691+ #ifdef CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT
1692+ case LWM2M_FORMAT_APP_SENML_CBOR :
1693+ out -> writer = & senml_cbor_writer ;
1694+ break ;
1695+ #endif
1696+
16881697 default :
16891698 LOG_WRN ("Unknown content type %u" , accept );
16901699 return - ENOMSG ;
@@ -1730,6 +1739,13 @@ static int select_reader(struct lwm2m_input_context *in, uint16_t format)
17301739 break ;
17311740#endif
17321741
1742+ #ifdef CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT
1743+ case LWM2M_FORMAT_APP_SENML_CBOR :
1744+ in -> reader = & senml_cbor_reader ;
1745+ break ;
1746+ #endif
1747+
1748+
17331749 default :
17341750 LOG_WRN ("Unknown content type %u" , format );
17351751 return - ENOMSG ;
@@ -3799,6 +3815,11 @@ static int do_read_op(struct lwm2m_message *msg, uint16_t content_format)
37993815 return do_read_op_cbor (msg );
38003816#endif
38013817
3818+ #if defined(CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )
3819+ case LWM2M_FORMAT_APP_SENML_CBOR :
3820+ return do_read_op_senml_cbor (msg );
3821+ #endif
3822+
38023823 default :
38033824 LOG_ERR ("Unsupported content-format: %u" , content_format );
38043825 return - ENOMSG ;
@@ -3815,6 +3836,11 @@ static int do_composite_read_op(struct lwm2m_message *msg, uint16_t content_form
38153836 return do_composite_read_op_senml_json (msg );
38163837#endif
38173838
3839+ #if defined(CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )
3840+ case LWM2M_FORMAT_APP_SENML_CBOR :
3841+ return do_composite_read_op_senml_cbor (msg );
3842+ #endif
3843+
38183844 default :
38193845 LOG_ERR ("Unsupported content-format: %u" , content_format );
38203846 return - ENOMSG ;
@@ -3833,6 +3859,12 @@ static int do_composite_observe_read_path_op(struct lwm2m_message *msg, uint16_t
38333859 lwm2m_path_free_list );
38343860#endif
38353861
3862+ #if defined(CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )
3863+ case LWM2M_FORMAT_APP_SENML_CBOR :
3864+ return do_composite_observe_parse_path_senml_cbor (msg , lwm2m_path_list ,
3865+ lwm2m_path_free_list );
3866+ #endif
3867+
38363868 default :
38373869 LOG_ERR ("Unsupported content-format: %u" , content_format );
38383870 return - ENOMSG ;
@@ -4350,6 +4382,11 @@ static int do_write_op(struct lwm2m_message *msg,
43504382 return do_write_op_cbor (msg );
43514383#endif
43524384
4385+ #ifdef CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT
4386+ case LWM2M_FORMAT_APP_SENML_CBOR :
4387+ return do_write_op_senml_cbor (msg );
4388+ #endif
4389+
43534390 default :
43544391 LOG_ERR ("Unsupported format: %u" , format );
43554392 return - ENOMSG ;
@@ -4366,6 +4403,11 @@ static int do_composite_write_op(struct lwm2m_message *msg,
43664403 return do_write_op_senml_json (msg );
43674404#endif
43684405
4406+ #if defined(CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )
4407+ case LWM2M_FORMAT_APP_SENML_CBOR :
4408+ return do_write_op_senml_cbor (msg );
4409+ #endif
4410+
43694411 default :
43704412 LOG_ERR ("Unsupported format: %u" , format );
43714413 return - ENOMSG ;
@@ -4523,7 +4565,10 @@ static int lwm2m_engine_default_content_format(uint16_t *accept_format)
45234565{
45244566 if (IS_ENABLED (CONFIG_LWM2M_VERSION_1_1 )) {
45254567 /* Select content format use SenML CBOR when it possible */
4526- if (IS_ENABLED (CONFIG_LWM2M_RW_SENML_JSON_SUPPORT )) {
4568+ if (IS_ENABLED (CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )) {
4569+ LOG_DBG ("No accept option given. Assume SenML CBOR." );
4570+ * accept_format = LWM2M_FORMAT_APP_SENML_CBOR ;
4571+ } else if (IS_ENABLED (CONFIG_LWM2M_RW_SENML_JSON_SUPPORT )) {
45274572 LOG_DBG ("No accept option given. Assume SenML Json." );
45284573 * accept_format = LWM2M_FORMAT_APP_SEML_JSON ;
45294574 } else if (IS_ENABLED (CONFIG_LWM2M_RW_CBOR_SUPPORT )) {
@@ -6341,6 +6386,11 @@ static int do_send_op(struct lwm2m_message *msg, uint16_t content_format,
63416386 return do_send_op_senml_json (msg , lwm2m_path_list );
63426387#endif
63436388
6389+ #if defined(CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )
6390+ case LWM2M_FORMAT_APP_SENML_CBOR :
6391+ return do_send_op_senml_cbor (msg , lwm2m_path_list );
6392+ #endif
6393+
63446394 default :
63456395 LOG_ERR ("Unsupported content-format for /dp: %u" , content_format );
63466396 return - ENOMSG ;
@@ -6404,8 +6454,9 @@ int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t pa
64046454 return - E2BIG ;
64056455 }
64066456
6407- /* Select content format use CBOR when it possible */
6408- if (IS_ENABLED (CONFIG_LWM2M_RW_SENML_JSON_SUPPORT )) {
6457+ if (IS_ENABLED (CONFIG_LWM2M_RW_SENML_CBOR_SUPPORT )) {
6458+ content_format = LWM2M_FORMAT_APP_SENML_CBOR ;
6459+ } else if (IS_ENABLED (CONFIG_LWM2M_RW_SENML_JSON_SUPPORT )) {
64096460 content_format = LWM2M_FORMAT_APP_SEML_JSON ;
64106461 } else {
64116462 LOG_WRN ("SenML CBOR or JSON is not supported" );
0 commit comments