Skip to content

Commit f1bbc1a

Browse files
committed
Fix Arduino compilation
Use `std::function` for handler in SocketServer
1 parent b8cf8ed commit f1bbc1a

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

src/Debug/debugger.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ bool Debugger::checkDebugMessages(Module *m, RunningState *program_state) {
234234
} break;
235235
#endif
236236
#ifdef ARDUINO
237-
case interruptDronify:
237+
case interruptDronify: {
238238
// 0x65 the wifi ssid \0 wifipass \0
239239
// 1 |____len_____| 1
240240
char *ssid = (char *)(interruptData + 1);
@@ -247,8 +247,9 @@ bool Debugger::checkDebugMessages(Module *m, RunningState *program_state) {
247247
});
248248
auto server = SocketServer::getServer();
249249
server->connect2Wifi(&serverCredentials);
250-
*program_state = WARDUINOdrone;
250+
*program_state = WARDUINODrone;
251251
break;
252+
}
252253
#endif
253254
case interruptDUMPAllEvents:
254255
printf("InterruptDUMPEvents\n");

src/RFC/SocketServer.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
SocketServer *SocketServer::socketServer = nullptr;
99

1010
SocketServer::SocketServer(uint16_t t_pullport, uint16_t t_pushport,
11-
void (*t_handler)(size_t, uint8_t *))
11+
std::function<void(size_t, uint8_t *)> t_handler)
1212
: pull_portno(t_pullport), push_portno(t_pushport) {
1313
this->pullServer = new AsyncServer(t_pullport);
1414
this->pushServer = new AsyncServer(t_pushport);
@@ -17,8 +17,9 @@ SocketServer::SocketServer(uint16_t t_pullport, uint16_t t_pushport,
1717
this->handler = t_handler;
1818
}
1919

20-
void SocketServer::createServer(uint16_t t_pullport, uint16_t t_pushport,
21-
void (*t_handler)(size_t, uint8_t *)) {
20+
void SocketServer::createServer(
21+
uint16_t t_pullport, uint16_t t_pushport,
22+
std::function<void(size_t, uint8_t *)> t_handler) {
2223
if (socketServer == nullptr)
2324
socketServer = new SocketServer(t_pullport, t_pushport, t_handler);
2425
}
@@ -74,7 +75,7 @@ void SocketServer::registerClient(AsyncClient *new_client,
7475
return;
7576
}
7677

77-
void (*handler)(size_t, uint8_t *) = this->handler;
78+
std::function<void(size_t, uint8_t *)> _handler = this->handler;
7879
SocketServer *thisServer = this;
7980
new_client->onError(
8081
[thisServer](void *r, AsyncClient *t_client, int8_t error) {
@@ -93,9 +94,11 @@ void SocketServer::registerClient(AsyncClient *new_client,
9394
thisServer->unregisterClient(t_client);
9495
},
9596
NULL);
96-
new_client->onData([handler](void *r, AsyncClient *t_client, void *buf,
97-
size_t len) { handler(len, (uint8_t *)buf); },
98-
NULL);
97+
new_client->onData(
98+
[_handler](void *r, AsyncClient *t_client, void *buf, size_t len) {
99+
_handler(len, (uint8_t *)buf);
100+
},
101+
NULL);
99102
}
100103

101104
void SocketServer::unregisterClient(AsyncClient *t_client) {

src/RFC/SocketServer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ class SocketServer {
2525
AsyncServer *pushServer;
2626

2727
// handler for client's received data
28-
void (*handler)(size_t, uint8_t *);
28+
std::function<void(size_t, uint8_t *)> handler;
2929

3030
// singleton
3131
static SocketServer *socketServer;
3232
SocketServer(uint16_t t_pullport, uint16_t t_pushport,
33-
void (*t_handler)(size_t, uint8_t *));
33+
std::function<void(size_t, uint8_t *)> t_handler);
3434

3535
void registerClient(AsyncClient *new_client, AsyncClient **current_client);
3636
void unregisterClient(AsyncClient *t_client);
@@ -47,6 +47,6 @@ class SocketServer {
4747

4848
static SocketServer *getServer(void);
4949
static void createServer(uint16_t t_pullport, uint16_t t_pushport,
50-
void (*t_handler)(size_t, uint8_t *));
50+
std::function<void(size_t, uint8_t *)> t_handler);
5151
};
5252
#endif

0 commit comments

Comments
 (0)