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");
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
so the engine does not constantly wake up the CPU. This can be enabled by
:kconfig:option:`CONFIG_LWM2M_TICKLESS`.
* Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_DEREGISTER` event.
* Wi-Fi
* 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_NETWORK_ERROR,
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:
LOG_DBG("Registration update");
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) {
event = LWM2M_RD_CLIENT_EVENT_REG_UPDATE;
} else if (sm_state == ENGINE_DEREGISTER) {
event = LWM2M_RD_CLIENT_EVENT_DEREGISTER;
}
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:
LOG_DBG("Registration update");
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:
LOG_INF("*** LWM2M_RD_CLIENT_EVENT_REG_UPDATE");
break;
case LWM2M_RD_CLIENT_EVENT_DEREGISTER:
LOG_INF("*** LWM2M_RD_CLIENT_EVENT_DEREGISTER");
break;
}
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;
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(!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);
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));
}
@ -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_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);
}