10#ifndef ANJAY_INCLUDE_ANJAY_CORE_H
11#define ANJAY_INCLUDE_ANJAY_CORE_H
15#include <avsystem/coap/udp.h>
17#include <avsystem/commons/avs_list.h>
18#include <avsystem/commons/avs_net.h>
19#include <avsystem/commons/avs_prng.h>
20#include <avsystem/commons/avs_sched.h>
21#include <avsystem/commons/avs_stream.h>
22#include <avsystem/commons/avs_time.h>
26#ifdef ANJAY_WITH_LWM2M_GATEWAY
27# define ANJAY_GATEWAY_MAX_PREFIX_LEN sizeof("dev65535")
40#define ANJAY_SSID_ANY 0
46#define ANJAY_SSID_BOOTSTRAP UINT16_MAX
65#define ANJAY_COAP_DEFAULT_UDP_TX_PARAMS \
65#define ANJAY_COAP_DEFAULT_UDP_TX_PARAMS \ …
80#define ANJAY_DTLS_DEFAULT_UDP_HS_TX_PARAMS \
80#define ANJAY_DTLS_DEFAULT_UDP_HS_TX_PARAMS \ …
95#define ANJAY_COAP_DEFAULT_SMS_TX_PARAMS \
95#define ANJAY_COAP_DEFAULT_SMS_TX_PARAMS \ …
105#ifdef ANJAY_WITH_NIDD
116#define ANJAY_COAP_DEFAULT_NIDD_TX_PARAMS \
116#define ANJAY_COAP_DEFAULT_NIDD_TX_PARAMS \ …
126#ifdef ANJAY_WITH_LWM2M11
222# ifdef ANJAY_WITH_LWM2M11
263# ifdef ANJAY_WITH_EST_ENGINE_SUPPORT
294 void *arg,
const void *x509_der_data,
size_t x509_der_data_size);
298#ifdef ANJAY_WITH_CONN_STATUS_API
664#if defined(WITH_AVS_COAP_TCP) \
665 && (defined(ANJAY_WITH_LWM2M11) || defined(ANJAY_WITH_COAP_DOWNLOAD))
699#ifdef ANJAY_WITH_NIDD
721#ifdef ANJAY_WITH_NIDD
757#ifdef ANJAY_WITH_LWM2M11
858# ifdef ANJAY_WITH_LWM2M11
866# ifdef ANJAY_WITH_EST_ENGINE_SUPPORT
902#ifdef ANJAY_WITH_CONN_STATUS_API
923#ifdef ANJAY_WITH_COAP_DOWNLOAD
995#ifdef ANJAY_WITH_CORE_PERSISTENCE
1039 avs_stream_t *in_stream);
1068 avs_stream_t *out_stream);
1240#define ANJAY_ID_INVALID UINT16_MAX
1244#define ANJAY_COAP_STATUS(Maj, Min) ((uint8_t) ((Maj << 5) | (Min & 0x1F)))
1251#define ANJAY_ERR_BAD_REQUEST (-(int) ANJAY_COAP_STATUS(4, 0))
1256#define ANJAY_ERR_UNAUTHORIZED (-(int) ANJAY_COAP_STATUS(4, 1))
1261#define ANJAY_ERR_BAD_OPTION (-(int) ANJAY_COAP_STATUS(4, 2))
1262#define ANJAY_ERR_FORBIDDEN (-(int) ANJAY_COAP_STATUS(4, 3))
1264#define ANJAY_ERR_NOT_FOUND (-(int) ANJAY_COAP_STATUS(4, 4))
1269#define ANJAY_ERR_METHOD_NOT_ALLOWED (-(int) ANJAY_COAP_STATUS(4, 5))
1274#define ANJAY_ERR_NOT_ACCEPTABLE (-(int) ANJAY_COAP_STATUS(4, 6))
1279#define ANJAY_ERR_REQUEST_ENTITY_INCOMPLETE (-(int) ANJAY_COAP_STATUS(4, 8))
1284#define ANJAY_ERR_UNSUPPORTED_CONTENT_FORMAT (-(int) ANJAY_COAP_STATUS(4, 15))
1286#define ANJAY_ERR_INTERNAL (-(int) ANJAY_COAP_STATUS(5, 0))
1288#define ANJAY_ERR_NOT_IMPLEMENTED (-(int) ANJAY_COAP_STATUS(5, 1))
1293#define ANJAY_ERR_SERVICE_UNAVAILABLE (-(int) ANJAY_COAP_STATUS(5, 3))
1366#ifdef ANJAY_WITH_EVENT_LOOP
1451 avs_time_duration_t max_wait_time);
1574#ifdef ANJAY_WITH_LWM2M11
1658 avs_time_duration_t timeout);
1702#ifdef ANJAY_WITH_SMS
1705#ifdef ANJAY_WITH_NIDD
1736#ifdef ANJAY_WITH_SMS
1744#ifdef ANJAY_WITH_NIDD
1872#ifdef ANJAY_WITH_LWM2M11
2049#if defined(ANJAY_WITH_EST) && defined(AVS_COMMONS_WITH_AVS_PERSISTENCE)
2179static inline avs_time_real_t
2456 const avs_coap_udp_tx_params_t *tx_params);
2474 avs_time_duration_t exchange_timeout);
2487 avs_net_dtls_handshake_timeouts_t dtls_handshake_timeouts);
2489#ifdef ANJAY_WITH_COMMUNICATION_TIMESTAMP_API
2512 avs_time_real_t *out_time);
2545 avs_time_real_t *out_time);
2568 avs_time_real_t *out_time);
2571#ifdef ANJAY_WITH_SMS
2572# ifdef ANJAY_WITH_LWM2M11
2588 bool *out_sms_trigger);
2604 const char *server_msisdn,
anjay_registration_expiration_status_t
Definition core.h:2101
@ ANJAY_REGISTRATION_EXPIRATION_STATUS_VALID
Definition core.h:2107
@ ANJAY_REGISTRATION_EXPIRATION_STATUS_INFINITE_LIFETIME
Definition core.h:2117
@ ANJAY_REGISTRATION_EXPIRATION_STATUS_EXPIRED
Definition core.h:2112
static avs_time_real_t anjay_registration_expiration_time(anjay_t *anjay, anjay_ssid_t ssid)
Definition core.h:2180
bool anjay_est_state_is_ready_for_persistence(anjay_t *anjay)
const anjay_transport_set_t ANJAY_TRANSPORT_SET_NIDD
anjay_t * anjay_new(const anjay_configuration_t *config)
int anjay_set_queue_mode_preference(anjay_t *anjay, anjay_queue_mode_preference_t preference)
avs_error_t anjay_update_coap_exchange_timeout(anjay_t *anjay, anjay_transport_set_t transport_set, avs_time_duration_t exchange_timeout)
const anjay_transport_set_t ANJAY_TRANSPORT_SET_SMS
anjay_est_cacerts_policy_t
Definition core.h:223
@ ANJAY_EST_CACERTS_FOR_EST_SECURITY_AND_BOOTSTRAP
Definition core.h:230
@ ANJAY_EST_CACERTS_IF_EST_CONFIGURED
Definition core.h:247
@ ANJAY_EST_CACERTS_DISABLED
Definition core.h:259
@ ANJAY_EST_CACERTS_ALWAYS
Definition core.h:254
@ ANJAY_EST_CACERTS_FOR_EST_SECURITY
Definition core.h:240
enum anjay_server_conn_status anjay_server_conn_status_t
avs_time_real_t anjay_transport_next_planned_pmax_notify_trigger(anjay_t *anjay, anjay_transport_set_t transport_set)
int anjay_delete_with_core_persistence(anjay_t *anjay, avs_stream_t *out_stream)
avs_time_real_t anjay_next_planned_lifecycle_operation(anjay_t *anjay, anjay_ssid_t ssid)
void anjay_delete(anjay_t *anjay)
avs_time_real_t anjay_next_planned_pmax_notify_trigger(anjay_t *anjay, anjay_ssid_t ssid)
int anjay_get_sms_trigger(anjay_t *anjay, anjay_ssid_t ssid, bool *out_sms_trigger)
anjay_socket_transport_t
Definition core.h:1120
@ ANJAY_SOCKET_TRANSPORT_NIDD
Definition core.h:1125
@ ANJAY_SOCKET_TRANSPORT_INVALID
Definition core.h:1121
@ ANJAY_SOCKET_TRANSPORT_UDP
Definition core.h:1122
@ ANJAY_SOCKET_TRANSPORT_TCP
Definition core.h:1123
@ ANJAY_SOCKET_TRANSPORT_SMS
Definition core.h:1124
int anjay_sched_time_to_next_ms(anjay_t *anjay, int *out_delay_ms)
const anjay_transport_set_t ANJAY_TRANSPORT_SET_TCP
uint16_t anjay_oid_t
Definition core.h:1225
uint16_t anjay_rid_t
Definition core.h:1231
int anjay_event_loop_interrupt(anjay_t *anjay)
bool anjay_all_connections_failed(anjay_t *anjay)
uint16_t anjay_iid_t
Definition core.h:1228
bool anjay_ongoing_registration_exists(anjay_t *anjay)
bool anjay_transport_has_unsent_notifications(anjay_t *anjay, anjay_transport_set_t transport_set)
int anjay_transport_enter_offline(anjay_t *anjay, anjay_transport_set_t transport_set)
anjay_security_config_t anjay_security_config_pkix(anjay_t *anjay)
avs_error_t anjay_update_dtls_handshake_timeouts(anjay_t *anjay, avs_net_dtls_handshake_timeouts_t dtls_handshake_timeouts)
bool anjay_has_unsent_notifications(anjay_t *anjay, anjay_ssid_t ssid)
anjay_server_conn_status_t anjay_get_server_connection_status(anjay_t *anjay, anjay_ssid_t ssid)
int anjay_transport_set_online(anjay_t *anjay, anjay_transport_set_t transport_set)
int anjay_server_schedule_reconnect(anjay_t *anjay, anjay_ssid_t ssid)
struct anjay_struct anjay_t
Definition core.h:49
anjay_queue_mode_preference_t
Definition core.h:1873
@ ANJAY_FORCE_ONLINE_MODE
Definition core.h:1908
@ ANJAY_PREFER_QUEUE_MODE
Definition core.h:1889
@ ANJAY_FORCE_QUEUE_MODE
Definition core.h:1882
@ ANJAY_PREFER_ONLINE_MODE
Definition core.h:1898
anjay_t * anjay_new_from_core_persistence(const anjay_configuration_t *config, avs_stream_t *in_stream)
int anjay_transport_exit_offline(anjay_t *anjay, anjay_transport_set_t transport_set)
avs_time_real_t anjay_transport_next_planned_notify_trigger(anjay_t *anjay, anjay_transport_set_t transport_set)
uint16_t anjay_ssid_t
Definition core.h:35
avs_time_real_t anjay_next_planned_notify_trigger(anjay_t *anjay, anjay_ssid_t ssid)
int anjay_event_loop_run(anjay_t *anjay, avs_time_duration_t max_wait_time)
avs_error_t anjay_update_transport_tx_params(anjay_t *anjay, anjay_transport_set_t transport_set, const avs_coap_udp_tx_params_t *tx_params)
const anjay_transport_set_t ANJAY_TRANSPORT_SET_UDP
const anjay_transport_set_t ANJAY_TRANSPORT_SET_IP
avs_error_t anjay_get_server_last_registration_time(anjay_t *anjay, anjay_ssid_t ssid, avs_time_real_t *out_time)
avs_error_t anjay_get_server_last_communication_time(anjay_t *anjay, anjay_ssid_t ssid, avs_time_real_t *out_time)
int anjay_disable_server(anjay_t *anjay, anjay_ssid_t ssid)
const char * anjay_est_engine_cacert_address_gen_t(void *arg, const void *x509_der_data, size_t x509_der_data_size)
Definition core.h:293
AVS_LIST[avs_net_socket_t *const ] anjay_get_sockets(anjay_t *anjay)
avs_time_real_t anjay_transport_next_planned_lifecycle_operation(anjay_t *anjay, anjay_transport_set_t transport_set)
void anjay_server_connection_status_cb_t(void *arg, anjay_t *anjay, anjay_ssid_t ssid, anjay_server_conn_status_t status)
Definition core.h:412
int anjay_schedule_registration_update(anjay_t *anjay, anjay_ssid_t ssid)
int anjay_serve(anjay_t *anjay, avs_net_socket_t *ready_socket)
void anjay_sched_run(anjay_t *anjay)
int anjay_schedule_register(anjay_t *anjay, anjay_ssid_t ssid)
AVS_LIST[const anjay_socket_entry_t] anjay_get_socket_entries(anjay_t *anjay)
bool anjay_transport_is_offline(anjay_t *anjay, anjay_transport_set_t transport_set)
int anjay_get_server_ssid_by_msisdn(anjay_t *anjay, const char *server_msisdn, anjay_ssid_t *out_ssid)
int anjay_schedule_bootstrap_request(anjay_t *anjay)
anjay_server_conn_status
Definition core.h:305
@ ANJAY_SERV_CONN_STATUS_INITIAL
Definition core.h:324
@ ANJAY_SERV_CONN_STATUS_REGISTERING
Definition core.h:345
@ ANJAY_SERV_CONN_STATUS_BOOTSTRAPPING
Definition core.h:335
@ ANJAY_SERV_CONN_STATUS_DEREGISTERING
Definition core.h:361
@ ANJAY_SERV_CONN_STATUS_INVALID
Definition core.h:310
@ ANJAY_SERV_CONN_STATUS_REREGISTERING
Definition core.h:386
@ ANJAY_SERV_CONN_STATUS_ERROR
Definition core.h:317
@ ANJAY_SERV_CONN_STATUS_UPDATING
Definition core.h:391
@ ANJAY_SERV_CONN_STATUS_REGISTERED
Definition core.h:350
@ ANJAY_SERV_CONN_STATUS_REG_FAILURE
Definition core.h:356
@ ANJAY_SERV_CONN_STATUS_SUSPENDING
Definition core.h:375
@ ANJAY_SERV_CONN_STATUS_DEREGISTERED
Definition core.h:369
@ ANJAY_SERV_CONN_STATUS_SUSPENDED
Definition core.h:380
@ ANJAY_SERV_CONN_STATUS_CONNECTING
Definition core.h:330
@ ANJAY_SERV_CONN_STATUS_BOOTSTRAPPED
Definition core.h:340
avs_sched_t * anjay_get_scheduler(anjay_t *anjay)
int anjay_enable_server(anjay_t *anjay, anjay_ssid_t ssid)
avs_error_t anjay_get_server_next_update_time(anjay_t *anjay, anjay_ssid_t ssid, avs_time_real_t *out_time)
int anjay_serve_any(anjay_t *anjay, avs_time_duration_t max_wait_time)
int anjay_security_config_from_dm(anjay_t *anjay, anjay_security_config_t *out_config, const char *uri)
int anjay_disable_server_with_timeout(anjay_t *anjay, anjay_ssid_t ssid, avs_time_duration_t timeout)
int anjay_event_loop_run_with_error_handling(anjay_t *anjay_locked, avs_time_duration_t max_wait_time)
avs_time_real_t anjay_registration_expiration_time_with_status(anjay_t *anjay, anjay_ssid_t ssid, anjay_registration_expiration_status_t *out_status)
int anjay_sched_time_to_next(anjay_t *anjay, avs_time_duration_t *out_delay)
int anjay_transport_schedule_reconnect(anjay_t *anjay, anjay_transport_set_t transport_set)
anjay_lwm2m_version_t
Definition core.h:127
@ ANJAY_LWM2M_VERSION_1_1
Definition core.h:139
@ ANJAY_LWM2M_VERSION_1_0
Definition core.h:132
const char * anjay_get_version(void)
struct anjay_configuration anjay_configuration_t
avs_error_t anjay_est_state_restore(anjay_t *anjay, avs_stream_t *out_stream)
int anjay_sched_calculate_wait_time_ms(anjay_t *anjay, int limit_ms)
avs_error_t anjay_est_state_persist(anjay_t *anjay, avs_stream_t *out_stream)
const anjay_transport_set_t ANJAY_TRANSPORT_SET_ALL
uint16_t anjay_riid_t
Definition core.h:1234
bool use_connection_id
Definition core.h:595
bool enable_self_notify
Definition core.h:619
size_t in_buffer_size
Definition core.h:463
avs_net_socket_configuration_t socket_config
Definition core.h:491
bool prefer_multipart_sms
Definition core.h:754
size_t coap_downloader_retry_count
Definition core.h:950
size_t msg_cache_size
Definition core.h:482
avs_time_duration_t coap_tcp_request_timeout
Definition core.h:681
avs_time_duration_t coap_downloader_retry_delay
Definition core.h:960
size_t out_buffer_size
Definition core.h:472
void * server_connection_status_cb_arg
Definition core.h:921
const anjay_lwm2m_version_config_t * lwm2m_version_config
Definition core.h:776
void * est_engine_cacerts_address_gen_cb_arg
Definition core.h:899
anjay_nidd_driver_t * nidd_driver
Definition core.h:726
avs_crypto_certificate_chain_info_t trust_store_certs
Definition core.h:812
bool use_system_trust_store
Definition core.h:796
bool confirmable_notifications
Definition core.h:545
avs_crypto_prng_ctx_t * prng_ctx
Definition core.h:655
const avs_coap_udp_tx_params_t * udp_tx_params
Definition core.h:503
bool prefer_hierarchical_formats
Definition core.h:589
avs_crypto_cert_revocation_list_info_t trust_store_crls
Definition core.h:828
bool update_immediately_on_dm_change
Definition core.h:610
bool disable_legacy_server_initiated_bootstrap
Definition core.h:562
anjay_est_cacerts_policy_t est_cacerts_policy
Definition core.h:863
size_t coap_tcp_max_options_size
Definition core.h:672
const char * endpoint_name
Definition core.h:444
avs_net_ssl_version_t dtls_version
Definition core.h:456
avs_net_socket_tls_ciphersuites_t default_tls_ciphersuites
Definition core.h:643
const avs_coap_udp_tx_params_t * sms_tx_params
Definition core.h:696
const char * local_msisdn
Definition core.h:743
const avs_net_dtls_handshake_timeouts_t * udp_dtls_hs_tx_params
Definition core.h:539
const char * est_engine_key_address
Definition core.h:873
anjay_est_engine_cacert_address_gen_t * est_engine_cacerts_address_gen_cb
Definition core.h:890
bool rebuild_client_cert_chain
Definition core.h:841
anjay_server_connection_status_cb_t * server_connection_status_cb
Definition core.h:910
uint16_t udp_listen_port
Definition core.h:451
bool connection_error_is_registration_failure
Definition core.h:631
const char * est_engine_cert_address
Definition core.h:881
const avs_coap_udp_tx_params_t * nidd_tx_params
Definition core.h:710
const anjay_est_reenroll_config_t * est_reenroll_config
Definition core.h:856
avs_ssl_additional_configuration_clb_t * additional_tls_config_clb
Definition core.h:662
size_t stored_notification_limit
Definition core.h:578
anjay_smsdrv_t * sms_driver
Definition core.h:718
double nominal_usage
Definition core.h:191
avs_time_duration_t max_margin
Definition core.h:219
bool enable
Definition core.h:162
anjay_lwm2m_version_t minimum_version
Definition core.h:146
anjay_lwm2m_version_t maximum_version
Definition core.h:152
avs_net_security_info_t security_info
Definition core.h:1953
const char * server_name_indication
Definition core.h:1977
avs_net_socket_tls_ciphersuites_t tls_ciphersuites
Definition core.h:1968
const avs_net_socket_dane_tlsa_record_t * dane_tlsa_record
Definition core.h:1959
bool queue_mode
Definition core.h:1172
anjay_ssid_t ssid
Definition core.h:1158
anjay_socket_transport_t transport
Definition core.h:1146
avs_net_socket_t * socket
Definition core.h:1138
bool sms
Definition core.h:1703
bool tcp
Definition core.h:1701
bool udp
Definition core.h:1700
bool nidd
Definition core.h:1706