example for SAKURA Internet IoT Beta Communication Module

Dependencies:   SakuraIO mbed

Committer:
sakurafan
Date:
Fri Nov 18 01:39:09 2016 +0000
Revision:
1:d00e4ddb4c38
Parent:
0:7b577f301257
fix KL25Z spi

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