example for SAKURA Internet IoT Beta Communication Module

Dependencies:   SakuraIO mbed

Committer:
sakurafan
Date:
Mon Nov 14 00:51:56 2016 +0000
Revision:
0:7b577f301257
Child:
1:d00e4ddb4c38
1st build;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakurafan 0:7b577f301257 1 #include "mbed.h"
sakurafan 0:7b577f301257 2 #include "SakuraIO.h"
sakurafan 0:7b577f301257 3
sakurafan 0:7b577f301257 4 #if defined(TARGET_LPC176X)
sakurafan 0:7b577f301257 5 SakuraIO_I2C sakuraio(p28, p27); // sda, scl (mbed LPC1768)
sakurafan 0:7b577f301257 6 /*
sakurafan 0:7b577f301257 7 or
sakurafan 0:7b577f301257 8 I2C i2c(p28, p27); // sda, scl
sakurafan 0:7b577f301257 9 SakuraIO_I2C sakuraio(i2c); // i2c
sakurafan 0:7b577f301257 10 or
sakurafan 0:7b577f301257 11 SakuraIO_SPI sakuraio(p5, p6, p7, p8); // mosi, miso, sclk, cs
sakurafan 0:7b577f301257 12 or
sakurafan 0:7b577f301257 13 SPI spi(p5, p6, p7); // mosi, miso, sclk
sakurafan 0:7b577f301257 14 SakuraIO_SPI sakuraio(spi, p8); // spi, cs
sakurafan 0:7b577f301257 15 */
sakurafan 0:7b577f301257 16 #elif defined(TARGET_KL25Z)
sakurafan 0:7b577f301257 17 SakuraIO_I2C sakuraio(PTE0, PTE1); // sda, scl (FRDM KL25Z)
sakurafan 0:7b577f301257 18 #endif
sakurafan 0:7b577f301257 19
sakurafan 0:7b577f301257 20 DigitalOut myled(LED1);
sakurafan 0:7b577f301257 21 Serial pc(USBTX, USBRX);
sakurafan 0:7b577f301257 22
sakurafan 0:7b577f301257 23 int main () {
sakurafan 0:7b577f301257 24 int counter = 0;
sakurafan 0:7b577f301257 25
sakurafan 0:7b577f301257 26 pc.baud(115200);
sakurafan 0:7b577f301257 27 pc.printf("Waiting to come online");
sakurafan 0:7b577f301257 28 for (;;) {
sakurafan 0:7b577f301257 29 if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
sakurafan 0:7b577f301257 30 pc.printf(".");
sakurafan 0:7b577f301257 31 myled = !myled;
sakurafan 0:7b577f301257 32 wait(1);
sakurafan 0:7b577f301257 33 }
sakurafan 0:7b577f301257 34 pc.printf("\r\n");
sakurafan 0:7b577f301257 35 myled = 1;
sakurafan 0:7b577f301257 36
sakurafan 0:7b577f301257 37 for (;;) {
sakurafan 0:7b577f301257 38 counter ++;
sakurafan 0:7b577f301257 39 pc.printf("%d\r\n", counter);
sakurafan 0:7b577f301257 40
sakurafan 0:7b577f301257 41 uint8_t request[33] = {};
sakurafan 0:7b577f301257 42 uint8_t response[33] = {};
sakurafan 0:7b577f301257 43
sakurafan 0:7b577f301257 44 // Echoback
sakurafan 0:7b577f301257 45 request[0] = counter;
sakurafan 0:7b577f301257 46 sakuraio.echoback(1, request, response);
sakurafan 0:7b577f301257 47 pc.printf("%d -> %d\r\n", request[0], response[0]);
sakurafan 0:7b577f301257 48
sakurafan 0:7b577f301257 49 // Unixtime
sakurafan 0:7b577f301257 50 uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime() / 1000UL);
sakurafan 0:7b577f301257 51 pc.printf("Unixtime %d\r\n", unixtime);
sakurafan 0:7b577f301257 52
sakurafan 0:7b577f301257 53 // ADC
sakurafan 0:7b577f301257 54 uint16_t adc;
sakurafan 0:7b577f301257 55 adc = sakuraio.getADC(0);
sakurafan 0:7b577f301257 56 pc.printf("ADC0 %d\r\n", adc);
sakurafan 0:7b577f301257 57 adc = sakuraio.getADC(1);
sakurafan 0:7b577f301257 58 pc.printf("ADC1 %d\r\n", adc);
sakurafan 0:7b577f301257 59
sakurafan 0:7b577f301257 60 // ProductID
sakurafan 0:7b577f301257 61 uint16_t pid = sakuraio.getProductID();
sakurafan 0:7b577f301257 62 pc.printf("PID %d\r\n", pid);
sakurafan 0:7b577f301257 63
sakurafan 0:7b577f301257 64 // UniqueID
sakurafan 0:7b577f301257 65 sakuraio.getUniqueID((char *)response);
sakurafan 0:7b577f301257 66 pc.printf("UID %s\r\n", (char *)response);
sakurafan 0:7b577f301257 67
sakurafan 0:7b577f301257 68 // Version
sakurafan 0:7b577f301257 69 sakuraio.getFirmwareVersion((char *)response);
sakurafan 0:7b577f301257 70 pc.printf("Ver %s\r\n", (char *)response);
sakurafan 0:7b577f301257 71
sakurafan 0:7b577f301257 72 // Connection Status
sakurafan 0:7b577f301257 73 uint8_t connectionStatus = sakuraio.getConnectionStatus();
sakurafan 0:7b577f301257 74 pc.printf("Status %d\r\n", connectionStatus);
sakurafan 0:7b577f301257 75
sakurafan 0:7b577f301257 76 //getSignalQuarity
sakurafan 0:7b577f301257 77 uint8_t signalQuarity = sakuraio.getSignalQuarity();
sakurafan 0:7b577f301257 78 pc.printf("Quality %d\r\n", signalQuarity);
sakurafan 0:7b577f301257 79
sakurafan 0:7b577f301257 80
sakurafan 0:7b577f301257 81 // Tx Queue
sakurafan 0:7b577f301257 82 uint8_t ret;
sakurafan 0:7b577f301257 83 ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter);
sakurafan 0:7b577f301257 84 pc.printf("Enqueue %d\r\n", ret);
sakurafan 0:7b577f301257 85
sakurafan 0:7b577f301257 86 uint8_t avail;
sakurafan 0:7b577f301257 87 uint8_t queued;
sakurafan 0:7b577f301257 88 sakuraio.getTxQueueLength(&avail, &queued);
sakurafan 0:7b577f301257 89 pc.printf("Tx Available=%d ", avail);
sakurafan 0:7b577f301257 90 pc.printf("Queued=%d\r\n", queued);
sakurafan 0:7b577f301257 91
sakurafan 0:7b577f301257 92 if (queued >= 30){
sakurafan 0:7b577f301257 93 ret = sakuraio.clearTx();
sakurafan 0:7b577f301257 94 pc.printf("Clear %d\r\n", ret);
sakurafan 0:7b577f301257 95 } else if (queued >= 5){
sakurafan 0:7b577f301257 96 ret = sakuraio.send();
sakurafan 0:7b577f301257 97 pc.printf("Send %d\r\n", ret);
sakurafan 0:7b577f301257 98 }
sakurafan 0:7b577f301257 99
sakurafan 0:7b577f301257 100 // Rx Queue
sakurafan 0:7b577f301257 101 sakuraio.getRxQueueLength(&avail, &queued);
sakurafan 0:7b577f301257 102 pc.printf("Rx Available=%d ", avail);
sakurafan 0:7b577f301257 103 pc.printf("Queued=%d\r\n", queued);
sakurafan 0:7b577f301257 104
sakurafan 0:7b577f301257 105 for (uint8_t i = 0; i < queued; i ++) {
sakurafan 0:7b577f301257 106 uint8_t channel;
sakurafan 0:7b577f301257 107 uint8_t type;
sakurafan 0:7b577f301257 108 uint8_t values[8];
sakurafan 0:7b577f301257 109 int64_t offset;
sakurafan 0:7b577f301257 110 ret = sakuraio.dequeueRx(&channel, &type, values, &offset);
sakurafan 0:7b577f301257 111 pc.printf("Dequeue %d", ret);
sakurafan 0:7b577f301257 112 if (ret == 0x01) {
sakurafan 0:7b577f301257 113 pc.printf(" ch=%d", channel);
sakurafan 0:7b577f301257 114 pc.printf(" type=%d", type);
sakurafan 0:7b577f301257 115 pc.printf(" values=[");
sakurafan 0:7b577f301257 116 for (uint8_t b = 0; b < 7; b ++) {
sakurafan 0:7b577f301257 117 pc.printf("%d ", values[b]);
sakurafan 0:7b577f301257 118 }
sakurafan 0:7b577f301257 119 pc.printf("%d] offset=%d\r\n", values[7], offset);
sakurafan 0:7b577f301257 120 } else {
sakurafan 0:7b577f301257 121 pc.printf(" ERROR\r\n");
sakurafan 0:7b577f301257 122 }
sakurafan 0:7b577f301257 123 }
sakurafan 0:7b577f301257 124
sakurafan 0:7b577f301257 125 wait(1);
sakurafan 0:7b577f301257 126 }
sakurafan 0:7b577f301257 127 }