Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: HTTPClient_WiFi_HelloWorld_src
Fork of SNICInterface by
Diff: SNIC_WifiInterface.cpp
- Revision:
- 51:69a9cf901d54
- Parent:
- 43:d80bbb12ffe6
- Child:
- 53:b53ccb9989c4
diff -r cd632a13e4dc -r 69a9cf901d54 SNIC_WifiInterface.cpp
--- a/SNIC_WifiInterface.cpp Tue Mar 31 02:53:44 2015 +0000
+++ b/SNIC_WifiInterface.cpp Tue Mar 31 02:59:47 2015 +0000
@@ -21,6 +21,7 @@
#define UART_CONNECT_BUF_SIZE 512
unsigned char gCONNECT_BUF[UART_CONNECT_BUF_SIZE];
+static char ip_addr[17] = "\0";
C_SNIC_WifiInterface::C_SNIC_WifiInterface( PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud)
{
@@ -662,3 +663,56 @@
snic_core_p->freeCmdBuf( payload_buf_p );
return ret;
}
+
+char* C_SNIC_WifiInterface::getIPAddress() {
+ C_SNIC_Core *snic_core_p = C_SNIC_Core::getInstance();
+ C_SNIC_UartCommandManager *uartCmdMgr_p = snic_core_p->getUartCommand();
+
+ snic_core_p->lockAPI();
+ // Get local ip address.
+ // Get buffer for response payload from MemoryPool
+ tagMEMPOOL_BLOCK_T *payload_buf_p = snic_core_p->allocCmdBuf();
+ if( payload_buf_p == NULL )
+ {
+ DEBUG_PRINT("getIPAddress payload_buf_p NULL\r\n");
+ snic_core_p->unlockAPI();
+ return 0;
+ }
+
+ C_SNIC_Core::tagSNIC_GET_DHCP_INFO_REQ_T req;
+ // Make request
+ req.cmd_sid = UART_CMD_SID_SNIC_GET_DHCP_INFO_REQ;
+ req.seq = mUartRequestSeq++;
+ req.interface = 0;
+
+ unsigned char *command_array_p = snic_core_p->getCommandBuf();
+ unsigned int command_len;
+ // Preparation of command
+ command_len = snic_core_p->preparationSendCommand( UART_CMD_ID_SNIC, req.cmd_sid, (unsigned char *)&req
+ , sizeof(C_SNIC_Core::tagSNIC_GET_DHCP_INFO_REQ_T), payload_buf_p->buf, command_array_p );
+ // Send uart command request
+ snic_core_p->sendUart( command_len, command_array_p );
+ // Wait UART response
+ int ret = uartCmdMgr_p->wait();
+ if( ret != 0 )
+ {
+ DEBUG_PRINT( "getIPAddress failed\r\n" );
+ snic_core_p->freeCmdBuf( payload_buf_p );
+ snic_core_p->unlockAPI();
+ return 0;
+ }
+
+ if( uartCmdMgr_p->getCommandStatus() != UART_CMD_RES_SNIC_SUCCESS )
+ {
+ snic_core_p->freeCmdBuf( payload_buf_p );
+ snic_core_p->unlockAPI();
+ return 0;
+ }
+
+ snic_core_p->freeCmdBuf( payload_buf_p );
+ snic_core_p->unlockAPI();
+
+ sprintf(ip_addr, "%d.%d.%d.%d\0", payload_buf_p->buf[9], payload_buf_p->buf[10], payload_buf_p->buf[11], payload_buf_p->buf[12]);
+
+ return ip_addr;
+}
