WIZnet-IoTShield-AMM592

Revision:
1:8b209e861bb1
Parent:
0:5cd6077e0a8e
Child:
2:957b12467039
--- a/main.cpp	Tue Mar 19 00:25:29 2019 +0000
+++ b/main.cpp	Wed Mar 20 05:32:43 2019 +0000
@@ -55,9 +55,9 @@
 // Cat.M1
 #define MBED_CONF_IOTSHIELD_CATM1_TX                D8
 #define MBED_CONF_IOTSHIELD_CATM1_RX                D2
-#define MBED_CONF_IOTSHIELD_CATM1_RESET             D6
+#define MBED_CONF_IOTSHIELD_CATM1_RESET             D7
 #define MBED_CONF_IOTSHIELD_CATM1_PWRKEY            D9
-#define MBED_CONF_IOTSHIELD_CATM1_WAKE              NC
+
 // Sensors
 #define MBED_CONF_IOTSHIELD_SENSOR_CDS              A0
 #define MBED_CONF_IOTSHIELD_SENSOR_TEMP             A1
@@ -77,6 +77,7 @@
 // Functions: PDP context
 int8_t setContextActivate_BG96(void);   // Activate a PDP Context
 int8_t setContextDeactivate_BG96(void); // Deactivate a PDP Context
+int8_t getIpAddress_BG96(char * ipstr);
 
 // Functions: Ping test
 void pingToHost_BG96(char * host, int timeout, int pingnum);
@@ -87,6 +88,8 @@
 UARTSerial *_serial;        // Cat.M1 module    
 ATCmdParser *_parser;
 
+DigitalOut _RESET_BG96(MBED_CONF_IOTSHIELD_CATM1_RESET);
+DigitalOut _PWRKEY_BG96(MBED_CONF_IOTSHIELD_CATM1_PWRKEY);
 
 void serialPcInit(void)
 {
@@ -117,35 +120,24 @@
                         BG96_PARSER_DEBUG);
 }
 
-void printPingToHost_BG96(char * host, int timeout, int pingnum)
-{   
-    int i;
-    char resp_str[50] = {0, };
-    
-    if((timeout < 1) || (timeout > 255)) {
-        devlog("Ping timeout range is 1-255, and the default value is 4 (unit: sec)\r\n");
-        return;
-    }
+void catm1DeviceReset_BG96(void)
+{
+    _RESET_BG96 = 1;
+    _PWRKEY_BG96 = 1;
+    wait_ms(300);
     
-    if((pingnum < 1) || (pingnum > 10)) {
-        devlog("The maximum number of sending Ping request range is 1-10, and the default value is 4\r\n");
-        return;
-    }
-       
-    _parser->set_timeout((1000 * timeout) + 2000);
+    _RESET_BG96 = 0;
+    _PWRKEY_BG96 = 0;
+    wait_ms(400);
     
-    if(_parser->send("AT+QPING=%d,\"%s\",%d,%d", 1, host, timeout, pingnum) && _parser->recv("OK")) {        
-        for(i = 0; i < (pingnum); i++) {            
-            _parser->recv("+QPING: %s\n", resp_str);
-            devlog("%s: %s\r\n", host, resp_str);
-        }
-        
-    }
-    
-    _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
-    _parser->flush();
+    _RESET_BG96 = 1;    
+    wait_ms(1000);
 }
 
+// ----------------------------------------------------------------
+// Main routine
+// ----------------------------------------------------------------
+
 int main()
 {
     serialPcInit();    
@@ -153,9 +145,11 @@
     
     myprintf("Waiting for Cat.M1 Module Ready...\r\n");
     
-    // Todo: BG96 Hardware Init (hardware reset & pwrkey act)
+    catm1DeviceReset_BG96();
     
     waitCatM1Ready();
+    
+    wait_ms(5000);
             
     myprintf("System Init Complete\r\n");
         
@@ -190,6 +184,10 @@
     setContextDeactivate_BG96(); 
 }
 
+// ----------------------------------------------------------------
+// Functions: Cat.M1 Status
+// ----------------------------------------------------------------
+
 void waitCatM1Ready(void)
 {
     while(1) 
@@ -286,8 +284,8 @@
             return RET_NOK; // failed
         }
     }    
-    devlog("APN Check Done\r\n");    
-    
+    devlog("APN Check Done\r\n");
+        
     return RET_OK;
 }
 
@@ -313,6 +311,10 @@
     return ret;
 }
 
+// ----------------------------------------------------------------
+// Functions: Cat.M1 DNS
+// ----------------------------------------------------------------
+
 int8_t getIpAddressByName_BG96(const char * name, char * ipstr)
 {
     char buf2[50];
@@ -338,18 +340,9 @@
     return ret;           
 }
 
-int8_t getIpAddress_BG96(char * ipstr) // IPv4 or IPv6
-{
-    int8_t ret = RET_NOK;    
-    int id, state, type; // not used    
-
-    _parser->send("AT+QIACT?");
-    if(_parser->recv("+QIACT: %d,%d,%d,\"%[^\"]\"", &id, &state, &type, ipstr)
-        && _parser->recv("OK")) {        
-        ret = RET_OK;
-    } 
-    return ret;
-}
+// ----------------------------------------------------------------
+// Functions: Cat.M1 PDP context activate / deactivate
+// ----------------------------------------------------------------
 
 int8_t setContextActivate_BG96(void) // Activate a PDP Context
 {
@@ -361,7 +354,7 @@
         ret = RET_OK;
     } else { 
         devlog("PDP Context Activation failed\r\n");        
-    }    
+    }
     return ret;
 }
 
@@ -379,111 +372,49 @@
     return ret;
 }
 
-int8_t sockOpenConnect_BG96(const char * type, const char * addr, int port)
+
+int8_t getIpAddress_BG96(char * ipstr) // IPv4 or IPv6
 {
-    int8_t ret = RET_NOK;  
-    int err = 1;
-    int id = 0;
-    
-    bool done = false;
-    Timer t;
-    
-    _parser->set_timeout(BG96_CONNECT_TIMEOUT);
-    
-    if((strcmp(type, "TCP") != 0) && (strcmp(type, "UDP") != 0)) {        
-        return RET_NOK;
-    }
+    int8_t ret = RET_NOK;    
+    int id, state, type; // not used    
 
-    t.start();
-    
-    _parser->send("AT+QIOPEN=1,%d,\"%s\",\"%s\",%d", id, type, addr, port);
-    do {        
-        done = (_parser->recv("+QIOPEN: %d,%d", &id, &err) && (err == 0));        
-    } while(!done && t.read_ms() < BG96_CONNECT_TIMEOUT);
-
-    if(done) ret = RET_OK;
-
-    _parser->set_timeout(BG96_DEFAULT_TIMEOUT);    
-    _parser->flush();
-    
-    return ret;
-}
-
-int8_t sockClose_BG96(void)
-{
-    int8_t ret = RET_NOK;
-    int id = 0;
-    
-    _parser->set_timeout(BG96_CONNECT_TIMEOUT);
-    
-    if(_parser->send("AT+QICLOSE=%d", id) && _parser->recv("OK")) {
-        ret = RET_OK;        
-    }
-    _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
-    
+    _parser->send("AT+QIACT?");
+    if(_parser->recv("+QIACT: %d,%d,%d,\"%[^\"]\"", &id, &state, &type, ipstr)
+        && _parser->recv("OK")) {        
+        ret = RET_OK;
+    } 
     return ret;
 }
 
-int8_t dataSend_BG96(char * data, int len)
-{
-    int8_t ret = RET_NOK;
-    int id = 0;
-    bool done = false;
+// ----------------------------------------------------------------
+// Functions: Cat.M1 Ping test
+// ----------------------------------------------------------------
+
+void printPingToHost_BG96(char * host, int timeout, int pingnum)
+{   
+    int i;
+    char resp_str[50] = {0, };
+    
+    if((timeout < 1) || (timeout > 255)) {
+        devlog("Ping timeout range is 1-255, and the default value is 4 (unit: sec)\r\n");
+        return;
+    }
     
-    _parser->set_timeout(BG96_SEND_TIMEOUT);
+    if((pingnum < 1) || (pingnum > 10)) {
+        devlog("The maximum number of sending Ping request range is 1-10, and the default value is 4\r\n");
+        return;
+    }
+       
+    _parser->set_timeout((1000 * timeout) + 2000);
     
-    _parser->send("AT+QISEND=%d,%ld", id, len);
-    if( !done && _parser->recv(">") )
-        done = (_parser->write(data, len) <= 0);
-
-    if( !done )
-        done = _parser->recv("SEND OK");    
+    if(_parser->send("AT+QPING=%d,\"%s\",%d,%d", 1, host, timeout, pingnum) && _parser->recv("OK")) {        
+        for(i = 0; i < (pingnum); i++) {            
+            _parser->recv("+QPING: %s\n", resp_str);
+            devlog("%s: %s\r\n", host, resp_str);
+        }
+        
+    }
     
     _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
-    
-    return ret;
-}
-
-int8_t checkDataRecv_BG96(void)
-{
-    int8_t ret = RET_NOK;
-    int id = 0;
-    char cmd[20];
-    
-    bool received = false;
-
-    sprintf(cmd, "+QIURC: \"recv\",%d", id);
-    _parser->set_timeout(1);
-    received = _parser->recv(cmd);
-    _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
-    
-    if(received) ret = RET_OK;    
-    return ret;
+    _parser->flush();
 }
-
-int8_t dataRecv_BG96(char * data, int * len)
-{
-    int8_t ret = RET_NOK;
-    int id = 0;
-    int recvCount = 0;
-    
-    _parser->set_timeout(BG96_RECV_TIMEOUT);   
-     
-    if( _parser->send("AT+QIRD=%d", id) && _parser->recv("+QIRD:%d\r\n",&recvCount) ) {
-        if(recvCount > 0) {
-            _parser->getc();
-            _parser->read(data, recvCount);
-            if(_parser->recv("OK")) {
-                ret = RET_OK;
-            } else {
-                recvCount = 0;
-            }
-        }        
-    }
-    _parser->set_timeout(BG96_DEFAULT_TIMEOUT);    
-    _parser->flush();
-    
-    *len = recvCount;
-        
-    return ret;
-}