Loading...
Searching...
No Matches
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
21
22#ifdef __cplusplus
23extern "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
52
65
69typedef 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
110lwm2m_context_t *lwm2m_client_run(lwm2m_client_data_t *client_data,
111 lwm2m_object_t *obj_list[],
112 uint16_t obj_numof);
113
123
131static 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
static lwm2m_context_t * lwm2m_client_get_ctx(lwm2m_client_data_t *client_data)
Returns the LwM2M context of a LwM2M client.
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.
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.
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.
struct lwm2m_client_connection lwm2m_client_connection_t
Connection to server descriptor.
lwm2m_client_connection_type_t
Type of connection to the LwM2M server.
@ LWM2M_CLIENT_CONN_DTLS
DTLS over UDP.
@ LWM2M_CLIENT_CONN_UDP
UDP.
uint16_t credman_tag_t
Tag of the credential.
Definition credman.h:95
struct sock_udp sock_udp_t
forward declare for async
Definition types.h:139
struct sock_dtls sock_dtls_t
forward declare for async
Definition types.h:47
struct sock_dtls_session sock_dtls_session_t
Information about a created session.
Definition dtls.h:637
struct _sock_tl_ep sock_udp_ep_t
An end point for a UDP sock object.
Definition udp.h:295
LwM2M client configurations.
Power management interface.
DTLS sock definitions.
UDP sock definitions.
Connection to server descriptor.
time_t last_send
last sent packet to the server
sock_dtls_session_t session
DTLS session (needs wakaama_client_dtls module)
lwm2m_client_connection_type_t type
type of connection
sock_udp_ep_t remote
remote endpoint
struct lwm2m_client_connection * next
pointer to the next connection
LwM2M client descriptor.
lwm2m_client_connection_t * conn_list
LwM2M connections list.
kernel_pid_t pid
PID of the client thread.
sock_udp_t sock
UDP server sock.
sock_udp_ep_t local_ep
Local endpoint.
lwm2m_context_t * lwm2m_ctx
LwM2M context.