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
|