SAKURA Internet
/
SakuraIO_Standard
Sample program of SAKURA Internet IoT Communication Module
View the Github repository.
main.cpp@6:4ccdf8b1b007, 2017-09-07 (annotated)
- Committer:
- misodengaku
- Date:
- Thu Sep 07 13:13:20 2017 +0900
- Revision:
- 6:4ccdf8b1b007
- Parent:
- 3:6bf66fc3bc57
- Child:
- 9:aa5a18093ade
fix enqueue result
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 | |
spiralray | 0:40aec5afc650 | 7 | int main() |
spiralray | 0:40aec5afc650 | 8 | { |
spiralray | 0:40aec5afc650 | 9 | SPI spi(p5, p6, p7); // mosi, miso, sclk |
spiralray | 0:40aec5afc650 | 10 | DigitalOut cs(p8); |
spiralray | 0:40aec5afc650 | 11 | I2C i2c(p9, p10); // sda, scl |
chibiegg | 3:6bf66fc3bc57 | 12 | |
spiralray | 0:40aec5afc650 | 13 | //SakuraIO_SPI sakuraio( spi, cs ); |
spiralray | 0:40aec5afc650 | 14 | SakuraIO_I2C sakuraio(i2c); |
spiralray | 0:40aec5afc650 | 15 | |
spiralray | 0:40aec5afc650 | 16 | |
spiralray | 0:40aec5afc650 | 17 | pc.printf("Waiting to come online"); |
spiralray | 0:40aec5afc650 | 18 | for(;;) { |
spiralray | 0:40aec5afc650 | 19 | if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break; |
spiralray | 0:40aec5afc650 | 20 | pc.printf("."); |
spiralray | 0:40aec5afc650 | 21 | wait_ms(1000); |
spiralray | 0:40aec5afc650 | 22 | } |
spiralray | 0:40aec5afc650 | 23 | pc.printf("\r\n"); |
spiralray | 0:40aec5afc650 | 24 | |
spiralray | 0:40aec5afc650 | 25 | uint8_t counter = 0; |
spiralray | 0:40aec5afc650 | 26 | |
spiralray | 0:40aec5afc650 | 27 | while(1) { |
chibiegg | 3:6bf66fc3bc57 | 28 | pc.printf("\r\n%02x\r\n", counter); |
spiralray | 0:40aec5afc650 | 29 | |
spiralray | 0:40aec5afc650 | 30 | uint8_t request[33] = {}; |
spiralray | 0:40aec5afc650 | 31 | uint8_t response[33] = {}; |
spiralray | 0:40aec5afc650 | 32 | |
spiralray | 0:40aec5afc650 | 33 | // Echoback |
spiralray | 0:40aec5afc650 | 34 | request[0] = counter; |
spiralray | 0:40aec5afc650 | 35 | sakuraio.echoback(1, request, response); |
chibiegg | 3:6bf66fc3bc57 | 36 | pc.printf("%02x\r\n", request[0]); |
spiralray | 0:40aec5afc650 | 37 | pc.printf(" -> "); |
chibiegg | 3:6bf66fc3bc57 | 38 | pc.printf("%02x\r\n", response[0]); |
spiralray | 0:40aec5afc650 | 39 | |
spiralray | 0:40aec5afc650 | 40 | // Unixtime |
spiralray | 0:40aec5afc650 | 41 | uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime()/1000UL); |
spiralray | 0:40aec5afc650 | 42 | pc.printf("Unixtime "); |
chibiegg | 3:6bf66fc3bc57 | 43 | pc.printf("%d\r\n", unixtime); |
spiralray | 0:40aec5afc650 | 44 | |
spiralray | 0:40aec5afc650 | 45 | // ADC |
spiralray | 0:40aec5afc650 | 46 | uint16_t adc; |
spiralray | 0:40aec5afc650 | 47 | adc = sakuraio.getADC(0); |
spiralray | 0:40aec5afc650 | 48 | pc.printf("ADC0 "); |
chibiegg | 3:6bf66fc3bc57 | 49 | pc.printf("%d\r\n", adc); |
spiralray | 0:40aec5afc650 | 50 | adc = sakuraio.getADC(1); |
spiralray | 0:40aec5afc650 | 51 | pc.printf("ADC1 "); |
chibiegg | 3:6bf66fc3bc57 | 52 | pc.printf("%d\r\n", adc); |
spiralray | 0:40aec5afc650 | 53 | |
spiralray | 0:40aec5afc650 | 54 | // ProductID |
spiralray | 0:40aec5afc650 | 55 | uint16_t pid = sakuraio.getProductID(); |
spiralray | 0:40aec5afc650 | 56 | pc.printf("PID "); |
chibiegg | 3:6bf66fc3bc57 | 57 | pc.printf("%d\r\n", pid); |
spiralray | 0:40aec5afc650 | 58 | |
spiralray | 0:40aec5afc650 | 59 | // UniqueID |
spiralray | 0:40aec5afc650 | 60 | sakuraio.getUniqueID((char *)response); |
spiralray | 0:40aec5afc650 | 61 | pc.printf("UID "); |
chibiegg | 3:6bf66fc3bc57 | 62 | pc.printf("%s\r\n", response); |
spiralray | 0:40aec5afc650 | 63 | |
spiralray | 0:40aec5afc650 | 64 | // Version |
spiralray | 0:40aec5afc650 | 65 | sakuraio.getFirmwareVersion((char *)response); |
spiralray | 0:40aec5afc650 | 66 | pc.printf("Ver "); |
chibiegg | 3:6bf66fc3bc57 | 67 | pc.printf("%s\r\n", response); |
spiralray | 0:40aec5afc650 | 68 | |
spiralray | 0:40aec5afc650 | 69 | // Connection Status |
spiralray | 0:40aec5afc650 | 70 | uint8_t connectionStatus = sakuraio.getConnectionStatus(); |
spiralray | 0:40aec5afc650 | 71 | pc.printf("Status "); |
chibiegg | 3:6bf66fc3bc57 | 72 | pc.printf("%02x\r\n", connectionStatus); |
spiralray | 0:40aec5afc650 | 73 | |
chibiegg | 3:6bf66fc3bc57 | 74 | //getSignalQuality |
chibiegg | 3:6bf66fc3bc57 | 75 | uint8_t signalQuality = sakuraio.getSignalQuality(); |
spiralray | 0:40aec5afc650 | 76 | pc.printf("Quality "); |
chibiegg | 3:6bf66fc3bc57 | 77 | pc.printf("%d\r\n", signalQuality); |
spiralray | 0:40aec5afc650 | 78 | |
spiralray | 0:40aec5afc650 | 79 | |
spiralray | 0:40aec5afc650 | 80 | // Tx Queue |
spiralray | 0:40aec5afc650 | 81 | uint8_t ret; |
spiralray | 0:40aec5afc650 | 82 | ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter); |
spiralray | 0:40aec5afc650 | 83 | pc.printf("Enqueue "); |
misodengaku |
6:4ccdf8b1b007 | 84 | pc.printf("%d\r\n", ret); |
spiralray | 0:40aec5afc650 | 85 | |
spiralray | 0:40aec5afc650 | 86 | uint8_t avail; |
spiralray | 0:40aec5afc650 | 87 | uint8_t queued; |
spiralray | 0:40aec5afc650 | 88 | sakuraio.getTxQueueLength(&avail, &queued); |
spiralray | 0:40aec5afc650 | 89 | pc.printf("Tx Available="); |
spiralray | 0:40aec5afc650 | 90 | pc.printf("%d",avail); |
spiralray | 0:40aec5afc650 | 91 | pc.printf(" Queued="); |
chibiegg | 3:6bf66fc3bc57 | 92 | pc.printf("%d\r\n", queued); |
spiralray | 0:40aec5afc650 | 93 | |
spiralray | 0:40aec5afc650 | 94 | if(queued >= 30) { |
spiralray | 0:40aec5afc650 | 95 | ret = sakuraio.clearTx(); |
spiralray | 0:40aec5afc650 | 96 | pc.printf("Clear "); |
chibiegg | 3:6bf66fc3bc57 | 97 | pc.printf("%02x\r\n" ,ret); |
spiralray | 0:40aec5afc650 | 98 | } else if(queued >= 5) { |
spiralray | 0:40aec5afc650 | 99 | ret = sakuraio.send(); |
spiralray | 0:40aec5afc650 | 100 | pc.printf("Send "); |
chibiegg | 3:6bf66fc3bc57 | 101 | pc.printf("%02x\r\n", ret); |
spiralray | 0:40aec5afc650 | 102 | } |
spiralray | 0:40aec5afc650 | 103 | |
spiralray | 0:40aec5afc650 | 104 | // Rx Queue |
spiralray | 0:40aec5afc650 | 105 | sakuraio.getRxQueueLength(&avail, &queued); |
spiralray | 0:40aec5afc650 | 106 | pc.printf("Rx Available="); |
chibiegg | 3:6bf66fc3bc57 | 107 | pc.printf("%d", avail); |
spiralray | 0:40aec5afc650 | 108 | pc.printf(" Queued="); |
chibiegg | 3:6bf66fc3bc57 | 109 | pc.printf("%d\r\n", queued); |
chibiegg | 3:6bf66fc3bc57 | 110 | |
spiralray | 0:40aec5afc650 | 111 | for(uint8_t i=0; i<queued; i++) { |
spiralray | 0:40aec5afc650 | 112 | uint8_t channel; |
spiralray | 0:40aec5afc650 | 113 | uint8_t type; |
spiralray | 0:40aec5afc650 | 114 | uint8_t values[8]; |
spiralray | 0:40aec5afc650 | 115 | int64_t offset; |
spiralray | 0:40aec5afc650 | 116 | ret = sakuraio.dequeueRx(&channel, &type, values, &offset); |
spiralray | 0:40aec5afc650 | 117 | pc.printf("Dequeue "); |
chibiegg | 3:6bf66fc3bc57 | 118 | pc.printf("%02x", ret); |
spiralray | 0:40aec5afc650 | 119 | if(ret == 0x01) { |
spiralray | 0:40aec5afc650 | 120 | pc.printf(" ch="); |
chibiegg | 3:6bf66fc3bc57 | 121 | pc.printf("%d", channel); |
spiralray | 0:40aec5afc650 | 122 | pc.printf(" type="); |
chibiegg | 3:6bf66fc3bc57 | 123 | pc.printf("%c", type); |
spiralray | 0:40aec5afc650 | 124 | pc.printf(" values=["); |
spiralray | 0:40aec5afc650 | 125 | for(uint8_t b=0; b<7; b++) { |
chibiegg | 3:6bf66fc3bc57 | 126 | pc.printf("%02x ", values[b]); |
spiralray | 0:40aec5afc650 | 127 | } |
chibiegg | 3:6bf66fc3bc57 | 128 | pc.printf("%02x", values[7]); |
spiralray | 0:40aec5afc650 | 129 | pc.printf("] offset="); |
chibiegg | 3:6bf66fc3bc57 | 130 | pc.printf("%d\r\n", (int32_t)offset); |
spiralray | 0:40aec5afc650 | 131 | } else { |
spiralray | 0:40aec5afc650 | 132 | pc.printf(" ERROR\r\n"); |
spiralray | 0:40aec5afc650 | 133 | } |
spiralray | 0:40aec5afc650 | 134 | } |
spiralray | 0:40aec5afc650 | 135 | |
spiralray | 0:40aec5afc650 | 136 | wait_ms(1000); |
spiralray | 0:40aec5afc650 | 137 | } |
spiralray | 0:40aec5afc650 | 138 | |
spiralray | 0:40aec5afc650 | 139 | } |