58 lines
1.4 KiB
C
58 lines
1.4 KiB
C
#ifndef __MEDIUM_H
|
|
#define __MEDIUM_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#include <sys/epoll.h>
|
|
|
|
/*
|
|
* Type definitions
|
|
*/
|
|
typedef bool (*cbmed_on_init_t)();
|
|
typedef void (*cbmed_on_deinit_t)();
|
|
typedef void (*cbmed_on_timer_t)(uint32_t id);
|
|
typedef void (*cbmed_on_fd_event_t)(int fd, uint32_t events);
|
|
typedef int32_t (*cbmed_on_send_data_t)(const void *data, int32_t size);
|
|
|
|
/*
|
|
* Public API
|
|
*/
|
|
// Set callbacks to use to utilize medium.
|
|
void medium_set_callbacks(
|
|
cbmed_on_init_t on_init,
|
|
cbmed_on_deinit_t on_deinit,
|
|
cbmed_on_timer_t on_timer,
|
|
cbmed_on_fd_event_t on_fd_event,
|
|
cbmed_on_send_data_t on_send_data
|
|
);
|
|
|
|
// Modify epoll.
|
|
// Remarks:
|
|
// - see `man epoll_ctl`
|
|
void medium_epoll_ctl(int op, int fd, struct epoll_event *ev);
|
|
|
|
// Use this when you have received data from medium.
|
|
// Parameters:
|
|
// - data - data you received
|
|
// - size - size of data
|
|
void medium_on_recv_data(const void *data, int32_t size);
|
|
|
|
// Call when you become ready/not ready to send data.
|
|
// Parameters:
|
|
// - state - true = ready; false = not ready
|
|
void medium_set_ready_to_send(bool state);
|
|
|
|
// Set max size of data you are ready to accept for sending.
|
|
// Parameters:
|
|
// - size - size of data
|
|
void medium_set_max_send_size(int32_t size);
|
|
|
|
// Start timer.
|
|
// Parameters:
|
|
// - id - timer ID
|
|
// - ms - milliseconds to wait
|
|
void medium_start_timer(uint32_t id, int32_t ms);
|
|
|
|
#endif
|