Sample program of SAKURA Internet IoT Communication Module

Dependencies:   SakuraIO mbed

View the Github repository.

Revision:
0:40aec5afc650
Child:
3:6bf66fc3bc57
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Nov 19 12:34:36 2016 +0000
@@ -0,0 +1,141 @@
+#include "mbed.h"
+#include "SakuraIO.h"
+
+Serial pc(USBTX, USBRX);
+DigitalOut myled(LED1);
+
+int main()
+{
+
+
+    SPI spi(p5, p6, p7); // mosi, miso, sclk
+    DigitalOut cs(p8);
+    I2C i2c(p9, p10);        // sda, scl
+    
+    //SakuraIO_SPI sakuraio( spi, cs );
+    SakuraIO_I2C sakuraio(i2c);
+
+
+    pc.printf("Waiting to come online");
+    for(;;) {
+        if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
+        pc.printf(".");
+        wait_ms(1000);
+    }
+    pc.printf("\r\n");
+
+    uint8_t counter = 0;
+
+    while(1) {
+        pc.printf("\r\n%02x\r\n",counter);
+
+        uint8_t request[33] = {};
+        uint8_t response[33] = {};
+
+        // Echoback
+        request[0] = counter;
+        sakuraio.echoback(1, request, response);
+        pc.printf("%02x\r\n",request[0]);
+        pc.printf(" -> ");
+        pc.printf("%02x\r\n",response[0]);
+
+        // Unixtime
+        uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime()/1000UL);
+        pc.printf("Unixtime ");
+        pc.printf("%d\r\n",unixtime);
+
+        // ADC
+        uint16_t adc;
+        adc = sakuraio.getADC(0);
+        pc.printf("ADC0 ");
+        pc.printf("%d\r\n",adc);
+        adc = sakuraio.getADC(1);
+        pc.printf("ADC1 ");
+        pc.printf("%d\r\n",adc);
+
+        // ProductID
+        uint16_t pid = sakuraio.getProductID();
+        pc.printf("PID ");
+        pc.printf("%d\r\n",pid);
+
+        // UniqueID
+        sakuraio.getUniqueID((char *)response);
+        pc.printf("UID ");
+        pc.printf("%s\r\n",response);
+
+        // Version
+        sakuraio.getFirmwareVersion((char *)response);
+        pc.printf("Ver ");
+        pc.printf("%s\r\n",response);
+
+        // Connection Status
+        uint8_t connectionStatus = sakuraio.getConnectionStatus();
+        pc.printf("Status ");
+        pc.printf("%s\r\n",response);
+
+        //getSignalQuarity
+        uint8_t signalQuarity = sakuraio.getSignalQuarity();
+        pc.printf("Quality ");
+        pc.printf("%s\r\n",response);
+
+
+        // Tx Queue
+        uint8_t ret;
+        ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter);
+        pc.printf("Enqueue ");
+        pc.printf("%s\r\n",response);
+
+        uint8_t avail;
+        uint8_t queued;
+        sakuraio.getTxQueueLength(&avail, &queued);
+        pc.printf("Tx Available=");
+        pc.printf("%d",avail);
+        pc.printf(" Queued=");
+        pc.printf("%d\r\n",queued);
+
+        if(queued >= 30) {
+            ret = sakuraio.clearTx();
+            pc.printf("Clear ");
+            pc.printf("%02x\r\n",ret);
+        } else if(queued >= 5) {
+            ret = sakuraio.send();
+            pc.printf("Send ");
+            pc.printf("%02x\r\n",ret);
+        }
+
+        // Rx Queue
+        sakuraio.getRxQueueLength(&avail, &queued);
+        pc.printf("Rx Available=");
+        pc.printf("%d",avail);
+        pc.printf(" Queued=");
+        pc.printf("%d\r\n",queued);
+        
+        for(uint8_t i=0; i<queued; i++) {
+            uint8_t channel;
+            uint8_t type;
+            uint8_t values[8];
+            int64_t offset;
+            ret = sakuraio.dequeueRx(&channel, &type, values, &offset);
+            pc.printf("Dequeue ");
+            pc.printf("%02x",ret);
+            if(ret == 0x01) {
+                pc.printf(" ch=");
+                pc.printf("%d",channel);
+                pc.printf(" type=");
+                pc.printf("%c",type);
+                pc.printf(" values=[");
+                for(uint8_t b=0; b<7; b++) {
+                    pc.printf("%02x ",values[b]);
+                }
+                pc.printf("%02x",values[7]);
+                pc.printf("] offset=");
+                pc.printf("%d\r\n",(int32_t)offset);
+            } else {
+                pc.printf(" ERROR\r\n");
+            }
+        }
+
+        wait_ms(1000);
+    }
+
+}