Guys, i’ve done a lot of tests and changes in my code. But whatever i’ve trying i’m faced one problem - tcp client doesn’t breaks messages in any kind of packages, so this code:
_buffer = (uint8_t*) calloc (_client.available(),sizeof(uint8_t));
_total = _client.available();
_client.read(_buffer, _client.available());
Called in burstly incoming messages can hold any part of incomming message, because TCP client’s buffer goes in cyclic rewriting by TCP Client.
And cause, for example, this serie of messages:
{"message":{"name":"size","type":"range","value":"3","clientName":"Spark_Core1"}}
{"message":{"name":"size","type":"range","value":"4","clientName":"Spark_Core1"}}
{"message":{"name":"size","type":"range","value":"5","clientName":"Spark_Core1"}}
{"message":{"name":"size","type":"range","value":"6","clientName":"Spark_Core1"}}▒Q{"message":{"name":"size","type":"range","v}
alue":"7","clientName":"Spark_Core1"}}▒Q{"message":{"name":"size","type":"range","value":"8","clientName":"Spark_Core1"}}▒Q{"mes1"}}
I’ve tried even disabling of IRQ on reading of tcp client’s buffer. But code like:
__disable_irq();
_buffer = (uint8_t*) calloc (_client.available(),sizeof(uint8_t));
_total = _client.read(_buffer, _client.available());
_offset = 0;
__enable_irq();
Just drive Spark in reboot (without sos message). So is there any way to pause receiving messages into buffer, to do not break it into parts?
Or maybe there is a way to make an IRQ call of buffer processing function?