sakura fan
/
SakuraIO_Standard
example for SAKURA Internet IoT Beta Communication Module
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "SakuraIO.h" 00003 00004 #if defined(TARGET_LPC176X) 00005 DigitalOut myled(LED1); 00006 SakuraIO_I2C sakuraio(p28, p27); // sda, scl (mbed LPC1768) 00007 /* 00008 or 00009 I2C i2c(p28, p27); // sda, scl 00010 SakuraIO_I2C sakuraio(i2c); // i2c 00011 or 00012 SakuraIO_SPI sakuraio(p5, p6, p7, p8); // mosi, miso, sclk, cs 00013 or 00014 SPI spi(p5, p6, p7); // mosi, miso, sclk 00015 SakuraIO_SPI sakuraio(spi, p8); // spi, cs 00016 */ 00017 #elif defined(TARGET_KL25Z) 00018 DigitalOut myled(LED2); 00019 SakuraIO_I2C sakuraio(PTE0, PTE1); // sda, scl (FRDM KL25Z) 00020 /* 00021 or 00022 SakuraIO_SPI sakuraio(PTD2, PTD3, PTD1, PTD0); // mosi, miso, sclk, cs 00023 */ 00024 #endif 00025 00026 Serial pc(USBTX, USBRX); 00027 00028 int main () { 00029 int counter = 0; 00030 00031 pc.baud(115200); 00032 pc.printf("Waiting to come online"); 00033 for (;;) { 00034 if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break; 00035 pc.printf("."); 00036 myled = !myled; 00037 wait(1); 00038 } 00039 pc.printf("\r\n"); 00040 myled = 1; 00041 00042 for (;;) { 00043 counter ++; 00044 pc.printf("%d\r\n", counter); 00045 00046 uint8_t request[33] = {}; 00047 uint8_t response[33] = {}; 00048 00049 // Echoback 00050 request[0] = counter; 00051 sakuraio.echoback(1, request, response); 00052 pc.printf("%d -> %d\r\n", request[0], response[0]); 00053 00054 // Unixtime 00055 uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime() / 1000UL); 00056 pc.printf("Unixtime %d\r\n", unixtime); 00057 00058 // ADC 00059 uint16_t adc; 00060 adc = sakuraio.getADC(0); 00061 pc.printf("ADC0 %d\r\n", adc); 00062 adc = sakuraio.getADC(1); 00063 pc.printf("ADC1 %d\r\n", adc); 00064 00065 // ProductID 00066 uint16_t pid = sakuraio.getProductID(); 00067 pc.printf("PID %d\r\n", pid); 00068 00069 // UniqueID 00070 sakuraio.getUniqueID((char *)response); 00071 pc.printf("UID %s\r\n", (char *)response); 00072 00073 // Version 00074 sakuraio.getFirmwareVersion((char *)response); 00075 pc.printf("Ver %s\r\n", (char *)response); 00076 00077 // Connection Status 00078 uint8_t connectionStatus = sakuraio.getConnectionStatus(); 00079 pc.printf("Status %d\r\n", connectionStatus); 00080 00081 //getSignalQuarity 00082 uint8_t signalQuarity = sakuraio.getSignalQuarity(); 00083 pc.printf("Quality %d\r\n", signalQuarity); 00084 00085 00086 // Tx Queue 00087 uint8_t ret; 00088 ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter); 00089 pc.printf("Enqueue %d\r\n", ret); 00090 00091 uint8_t avail; 00092 uint8_t queued; 00093 sakuraio.getTxQueueLength(&avail, &queued); 00094 pc.printf("Tx Available=%d ", avail); 00095 pc.printf("Queued=%d\r\n", queued); 00096 00097 if (queued >= 30){ 00098 ret = sakuraio.clearTx(); 00099 pc.printf("Clear %d\r\n", ret); 00100 } else if (queued >= 5){ 00101 ret = sakuraio.send(); 00102 pc.printf("Send %d\r\n", ret); 00103 } 00104 00105 // Rx Queue 00106 sakuraio.getRxQueueLength(&avail, &queued); 00107 pc.printf("Rx Available=%d ", avail); 00108 pc.printf("Queued=%d\r\n", queued); 00109 00110 for (uint8_t i = 0; i < queued; i ++) { 00111 uint8_t channel; 00112 uint8_t type; 00113 uint8_t values[8]; 00114 int64_t offset; 00115 ret = sakuraio.dequeueRx(&channel, &type, values, &offset); 00116 pc.printf("Dequeue %d", ret); 00117 if (ret == 0x01) { 00118 pc.printf(" ch=%d", channel); 00119 pc.printf(" type=%d", type); 00120 pc.printf(" values=["); 00121 for (uint8_t b = 0; b < 7; b ++) { 00122 pc.printf("%d ", values[b]); 00123 } 00124 pc.printf("%d] offset=%d\r\n", values[7], offset); 00125 } else { 00126 pc.printf(" ERROR\r\n"); 00127 } 00128 } 00129 00130 wait(1); 00131 } 00132 }
Generated on Fri Jul 15 2022 12:28:14 by 1.7.2