Lines Matching refs:client

138 } client;  variable
150 if (client.rd_message.ctx) { in rd_get_message()
152 lwm2m_reset_message(&client.rd_message, true); in rd_get_message()
155 client.rd_message.ctx = client.ctx; in rd_get_message()
156 return &client.rd_message; in rd_get_message()
168 if (!client.ctx || !client.rd_message.ctx) { in lwm2m_get_ongoing_rd_msg()
171 return &client.rd_message; in lwm2m_get_ongoing_rd_msg()
176 switch (client.socket_state) { in ongoing_traffic()
187 if (ctx && client.ctx == ctx) { in lwm2m_rd_client_hint_socket_state()
188 client.socket_state = state; in lwm2m_rd_client_hint_socket_state()
194 client.last_tx = k_uptime_get(); in engine_update_tx_time()
199 client.next_event = timestamp; in next_event_at()
205 k_mutex_lock(&client.mutex, K_FOREVER); in set_sm_state_delayed()
212 } else if (client.engine_state == ENGINE_BOOTSTRAP_TRANS_DONE && in set_sm_state_delayed()
217 if (client.engine_state == ENGINE_UPDATE_SENT && in set_sm_state_delayed()
220 lwm2m_push_queued_buffers(client.ctx); in set_sm_state_delayed()
223 lwm2m_push_queued_buffers(client.ctx); in set_sm_state_delayed()
227 } else if (sm_state == ENGINE_DEREGISTERED && !client.server_disabled) { in set_sm_state_delayed()
232 if (client.server_disabled) { in set_sm_state_delayed()
243 client.engine_state = sm_state; in set_sm_state_delayed()
246 if (event > LWM2M_RD_CLIENT_EVENT_NONE && client.ctx->event_cb) { in set_sm_state_delayed()
247 client.ctx->event_cb(client.ctx, event); in set_sm_state_delayed()
254 lwm2m_socket_suspend(client.ctx); in set_sm_state_delayed()
256 lwm2m_close_socket(client.ctx); in set_sm_state_delayed()
259 client.last_state_change = k_uptime_get(); in set_sm_state_delayed()
261 k_mutex_unlock(&client.mutex); in set_sm_state_delayed()
272 k_mutex_lock(&client.mutex, K_FOREVER); in sm_is_bootstrap()
273 bool is_bootstrap = (client.engine_state >= ENGINE_DO_BOOTSTRAP_REG && in sm_is_bootstrap()
274 client.engine_state <= ENGINE_BOOTSTRAP_TRANS_DONE); in sm_is_bootstrap()
275 k_mutex_unlock(&client.mutex); in sm_is_bootstrap()
284 k_mutex_lock(&client.mutex, K_FOREVER); in sm_is_registered()
285 bool registered = (client.engine_state >= ENGINE_REGISTRATION_DONE && in sm_is_registered()
286 client.engine_state <= ENGINE_DEREGISTER_SENT); in sm_is_registered()
288 k_mutex_unlock(&client.mutex); in sm_is_registered()
294 k_mutex_lock(&client.mutex, K_FOREVER); in sm_is_suspended()
295 bool suspended = (client.engine_state == ENGINE_SUSPENDED); in sm_is_suspended()
297 k_mutex_unlock(&client.mutex); in sm_is_suspended()
304 k_mutex_lock(&client.mutex, K_FOREVER); in get_sm_state()
305 uint8_t state = client.engine_state; in get_sm_state()
307 k_mutex_unlock(&client.mutex); in get_sm_state()
314 k_mutex_lock(&client.mutex, K_FOREVER); in sm_handle_timeout_state()
317 switch (client.engine_state) { in sm_handle_timeout_state()
347 if (event > LWM2M_RD_CLIENT_EVENT_NONE && client.ctx->event_cb) { in sm_handle_timeout_state()
348 client.ctx->event_cb(client.ctx, event); in sm_handle_timeout_state()
350 k_mutex_unlock(&client.mutex); in sm_handle_timeout_state()
356 k_mutex_lock(&client.mutex, K_FOREVER); in sm_handle_failure_state()
360 if (client.engine_state == ENGINE_BOOTSTRAP_REG_SENT) { in sm_handle_failure_state()
364 if (client.engine_state == ENGINE_REGISTRATION_SENT) { in sm_handle_failure_state()
366 } else if (client.engine_state == ENGINE_UPDATE_SENT) { in sm_handle_failure_state()
368 k_mutex_unlock(&client.mutex); in sm_handle_failure_state()
370 } else if (client.engine_state == ENGINE_DEREGISTER_SENT) { in sm_handle_failure_state()
374 lwm2m_engine_stop(client.ctx); in sm_handle_failure_state()
377 if (event > LWM2M_RD_CLIENT_EVENT_NONE && client.ctx->event_cb) { in sm_handle_failure_state()
378 client.ctx->event_cb(client.ctx, event); in sm_handle_failure_state()
380 k_mutex_unlock(&client.mutex); in sm_handle_failure_state()
387 lwm2m_socket_close(client.ctx); in socket_fault_cb()
390 client.ctx->sec_obj_inst = -1; in socket_fault_cb()
392 client.last_update = 0; in socket_fault_cb()
408 if (client.engine_state > ENGINE_IDLE && in socket_fault_cb()
409 client.engine_state < ENGINE_SERVER_DISABLED) { in socket_fault_cb()
411 } else if (client.engine_state != ENGINE_SUSPENDED && in socket_fault_cb()
412 !client.server_disabled) { in socket_fault_cb()
413 lwm2m_engine_stop(client.ctx); in socket_fault_cb()
421 k_mutex_lock(&client.mutex, K_FOREVER); in engine_trigger_update()
422 if (client.engine_state < ENGINE_REGISTRATION_SENT || in engine_trigger_update()
423 client.engine_state > ENGINE_UPDATE_SENT) { in engine_trigger_update()
424 k_mutex_unlock(&client.mutex); in engine_trigger_update()
428 client.trigger_update = true; in engine_trigger_update()
433 client.update_objects = true; in engine_trigger_update()
435 k_mutex_unlock(&client.mutex); in engine_trigger_update()
495 k_mutex_lock(&client.mutex, K_FOREVER); in engine_trigger_bootstrap()
497 if (client.use_bootstrap) { in engine_trigger_bootstrap()
500 k_mutex_unlock(&client.mutex); in engine_trigger_bootstrap()
506 client.use_bootstrap = true; in engine_trigger_bootstrap()
507 client.trigger_update = false; in engine_trigger_bootstrap()
509 k_mutex_unlock(&client.mutex); in engine_trigger_bootstrap()
540 if (options[1].len + 1 > sizeof(client.server_ep)) { in do_registration_reply_cb()
544 sizeof(client.server_ep)); in do_registration_reply_cb()
550 client.last_update = k_uptime_get(); in do_registration_reply_cb()
551 client.server_disabled = false; in do_registration_reply_cb()
552 client.retries = 0; in do_registration_reply_cb()
554 memcpy(client.server_ep, options[1].value, in do_registration_reply_cb()
556 client.server_ep[options[1].len] = '\0'; in do_registration_reply_cb()
559 client.server_ep); in do_registration_reply_cb()
568 lwm2m_server_disable(client.ctx->srv_obj_inst, DISABLE_TIMEOUT); in do_registration_reply_cb()
596 client.last_update = k_uptime_get(); in do_update_reply_cb()
597 client.server_disabled = false; in do_update_reply_cb()
598 client.retries = 0; in do_update_reply_cb()
617 if (client.ctx->sock_fd > -1) { in do_update_timeout_cb()
618 client.close_socket = true; in do_update_timeout_cb()
735 lwm2m_engine_stop(client.ctx); in sm_do_init()
736 client.trigger_update = false; in sm_do_init()
737 client.lifetime = 0U; in sm_do_init()
738 client.last_update = 0U; in sm_do_init()
739 client.close_socket = false; in sm_do_init()
742 if (client.use_bootstrap && IS_ENABLED(CONFIG_LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP)) { in sm_do_init()
781 client.ep_name); in sm_send_bootstrap_registration()
826 if (client.ctx->sock_fd > -1) { in sm_do_bootstrap_reg()
827 lwm2m_engine_stop(client.ctx); in sm_do_bootstrap_reg()
830 client.ctx->bootstrap_mode = true; in sm_do_bootstrap_reg()
831 ret = sm_next_bootstrap_inst(&client.ctx->sec_obj_inst); in sm_do_bootstrap_reg()
838 client.ep_name, client.ctx->sec_obj_inst); in sm_do_bootstrap_reg()
840 ret = lwm2m_engine_start(client.ctx); in sm_do_bootstrap_reg()
874 lwm2m_engine_stop(client.ctx); in sm_bootstrap_trans_done()
877 client.ctx->sec_obj_inst = -1; in sm_bootstrap_trans_done()
878 client.use_bootstrap = false; in sm_bootstrap_trans_done()
926 client.server_ep, strlen(client.server_ep)); in sm_send_registration()
952 "ep=%s", client.ep_name); in sm_send_registration()
962 if (sm_update_lifetime(client.ctx->srv_obj_inst, &client.lifetime) || in sm_send_registration()
965 "lt=%d", client.lifetime); in sm_send_registration()
1025 lwm2m_sprint_ip_addr(&client.ctx->remote_addr)); in sm_send_registration()
1037 k_mutex_lock(&client.mutex, K_FOREVER); in sm_handle_registration_update_failure()
1039 lwm2m_engine_context_close(client.ctx); in sm_handle_registration_update_failure()
1041 k_mutex_unlock(&client.mutex); in sm_handle_registration_update_failure()
1066 if (client.ctx->connection_suspended) { in sm_do_registration()
1067 if (lwm2m_engine_connection_resume(client.ctx)) { in sm_do_registration()
1068 lwm2m_engine_context_close(client.ctx); in sm_do_registration()
1076 uint16_t srv = (uint16_t) client.ctx->srv_obj_inst; in sm_do_registration()
1078 client.last_update = 0; in sm_do_registration()
1079 client.ctx->bootstrap_mode = false; in sm_do_registration()
1082 if (client.ctx->sock_fd > -1) { in sm_do_registration()
1083 if (client.close_socket) { in sm_do_registration()
1085 client.close_socket = false; in sm_do_registration()
1086 lwm2m_engine_stop(client.ctx); in sm_do_registration()
1088 lwm2m_engine_context_close(client.ctx); in sm_do_registration()
1101 client.ctx->srv_obj_inst = srv; in sm_do_registration()
1102 sm_update_lifetime(srv, &client.lifetime); in sm_do_registration()
1104 ret = lwm2m_get_u16(&LWM2M_OBJ(1, client.ctx->srv_obj_inst, 0), &ssid); in sm_do_registration()
1117 client.ctx->sec_obj_inst = (uint16_t) ret; in sm_do_registration()
1122 client.ep_name, client.lifetime, client.ctx->srv_obj_inst); in sm_do_registration()
1124 ret = lwm2m_engine_start(client.ctx); in sm_do_registration()
1135 if (!client.server_disabled && fallback_to_bootstrap()) { in sm_do_registration()
1136 lwm2m_engine_stop(client.ctx); in sm_do_registration()
1140 lwm2m_engine_stop(client.ctx); in sm_do_registration()
1151 period = client.lifetime; in next_update()
1153 if (early > client.lifetime) { in next_update()
1154 early = client.lifetime; in next_update()
1157 next = MIN(period, client.lifetime - early); in next_update()
1160 return client.last_update + next * MSEC_PER_SEC; in next_update()
1167 return client.last_tx + CONFIG_LWM2M_QUEUE_MODE_UPTIME * MSEC_PER_SEC; in next_rx_off()
1184 k_mutex_lock(&client.mutex, K_FOREVER); in sm_registration_done()
1189 (client.trigger_update || in sm_registration_done()
1193 (client.engine_state != ENGINE_REGISTRATION_DONE_RX_OFF) && in sm_registration_done()
1200 k_mutex_unlock(&client.mutex); in sm_registration_done()
1208 update_objects = client.update_objects; in update_registration()
1209 client.trigger_update = false; in update_registration()
1210 client.update_objects = false; in update_registration()
1212 ret = lwm2m_engine_connection_resume(client.ctx); in update_registration()
1236 lwm2m_engine_stop(client.ctx); in sm_update_registration()
1252 if (lwm2m_engine_connection_resume(client.ctx)) { in sm_do_deregister()
1253 lwm2m_engine_context_close(client.ctx); in sm_do_deregister()
1288 client.server_ep, in sm_do_deregister()
1289 strlen(client.server_ep)); in sm_do_deregister()
1295 LOG_INF("Deregister from '%s'", client.server_ep); in sm_do_deregister()
1309 lwm2m_engine_stop(client.ctx); in sm_do_deregister()
1319 (void)lwm2m_get_bool(&LWM2M_OBJ(LWM2M_OBJECT_SERVER_ID, client.ctx->srv_obj_inst, in fallback_to_bootstrap()
1323 client.use_bootstrap = true; in fallback_to_bootstrap()
1335 LOG_ERR("sm_do_network_error, retries %d", client.retries); in sm_do_network_error()
1337 lwm2m_socket_close(client.ctx); in sm_do_network_error()
1339 if (client.retry_delay) { in sm_do_network_error()
1340 next_event_at(k_uptime_get() + client.retry_delay * MSEC_PER_SEC); in sm_do_network_error()
1341 client.retry_delay = 0; in sm_do_network_error()
1344 client.retry_delay = 1 << client.retries; in sm_do_network_error()
1345 client.retries++; in sm_do_network_error()
1348 if (client.retries > CONFIG_LWM2M_RD_CLIENT_MAX_RETRIES) { in sm_do_network_error()
1349 LOG_ERR("Network error, max retries reached (%d)", client.retries); in sm_do_network_error()
1352 if (client.ctx->srv_obj_inst > -1) { in sm_do_network_error()
1353 lwm2m_server_disable(client.ctx->srv_obj_inst, DISABLE_TIMEOUT); in sm_do_network_error()
1357 if (client.ctx->bootstrap_mode && in sm_do_network_error()
1361 if (sm_next_bootstrap_inst(&client.ctx->sec_obj_inst) < 0) { in sm_do_network_error()
1380 p1 = lwm2m_server_get_prio(client.ctx->srv_obj_inst); in sm_do_network_error()
1382 if (p1 < p2 || client.last_update != 0) { in sm_do_network_error()
1389 if (client.server_disabled) { in sm_do_network_error()
1402 if (client.ctx->bootstrap_mode) { in sm_do_network_error()
1403 lwm2m_engine_context_close(client.ctx); in sm_do_network_error()
1405 if (sm_next_bootstrap_inst(&client.ctx->sec_obj_inst) < 0) { in sm_do_network_error()
1406 client.ctx->sec_obj_inst = -1; in sm_do_network_error()
1413 if (!client.last_update || in sm_do_network_error()
1414 (k_uptime_get() - client.last_update) / MSEC_PER_SEC > client.lifetime) { in sm_do_network_error()
1424 err = lwm2m_socket_start(client.ctx); in sm_do_network_error()
1440 lwm2m_engine_stop(client.ctx); in sm_do_network_error()
1441 if (client.ctx->event_cb) { in sm_do_network_error()
1442 if (client.ctx->bootstrap_mode) { in sm_do_network_error()
1443 client.ctx->event_cb(client.ctx, in sm_do_network_error()
1446 client.ctx->event_cb(client.ctx, LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR); in sm_do_network_error()
1454 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_service()
1458 if (client.ctx) { in lwm2m_rd_client_service()
1460 client.next_event = INT64_MAX; in lwm2m_rd_client_service()
1463 if (client.ctx->sock_fd > -1) { in lwm2m_rd_client_service()
1464 lwm2m_engine_stop(client.ctx); in lwm2m_rd_client_service()
1546 lwm2m_engine_stop(client.ctx); in lwm2m_rd_client_service()
1547 if (client.server_disabled) { in lwm2m_rd_client_service()
1564 int64_t end = client.last_state_change + timeout * MSEC_PER_SEC; in lwm2m_rd_client_service()
1569 } else if (client.next_event > end) { in lwm2m_rd_client_service()
1575 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_service()
1582 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_start()
1589 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_start()
1595 if (client.ctx && (client.engine_state != ENGINE_IDLE || client.ctx->sock_fd != -1)) { in lwm2m_rd_client_start()
1596 LOG_WRN("Client is already running. state %d ", client.engine_state); in lwm2m_rd_client_start()
1597 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_start()
1605 client.ctx = client_ctx; in lwm2m_rd_client_start()
1606 client.ctx->sock_fd = -1; in lwm2m_rd_client_start()
1607 client.ctx->fault_cb = socket_fault_cb; in lwm2m_rd_client_start()
1608 client.ctx->observe_cb = observe_cb; in lwm2m_rd_client_start()
1609 client.ctx->event_cb = event_cb; in lwm2m_rd_client_start()
1610 client.use_bootstrap = flags & LWM2M_RD_CLIENT_FLAG_BOOTSTRAP; in lwm2m_rd_client_start()
1611 client.ctx->srv_obj_inst = -1; in lwm2m_rd_client_start()
1612 client.ctx->sec_obj_inst = -1; in lwm2m_rd_client_start()
1613 client.retries = 0; in lwm2m_rd_client_start()
1615 strncpy(client.ep_name, ep_name, CLIENT_EP_LEN - 1); in lwm2m_rd_client_start()
1616 client.ep_name[CLIENT_EP_LEN - 1] = '\0'; in lwm2m_rd_client_start()
1617 LOG_INF("Start LWM2M Client: %s", client.ep_name); in lwm2m_rd_client_start()
1621 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_start()
1629 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_stop()
1631 if (client.ctx != client_ctx) { in lwm2m_rd_client_stop()
1632 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_stop()
1637 client.ctx->event_cb = event_cb; in lwm2m_rd_client_stop()
1640 if (sm_is_registered() && deregister && !client.server_disabled) { in lwm2m_rd_client_stop()
1643 client.server_disabled = false; in lwm2m_rd_client_stop()
1647 LOG_INF("Stop LWM2M Client: %s", client.ep_name); in lwm2m_rd_client_stop()
1649 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_stop()
1660 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_pause()
1662 if (!client.ctx) { in lwm2m_rd_client_pause()
1663 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_pause()
1667 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_pause()
1673 if (client.ctx->event_cb) { in lwm2m_rd_client_pause()
1674 client.ctx->event_cb(client.ctx, event); in lwm2m_rd_client_pause()
1679 lwm2m_close_socket(client.ctx); in lwm2m_rd_client_pause()
1681 lwm2m_socket_suspend(client.ctx); in lwm2m_rd_client_pause()
1687 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_pause()
1694 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_resume()
1696 if (!client.ctx || !lwm2m_rd_client_is_suspended(client.ctx)) { in lwm2m_rd_client_resume()
1697 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_resume()
1711 client.engine_state = suspended_client_state; in lwm2m_rd_client_resume()
1716 client.engine_state = ENGINE_DO_BOOTSTRAP_REG; in lwm2m_rd_client_resume()
1720 if (client.engine_state >= ENGINE_DO_REGISTRATION && in lwm2m_rd_client_resume()
1721 client.engine_state <= ENGINE_SERVER_DISABLED) { in lwm2m_rd_client_resume()
1722 if (!client.last_update || in lwm2m_rd_client_resume()
1723 (client.lifetime <= (k_uptime_get() - client.last_update) / MSEC_PER_SEC)) { in lwm2m_rd_client_resume()
1725 client.engine_state = ENGINE_DO_REGISTRATION; in lwm2m_rd_client_resume()
1728 client.engine_state = ENGINE_REGISTRATION_DONE_RX_OFF; in lwm2m_rd_client_resume()
1729 lwm2m_rd_client_connection_resume(client.ctx); in lwm2m_rd_client_resume()
1734 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_resume()
1741 if (client.ctx->srv_obj_inst != inst_id) { in lwm2m_rd_client_server_disabled()
1745 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_server_disabled()
1747 client.server_disabled = true; in lwm2m_rd_client_server_disabled()
1757 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_server_disabled()
1769 return client.ctx; in lwm2m_rd_client_ctx()
1774 client.ctx = ctx; in lwm2m_rd_client_set_ctx()
1779 if (client.ctx != client_ctx) { in lwm2m_rd_client_connection_resume()
1783 if (client.engine_state == ENGINE_REGISTRATION_DONE_RX_OFF) { in lwm2m_rd_client_connection_resume()
1794 client.engine_state = ENGINE_REGISTRATION_DONE; in lwm2m_rd_client_connection_resume()
1799 client.trigger_update = true; in lwm2m_rd_client_connection_resume()
1802 client.engine_state = ENGINE_DO_REGISTRATION; in lwm2m_rd_client_connection_resume()
1812 if (client.ctx != client_ctx) { in lwm2m_rd_client_timeout()
1819 k_mutex_lock(&client.mutex, K_FOREVER); in lwm2m_rd_client_timeout()
1823 k_mutex_unlock(&client.mutex); in lwm2m_rd_client_timeout()
1829 if (client.ctx != client_ctx || !sm_is_registered()) { in lwm2m_rd_client_is_registred()
1837 if (client.ctx != client_ctx || !sm_is_suspended()) { in lwm2m_rd_client_is_suspended()
1847 client.ctx = NULL; in lwm2m_rd_client_init()
1848 client.rd_message.ctx = NULL; in lwm2m_rd_client_init()
1849 client.engine_state = ENGINE_IDLE; in lwm2m_rd_client_init()
1850 k_mutex_init(&client.mutex); in lwm2m_rd_client_init()