MQTT client test with W5200 ethernet shield

Dependents:   IBMIoTClientEthernetExample_W5200

Fork of W5500Interface by W5500-Ethernet-Interface Makers

Revision:
9:dfffa4d6f022
Parent:
4:af0ed4fbca02
Child:
10:713b6d2aaefb
--- a/Socket/Socket.cpp	Mon Oct 06 01:37:10 2014 +0000
+++ b/Socket/Socket.cpp	Wed Oct 15 06:25:21 2014 +0000
@@ -17,7 +17,7 @@
  */
 
 #include "Socket.h"
-
+static uint16_t sock_any_port = SOCK_ANY_PORT_NUM;
 Socket::Socket() : _sock_fd(-1),_blocking(true), _timeout(1500)
 {
     eth = WIZnet_Chip::getInstance();
@@ -46,3 +46,45 @@
 {
     close(); //Don't want to leak
 }
+
+
+int8_t Socket::Socket_macraw(uint8_t sn, uint16_t port, uint8_t flag)
+{
+    //CHECK_SOCKNUM();
+    
+    if((flag & 0x06) != 0) return SOCKERR_SOCKFLAG;
+    
+    eth->close(sn);
+    eth->setSn_MR(sn, (Sn_MR_MACRAW | (flag & 0xF0)));
+    if(!port)
+    {
+       port = sock_any_port++;
+       if(sock_any_port == 0xFFF0) sock_any_port = SOCK_ANY_PORT_NUM;
+    }
+    eth->setSn_PORT(sn,port); 
+    eth->setSn_CR(sn,Sn_CR_OPEN);
+    while(eth->getSn_CR(sn));
+    //sock_io_mode |= ((flag & SF_IO_NONBLOCK) << sn);   
+    //sock_is_sending &= ~(1<<sn);
+    //sock_remained_size[sn] = 0;
+    //sock_pack_info[sn] = 0;
+    while(eth->getSn_SR(sn) == SOCK_CLOSED);
+    return (int8_t)sn;
+}      
+/*
+int8_t Socket::close(uint8_t sn)
+{
+    //CHECK_SOCKNUM();
+    
+    eth->setSn_CR(sn,Sn_CR_CLOSE);
+   // wait to process the command... 
+    while( eth->getSn_CR(sn) );
+    // clear all interrupt of the socket. 
+    eth->setSn_IR(sn, 0xFF);
+    //sock_is_sending &= ~(1<<sn);
+    //sock_remained_size[sn] = 0;
+    //sock_pack_info[sn] = 0;
+    while(eth->getSn_SR(sn) != SOCK_CLOSED);
+    return SOCK_OK;
+}
+*/
\ No newline at end of file