net: lwm2m: Add helper macro for filling lwm2m_obj_path structs

Allows filling up struct lwm2m_obj_path by a macro.
For example:
  struct lwm2m_obj_path p1 = LWM2M_OBJ(MY_OBJ);
  struct lwm2m_obj_path p2 = LWM2M_OBJ(MY_OBJ, 0, RESOURCE);

Similarly, some function calls accept the structure, so it can
be initialized from stack and given by a pointer
  lwm2m_notify_observer_path(&LWM2M_OBJ(obj_id, 0, RESOURCE_ID));

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
This commit is contained in:
Seppo Takalo 2022-09-27 16:29:26 +03:00 committed by Carles Cufí
commit d454cc946e
2 changed files with 36 additions and 43 deletions

View file

@ -28,6 +28,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
#include <zephyr/init.h>
#include <zephyr/net/http_parser_url.h>
#include <zephyr/net/lwm2m.h>
#include <zephyr/net/lwm2m_path.h>
#include <zephyr/net/net_ip.h>
#include <zephyr/net/socket.h>
#include <zephyr/sys/printk.h>
@ -537,12 +538,7 @@ int lwm2m_register_payload_handler(struct lwm2m_message *msg)
* needed to report object version.
*/
if (obj->instance_count == 0U || lwm2m_engine_shall_report_obj_version(obj)) {
struct lwm2m_obj_path path = {
.obj_id = obj->obj_id,
.level = LWM2M_PATH_LEVEL_OBJECT,
};
ret = engine_put_corelink(&msg->out, &path);
ret = engine_put_corelink(&msg->out, &LWM2M_OBJ(obj->obj_id));
if (ret < 0) {
return ret;
}
@ -554,13 +550,9 @@ int lwm2m_register_payload_handler(struct lwm2m_message *msg)
SYS_SLIST_FOR_EACH_CONTAINER(engine_obj_inst_list, obj_inst, node) {
if (obj_inst->obj->obj_id == obj->obj_id) {
struct lwm2m_obj_path path = {
.obj_id = obj_inst->obj->obj_id,
.obj_inst_id = obj_inst->obj_inst_id,
.level = LWM2M_PATH_LEVEL_OBJECT_INST,
};
ret = engine_put_corelink(&msg->out, &path);
ret = engine_put_corelink(
&msg->out,
&LWM2M_OBJ(obj_inst->obj->obj_id, obj_inst->obj_inst_id));
if (ret < 0) {
return ret;
}
@ -1485,14 +1477,9 @@ static int lwm2m_discover_add_res(struct lwm2m_message *msg, struct lwm2m_engine
struct lwm2m_engine_res *res)
{
int ret;
struct lwm2m_obj_path path = {
.obj_id = obj_inst->obj->obj_id,
.obj_inst_id = obj_inst->obj_inst_id,
.res_id = res->res_id,
.level = LWM2M_PATH_LEVEL_RESOURCE,
};
ret = engine_put_corelink(&msg->out, &path);
ret = engine_put_corelink(
&msg->out, &LWM2M_OBJ(obj_inst->obj->obj_id, obj_inst->obj_inst_id, res->res_id));
if (ret < 0) {
return ret;
}
@ -1507,15 +1494,9 @@ static int lwm2m_discover_add_res(struct lwm2m_message *msg, struct lwm2m_engine
continue;
}
path = (struct lwm2m_obj_path){
.obj_id = obj_inst->obj->obj_id,
.obj_inst_id = obj_inst->obj_inst_id,
.res_id = res->res_id,
.res_inst_id = res_inst->res_inst_id,
.level = LWM2M_PATH_LEVEL_RESOURCE_INST,
};
ret = engine_put_corelink(&msg->out, &path);
ret = engine_put_corelink(
&msg->out, &LWM2M_OBJ(obj_inst->obj->obj_id, obj_inst->obj_inst_id,
res->res_id, res_inst->res_inst_id));
if (ret < 0) {
return ret;
}
@ -1582,12 +1563,7 @@ int lwm2m_discover_handler(struct lwm2m_message *msg, bool is_bootstrap)
if ((is_bootstrap &&
(obj->instance_count == 0U || lwm2m_engine_shall_report_obj_version(obj))) ||
(!is_bootstrap && msg->path.level == LWM2M_PATH_LEVEL_OBJECT)) {
struct lwm2m_obj_path path = {
.obj_id = obj->obj_id,
.level = LWM2M_PATH_LEVEL_OBJECT,
};
ret = engine_put_corelink(&msg->out, &path);
ret = engine_put_corelink(&msg->out, &LWM2M_OBJ(obj->obj_id));
if (ret < 0) {
return ret;
}
@ -1614,13 +1590,9 @@ int lwm2m_discover_handler(struct lwm2m_message *msg, bool is_bootstrap)
* provided.
*/
if (msg->path.level <= LWM2M_PATH_LEVEL_OBJECT_INST) {
struct lwm2m_obj_path path = {
.obj_id = obj_inst->obj->obj_id,
.obj_inst_id = obj_inst->obj_inst_id,
.level = LWM2M_PATH_LEVEL_OBJECT_INST,
};
ret = engine_put_corelink(&msg->out, &path);
ret = engine_put_corelink(
&msg->out,
&LWM2M_OBJ(obj_inst->obj->obj_id, obj_inst->obj_inst_id));
if (ret < 0) {
return ret;
}