49#define LOG_MODULE "lwm2m-qmode-object"
50#define LOG_LEVEL LOG_LEVEL_LWM2M
52#if LWM2M_QUEUE_MODE_ENABLED && LWM2M_QUEUE_MODE_OBJECT_ENABLED
54#define LWM2M_QUEUE_MODE_OBJECT_ID 30000
55#define LWM2M_AWAKE_TIME_ID 30000
56#define LWM2M_SLEEP_TIME_ID 30001
58#if LWM2M_QUEUE_MODE_INCLUDE_DYNAMIC_ADAPTATION
59#define LWM2M_DYNAMIC_ADAPTATION_FLAG_ID 30002
60#define UPDATE_WITH_MEAN 0
63static const lwm2m_resource_id_t resources[] =
64{ RW(LWM2M_AWAKE_TIME_ID),
65 RW(LWM2M_SLEEP_TIME_ID),
66#if LWM2M_QUEUE_MODE_INCLUDE_DYNAMIC_ADAPTATION
67 RW(LWM2M_DYNAMIC_ADAPTATION_FLAG_ID),
73lwm2m_callback(lwm2m_object_instance_t *
object, lwm2m_context_t *ctx)
75 if(ctx->operation == LWM2M_OP_READ) {
76 switch(ctx->resource_id) {
77 case LWM2M_AWAKE_TIME_ID:
78 lwm2m_object_write_int(ctx, (int32_t)lwm2m_queue_mode_get_awake_time());
79 return LWM2M_STATUS_OK;
80 case LWM2M_SLEEP_TIME_ID:
81 lwm2m_object_write_int(ctx, (int32_t)lwm2m_queue_mode_get_sleep_time());
82 return LWM2M_STATUS_OK;
83#if LWM2M_QUEUE_MODE_INCLUDE_DYNAMIC_ADAPTATION
84 case LWM2M_DYNAMIC_ADAPTATION_FLAG_ID:
85 lwm2m_object_write_int(ctx, (int32_t)lwm2m_queue_mode_get_dynamic_adaptation_flag());
86 return LWM2M_STATUS_OK;
89 }
else if(ctx->operation == LWM2M_OP_WRITE) {
90 switch(ctx->resource_id) {
94 case LWM2M_AWAKE_TIME_ID:
96 len = lwm2m_object_read_int(ctx, ctx->inbuf->buffer, ctx->inbuf->size,
98 LOG_DBG(
"Client Awake Time write request value: %d\n", (
int)value_read);
100 LOG_WARN(
"FAIL: could not write awake time\n");
101 return LWM2M_STATUS_WRITE_ERROR;
103 lwm2m_queue_mode_set_awake_time(value_read);
104 return LWM2M_STATUS_OK;
107 case LWM2M_SLEEP_TIME_ID:
108 len = lwm2m_object_read_int(ctx, ctx->inbuf->buffer, ctx->inbuf->size,
110 LOG_DBG(
"Client Sleep Time write request value: %d\n", (
int)value_read);
112 LOG_WARN(
"FAIL: could not write sleep time\n");
113 return LWM2M_STATUS_WRITE_ERROR;
115 lwm2m_queue_mode_set_sleep_time(value_read);
116 return LWM2M_STATUS_OK;
118#if LWM2M_QUEUE_MODE_INCLUDE_DYNAMIC_ADAPTATION
119 case LWM2M_DYNAMIC_ADAPTATION_FLAG_ID:
120 len = lwm2m_object_read_int(ctx, ctx->inbuf->buffer, ctx->inbuf->size,
122 LOG_DBG(
"Dynamic Adaptation Flag request value: %d\n", (
int)value_read);
124 LOG_WARN(
"FAIL: could not write dynamic flag\n");
125 return LWM2M_STATUS_WRITE_ERROR;
127 lwm2m_queue_mode_set_dynamic_adaptation_flag(value_read);
128 return LWM2M_STATUS_OK;
134 return LWM2M_STATUS_OPERATION_NOT_ALLOWED;
137static lwm2m_object_instance_t queue_object = {
138 .object_id = LWM2M_QUEUE_MODE_OBJECT_ID,
140 .resource_ids = resources,
141 .resource_count =
sizeof(resources) /
sizeof(lwm2m_resource_id_t),
142 .resource_dim_callback = NULL,
143 .callback = lwm2m_callback,
147lwm2m_queue_mode_object_init(
void)
149 lwm2m_engine_add_object(&queue_object);
Header file for the LWM2M object API.
Header file for the Contiki OMA LWM2M Queue Mode implementation to manage the parameters.