FlashAir Developers Summit OSAKA 2019 handson step2

Dependencies:   mbed ADT7410 FlashAir_iSDIO SDFileSystem USBDevice

Committer:
hogejun
Date:
Sat Jan 19 04:31:41 2019 +0000
Revision:
9:e4bd6b88187d
Parent:
8:49dfc9ab1950
disable debug output

Who changed what in which revision?

UserRevisionLine numberNew contents of line
faadmin 0:35b67da566e1 1 #include "mbed.h"
faadmin 0:35b67da566e1 2 #include "FlashAir_iSDIO.h"
hogejun 4:6f2cf32b8da9 3 #include "USBSerial.h"
hogejun 4:6f2cf32b8da9 4 #include "ADT7410.h"
hogejun 4:6f2cf32b8da9 5
hogejun 7:c2097153ff5c 6 #define USE_ADT7410
yone2 3:e36e31ebb464 7 //-------------------------------------------------------------------------------
yone2 3:e36e31ebb464 8 //Port Settings
yone2 3:e36e31ebb464 9 DigitalOut led1(LED1);
yone2 3:e36e31ebb464 10 //DigitalOut led2(P1_13,0);
faadmin 0:35b67da566e1 11
yone2 3:e36e31ebb464 12 InterruptIn sw(P1_20);
yone2 3:e36e31ebb464 13 InterruptIn isp(P0_1);
faadmin 0:35b67da566e1 14
yone2 3:e36e31ebb464 15 DigitalOut sA1(P0_13,0);
yone2 3:e36e31ebb464 16 DigitalOut sA2(P1_21,0);
yone2 3:e36e31ebb464 17 DigitalOut sB(P0_9,0);
yone2 3:e36e31ebb464 18 DigitalOut sC(P0_20,0);
yone2 3:e36e31ebb464 19 DigitalOut sD1(P0_14,0);
yone2 3:e36e31ebb464 20 DigitalOut sD2(P1_26,0);
yone2 3:e36e31ebb464 21 DigitalOut sE(P0_16,0);
yone2 3:e36e31ebb464 22 DigitalOut sF(P0_11,0);
yone2 3:e36e31ebb464 23 DigitalOut sG1(P0_23,0);
yone2 3:e36e31ebb464 24 DigitalOut sG2(P0_8,0);
yone2 3:e36e31ebb464 25 DigitalOut sJ(P0_12,0);
yone2 3:e36e31ebb464 26 DigitalOut sK(P1_28,0);
yone2 3:e36e31ebb464 27 DigitalOut sL(P1_31,0);
yone2 3:e36e31ebb464 28 DigitalOut sP(P1_23,0);
yone2 3:e36e31ebb464 29 DigitalOut sN(P1_27,0);
yone2 3:e36e31ebb464 30 DigitalOut sM(P0_2,0);
yone2 3:e36e31ebb464 31 DigitalOut sDP(P1_25,0);
yone2 3:e36e31ebb464 32 DigitalOut SD_VEN(P1_16);
hogejun 9:e4bd6b88187d 33 //Serial console(P0_19, P0_18); // TX, RX
hogejun 9:e4bd6b88187d 34 //FlashAir_iSDIO sd(P0_21, P0_22, P1_15, P0_17, "sd", &console); // mosi(CMD), miso(DAT0), sclk(CLK), cs(DAT3)
hogejun 9:e4bd6b88187d 35 FlashAir_iSDIO sd(P0_21, P0_22, P1_15, P0_17, "sd"); // mosi(CMD), miso(DAT0), sclk(CLK), cs(DAT3)
yone2 3:e36e31ebb464 36
hogejun 4:6f2cf32b8da9 37 USBSerial serial;
hogejun 4:6f2cf32b8da9 38 #ifdef USE_ADT7410
hogejun 4:6f2cf32b8da9 39 ADT7410 sensor(P0_5, P0_4, 0x90, 100000);
hogejun 4:6f2cf32b8da9 40 #else
hogejun 4:6f2cf32b8da9 41 int dummyval[] = {0,1,2,3,4,5,6,7,8,9};
hogejun 4:6f2cf32b8da9 42 #define DUMMYVALLEN (sizeof(dummyval)/sizeof(dummyval[0]))
hogejun 4:6f2cf32b8da9 43 #endif
hogejun 7:c2097153ff5c 44 int sense_int;
hogejun 7:c2097153ff5c 45 float senseval;
hogejun 4:6f2cf32b8da9 46
yone2 3:e36e31ebb464 47 //-------------------------------------------------------------------------------
yone2 3:e36e31ebb464 48 //Program
yone2 3:e36e31ebb464 49
hogejun 6:dc3fa898ae44 50 int wlan_connected = 0;
yone2 3:e36e31ebb464 51 uint32_t sequenceId ;
faadmin 0:35b67da566e1 52
yone2 3:e36e31ebb464 53 void sw_int(){
hogejun 7:c2097153ff5c 54 serial.printf("sw_int\n");
hogejun 6:dc3fa898ae44 55 if(wlan_connected==1){
yone2 3:e36e31ebb464 56 // disconnect
yone2 3:e36e31ebb464 57 // 1. get sequenceID
yone2 3:e36e31ebb464 58 // 2. issue disconnect command
yone2 3:e36e31ebb464 59 // 3. wait response
hogejun 7:c2097153ff5c 60 serial.printf("disconnect\n");
yone2 3:e36e31ebb464 61 sequenceId = sd.getNextSequenceId();
yone2 3:e36e31ebb464 62 sd.wlan_disconnect(sequenceId);
yone2 3:e36e31ebb464 63 sd.waitResponse(sequenceId);
hogejun 6:dc3fa898ae44 64 wlan_connected =0;
hogejun 7:c2097153ff5c 65 // led1 = 0;
hogejun 7:c2097153ff5c 66 sDP = 0;
yone2 3:e36e31ebb464 67 wait(5.0);
yone2 3:e36e31ebb464 68 }else{
yone2 3:e36e31ebb464 69 // establish
yone2 3:e36e31ebb464 70 // 1. get sequenceID
yone2 3:e36e31ebb464 71 // 2. issue establish command
yone2 3:e36e31ebb464 72 // 3. wait resoonse
hogejun 7:c2097153ff5c 73 serial.printf("establish\n");
yone2 3:e36e31ebb464 74 sequenceId = sd.getNextSequenceId();
yone2 3:e36e31ebb464 75 sd.wlan_establish(sequenceId, "isdiotest", "12345678", FlashAir_iSDIO::ENCMODE_WPA2PSK_AES);
hogejun 6:dc3fa898ae44 76 sd.waitResponse(sequenceId);
hogejun 7:c2097153ff5c 77 // led1 = 1;
hogejun 7:c2097153ff5c 78 sDP = 1;
hogejun 6:dc3fa898ae44 79 wlan_connected =1;
yone2 3:e36e31ebb464 80 wait(5.0);
faadmin 0:35b67da566e1 81
faadmin 0:35b67da566e1 82 }
yone2 3:e36e31ebb464 83 }
faadmin 0:35b67da566e1 84
yone2 3:e36e31ebb464 85 void isp_int(){
hogejun 4:6f2cf32b8da9 86 #define TESTDATA "deadbeaf"
hogejun 4:6f2cf32b8da9 87 char testdata[] = TESTDATA;
faadmin 0:35b67da566e1 88 uint8_t data[sizeof(testdata)];
faadmin 0:35b67da566e1 89 memcpy(data, &testdata, sizeof(data));
faadmin 0:35b67da566e1 90 sd.write_shared_mem(0x0, data, sizeof(data));
yone2 3:e36e31ebb464 91 wait(3.0);
yone2 3:e36e31ebb464 92 }
hogejun 1:8aaee4f08dbc 93
hogejun 8:49dfc9ab1950 94 #if 1
hogejun 8:49dfc9ab1950 95 void write_shmem(float val)
hogejun 8:49dfc9ab1950 96 {
hogejun 8:49dfc9ab1950 97 char data[255];
hogejun 8:49dfc9ab1950 98 sprintf(data, "%.02f", val);
hogejun 8:49dfc9ab1950 99 sd.write_shared_mem(0x0, (uint8_t*)data, sizeof(data));
hogejun 8:49dfc9ab1950 100 wait(1.0);
hogejun 8:49dfc9ab1950 101 }
hogejun 8:49dfc9ab1950 102 #endif
hogejun 8:49dfc9ab1950 103
yone2 3:e36e31ebb464 104 void seg_disp(int val){
yone2 3:e36e31ebb464 105 switch((val/10)%10){
yone2 3:e36e31ebb464 106 case 0:sA1=1;sA2=1;sB=0;sF=0;sJ=1;sK=0;sL=1;break;
yone2 3:e36e31ebb464 107 case 1:sA1=1;sA2=1;sB=0;sF=0;sJ=0;sK=0;sL=0;break;
yone2 3:e36e31ebb464 108 case 2:sA1=0;sA2=0;sB=0;sF=1;sJ=1;sK=0;sL=1;break;
yone2 3:e36e31ebb464 109 case 3:sA1=0;sA2=0;sB=0;sF=0;sJ=1;sK=1;sL=1;break;
yone2 3:e36e31ebb464 110 case 4:sA1=1;sA2=1;sB=1;sF=0;sJ=0;sK=1;sL=0;break;
yone2 3:e36e31ebb464 111 case 5:sA1=0;sA2=1;sB=1;sF=0;sJ=1;sK=1;sL=0;break;
yone2 3:e36e31ebb464 112 case 6:sA1=1;sA2=1;sB=0;sF=0;sJ=1;sK=1;sL=0;break;
yone2 3:e36e31ebb464 113 case 7:sA1=0;sA2=0;sB=0;sF=0;sJ=1;sK=0;sL=1;break;
yone2 3:e36e31ebb464 114 case 8:sA1=1;sA2=1;sB=0;sF=0;sJ=1;sK=1;sL=1;break;
yone2 3:e36e31ebb464 115 case 9:sA1=0;sA2=1;sB=0;sF=0;sJ=1;sK=1;sL=1;break;
yone2 3:e36e31ebb464 116 default:sA1=0;sA2=0;sB=0;sF=0;sJ=0;sK=0;sL=0;break;
yone2 3:e36e31ebb464 117 }
yone2 3:e36e31ebb464 118 switch(val%10){
yone2 3:e36e31ebb464 119 case 0:sC=1;sD1=1;sD2=1;sE=1;sG1=1;sG2=1;sN=0;break;
yone2 3:e36e31ebb464 120 case 1:sC=0;sD1=1;sD2=1;sE=0;sG1=0;sG2=0;sN=0;break;
yone2 3:e36e31ebb464 121 case 2:sC=1;sD1=0;sD2=1;sE=1;sG1=1;sG2=0;sN=1;break;
yone2 3:e36e31ebb464 122 case 3:sC=1;sD1=1;sD2=1;sE=1;sG1=0;sG2=0;sN=1;break;
yone2 3:e36e31ebb464 123 case 4:sC=0;sD1=1;sD2=1;sE=0;sG1=0;sG2=1;sN=1;break;
yone2 3:e36e31ebb464 124 case 5:sC=1;sD1=1;sD2=0;sE=1;sG1=0;sG2=1;sN=1;break;
yone2 3:e36e31ebb464 125 case 6:sC=1;sD1=1;sD2=0;sE=1;sG1=1;sG2=1;sN=1;break;
yone2 3:e36e31ebb464 126 case 7:sC=1;sD1=1;sD2=1;sE=0;sG1=0;sG2=0;sN=0;break;
yone2 3:e36e31ebb464 127 case 8:sC=1;sD1=1;sD2=1;sE=1;sG1=1;sG2=1;sN=1;break;
yone2 3:e36e31ebb464 128 case 9:sC=1;sD1=1;sD2=1;sE=1;sG1=0;sG2=1;sN=1;break;
yone2 3:e36e31ebb464 129 default:sC=0;sD1=0;sD2=0;sE=0;sG1=0;sG2=0;sN=0;break;
yone2 3:e36e31ebb464 130 }
yone2 3:e36e31ebb464 131 }
hogejun 1:8aaee4f08dbc 132
hogejun 7:c2097153ff5c 133
hogejun 7:c2097153ff5c 134 void out_file(float val)
hogejun 5:7ade87f735a2 135 {
hogejun 7:c2097153ff5c 136 FILE *fd = fopen("/sd/test.text", "a");
hogejun 7:c2097153ff5c 137 fprintf(fd, "%.02f\n\r", val);
hogejun 7:c2097153ff5c 138 fclose(fd);
hogejun 7:c2097153ff5c 139
hogejun 7:c2097153ff5c 140 led1 = 1;
hogejun 7:c2097153ff5c 141 wait(0.5);
hogejun 7:c2097153ff5c 142 led1 = 0;
hogejun 5:7ade87f735a2 143 }
hogejun 5:7ade87f735a2 144
yone2 3:e36e31ebb464 145 int main()
yone2 3:e36e31ebb464 146 {
hogejun 9:e4bd6b88187d 147 serial.printf("Hello FlashAir_iSDIO_16seg_ADT7410\n");
hogejun 8:49dfc9ab1950 148 wait(1.0);
yone2 3:e36e31ebb464 149 SD_VEN = 1;
yone2 3:e36e31ebb464 150 // Initialize card
yone2 3:e36e31ebb464 151 FILE *fp = fopen("/sd/isdio.txt", "w");
yone2 3:e36e31ebb464 152 fclose(fp);
yone2 3:e36e31ebb464 153
hogejun 4:6f2cf32b8da9 154 #ifdef USE_ADT7410
hogejun 4:6f2cf32b8da9 155 sensor.reset();
hogejun 4:6f2cf32b8da9 156 #endif
hogejun 4:6f2cf32b8da9 157
hogejun 4:6f2cf32b8da9 158 // disconnect anyway
yone2 3:e36e31ebb464 159 sequenceId = sd.getNextSequenceId();
yone2 3:e36e31ebb464 160 sd.wlan_disconnect(sequenceId);
yone2 3:e36e31ebb464 161 sd.waitResponse(sequenceId);
faadmin 0:35b67da566e1 162
hogejun 4:6f2cf32b8da9 163 // register interrupt handler
yone2 3:e36e31ebb464 164 sw.rise(&sw_int);
yone2 3:e36e31ebb464 165 isp.rise(&isp_int);
yone2 3:e36e31ebb464 166
yone2 3:e36e31ebb464 167 int i=0;
yone2 3:e36e31ebb464 168 while(1)
yone2 3:e36e31ebb464 169 {
hogejun 4:6f2cf32b8da9 170 #ifdef USE_ADT7410
hogejun 7:c2097153ff5c 171 senseval = sensor.getTemp();
hogejun 7:c2097153ff5c 172 sense_int = (int)sensor.getTemp();
hogejun 4:6f2cf32b8da9 173 #else
hogejun 7:c2097153ff5c 174 sense_int = dummyval[i];
hogejun 4:6f2cf32b8da9 175 #endif
hogejun 7:c2097153ff5c 176 seg_disp(sense_int);
hogejun 5:7ade87f735a2 177 out_file(senseval);
hogejun 8:49dfc9ab1950 178 write_shmem(senseval);
hogejun 7:c2097153ff5c 179 serial.printf("%f\n",senseval);
yone2 3:e36e31ebb464 180 i++;
hogejun 4:6f2cf32b8da9 181 #ifndef USE_ADT7410
hogejun 4:6f2cf32b8da9 182 if(i>=DUMMYVALLEN) i=0;
hogejun 4:6f2cf32b8da9 183 #endif
hogejun 4:6f2cf32b8da9 184 wait(0.3);
yone2 3:e36e31ebb464 185 }
faadmin 0:35b67da566e1 186 }