Skip to content

Commit 1378f8f

Browse files
maidnlfacchinm
authored andcommitted
fix for client server
1 parent 0095ee6 commit 1378f8f

File tree

4 files changed

+35
-31
lines changed

4 files changed

+35
-31
lines changed

CompostaUSBBridge/at_handler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ void CAtHandler::run() {
7070

7171

7272
/* -------------------------------------------------------------------------- */
73-
CAtHandler::CAtHandler(HardwareSerial *s) {
73+
CAtHandler::CAtHandler(HardwareSerial *s) : last_server_client_sock(0) {
7474
/* -------------------------------------------------------------------------- */
7575

7676
for(int i = 0; i < MAX_CLIENT_AVAILABLE; i++) {

CompostaUSBBridge/at_handler.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ class CServerClient {
5151
class CAtHandler {
5252
private:
5353
static uint8_t wifi_status;
54+
55+
int last_server_client_sock;
5456

5557
WiFiUDP * udps[MAX_UDP_AVAILABLE];
5658
WiFiServer * serverWiFi[MAX_SERVER_AVAILABLE];
@@ -76,6 +78,7 @@ class CAtHandler {
7678
void add_cmds_wifi_udp();
7779
public:
7880
CAtHandler(HardwareSerial *s);
81+
CAtHandler() = delete ;
7982
static void onWiFiEvent(WiFiEvent_t event);
8083
void run();
8184
};

CompostaUSBBridge/cmds_esp_generic.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,7 @@ void CAtHandler::add_cmds_esp_generic() {
255255
switch (parser.cmd_mode) {
256256
case chAT::CommandMode::Run: {
257257
for (int i = 0; i < MAX_CLIENT_AVAILABLE; i++) {
258-
if (serverClients[i].client.connected()) {
259258
serverClients[i].client.stop();
260-
}
261259
}
262260

263261
for (int i = 0; i < MAX_SERVER_AVAILABLE; i++) {

CompostaUSBBridge/cmds_wifi_netif.h

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include "at_handler.h"
55

6+
#define INCREMENT_MOD(x,MOD) x = (++x) % MOD
7+
68
/* -------------------------------------------------------------------------- */
79
void CAtHandler::add_cmds_wifi_netif() {
810
/* -------------------------------------------------------------------------- */
@@ -258,14 +260,8 @@ void CAtHandler::add_cmds_wifi_netif() {
258260

259261
srv.continue_read();
260262

261-
//unsigned long start_time = millis();
262263
int sent = 0;
263-
//while(millis() - start_time < 5000 && sent < data_received.size()){
264-
sent += the_client.client->write(data_received.data() + sent, data_received.size() - sent);
265-
//if(sent < data_received.size())
266-
//delay(100);
267-
//}
268-
264+
sent += the_client.client->write(data_received.data() + sent, data_received.size() - sent);
269265

270266
if (sent < data_received.size()) {
271267
return chAT::CommandStatus::ERROR;
@@ -408,8 +404,7 @@ void CAtHandler::add_cmds_wifi_netif() {
408404
for(int i = 0;i<MAX_CLIENT_AVAILABLE;i++) {
409405
if(serverClients[i].server == sock) {
410406
if(serverClients[i].client) {
411-
int sent = 0;
412-
serverClients[i].client.write(data_received.data() + sent, data_received.size() - sent);
407+
serverClients[i].client.write(data_received.data(), data_received.size());
413408
}
414409
}
415410
}
@@ -489,32 +484,40 @@ void CAtHandler::add_cmds_wifi_netif() {
489484
if(serverWiFi[sock] == nullptr) {
490485
return chAT::CommandStatus::ERROR;
491486
}
492-
493-
/* accept */
494-
495-
int i = 0;
496-
for(;i<MAX_CLIENT_AVAILABLE;i++) {
487+
/* accept */
488+
for(int i = 0;i<MAX_CLIENT_AVAILABLE;i++) {
497489
if(!serverClients[i].client) {
490+
serverClients[i].client = serverWiFi[sock]->available();
491+
serverClients[i].server = sock;
498492
break;
499493
}
500494
}
501-
if(i < MAX_CLIENT_AVAILABLE) {
502-
serverClients[i].client = serverWiFi[sock]->available();
503-
serverClients[i].server = sock;
504-
}
495+
496+
int client_sock = -1;
497+
498+
int end = last_server_client_sock;
505499

506-
i = 0;
507-
for(;i<MAX_CLIENT_AVAILABLE;i++) {
508-
if(serverClients[i].client) {
509-
srv.write_response_prompt();
510-
srv.write_str((const char *) String(START_CLIENT_SERVER_SOCK + i).c_str());
511-
srv.write_line_end();
512-
return chAT::CommandStatus::OK;
500+
do {
501+
if(serverClients[last_server_client_sock].client) {
502+
client_sock = last_server_client_sock;
503+
break;
513504
}
514-
}
505+
INCREMENT_MOD(last_server_client_sock,MAX_CLIENT_AVAILABLE);
506+
} while(end != last_server_client_sock);
515507

508+
int sock_to_send = -1;
509+
if(client_sock == -1) {
510+
last_server_client_sock = 0;
511+
}
512+
else {
513+
last_server_client_sock = client_sock;
514+
sock_to_send = START_CLIENT_SERVER_SOCK + client_sock;
515+
}
516+
517+
518+
516519
srv.write_response_prompt();
517-
srv.write_str((const char *) String(-1).c_str());
520+
srv.write_str((const char *) String(sock_to_send).c_str());
518521
srv.write_line_end();
519522
return chAT::CommandStatus::OK;
520523
}
@@ -642,7 +645,7 @@ void CAtHandler::add_cmds_wifi_netif() {
642645
srv.write_response_prompt();
643646
srv.write_str((const char *)(results.c_str()));
644647
srv.write_vec8(data_received);
645-
srv.write_line_end();
648+
646649

647650
return chAT::CommandStatus::OK;
648651
}

0 commit comments

Comments
 (0)