diff --git a/firmware/wifiHD/src/ard_spi.c b/firmware/wifiHD/src/ard_spi.c index a5ef895..f10b228 100644 --- a/firmware/wifiHD/src/ard_spi.c +++ b/firmware/wifiHD/src/ard_spi.c @@ -1195,10 +1195,14 @@ cmd_spi_state_t get_data_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t cmd_spi_state_t get_databuf_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) { uint8_t* data; - uint16_t len; CHECK_ARD_NETIF(recv, reply, count); + tParam* params = (tParam*)&recv[3]; + + GET_PARAM_NEXT(BYTE, params, _sock); + GET_PARAM_NEXT(INT, params, len); + if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]idx < p->len) + { + uint8_t* buf = (uint8_t*)p->data; + + + *payload = &buf[p->idx]; + *len = min(p->len - p->idx, *len); + INFO_UTIL_VER("get:%d %p %d %d\n",p->idx, p->data, *payload, *len); + p->idx += *len; + return true; + } + else + { *payload = p->data; - *len = p->len; + *len = 0; return true; + } } return false; } diff --git a/libraries/WiFi/utility/server_drv.cpp b/libraries/WiFi/utility/server_drv.cpp index ce03604..9e94b0f 100644 --- a/libraries/WiFi/utility/server_drv.cpp +++ b/libraries/WiFi/utility/server_drv.cpp @@ -177,8 +177,9 @@ bool ServerDrv::getDataBuf(uint8_t sock, uint8_t *_data, uint16_t *_dataLen) { WAIT_FOR_SLAVE_SELECT(); // Send Command - SpiDrv::sendCmd(GET_DATABUF_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendBuffer(&sock, sizeof(sock), LAST_PARAM); + SpiDrv::sendCmd(GET_DATABUF_TCP_CMD, PARAM_NUMS_2); + SpiDrv::sendBuffer(&sock, sizeof(sock)); + SpiDrv::sendParam(*_datalen, LAST_PARAM); //Wait the reply elaboration SpiDrv::waitForSlaveReady();