5 #include "driver/include/m2m_wifi.h"
6 #include "socket/include/socket.h"
46 size_t chunkSize =
size > SOCKET_BUFFER_MAX_LENGTH ? SOCKET_BUFFER_MAX_LENGTH :
size;
76 m2m_wifi_handle_events(
nullptr);
96 case M2M_WIFI_REQ_DHCP_CONF: {
97 auto& dhcpInfo = *
reinterpret_cast<tstrM2MIPConfig*
>(pvMsg);
98 uint8_t*
addr =
reinterpret_cast<uint8_t*
>(&dhcpInfo.u32StaticIP);
99 efiPrintf(
"WiFi client connected DHCP IP is %d.%d.%d.%d",
addr[0],
addr[1],
addr[2],
addr[3]);
102 efiPrintf(
"WifiCallback: %d", (
int)u8MsgType);
111 case SOCKET_MSG_BIND: {
112 auto bindMsg =
reinterpret_cast<tstrSocketBindMsg*
>(pvMsg);
114 if (bindMsg && bindMsg->status == 0) {
119 case SOCKET_MSG_LISTEN: {
120 auto listenMsg =
reinterpret_cast<tstrSocketListenMsg*
>(pvMsg);
121 if (listenMsg && listenMsg->status == 0) {
123 accept(sock,
nullptr,
nullptr);
126 case SOCKET_MSG_ACCEPT: {
127 auto acceptMsg =
reinterpret_cast<tstrSocketAcceptMsg*
>(pvMsg);
128 if (acceptMsg && (acceptMsg->sock >= 0)) {
136 case SOCKET_MSG_RECV: {
137 auto recvMsg =
reinterpret_cast<tstrSocketRecvMsg*
>(pvMsg);
138 if (recvMsg && (recvMsg->s16BufferSize > 0)) {
140 chibios_rt::CriticalSectionLocker csl;
142 for (
size_t i = 0; i < recvMsg->s16BufferSize; i++) {
148 if (recvMsg->u16RemainingSize < 1) {
151 }
else if (recvMsg->u16RemainingSize >
sizeof(
rxBuf)) {
153 nextRecv =
sizeof(
rxBuf);
156 nextRecv = recvMsg->u16RemainingSize;
160 recv(sock, &
rxBuf, nextRecv, 0);
167 chibios_rt::CriticalSectionLocker csl;
172 case SOCKET_MSG_SEND: {
174 chibios_rt::CriticalSectionLocker csl;
186 if (M2M_SUCCESS != m2m_wifi_init(&
param)) {
190 strcpy(
apConfig.au8SSID,
"FOME EFI");
192 apConfig.u8SecType = M2M_WIFI_SEC_OPEN;
202 if (M2M_SUCCESS != m2m_wifi_enable_ap(&
apConfig)) {
215 address.sin_family = AF_INET;
216 address.sin_port = _htons(17999);
217 address.sin_addr.s_addr = 0;
219 listenerSocket = socket(AF_INET, SOCK_STREAM, SOCKET_CONFIG_SSL_OFF);
A base class for a controller that requires its own thread.
virtual void ThreadTask()=0
ThreadController(const char *name, tprio_t priority)
virtual bool isReady() const
virtual void write(const uint8_t *buffer, size_t size, bool isEndOfPacket=false)=0
virtual size_t readTimeout(uint8_t *buffer, size_t size, int timeout)=0
TsChannelBase(const char *name)
virtual TsChannelBase * setupChannel()=0
static FIL FDLogFile NO_CACHE
static BigBufferHandle buffer
static NO_CACHE WifiChannel wifiChannel
static int connectionSocket
static tstrWifiInitParam param
static NO_CACHE WifiHelperThread wifiHelper
static const uint8_t * sendBuffer
static NO_CACHE WifiConsoleThread wifiThread
static void socketCallback(SOCKET sock, uint8_t u8Msg, void *pvMsg)
void wifiCallback(uint8 u8MsgType, void *pvMsg)
static int listenerSocket
static NO_CACHE uint8_t rxBuf[512]
static input_queue_t wifiIqueue
static uint8_t recvBuffer[512]
chibios_rt::BinarySemaphore sendDoneSemaphore(true)
chibios_rt::BinarySemaphore isrSemaphore(true)
static tstrM2MAPConfig apConfig