SAKURA Internet / Mbed 2 deprecated SakuraIO_Standard

Dependencies:   SakuraIO mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SakuraIO.h"
00003 
00004 Serial pc(USBTX, USBRX);
00005 DigitalOut myled(LED1);
00006 
00007 #if defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F303K8)
00008 // Nucleo-32 series
00009 SPI spi(A6, A5, A4); // mosi, miso, sclk
00010 DigitalOut cs(A3);
00011 I2C i2c(D4, D5);        // sda, scl
00012 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_L476RG)
00013 // Nucleo-64 series
00014 SPI spi(D11, D12, D13); // mosi, miso, sclk
00015 DigitalOut cs(D10);
00016 I2C i2c(D14, D15);     // sda, scl
00017 #else
00018 // LPC1768 or others.
00019 SPI spi(p5, p6, p7); // mosi, miso, sclk
00020 DigitalOut cs(p8);
00021 I2C i2c(p9, p10);        // sda, scl
00022 #endif
00023 
00024 int main()
00025 {
00026     //SakuraIO_SPI sakuraio( spi, cs );
00027     SakuraIO_I2C sakuraio(i2c);
00028 
00029 
00030     pc.printf("Waiting to come online");
00031     for(;;) {
00032         if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
00033         pc.printf(".");
00034         wait_ms(1000);
00035     }
00036     pc.printf("\r\n");
00037 
00038     uint8_t counter = 0;
00039 
00040     while(1) {
00041         pc.printf("\r\n%02x\r\n", counter);
00042 
00043         uint8_t request[33] = {};
00044         uint8_t response[33] = {};
00045 
00046         // Echoback
00047         request[0] = counter;
00048         sakuraio.echoback(1, request, response);
00049         pc.printf("%02x\r\n", request[0]);
00050         pc.printf(" -> ");
00051         pc.printf("%02x\r\n", response[0]);
00052 
00053         // Unixtime
00054         uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime()/1000UL);
00055         pc.printf("Unixtime ");
00056         pc.printf("%d\r\n", unixtime);
00057 
00058         // ADC
00059         uint16_t adc;
00060         adc = sakuraio.getADC(0);
00061         pc.printf("ADC0 ");
00062         pc.printf("%d\r\n", adc);
00063         adc = sakuraio.getADC(1);
00064         pc.printf("ADC1 ");
00065         pc.printf("%d\r\n", adc);
00066 
00067         // ProductID
00068         uint16_t pid = sakuraio.getProductID();
00069         pc.printf("PID ");
00070         pc.printf("%d\r\n", pid);
00071 
00072         // UniqueID
00073         sakuraio.getUniqueID((char *)response);
00074         pc.printf("UID ");
00075         pc.printf("%s\r\n", response);
00076 
00077         // Version
00078         sakuraio.getFirmwareVersion((char *)response);
00079         pc.printf("Ver ");
00080         pc.printf("%s\r\n", response);
00081 
00082         // Connection Status
00083         uint8_t connectionStatus = sakuraio.getConnectionStatus();
00084         pc.printf("Status ");
00085         pc.printf("%02x\r\n", connectionStatus);
00086 
00087         //getSignalQuality
00088         uint8_t signalQuality = sakuraio.getSignalQuality();
00089         pc.printf("Quality ");
00090         pc.printf("%d\r\n", signalQuality);
00091 
00092 
00093         // Tx Queue
00094         uint8_t ret;
00095         ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter);
00096         pc.printf("Enqueue ");
00097         pc.printf("%d\r\n", ret);
00098 
00099         uint8_t avail;
00100         uint8_t queued;
00101         sakuraio.getTxQueueLength(&avail, &queued);
00102         pc.printf("Tx Available=");
00103         pc.printf("%d",avail);
00104         pc.printf(" Queued=");
00105         pc.printf("%d\r\n", queued);
00106 
00107         if(queued >= 30) {
00108             ret = sakuraio.clearTx();
00109             pc.printf("Clear ");
00110             pc.printf("%02x\r\n" ,ret);
00111         } else if(queued >= 5) {
00112             ret = sakuraio.send();
00113             pc.printf("Send ");
00114             pc.printf("%02x\r\n", ret);
00115         }
00116 
00117         // Rx Queue
00118         sakuraio.getRxQueueLength(&avail, &queued);
00119         pc.printf("Rx Available=");
00120         pc.printf("%d", avail);
00121         pc.printf(" Queued=");
00122         pc.printf("%d\r\n", queued);
00123 
00124         for(uint8_t i=0; i<queued; i++) {
00125             uint8_t channel;
00126             uint8_t type;
00127             uint8_t values[8];
00128             int64_t offset;
00129             ret = sakuraio.dequeueRx(&channel, &type, values, &offset);
00130             pc.printf("Dequeue ");
00131             pc.printf("%02x", ret);
00132             if(ret == 0x01) {
00133                 pc.printf(" ch=");
00134                 pc.printf("%d", channel);
00135                 pc.printf(" type=");
00136                 pc.printf("%c", type);
00137                 pc.printf(" values=[");
00138                 for(uint8_t b=0; b<7; b++) {
00139                     pc.printf("%02x ", values[b]);
00140                 }
00141                 pc.printf("%02x", values[7]);
00142                 pc.printf("] offset=");
00143                 pc.printf("%d\r\n", (int32_t)offset);
00144             } else {
00145                 pc.printf(" ERROR\r\n");
00146             }
00147         }
00148 
00149         wait_ms(1000);
00150     }
00151 
00152 }