SNIC UART Interface library: Serial to Wi-Fi library for Murata TypeYD Wi-Fi module. For more information about TypeYD: http://www.murata.co.jp/products/microwave/module/lbwb1zzydz/index.html
Dependents: SNIC-xively-jumpstart-demo SNIC-FluentLogger-example TCPEchoServer murataDemo ... more
Fork of YDwifiInterface by
Diff: Socket/Socket.cpp
- Revision:
- 27:dcc4f34448f0
- Parent:
- 24:987e412ae879
- Child:
- 29:6a0ba999597d
--- a/Socket/Socket.cpp Fri Mar 28 03:03:40 2014 +0000
+++ b/Socket/Socket.cpp Mon Mar 31 02:06:14 2014 +0000
@@ -51,7 +51,50 @@
int Socket::close(bool shutdown)
{
+ 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
+ C_SNIC_Core::tagMEMPOOL_BLOCK_T *payload_buf = snic_core_p->allocCmdBuf();
+ if( payload_buf == NULL )
+ {
+ printf("socket close payload_buf NULL\r\n");
+ return -1;
+ }
+
+ C_SNIC_Core::tagSNIC_CLOSE_SOCKET_REQ_T req;
+ // Make request
+ req.cmd_sid = UART_CMD_SID_SNIC_CLOSE_SOCKET_REQ;
+ req.seq = mUartRequestSeq++;
+ req.socket_id = mSocketID;
+
+ unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+ 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_CLOSE_SOCKET_REQ_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( "socket close failed\r\n" );
+ snic_core_p->freeCmdBuf( payload_buf );
+ return -1;
+ }
+
+ if( uartCmdMgr_p->getCommandStatus() != 0 )
+ {
+ printf("socket close status:%02x\r\n", uartCmdMgr_p->getCommandStatus());
+ snic_core_p->freeCmdBuf( payload_buf );
+ return -1;
+ }
+ snic_core_p->freeCmdBuf( payload_buf );
+
return 0;
}
@@ -124,3 +167,44 @@
return 0;
}
+
+int Socket::addrToInteger( const char *addr_p )
+{
+ if( addr_p == NULL )
+ {
+ printf("addrToInteger parameter error\r\n");
+ return 0;
+ }
+
+ unsigned char ipadr[4];
+ unsigned char temp= 0;
+ int i,j,k;
+
+ /* convert to char[4] */
+ k=0;
+ for(i=0; i<4; i ++)
+ {
+ for(j=0; j<4; j ++)
+ {
+ if((addr_p[k] > 0x2F)&&(addr_p[k] < 0x3A))
+ {
+ temp = (temp * 10) + addr_p[k]-0x30;
+ }
+ else if((addr_p[k] == 0x20)&&(temp == 0))
+ {
+ }
+ else
+ {
+ ipadr[i]=temp;
+ temp = 0;
+ k++;
+ break;
+ }
+ k++;
+ }
+ }
+
+ int addr = ( (ipadr[0]<<24) | (ipadr[1]<<16) | (ipadr[2]<<8) | ipadr[3] );
+
+ return addr;
+}
muRata

Murata TypeYD