SAKURA Internet
/
SakuraIO_Standard
Sample program of SAKURA Internet IoT Communication Module
View the Github repository.
main.cpp@13:2befc704b349, 2018-02-25 (annotated)
- Committer:
- chibiegg
- Date:
- Sun Feb 25 04:42:27 2018 +0900
- Revision:
- 13:2befc704b349
- Parent:
- 9:aa5a18093ade
Merge pull request #5 from sakuraio/feat/travisci
Travis CI
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
spiralray | 0:40aec5afc650 | 1 | #include "mbed.h" |
spiralray | 0:40aec5afc650 | 2 | #include "SakuraIO.h" |
spiralray | 0:40aec5afc650 | 3 | |
spiralray | 0:40aec5afc650 | 4 | Serial pc(USBTX, USBRX); |
spiralray | 0:40aec5afc650 | 5 | DigitalOut myled(LED1); |
spiralray | 0:40aec5afc650 | 6 | |
misodengaku |
8:03a21e3d3c4c | 7 | #if defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F303K8) |
misodengaku |
8:03a21e3d3c4c | 8 | // Nucleo-32 series |
misodengaku |
8:03a21e3d3c4c | 9 | SPI spi(A6, A5, A4); // mosi, miso, sclk |
misodengaku |
8:03a21e3d3c4c | 10 | DigitalOut cs(A3); |
misodengaku |
8:03a21e3d3c4c | 11 | I2C i2c(D4, D5); // sda, scl |
misodengaku |
8:03a21e3d3c4c | 12 | #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_L476RG) |
misodengaku |
8:03a21e3d3c4c | 13 | // Nucleo-64 series |
misodengaku |
8:03a21e3d3c4c | 14 | SPI spi(D11, D12, D13); // mosi, miso, sclk |
misodengaku |
8:03a21e3d3c4c | 15 | DigitalOut cs(D10); |
misodengaku |
8:03a21e3d3c4c | 16 | I2C i2c(D14, D15); // sda, scl |
misodengaku |
8:03a21e3d3c4c | 17 | #else |
misodengaku |
8:03a21e3d3c4c | 18 | // LPC1768 or others. |
misodengaku |
8:03a21e3d3c4c | 19 | SPI spi(p5, p6, p7); // mosi, miso, sclk |
misodengaku |
8:03a21e3d3c4c | 20 | DigitalOut cs(p8); |
misodengaku |
8:03a21e3d3c4c | 21 | I2C i2c(p9, p10); // sda, scl |
misodengaku |
8:03a21e3d3c4c | 22 | #endif |
misodengaku |
8:03a21e3d3c4c | 23 | |
spiralray | 0:40aec5afc650 | 24 | int main() |
spiralray | 0:40aec5afc650 | 25 | { |
spiralray | 0:40aec5afc650 | 26 | //SakuraIO_SPI sakuraio( spi, cs ); |
spiralray | 0:40aec5afc650 | 27 | SakuraIO_I2C sakuraio(i2c); |
spiralray | 0:40aec5afc650 | 28 | |
spiralray | 0:40aec5afc650 | 29 | |
spiralray | 0:40aec5afc650 | 30 | pc.printf("Waiting to come online"); |
spiralray | 0:40aec5afc650 | 31 | for(;;) { |
spiralray | 0:40aec5afc650 | 32 | if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break; |
spiralray | 0:40aec5afc650 | 33 | pc.printf("."); |
spiralray | 0:40aec5afc650 | 34 | wait_ms(1000); |
spiralray | 0:40aec5afc650 | 35 | } |
spiralray | 0:40aec5afc650 | 36 | pc.printf("\r\n"); |
spiralray | 0:40aec5afc650 | 37 | |
spiralray | 0:40aec5afc650 | 38 | uint8_t counter = 0; |
spiralray | 0:40aec5afc650 | 39 | |
spiralray | 0:40aec5afc650 | 40 | while(1) { |
chibiegg | 3:6bf66fc3bc57 | 41 | pc.printf("\r\n%02x\r\n", counter); |
spiralray | 0:40aec5afc650 | 42 | |
spiralray | 0:40aec5afc650 | 43 | uint8_t request[33] = {}; |
spiralray | 0:40aec5afc650 | 44 | uint8_t response[33] = {}; |
spiralray | 0:40aec5afc650 | 45 | |
spiralray | 0:40aec5afc650 | 46 | // Echoback |
spiralray | 0:40aec5afc650 | 47 | request[0] = counter; |
spiralray | 0:40aec5afc650 | 48 | sakuraio.echoback(1, request, response); |
chibiegg | 3:6bf66fc3bc57 | 49 | pc.printf("%02x\r\n", request[0]); |
spiralray | 0:40aec5afc650 | 50 | pc.printf(" -> "); |
chibiegg | 3:6bf66fc3bc57 | 51 | pc.printf("%02x\r\n", response[0]); |
spiralray | 0:40aec5afc650 | 52 | |
spiralray | 0:40aec5afc650 | 53 | // Unixtime |
spiralray | 0:40aec5afc650 | 54 | uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime()/1000UL); |
spiralray | 0:40aec5afc650 | 55 | pc.printf("Unixtime "); |
chibiegg | 3:6bf66fc3bc57 | 56 | pc.printf("%d\r\n", unixtime); |
spiralray | 0:40aec5afc650 | 57 | |
spiralray | 0:40aec5afc650 | 58 | // ADC |
spiralray | 0:40aec5afc650 | 59 | uint16_t adc; |
spiralray | 0:40aec5afc650 | 60 | adc = sakuraio.getADC(0); |
spiralray | 0:40aec5afc650 | 61 | pc.printf("ADC0 "); |
chibiegg | 3:6bf66fc3bc57 | 62 | pc.printf("%d\r\n", adc); |
spiralray | 0:40aec5afc650 | 63 | adc = sakuraio.getADC(1); |
spiralray | 0:40aec5afc650 | 64 | pc.printf("ADC1 "); |
chibiegg | 3:6bf66fc3bc57 | 65 | pc.printf("%d\r\n", adc); |
spiralray | 0:40aec5afc650 | 66 | |
spiralray | 0:40aec5afc650 | 67 | // ProductID |
spiralray | 0:40aec5afc650 | 68 | uint16_t pid = sakuraio.getProductID(); |
spiralray | 0:40aec5afc650 | 69 | pc.printf("PID "); |
chibiegg | 3:6bf66fc3bc57 | 70 | pc.printf("%d\r\n", pid); |
spiralray | 0:40aec5afc650 | 71 | |
spiralray | 0:40aec5afc650 | 72 | // UniqueID |
spiralray | 0:40aec5afc650 | 73 | sakuraio.getUniqueID((char *)response); |
spiralray | 0:40aec5afc650 | 74 | pc.printf("UID "); |
chibiegg | 3:6bf66fc3bc57 | 75 | pc.printf("%s\r\n", response); |
spiralray | 0:40aec5afc650 | 76 | |
spiralray | 0:40aec5afc650 | 77 | // Version |
spiralray | 0:40aec5afc650 | 78 | sakuraio.getFirmwareVersion((char *)response); |
spiralray | 0:40aec5afc650 | 79 | pc.printf("Ver "); |
chibiegg | 3:6bf66fc3bc57 | 80 | pc.printf("%s\r\n", response); |
spiralray | 0:40aec5afc650 | 81 | |
spiralray | 0:40aec5afc650 | 82 | // Connection Status |
spiralray | 0:40aec5afc650 | 83 | uint8_t connectionStatus = sakuraio.getConnectionStatus(); |
spiralray | 0:40aec5afc650 | 84 | pc.printf("Status "); |
chibiegg | 3:6bf66fc3bc57 | 85 | pc.printf("%02x\r\n", connectionStatus); |
spiralray | 0:40aec5afc650 | 86 | |
chibiegg | 3:6bf66fc3bc57 | 87 | //getSignalQuality |
chibiegg | 3:6bf66fc3bc57 | 88 | uint8_t signalQuality = sakuraio.getSignalQuality(); |
spiralray | 0:40aec5afc650 | 89 | pc.printf("Quality "); |
chibiegg | 3:6bf66fc3bc57 | 90 | pc.printf("%d\r\n", signalQuality); |
spiralray | 0:40aec5afc650 | 91 | |
spiralray | 0:40aec5afc650 | 92 | |
spiralray | 0:40aec5afc650 | 93 | // Tx Queue |
spiralray | 0:40aec5afc650 | 94 | uint8_t ret; |
spiralray | 0:40aec5afc650 | 95 | ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter); |
spiralray | 0:40aec5afc650 | 96 | pc.printf("Enqueue "); |
misodengaku |
6:4ccdf8b1b007 | 97 | pc.printf("%d\r\n", ret); |
spiralray | 0:40aec5afc650 | 98 | |
spiralray | 0:40aec5afc650 | 99 | uint8_t avail; |
spiralray | 0:40aec5afc650 | 100 | uint8_t queued; |
spiralray | 0:40aec5afc650 | 101 | sakuraio.getTxQueueLength(&avail, &queued); |
spiralray | 0:40aec5afc650 | 102 | pc.printf("Tx Available="); |
spiralray | 0:40aec5afc650 | 103 | pc.printf("%d",avail); |
spiralray | 0:40aec5afc650 | 104 | pc.printf(" Queued="); |
chibiegg | 3:6bf66fc3bc57 | 105 | pc.printf("%d\r\n", queued); |
spiralray | 0:40aec5afc650 | 106 | |
spiralray | 0:40aec5afc650 | 107 | if(queued >= 30) { |
spiralray | 0:40aec5afc650 | 108 | ret = sakuraio.clearTx(); |
spiralray | 0:40aec5afc650 | 109 | pc.printf("Clear "); |
chibiegg | 3:6bf66fc3bc57 | 110 | pc.printf("%02x\r\n" ,ret); |
spiralray | 0:40aec5afc650 | 111 | } else if(queued >= 5) { |
spiralray | 0:40aec5afc650 | 112 | ret = sakuraio.send(); |
spiralray | 0:40aec5afc650 | 113 | pc.printf("Send "); |
chibiegg | 3:6bf66fc3bc57 | 114 | pc.printf("%02x\r\n", ret); |
spiralray | 0:40aec5afc650 | 115 | } |
spiralray | 0:40aec5afc650 | 116 | |
spiralray | 0:40aec5afc650 | 117 | // Rx Queue |
spiralray | 0:40aec5afc650 | 118 | sakuraio.getRxQueueLength(&avail, &queued); |
spiralray | 0:40aec5afc650 | 119 | pc.printf("Rx Available="); |
chibiegg | 3:6bf66fc3bc57 | 120 | pc.printf("%d", avail); |
spiralray | 0:40aec5afc650 | 121 | pc.printf(" Queued="); |
chibiegg | 3:6bf66fc3bc57 | 122 | pc.printf("%d\r\n", queued); |
chibiegg | 3:6bf66fc3bc57 | 123 | |
spiralray | 0:40aec5afc650 | 124 | for(uint8_t i=0; i<queued; i++) { |
spiralray | 0:40aec5afc650 | 125 | uint8_t channel; |
spiralray | 0:40aec5afc650 | 126 | uint8_t type; |
spiralray | 0:40aec5afc650 | 127 | uint8_t values[8]; |
spiralray | 0:40aec5afc650 | 128 | int64_t offset; |
spiralray | 0:40aec5afc650 | 129 | ret = sakuraio.dequeueRx(&channel, &type, values, &offset); |
spiralray | 0:40aec5afc650 | 130 | pc.printf("Dequeue "); |
chibiegg | 3:6bf66fc3bc57 | 131 | pc.printf("%02x", ret); |
spiralray | 0:40aec5afc650 | 132 | if(ret == 0x01) { |
spiralray | 0:40aec5afc650 | 133 | pc.printf(" ch="); |
chibiegg | 3:6bf66fc3bc57 | 134 | pc.printf("%d", channel); |
spiralray | 0:40aec5afc650 | 135 | pc.printf(" type="); |
chibiegg | 3:6bf66fc3bc57 | 136 | pc.printf("%c", type); |
spiralray | 0:40aec5afc650 | 137 | pc.printf(" values=["); |
spiralray | 0:40aec5afc650 | 138 | for(uint8_t b=0; b<7; b++) { |
chibiegg | 3:6bf66fc3bc57 | 139 | pc.printf("%02x ", values[b]); |
spiralray | 0:40aec5afc650 | 140 | } |
chibiegg | 3:6bf66fc3bc57 | 141 | pc.printf("%02x", values[7]); |
spiralray | 0:40aec5afc650 | 142 | pc.printf("] offset="); |
chibiegg | 3:6bf66fc3bc57 | 143 | pc.printf("%d\r\n", (int32_t)offset); |
spiralray | 0:40aec5afc650 | 144 | } else { |
spiralray | 0:40aec5afc650 | 145 | pc.printf(" ERROR\r\n"); |
spiralray | 0:40aec5afc650 | 146 | } |
spiralray | 0:40aec5afc650 | 147 | } |
spiralray | 0:40aec5afc650 | 148 | |
spiralray | 0:40aec5afc650 | 149 | wait_ms(1000); |
spiralray | 0:40aec5afc650 | 150 | } |
spiralray | 0:40aec5afc650 | 151 | |
spiralray | 0:40aec5afc650 | 152 | } |