net: lwm2m: Support for "Mute Server" resource
Added support for server Mute send operation. Signed-off-by: Juha Heiskanen <juha.heiskanen@nordicsemi.no>
This commit is contained in:
parent
d75b986151
commit
ba2354a277
3 changed files with 37 additions and 1 deletions
|
@ -6155,6 +6155,7 @@ static int do_send_op(struct lwm2m_message *msg, uint16_t content_format,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1)
|
||||||
static int do_send_reply_cb(const struct coap_packet *response,
|
static int do_send_reply_cb(const struct coap_packet *response,
|
||||||
struct coap_reply *reply,
|
struct coap_reply *reply,
|
||||||
const struct sockaddr *from)
|
const struct sockaddr *from)
|
||||||
|
@ -6182,10 +6183,12 @@ static void do_send_timeout_cb(struct lwm2m_message *msg)
|
||||||
LOG_WRN("Send Timeout");
|
LOG_WRN("Send Timeout");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t path_list_size,
|
int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t path_list_size,
|
||||||
bool confirmation_request)
|
bool confirmation_request)
|
||||||
{
|
{
|
||||||
|
#if defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1)
|
||||||
struct lwm2m_message *msg;
|
struct lwm2m_message *msg;
|
||||||
int ret;
|
int ret;
|
||||||
uint16_t content_format;
|
uint16_t content_format;
|
||||||
|
@ -6196,6 +6199,11 @@ int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t pa
|
||||||
sys_slist_t lwm2m_path_list;
|
sys_slist_t lwm2m_path_list;
|
||||||
sys_slist_t lwm2m_path_free_list;
|
sys_slist_t lwm2m_path_free_list;
|
||||||
|
|
||||||
|
if (lwm2m_server_get_mute_send(ctx->srv_obj_inst)) {
|
||||||
|
LOG_WRN("Send operation is muted by server");
|
||||||
|
return -EPERM;
|
||||||
|
}
|
||||||
|
|
||||||
/* Init list */
|
/* Init list */
|
||||||
lwm2m_engine_path_list_init(&lwm2m_path_list, &lwm2m_path_free_list, lwm2m_path_list_buf,
|
lwm2m_engine_path_list_init(&lwm2m_path_list, &lwm2m_path_free_list, lwm2m_path_list_buf,
|
||||||
CONFIG_LWM2M_COMPOSITE_PATH_LIST_SIZE);
|
CONFIG_LWM2M_COMPOSITE_PATH_LIST_SIZE);
|
||||||
|
@ -6278,6 +6286,10 @@ int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t pa
|
||||||
cleanup:
|
cleanup:
|
||||||
lwm2m_reset_message(msg, true);
|
lwm2m_reset_message(msg, true);
|
||||||
return ret;
|
return ret;
|
||||||
|
#else
|
||||||
|
LOG_WRN("LwM2M send is only supported for CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1");
|
||||||
|
return -ENOTSUP;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
SYS_INIT(lwm2m_engine_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|
SYS_INIT(lwm2m_engine_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|
||||||
|
|
|
@ -166,6 +166,10 @@ int32_t lwm2m_server_get_pmin(uint16_t obj_inst_id);
|
||||||
int32_t lwm2m_server_get_pmax(uint16_t obj_inst_id);
|
int32_t lwm2m_server_get_pmax(uint16_t obj_inst_id);
|
||||||
int lwm2m_server_short_id_to_inst(uint16_t short_id);
|
int lwm2m_server_short_id_to_inst(uint16_t short_id);
|
||||||
|
|
||||||
|
#if defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1)
|
||||||
|
bool lwm2m_server_get_mute_send(uint16_t obj_inst_id);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT)
|
#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT)
|
||||||
void lwm2m_firmware_set_update_state_inst(uint16_t obj_inst_id, uint8_t state);
|
void lwm2m_firmware_set_update_state_inst(uint16_t obj_inst_id, uint8_t state);
|
||||||
void lwm2m_firmware_set_update_result_inst(uint16_t obj_inst_id, uint8_t result);
|
void lwm2m_firmware_set_update_result_inst(uint16_t obj_inst_id, uint8_t result);
|
||||||
|
|
|
@ -82,6 +82,9 @@ static uint8_t server_flag_disabled[MAX_INSTANCE_COUNT];
|
||||||
static uint32_t disabled_timeout[MAX_INSTANCE_COUNT];
|
static uint32_t disabled_timeout[MAX_INSTANCE_COUNT];
|
||||||
static uint8_t server_flag_store_notify[MAX_INSTANCE_COUNT];
|
static uint8_t server_flag_store_notify[MAX_INSTANCE_COUNT];
|
||||||
static char transport_binding[MAX_INSTANCE_COUNT][TRANSPORT_BINDING_LEN];
|
static char transport_binding[MAX_INSTANCE_COUNT][TRANSPORT_BINDING_LEN];
|
||||||
|
#if defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1)
|
||||||
|
static bool mute_send[MAX_INSTANCE_COUNT];
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct lwm2m_engine_obj server;
|
static struct lwm2m_engine_obj server;
|
||||||
static struct lwm2m_engine_obj_field fields[] = {
|
static struct lwm2m_engine_obj_field fields[] = {
|
||||||
|
@ -156,6 +159,18 @@ static int bootstrap_trigger_cb(uint16_t obj_inst_id,
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool lwm2m_server_get_mute_send(uint16_t obj_inst_id)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(inst); i++) {
|
||||||
|
if (inst[i].obj && inst[i].obj_inst_id == obj_inst_id) {
|
||||||
|
return mute_send[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif /* defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1) */
|
#endif /* defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1) */
|
||||||
|
|
||||||
|
|
||||||
|
@ -252,6 +267,10 @@ static struct lwm2m_engine_obj_inst *server_create(uint16_t obj_inst_id)
|
||||||
default_min_period[index] = CONFIG_LWM2M_SERVER_DEFAULT_PMIN;
|
default_min_period[index] = CONFIG_LWM2M_SERVER_DEFAULT_PMIN;
|
||||||
default_max_period[index] = CONFIG_LWM2M_SERVER_DEFAULT_PMAX;
|
default_max_period[index] = CONFIG_LWM2M_SERVER_DEFAULT_PMAX;
|
||||||
disabled_timeout[index] = 86400U;
|
disabled_timeout[index] = 86400U;
|
||||||
|
#if defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1)
|
||||||
|
mute_send[index] = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
lwm2m_engine_get_binding(transport_binding[index]);
|
lwm2m_engine_get_binding(transport_binding[index]);
|
||||||
|
|
||||||
(void)memset(res[index], 0,
|
(void)memset(res[index], 0,
|
||||||
|
@ -312,7 +331,8 @@ static struct lwm2m_engine_obj_inst *server_create(uint16_t obj_inst_id)
|
||||||
res_inst[index], j);
|
res_inst[index], j);
|
||||||
INIT_OBJ_RES_OPTDATA(SERVER_SMS_TRIGGER_ID, res[index], i, res_inst[index], j);
|
INIT_OBJ_RES_OPTDATA(SERVER_SMS_TRIGGER_ID, res[index], i, res_inst[index], j);
|
||||||
INIT_OBJ_RES_OPTDATA(SERVER_PREFERRED_TRANSPORT_ID, res[index], i, res_inst[index], j);
|
INIT_OBJ_RES_OPTDATA(SERVER_PREFERRED_TRANSPORT_ID, res[index], i, res_inst[index], j);
|
||||||
INIT_OBJ_RES_OPTDATA(SERVER_MUTE_SEND_ID, res[index], i, res_inst[index], j);
|
INIT_OBJ_RES_DATA(SERVER_MUTE_SEND_ID, res[index], i, res_inst[index], j, &mute_send[index],
|
||||||
|
sizeof(bool));
|
||||||
#endif /* defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1) */
|
#endif /* defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1) */
|
||||||
|
|
||||||
inst[index].resources = res[index];
|
inst[index].resources = res[index];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue