You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
#ifndef BROADCAST_H |
|
#define BROADCAST_H |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#include <stdint.h> |
|
#include <stddef.h> |
|
|
|
struct TOPO_GROUP; |
|
struct UTUN_INSTANCE; |
|
|
|
#define BROADCAST_MAX_DATA 1600 |
|
#define BROADCAST_UUID_SIZE 16 |
|
#define BROADCAST_CLEANUP_INTERVAL_TB 600000 // 1 минута |
|
#define BROADCAST_TTL_TB 1200000 // 2 минуты |
|
|
|
typedef void (*broadcast_recv_fn)(const uint8_t* uuid, const uint8_t* data, uint16_t data_len, void* arg); |
|
|
|
struct broadcast_cbk_entry { |
|
broadcast_recv_fn fn; |
|
void* arg; |
|
struct broadcast_cbk_entry* next; |
|
}; |
|
|
|
struct broadcast_ctx; |
|
|
|
int broadcast_init(struct TOPO_GROUP* group); |
|
void broadcast_destroy(struct TOPO_GROUP* group); |
|
int broadcast_send(struct TOPO_GROUP* group, const uint8_t* data, uint16_t data_len); |
|
void broadcast_add_cbk(struct TOPO_GROUP* group, broadcast_recv_fn fn, void* arg); |
|
void broadcast_remove_cbk(struct TOPO_GROUP* group, broadcast_recv_fn fn, void* arg); |
|
|
|
int broadcast_init_instance(struct UTUN_INSTANCE* instance); |
|
void broadcast_destroy_instance(struct UTUN_INSTANCE* instance); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
#endif
|
|
|