sakura fan
/
SakuraIO_Standard
example for SAKURA Internet IoT Beta Communication Module
main.cpp@0:7b577f301257, 2016-11-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |