sakura fan / Mbed 2 deprecated SakuraIO_Standard_official

Dependencies:   SakuraIO_official mbed

Fork of SakuraIO_Standard by SAKURA Internet

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