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:
- 31:15c22824cc46
- Parent:
- 29:6a0ba999597d
- Child:
- 36:f33fcf5975ab
--- a/SNIC_WifiInterface.cpp Tue May 27 01:33:04 2014 +0000
+++ b/SNIC_WifiInterface.cpp Thu May 29 03:23:21 2014 +0000
@@ -559,3 +559,87 @@
snic_core_p->freeCmdBuf( payload_buf );
return 0;
}
+
+int C_SNIC_WifiInterface::setIPConfig( bool is_DHCP
+ , const char *ip_p, const char *mask_p, const char *gateway_p )
+{
+ // Parameter check
+ if( is_DHCP == false )
+ {
+ if( (ip_p == NULL) || (mask_p == NULL) ||(gateway_p == NULL) )
+ {
+ printf("setIPConfig parameter error\r\n");
+ return -1;
+ }
+ }
+
+ C_SNIC_Core *snic_core_p = C_SNIC_Core::getInstance();
+ C_SNIC_UartCommandManager *uartCmdMgr_p = snic_core_p->getUartCommand();
+
+ // Get buffer for response payload from MemoryPool
+ tagMEMPOOL_BLOCK_T *payload_buf = snic_core_p->allocCmdBuf();
+ if( payload_buf == NULL )
+ {
+ printf("setIPConfig payload_buf NULL\r\n");
+ return -1;
+ }
+
+ unsigned char *command_array = snic_core_p->getCommandBuf();
+ unsigned int command_len;
+ if( is_DHCP == true )
+ {
+ C_SNIC_Core::tagSNIC_IP_CONFIG_REQ_DHCP_T req;
+ // Make request
+ req.cmd_sid = UART_CMD_SID_SNIC_IP_CONFIG_REQ;
+ req.seq = mUartRequestSeq++;
+ req.interface = 0;
+ req.dhcp = 1;
+
+ // Preparation of command
+ command_len = snic_core_p->preparationSendCommand( UART_CMD_ID_SNIC, req.cmd_sid, (unsigned char *)&req
+ , sizeof(C_SNIC_Core::tagSNIC_IP_CONFIG_REQ_DHCP_T), payload_buf->buf, command_array );
+ }
+ else
+ {
+ C_SNIC_Core::tagSNIC_IP_CONFIG_REQ_STATIC_T req;
+ // Make request
+ req.cmd_sid = UART_CMD_SID_SNIC_IP_CONFIG_REQ;
+ req.seq = mUartRequestSeq++;
+ req.interface = 0;
+ req.dhcp = 0;
+
+ // Set paramter of address
+ int addr_temp;
+ addr_temp = C_SNIC_UartMsgUtil::addrToInteger( ip_p );
+ C_SNIC_UartMsgUtil::convertIntToByteAdday( addr_temp, (char *)req.ip_addr );
+ addr_temp = C_SNIC_UartMsgUtil::addrToInteger( mask_p );
+ C_SNIC_UartMsgUtil::convertIntToByteAdday( addr_temp, (char *)req.netmask );
+ addr_temp = C_SNIC_UartMsgUtil::addrToInteger( gateway_p );
+ C_SNIC_UartMsgUtil::convertIntToByteAdday( addr_temp, (char *)req.gateway );
+
+ // Preparation of command
+ command_len = snic_core_p->preparationSendCommand( UART_CMD_ID_SNIC, req.cmd_sid, (unsigned char *)&req
+ , sizeof(C_SNIC_Core::tagSNIC_IP_CONFIG_REQ_STATIC_T), payload_buf->buf, command_array );
+ }
+ // Send uart command request
+ snic_core_p->sendUart( command_len, command_array );
+
+ int ret;
+ // Wait UART response
+ ret = uartCmdMgr_p->wait();
+ if( ret != 0 )
+ {
+ printf( "setIPConfig failed\r\n" );
+ snic_core_p->freeCmdBuf( payload_buf );
+ return -1;
+ }
+
+ if( uartCmdMgr_p->getCommandStatus() != 0 )
+ {
+ printf("setIPConfig status:%02x\r\n", uartCmdMgr_p->getCommandStatus());
+ ret = -1;
+ }
+
+ snic_core_p->freeCmdBuf( payload_buf );
+ return 0;
+}
