Program Listing for File nidd.h

Return to documentation for file (include_public/anjay/nidd.h)

/*
 * Copyright 2017-2026 AVSystem <avsystem@avsystem.com>
 * AVSystem Anjay LwM2M SDK
 * All rights reserved.
 *
 * Licensed under AVSystem Anjay LwM2M Client SDK - Non-Commercial License.
 * See the attached LICENSE file for details.
 */

#ifndef ANJAY_INCLUDE_ANJAY_NIDD_DRIVER_H
#define ANJAY_INCLUDE_ANJAY_NIDD_DRIVER_H

#include <anjay/core.h>

#include <avsystem/commons/avs_defs.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef int anjay_nidd_driver_recv_t(anjay_nidd_driver_t *driver,
                                     size_t *out_bytes_received,
                                     void *out_message,
                                     size_t size,
                                     avs_time_monotonic_t deadline);

typedef int anjay_nidd_driver_can_recv_t(anjay_nidd_driver_t *driver);

typedef int anjay_nidd_driver_send_t(anjay_nidd_driver_t *driver,
                                     const void *message,
                                     size_t size);

typedef avs_errno_t anjay_nidd_driver_error_t(anjay_nidd_driver_t *driver);

typedef int anjay_nidd_driver_connect_t(anjay_nidd_driver_t *driver);

typedef int anjay_nidd_driver_disconnect_t(anjay_nidd_driver_t *driver);

typedef int anjay_nidd_driver_system_descriptor_t(anjay_nidd_driver_t *driver,
                                                  const void **out);

typedef void anjay_nidd_driver_free_t(anjay_nidd_driver_t *driver);

typedef int anjay_nidd_driver_outgoing_mtu_t(anjay_nidd_driver_t *driver,
                                             size_t *out_mtu);

typedef int anjay_nidd_driver_incoming_mtu_t(anjay_nidd_driver_t *driver,
                                             size_t *out_mtu);

struct anjay_nidd_driver_struct {
    anjay_nidd_driver_connect_t *connect;
    anjay_nidd_driver_disconnect_t *disconnect;
    anjay_nidd_driver_system_descriptor_t *system_descriptor;
    anjay_nidd_driver_send_t *send;
    anjay_nidd_driver_recv_t *recv;
    anjay_nidd_driver_can_recv_t *can_recv;
    anjay_nidd_driver_outgoing_mtu_t *outgoing_mtu;
    anjay_nidd_driver_incoming_mtu_t *incoming_mtu;
    anjay_nidd_driver_error_t *get_error;
    anjay_nidd_driver_free_t *free;
};

void anjay_nidd_driver_cleanup(anjay_nidd_driver_t **driver);

#ifdef __cplusplus
}
#endif

#endif /* ANJAY_INCLUDE_ANJAY_NIDD_DRIVER_H */