example for SAKURA Internet IoT Beta Communication Module

Dependencies:   SakuraIO mbed

Revision:
0:7b577f301257
Child:
1:d00e4ddb4c38
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Nov 14 00:51:56 2016 +0000
@@ -0,0 +1,127 @@
+#include "mbed.h"
+#include "SakuraIO.h"
+
+#if defined(TARGET_LPC176X)
+SakuraIO_I2C sakuraio(p28, p27); // sda, scl (mbed LPC1768)
+/*
+  or
+I2C i2c(p28, p27); // sda, scl
+SakuraIO_I2C sakuraio(i2c); // i2c
+  or
+SakuraIO_SPI sakuraio(p5, p6, p7, p8); // mosi, miso, sclk, cs
+  or
+SPI spi(p5, p6, p7); // mosi, miso, sclk
+SakuraIO_SPI sakuraio(spi, p8); // spi, cs
+*/
+#elif defined(TARGET_KL25Z)
+SakuraIO_I2C sakuraio(PTE0, PTE1); // sda, scl (FRDM KL25Z)
+#endif
+
+DigitalOut myled(LED1);
+Serial pc(USBTX, USBRX);
+
+int main () {
+  int counter = 0;
+
+  pc.baud(115200);
+  pc.printf("Waiting to come online");
+  for (;;) {
+    if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
+    pc.printf(".");
+    myled = !myled;
+    wait(1);
+  }
+  pc.printf("\r\n");
+  myled = 1;
+
+  for (;;) {
+    counter ++;
+    pc.printf("%d\r\n", counter);
+
+    uint8_t request[33] = {};
+    uint8_t response[33] = {};
+
+    // Echoback
+    request[0] = counter;
+    sakuraio.echoback(1, request, response);
+    pc.printf("%d -> %d\r\n", request[0], response[0]);
+
+    // Unixtime
+    uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime() / 1000UL);
+    pc.printf("Unixtime %d\r\n", unixtime);
+
+    // ADC
+    uint16_t adc;
+    adc = sakuraio.getADC(0);
+    pc.printf("ADC0 %d\r\n", adc);
+    adc = sakuraio.getADC(1);
+    pc.printf("ADC1 %d\r\n", adc);
+
+    // ProductID
+    uint16_t pid = sakuraio.getProductID();
+    pc.printf("PID %d\r\n", pid);
+
+    // UniqueID
+    sakuraio.getUniqueID((char *)response);
+    pc.printf("UID %s\r\n", (char *)response);
+
+    // Version
+    sakuraio.getFirmwareVersion((char *)response);
+    pc.printf("Ver %s\r\n", (char *)response);
+
+    // Connection Status
+    uint8_t connectionStatus = sakuraio.getConnectionStatus();
+    pc.printf("Status %d\r\n", connectionStatus);
+
+    //getSignalQuarity
+    uint8_t signalQuarity = sakuraio.getSignalQuarity();
+    pc.printf("Quality %d\r\n", signalQuarity);
+
+
+    // Tx Queue
+    uint8_t ret;
+    ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter);
+    pc.printf("Enqueue %d\r\n", ret);
+
+    uint8_t avail;
+    uint8_t queued;
+    sakuraio.getTxQueueLength(&avail, &queued);
+    pc.printf("Tx Available=%d ", avail);
+    pc.printf("Queued=%d\r\n", queued);
+
+    if (queued >= 30){
+      ret = sakuraio.clearTx();
+      pc.printf("Clear %d\r\n", ret);
+    } else if (queued >= 5){
+      ret = sakuraio.send();
+      pc.printf("Send %d\r\n", ret);
+    }
+
+    // Rx Queue
+    sakuraio.getRxQueueLength(&avail, &queued);
+    pc.printf("Rx Available=%d ", avail);
+    pc.printf("Queued=%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 %d", ret);
+      if (ret == 0x01) {
+        pc.printf(" ch=%d", channel);
+        pc.printf(" type=%d", type);
+        pc.printf(" values=[");
+        for (uint8_t b = 0; b < 7; b ++) {
+          pc.printf("%d ", values[b]);
+        }
+        pc.printf("%d] offset=%d\r\n", values[7], offset);
+      } else {
+        pc.printf(" ERROR\r\n");
+      }
+    }
+
+    wait(1);
+  }
+}