Files
ESPC3-wireless/app/drivers/data_port/socket_inet/socket_inet.h
LokLiang 9cf47ff0a8 添加 USB 主机、BLE 和 Socket 数据端口驱动程序:
- 支持大容量存储类(MSC)的 USB 主机驱动程序
- BLE SPP(串行端口配置文件)客户端和服务器实现
- Socket(UDP/TCP)数据端口驱动程序
- 相关的 shell 接口用于配置和测试
2025-02-21 12:43:26 +08:00

42 lines
1.6 KiB
C

/**
* @file socket_inet.h
* @author LokLiang
* @brief 主要把 sockets 标准接口封装为 sb_data_port.h::sb_data_port_t 接口
* @version 0.1
* @date 2023-11-10
*
* @copyright Copyright (c) 2023
*
*/
#pragma once
#include <netinet/in.h>
#include "drivers/data_port/sb_data_port.h"
#include "os/os.h"
typedef void *socket_listen_t;
typedef socket_listen_t socket_listen_tcp_t;
typedef void (*connect_cb)(bool is_connect, sb_data_port_t *port);
typedef void (*rx_event_cb)(sb_data_port_t *port);
typedef struct
{
uint16_t rx_buf_size; // 为该接口提供多大的接收缓存(建议取值 256..512,更多依赖协议栈的缓存)
rx_event_cb rx_event; // 当该接口收到数据时执行的回调函数,可取值为 NULL
os_work_t *rx_resume_work; // 当该接口收到数据时唤醒的工作项,可取值为 NULL
} socket_server_bind_t;
int socket_inet_init(void);
sb_data_port_t *socket_inet_server_bind_udp(uint16_t listen_port, const socket_server_bind_t *bind_param);
void socket_inet_server_unbind_udp(sb_data_port_t *port);
int socket_inet_server_udp_read_addr(sb_data_port_t *port, in_addr_t *s_addr, in_port_t *sin_port);
int socket_inet_server_udp_broadcast(sb_data_port_t *port, uint8_t ip_v4[4], uint16_t broadcast_port, const void *data, uint32_t size);
socket_listen_tcp_t socket_inet_server_listen_tcp(uint16_t listen_port, uint8_t tcp_backlog, const connect_cb connect);
sb_data_port_t *socket_inet_server_bind_tcp(socket_listen_tcp_t listen_tcp, const socket_server_bind_t *bind_param);
void socket_inet_server_unbind_tcp(socket_listen_tcp_t listen_tcp);