From 49b0e2cc7636d51aca7ae30b8e2a41d579464ba0 Mon Sep 17 00:00:00 2001 From: Robert Lubos Date: Thu, 11 Feb 2021 16:01:23 +0100 Subject: [PATCH] net: lwm2m: Unify reusable resources creation Some of the objects redefined reusable resources IDs, while others used a common header which defines resource IDs. Unify the approach and use the header in every object. Signed-off-by: Robert Lubos --- subsys/net/lib/lwm2m/ipso_accelerometer.c | 45 ++++++-------- subsys/net/lib/lwm2m/ipso_buzzer.c | 54 +++++++---------- subsys/net/lib/lwm2m/ipso_light_control.c | 52 ++++++---------- subsys/net/lib/lwm2m/ipso_onoff_switch.c | 48 ++++++--------- subsys/net/lib/lwm2m/ipso_push_button.c | 27 ++++----- subsys/net/lib/lwm2m/ipso_temp_sensor.c | 43 ++++++------- subsys/net/lib/lwm2m/ipso_timer.c | 73 +++++++++-------------- subsys/net/lib/lwm2m/lwm2m_resource_ids.h | 24 ++++++++ 8 files changed, 157 insertions(+), 209 deletions(-) diff --git a/subsys/net/lib/lwm2m/ipso_accelerometer.c b/subsys/net/lib/lwm2m/ipso_accelerometer.c index 4558004d71b..84fe92d2999 100644 --- a/subsys/net/lib/lwm2m/ipso_accelerometer.c +++ b/subsys/net/lib/lwm2m/ipso_accelerometer.c @@ -20,6 +20,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define ACCEL_VERSION_MAJOR 1 #define ACCEL_VERSION_MINOR 0 @@ -29,16 +30,8 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #else #define ADD_TIMESTAMPS 0 #endif -/* Server resource IDs */ -#define ACCEL_X_VALUE_ID 5702 -#define ACCEL_Y_VALUE_ID 5703 -#define ACCEL_Z_VALUE_ID 5704 -#define ACCEL_SENSOR_UNITS_ID 5701 -#define ACCEL_MIN_RANGE_VALUE_ID 5603 -#define ACCEL_MAX_RANGE_VALUE_ID 5604 -#if ADD_TIMESTAMPS -#define ACCEL_TIMESTAMP_ID 5518 +#if ADD_TIMESTAMPS #define ACCEL_MAX_ID 7 #else #define ACCEL_MAX_ID 6 @@ -65,14 +58,14 @@ static struct ipso_accel_data accel_data[MAX_INSTANCE_COUNT]; static struct lwm2m_engine_obj accel; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(ACCEL_X_VALUE_ID, R, FLOAT32), - OBJ_FIELD_DATA(ACCEL_Y_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(ACCEL_Z_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(ACCEL_SENSOR_UNITS_ID, R_OPT, STRING), - OBJ_FIELD_DATA(ACCEL_MIN_RANGE_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(ACCEL_MAX_RANGE_VALUE_ID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(X_VALUE_RID, R, FLOAT32), + OBJ_FIELD_DATA(Y_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(Z_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(SENSOR_UNITS_RID, R_OPT, STRING), + OBJ_FIELD_DATA(MIN_RANGE_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(MAX_RANGE_VALUE_RID, R_OPT, FLOAT32), #if ADD_TIMESTAMPS - OBJ_FIELD_DATA(ACCEL_TIMESTAMP_ID, RW_OPT, TIME), + OBJ_FIELD_DATA(TIMESTAMP_RID, RW_OPT, TIME), #endif }; @@ -113,27 +106,25 @@ static struct lwm2m_engine_obj_inst *accel_create(uint16_t obj_inst_id) init_res_instance(res_inst[avail], ARRAY_SIZE(res_inst[avail])); /* initialize instance resource data */ - INIT_OBJ_RES_DATA(ACCEL_X_VALUE_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(X_VALUE_RID, res[avail], i, res_inst[avail], j, &accel_data[avail].x_value, sizeof(accel_data[avail].x_value)); - INIT_OBJ_RES_DATA(ACCEL_Y_VALUE_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(Y_VALUE_RID, res[avail], i, res_inst[avail], j, &accel_data[avail].y_value, sizeof(accel_data[avail].y_value)); - INIT_OBJ_RES_DATA(ACCEL_Z_VALUE_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(Z_VALUE_RID, res[avail], i, res_inst[avail], j, &accel_data[avail].z_value, sizeof(accel_data[avail].z_value)); - INIT_OBJ_RES_OPTDATA(ACCEL_SENSOR_UNITS_ID, res[avail], i, + INIT_OBJ_RES_OPTDATA(SENSOR_UNITS_RID, res[avail], i, res_inst[avail], j); - INIT_OBJ_RES_DATA(ACCEL_MIN_RANGE_VALUE_ID, res[avail], i, - res_inst[avail], j, - &accel_data[avail].min_range, + INIT_OBJ_RES_DATA(MIN_RANGE_VALUE_RID, res[avail], i, res_inst[avail], + j, &accel_data[avail].min_range, sizeof(accel_data[avail].min_range)); - INIT_OBJ_RES_DATA(ACCEL_MAX_RANGE_VALUE_ID, res[avail], i, - res_inst[avail], j, - &accel_data[avail].max_range, + INIT_OBJ_RES_DATA(MAX_RANGE_VALUE_RID, res[avail], i, res_inst[avail], + j, &accel_data[avail].max_range, sizeof(accel_data[avail].max_range)); #if ADD_TIMESTAMPS - INIT_OBJ_RES_OPTDATA(ACCEL_TIMESTAMP_ID, res[avail], i, + INIT_OBJ_RES_OPTDATA(TIMESTAMP_RID, res[avail], i, res_inst[avail], j); #endif diff --git a/subsys/net/lib/lwm2m/ipso_buzzer.c b/subsys/net/lib/lwm2m/ipso_buzzer.c index d99aa3afb26..b81d98fdddc 100644 --- a/subsys/net/lib/lwm2m/ipso_buzzer.c +++ b/subsys/net/lib/lwm2m/ipso_buzzer.c @@ -20,21 +20,11 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define BUZZER_VERSION_MAJOR 1 #define BUZZER_VERSION_MINOR 0 -/* resource IDs */ -#define BUZZER_ON_OFF_ID 5850 -#define BUZZER_LEVEL_ID 5548 -#define BUZZER_DELAY_DURATION_ID 5521 -#define BUZZER_MINIMUM_OFF_TIME_ID 5525 -#define BUZZER_APPLICATION_TYPE_ID 5750 -/* This field is actually not in the spec, so nothing sets it except here - * users can listen for post_write events to it for buzzer on/off events - */ -#define BUZZER_DIGITAL_STATE_ID 5500 - #define BUZZER_MAX_ID 6 #define MAX_INSTANCE_COUNT CONFIG_LWM2M_IPSO_BUZZER_INSTANCE_COUNT @@ -64,12 +54,16 @@ static struct ipso_buzzer_data buzzer_data[MAX_INSTANCE_COUNT]; static struct lwm2m_engine_obj buzzer; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(BUZZER_ON_OFF_ID, RW, BOOL), - OBJ_FIELD_DATA(BUZZER_LEVEL_ID, RW_OPT, FLOAT32), - OBJ_FIELD_DATA(BUZZER_DELAY_DURATION_ID, RW_OPT, FLOAT64), - OBJ_FIELD_DATA(BUZZER_MINIMUM_OFF_TIME_ID, RW, FLOAT64), - OBJ_FIELD_DATA(BUZZER_APPLICATION_TYPE_ID, RW_OPT, STRING), - OBJ_FIELD_DATA(BUZZER_DIGITAL_STATE_ID, R, BOOL), + OBJ_FIELD_DATA(ON_OFF_RID, RW, BOOL), + OBJ_FIELD_DATA(LEVEL_RID, RW_OPT, FLOAT32), + OBJ_FIELD_DATA(DELAY_DURATION_RID, RW_OPT, FLOAT64), + OBJ_FIELD_DATA(MINIMUM_OFF_TIME_RID, RW, FLOAT64), + OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING), + /* This field is actually not in the spec, so nothing sets it except + * here users can listen for post_write events to it for buzzer on/off + * events + */ + OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL), }; static struct lwm2m_engine_obj_inst inst[MAX_INSTANCE_COUNT]; @@ -121,7 +115,7 @@ static int start_buzzer(struct ipso_buzzer_data *buzzer) buzzer->trigger_offset = k_uptime_get(); snprintk(path, MAX_RESOURCE_LEN, "%d/%u/%d", IPSO_OBJECT_BUZZER_ID, - buzzer->obj_inst_id, BUZZER_DIGITAL_STATE_ID); + buzzer->obj_inst_id, DIGITAL_INPUT_STATE_RID); lwm2m_engine_set_bool(path, true); float2ms(&buzzer->delay_duration, &temp); @@ -140,7 +134,7 @@ static int stop_buzzer(struct ipso_buzzer_data *buzzer, bool cancel) } snprintk(path, MAX_RESOURCE_LEN, "%d/%u/%d", IPSO_OBJECT_BUZZER_ID, - buzzer->obj_inst_id, BUZZER_DIGITAL_STATE_ID); + buzzer->obj_inst_id, DIGITAL_INPUT_STATE_RID); lwm2m_engine_set_bool(path, false); if (cancel) { @@ -215,27 +209,23 @@ static struct lwm2m_engine_obj_inst *buzzer_create(uint16_t obj_inst_id) init_res_instance(res_inst[avail], ARRAY_SIZE(res_inst[avail])); /* initialize instance resource data */ - INIT_OBJ_RES(BUZZER_ON_OFF_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &buzzer_data[avail].onoff, + INIT_OBJ_RES(ON_OFF_RID, res[avail], i, res_inst[avail], j, 1, false, + true, &buzzer_data[avail].onoff, sizeof(buzzer_data[avail].onoff), NULL, NULL, NULL, onoff_post_write_cb, NULL); - INIT_OBJ_RES_DATA(BUZZER_LEVEL_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(LEVEL_RID, res[avail], i, res_inst[avail], j, &buzzer_data[avail].level, sizeof(buzzer_data[avail].level)); - INIT_OBJ_RES_DATA(BUZZER_DELAY_DURATION_ID, res[avail], i, - res_inst[avail], j, + INIT_OBJ_RES_DATA(DELAY_DURATION_RID, res[avail], i, res_inst[avail], j, &buzzer_data[avail].delay_duration, sizeof(buzzer_data[avail].delay_duration)); - INIT_OBJ_RES_DATA(BUZZER_MINIMUM_OFF_TIME_ID, res[avail], i, - res_inst[avail], j, - &buzzer_data[avail].min_off_time, + INIT_OBJ_RES_DATA(MINIMUM_OFF_TIME_RID, res[avail], i, res_inst[avail], + j, &buzzer_data[avail].min_off_time, sizeof(buzzer_data[avail].min_off_time)); - INIT_OBJ_RES_OPTDATA(BUZZER_APPLICATION_TYPE_ID, res[avail], i, + INIT_OBJ_RES_OPTDATA(APPLICATION_TYPE_RID, res[avail], i, res_inst[avail], j); - INIT_OBJ_RES_DATA(BUZZER_DIGITAL_STATE_ID, res[avail], i, - res_inst[avail], j, - &buzzer_data[avail].active, + INIT_OBJ_RES_DATA(DIGITAL_INPUT_STATE_RID, res[avail], i, + res_inst[avail], j, &buzzer_data[avail].active, sizeof(buzzer_data[avail].active)); inst[avail].resources = res[avail]; diff --git a/subsys/net/lib/lwm2m/ipso_light_control.c b/subsys/net/lib/lwm2m/ipso_light_control.c index 64c2698add9..9ef21e74b75 100644 --- a/subsys/net/lib/lwm2m/ipso_light_control.c +++ b/subsys/net/lib/lwm2m/ipso_light_control.c @@ -22,20 +22,11 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define LIGHT_VERSION_MAJOR 1 #define LIGHT_VERSION_MINOR 0 -/* Server resource IDs */ -#define LIGHT_ON_OFF_ID 5850 -#define LIGHT_DIMMER_ID 5851 -#define LIGHT_ON_TIME_ID 5852 -#define LIGHT_CUMULATIVE_ACTIVE_POWER_ID 5805 -#define LIGHT_POWER_FACTOR_ID 5820 -#define LIGHT_COLOUR_ID 5706 -#define LIGHT_SENSOR_UNITS_ID 5701 -#define LIGHT_APPLICATION_TYPE_ID 5750 - #define LIGHT_MAX_ID 8 #define MAX_INSTANCE_COUNT CONFIG_LWM2M_IPSO_LIGHT_CONTROL_INSTANCE_COUNT @@ -61,14 +52,14 @@ static char units[MAX_INSTANCE_COUNT][LIGHT_STRING_SHORT]; static struct lwm2m_engine_obj light_control; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(LIGHT_ON_OFF_ID, RW, BOOL), - OBJ_FIELD_DATA(LIGHT_DIMMER_ID, RW_OPT, U8), - OBJ_FIELD_DATA(LIGHT_ON_TIME_ID, RW_OPT, S32), - OBJ_FIELD_DATA(LIGHT_CUMULATIVE_ACTIVE_POWER_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(LIGHT_POWER_FACTOR_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(LIGHT_COLOUR_ID, RW_OPT, STRING), - OBJ_FIELD_DATA(LIGHT_SENSOR_UNITS_ID, R_OPT, STRING), - OBJ_FIELD_DATA(LIGHT_APPLICATION_TYPE_ID, RW_OPT, STRING), + OBJ_FIELD_DATA(ON_OFF_RID, RW, BOOL), + OBJ_FIELD_DATA(DIMMER_RID, RW_OPT, U8), + OBJ_FIELD_DATA(ON_TIME_RID, RW_OPT, S32), + OBJ_FIELD_DATA(CUMULATIVE_ACTIVE_POWER_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(POWER_FACTOR_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(COLOUR_RID, RW_OPT, STRING), + OBJ_FIELD_DATA(SENSOR_UNITS_RID, R_OPT, STRING), + OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING), }; static struct lwm2m_engine_obj_inst inst[MAX_INSTANCE_COUNT]; @@ -169,29 +160,24 @@ static struct lwm2m_engine_obj_inst *light_control_create(uint16_t obj_inst_id) init_res_instance(res_inst[avail], ARRAY_SIZE(res_inst[avail])); /* initialize instance resource data */ - INIT_OBJ_RES_DATA(LIGHT_ON_OFF_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(ON_OFF_RID, res[avail], i, res_inst[avail], j, &on_off_value[avail], sizeof(*on_off_value)); - INIT_OBJ_RES_DATA(LIGHT_DIMMER_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(DIMMER_RID, res[avail], i, res_inst[avail], j, &dimmer_value[avail], sizeof(*dimmer_value)); - INIT_OBJ_RES(LIGHT_ON_TIME_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &on_time_value[avail], sizeof(*on_time_value), + INIT_OBJ_RES(ON_TIME_RID, res[avail], i, res_inst[avail], j, 1, false, + true, &on_time_value[avail], sizeof(*on_time_value), on_time_read_cb, NULL, NULL, on_time_post_write_cb, NULL); - INIT_OBJ_RES_DATA(LIGHT_CUMULATIVE_ACTIVE_POWER_ID, res[avail], i, - res_inst[avail], j, - &cumulative_active_value[avail], + INIT_OBJ_RES_DATA(CUMULATIVE_ACTIVE_POWER_RID, res[avail], i, + res_inst[avail], j, &cumulative_active_value[avail], sizeof(*cumulative_active_value)); - INIT_OBJ_RES_DATA(LIGHT_POWER_FACTOR_ID, res[avail], i, - res_inst[avail], j, + INIT_OBJ_RES_DATA(POWER_FACTOR_RID, res[avail], i, res_inst[avail], j, &power_factor_value[avail], sizeof(*power_factor_value)); - INIT_OBJ_RES_DATA(LIGHT_COLOUR_ID, res[avail], i, - res_inst[avail], j, + INIT_OBJ_RES_DATA(COLOUR_RID, res[avail], i, res_inst[avail], j, colour[avail], LIGHT_STRING_LONG); - INIT_OBJ_RES_DATA(LIGHT_SENSOR_UNITS_ID, res[avail], i, - res_inst[avail], j, + INIT_OBJ_RES_DATA(SENSOR_UNITS_RID, res[avail], i, res_inst[avail], j, units[avail], LIGHT_STRING_SHORT); - INIT_OBJ_RES_OPTDATA(LIGHT_APPLICATION_TYPE_ID, res[avail], i, + INIT_OBJ_RES_OPTDATA(APPLICATION_TYPE_RID, res[avail], i, res_inst[avail], j); inst[avail].resources = res[avail]; diff --git a/subsys/net/lib/lwm2m/ipso_onoff_switch.c b/subsys/net/lib/lwm2m/ipso_onoff_switch.c index 5bad062f1e3..a8c13633613 100644 --- a/subsys/net/lib/lwm2m/ipso_onoff_switch.c +++ b/subsys/net/lib/lwm2m/ipso_onoff_switch.c @@ -20,6 +20,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define SWITCH_VERSION_MAJOR 1 #define SWITCH_VERSION_MINOR 0 @@ -30,15 +31,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #define ADD_TIMESTAMPS 0 #endif -/* resource IDs */ -#define SWITCH_DIGITAL_STATE_ID 5500 -#define SWITCH_DIGITAL_INPUT_COUNTER_ID 5501 -#define SWITCH_ON_TIME_ID 5852 -#define SWITCH_OFF_TIME_ID 5854 -#define SWITCH_APPLICATION_TYPE_ID 5750 #if ADD_TIMESTAMPS -#define SWITCH_TIMESTAMP_ID 5518 - #define SWITCH_MAX_ID 6 #else #define SWITCH_MAX_ID 5 @@ -67,13 +60,13 @@ static struct ipso_switch_data switch_data[MAX_INSTANCE_COUNT]; static struct lwm2m_engine_obj onoff_switch; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(SWITCH_DIGITAL_STATE_ID, R, BOOL), - OBJ_FIELD_DATA(SWITCH_DIGITAL_INPUT_COUNTER_ID, R_OPT, U64), - OBJ_FIELD_DATA(SWITCH_ON_TIME_ID, RW_OPT, U64), - OBJ_FIELD_DATA(SWITCH_OFF_TIME_ID, RW_OPT, U64), - OBJ_FIELD_DATA(SWITCH_APPLICATION_TYPE_ID, RW_OPT, STRING), + OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL), + OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, R_OPT, U64), + OBJ_FIELD_DATA(ON_TIME_RID, RW_OPT, U64), + OBJ_FIELD_DATA(OFF_TIME_RID, RW_OPT, U64), + OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING), #if ADD_TIMESTAMPS - OBJ_FIELD_DATA(SWITCH_TIMESTAMP_ID, RW_OPT, TIME), + OBJ_FIELD_DATA(TIMESTAMP_RID, RW_OPT, TIME), #endif }; @@ -213,26 +206,23 @@ static struct lwm2m_engine_obj_inst *switch_create(uint16_t obj_inst_id) init_res_instance(res_inst[avail], ARRAY_SIZE(res_inst[avail])); /* initialize instance resource data */ - INIT_OBJ_RES(SWITCH_DIGITAL_STATE_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &switch_data[avail].state, + INIT_OBJ_RES(DIGITAL_INPUT_STATE_RID, res[avail], i, res_inst[avail], + j, 1, false, true, &switch_data[avail].state, sizeof(switch_data[avail].state), NULL, NULL, NULL, state_post_write_cb, NULL); - INIT_OBJ_RES_DATA(SWITCH_DIGITAL_INPUT_COUNTER_ID, res[avail], i, - res_inst[avail], j, - &switch_data[avail].counter, + INIT_OBJ_RES_DATA(DIGITAL_INPUT_COUNTER_RID, res[avail], i, + res_inst[avail], j, &switch_data[avail].counter, sizeof(switch_data[avail].counter)); - INIT_OBJ_RES_OPT(SWITCH_ON_TIME_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - on_time_read_cb, NULL, NULL, time_post_write_cb, NULL); - INIT_OBJ_RES_OPT(SWITCH_OFF_TIME_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - off_time_read_cb, NULL, NULL, time_post_write_cb, NULL); - INIT_OBJ_RES_OPTDATA(SWITCH_APPLICATION_TYPE_ID, res[avail], i, + INIT_OBJ_RES_OPT(ON_TIME_RID, res[avail], i, + res_inst[avail], j, 1, false, true, + on_time_read_cb, NULL, NULL, time_post_write_cb, NULL); + INIT_OBJ_RES_OPT(OFF_TIME_RID, res[avail], i, + res_inst[avail], j, 1, false, true, + off_time_read_cb, NULL, NULL, time_post_write_cb, NULL); + INIT_OBJ_RES_OPTDATA(APPLICATION_TYPE_RID, res[avail], i, res_inst[avail], j); #if ADD_TIMESTAMPS - INIT_OBJ_RES_OPTDATA(SWITCH_TIMESTAMP_ID, res[avail], i, - res_inst[avail], j); + INIT_OBJ_RES_OPTDATA(TIMESTAMP_RID, res[avail], i, res_inst[avail], j); #endif inst[avail].resources = res[avail]; diff --git a/subsys/net/lib/lwm2m/ipso_push_button.c b/subsys/net/lib/lwm2m/ipso_push_button.c index 83eeb103d02..047b61945f6 100644 --- a/subsys/net/lib/lwm2m/ipso_push_button.c +++ b/subsys/net/lib/lwm2m/ipso_push_button.c @@ -20,6 +20,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define BUTTON_VERSION_MAJOR 1 #define BUTTON_VERSION_MINOR 0 @@ -30,13 +31,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #define ADD_TIMESTAMPS 0 #endif -/* resource IDs */ -#define BUTTON_DIGITAL_STATE_ID 5500 -#define BUTTON_DIGITAL_INPUT_COUNTER_ID 5501 -#define BUTTON_APPLICATION_TYPE_ID 5750 #if ADD_TIMESTAMPS -#define BUTTON_TIMESTAMP_ID 5518 - #define BUTTON_MAX_ID 4 #else #define BUTTON_MAX_ID 3 @@ -62,11 +57,11 @@ static struct ipso_button_data button_data[MAX_INSTANCE_COUNT]; static struct lwm2m_engine_obj onoff_switch; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(BUTTON_DIGITAL_STATE_ID, R, BOOL), - OBJ_FIELD_DATA(BUTTON_DIGITAL_INPUT_COUNTER_ID, R_OPT, U64), - OBJ_FIELD_DATA(BUTTON_APPLICATION_TYPE_ID, RW_OPT, STRING), + OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL), + OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, R_OPT, U64), + OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING), #if ADD_TIMESTAMPS - OBJ_FIELD_DATA(BUTTON_TIMESTAMP_ID, RW_OPT, TIME), + OBJ_FIELD_DATA(TIMESTAMP_RID, RW_OPT, TIME), #endif }; @@ -145,20 +140,18 @@ static struct lwm2m_engine_obj_inst *button_create(uint16_t obj_inst_id) init_res_instance(res_inst[avail], ARRAY_SIZE(res_inst[avail])); /* initialize instance resource data */ - INIT_OBJ_RES(BUTTON_DIGITAL_STATE_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &button_data[avail].state, + INIT_OBJ_RES(DIGITAL_INPUT_STATE_RID, res[avail], i, res_inst[avail], + j, 1, false, true, &button_data[avail].state, sizeof(button_data[avail].state), NULL, NULL, NULL, state_post_write_cb, NULL); - INIT_OBJ_RES_DATA(BUTTON_DIGITAL_INPUT_COUNTER_ID, res[avail], i, + INIT_OBJ_RES_DATA(DIGITAL_INPUT_COUNTER_RID, res[avail], i, res_inst[avail], j, &button_data[avail].counter, sizeof(button_data[avail].counter)); - INIT_OBJ_RES_OPTDATA(BUTTON_APPLICATION_TYPE_ID, res[avail], i, + INIT_OBJ_RES_OPTDATA(APPLICATION_TYPE_RID, res[avail], i, res_inst[avail], j); #if ADD_TIMESTAMPS - INIT_OBJ_RES_OPTDATA(BUTTON_TIMESTAMP_ID, res[avail], i, - res_inst[avail], j); + INIT_OBJ_RES_OPTDATA(TIMESTAMP_RID, res[avail], i, res_inst[avail], j); #endif inst[avail].resources = res[avail]; diff --git a/subsys/net/lib/lwm2m/ipso_temp_sensor.c b/subsys/net/lib/lwm2m/ipso_temp_sensor.c index 3fd391e3d43..3ed57b7a88b 100644 --- a/subsys/net/lib/lwm2m/ipso_temp_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_temp_sensor.c @@ -22,6 +22,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define TEMP_VERSION_MAJOR 1 #define TEMP_VERSION_MINOR 0 @@ -32,17 +33,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #define ADD_TIMESTAMPS 0 #endif -/* Server resource IDs */ -#define TEMP_SENSOR_VALUE_ID 5700 -#define TEMP_UNITS_ID 5701 -#define TEMP_MIN_MEASURED_VALUE_ID 5601 -#define TEMP_MAX_MEASURED_VALUE_ID 5602 -#define TEMP_MIN_RANGE_VALUE_ID 5603 -#define TEMP_MAX_RANGE_VALUE_ID 5604 -#define TEMP_RESET_MIN_MAX_MEASURED_VALUES_ID 5605 #if ADD_TIMESTAMPS -#define TEMP_TIMESTAMP_ID 5518 - #define TEMP_MAX_ID 8 #else /* !ADD_TIMESTAMPS */ #define TEMP_MAX_ID 7 @@ -69,13 +60,13 @@ static float32_value_t max_range_value[MAX_INSTANCE_COUNT]; static struct lwm2m_engine_obj temp_sensor; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(TEMP_SENSOR_VALUE_ID, R, FLOAT32), - OBJ_FIELD_DATA(TEMP_UNITS_ID, R_OPT, STRING), - OBJ_FIELD_DATA(TEMP_MIN_MEASURED_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(TEMP_MAX_MEASURED_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(TEMP_MIN_RANGE_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_DATA(TEMP_MAX_RANGE_VALUE_ID, R_OPT, FLOAT32), - OBJ_FIELD_EXECUTE_OPT(TEMP_RESET_MIN_MAX_MEASURED_VALUES_ID), + OBJ_FIELD_DATA(SENSOR_VALUE_RID, R, FLOAT32), + OBJ_FIELD_DATA(SENSOR_UNITS_RID, R_OPT, STRING), + OBJ_FIELD_DATA(MIN_MEASURED_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(MAX_MEASURED_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(MIN_RANGE_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_DATA(MAX_RANGE_VALUE_RID, R_OPT, FLOAT32), + OBJ_FIELD_EXECUTE_OPT(RESET_MIN_MAX_MEASURED_VALUES_RID), #if ADD_TIMESTAMPS OBJ_FIELD_DATA(TEMP_TIMESTAMP_ID, RW_OPT, TIME), #endif @@ -91,7 +82,7 @@ static void update_min_measured(uint16_t obj_inst_id, int index) min_measured_value[index].val1 = sensor_value[index].val1; min_measured_value[index].val2 = sensor_value[index].val2; NOTIFY_OBSERVER(IPSO_OBJECT_TEMP_SENSOR_ID, obj_inst_id, - TEMP_MIN_MEASURED_VALUE_ID); + MIN_MEASURED_VALUE_RID); } static void update_max_measured(uint16_t obj_inst_id, int index) @@ -99,7 +90,7 @@ static void update_max_measured(uint16_t obj_inst_id, int index) max_measured_value[index].val1 = sensor_value[index].val1; max_measured_value[index].val2 = sensor_value[index].val2; NOTIFY_OBSERVER(IPSO_OBJECT_TEMP_SENSOR_ID, obj_inst_id, - TEMP_MAX_MEASURED_VALUE_ID); + MAX_MEASURED_VALUE_RID); } static int reset_min_max_measured_values_cb(uint16_t obj_inst_id, @@ -205,25 +196,25 @@ static struct lwm2m_engine_obj_inst *temp_sensor_create(uint16_t obj_inst_id) init_res_instance(res_inst[index], ARRAY_SIZE(res_inst[index])); /* initialize instance resource data */ - INIT_OBJ_RES(TEMP_SENSOR_VALUE_ID, res[index], i, + INIT_OBJ_RES(SENSOR_VALUE_RID, res[index], i, res_inst[index], j, 1, false, true, &sensor_value[index], sizeof(*sensor_value), NULL, NULL, NULL, sensor_value_write_cb, NULL); - INIT_OBJ_RES_DATA(TEMP_UNITS_ID, res[index], i, res_inst[index], j, + INIT_OBJ_RES_DATA(SENSOR_UNITS_RID, res[index], i, res_inst[index], j, units[index], TEMP_STRING_SHORT); - INIT_OBJ_RES_DATA(TEMP_MIN_MEASURED_VALUE_ID, res[index], i, + INIT_OBJ_RES_DATA(MIN_MEASURED_VALUE_RID, res[index], i, res_inst[index], j, &min_measured_value[index], sizeof(*min_measured_value)); - INIT_OBJ_RES_DATA(TEMP_MAX_MEASURED_VALUE_ID, res[index], i, + INIT_OBJ_RES_DATA(MAX_MEASURED_VALUE_RID, res[index], i, res_inst[index], j, &max_measured_value[index], sizeof(*max_measured_value)); - INIT_OBJ_RES_DATA(TEMP_MIN_RANGE_VALUE_ID, res[index], i, + INIT_OBJ_RES_DATA(MIN_RANGE_VALUE_RID, res[index], i, res_inst[index], j, &min_range_value[index], sizeof(*min_range_value)); - INIT_OBJ_RES_DATA(TEMP_MAX_RANGE_VALUE_ID, res[index], i, + INIT_OBJ_RES_DATA(MAX_RANGE_VALUE_RID, res[index], i, res_inst[index], j, &max_range_value[index], sizeof(*max_range_value)); - INIT_OBJ_RES_EXECUTE(TEMP_RESET_MIN_MAX_MEASURED_VALUES_ID, + INIT_OBJ_RES_EXECUTE(RESET_MIN_MAX_MEASURED_VALUES_RID, res[index], i, reset_min_max_measured_values_cb); #if ADD_TIMESTAMPS INIT_OBJ_RES_OPTDATA(TEMP_TIMESTAMP_ID, res[index], i, diff --git a/subsys/net/lib/lwm2m/ipso_timer.c b/subsys/net/lib/lwm2m/ipso_timer.c index f66b6229fa9..a961b89053c 100644 --- a/subsys/net/lib/lwm2m/ipso_timer.c +++ b/subsys/net/lib/lwm2m/ipso_timer.c @@ -20,23 +20,11 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_object.h" #include "lwm2m_engine.h" +#include "lwm2m_resource_ids.h" #define TIMER_VERSION_MAJOR 1 #define TIMER_VERSION_MINOR 0 -/* Server resource IDs */ -#define TIMER_DELAY_DURATION_ID 5521 -#define TIMER_REMAINING_TIME_ID 5538 -#define TIMER_MINIMUM_OFF_TIME_ID 5525 -#define TIMER_TRIGGER_ID 5523 -#define TIMER_ON_OFF_ID 5850 -#define TIMER_DIGITAL_INPUT_COUNTER_ID 5501 -#define TIMER_CUMULATIVE_TIME_ID 5544 -#define TIMER_DIGITAL_STATE_ID 5543 -#define TIMER_COUNTER_ID 5534 -#define TIMER_MODE_ID 5526 -#define TIMER_APPLICATION_TYPE_ID 5750 - #define TIMER_MAX_ID 11 #define MAX_INSTANCE_COUNT CONFIG_LWM2M_IPSO_TIMER_INSTANCE_COUNT @@ -79,17 +67,17 @@ static struct ipso_timer_data timer_data[MAX_INSTANCE_COUNT]; static struct lwm2m_engine_obj timer; static struct lwm2m_engine_obj_field fields[] = { - OBJ_FIELD_DATA(TIMER_DELAY_DURATION_ID, RW, FLOAT64), - OBJ_FIELD_DATA(TIMER_REMAINING_TIME_ID, R_OPT, FLOAT64), - OBJ_FIELD_DATA(TIMER_MINIMUM_OFF_TIME_ID, RW_OPT, FLOAT64), - OBJ_FIELD_EXECUTE_OPT(TIMER_TRIGGER_ID), - OBJ_FIELD_DATA(TIMER_ON_OFF_ID, RW_OPT, BOOL), - OBJ_FIELD_DATA(TIMER_DIGITAL_INPUT_COUNTER_ID, RW_OPT, U32), /* TODO */ - OBJ_FIELD_DATA(TIMER_CUMULATIVE_TIME_ID, RW_OPT, FLOAT64), - OBJ_FIELD_DATA(TIMER_DIGITAL_STATE_ID, R_OPT, BOOL), - OBJ_FIELD_DATA(TIMER_COUNTER_ID, R_OPT, U32), - OBJ_FIELD_DATA(TIMER_MODE_ID, RW_OPT, U8), - OBJ_FIELD_DATA(TIMER_APPLICATION_TYPE_ID, RW_OPT, STRING), + OBJ_FIELD_DATA(DELAY_DURATION_RID, RW, FLOAT64), + OBJ_FIELD_DATA(REMAINING_TIME_RID, R_OPT, FLOAT64), + OBJ_FIELD_DATA(MINIMUM_OFF_TIME_RID, RW_OPT, FLOAT64), + OBJ_FIELD_EXECUTE_OPT(TRIGGER_RID), + OBJ_FIELD_DATA(ON_OFF_RID, RW_OPT, BOOL), + OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, RW_OPT, U32), /* TODO */ + OBJ_FIELD_DATA(CUMULATIVE_TIME_RID, RW_OPT, FLOAT64), + OBJ_FIELD_DATA(DIGITAL_STATE_RID, R_OPT, BOOL), + OBJ_FIELD_DATA(COUNTER_RID, R_OPT, U32), + OBJ_FIELD_DATA(TIMER_MODE_RID, RW_OPT, U8), + OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING), }; static struct lwm2m_engine_obj_inst inst[MAX_INSTANCE_COUNT]; @@ -152,7 +140,7 @@ static int start_timer(struct ipso_timer_data *timer) timer->trigger_counter += 1U; snprintk(path, MAX_RESOURCE_LEN, "%d/%u/%d", IPSO_OBJECT_TIMER_ID, - timer->obj_inst_id, TIMER_DIGITAL_STATE_ID); + timer->obj_inst_id, DIGITAL_STATE_RID); lwm2m_engine_set_bool(path, true); float2ms(&timer->delay_duration, &temp); @@ -172,7 +160,7 @@ static int stop_timer(struct ipso_timer_data *timer, bool cancel) timer->cumulative_time_ms += k_uptime_get() - timer->trigger_offset; snprintk(path, MAX_RESOURCE_LEN, "%d/%u/%d", IPSO_OBJECT_TIMER_ID, - timer->obj_inst_id, TIMER_DIGITAL_STATE_ID); + timer->obj_inst_id, DIGITAL_STATE_RID); lwm2m_engine_set_bool(path, false); if (cancel) { @@ -340,42 +328,37 @@ static struct lwm2m_engine_obj_inst *timer_create(uint16_t obj_inst_id) init_res_instance(res_inst[avail], ARRAY_SIZE(res_inst[avail])); /* initialize instance resource data */ - INIT_OBJ_RES_DATA(TIMER_DELAY_DURATION_ID, res[avail], i, + INIT_OBJ_RES_DATA(DELAY_DURATION_RID, res[avail], i, res_inst[avail], j, &timer_data[avail].delay_duration, sizeof(timer_data[avail].delay_duration)); - INIT_OBJ_RES(TIMER_REMAINING_TIME_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &timer_data[avail].remaining_time, + INIT_OBJ_RES(REMAINING_TIME_RID, res[avail], i, res_inst[avail], j, 1, + false, true, &timer_data[avail].remaining_time, sizeof(timer_data[avail].remaining_time), remaining_time_read_cb, NULL, NULL, NULL, NULL); - INIT_OBJ_RES_DATA(TIMER_MINIMUM_OFF_TIME_ID, res[avail], i, + INIT_OBJ_RES_DATA(MINIMUM_OFF_TIME_RID, res[avail], i, res_inst[avail], j, &timer_data[avail].min_off_time, sizeof(timer_data[avail].min_off_time)); - INIT_OBJ_RES_EXECUTE(TIMER_TRIGGER_ID, res[avail], i, - timer_trigger_cb); - INIT_OBJ_RES(TIMER_ON_OFF_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &timer_data[avail].enabled, + INIT_OBJ_RES_EXECUTE(TRIGGER_RID, res[avail], i, timer_trigger_cb); + INIT_OBJ_RES(ON_OFF_RID, res[avail], i, res_inst[avail], j, 1, false, + true, &timer_data[avail].enabled, sizeof(timer_data[avail].enabled), NULL, NULL, NULL, enabled_post_write_cb, NULL); - INIT_OBJ_RES(TIMER_CUMULATIVE_TIME_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &timer_data[avail].cumulative_time, + INIT_OBJ_RES(CUMULATIVE_TIME_RID, res[avail], i, res_inst[avail], j, 1, + false, true, &timer_data[avail].cumulative_time, sizeof(timer_data[avail].cumulative_time), cumulative_time_read_cb, NULL, NULL, cumulative_time_post_write_cb, NULL); - INIT_OBJ_RES_DATA(TIMER_DIGITAL_STATE_ID, res[avail], i, + INIT_OBJ_RES_DATA(DIGITAL_STATE_RID, res[avail], i, res_inst[avail], j, &timer_data[avail].active, sizeof(timer_data[avail].active)); - INIT_OBJ_RES(TIMER_COUNTER_ID, res[avail], i, - res_inst[avail], j, 1, false, true, - &timer_data[avail].trigger_counter, + INIT_OBJ_RES(COUNTER_RID, res[avail], i, res_inst[avail], j, 1, false, + true, &timer_data[avail].trigger_counter, sizeof(timer_data[avail].trigger_counter), NULL, NULL, NULL, trigger_counter_post_write_cb, NULL); - INIT_OBJ_RES_DATA(TIMER_MODE_ID, res[avail], i, res_inst[avail], j, + INIT_OBJ_RES_DATA(TIMER_MODE_RID, res[avail], i, res_inst[avail], j, &timer_data[avail].timer_mode, sizeof(timer_data[avail].timer_mode)); - INIT_OBJ_RES_OPTDATA(TIMER_APPLICATION_TYPE_ID, res[avail], i, + INIT_OBJ_RES_OPTDATA(APPLICATION_TYPE_RID, res[avail], i, res_inst[avail], j); inst[avail].resources = res[avail]; diff --git a/subsys/net/lib/lwm2m/lwm2m_resource_ids.h b/subsys/net/lib/lwm2m/lwm2m_resource_ids.h index 1497f1b7466..f7f0e24ade8 100644 --- a/subsys/net/lib/lwm2m/lwm2m_resource_ids.h +++ b/subsys/net/lib/lwm2m/lwm2m_resource_ids.h @@ -10,7 +10,18 @@ #define __LWM2M_RESOURCE_IDS__ /* clang-format off */ +#define DIGITAL_INPUT_STATE_RID 5500 +#define DIGITAL_INPUT_COUNTER_RID 5501 #define TIMESTAMP_RID 5518 +#define DELAY_DURATION_RID 5521 +#define TRIGGER_RID 5523 +#define MINIMUM_OFF_TIME_RID 5525 +#define TIMER_MODE_RID 5526 +#define COUNTER_RID 5534 +#define REMAINING_TIME_RID 5538 +#define DIGITAL_STATE_RID 5543 +#define CUMULATIVE_TIME_RID 5544 +#define LEVEL_RID 5548 #define MIN_MEASURED_VALUE_RID 5601 #define MAX_MEASURED_VALUE_RID 5602 #define MIN_RANGE_VALUE_RID 5603 @@ -18,8 +29,21 @@ #define RESET_MIN_MAX_MEASURED_VALUES_RID 5605 #define SENSOR_VALUE_RID 5700 #define SENSOR_UNITS_RID 5701 +#define X_VALUE_RID 5702 +#define Y_VALUE_RID 5703 +#define Z_VALUE_RID 5704 +#define COLOUR_RID 5706 #define APPLICATION_TYPE_RID 5750 #define SENSOR_TYPE_RID 5751 +#define CUMULATIVE_ACTIVE_POWER_RID 5805 +#define POWER_FACTOR_RID 5820 +#define ON_OFF_RID 5850 +#define DIMMER_RID 5851 +#define ON_TIME_RID 5852 +#define OFF_TIME_RID 5854 +#define MEASUREMENT_QUALITY_INDICATOR_RID 6042 +#define MEASUREMENT_QUALITY_LEVEL_RID 6049 +#define FRACTIONAL_TIMESTAMP_RID 6050 /* clang-format on */ #endif /* __LWM2M_RESOURCE_IDS__ */