nros platform-cffi
Canonical C ABI for porting the nros platform abstraction
Loading...
Searching...
No Matches
platform_net.h
Go to the documentation of this file.
1#ifndef NROS_PLATFORM_NET_H
2#define NROS_PLATFORM_NET_H
3
4#include <stdint.h>
5#include <stddef.h>
6
7#include "nros/platform.h"
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
47
48#define NROS_PLATFORM_NET_SOCKET_ERROR ((size_t) -1)
49
50/* ---- TCP ---- */
51
55 const uint8_t *address,
56 const uint8_t *port);
57
60
62int8_t nros_platform_tcp_open(void *sock, const void *endpoint, uint32_t timeout_ms);
63
65int8_t nros_platform_tcp_listen(void *sock, const void *endpoint);
66
68void nros_platform_tcp_close(void *sock);
69
72size_t nros_platform_tcp_read(const void *sock, uint8_t *buf, size_t len);
73
76size_t nros_platform_tcp_read_exact(const void *sock, uint8_t *buf, size_t len);
77
80size_t nros_platform_tcp_send(const void *sock, const uint8_t *buf, size_t len);
81
93int8_t nros_platform_tcp_set_rx_notify(const void *sock, void (*notify)(void *ctx), void *ctx);
94
95/* ---- UDP unicast ---- */
96
98 const uint8_t *address,
99 const uint8_t *port);
101int8_t nros_platform_udp_open(void *sock, const void *endpoint, uint32_t timeout_ms);
102
105int8_t nros_platform_udp_listen(void *sock, const void *endpoint, uint32_t timeout_ms);
106
107void nros_platform_udp_close(void *sock);
108size_t nros_platform_udp_read(const void *sock, uint8_t *buf, size_t len);
109size_t nros_platform_udp_read_exact(const void *sock, uint8_t *buf, size_t len);
110
112size_t nros_platform_udp_send(const void *sock,
113 const uint8_t *buf, size_t len,
114 const void *endpoint);
115
117void nros_platform_udp_set_recv_timeout(const void *sock, uint32_t timeout_ms);
118
125int32_t nros_platform_udp_readiness_handle(const void *sock);
126
138int8_t nros_platform_udp_set_rx_notify(const void *sock, void (*notify)(void *ctx), void *ctx);
139
140/* ---- UDP multicast (optional) ----
141 *
142 * Signatures mirror the Rust `PlatformUdpMulticast` trait. `lep`
143 * is the local-endpoint storage (caller-allocated); `iface` /
144 * `join` are NUL-terminated strings naming the network interface
145 * and the multicast group to join.
146 */
147
149 const void *endpoint,
150 void *lep,
151 uint32_t timeout_ms,
152 const uint8_t *iface);
153
155 const void *endpoint,
156 uint32_t timeout_ms,
157 const uint8_t *iface,
158 const uint8_t *join);
159
161 void *socksend,
162 const void *rep,
163 const void *lep);
164
165size_t nros_platform_udp_mcast_read(const void *sock,
166 uint8_t *buf, size_t len,
167 const void *lep,
168 void *addr);
169
171 uint8_t *buf, size_t len,
172 const void *lep,
173 void *addr);
174
175size_t nros_platform_udp_mcast_send(const void *sock,
176 const uint8_t *buf, size_t len,
177 const void *endpoint);
178
179/* ---- Socket helpers ---- */
180
183
185int8_t nros_platform_socket_accept(const void *sock_in, void *sock_out);
186
191
194int8_t nros_platform_socket_wait_event(void *peers, void *mutex);
195
196/* ---- Network poll (bare-metal / non-OS stacks) ---- */
197
203
204#ifdef __cplusplus
205} /* extern "C" */
206#endif
207
208#endif /* NROS_PLATFORM_NET_H */
Canonical C ABI for the nros platform abstraction.
size_t len
Definition platform.h:922
int8_t nros_platform_udp_open(void *sock, const void *endpoint, uint32_t timeout_ms)
int8_t nros_platform_socket_accept(const void *sock_in, void *sock_out)
size_t nros_platform_udp_mcast_read_exact(const void *sock, uint8_t *buf, size_t len, const void *lep, void *addr)
size_t nros_platform_tcp_send(const void *sock, const uint8_t *buf, size_t len)
int8_t nros_platform_tcp_create_endpoint(void *ep, const uint8_t *address, const uint8_t *port)
int8_t nros_platform_socket_wait_event(void *peers, void *mutex)
size_t nros_platform_udp_read_exact(const void *sock, uint8_t *buf, size_t len)
size_t nros_platform_udp_read(const void *sock, uint8_t *buf, size_t len)
void nros_platform_network_poll(void)
int8_t nros_platform_udp_create_endpoint(void *ep, const uint8_t *address, const uint8_t *port)
size_t nros_platform_tcp_read(const void *sock, uint8_t *buf, size_t len)
void nros_platform_udp_free_endpoint(void *ep)
size_t nros_platform_udp_mcast_read(const void *sock, uint8_t *buf, size_t len, const void *lep, void *addr)
void nros_platform_udp_set_recv_timeout(const void *sock, uint32_t timeout_ms)
int8_t nros_platform_udp_mcast_open(void *sock, const void *endpoint, void *lep, uint32_t timeout_ms, const uint8_t *iface)
int8_t nros_platform_udp_set_rx_notify(const void *sock, void(*notify)(void *ctx), void *ctx)
int8_t nros_platform_socket_set_non_blocking(const void *sock)
int8_t nros_platform_udp_mcast_listen(void *sock, const void *endpoint, uint32_t timeout_ms, const uint8_t *iface, const uint8_t *join)
size_t nros_platform_tcp_read_exact(const void *sock, uint8_t *buf, size_t len)
int8_t nros_platform_tcp_open(void *sock, const void *endpoint, uint32_t timeout_ms)
int8_t nros_platform_udp_listen(void *sock, const void *endpoint, uint32_t timeout_ms)
void nros_platform_tcp_close(void *sock)
size_t nros_platform_udp_send(const void *sock, const uint8_t *buf, size_t len, const void *endpoint)
void nros_platform_tcp_free_endpoint(void *ep)
int8_t nros_platform_tcp_set_rx_notify(const void *sock, void(*notify)(void *ctx), void *ctx)
int8_t nros_platform_tcp_listen(void *sock, const void *endpoint)
size_t nros_platform_udp_mcast_send(const void *sock, const uint8_t *buf, size_t len, const void *endpoint)
void nros_platform_udp_mcast_close(void *sockrecv, void *socksend, const void *rep, const void *lep)
void nros_platform_udp_close(void *sock)
void nros_platform_socket_close(void *sock)
int32_t nros_platform_udp_readiness_handle(const void *sock)