net: lwm2m: RD client Deregister event indicate

Added a new event for LWM2M_RD_CLIENT_EVENT_DEREGISTER for
indicate LwM2M client dereistartion.

Updated unit test and sample for new event type

Signed-off-by: Juha Heiskanen <juha.heiskanen@nordicsemi.no>
This commit is contained in:
Juha Heiskanen 2023-09-28 17:19:45 +03:00 committed by Johan Hedberg
commit 647fb4dc8f
7 changed files with 24 additions and 0 deletions

View file

@ -318,6 +318,14 @@ events, setup a callback function:
LOG_DBG("Disconnected"); LOG_DBG("Disconnected");
break; break;
case LWM2M_RD_CLIENT_EVENT_REG_UPDATE:
LOG_DBG("Registration update");
break;
case LWM2M_RD_CLIENT_EVENT_DEREGISTER:
LOG_DBG("Deregistration client");
break;
} }
} }

View file

@ -305,6 +305,7 @@ Networking
* Added support for tickless mode. This removes the 500 ms timeout from the socket loop * Added support for tickless mode. This removes the 500 ms timeout from the socket loop
so the engine does not constantly wake up the CPU. This can be enabled by so the engine does not constantly wake up the CPU. This can be enabled by
:kconfig:option:`CONFIG_LWM2M_TICKLESS`. :kconfig:option:`CONFIG_LWM2M_TICKLESS`.
* Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_DEREGISTER` event.
* Wi-Fi * Wi-Fi
* Added Passive scan support. * Added Passive scan support.

View file

@ -2073,6 +2073,7 @@ enum lwm2m_rd_client_event {
LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED, LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED,
LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR, LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR,
LWM2M_RD_CLIENT_EVENT_REG_UPDATE, LWM2M_RD_CLIENT_EVENT_REG_UPDATE,
LWM2M_RD_CLIENT_EVENT_DEREGISTER,
}; };
/** /**

View file

@ -231,6 +231,9 @@ static void rd_client_event(struct lwm2m_ctx *client,
case LWM2M_RD_CLIENT_EVENT_REG_UPDATE: case LWM2M_RD_CLIENT_EVENT_REG_UPDATE:
LOG_DBG("Registration update"); LOG_DBG("Registration update");
break; break;
case LWM2M_RD_CLIENT_EVENT_DEREGISTER:
LOG_DBG("Client De-register");
break;
} }
} }

View file

@ -215,6 +215,8 @@ static void set_sm_state_delayed(uint8_t sm_state, int64_t delay_ms)
} }
} else if (sm_state == ENGINE_UPDATE_REGISTRATION) { } else if (sm_state == ENGINE_UPDATE_REGISTRATION) {
event = LWM2M_RD_CLIENT_EVENT_REG_UPDATE; event = LWM2M_RD_CLIENT_EVENT_REG_UPDATE;
} else if (sm_state == ENGINE_DEREGISTER) {
event = LWM2M_RD_CLIENT_EVENT_DEREGISTER;
} }
if (sm_is_suspended()) { if (sm_is_suspended()) {

View file

@ -117,6 +117,9 @@ static void rd_client_event(struct lwm2m_ctx *client,
case LWM2M_RD_CLIENT_EVENT_REG_UPDATE: case LWM2M_RD_CLIENT_EVENT_REG_UPDATE:
LOG_DBG("Registration update"); LOG_DBG("Registration update");
break; break;
case LWM2M_RD_CLIENT_EVENT_DEREGISTER:
LOG_DBG("Deregistration client");
break;
} }
} }

View file

@ -106,6 +106,9 @@ static void lwm2m_event_cb(struct lwm2m_ctx *client, enum lwm2m_rd_client_event
case LWM2M_RD_CLIENT_EVENT_REG_UPDATE: case LWM2M_RD_CLIENT_EVENT_REG_UPDATE:
LOG_INF("*** LWM2M_RD_CLIENT_EVENT_REG_UPDATE"); LOG_INF("*** LWM2M_RD_CLIENT_EVENT_REG_UPDATE");
break; break;
case LWM2M_RD_CLIENT_EVENT_DEREGISTER:
LOG_INF("*** LWM2M_RD_CLIENT_EVENT_DEREGISTER");
break;
} }
show_lwm2m_event(client_event); show_lwm2m_event(client_event);
@ -211,6 +214,7 @@ ZTEST(lwm2m_rd_client, test_start_registration_ok)
coap_header_get_code_fake.custom_fake = coap_header_get_code_fake_deleted; coap_header_get_code_fake.custom_fake = coap_header_get_code_fake_deleted;
zassert_true(lwm2m_rd_client_stop(&ctx, lwm2m_event_cb, true) == 0, NULL); zassert_true(lwm2m_rd_client_stop(&ctx, lwm2m_event_cb, true) == 0, NULL);
zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DEREGISTER), NULL);
zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DISCONNECT), NULL); zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DISCONNECT), NULL);
zassert_true(!lwm2m_rd_client_is_registred(&ctx), NULL); zassert_true(!lwm2m_rd_client_is_registred(&ctx), NULL);
} }
@ -425,6 +429,7 @@ ZTEST(lwm2m_rd_client, test_deregistration_timeout)
test_prepare_pending_message_cb(&message_reply_timeout_cb_default); test_prepare_pending_message_cb(&message_reply_timeout_cb_default);
zassert_true(lwm2m_rd_client_stop(&ctx, lwm2m_event_cb, true) == 0, NULL); zassert_true(lwm2m_rd_client_stop(&ctx, lwm2m_event_cb, true) == 0, NULL);
zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DEREGISTER), NULL);
zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE)); zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE));
} }
@ -529,6 +534,7 @@ ZTEST(lwm2m_rd_client, test_suspend_stop_resume)
zassert_equal(lwm2m_rd_client_stop(&ctx, lwm2m_event_cb, false), 0); zassert_equal(lwm2m_rd_client_stop(&ctx, lwm2m_event_cb, false), 0);
zassert_true(lwm2m_rd_client_resume() == 0, NULL); zassert_true(lwm2m_rd_client_resume() == 0, NULL);
zassert_false(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DEREGISTER), NULL);
zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DISCONNECT), NULL); zassert_true(expect_lwm2m_rd_client_event(LWM2M_RD_CLIENT_EVENT_DISCONNECT), NULL);
} }