76 lines
2.7 KiB
C
76 lines
2.7 KiB
C
|
#ifndef __WIFLY_DEVICE_UDP_H__
|
||
|
#define __WIFLY_DEVICE_UDP_H__
|
||
|
|
||
|
#include <Arduino.h>
|
||
|
|
||
|
class WiFlyDevice {
|
||
|
public:
|
||
|
WiFlyDevice(void);
|
||
|
|
||
|
void setUart(Stream* newUart);
|
||
|
void begin();
|
||
|
void begin(boolean adhocMode);
|
||
|
boolean createAdHocNetwork(const char *ssid);
|
||
|
|
||
|
boolean join(const char *ssid);
|
||
|
boolean join(const char *ssid, const char *passphrase,
|
||
|
boolean isWPA = true);
|
||
|
|
||
|
boolean configure(byte option, unsigned long value);
|
||
|
|
||
|
long getTime();
|
||
|
|
||
|
const char * ip();
|
||
|
|
||
|
private:
|
||
|
Stream* uart;
|
||
|
boolean bDifferentUart;
|
||
|
// Okay, this really sucks, but at the moment it works.
|
||
|
// The problem is that we have to keep track of an active server connection
|
||
|
// but AFAICT due to the way the WebClient example is written
|
||
|
// we can't store a useful reference in the server instance
|
||
|
// to an active client instance because the client object gets copied
|
||
|
// when it's returned from Server.available(). This means that
|
||
|
// the state changes in the client object's Client.stop() method
|
||
|
// never get propagated to the Server's stored active client.
|
||
|
// Blah, blah, hand-wavy singleton mention. Trying to store the reference
|
||
|
// to the active client connection here runs into apparent circular
|
||
|
// reference issues with header includes. So in an effort to get this out
|
||
|
// the door we just share whether or not the current "active client"
|
||
|
// that the server has a stored reference is actually active or not.
|
||
|
// (Yeah, nice.)
|
||
|
// TODO: Handle this better.
|
||
|
boolean serverConnectionActive;
|
||
|
|
||
|
uint16_t serverPort;
|
||
|
|
||
|
// TODO: Should these be part of a different class?
|
||
|
// TODO: Should all methods that need to be in command mode ensure
|
||
|
// they are first?
|
||
|
void attemptSwitchToCommandMode();
|
||
|
void switchToCommandMode();
|
||
|
void reboot();
|
||
|
void requireFlowControl();
|
||
|
void setConfiguration(boolean adhocMode);
|
||
|
void setAdhocParams();
|
||
|
boolean sendCommand(const char *command,
|
||
|
boolean isMultipartCommand, // Has default value
|
||
|
const char *expectedResponse); // Has default value
|
||
|
boolean sendCommand(const __FlashStringHelper *command,
|
||
|
boolean isMultipartCommand, // Has default value
|
||
|
const char *expectedResponse); // Has default value
|
||
|
void waitForResponse(const char *toMatch);
|
||
|
void skipRemainderOfResponse();
|
||
|
boolean responseMatched(const char *toMatch);
|
||
|
|
||
|
boolean findInResponse(const char *toMatch, unsigned int timeOut);
|
||
|
boolean enterCommandMode(boolean isAfterBoot = false);
|
||
|
boolean softwareReboot(boolean isAfterBoot);
|
||
|
boolean hardwareReboot();
|
||
|
|
||
|
friend class WiFlyClient;
|
||
|
friend class WiFlyServer;
|
||
|
};
|
||
|
|
||
|
#endif
|