It is the project that wifi run on the rtos
Fork of WiflyInterface by
Revision 10:8a57e2ed20a4, committed 2014-12-05
- Comitter:
- shiyilei
- Date:
- Fri Dec 05 02:10:34 2014 +0000
- Parent:
- 9:a27cf731e79a
- Commit message:
- It is the wifi project run on the rtos
Changed in this revision
diff -r a27cf731e79a -r 8a57e2ed20a4 Socket/Socket.h --- a/Socket/Socket.h Thu May 08 17:09:48 2014 +0000 +++ b/Socket/Socket.h Fri Dec 05 02:10:34 2014 +0000 @@ -18,7 +18,7 @@ #ifndef SOCKET_H_ #define SOCKET_H_ -#include "Wifly.h" +#include "baseinterface.h" /** Socket file descriptor and select wrapper */ @@ -44,7 +44,7 @@ protected: bool _blocking; int _timeout; - Wifly * wifi; + //Wifly * wifi; };
diff -r a27cf731e79a -r 8a57e2ed20a4 Socket/TCPSocketConnection.cpp --- a/Socket/TCPSocketConnection.cpp Thu May 08 17:09:48 2014 +0000 +++ b/Socket/TCPSocketConnection.cpp Fri Dec 05 02:10:34 2014 +0000 @@ -17,55 +17,70 @@ */ #include "TCPSocketConnection.h" +#include "rtos.h" #include <algorithm> TCPSocketConnection::TCPSocketConnection() {} int TCPSocketConnection::connect(const char* host, const int port) { - if (!wifi->connect(host, port)) - return -1; - wifi->flush(); - return 0; + return (base_level_connect(host,port)); } bool TCPSocketConnection::is_connected(void) { - return wifi->is_connected(); + return base_level_is_connected(); + } int TCPSocketConnection::send(char* data, int length) { - Timer tmr; +// Timer tmr; - if (!_blocking) { - tmr.start(); - while (tmr.read_ms() < _timeout) { - if (wifi->writeable()) - break; - } - if (tmr.read_ms() >= _timeout) { - return -1; - } - } - return wifi->send(data, length); +// if (!_blocking) { +// tmr.start(); +// while (tmr.read_ms() < _timeout) { +// if (wifi->writeable()) +// break; +// } +// if (tmr.read_ms() >= _timeout) { +// return -1; +// } +// } +// return wifi->send(data, length); + } // -1 if unsuccessful, else number of bytes written int TCPSocketConnection::send_all(char* data, int length) { + Timer tmr; int idx = 0; + globaldata.send_length=length; + memcpy(globaldata.send_buffer,data,length); + globaldata.send_ready=1; tmr.start(); while ((tmr.read_ms() < _timeout) || _blocking) { - idx += wifi->send(data, length); + //idx += wifi->send(data, length); - if (idx == length) - return idx; - } - return (idx == 0) ? -1 : idx; +// idx+=baselevel_send_data(data,length); +// if (idx == length) +// return idx; + if(globaldata.send_completed==1) + { + globaldata.send_completed=0; + memset(globaldata.send_buffer,0,600*sizeof(char)); + if(globaldata.send_length_over==length) + return length; + + } + //return (idx == 0) ? -1 : idx; + } + return (globaldata.send_length_over==0) ? -1 : globaldata.send_length_over; + } // -1 if unsuccessful, else number of bytes received @@ -73,53 +88,86 @@ { Timer tmr; int time = -1; - + int idx=0; if (!_blocking) { + globaldata.need_receive=length; + globaldata.receive_start=1; tmr.start(); - while (time < _timeout + 20) { - if (wifi->readable()) { - break; + while (time < _timeout + 30) { + if (globaldata.receive_completed==1) { + globaldata.receive_completed=0; + globaldata.receive_start=0; + break; } + time = tmr.read_ms(); } - if (time >= _timeout + 20) { + if (time >= _timeout + 30) { return -1; } } - while(!wifi->readable()); - int nb_available = wifi->readable(); - for (int i = 0; i < min(nb_available, length); i++) { - data[i] = wifi->getc(); - } +// while(!wifi->readable()); +// int nb_available = wifi->readable(); +// for (int i = 0; i < min(nb_available, length); i++) { +// data[i] = wifi->getc(); +//} + //int nb_available=baselevel_receive_data(data, length); + - return min(nb_available, length); + // return min(nb_available, length); + for(int i=0;i<globaldata.receive_length;i++) + if(globaldata.receive_buffer[i]!=0) + data[idx++]=globaldata.receive_buffer[i]; + globaldata.receive_completed=0; + + return min(globaldata.receive_length, length); + } // -1 if unsuccessful, else number of bytes received int TCPSocketConnection::receive_all(char* data, int length) { - Timer tmr; + + Timer tmr; int idx = 0; int time = -1; - + globaldata.receive_start=1; + globaldata.need_receive=length; tmr.start(); - + while (time < _timeout || _blocking) { - int nb_available = wifi->readable(); - for (int i = 0; i < min(nb_available, length); i++) { - data[idx++] = wifi->getc(); + // int nb_available = wifi->readable(); + // for (int i = 0; i < min(nb_available, length); i++) { + // data[idx++] = wifi->getc(); + // } + // + // my code: + //idx=baselevel_receive_data(data,length); + + // if (idx == length) + // break; + + if(globaldata.receive_completed==1) + { + for(int i=0;i<globaldata.receive_length;i++) + if(globaldata.receive_buffer[i]!=0) + data[idx++]=globaldata.receive_buffer[i]; + globaldata.receive_completed=0; } - - if (idx == length) + if(idx==length) break; time = tmr.read_ms(); } - return (idx == 0) ? -1 : idx; + //return (idx == 0) ? -1 : idx; + return (idx==0) ? -1 : idx; + + + }
diff -r a27cf731e79a -r 8a57e2ed20a4 Socket/TCPSocketConnection.h --- a/Socket/TCPSocketConnection.h Thu May 08 17:09:48 2014 +0000 +++ b/Socket/TCPSocketConnection.h Fri Dec 05 02:10:34 2014 +0000 @@ -21,7 +21,7 @@ #include "Socket.h" #include "Endpoint.h" - +#include "sysinterface.h" /** TCP socket connection */