GPS Data Logger with SD File system. Logger can save RMC & GGA data from GPS and five channels of analog data. Based on http://mbed.org/users/prf/ "GPS_Logger_01" by Peter Forden
main.cpp@0:dc3be3264d2d, 2010-04-17 (annotated)
- Committer:
- kenjiArai
- Date:
- Sat Apr 17 13:27:34 2010 +0000
- Revision:
- 0:dc3be3264d2d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:dc3be3264d2d | 1 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 2 | // GPS DATA LOGGER Ver.1 |
kenjiArai | 0:dc3be3264d2d | 3 | // (c)2010 Kenji Arai / JH1PJL |
kenjiArai | 0:dc3be3264d2d | 4 | // http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 0:dc3be3264d2d | 5 | // http://mbed.org/users/kenjiArai/ |
kenjiArai | 0:dc3be3264d2d | 6 | // April 17th,2010 Started |
kenjiArai | 0:dc3be3264d2d | 7 | // April 17th,2010 |
kenjiArai | 0:dc3be3264d2d | 8 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 9 | // Reference ----- GPS_logger_01 by Peter Foden ------ |
kenjiArai | 0:dc3be3264d2d | 10 | // http://mbed.org/users/prf/ |
kenjiArai | 0:dc3be3264d2d | 11 | // http://mbed.org/users/prf/programs/GPS_Logger_01/f5c2b003ae38423640de0fc5e0727190/ |
kenjiArai | 0:dc3be3264d2d | 12 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 13 | // Function |
kenjiArai | 0:dc3be3264d2d | 14 | // GPS data and five channeles ADC data records into a file which is located in SD-Card |
kenjiArai | 0:dc3be3264d2d | 15 | // Connection |
kenjiArai | 0:dc3be3264d2d | 16 | // GPS receiver PIN 8,9 |
kenjiArai | 0:dc3be3264d2d | 17 | // Analog input PIN 15,16,17,19,20 |
kenjiArai | 0:dc3be3264d2d | 18 | // SD Card I/F PIN 11,12,13,14 |
kenjiArai | 0:dc3be3264d2d | 19 | // LCD PIN 5,6,7,21,22,23 |
kenjiArai | 0:dc3be3264d2d | 20 | // -> CAUTION!! pin assignment is different |
kenjiArai | 0:dc3be3264d2d | 21 | // with " http://mbed.org/projects/cookbook/wiki/TextLCD " |
kenjiArai | 0:dc3be3264d2d | 22 | // RTC PIN 3 needs to connect 3V Battery |
kenjiArai | 0:dc3be3264d2d | 23 | // -> Please refer my program " RTC_w_COM" for time adjustment |
kenjiArai | 0:dc3be3264d2d | 24 | // at " http://mbed.org/users/kenjiArai/programs/RTC_w_COM/5yi9a/ " |
kenjiArai | 0:dc3be3264d2d | 25 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 26 | #include "mbed.h" |
kenjiArai | 0:dc3be3264d2d | 27 | #include "TextLCD.h" |
kenjiArai | 0:dc3be3264d2d | 28 | #include "SDFileSystem.h" |
kenjiArai | 0:dc3be3264d2d | 29 | |
kenjiArai | 0:dc3be3264d2d | 30 | // Data logging configration |
kenjiArai | 0:dc3be3264d2d | 31 | // Save RMC any condition |
kenjiArai | 0:dc3be3264d2d | 32 | #define CONFG_ANA 1 // 1= Save Analog data |
kenjiArai | 0:dc3be3264d2d | 33 | #define DEBUG 1 // 1= Shows progress on PC via USB ( virtual COM line) |
kenjiArai | 0:dc3be3264d2d | 34 | #define USE_LCD 1 // 1= Display the data on LCD |
kenjiArai | 0:dc3be3264d2d | 35 | |
kenjiArai | 0:dc3be3264d2d | 36 | // Commands for GPS to turn on or off data strings |
kenjiArai | 0:dc3be3264d2d | 37 | #define RMC_ON "$PSRF103,4,0,1,1*21\r\n" |
kenjiArai | 0:dc3be3264d2d | 38 | #define RMC_OFF "$PSRF103,4,0,0,1*20\r\n" |
kenjiArai | 0:dc3be3264d2d | 39 | #define GGA_ON "$PSRF103,0,0,1,1*25\r\n" |
kenjiArai | 0:dc3be3264d2d | 40 | #define GGA_OFF "$PSRF103,0,0,0,1*24\r\n" |
kenjiArai | 0:dc3be3264d2d | 41 | #define GSA_ON "$PSRF103,2,0,1,1*27\r\n" |
kenjiArai | 0:dc3be3264d2d | 42 | #define GSA_OFF "$PSRF103,2,0,0,1*26\r\n" |
kenjiArai | 0:dc3be3264d2d | 43 | #define GSV_ON "$PSRF103,3,0,1,1*26\r\n" |
kenjiArai | 0:dc3be3264d2d | 44 | #define GSV_OFF "$PSRF103,3,0,0,1*27\r\n" |
kenjiArai | 0:dc3be3264d2d | 45 | #define WAAS_ON "$PSRF151,1*3F\r\n" |
kenjiArai | 0:dc3be3264d2d | 46 | #define WAAS_OFF "$PSRF151,0*3E\r\n" |
kenjiArai | 0:dc3be3264d2d | 47 | |
kenjiArai | 0:dc3be3264d2d | 48 | // kind of GPS data |
kenjiArai | 0:dc3be3264d2d | 49 | #define NONE 0 |
kenjiArai | 0:dc3be3264d2d | 50 | #define RMC 1 |
kenjiArai | 0:dc3be3264d2d | 51 | #define GGA 2 |
kenjiArai | 0:dc3be3264d2d | 52 | #define GSA 3 |
kenjiArai | 0:dc3be3264d2d | 53 | #define GSV 4 |
kenjiArai | 0:dc3be3264d2d | 54 | |
kenjiArai | 0:dc3be3264d2d | 55 | // SD Recording status |
kenjiArai | 0:dc3be3264d2d | 56 | #define IDLE 0 |
kenjiArai | 0:dc3be3264d2d | 57 | #define RECD 1 |
kenjiArai | 0:dc3be3264d2d | 58 | #define SD_FAIL 0xff |
kenjiArai | 0:dc3be3264d2d | 59 | |
kenjiArai | 0:dc3be3264d2d | 60 | // Buffer size |
kenjiArai | 0:dc3be3264d2d | 61 | #define BSIZ 256 |
kenjiArai | 0:dc3be3264d2d | 62 | |
kenjiArai | 0:dc3be3264d2d | 63 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 64 | // Set up hardware |
kenjiArai | 0:dc3be3264d2d | 65 | // MBED USB port used for console debug messages |
kenjiArai | 0:dc3be3264d2d | 66 | // SZP950T GPS unit connects to UART |
kenjiArai | 0:dc3be3264d2d | 67 | // LED & Switch |
kenjiArai | 0:dc3be3264d2d | 68 | // 40chr x 2 line Text LCD |
kenjiArai | 0:dc3be3264d2d | 69 | // SD card interface |
kenjiArai | 0:dc3be3264d2d | 70 | // Analog input |
kenjiArai | 0:dc3be3264d2d | 71 | // G-sensor data, Baterry volt, Temperature sensor data |
kenjiArai | 0:dc3be3264d2d | 72 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 73 | Serial pc(USBTX, USBRX); // tx, rx - Default 9600 baud |
kenjiArai | 0:dc3be3264d2d | 74 | #endif |
kenjiArai | 0:dc3be3264d2d | 75 | Serial gps(p9, p10); // tx, rx - 4800 baud required |
kenjiArai | 0:dc3be3264d2d | 76 | DigitalOut RCV_GPS(LED1); // Receive GPS data |
kenjiArai | 0:dc3be3264d2d | 77 | DigitalOut GPS_LOCK(LED2); // GPS got valid data |
kenjiArai | 0:dc3be3264d2d | 78 | DigitalOut ON_REC(LED4); // Data sent LED |
kenjiArai | 0:dc3be3264d2d | 79 | DigitalIn SW_REC(p26); // Data recode switch |
kenjiArai | 0:dc3be3264d2d | 80 | #if USE_LCD |
kenjiArai | 0:dc3be3264d2d | 81 | TextLCD lcd(p22, p23, p21, p8, p7, p6, p5, 40, 2); // rs,rw,e,d0,d1,d2,d3,40char's x 2 lines |
kenjiArai | 0:dc3be3264d2d | 82 | #endif |
kenjiArai | 0:dc3be3264d2d | 83 | SDFileSystem sd(p11, p12, p13, p14, "sd"); // do,di,clk,cs |
kenjiArai | 0:dc3be3264d2d | 84 | #if CONFG_ANA |
kenjiArai | 0:dc3be3264d2d | 85 | AnalogIn ain_G_X(p15); // G Sensor |
kenjiArai | 0:dc3be3264d2d | 86 | AnalogIn ain_G_Y(p16); // G Sensor |
kenjiArai | 0:dc3be3264d2d | 87 | AnalogIn ain_G_Z(p17); // G Sensor |
kenjiArai | 0:dc3be3264d2d | 88 | AnalogIn ain_BAT(p19); // Battery Volt |
kenjiArai | 0:dc3be3264d2d | 89 | AnalogIn ain_TEMP(p20); // Temperature Sensor |
kenjiArai | 0:dc3be3264d2d | 90 | #endif |
kenjiArai | 0:dc3be3264d2d | 91 | |
kenjiArai | 0:dc3be3264d2d | 92 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 93 | // Data rea |
kenjiArai | 0:dc3be3264d2d | 94 | char msg[BSIZ]; //GPS data buffer |
kenjiArai | 0:dc3be3264d2d | 95 | char MsgBuf_RMC[BSIZ]; // GPS/GGA data |
kenjiArai | 0:dc3be3264d2d | 96 | char MsgBuf_GGA[BSIZ]; // GPS/RMC data |
kenjiArai | 0:dc3be3264d2d | 97 | #if CONFG_ANA |
kenjiArai | 0:dc3be3264d2d | 98 | char MsgBuf_ANA[128]; // Analog data buffer |
kenjiArai | 0:dc3be3264d2d | 99 | float x,y,z,b,t; // Analog data |
kenjiArai | 0:dc3be3264d2d | 100 | #endif |
kenjiArai | 0:dc3be3264d2d | 101 | char gps_dat; // Kind of GPS data |
kenjiArai | 0:dc3be3264d2d | 102 | char recode_status; |
kenjiArai | 0:dc3be3264d2d | 103 | FILE *fp; // File pointer |
kenjiArai | 0:dc3be3264d2d | 104 | char buf[40]; // data buffer for text |
kenjiArai | 0:dc3be3264d2d | 105 | time_t seconds; // RTC data based on seconds |
kenjiArai | 0:dc3be3264d2d | 106 | |
kenjiArai | 0:dc3be3264d2d | 107 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 0:dc3be3264d2d | 108 | // --------------- CONTROL PROGRAM -------------------- |
kenjiArai | 0:dc3be3264d2d | 109 | |
kenjiArai | 0:dc3be3264d2d | 110 | // Select GPS data |
kenjiArai | 0:dc3be3264d2d | 111 | void setgps() { |
kenjiArai | 0:dc3be3264d2d | 112 | gps.printf(RMC_ON); // use RMC |
kenjiArai | 0:dc3be3264d2d | 113 | gps.printf(GGA_ON); // use GGA |
kenjiArai | 0:dc3be3264d2d | 114 | gps.printf(GSA_OFF); |
kenjiArai | 0:dc3be3264d2d | 115 | gps.printf(GSV_OFF); |
kenjiArai | 0:dc3be3264d2d | 116 | gps.printf(WAAS_OFF); |
kenjiArai | 0:dc3be3264d2d | 117 | return; |
kenjiArai | 0:dc3be3264d2d | 118 | } |
kenjiArai | 0:dc3be3264d2d | 119 | |
kenjiArai | 0:dc3be3264d2d | 120 | // Get line of data from GPS |
kenjiArai | 0:dc3be3264d2d | 121 | void getline() { |
kenjiArai | 0:dc3be3264d2d | 122 | while (gps.getc() != '$'); // Wait for start of line |
kenjiArai | 0:dc3be3264d2d | 123 | msg[0] = '$'; |
kenjiArai | 0:dc3be3264d2d | 124 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 125 | pc.putc('$'); |
kenjiArai | 0:dc3be3264d2d | 126 | #endif |
kenjiArai | 0:dc3be3264d2d | 127 | for (int i=1; i<512; i++) { |
kenjiArai | 0:dc3be3264d2d | 128 | msg[i] = gps.getc(); |
kenjiArai | 0:dc3be3264d2d | 129 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 130 | pc.putc(msg[i]); |
kenjiArai | 0:dc3be3264d2d | 131 | #endif |
kenjiArai | 0:dc3be3264d2d | 132 | if (msg[i] == '\r' || msg[i] == '\n') { |
kenjiArai | 0:dc3be3264d2d | 133 | msg[i] = '\r'; |
kenjiArai | 0:dc3be3264d2d | 134 | msg[i+1] = '\n'; |
kenjiArai | 0:dc3be3264d2d | 135 | msg[i+2] = 0; |
kenjiArai | 0:dc3be3264d2d | 136 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 137 | pc.printf("\r\n"); |
kenjiArai | 0:dc3be3264d2d | 138 | #endif |
kenjiArai | 0:dc3be3264d2d | 139 | return; |
kenjiArai | 0:dc3be3264d2d | 140 | } |
kenjiArai | 0:dc3be3264d2d | 141 | } |
kenjiArai | 0:dc3be3264d2d | 142 | } |
kenjiArai | 0:dc3be3264d2d | 143 | |
kenjiArai | 0:dc3be3264d2d | 144 | int main(void) { |
kenjiArai | 0:dc3be3264d2d | 145 | gps.baud(4800); // baud rate 4800 |
kenjiArai | 0:dc3be3264d2d | 146 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 147 | pc.printf("\r\n\r\nGPS logger on mbed by K.Arai/JH1PJL (c)2010\r\n"); |
kenjiArai | 0:dc3be3264d2d | 148 | #endif |
kenjiArai | 0:dc3be3264d2d | 149 | #if USE_LCD |
kenjiArai | 0:dc3be3264d2d | 150 | lcd.cls(); |
kenjiArai | 0:dc3be3264d2d | 151 | lcd.locate(0, 0); |
kenjiArai | 0:dc3be3264d2d | 152 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:dc3be3264d2d | 153 | lcd.printf("GPS Logger Running! .... "); |
kenjiArai | 0:dc3be3264d2d | 154 | #endif |
kenjiArai | 0:dc3be3264d2d | 155 | setgps(); |
kenjiArai | 0:dc3be3264d2d | 156 | while (1) { |
kenjiArai | 0:dc3be3264d2d | 157 | RCV_GPS = 1; |
kenjiArai | 0:dc3be3264d2d | 158 | getline(); // Get GPS data from UART |
kenjiArai | 0:dc3be3264d2d | 159 | if (strncmp(msg, "$GPRMC",6) == 0) { |
kenjiArai | 0:dc3be3264d2d | 160 | for (int i=0; i<BSIZ ; MsgBuf_RMC[i++]=0); // Clear buffer |
kenjiArai | 0:dc3be3264d2d | 161 | for (int i=0; msg[i] != 0; i++) { // Copy msg to RMC buffer |
kenjiArai | 0:dc3be3264d2d | 162 | MsgBuf_RMC[i] = msg[i]; |
kenjiArai | 0:dc3be3264d2d | 163 | } |
kenjiArai | 0:dc3be3264d2d | 164 | gps_dat = RMC; |
kenjiArai | 0:dc3be3264d2d | 165 | // Get analog data from each port |
kenjiArai | 0:dc3be3264d2d | 166 | #if CONFG_ANA |
kenjiArai | 0:dc3be3264d2d | 167 | x=ain_G_X.read(); |
kenjiArai | 0:dc3be3264d2d | 168 | y=ain_G_Y.read(); |
kenjiArai | 0:dc3be3264d2d | 169 | z=ain_G_Z.read(); |
kenjiArai | 0:dc3be3264d2d | 170 | b=ain_BAT.read(); |
kenjiArai | 0:dc3be3264d2d | 171 | t=ain_TEMP.read(); |
kenjiArai | 0:dc3be3264d2d | 172 | sprintf(MsgBuf_ANA, "$ANA,%f,%f,%f,%f,%f,,*00\r\n", x, y, z, b, t); |
kenjiArai | 0:dc3be3264d2d | 173 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 174 | pc.printf(MsgBuf_ANA); |
kenjiArai | 0:dc3be3264d2d | 175 | #endif |
kenjiArai | 0:dc3be3264d2d | 176 | #endif |
kenjiArai | 0:dc3be3264d2d | 177 | } else if (strncmp(msg, "$GPGGA",6) == 0) { |
kenjiArai | 0:dc3be3264d2d | 178 | for (int i=0; i<BSIZ ; MsgBuf_GGA[i++]=0); // Clear buffer |
kenjiArai | 0:dc3be3264d2d | 179 | for (int i=0; msg[i] != 0; i++) { // Copy msg to GGA buffer |
kenjiArai | 0:dc3be3264d2d | 180 | MsgBuf_GGA[i] = msg[i]; |
kenjiArai | 0:dc3be3264d2d | 181 | } |
kenjiArai | 0:dc3be3264d2d | 182 | gps_dat = GGA; |
kenjiArai | 0:dc3be3264d2d | 183 | } else { |
kenjiArai | 0:dc3be3264d2d | 184 | gps_dat = NONE; |
kenjiArai | 0:dc3be3264d2d | 185 | } |
kenjiArai | 0:dc3be3264d2d | 186 | RCV_GPS = 0; |
kenjiArai | 0:dc3be3264d2d | 187 | if (SW_REC){ |
kenjiArai | 0:dc3be3264d2d | 188 | if (recode_status == RECD){ |
kenjiArai | 0:dc3be3264d2d | 189 | // Recording -> on going |
kenjiArai | 0:dc3be3264d2d | 190 | ON_REC = 1; // LED ON for recording indication |
kenjiArai | 0:dc3be3264d2d | 191 | switch(gps_dat){ |
kenjiArai | 0:dc3be3264d2d | 192 | case RMC: { |
kenjiArai | 0:dc3be3264d2d | 193 | fprintf(fp,MsgBuf_RMC); // save data |
kenjiArai | 0:dc3be3264d2d | 194 | #if CONFG_ANA |
kenjiArai | 0:dc3be3264d2d | 195 | fprintf(fp,MsgBuf_ANA); // save data |
kenjiArai | 0:dc3be3264d2d | 196 | #endif |
kenjiArai | 0:dc3be3264d2d | 197 | break; |
kenjiArai | 0:dc3be3264d2d | 198 | } |
kenjiArai | 0:dc3be3264d2d | 199 | case GGA: { |
kenjiArai | 0:dc3be3264d2d | 200 | fprintf(fp,MsgBuf_GGA); // save data |
kenjiArai | 0:dc3be3264d2d | 201 | break; |
kenjiArai | 0:dc3be3264d2d | 202 | } |
kenjiArai | 0:dc3be3264d2d | 203 | default: {;} |
kenjiArai | 0:dc3be3264d2d | 204 | } |
kenjiArai | 0:dc3be3264d2d | 205 | } else if (recode_status == IDLE){ |
kenjiArai | 0:dc3be3264d2d | 206 | // Start recoding -> File open |
kenjiArai | 0:dc3be3264d2d | 207 | seconds = time(NULL); |
kenjiArai | 0:dc3be3264d2d | 208 | seconds %= 100000000; // Adjust 8 charcters file name |
kenjiArai | 0:dc3be3264d2d | 209 | sprintf(buf,"/sd/%d.txt",seconds); // File name based on time from 1970/1/1 |
kenjiArai | 0:dc3be3264d2d | 210 | fp = fopen(buf, "w"); // File open |
kenjiArai | 0:dc3be3264d2d | 211 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 212 | pc.printf("\r\n %s \r\n", buf); // File name on the screen |
kenjiArai | 0:dc3be3264d2d | 213 | #endif |
kenjiArai | 0:dc3be3264d2d | 214 | if(fp == NULL) { |
kenjiArai | 0:dc3be3264d2d | 215 | // Try again |
kenjiArai | 0:dc3be3264d2d | 216 | fp = fopen(buf, "w"); |
kenjiArai | 0:dc3be3264d2d | 217 | if(fp == NULL) { |
kenjiArai | 0:dc3be3264d2d | 218 | // File not open then give up |
kenjiArai | 0:dc3be3264d2d | 219 | #if USE_LCD |
kenjiArai | 0:dc3be3264d2d | 220 | lcd.locate(0, 0); |
kenjiArai | 0:dc3be3264d2d | 221 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:dc3be3264d2d | 222 | lcd.printf(" Could not open file for write "); |
kenjiArai | 0:dc3be3264d2d | 223 | #endif |
kenjiArai | 0:dc3be3264d2d | 224 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 225 | pc.printf( "\r\n Could not open file for write\r\n"); |
kenjiArai | 0:dc3be3264d2d | 226 | #endif |
kenjiArai | 0:dc3be3264d2d | 227 | recode_status = SD_FAIL; |
kenjiArai | 0:dc3be3264d2d | 228 | } |
kenjiArai | 0:dc3be3264d2d | 229 | } |
kenjiArai | 0:dc3be3264d2d | 230 | if (fp){ |
kenjiArai | 0:dc3be3264d2d | 231 | // File open successful |
kenjiArai | 0:dc3be3264d2d | 232 | fprintf(fp, "GPS logger on mbed by K.Arai/JH1PJL (c)2010\r\n"); |
kenjiArai | 0:dc3be3264d2d | 233 | #if USE_LCD |
kenjiArai | 0:dc3be3264d2d | 234 | lcd.locate(0, 0); |
kenjiArai | 0:dc3be3264d2d | 235 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:dc3be3264d2d | 236 | lcd.printf(" Start recording "); |
kenjiArai | 0:dc3be3264d2d | 237 | #endif |
kenjiArai | 0:dc3be3264d2d | 238 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 239 | pc.printf( "GPS logger on mbed by K.Arai/JH1PJL (c)2010"); |
kenjiArai | 0:dc3be3264d2d | 240 | pc.printf("\r\nStart recording\r\n"); |
kenjiArai | 0:dc3be3264d2d | 241 | #endif |
kenjiArai | 0:dc3be3264d2d | 242 | recode_status = RECD; |
kenjiArai | 0:dc3be3264d2d | 243 | } |
kenjiArai | 0:dc3be3264d2d | 244 | } |
kenjiArai | 0:dc3be3264d2d | 245 | } else { |
kenjiArai | 0:dc3be3264d2d | 246 | if (recode_status == RECD){ |
kenjiArai | 0:dc3be3264d2d | 247 | // File close |
kenjiArai | 0:dc3be3264d2d | 248 | fclose(fp); |
kenjiArai | 0:dc3be3264d2d | 249 | recode_status = IDLE; // back to idle state |
kenjiArai | 0:dc3be3264d2d | 250 | #if USE_LCD |
kenjiArai | 0:dc3be3264d2d | 251 | lcd.locate(0, 0); |
kenjiArai | 0:dc3be3264d2d | 252 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:dc3be3264d2d | 253 | lcd.printf("Finish data save "); |
kenjiArai | 0:dc3be3264d2d | 254 | #endif |
kenjiArai | 0:dc3be3264d2d | 255 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 256 | pc.printf( "\r\n Finish data save\r\n"); |
kenjiArai | 0:dc3be3264d2d | 257 | #endif |
kenjiArai | 0:dc3be3264d2d | 258 | } else if (recode_status == SD_FAIL){ |
kenjiArai | 0:dc3be3264d2d | 259 | // When file access failed |
kenjiArai | 0:dc3be3264d2d | 260 | recode_status = IDLE; // back to idle state |
kenjiArai | 0:dc3be3264d2d | 261 | #if USE_LCD |
kenjiArai | 0:dc3be3264d2d | 262 | lcd.locate(0, 0); |
kenjiArai | 0:dc3be3264d2d | 263 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:dc3be3264d2d | 264 | lcd.printf("Could not save the data "); |
kenjiArai | 0:dc3be3264d2d | 265 | #endif |
kenjiArai | 0:dc3be3264d2d | 266 | #if DEBUG |
kenjiArai | 0:dc3be3264d2d | 267 | pc.printf( "\r\n Could not save the data\r\n"); |
kenjiArai | 0:dc3be3264d2d | 268 | #endif |
kenjiArai | 0:dc3be3264d2d | 269 | } |
kenjiArai | 0:dc3be3264d2d | 270 | ON_REC = 0; // LED off for IDLE |
kenjiArai | 0:dc3be3264d2d | 271 | } |
kenjiArai | 0:dc3be3264d2d | 272 | } |
kenjiArai | 0:dc3be3264d2d | 273 | } |
kenjiArai | 0:dc3be3264d2d | 274 |