Toshihisa T
/
S1315FLogger
Skytraq S1315F-RAW-EVK Logger
main.cpp@0:e0ec137da369, 2010-12-18 (annotated)
- Committer:
- tosihisa
- Date:
- Sat Dec 18 11:17:21 2010 +0000
- Revision:
- 0:e0ec137da369
- Child:
- 1:d1bb695fe3bc
1st release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tosihisa | 0:e0ec137da369 | 1 | |
tosihisa | 0:e0ec137da369 | 2 | /* |
tosihisa | 0:e0ec137da369 | 3 | * S1315F-RAW-EVK Logger |
tosihisa | 0:e0ec137da369 | 4 | * (c) @tosihisa http://twitter.com/tosihisa |
tosihisa | 0:e0ec137da369 | 5 | */ |
tosihisa | 0:e0ec137da369 | 6 | |
tosihisa | 0:e0ec137da369 | 7 | #include "mbed.h" |
tosihisa | 0:e0ec137da369 | 8 | #include "TextLCD.h" |
tosihisa | 0:e0ec137da369 | 9 | #include "SDFileSystem.h" |
tosihisa | 0:e0ec137da369 | 10 | #include "libT/mbed/tserialbuffer.h" |
tosihisa | 0:e0ec137da369 | 11 | |
tosihisa | 0:e0ec137da369 | 12 | #define OUTPUT_RATE_1HZ |
tosihisa | 0:e0ec137da369 | 13 | |
tosihisa | 0:e0ec137da369 | 14 | using namespace libT; |
tosihisa | 0:e0ec137da369 | 15 | |
tosihisa | 0:e0ec137da369 | 16 | Serial debug(USBTX,USBRX); |
tosihisa | 0:e0ec137da369 | 17 | InterruptIn PPS(p15); |
tosihisa | 0:e0ec137da369 | 18 | PwmOut PPSLED(LED1); |
tosihisa | 0:e0ec137da369 | 19 | PwmOut LOGLED(LED4); |
tosihisa | 0:e0ec137da369 | 20 | tSerialBuffer gps(p13,p14); |
tosihisa | 0:e0ec137da369 | 21 | DigitalIn LogSW(p22); |
tosihisa | 0:e0ec137da369 | 22 | Ticker timer; |
tosihisa | 0:e0ec137da369 | 23 | |
tosihisa | 0:e0ec137da369 | 24 | TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7 |
tosihisa | 0:e0ec137da369 | 25 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
tosihisa | 0:e0ec137da369 | 26 | |
tosihisa | 0:e0ec137da369 | 27 | int logSW_state[2] = { 0 , 0 }; |
tosihisa | 0:e0ec137da369 | 28 | int logSW_idx = 0; |
tosihisa | 0:e0ec137da369 | 29 | unsigned long jif = 0; |
tosihisa | 0:e0ec137da369 | 30 | void timer_handler() |
tosihisa | 0:e0ec137da369 | 31 | { |
tosihisa | 0:e0ec137da369 | 32 | logSW_state[logSW_idx] = (LogSW != 0) ? 1 : 0; |
tosihisa | 0:e0ec137da369 | 33 | logSW_idx = (logSW_idx + 1) & 1; |
tosihisa | 0:e0ec137da369 | 34 | jif++; |
tosihisa | 0:e0ec137da369 | 35 | } |
tosihisa | 0:e0ec137da369 | 36 | |
tosihisa | 0:e0ec137da369 | 37 | int pps_count = 0; |
tosihisa | 0:e0ec137da369 | 38 | void pps_rise() |
tosihisa | 0:e0ec137da369 | 39 | { |
tosihisa | 0:e0ec137da369 | 40 | pps_count++; |
tosihisa | 0:e0ec137da369 | 41 | if(pps_count & 1) |
tosihisa | 0:e0ec137da369 | 42 | PPSLED=0.20; |
tosihisa | 0:e0ec137da369 | 43 | else |
tosihisa | 0:e0ec137da369 | 44 | PPSLED=0.0; |
tosihisa | 0:e0ec137da369 | 45 | } |
tosihisa | 0:e0ec137da369 | 46 | |
tosihisa | 0:e0ec137da369 | 47 | typedef struct Skytraq_bin_info_s { |
tosihisa | 0:e0ec137da369 | 48 | int cjobst; |
tosihisa | 0:e0ec137da369 | 49 | unsigned short len; |
tosihisa | 0:e0ec137da369 | 50 | unsigned short recv; |
tosihisa | 0:e0ec137da369 | 51 | unsigned char sum; |
tosihisa | 0:e0ec137da369 | 52 | unsigned char ID; |
tosihisa | 0:e0ec137da369 | 53 | unsigned char body[2048]; |
tosihisa | 0:e0ec137da369 | 54 | void *work; |
tosihisa | 0:e0ec137da369 | 55 | |
tosihisa | 0:e0ec137da369 | 56 | unsigned long KERNEL_ver; |
tosihisa | 0:e0ec137da369 | 57 | unsigned long ODM_ver; |
tosihisa | 0:e0ec137da369 | 58 | unsigned long Revision; |
tosihisa | 0:e0ec137da369 | 59 | } Skytraq_bin_info_t; |
tosihisa | 0:e0ec137da369 | 60 | |
tosihisa | 0:e0ec137da369 | 61 | typedef struct Skytraq_ID_s { |
tosihisa | 0:e0ec137da369 | 62 | unsigned char ID; |
tosihisa | 0:e0ec137da369 | 63 | int (*func)(Skytraq_bin_info_t *info); |
tosihisa | 0:e0ec137da369 | 64 | char *name; |
tosihisa | 0:e0ec137da369 | 65 | } Skytraq_ID_t; |
tosihisa | 0:e0ec137da369 | 66 | |
tosihisa | 0:e0ec137da369 | 67 | int Skytraq_0x80(Skytraq_bin_info_t *info) |
tosihisa | 0:e0ec137da369 | 68 | { |
tosihisa | 0:e0ec137da369 | 69 | int idx = 1; |
tosihisa | 0:e0ec137da369 | 70 | |
tosihisa | 0:e0ec137da369 | 71 | info->KERNEL_ver = 0; |
tosihisa | 0:e0ec137da369 | 72 | info->KERNEL_ver = (info->KERNEL_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 73 | info->KERNEL_ver = (info->KERNEL_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 74 | info->KERNEL_ver = (info->KERNEL_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 75 | info->KERNEL_ver = (info->KERNEL_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 76 | |
tosihisa | 0:e0ec137da369 | 77 | info->ODM_ver = 0; |
tosihisa | 0:e0ec137da369 | 78 | info->ODM_ver = (info->ODM_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 79 | info->ODM_ver = (info->ODM_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 80 | info->ODM_ver = (info->ODM_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 81 | info->ODM_ver = (info->ODM_ver << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 82 | |
tosihisa | 0:e0ec137da369 | 83 | info->Revision = 0; |
tosihisa | 0:e0ec137da369 | 84 | info->Revision = (info->Revision << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 85 | info->Revision = (info->Revision << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 86 | info->Revision = (info->Revision << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 87 | info->Revision = (info->Revision << 8) | info->body[idx]; idx++; |
tosihisa | 0:e0ec137da369 | 88 | |
tosihisa | 0:e0ec137da369 | 89 | for(idx = 0;idx < 14;idx++){ |
tosihisa | 0:e0ec137da369 | 90 | debug.printf("%02x ",info->body[idx]); |
tosihisa | 0:e0ec137da369 | 91 | } |
tosihisa | 0:e0ec137da369 | 92 | debug.printf("\n"); |
tosihisa | 0:e0ec137da369 | 93 | debug.printf("KERNEL:0x%08x , ODM:0x%08x , Rev:0x%08x\n",info->KERNEL_ver,info->ODM_ver,info->Revision); |
tosihisa | 0:e0ec137da369 | 94 | |
tosihisa | 0:e0ec137da369 | 95 | return 0; |
tosihisa | 0:e0ec137da369 | 96 | } |
tosihisa | 0:e0ec137da369 | 97 | |
tosihisa | 0:e0ec137da369 | 98 | Skytraq_ID_t Skytraq_ID_List[] = { |
tosihisa | 0:e0ec137da369 | 99 | { 0x01 ,NULL,"Input System Restart Force system to restart"}, |
tosihisa | 0:e0ec137da369 | 100 | { 0x02 ,NULL,"Input Query Software version Query revision information of software"}, |
tosihisa | 0:e0ec137da369 | 101 | { 0x03 ,NULL,"Input Query Software CRC Query the CRC of the software"}, |
tosihisa | 0:e0ec137da369 | 102 | { 0x04 ,NULL,"Input Set Factory Defaults Set system to factory default values"}, |
tosihisa | 0:e0ec137da369 | 103 | { 0x05 ,NULL,"Input Configure Serial Port Set up serial port COM, baud rate, data bits, stop bits and parity"}, |
tosihisa | 0:e0ec137da369 | 104 | { 0x06 ,NULL,"Input Reserved Reserved"}, |
tosihisa | 0:e0ec137da369 | 105 | { 0x07 ,NULL,"Input Reserved Reserved"}, |
tosihisa | 0:e0ec137da369 | 106 | { 0x08 ,NULL,"Input Configure NMEA Configure NMEA output message"}, |
tosihisa | 0:e0ec137da369 | 107 | { 0x09 ,NULL,"Input Configure Output Message Format Configure the output message format from GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 108 | { 0x0C ,NULL,"Input Configure Power Mode Set system power mode" }, |
tosihisa | 0:e0ec137da369 | 109 | { 0x0E ,NULL,"Input Configure position update rate Configure the position update rate of GPS system" }, |
tosihisa | 0:e0ec137da369 | 110 | { 0x10 ,NULL,"Input Query position update rate Query the position update rate of GPS system" }, |
tosihisa | 0:e0ec137da369 | 111 | { 0x11 ,NULL,"Input Get Almanac Retrieve almanac data of the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 112 | { 0x12 ,NULL,"Input Configure binary measurement output rates Configure the output rates of the binary measurement outputs Input GPS Messages" }, |
tosihisa | 0:e0ec137da369 | 113 | { 0x29 ,NULL,"Input Configure Datum Configure Datum of the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 114 | { 0x2D ,NULL,"Input Query Datum Query datum used by the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 115 | { 0x30 ,NULL,"Input Get Ephemeris Retrieve ephemeris data of the GPS receiver Output System Messages" }, |
tosihisa | 0:e0ec137da369 | 116 | { 0x31 ,NULL,"Input Set ephemeris Set ephemeris data to the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 117 | { 0x37 ,NULL,"Input Configure WAAS Configure the enable or disable of WAAS" }, |
tosihisa | 0:e0ec137da369 | 118 | { 0x38 ,NULL,"Input Query WAAS status Query WAAS status of GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 119 | { 0x39 ,NULL,"Input Configure position pinning Enable or disable position pinning of GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 120 | { 0x3A ,NULL,"Input Query position pinning Query position pinning status of the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 121 | { 0x3B ,NULL,"Input Configure position pinning parameters Set position pinning parameters of GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 122 | { 0x3C ,NULL,"Input Configuration navigation mode Configure the navigation mode of GPS system" }, |
tosihisa | 0:e0ec137da369 | 123 | { 0x3D ,NULL,"Input Query navigation mode Query the navigation mode of GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 124 | { 0x3E ,NULL,"Input Configure 1PPS mode Set 1PPS mode to the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 125 | { 0x3F ,NULL,"Input Query 1PPS mode Query 1PPS mode of the GPS receiver" }, |
tosihisa | 0:e0ec137da369 | 126 | { 0x80 ,Skytraq_0x80,"Output Software version Software revision of the receiver" }, |
tosihisa | 0:e0ec137da369 | 127 | { 0x81 ,NULL,"Output Software CRC Software CRC of the receiver" }, |
tosihisa | 0:e0ec137da369 | 128 | { 0x82 ,NULL,"Output Reserved Reserved" }, |
tosihisa | 0:e0ec137da369 | 129 | { 0x83 ,NULL,"Output ACK ACK to a successful input message" }, |
tosihisa | 0:e0ec137da369 | 130 | { 0x84 ,NULL,"Output NACK Response to an unsuccessful input message" }, |
tosihisa | 0:e0ec137da369 | 131 | { 0x86 ,NULL,"Output Position update rate Position update rate of GPS system" }, |
tosihisa | 0:e0ec137da369 | 132 | { 0x87 ,NULL,"Output GPS Almanac Data Outputting the GPS Almanac Data of GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 133 | { 0xAE ,NULL,"Output GPS Datum Datum used by the GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 134 | { 0xB1 ,NULL,"Output GPS Ephemeris Data Outputting the GPS Ephemeris Data of GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 135 | { 0xB3 ,NULL,"Output GPS WAAS status WAAS status of the GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 136 | { 0xB4 ,NULL,"Output GPS Position pinning status Position pinning status of the GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 137 | { 0xB5 ,NULL,"Output GPS navigation mode Navigation mode of the GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 138 | { 0xB6 ,NULL,"Output GPS 1PPS mode 1PPS mode of GPS receiver"}, |
tosihisa | 0:e0ec137da369 | 139 | { 0xDC ,NULL,"Output MEAS_TIME Measurement time information"}, |
tosihisa | 0:e0ec137da369 | 140 | { 0xDD ,NULL,"Output RAW_MEAS Raw channel measurements"}, |
tosihisa | 0:e0ec137da369 | 141 | { 0xDE ,NULL,"Output SV_CH_STATUS SV and Channel status information"}, |
tosihisa | 0:e0ec137da369 | 142 | { 0xDF ,NULL,"Output RCV_STATE GPS receiver navigation state"}, |
tosihisa | 0:e0ec137da369 | 143 | { 0xE0 ,NULL,"Output SUBFRAME Subframe buffer data"}, |
tosihisa | 0:e0ec137da369 | 144 | { 0xFF ,NULL,"****UNKNOWN****"} |
tosihisa | 0:e0ec137da369 | 145 | }; |
tosihisa | 0:e0ec137da369 | 146 | |
tosihisa | 0:e0ec137da369 | 147 | char Skytraq_QUERY_SOFTWARE_VERSION[] = {0xA0,0xA1,0x00,0x02,0x02,0x00,0x02,0x0D,0x0A}; |
tosihisa | 0:e0ec137da369 | 148 | |
tosihisa | 0:e0ec137da369 | 149 | unsigned char Skytraq_set_rate[] = { |
tosihisa | 0:e0ec137da369 | 150 | 0x12, /* ID */ |
tosihisa | 0:e0ec137da369 | 151 | 0x00, /* 00: 1Hz / 01: 2Hz / 02: 4Hz / 03: 5Hz / 04: 10Hz / 05: 20Hz / Others: 20Hz */ |
tosihisa | 0:e0ec137da369 | 152 | 0x01, /* Meas_time Enabling */ |
tosihisa | 0:e0ec137da369 | 153 | 0x01, /* Raw_meas Enabling */ |
tosihisa | 0:e0ec137da369 | 154 | 0x00, /* SV_CH_Staus Enabling */ |
tosihisa | 0:e0ec137da369 | 155 | 0x00, /* RCV_State Enabling */ |
tosihisa | 0:e0ec137da369 | 156 | 0x00, /* Subframe Enabling */ |
tosihisa | 0:e0ec137da369 | 157 | 0x00 /* Attributes */ |
tosihisa | 0:e0ec137da369 | 158 | }; |
tosihisa | 0:e0ec137da369 | 159 | |
tosihisa | 0:e0ec137da369 | 160 | void Skytraq_bin_send(unsigned short LEN,unsigned char *body) |
tosihisa | 0:e0ec137da369 | 161 | { |
tosihisa | 0:e0ec137da369 | 162 | unsigned short i; |
tosihisa | 0:e0ec137da369 | 163 | unsigned char sum; |
tosihisa | 0:e0ec137da369 | 164 | gps.putc(0xA0); |
tosihisa | 0:e0ec137da369 | 165 | gps.putc(0xA1); |
tosihisa | 0:e0ec137da369 | 166 | gps.putc((LEN >> 8) & 0x00ff); |
tosihisa | 0:e0ec137da369 | 167 | gps.putc(LEN & 0x00ff); |
tosihisa | 0:e0ec137da369 | 168 | sum = 0; |
tosihisa | 0:e0ec137da369 | 169 | for(i = 0;i < LEN;i++){ |
tosihisa | 0:e0ec137da369 | 170 | gps.putc((char)(*(body+i))); |
tosihisa | 0:e0ec137da369 | 171 | sum = sum ^ *(body+i); |
tosihisa | 0:e0ec137da369 | 172 | } |
tosihisa | 0:e0ec137da369 | 173 | gps.putc(sum); |
tosihisa | 0:e0ec137da369 | 174 | gps.putc(0x0D); |
tosihisa | 0:e0ec137da369 | 175 | gps.putc(0x0A); |
tosihisa | 0:e0ec137da369 | 176 | } |
tosihisa | 0:e0ec137da369 | 177 | |
tosihisa | 0:e0ec137da369 | 178 | void Skytraq_bin_parse(unsigned char c,Skytraq_bin_info_t *info) |
tosihisa | 0:e0ec137da369 | 179 | { |
tosihisa | 0:e0ec137da369 | 180 | if(info->cjobst == 0){ |
tosihisa | 0:e0ec137da369 | 181 | if(c == 0xa0){ |
tosihisa | 0:e0ec137da369 | 182 | info->cjobst = 1; |
tosihisa | 0:e0ec137da369 | 183 | } else { |
tosihisa | 0:e0ec137da369 | 184 | info->cjobst = 0; |
tosihisa | 0:e0ec137da369 | 185 | } |
tosihisa | 0:e0ec137da369 | 186 | } else if(info->cjobst == 1){ |
tosihisa | 0:e0ec137da369 | 187 | if(c == 0xa1){ |
tosihisa | 0:e0ec137da369 | 188 | info->cjobst = 2; |
tosihisa | 0:e0ec137da369 | 189 | } else { |
tosihisa | 0:e0ec137da369 | 190 | info->cjobst = 0; |
tosihisa | 0:e0ec137da369 | 191 | } |
tosihisa | 0:e0ec137da369 | 192 | } else if(info->cjobst == 2){ |
tosihisa | 0:e0ec137da369 | 193 | info->len = c; |
tosihisa | 0:e0ec137da369 | 194 | info->cjobst = 3; |
tosihisa | 0:e0ec137da369 | 195 | } else if(info->cjobst == 3){ |
tosihisa | 0:e0ec137da369 | 196 | info->len = (info->len << 8) | c; |
tosihisa | 0:e0ec137da369 | 197 | info->cjobst = 4; |
tosihisa | 0:e0ec137da369 | 198 | info->sum = 0; |
tosihisa | 0:e0ec137da369 | 199 | info->recv = 0; |
tosihisa | 0:e0ec137da369 | 200 | if(info->len >= sizeof(info->body)){ |
tosihisa | 0:e0ec137da369 | 201 | info->cjobst = 0; |
tosihisa | 0:e0ec137da369 | 202 | } |
tosihisa | 0:e0ec137da369 | 203 | } else if(info->cjobst == 4){ |
tosihisa | 0:e0ec137da369 | 204 | if(info->recv == 0){ |
tosihisa | 0:e0ec137da369 | 205 | info->ID = c; |
tosihisa | 0:e0ec137da369 | 206 | } else { |
tosihisa | 0:e0ec137da369 | 207 | info->body[info->recv - 1] = c; |
tosihisa | 0:e0ec137da369 | 208 | } |
tosihisa | 0:e0ec137da369 | 209 | info->sum = info->sum ^ c; |
tosihisa | 0:e0ec137da369 | 210 | info->recv++; |
tosihisa | 0:e0ec137da369 | 211 | if(info->recv >= info->len){ |
tosihisa | 0:e0ec137da369 | 212 | info->cjobst = 5; |
tosihisa | 0:e0ec137da369 | 213 | } |
tosihisa | 0:e0ec137da369 | 214 | } else if(info->cjobst == 5){ |
tosihisa | 0:e0ec137da369 | 215 | //debug.printf("sum[%02x][%02x]\n",info->sum,c); |
tosihisa | 0:e0ec137da369 | 216 | if(info->sum == c){ |
tosihisa | 0:e0ec137da369 | 217 | info->cjobst = 6; |
tosihisa | 0:e0ec137da369 | 218 | } else { |
tosihisa | 0:e0ec137da369 | 219 | info->cjobst = 0; |
tosihisa | 0:e0ec137da369 | 220 | debug.printf("\nSUMERROR[%02x][%02x]\n",info->sum,c); |
tosihisa | 0:e0ec137da369 | 221 | } |
tosihisa | 0:e0ec137da369 | 222 | } |
tosihisa | 0:e0ec137da369 | 223 | } |
tosihisa | 0:e0ec137da369 | 224 | |
tosihisa | 0:e0ec137da369 | 225 | unsigned char wbuf[512]; |
tosihisa | 0:e0ec137da369 | 226 | int wcnt = 0; |
tosihisa | 0:e0ec137da369 | 227 | |
tosihisa | 0:e0ec137da369 | 228 | int main() { |
tosihisa | 0:e0ec137da369 | 229 | Skytraq_bin_info_t bin_info; |
tosihisa | 0:e0ec137da369 | 230 | int i; |
tosihisa | 0:e0ec137da369 | 231 | unsigned long recv_count = 0; |
tosihisa | 0:e0ec137da369 | 232 | unsigned long recv_bytes = 0; |
tosihisa | 0:e0ec137da369 | 233 | FILE *fp = NULL; |
tosihisa | 0:e0ec137da369 | 234 | int save_done = 0; |
tosihisa | 0:e0ec137da369 | 235 | unsigned char c; |
tosihisa | 0:e0ec137da369 | 236 | int do_log = 0; |
tosihisa | 0:e0ec137da369 | 237 | |
tosihisa | 0:e0ec137da369 | 238 | bin_info.cjobst = 0; |
tosihisa | 0:e0ec137da369 | 239 | |
tosihisa | 0:e0ec137da369 | 240 | debug.format(8,Serial::None,1); |
tosihisa | 0:e0ec137da369 | 241 | debug.baud(115200); |
tosihisa | 0:e0ec137da369 | 242 | debug.printf("GPS Logger \"__S1315F__1\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\x0d\x0a"); |
tosihisa | 0:e0ec137da369 | 243 | |
tosihisa | 0:e0ec137da369 | 244 | PPS.rise(pps_rise); |
tosihisa | 0:e0ec137da369 | 245 | |
tosihisa | 0:e0ec137da369 | 246 | lcd.cls(); |
tosihisa | 0:e0ec137da369 | 247 | lcd.locate(0,0); |
tosihisa | 0:e0ec137da369 | 248 | lcd.printf("S1315F Logger"); |
tosihisa | 0:e0ec137da369 | 249 | |
tosihisa | 0:e0ec137da369 | 250 | lcd.locate(0,1); |
tosihisa | 0:e0ec137da369 | 251 | lcd.printf("Please wait"); |
tosihisa | 0:e0ec137da369 | 252 | wait(1.0); |
tosihisa | 0:e0ec137da369 | 253 | |
tosihisa | 0:e0ec137da369 | 254 | gps.format(8,Serial::None,1); |
tosihisa | 0:e0ec137da369 | 255 | gps.baud(115200); |
tosihisa | 0:e0ec137da369 | 256 | gps.recvStart(); |
tosihisa | 0:e0ec137da369 | 257 | |
tosihisa | 0:e0ec137da369 | 258 | Skytraq_set_rate[1] = 0x05; |
tosihisa | 0:e0ec137da369 | 259 | #ifdef OUTPUT_RATE_1HZ |
tosihisa | 0:e0ec137da369 | 260 | Skytraq_set_rate[1] = 0x00; |
tosihisa | 0:e0ec137da369 | 261 | #endif |
tosihisa | 0:e0ec137da369 | 262 | Skytraq_bin_send(sizeof(Skytraq_set_rate),Skytraq_set_rate); |
tosihisa | 0:e0ec137da369 | 263 | |
tosihisa | 0:e0ec137da369 | 264 | timer.attach_us(timer_handler,1000*100); |
tosihisa | 0:e0ec137da369 | 265 | |
tosihisa | 0:e0ec137da369 | 266 | while(1) { |
tosihisa | 0:e0ec137da369 | 267 | // for(i = 0;i < sizeof(Skytraq_QUERY_SOFTWARE_VERSION);i++){ |
tosihisa | 0:e0ec137da369 | 268 | // gps.putc(Skytraq_QUERY_SOFTWARE_VERSION[i]); |
tosihisa | 0:e0ec137da369 | 269 | // } |
tosihisa | 0:e0ec137da369 | 270 | if((logSW_state[0] == 0) && (logSW_state[0] == 0)){ |
tosihisa | 0:e0ec137da369 | 271 | LOGLED=0; |
tosihisa | 0:e0ec137da369 | 272 | do_log = 0; |
tosihisa | 0:e0ec137da369 | 273 | #if 0 |
tosihisa | 0:e0ec137da369 | 274 | if(recv_bytes >= (2024*1024)){ |
tosihisa | 0:e0ec137da369 | 275 | fclose(fp); |
tosihisa | 0:e0ec137da369 | 276 | fp = NULL; |
tosihisa | 0:e0ec137da369 | 277 | debug.printf("FILE Close\n"); |
tosihisa | 0:e0ec137da369 | 278 | save_done = 1; |
tosihisa | 0:e0ec137da369 | 279 | } |
tosihisa | 0:e0ec137da369 | 280 | #endif |
tosihisa | 0:e0ec137da369 | 281 | } |
tosihisa | 0:e0ec137da369 | 282 | if((logSW_state[0] != 0) && (logSW_state[0] != 0)){ |
tosihisa | 0:e0ec137da369 | 283 | LOGLED=0.20; |
tosihisa | 0:e0ec137da369 | 284 | do_log = 1; |
tosihisa | 0:e0ec137da369 | 285 | #if 0 |
tosihisa | 0:e0ec137da369 | 286 | if(fp == NULL){ |
tosihisa | 0:e0ec137da369 | 287 | fp = fopen("/sd/rawdata.dat","w+b"); |
tosihisa | 0:e0ec137da369 | 288 | debug.printf("FILE Open=%p\n",fp); |
tosihisa | 0:e0ec137da369 | 289 | wcnt = 0; |
tosihisa | 0:e0ec137da369 | 290 | } |
tosihisa | 0:e0ec137da369 | 291 | #endif |
tosihisa | 0:e0ec137da369 | 292 | } |
tosihisa | 0:e0ec137da369 | 293 | |
tosihisa | 0:e0ec137da369 | 294 | if (gps.readable()) { |
tosihisa | 0:e0ec137da369 | 295 | c = (unsigned char)(gps.getc()); |
tosihisa | 0:e0ec137da369 | 296 | Skytraq_bin_parse(c,&bin_info); |
tosihisa | 0:e0ec137da369 | 297 | recv_bytes++; |
tosihisa | 0:e0ec137da369 | 298 | if(fp != NULL){ |
tosihisa | 0:e0ec137da369 | 299 | wbuf[wcnt] = c; |
tosihisa | 0:e0ec137da369 | 300 | wcnt++; |
tosihisa | 0:e0ec137da369 | 301 | if(wcnt >= sizeof(wbuf)){ |
tosihisa | 0:e0ec137da369 | 302 | fwrite(wbuf,sizeof(wbuf[0]),sizeof(wbuf)/sizeof(wbuf[0]),fp); |
tosihisa | 0:e0ec137da369 | 303 | wcnt = 0; |
tosihisa | 0:e0ec137da369 | 304 | } |
tosihisa | 0:e0ec137da369 | 305 | } |
tosihisa | 0:e0ec137da369 | 306 | if(bin_info.cjobst == 6){ |
tosihisa | 0:e0ec137da369 | 307 | for(i = 0;Skytraq_ID_List[i].ID != 0xFF;i++){ |
tosihisa | 0:e0ec137da369 | 308 | if(bin_info.ID == Skytraq_ID_List[i].ID){ |
tosihisa | 0:e0ec137da369 | 309 | break; |
tosihisa | 0:e0ec137da369 | 310 | } |
tosihisa | 0:e0ec137da369 | 311 | } |
tosihisa | 0:e0ec137da369 | 312 | recv_count++; |
tosihisa | 0:e0ec137da369 | 313 | lcd.locate(0,1); |
tosihisa | 0:e0ec137da369 | 314 | lcd.printf("R:%-10lu %c",recv_bytes,(do_log) ? '*' : ' '); |
tosihisa | 0:e0ec137da369 | 315 | debug.printf("ID=%02x len=%5d [%s]\n",bin_info.ID,bin_info.len,Skytraq_ID_List[i].name); |
tosihisa | 0:e0ec137da369 | 316 | //if(Skytraq_ID_List[i].func != NULL){ |
tosihisa | 0:e0ec137da369 | 317 | // (*Skytraq_ID_List[i].func)(&bin_info); |
tosihisa | 0:e0ec137da369 | 318 | //} |
tosihisa | 0:e0ec137da369 | 319 | bin_info.cjobst = 0; |
tosihisa | 0:e0ec137da369 | 320 | } |
tosihisa | 0:e0ec137da369 | 321 | //debug.printf("[%02x]",gps.getc()); |
tosihisa | 0:e0ec137da369 | 322 | } |
tosihisa | 0:e0ec137da369 | 323 | } |
tosihisa | 0:e0ec137da369 | 324 | } |