I've been trying to get the CC3000 to work at some level of consistency on and off for about a month now. In this time I've read a lot of ( if not an excessively amount of ) complaints about the CC3000. I know what most of the outstanding bugs are and have encountered most of them myself, but I wonder what current workarounds are for some of the existing problems.
My setup consists of a STM32F407 and the CC3000. I've got the latest firmware and host driver ( 1.14 / 1.32 ). I've got a working CC3000 and working ( to some degree ) TCP and UDP communication. I open a TCP socket and write 8 packages of around 600 bytes per second to a NodeJS server I've set up for debugging purposes. Communication is working, but there are random hiccups from time to time.
These are the ones I'm encountering :
- The closing of the socket can take upwards to 3.6 seconds and might not even close properly on the NodeJS side
- TCP sends that seem to succeed on the STM32 side but are never captured on the NodeJS server ( rare, but it happens )
- Buffer starvation, which is described in detail in this thread: https://community.spark.io/t/bug-bounty-kill-the-cyan-flash-of-death/1322/444 and in which, according to the Spark folks, is fixed in a less recent TI firmware update
Working from a single socket for all data, seems to cause the buffer starvation to happen earlier than working with a new socket every second. But then again, working with more sockets increases the risk of incurring the close socket delays, which is quite detrimental to my data flow.
I've tried everything from decreasing my data flow size and frequency to implementing delays after every socket open/write/close. I've made my sending non blocking, but it results in the same full deadlock of the CC3000 after a while of sending. I've also tried implementing the new ARP events into my code so that I wait with sending new TCP requests when an ARP is on its way ( what else are these ARP events good for anyways ? ).
What are the current workarounds / fixes available for the problems I've mentioned ? I don't care too much for the infrequent dropped package, but that buffer starvation problem is really killing any chance of this turning out to be a functional system.