#ifndef __MEDIUM_H #define __MEDIUM_H #include #include #include /* * 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