ACKme Logo WiConnect Host Library- API Reference Guide
 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
WiconnectInterface.h
1 
29 #pragma once
30 
31 #include "WiconnectTypes.h"
32 
33 
34 #include "types/LogFunc.h"
35 #include "types/ReaderFunc.h"
36 #include "types/Callback.h"
37 #include "types/TimeoutTimer.h"
38 #include "types/PeriodicTimer.h"
39 #include "types/Gpio.h"
40 #include "types/WiconnectSerial.h"
41 
42 #ifdef WICONNECT_ASYNC_TIMER_ENABLED
43 #include "types/QueuedCommand.h"
44 #include "types/CommandQueue.h"
45 #endif
46 
47 #include "NetworkInterface.h"
48 #include "SocketInterface.h"
49 #include "FileInterface.h"
50 #include "GhmInterface.h"
51 
52 
53 #ifdef WICONNECT_ENABLE_MALLOC
54 #define WICONNECT_MALLOC_ARGS , void* (*malloc_)(size_t) = WICONNECT_DEFAULT_MALLOC, void (*free_)(void*) = WICONNECT_DEFAULT_FREE
56 #else
57 #define WICONNECT_MALLOC_ARGS
58 #endif
59 
60 
64 namespace wiconnect {
65 
66 
78 class Wiconnect : public NetworkInterface,
79  public SocketInterface,
80  public FileInterface,
81  public GhmInterface
82 {
83 public:
84 
100  Wiconnect(const SerialConfig &serialConfig, Pin reset = PIN_NC, Pin wake = PIN_NC, bool nonBlocking = WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS);
101 
118  Wiconnect(const SerialConfig &serialConfig, int internalBufferSize, void *internalBuffer = NULL, Pin reset = PIN_NC, Pin wake = PIN_NC, bool nonBlocking = WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS);
119  ~Wiconnect();
120 
121 
122  // ------------------------------------------------------------------------
123 
124 
132  static Wiconnect* getInstance();
133 
144  WiconnectResult init(bool bringNetworkUp=false);
145 
151  void deinit();
152 
161  bool isInitialized();
162 
176 
189 
201  void flush(int delayMs = 500);
202 
213  WiconnectResult getVersion(char *versionBuffer = NULL, int versionBufferSize = 0, const Callback &completeCallback = Callback());
214 
215 
226  WiconnectResult updateFirmware(bool forced = false, const char *versionStr = NULL, const Callback &completeCallback = Callback());
227 
228 
229  // ------------------------------------------------------------------------
230 
231 
249  WiconnectResult sendCommand(const Callback &completeCallback, char *responseBuffer, int responseBufferLen,
250  TimerTimeout timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, va_list vaList);
267  WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &reader,
268  void *user, const char *cmd, va_list vaList);
269 
286  WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &reader,
287  void *user, const char *cmd, ...);
288 
305  WiconnectResult sendCommand(TimerTimeout timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, ...);
306 
323  WiconnectResult sendCommand(const ReaderFunc &reader, void *user, const char *cmd, ...);
324 
339  WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const char *cmd, ...);
340 
355  WiconnectResult sendCommand(const Callback &completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd, ...);
356 
370  WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd, ...);
371 
387  WiconnectResult sendCommand(const Callback &completeCallback, const char *cmd, ...);
388 
403  WiconnectResult sendCommand(const char *cmd, ...);
404 
418  WiconnectResult sendCommand(const Callback &completeCallback, TimerTimeout timeoutMs, const char *cmd, ...);
419 
434  WiconnectResult sendCommand(TimerTimeout timeoutMs, const char *cmd, ...);
435 
448  WiconnectResult sendCommand(const char *cmd, va_list vaList);
449 
462 
470  void stopCurrentCommand();
471 
472 
473  // ------------------------------------------------------------------------
474 
475 
485  const char* getLastCommandResponseCodeStr();
486 
494  uint16_t getLastCommandResponseLength();
495 
503  char* getResponseBuffer();
504 
515  WiconnectResult responseToUint32(uint32_t *uint32Ptr);
516 
527  WiconnectResult responseToInt32(int32_t *int32Ptr);
528 
529 
530  // ------------------------------------------------------------------------
531 
545  WiconnectResult setSetting(const char *settingStr, uint32_t value);
546 
560  WiconnectResult setSetting(const char *settingStr, const char *value);
561 
575  WiconnectResult getSetting(const char *settingStr, uint32_t *valuePtr);
576 
590  WiconnectResult getSetting(const char *settingStr, char **valuePtr);
591 
606  WiconnectResult getSetting(const char *settingStr, char *valueBuffer, uint16_t valueBufferLen);
607 
608 
616  void setBlockingEnabled(bool blockingEnabled);
617 
623  bool getBlockingEnabled(void);
624 
635  void setCommandDefaultTimeout(TimerTimeout timeoutMs);
636 
645 
653  void setPinToGpioMapper(PinToGpioMapper mapper);
654 
662  void setDebugLogger(LogFunc logFunc);
663 
673  void setAssertLogger(LogFunc assertLogFunc);
674 
675  // ------------------------------------------------------------------------
676 
677 
678 #ifdef WICONNECT_ASYNC_TIMER_ENABLED
679 
690  WiconnectResult enqueueCommand(QueuedCommand *command, const Callback &commandCompleteHandler = Callback());
691 
701  void setCommandProcessingPeriod(uint32_t periodMs);
702 #endif
703 
704 
713  static const char* getWiconnectResultStr(WiconnectResult wiconnectResult);
714 
715 protected:
716 
717 #ifdef WICONNECT_ENABLE_MALLOC
718  void* (*_malloc)(size_t);
719  void (*_free)(void *);
720  friend class QueuedCommand;
721  friend class WiconnectSerial;
722  friend class ScanResult;
723 #endif
724 
725  wiconnect::WiconnectSerial serial;
726  wiconnect::Gpio resetGpio;
727  wiconnect::Gpio wakeGpio;
728 
729  volatile bool commandExecuting;
730  bool initialized;
731  bool nonBlocking;
732 
733  PinToGpioMapper pinToGpioMapper;
734 
735  char *internalBuffer;
736  int internalBufferSize;
737  bool internalBufferAlloc;
738  uint8_t internalProcessingState;
739  void *currentCommandId;
740 
741  wiconnect::TimeoutTimer timeoutTimer;
742  TimerTimeout defaultTimeoutMs;
743 
744  uint8_t commandHeaderBuffer[32];
745  char commandFormatBuffer[WICONNECT_MAX_CMD_SIZE];
746  uint8_t commandContext[96];
747 
748  void prepare(void *internalBuffer, int internalBufferSize, bool nonBlocking);
749  bool configureModuleDataBus(void);
750  WiconnectResult inline receiveResponse();
751  WiconnectResult inline receivePacket();
752  void issueCommandCallback(WiconnectResult result);
753 
754 #ifdef WICONNECT_ENABLE_DEBUGGING
755  LogFunc debugLogger;
756 #endif
757  LogFunc assertLogger;
758 
759  void debugLog(const char *msg, ...);
760 
761 #ifdef WICONNECT_ASYNC_TIMER_ENABLED
762  wiconnect::PeriodicTimer commandProcessorTimer;
763  uint32_t commandProcessingPeriod;
764  CommandQueue commandQueue;
765  wiconnect::QueuedCommand *currentQueuedCommand;
766 
767  void commandProcessingTimerHandler(void);
768  void processNextQueuedCommand();
769  void checkQueuedCommandTimeout();
770 #endif
771 
772  friend class NetworkInterface;
773  friend class SocketInterface;
774  friend class FileInterface;
775  friend class GhmInterface;
776  friend class GhmMessageList;
777  friend class GhmMessage;
778  friend class ScanResultList;
779  friend class WiconnectFile;
780  friend class WiconnectSocket;
781  friend class WiconnectUdpServer;
782 };
783 
784 }
785 
786 
787 #include "sdkTypes.h"
788 
static const char * getWiconnectResultStr(WiconnectResult wiconnectResult)
Converts a WiconnectResult to string representation.
Contains single entry from goHACK.me message listing.
Definition: GhmMessage.h:46
void setAssertLogger(LogFunc assertLogFunc)
Sets callback used when Wiconnect Library hits and internal assertion.
const char * getLastCommandResponseCodeStr()
When the WiConnect WiFi module returns a response, it contains a response code in the header...
int8_t(* PinToGpioMapper)(Pin pin)
Function pointer for mapping from a host pin to a WiConnect Module GPIO.
void setBlockingEnabled(bool blockingEnabled)
Sets if API calls are blocking or non-blocking.
UDP Server Listening socket.
The provides an interface for joining and/or creating a network. It provides other utilities such as ...
WiconnectResult
API Result code.
WiconnectResult reset()
Toggle the WiConnect WiFi module reset signal.
void flush(int delayMs=500)
Flush any received data in serial RX buffer and terminate any commands on WiConnect WiFi module...
Generic callback function.
Definition: Callback.h:49
WiconnectResult wakeup()
Toggle the WiConnect WiFi moduel wakeup signal.
Host<->Wiconnect Module serial configuration.
Definition: sdk.h:140
TimerTimeout getCommandDefaultTimeout()
Returns the current default maximum API execution time.
void setDebugLogger(LogFunc logFunc)
Sets callback function used to debug WiConnect WiFi module RX/TX serial data.
static Wiconnect * getInstance()
Get instance of previously instantiated Wiconnect Library.
WiconnectResult checkCurrentCommand()
Check the status of the currently executing command.
List of goHACK.me messages.
WiConnect WiFi module file object.
Definition: WiconnectFile.h:44
The provides an interface for http://goHACK.me.
Definition: GhmInterface.h:81
void setCommandDefaultTimeout(TimerTimeout timeoutMs)
Sets the default maximum time an API method may execute before terminating and return a timeout error...
WiconnectResult responseToUint32(uint32_t *uint32Ptr)
Helper method to convert previous response to uint32.
Generic data reading callback function.
Definition: ReaderFunc.h:45
void deinit()
De-initialize library.
char * getResponseBuffer()
Return pointer to internal response buffer.
WiconnectResult setSetting(const char *settingStr, uint32_t value)
Set a module setting.
Class which contains command for asynchronous processing.
Definition: QueuedCommand.h:43
PinName Pin
Pin name on HOST.
Definition: sdk.h:134
WiconnectResult init(bool bringNetworkUp=false)
Initialize library and communication link with WiConnect WiFi module.
WiconnectResult getSetting(const char *settingStr, uint32_t *valuePtr)
Get a module setting.
void setPinToGpioMapper(PinToGpioMapper mapper)
Sets a mapping function used to convert from a host Pin to WiConnect WiFi module GPIO.
WiconnectResult sendCommand(const Callback &completeCallback, char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, va_list vaList)
Send command to WiConnect WiFi module.
Logging callback function.
Definition: LogFunc.h:45
void stopCurrentCommand()
Stop the currently executing command.
WiconnectResult responseToInt32(int32_t *int32Ptr)
Helper method to convert previous response to int32.
unsigned long TimerTimeout
Timeout type.
Connection object to remote server.
Wiconnect(const SerialConfig &serialConfig, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)
WiConnect class constructor.
uint16_t getLastCommandResponseLength()
Return the length in bytes of the previous response.
List of WiFi network scan results.
The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...
The root WiConnect library class. This class inheriets all WiConnect functionality.
The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...
Definition: FileInterface.h:68
#define WICONNECT_DEFAULT_NONBLOCKING
The default blocking mode of the Library.
Definition: sdk.h:105
#define delayMs(ms)
Function to stop processor for specified number of milliseconds.
Definition: sdk.h:191
#define WICONNECT_MAX_CMD_SIZE
The maximum command size that may be sent to the WiConnect WiFi module.
#define PIN_NC
Default value for a pin, Not connected.
Definition: sdk.h:128
WiconnectResult getVersion(char *versionBuffer=NULL, int versionBufferSize=0, const Callback &completeCallback=Callback())
Return current version of WiConnect WiFi module.
bool isInitialized()
Return TRUE if library is able to communicated with WiConnect WiFi module. FALSE else.
Contains single entry from WiFi scan results.
Definition: ScanResult.h:46
WiconnectResult updateFirmware(bool forced=false, const char *versionStr=NULL, const Callback &completeCallback=Callback())
Update the wifi module's internal firmware.
bool getBlockingEnabled(void)
Gets if API calls are blocking or non-blocking.