SNICInterface for ThingPlug Example
Dependents: ThingPlug_WiFi_Example ThingPlug_WiFi_Example_2
Fork of SNICInterface by
Diff: SNIC/SNIC_UartCommandManager.h
- Revision:
- 12:0254eaccfda2
- Child:
- 14:54378c96d285
diff -r c49007d49e52 -r 0254eaccfda2 SNIC/SNIC_UartCommandManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SNIC/SNIC_UartCommandManager.h Tue Mar 25 01:42:25 2014 +0000 @@ -0,0 +1,121 @@ +#ifndef _SNIC_UART_COMMAND_MANAGER_H_ +#define _SNIC_UART_COMMAND_MANAGER_H_ +#include "mbed.h" +#include "rtos.h" + +namespace murata_wifi +{ +/** Max length of SSID */ +#define SSID_MAX_LENGTH 32 +/** Max length of BSSID */ +#define BSSID_MAC_LENTH 6 +/** Length of Country code */ +#define COUNTRYC_CODE_LENTH 2 + +/** Wait signal ID of UART command */ +#define UART_COMMAND_SIGNAL 0x00000001 +/** Timeout of UART command wait(ms)*/ +#define UART_COMMAND_WAIT_TIMEOUT 10000 + +/** Scan result +*/ +typedef struct { + bool is_complete; + /** Channel */ + unsigned char channel; + /** RSSI */ + signed char rssi; + /** Security type */ + unsigned char security; + /** BSSID */ + unsigned char bssid[BSSID_MAC_LENTH]; + /** Network type */ + unsigned char network_type; + /** Max data rate */ + unsigned char max_rate; + /** SSID */ + char ssid[SSID_MAX_LENGTH+1]; +}tagSCAN_RESULT_T; + +/** C_SNIC_UartCommandManager class + */ +class C_SNIC_UartCommandManager +{ +public: + /** Set Command ID + @param cmd_id Command ID + */ + void setCommandID( unsigned char cmd_id ); + + /** Get Command ID + @return Command ID + */ + unsigned char getCommandID(); + + /** Set Command SubID + @param cmd_sid Command Sub ID + */ + void setCommandSID( unsigned char cmd_sid ); + + /** Get Command SubID + @return Command Sub ID + */ + unsigned char getCommandSID(); + + /** Set Command status + @param status Command status + */ + void setCommandStatus( unsigned char status ); + + /** Get Command status + @return Command status + */ + unsigned char getCommandStatus(); + + /** Set Response buffer + @param buf_p Pointer of response buffer + */ + void setResponseBuf( unsigned char *buf_p ); + + /** Get Response buffer + @return Pointer of response buffer + */ + unsigned char *getResponseBuf(); + + /** Set scan result callback hander + @param handler_p Pointer of callback function + */ + void setScanResultHandler( void (*handler_p)(tagSCAN_RESULT_T *scan_result) ); + + void bufferredPacket( unsigned char *payload_p, int payload_len ); + + void scanResultIndicate( unsigned char *payload_p, int payload_len ); + + /** Checks in the command which is waiting from Command ID and Sub ID. + @param command_id Command ID + @param payload_p Command payload + @return true: Waiting command / false: Not waiting command + */ + bool isWaitingCommand( unsigned int command_id, unsigned char *payload_p ); + + int wait(); + + int signal(); + +private: + /** Command request thread ID */ + osThreadId mCommandThreadID; + /** Command ID */ + unsigned char mCommandID; + /** Command SubID */ + unsigned char mCommandSID; + /** Status of command response */ + unsigned char mCommandStatus; + /** ResponseData of command response */ + unsigned char *mResponseBuf_p; + /** Scan result handler */ + void (*mScanResultHandler_p)(tagSCAN_RESULT_T *scan_result); +}; + +} +#endif