From 635d950efddde7a60edba75f7b4d5e0028e4c99a Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Tue, 20 Sep 2022 16:53:48 +0200 Subject: Implement net component --- src/net/inc/net.h | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/net/inc/net.h (limited to 'src/net/inc') diff --git a/src/net/inc/net.h b/src/net/inc/net.h new file mode 100644 index 0000000..cdfeb0e --- /dev/null +++ b/src/net/inc/net.h @@ -0,0 +1,78 @@ +#ifndef NET_H +#define NET_H + +#include +#include + +enum net_domain +{ + NET_DOMAIN_IPV4, + NET_DOMAIN_SERIAL +}; + +union net_connect +{ + struct net_connect_common + { + enum net_domain domain; + void (*on_connected)(void *arg); + void (*on_disconnected)(void *arg); + void *arg; + } common; + + struct net_connect_ipv4 + { + struct net_connect_common common; + const char *addr; + uint16_t port; + } ipv4; + + struct net_connect_serial + { + struct net_connect_common common; + const char *dev; + unsigned long baud; + + enum + { + NET_PARITY_NONE, + NET_PARITY_ODD, + NET_PARITY_EVEN + } parity; + } serial; +}; + +union net_server +{ + struct net_server_common + { + enum net_domain domain; + unsigned max_players; + } common; + + struct net_server_ipv4 + { + struct net_server_common common; + uint16_t port; + } ipv4; + + struct net_server_serial + { + struct net_server_common common; + } serial; +}; + +struct net_socket; + +int net_init(void); +void net_deinit(void); +int net_update(struct net_socket *s); + +struct net_socket *net_server(const union net_server *srv); +struct net_socket *net_connect(const union net_connect *c); +int net_read(struct net_socket *s, void *buf, size_t n); +int net_write(struct net_socket *s, const void *buf, size_t n); +int net_close(struct net_socket *s); +const char *net_domain_str(enum net_domain d); + +#endif /* NET_H */ -- cgit v1.2.3