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.
43 lines
1.3 KiB
43 lines
1.3 KiB
#pragma once
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#include <lwip/sockets.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "lwip/api.h"
|
|
#include "lwip/opt.h"
|
|
#include "lwip/sys.h"
|
|
#include "project_configs.h"
|
|
|
|
typedef struct udp_s udp_t;
|
|
typedef void (*udp_on_packet_t)(udp_t *udp_handler, struct sockaddr_in *client, uint8_t *data, uint16_t len);
|
|
struct udp_s {
|
|
struct sockaddr_in server;
|
|
int sock_fd;
|
|
osThreadId rx_thread;
|
|
char *rxbuf;
|
|
int rxbuf_len;
|
|
udp_on_packet_t on_packet;
|
|
void *data;
|
|
const char *name;
|
|
};
|
|
|
|
typedef struct {
|
|
struct sockaddr_in server;
|
|
int sock_fd;
|
|
osThreadId rx_thread;
|
|
char *rxbuf;
|
|
int rxbuf_len;
|
|
} udp_broadcast_handler_t;
|
|
|
|
bool xs_udp_init(udp_t *udp_handler, const char *name, uint16_t port, udp_on_packet_t on_packet, int32_t rxbuf_size, void *data);
|
|
int xs_udp_send_message(udp_t *udp_handler, const char *remoteip, int remoteport, const char *data, int len);
|
|
int xs_udp_send_message2(udp_t *udp_handler, struct sockaddr_in *add, const char *data, int len);
|
|
|
|
bool xs_udp_broadcast_init(udp_broadcast_handler_t *handler, uint16_t localport);
|
|
ssize_t xs_udp_broadcast(udp_broadcast_handler_t *handler, uint32_t remoteport, uint8_t *data, size_t datalen);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|