Files
ipoim/medium.h
Nikita Tyukalov, ASUS, Linux 943d784fd0 Abandonment of the project
2026-07-27 16:27:50 +03:00

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