66 lines
1.6 KiB
C++
66 lines
1.6 KiB
C++
#include "WiFly.h"
|
|
|
|
// NOTE: Arbitrary cast to avoid constructor ambiguity.
|
|
// TODO: Handle this a different way so we're not using
|
|
// NULL pointers all over the place?
|
|
#define NO_CLIENT WiFlyClient ((uint8_t*) NULL, 0)
|
|
|
|
WiFlyServer::WiFlyServer(uint16_t port) : activeClient(NO_CLIENT){
|
|
/*
|
|
*/
|
|
_port = port;
|
|
|
|
// TODO: Handle this better.
|
|
// NOTE: This only works if the server object was created globally.
|
|
WiFly.serverPort = port;
|
|
}
|
|
|
|
void WiFlyServer::begin() {
|
|
/*
|
|
*/
|
|
// TODO: Send command to enable server functionality.
|
|
}
|
|
|
|
#define TOKEN_MATCH_OPEN "*OPEN*"
|
|
|
|
WiFlyClient& WiFlyServer::available() {
|
|
/*
|
|
*/
|
|
|
|
// TODO: Ensure no active non-server client connection.
|
|
|
|
if (!WiFly.serverConnectionActive) {
|
|
activeClient._port = 0;
|
|
}
|
|
|
|
// TODO: Ensure begin() has been called.
|
|
|
|
// Return active server connection if present
|
|
if (!activeClient) {
|
|
// TODO: Handle this better
|
|
if (WiFly.uart->available() >= strlen(TOKEN_MATCH_OPEN)) {
|
|
if (WiFly.responseMatched(TOKEN_MATCH_OPEN)) {
|
|
// The following values indicate that the connection was
|
|
// created when acting as a server.
|
|
|
|
// TODO: Work out why this alternate instantiation code doesn't work:
|
|
//activeClient = WiFlyClient((uint8_t*) NULL, _port);
|
|
|
|
activeClient._port = _port;
|
|
activeClient._domain = NULL;
|
|
activeClient._ip = NULL;
|
|
|
|
activeClient.connect();
|
|
WiFly.serverConnectionActive = true;
|
|
} else {
|
|
// Ignore other feedback from the WiFly module.
|
|
// TODO: Should we check we're not ditching a connect accidentally?
|
|
//WiFly.skipRemainderOfResponse();
|
|
WiFly.uart->flush();
|
|
}
|
|
}
|
|
}
|
|
|
|
return activeClient;
|
|
}
|