summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/net/sock.h
blob: 8dbb1115c760ddf90f95297a6ab149db09b8ed5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdint.h>

#include "../event.h"

#define EOS_SOCK_MTYPE_PKT          0
#define EOS_SOCK_MTYPE_OPEN_DGRAM   1
#define EOS_SOCK_MTYPE_CLOSE        127

#define EOS_SOCK_MAX_SOCK           2

#define EOS_SOCK_SIZE_UDP_HDR       8

#define EOS_IPv4_ADDR_SIZE          4

#define EOS_SOCK_ERR_CLOSED         -1021

typedef struct EOSNetAddr {
    unsigned char host[EOS_IPv4_ADDR_SIZE];
    uint16_t port;
} EOSNetAddr;

void eos_sock_init(void);
void eos_sock_set_handler(unsigned char sock, eos_evt_handler_t handler);
eos_evt_handler_t eos_sock_get_handler(unsigned char sock);

int eos_sock_open_udp(eos_evt_handler_t handler, unsigned char *buffer);
void eos_sock_close(unsigned char sock, unsigned char *buffer);

int eos_sock_pkt_alloc(unsigned char **buffer, unsigned char *pkt, size_t pkt_len);
unsigned char *eos_sock_buf2pkt(unsigned char *buf, uint16_t buf_len);
unsigned char *eos_sock_pkt2buf(unsigned char *pkt);

int eos_sock_sendto(unsigned char sock, EOSNetAddr *addr, unsigned char *buffer, uint16_t buf_len, unsigned char more);
int eos_sock_sendto_sync(unsigned char sock, EOSNetAddr *addr, unsigned char *buffer, uint16_t buf_len);
int eos_sock_recvfrom(unsigned char *buffer, uint16_t buf_len, EOSNetAddr *addr, unsigned char *pkt, size_t pkt_size);