for EthernetInterface library compatibility.\\ ** Unoffical fix. may be a problem. **
Dependents: SNIC-httpclient-example SNIC-ntpclient-example
Fork of SNICInterface by
Revision 5:ef3befe3edad, committed 2014-03-13
- Comitter:
- kishino
- Date:
- Thu Mar 13 08:44:33 2014 +0000
- Parent:
- 4:99cc93fe7d88
- Child:
- 6:70f522934032
- Commit message:
- Create Wi-Fi turn on command; Create Wi-Fi turn off command; Create get RSSI command
Changed in this revision
--- a/YDwifi/YDwifi.cpp Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifi/YDwifi.cpp Thu Mar 13 08:44:33 2014 +0000
@@ -100,7 +100,7 @@
printf("%02x ", gUART_RCVBUF.buf[i]);
}
printf("\r\n");
-*/
+*/
unsigned char command_id;
// Get payload from received data from UART.
int payload_len = C_YD_UartMsg::getResponsePayload( gUART_RCVBUF.size, gUART_RCVBUF.buf
@@ -112,7 +112,7 @@
printf("%02x ", gUART_TEMP_BUF[i]);
}
printf("\r\n");
-*/
+*/
// Check scan results indication
if( (command_id == UART_CMD_ID_WIFI) || (gUART_TEMP_BUF[0] == UART_CMD_SID_WIFI_SCAN_RESULT_IND) )
{
--- a/YDwifi/YDwifi.h Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifi/YDwifi.h Thu Mar 13 08:44:33 2014 +0000
@@ -51,6 +51,21 @@
unsigned char seq;
}tagGEN_FW_VER_GET_REQ_T;
+ /** WIFI_ON_REQ Command */
+ typedef struct
+ {
+ unsigned char cmd_sid;
+ unsigned char seq;
+ char country[COUNTRYC_CODE_LENTH];
+ }tagWIFI_ON_REQ_T;
+
+ /** WIFI_OFF_REQ Command */
+ typedef struct
+ {
+ unsigned char cmd_sid;
+ unsigned char seq;
+ }tagWIFI_OFF_REQ_T;
+
/** WIFI_DISCONNECT_REQ Command */
typedef struct
{
@@ -58,6 +73,13 @@
unsigned char seq;
}tagWIFI_DISCONNECT_REQ_T;
+ /** WIFI_GET_STA_RSSI_REQ Command */
+ typedef struct
+ {
+ unsigned char cmd_sid;
+ unsigned char seq;
+ }tagWIFI_GET_STA_RSSI_REQ_T;
+
/** WIFI_SCAN_REQ Command */
typedef struct
{
--- a/YDwifi/YDwifiUartCommand.h Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifi/YDwifiUartCommand.h Thu Mar 13 08:44:33 2014 +0000
@@ -9,6 +9,8 @@
#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
--- a/YDwifiInterface.cpp Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifiInterface.cpp Thu Mar 13 08:44:33 2014 +0000
@@ -62,7 +62,6 @@
// Wait UART response
ret = mUartCommand.wait();
- printf( "getFWversion wait:%d\r\n", ret );
if( ret != 0 )
{
printf( "getFWversion failed\r\n" );
@@ -218,7 +217,7 @@
ret = -1;
}
gMEMPOOL_PAYLOAD.free( payload_buf );
- return 0;
+ return ret;
}
int C_YDwifiInterface::scan( const char *ssid_p, unsigned char *bssid_p
@@ -305,5 +304,174 @@
}
gMEMPOOL_PAYLOAD.free( payload_buf );
+ return ret;
+}
+
+int C_YDwifiInterface::wifi_on( const char *country_p )
+{
+ // Parameter check
+ if( country_p == NULL )
+ {
+ printf("wifi_on parameter error\r\n");
+ return -1;
+ }
+
+ // Get buffer for response payloadfrom MemoryPool
+ tagMEMPOOL_BLOCK_T *payload_buf = gMEMPOOL_PAYLOAD.alloc();
+ if( payload_buf == NULL )
+ {
+ printf("wifi_on payload_buf NULL\r\n");
+ return -1;
+ }
+
+ tagWIFI_ON_REQ_T req;
+ unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX];
+ unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+ unsigned short payload_len;
+ unsigned int command_len;
+ int ret;
+
+ // Make request
+ req.cmd_sid = UART_CMD_SID_WIFI_ON_REQ;
+ req.seq = mUartRequestSeq++;
+ memcpy( req.country, country_p, COUNTRYC_CODE_LENTH );
+
+ // Make command payload
+ payload_len = C_YD_UartMsg::makePayload( sizeof(tagWIFI_ON_REQ_T), (unsigned char *)&req, payload_array );
+ // Make all command request
+ command_len = C_YD_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array );
+
+ // Set data for response
+ mUartCommand.setCommandID( UART_CMD_ID_WIFI );
+ mUartCommand.setCommandSID( req.cmd_sid );
+ mUartCommand.setResponseBuf( payload_buf->buf );
+
+ // Send uart command request
+ sendUart( command_len, command_array );
+
+ // Wait UART response
+ ret = mUartCommand.wait();
+ if( ret != 0 )
+ {
+ printf( "wifi_on failed\r\n" );
+ gMEMPOOL_PAYLOAD.free( payload_buf );
+ return -1;
+ }
+
+ if( mUartCommand.getCommandStatus() != 0 )
+ {
+ printf("wifi_on status:%02x\r\n", mUartCommand.getCommandStatus());
+ ret = -1;
+ }
+ gMEMPOOL_PAYLOAD.free( payload_buf );
+
+ return ret;
+}
+
+int C_YDwifiInterface::wifi_off()
+{
+ // Get buffer for response payloadfrom MemoryPool
+ tagMEMPOOL_BLOCK_T *payload_buf = gMEMPOOL_PAYLOAD.alloc();
+ if( payload_buf == NULL )
+ {
+ printf("wifi_off payload_buf NULL\r\n");
+ return -1;
+ }
+
+ tagWIFI_OFF_REQ_T req;
+ unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX];
+ unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+ unsigned short payload_len;
+ unsigned int command_len;
+ int ret;
+
+ // Make request
+ req.cmd_sid = UART_CMD_SID_WIFI_OFF_REQ;
+ req.seq = mUartRequestSeq++;
+
+ // Make command payload
+ payload_len = C_YD_UartMsg::makePayload( sizeof(tagWIFI_OFF_REQ_T), (unsigned char *)&req, payload_array );
+ // Make all command request
+ command_len = C_YD_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array );
+
+ // Set data for response
+ mUartCommand.setCommandID( UART_CMD_ID_WIFI );
+ mUartCommand.setCommandSID( req.cmd_sid );
+ mUartCommand.setResponseBuf( payload_buf->buf );
+
+ // Send uart command request
+ sendUart( command_len, command_array );
+
+ // Wait UART response
+ ret = mUartCommand.wait();
+ if( ret != 0 )
+ {
+ printf( "wifi_off failed\r\n" );
+ gMEMPOOL_PAYLOAD.free( payload_buf );
+ return -1;
+ }
+
+ if( mUartCommand.getCommandStatus() != 0 )
+ {
+ printf("wifi_off status:%02x\r\n", mUartCommand.getCommandStatus());
+ ret = -1;
+ }
+ gMEMPOOL_PAYLOAD.free( payload_buf );
+
+ return ret;
+}
+
+int C_YDwifiInterface::getRssi( signed char *rssi_p )
+{
+ if( rssi_p == NULL )
+ {
+ printf("getRssi parameter error\r\n");
+ return -1;
+ }
+
+ // Get buffer for response payload from MemoryPool
+ tagMEMPOOL_BLOCK_T *payload_buf = gMEMPOOL_PAYLOAD.alloc();
+ if( payload_buf == NULL )
+ {
+ printf("getRssi payload_buf NULL\r\n");
+ return -1;
+ }
+
+ tagWIFI_GET_STA_RSSI_REQ_T req;
+ unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX];
+ unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+ unsigned short payload_len;
+ unsigned int command_len;
+ int ret;
+
+ // Make request
+ req.cmd_sid = UART_CMD_SID_WIFI_GET_STA_RSSI_REQ;
+ req.seq = mUartRequestSeq++;
+
+ // Make command payload
+ payload_len = C_YD_UartMsg::makePayload( sizeof(tagWIFI_GET_STA_RSSI_REQ_T), (unsigned char *)&req, payload_array );
+ // Make all command request
+ command_len = C_YD_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array );
+
+ // Set data for response
+ mUartCommand.setCommandID( UART_CMD_ID_WIFI );
+ mUartCommand.setCommandSID( req.cmd_sid );
+ mUartCommand.setResponseBuf( payload_buf->buf );
+
+ // Send uart command request
+ sendUart( command_len, command_array );
+
+ // Wait UART response
+ ret = mUartCommand.wait();
+ if( ret != 0 )
+ {
+ printf( "getRssi failed\r\n" );
+ gMEMPOOL_PAYLOAD.free( payload_buf );
+ return -1;
+ }
+
+ *rssi_p = (signed char)payload_buf->buf[2];
+
+ gMEMPOOL_PAYLOAD.free( payload_buf );
return 0;
-}
\ No newline at end of file
+}
--- a/YDwifiInterface.h Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifiInterface.h Thu Mar 13 08:44:33 2014 +0000
@@ -67,6 +67,29 @@
int scan( const char *ssid_p, unsigned char *bssid_p
,void (*result_handler_p)(tagSCAN_RESULT_T *scan_result) );
+ /** Wi-Fi Turn on
+ @param country_p Pointer of country code.
+ @return 0 on success, a negative number on failure
+ @note This function is blocked until a returns.
+ When you use it by UI thread, be careful.
+ */
+ int wifi_on( const char *country_p );
+
+ /** Wi-Fi Turn off
+ @return 0 on success, a negative number on failure
+ @note This function is blocked until a returns.
+ When you use it by UI thread, be careful.
+ */
+ int wifi_off();
+
+ /** Get Wi-Fi RSSI
+ @param rssi_p Pointer of RSSI.[output]
+ @return 0 on success, a negative number on failure
+ @note This function is blocked until a returns.
+ When you use it by UI thread, be careful.
+ */
+ int getRssi( signed char *rssi_p );
+
#if 0
/** Get the MAC address of your Ethernet interface
* \return a pointer to a string containing the MAC address
ban4jp -
