example for SAKURA Internet IoT Beta Communication Module

Dependencies:   SakuraIO mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SakuraIO.h"
00003 
00004 #if defined(TARGET_LPC176X)
00005 DigitalOut myled(LED1);
00006 SakuraIO_I2C sakuraio(p28, p27); // sda, scl (mbed LPC1768)
00007 /*
00008   or
00009 I2C i2c(p28, p27); // sda, scl
00010 SakuraIO_I2C sakuraio(i2c); // i2c
00011   or
00012 SakuraIO_SPI sakuraio(p5, p6, p7, p8); // mosi, miso, sclk, cs
00013   or
00014 SPI spi(p5, p6, p7); // mosi, miso, sclk
00015 SakuraIO_SPI sakuraio(spi, p8); // spi, cs
00016 */
00017 #elif defined(TARGET_KL25Z)
00018 DigitalOut myled(LED2);
00019 SakuraIO_I2C sakuraio(PTE0, PTE1); // sda, scl (FRDM KL25Z)
00020 /*
00021   or
00022 SakuraIO_SPI sakuraio(PTD2, PTD3, PTD1, PTD0); // mosi, miso, sclk, cs
00023 */
00024 #endif
00025 
00026 Serial pc(USBTX, USBRX);
00027 
00028 int main () {
00029   int counter = 0;
00030 
00031   pc.baud(115200);
00032   pc.printf("Waiting to come online");
00033   for (;;) {
00034     if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
00035     pc.printf(".");
00036     myled = !myled;
00037     wait(1);
00038   }
00039   pc.printf("\r\n");
00040   myled = 1;
00041 
00042   for (;;) {
00043     counter ++;
00044     pc.printf("%d\r\n", counter);
00045 
00046     uint8_t request[33] = {};
00047     uint8_t response[33] = {};
00048 
00049     // Echoback
00050     request[0] = counter;
00051     sakuraio.echoback(1, request, response);
00052     pc.printf("%d -> %d\r\n", request[0], response[0]);
00053 
00054     // Unixtime
00055     uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime() / 1000UL);
00056     pc.printf("Unixtime %d\r\n", unixtime);
00057 
00058     // ADC
00059     uint16_t adc;
00060     adc = sakuraio.getADC(0);
00061     pc.printf("ADC0 %d\r\n", adc);
00062     adc = sakuraio.getADC(1);
00063     pc.printf("ADC1 %d\r\n", adc);
00064 
00065     // ProductID
00066     uint16_t pid = sakuraio.getProductID();
00067     pc.printf("PID %d\r\n", pid);
00068 
00069     // UniqueID
00070     sakuraio.getUniqueID((char *)response);
00071     pc.printf("UID %s\r\n", (char *)response);
00072 
00073     // Version
00074     sakuraio.getFirmwareVersion((char *)response);
00075     pc.printf("Ver %s\r\n", (char *)response);
00076 
00077     // Connection Status
00078     uint8_t connectionStatus = sakuraio.getConnectionStatus();
00079     pc.printf("Status %d\r\n", connectionStatus);
00080 
00081     //getSignalQuarity
00082     uint8_t signalQuarity = sakuraio.getSignalQuarity();
00083     pc.printf("Quality %d\r\n", signalQuarity);
00084 
00085 
00086     // Tx Queue
00087     uint8_t ret;
00088     ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter);
00089     pc.printf("Enqueue %d\r\n", ret);
00090 
00091     uint8_t avail;
00092     uint8_t queued;
00093     sakuraio.getTxQueueLength(&avail, &queued);
00094     pc.printf("Tx Available=%d ", avail);
00095     pc.printf("Queued=%d\r\n", queued);
00096 
00097     if (queued >= 30){
00098       ret = sakuraio.clearTx();
00099       pc.printf("Clear %d\r\n", ret);
00100     } else if (queued >= 5){
00101       ret = sakuraio.send();
00102       pc.printf("Send %d\r\n", ret);
00103     }
00104 
00105     // Rx Queue
00106     sakuraio.getRxQueueLength(&avail, &queued);
00107     pc.printf("Rx Available=%d ", avail);
00108     pc.printf("Queued=%d\r\n", queued);
00109 
00110     for (uint8_t i = 0; i < queued; i ++) {
00111       uint8_t channel;
00112       uint8_t type;
00113       uint8_t values[8];
00114       int64_t offset;
00115       ret = sakuraio.dequeueRx(&channel, &type, values, &offset);
00116       pc.printf("Dequeue %d", ret);
00117       if (ret == 0x01) {
00118         pc.printf(" ch=%d", channel);
00119         pc.printf(" type=%d", type);
00120         pc.printf(" values=[");
00121         for (uint8_t b = 0; b < 7; b ++) {
00122           pc.printf("%d ", values[b]);
00123         }
00124         pc.printf("%d] offset=%d\r\n", values[7], offset);
00125       } else {
00126         pc.printf(" ERROR\r\n");
00127       }
00128     }
00129 
00130     wait(1);
00131   }
00132 }