net: lwm2m: Remove LWM2M_RES_TYPE_U64 type
Since it's not possible to encode full range of 64-bit unsigned integer, remove this type from the LwM2M implementation, and replace its uses with 64-bit signed integer. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
This commit is contained in:
parent
b474e0a8c3
commit
083f3065b4
4 changed files with 33 additions and 48 deletions
|
@ -43,9 +43,9 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
|
||||||
/* resource state */
|
/* resource state */
|
||||||
struct ipso_switch_data {
|
struct ipso_switch_data {
|
||||||
uint64_t trigger_offset;
|
uint64_t trigger_offset;
|
||||||
uint64_t on_time_sec;
|
int64_t on_time_sec;
|
||||||
uint64_t off_time_sec;
|
int64_t off_time_sec;
|
||||||
uint64_t counter;
|
int64_t counter;
|
||||||
uint16_t obj_inst_id;
|
uint16_t obj_inst_id;
|
||||||
bool last_state;
|
bool last_state;
|
||||||
bool state;
|
bool state;
|
||||||
|
@ -56,9 +56,9 @@ static struct ipso_switch_data switch_data[MAX_INSTANCE_COUNT];
|
||||||
static struct lwm2m_engine_obj onoff_switch;
|
static struct lwm2m_engine_obj onoff_switch;
|
||||||
static struct lwm2m_engine_obj_field fields[] = {
|
static struct lwm2m_engine_obj_field fields[] = {
|
||||||
OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL),
|
OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL),
|
||||||
OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, R_OPT, U64),
|
OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, R_OPT, S64),
|
||||||
OBJ_FIELD_DATA(ON_TIME_RID, RW_OPT, U64),
|
OBJ_FIELD_DATA(ON_TIME_RID, RW_OPT, S64),
|
||||||
OBJ_FIELD_DATA(OFF_TIME_RID, RW_OPT, U64),
|
OBJ_FIELD_DATA(OFF_TIME_RID, RW_OPT, S64),
|
||||||
OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING),
|
OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING),
|
||||||
#if defined(CONFIG_LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_1)
|
#if defined(CONFIG_LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_1)
|
||||||
OBJ_FIELD_DATA(TIMESTAMP_RID, R_OPT, TIME),
|
OBJ_FIELD_DATA(TIMESTAMP_RID, R_OPT, TIME),
|
||||||
|
@ -101,14 +101,17 @@ static int state_post_write_cb(uint16_t obj_inst_id,
|
||||||
|
|
||||||
if (switch_data[i].state) {
|
if (switch_data[i].state) {
|
||||||
/* reset off time */
|
/* reset off time */
|
||||||
switch_data[i].off_time_sec = 0U;
|
switch_data[i].off_time_sec = 0;
|
||||||
if (!switch_data[i].last_state) {
|
if (!switch_data[i].last_state) {
|
||||||
/* off to on transition */
|
/* off to on transition */
|
||||||
switch_data[i].counter++;
|
switch_data[i].counter++;
|
||||||
|
if (switch_data[i].counter < 0) {
|
||||||
|
switch_data[i].counter = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* reset on time */
|
/* reset on time */
|
||||||
switch_data[i].on_time_sec = 0U;
|
switch_data[i].on_time_sec = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_data[i].last_state = switch_data[i].state;
|
switch_data[i].last_state = switch_data[i].state;
|
||||||
|
@ -128,7 +131,7 @@ static void *on_time_read_cb(uint16_t obj_inst_id,
|
||||||
|
|
||||||
if (switch_data[i].state) {
|
if (switch_data[i].state) {
|
||||||
switch_data[i].on_time_sec =
|
switch_data[i].on_time_sec =
|
||||||
(k_uptime_get() - switch_data[i].trigger_offset) / 1000;
|
(int64_t)((k_uptime_get() - switch_data[i].trigger_offset) / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
*data_len = sizeof(switch_data[i].on_time_sec);
|
*data_len = sizeof(switch_data[i].on_time_sec);
|
||||||
|
@ -147,7 +150,7 @@ static void *off_time_read_cb(uint16_t obj_inst_id,
|
||||||
|
|
||||||
if (!switch_data[i].state) {
|
if (!switch_data[i].state) {
|
||||||
switch_data[i].off_time_sec =
|
switch_data[i].off_time_sec =
|
||||||
(k_uptime_get() - switch_data[i].trigger_offset) / 1000;
|
(int64_t)((k_uptime_get() - switch_data[i].trigger_offset) / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
*data_len = sizeof(switch_data[i].off_time_sec);
|
*data_len = sizeof(switch_data[i].off_time_sec);
|
||||||
|
|
|
@ -42,7 +42,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
|
||||||
|
|
||||||
/* resource state */
|
/* resource state */
|
||||||
struct ipso_button_data {
|
struct ipso_button_data {
|
||||||
uint64_t counter;
|
int64_t counter;
|
||||||
uint16_t obj_inst_id;
|
uint16_t obj_inst_id;
|
||||||
bool last_state;
|
bool last_state;
|
||||||
bool state;
|
bool state;
|
||||||
|
@ -53,7 +53,7 @@ static struct ipso_button_data button_data[MAX_INSTANCE_COUNT];
|
||||||
static struct lwm2m_engine_obj onoff_switch;
|
static struct lwm2m_engine_obj onoff_switch;
|
||||||
static struct lwm2m_engine_obj_field fields[] = {
|
static struct lwm2m_engine_obj_field fields[] = {
|
||||||
OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL),
|
OBJ_FIELD_DATA(DIGITAL_INPUT_STATE_RID, R, BOOL),
|
||||||
OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, R_OPT, U64),
|
OBJ_FIELD_DATA(DIGITAL_INPUT_COUNTER_RID, R_OPT, S64),
|
||||||
OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING),
|
OBJ_FIELD_DATA(APPLICATION_TYPE_RID, RW_OPT, STRING),
|
||||||
#if defined(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)
|
#if defined(CONFIG_LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1)
|
||||||
OBJ_FIELD_DATA(TIMESTAMP_RID, R_OPT, TIME),
|
OBJ_FIELD_DATA(TIMESTAMP_RID, R_OPT, TIME),
|
||||||
|
@ -97,6 +97,9 @@ static int state_post_write_cb(uint16_t obj_inst_id,
|
||||||
if (button_data[i].state && !button_data[i].last_state) {
|
if (button_data[i].state && !button_data[i].last_state) {
|
||||||
/* off to on transition */
|
/* off to on transition */
|
||||||
button_data[i].counter++;
|
button_data[i].counter++;
|
||||||
|
if (button_data[i].counter < 0) {
|
||||||
|
button_data[i].counter = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button_data[i].last_state = button_data[i].state;
|
button_data[i].last_state = button_data[i].state;
|
||||||
|
|
|
@ -1605,10 +1605,6 @@ static int lwm2m_engine_set(char *pathstr, void *value, uint16_t len)
|
||||||
((uint8_t *)data_ptr)[len] = '\0';
|
((uint8_t *)data_ptr)[len] = '\0';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U64:
|
|
||||||
*((uint64_t *)data_ptr) = *(uint64_t *)value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U32:
|
case LWM2M_RES_TYPE_U32:
|
||||||
case LWM2M_RES_TYPE_TIME:
|
case LWM2M_RES_TYPE_TIME:
|
||||||
*((uint32_t *)data_ptr) = *(uint32_t *)value;
|
*((uint32_t *)data_ptr) = *(uint32_t *)value;
|
||||||
|
@ -1855,10 +1851,6 @@ static int lwm2m_engine_get(char *pathstr, void *buf, uint16_t buflen)
|
||||||
strncpy((uint8_t *)buf, (uint8_t *)data_ptr, buflen);
|
strncpy((uint8_t *)buf, (uint8_t *)data_ptr, buflen);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U64:
|
|
||||||
*(uint64_t *)buf = *(uint64_t *)data_ptr;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U32:
|
case LWM2M_RES_TYPE_U32:
|
||||||
case LWM2M_RES_TYPE_TIME:
|
case LWM2M_RES_TYPE_TIME:
|
||||||
*(uint32_t *)buf = *(uint32_t *)data_ptr;
|
*(uint32_t *)buf = *(uint32_t *)data_ptr;
|
||||||
|
@ -2358,11 +2350,6 @@ static int lwm2m_read_handler(struct lwm2m_engine_obj_inst *obj_inst,
|
||||||
strlen((uint8_t *)data_ptr));
|
strlen((uint8_t *)data_ptr));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U64:
|
|
||||||
engine_put_s64(&msg->out, &msg->path,
|
|
||||||
(int64_t)*(uint64_t *)data_ptr);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U32:
|
case LWM2M_RES_TYPE_U32:
|
||||||
case LWM2M_RES_TYPE_TIME:
|
case LWM2M_RES_TYPE_TIME:
|
||||||
engine_put_s64(&msg->out, &msg->path,
|
engine_put_s64(&msg->out, &msg->path,
|
||||||
|
@ -2632,12 +2619,6 @@ int lwm2m_write_handler(struct lwm2m_engine_obj_inst *obj_inst,
|
||||||
len = strlen((char *)write_buf);
|
len = strlen((char *)write_buf);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U64:
|
|
||||||
engine_get_s64(&msg->in, &temp64);
|
|
||||||
*(uint64_t *)write_buf = temp64;
|
|
||||||
len = 8;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LWM2M_RES_TYPE_U32:
|
case LWM2M_RES_TYPE_U32:
|
||||||
case LWM2M_RES_TYPE_TIME:
|
case LWM2M_RES_TYPE_TIME:
|
||||||
engine_get_s64(&msg->in, &temp64);
|
engine_get_s64(&msg->in, &temp64);
|
||||||
|
|
|
@ -109,23 +109,21 @@
|
||||||
#define LWM2M_RES_TYPE_NONE 0
|
#define LWM2M_RES_TYPE_NONE 0
|
||||||
#define LWM2M_RES_TYPE_OPAQUE 1
|
#define LWM2M_RES_TYPE_OPAQUE 1
|
||||||
#define LWM2M_RES_TYPE_STRING 2
|
#define LWM2M_RES_TYPE_STRING 2
|
||||||
#define LWM2M_RES_TYPE_UINT64 3
|
#define LWM2M_RES_TYPE_UINT 3
|
||||||
#define LWM2M_RES_TYPE_U64 3
|
#define LWM2M_RES_TYPE_U32 3
|
||||||
#define LWM2M_RES_TYPE_UINT 4
|
#define LWM2M_RES_TYPE_U16 4
|
||||||
#define LWM2M_RES_TYPE_U32 4
|
#define LWM2M_RES_TYPE_U8 5
|
||||||
#define LWM2M_RES_TYPE_U16 5
|
#define LWM2M_RES_TYPE_INT64 6
|
||||||
#define LWM2M_RES_TYPE_U8 6
|
#define LWM2M_RES_TYPE_S64 6
|
||||||
#define LWM2M_RES_TYPE_INT64 7
|
#define LWM2M_RES_TYPE_INT 7
|
||||||
#define LWM2M_RES_TYPE_S64 7
|
#define LWM2M_RES_TYPE_S32 7
|
||||||
#define LWM2M_RES_TYPE_INT 8
|
#define LWM2M_RES_TYPE_S16 8
|
||||||
#define LWM2M_RES_TYPE_S32 8
|
#define LWM2M_RES_TYPE_S8 9
|
||||||
#define LWM2M_RES_TYPE_S16 9
|
#define LWM2M_RES_TYPE_BOOL 10
|
||||||
#define LWM2M_RES_TYPE_S8 10
|
#define LWM2M_RES_TYPE_TIME 11
|
||||||
#define LWM2M_RES_TYPE_BOOL 11
|
#define LWM2M_RES_TYPE_FLOAT32 12
|
||||||
#define LWM2M_RES_TYPE_TIME 12
|
#define LWM2M_RES_TYPE_FLOAT64 13
|
||||||
#define LWM2M_RES_TYPE_FLOAT32 13
|
#define LWM2M_RES_TYPE_OBJLNK 14
|
||||||
#define LWM2M_RES_TYPE_FLOAT64 14
|
|
||||||
#define LWM2M_RES_TYPE_OBJLNK 15
|
|
||||||
|
|
||||||
/* remember that we have already output a value - can be between two block's */
|
/* remember that we have already output a value - can be between two block's */
|
||||||
#define WRITER_OUTPUT_VALUE 1
|
#define WRITER_OUTPUT_VALUE 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue