lwm2m_client.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 HAW Hamburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #include <ctype.h>
27 #include <errno.h>
28 #include <stdio.h>
29 #include <stdlib.h>
30 #include <string.h>
31 #include <sys/types.h>
32 #include <unistd.h>
33 #include <sys/time.h>
34 
35 #include "periph/pm.h"
36 #include "net/sock/udp.h"
37 
38 #if IS_USED(MODULE_WAKAAMA_CLIENT_DTLS)
39 #include "net/sock/dtls.h"
40 #endif
41 
42 #include "lwm2m_client_config.h"
43 #include "liblwm2m.h"
44 
48 typedef enum {
52 
56 typedef struct lwm2m_client_connection {
59 #if IS_USED(MODULE_WAKAAMA_CLIENT_DTLS) || DOXYGEN
61 #endif
63  time_t last_send;
65 
69 typedef struct {
72 #if IS_USED(MODULE_WAKAAMA_CLIENT_DTLS)
73  sock_udp_t dtls_udp_sock;
74  sock_dtls_t dtls_sock;
75  sock_udp_ep_t dtls_local_ep;
76 #endif
78  lwm2m_context_t *lwm2m_ctx;
81 
85 #define LWM2M_CLIENT_RCV_BUFFER_SIZE (200)
86 
91 #define LWM2M_CLIENT_REBOOT_TIME (5)
92 
99 #define LWM2M_CLIENT_MIN_REFRESH_TIME (1)
100 
110 lwm2m_context_t *lwm2m_client_run(lwm2m_client_data_t *client_data,
111  lwm2m_object_t *obj_list[],
112  uint16_t obj_numof);
113 
123 
131 static inline lwm2m_context_t *lwm2m_client_get_ctx(
132  lwm2m_client_data_t *client_data)
133 {
134  return client_data->lwm2m_ctx;
135 }
136 
137 #if IS_USED(MODULE_WAKAAMA_CLIENT_DTLS) || defined(DOXYGEN)
143 
152 
159 #endif /* MODULE_WAKAAMA_CLIENT_DTLS || DOXYGEN */
160 
161 #ifdef __cplusplus
162 }
163 #endif
164 
int16_t kernel_pid_t
Unique process identifier.
Definition: sched.h:138
void lwm2m_client_refresh_dtls_credentials(void)
Refreshes the client available credentials using the currently registered security objects.
void lwm2m_client_init(lwm2m_client_data_t *client_data)
Initializes a LwM2M client.
void lwm2m_client_remove_credential(credman_tag_t tag)
Removes a credential tag from the available to use with the LwM2M DTLS sock.
void lwm2m_client_add_credential(credman_tag_t tag)
Adds a credential tag to be used with the LwM2M DTLS sock.
lwm2m_context_t * lwm2m_client_run(lwm2m_client_data_t *client_data, lwm2m_object_t *obj_list[], uint16_t obj_numof)
Starts a LwM2M client.
struct lwm2m_client_connection lwm2m_client_connection_t
Connection to server descriptor.
static lwm2m_context_t * lwm2m_client_get_ctx(lwm2m_client_data_t *client_data)
Returns the LwM2M context of a LwM2M client.
Definition: lwm2m_client.h:131
lwm2m_client_connection_type_t
Type of connection to the LwM2M server.
Definition: lwm2m_client.h:48
@ LWM2M_CLIENT_CONN_DTLS
DTLS over UDP.
Definition: lwm2m_client.h:50
@ LWM2M_CLIENT_CONN_UDP
UDP.
Definition: lwm2m_client.h:49
uint16_t credman_tag_t
Tag of the credential.
Definition: credman.h:95
LwM2M client configurations.
Power management interface.
DTLS sock definitions.
UDP sock definitions.
Common IP-based transport layer end point.
Definition: sock.h:214
Connection to server descriptor.
Definition: lwm2m_client.h:56
time_t last_send
last sent packet to the server
Definition: lwm2m_client.h:63
sock_dtls_session_t session
DTLS session (needs wakaama_client_dtls module)
Definition: lwm2m_client.h:60
lwm2m_client_connection_type_t type
type of connection
Definition: lwm2m_client.h:62
sock_udp_ep_t remote
remote endpoint
Definition: lwm2m_client.h:58
struct lwm2m_client_connection * next
pointer to the next connection
Definition: lwm2m_client.h:57
LwM2M client descriptor.
Definition: lwm2m_client.h:69
lwm2m_client_connection_t * conn_list
LwM2M connections list.
Definition: lwm2m_client.h:79
kernel_pid_t pid
PID of the client thread.
Definition: lwm2m_client.h:70
sock_udp_t sock
UDP server sock.
Definition: lwm2m_client.h:71
sock_udp_ep_t local_ep
Local endpoint.
Definition: lwm2m_client.h:77
lwm2m_context_t * lwm2m_ctx
LwM2M context.
Definition: lwm2m_client.h:78
Information about remote client connected to the server.
Information about DTLS sock.
UDP sock type.
Definition: sock_types.h:128