![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
main program
Dependencies: PQMPU9250 PQINA226 mbed PQAEGPS PQEEPROM PQADXL375 SDFileSystem PQLPS22HB PQES920LR
main.cpp@5:22adf1eae5e4, 2020-03-02 (annotated)
- Committer:
- tanahashi
- Date:
- Mon Mar 02 07:16:00 2020 +0000
- Revision:
- 5:22adf1eae5e4
- Parent:
- 4:5bc218b2a974
fixed pinout
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tanahashi | 0:106e97338223 | 1 | #include "mbed.h" |
tanahashi | 0:106e97338223 | 2 | #include "SDFileSystem.h" |
tanahashi | 0:106e97338223 | 3 | |
tanahashi | 0:106e97338223 | 4 | #include "PQADXL375.h" |
tanahashi | 0:106e97338223 | 5 | #include "PQAEGPS.h" |
tanahashi | 0:106e97338223 | 6 | #include "PQEEPROM.h" |
tanahashi | 0:106e97338223 | 7 | #include "PQES920LR.h" |
tanahashi | 0:106e97338223 | 8 | #include "PQINA226.h" |
tanahashi | 0:106e97338223 | 9 | #include "PQLPS22HB.h" |
tanahashi | 0:106e97338223 | 10 | #include "PQMPU9250.h" |
tanahashi | 0:106e97338223 | 11 | |
tanahashi | 2:104839501493 | 12 | #define BURN_TIME 3.0f |
tanahashi | 2:104839501493 | 13 | #define T_SEP 7.0f |
tanahashi | 1:5c46289e3bd1 | 14 | #define T_RECOVERY 14.0f |
tanahashi | 1:5c46289e3bd1 | 15 | |
tanahashi | 2:104839501493 | 16 | #define DEBUG_RATE 1 |
tanahashi | 2:104839501493 | 17 | #define DATA_RATE 20 |
tanahashi | 2:104839501493 | 18 | #define LOG_RATE 1 |
tanahashi | 1:5c46289e3bd1 | 19 | #define DOWNLINK_RATE 1 |
tanahashi | 1:5c46289e3bd1 | 20 | |
tanahashi | 2:104839501493 | 21 | #define LOG_HEADER 0x11 |
tanahashi | 1:5c46289e3bd1 | 22 | #define DOWNLINK_HEADER 0x12 |
tanahashi | 2:104839501493 | 23 | #define UPLINK_HEADER 0x13 |
tanahashi | 1:5c46289e3bd1 | 24 | |
tanahashi | 2:104839501493 | 25 | #define TIME_LSB 54.931640625 |
tanahashi | 1:5c46289e3bd1 | 26 | #define VOLTAGE_LSB 1.25 |
tanahashi | 2:104839501493 | 27 | #define CURRENT_LSB 1.0986328125 |
tanahashi | 2:104839501493 | 28 | #define PRESS_LSB 0.0384521484375 |
tanahashi | 2:104839501493 | 29 | #define TEMP_LSB 0.002593994140625 |
tanahashi | 2:104839501493 | 30 | #define ACCEL_LSB 0.00048828125 |
tanahashi | 2:104839501493 | 31 | #define GYRO_LSB 0.06103515625 |
tanahashi | 2:104839501493 | 32 | #define MAG_LSB 0.146484375 |
tanahashi | 0:106e97338223 | 33 | |
tanahashi | 0:106e97338223 | 34 | Serial pc(USBTX, USBRX, 115200); |
tanahashi | 1:5c46289e3bd1 | 35 | |
tanahashi | 5:22adf1eae5e4 | 36 | Serial gps_serial(p9, p10, 115200); |
tanahashi | 5:22adf1eae5e4 | 37 | Serial es_serial(p13, p14, 115200); |
tanahashi | 0:106e97338223 | 38 | |
tanahashi | 0:106e97338223 | 39 | I2C i2c(p28, p27); |
tanahashi | 0:106e97338223 | 40 | |
tanahashi | 1:5c46289e3bd1 | 41 | SDFileSystem sd_file_system(p5, p6, p7, p8, "sd"); |
tanahashi | 1:5c46289e3bd1 | 42 | |
tanahashi | 1:5c46289e3bd1 | 43 | ES920LR es(es_serial); |
tanahashi | 0:106e97338223 | 44 | |
tanahashi | 0:106e97338223 | 45 | AEGPS gps(gps_serial); |
tanahashi | 0:106e97338223 | 46 | |
tanahashi | 0:106e97338223 | 47 | ADXL375 adxl(i2c, ADXL375::ALT_ADDRESS_HIGH); |
tanahashi | 0:106e97338223 | 48 | INA226 ina_in(i2c, INA226::A0_VS, INA226::A1_VS); |
tanahashi | 0:106e97338223 | 49 | INA226 ina_ex(i2c, INA226::A0_GND, INA226::A1_GND); |
tanahashi | 0:106e97338223 | 50 | LPS22HB lps(i2c, LPS22HB::SA0_HIGH); |
tanahashi | 0:106e97338223 | 51 | MPU9250 mpu(i2c, MPU9250::AD0_HIGH); |
tanahashi | 0:106e97338223 | 52 | |
tanahashi | 0:106e97338223 | 53 | EEPROM eeprom(i2c); |
tanahashi | 0:106e97338223 | 54 | |
tanahashi | 0:106e97338223 | 55 | Timer mission_timer; |
tanahashi | 0:106e97338223 | 56 | Timer flight_timer; |
tanahashi | 0:106e97338223 | 57 | Timer sd_timer; |
tanahashi | 0:106e97338223 | 58 | |
tanahashi | 5:22adf1eae5e4 | 59 | Ticker downlink_ticker; |
tanahashi | 0:106e97338223 | 60 | Ticker log_ticker; |
tanahashi | 5:22adf1eae5e4 | 61 | Ticker debug_ticker; |
tanahashi | 0:106e97338223 | 62 | |
tanahashi | 5:22adf1eae5e4 | 63 | DigitalIn debug_pin(p17); |
tanahashi | 5:22adf1eae5e4 | 64 | DigitalIn liftoff_pin(p18); |
tanahashi | 5:22adf1eae5e4 | 65 | DigitalIn ems_pin(p19); |
tanahashi | 5:22adf1eae5e4 | 66 | DigitalIn flight_pin(p20); |
tanahashi | 0:106e97338223 | 67 | |
tanahashi | 5:22adf1eae5e4 | 68 | DigitalOut sep(p21); |
tanahashi | 5:22adf1eae5e4 | 69 | DigitalOut buzzer(p23); |
tanahashi | 5:22adf1eae5e4 | 70 | DigitalOut sig(p24); |
tanahashi | 1:5c46289e3bd1 | 71 | |
tanahashi | 2:104839501493 | 72 | BusOut led(LED1, LED2, LED3, LED4); |
tanahashi | 0:106e97338223 | 73 | |
tanahashi | 0:106e97338223 | 74 | void init(); |
tanahashi | 0:106e97338223 | 75 | void read(); |
tanahashi | 2:104839501493 | 76 | void command_handler(char *command); |
tanahashi | 0:106e97338223 | 77 | void downlink(); |
tanahashi | 2:104839501493 | 78 | void log(); |
tanahashi | 2:104839501493 | 79 | void debug(); |
tanahashi | 0:106e97338223 | 80 | |
tanahashi | 1:5c46289e3bd1 | 81 | FILE *sd; |
tanahashi | 0:106e97338223 | 82 | |
tanahashi | 1:5c46289e3bd1 | 83 | char file_name[64]; |
tanahashi | 1:5c46289e3bd1 | 84 | |
tanahashi | 2:104839501493 | 85 | bool launched = false; |
tanahashi | 2:104839501493 | 86 | bool burning = false; |
tanahashi | 2:104839501493 | 87 | bool apogee = false; |
tanahashi | 2:104839501493 | 88 | int t = 0; |
tanahashi | 2:104839501493 | 89 | |
tanahashi | 2:104839501493 | 90 | int addr; |
tanahashi | 0:106e97338223 | 91 | |
tanahashi | 1:5c46289e3bd1 | 92 | char mission_timer_reset; |
tanahashi | 1:5c46289e3bd1 | 93 | int mission_time; |
tanahashi | 1:5c46289e3bd1 | 94 | int flight_time; |
tanahashi | 1:5c46289e3bd1 | 95 | char f_sd; |
tanahashi | 1:5c46289e3bd1 | 96 | char f_gps; |
tanahashi | 1:5c46289e3bd1 | 97 | char f_adxl; |
tanahashi | 1:5c46289e3bd1 | 98 | char f_ina_in; |
tanahashi | 1:5c46289e3bd1 | 99 | char f_ina_ex; |
tanahashi | 1:5c46289e3bd1 | 100 | char f_lps; |
tanahashi | 1:5c46289e3bd1 | 101 | char f_mpu; |
tanahashi | 1:5c46289e3bd1 | 102 | char f_mpu_ak; |
tanahashi | 1:5c46289e3bd1 | 103 | enum { |
tanahashi | 1:5c46289e3bd1 | 104 | SAFETY, |
tanahashi | 1:5c46289e3bd1 | 105 | READY, |
tanahashi | 1:5c46289e3bd1 | 106 | FLIGHT, |
tanahashi | 1:5c46289e3bd1 | 107 | SEP, |
tanahashi | 1:5c46289e3bd1 | 108 | EMERGENCY, |
tanahashi | 1:5c46289e3bd1 | 109 | RECOVERY |
tanahashi | 1:5c46289e3bd1 | 110 | } phase; |
tanahashi | 1:5c46289e3bd1 | 111 | int utc_hour; |
tanahashi | 1:5c46289e3bd1 | 112 | int utc_min; |
tanahashi | 1:5c46289e3bd1 | 113 | float utc_sec; |
tanahashi | 1:5c46289e3bd1 | 114 | float lat; |
tanahashi | 1:5c46289e3bd1 | 115 | float lon; |
tanahashi | 1:5c46289e3bd1 | 116 | int sat; |
tanahashi | 1:5c46289e3bd1 | 117 | int fix; |
tanahashi | 1:5c46289e3bd1 | 118 | float hdop; |
tanahashi | 1:5c46289e3bd1 | 119 | float alt; |
tanahashi | 1:5c46289e3bd1 | 120 | float geoid; |
tanahashi | 1:5c46289e3bd1 | 121 | float high_accel[3]; |
tanahashi | 1:5c46289e3bd1 | 122 | float voltage_in; |
tanahashi | 1:5c46289e3bd1 | 123 | float current_in; |
tanahashi | 1:5c46289e3bd1 | 124 | float voltage_ex; |
tanahashi | 1:5c46289e3bd1 | 125 | float current_ex; |
tanahashi | 1:5c46289e3bd1 | 126 | float press; |
tanahashi | 1:5c46289e3bd1 | 127 | float temp; |
tanahashi | 1:5c46289e3bd1 | 128 | float accel[3]; |
tanahashi | 1:5c46289e3bd1 | 129 | float gyro[3]; |
tanahashi | 1:5c46289e3bd1 | 130 | float mag[3]; |
tanahashi | 1:5c46289e3bd1 | 131 | |
tanahashi | 2:104839501493 | 132 | float coef = 0.01; |
tanahashi | 2:104839501493 | 133 | float press_prev_LPF; |
tanahashi | 2:104839501493 | 134 | float press_LPF; |
tanahashi | 2:104839501493 | 135 | float press_LPF_prev; |
tanahashi | 2:104839501493 | 136 | float press_LPF_diff; |
tanahashi | 1:5c46289e3bd1 | 137 | |
tanahashi | 1:5c46289e3bd1 | 138 | short mission_time_bits; |
tanahashi | 1:5c46289e3bd1 | 139 | short flight_time_bits; |
tanahashi | 1:5c46289e3bd1 | 140 | char flags; |
tanahashi | 1:5c46289e3bd1 | 141 | short voltage_in_bits; |
tanahashi | 1:5c46289e3bd1 | 142 | short current_in_bits; |
tanahashi | 1:5c46289e3bd1 | 143 | short voltage_ex_bits; |
tanahashi | 1:5c46289e3bd1 | 144 | short current_ex_bits; |
tanahashi | 1:5c46289e3bd1 | 145 | short press_bits; |
tanahashi | 1:5c46289e3bd1 | 146 | short temp_bits; |
tanahashi | 1:5c46289e3bd1 | 147 | short accel_bits[3]; |
tanahashi | 1:5c46289e3bd1 | 148 | short gyro_bits[3]; |
tanahashi | 1:5c46289e3bd1 | 149 | short mag_bits[3]; |
tanahashi | 0:106e97338223 | 150 | |
tanahashi | 0:106e97338223 | 151 | int main() |
tanahashi | 0:106e97338223 | 152 | { |
tanahashi | 0:106e97338223 | 153 | mission_timer.start(); |
tanahashi | 1:5c46289e3bd1 | 154 | init(); |
tanahashi | 1:5c46289e3bd1 | 155 | |
tanahashi | 0:106e97338223 | 156 | while(1) { |
tanahashi | 0:106e97338223 | 157 | read(); |
tanahashi | 1:5c46289e3bd1 | 158 | led = phase; |
tanahashi | 4:5bc218b2a974 | 159 | if(ems_pin) phase = EMERGENCY; |
tanahashi | 1:5c46289e3bd1 | 160 | switch(phase) { |
tanahashi | 1:5c46289e3bd1 | 161 | case SAFETY: |
tanahashi | 1:5c46289e3bd1 | 162 | break; |
tanahashi | 1:5c46289e3bd1 | 163 | case READY: |
tanahashi | 2:104839501493 | 164 | if(flight_pin || liftoff_pin) phase = FLIGHT; |
tanahashi | 1:5c46289e3bd1 | 165 | break; |
tanahashi | 1:5c46289e3bd1 | 166 | case FLIGHT: |
tanahashi | 1:5c46289e3bd1 | 167 | if(!launched) { |
tanahashi | 1:5c46289e3bd1 | 168 | flight_timer.reset(); |
tanahashi | 1:5c46289e3bd1 | 169 | flight_timer.start(); |
tanahashi | 2:104839501493 | 170 | launched = true; |
tanahashi | 2:104839501493 | 171 | burning = true; |
tanahashi | 1:5c46289e3bd1 | 172 | } |
tanahashi | 2:104839501493 | 173 | if(flight_timer.read() > BURN_TIME) { |
tanahashi | 2:104839501493 | 174 | if(burning) { |
tanahashi | 2:104839501493 | 175 | burning = false; |
tanahashi | 2:104839501493 | 176 | press_LPF_prev = press_LPF; |
tanahashi | 2:104839501493 | 177 | } |
tanahashi | 2:104839501493 | 178 | if((flight_timer.read_ms() - t) > 500) { |
tanahashi | 2:104839501493 | 179 | press_LPF_diff = press_LPF - press_LPF_prev; |
tanahashi | 2:104839501493 | 180 | press_LPF_prev = press_LPF; |
tanahashi | 2:104839501493 | 181 | if(press_LPF_diff > 0.0f) { |
tanahashi | 2:104839501493 | 182 | apogee = true; |
tanahashi | 3:84d2520b9079 | 183 | } else { |
tanahashi | 3:84d2520b9079 | 184 | t = flight_timer.read_ms(); |
tanahashi | 2:104839501493 | 185 | } |
tanahashi | 2:104839501493 | 186 | } |
tanahashi | 2:104839501493 | 187 | if(!burning && (apogee || flight_timer.read() > T_SEP)) { |
tanahashi | 1:5c46289e3bd1 | 188 | phase = SEP; |
tanahashi | 1:5c46289e3bd1 | 189 | } |
tanahashi | 1:5c46289e3bd1 | 190 | } |
tanahashi | 1:5c46289e3bd1 | 191 | break; |
tanahashi | 1:5c46289e3bd1 | 192 | case SEP: |
tanahashi | 1:5c46289e3bd1 | 193 | buzzer = 1; |
tanahashi | 1:5c46289e3bd1 | 194 | sep = 1; |
tanahashi | 1:5c46289e3bd1 | 195 | if(flight_timer.read() > T_RECOVERY) phase = RECOVERY; |
tanahashi | 1:5c46289e3bd1 | 196 | break; |
tanahashi | 1:5c46289e3bd1 | 197 | case EMERGENCY: |
tanahashi | 2:104839501493 | 198 | buzzer = 0; |
tanahashi | 1:5c46289e3bd1 | 199 | sep = 0; |
tanahashi | 1:5c46289e3bd1 | 200 | break; |
tanahashi | 1:5c46289e3bd1 | 201 | case RECOVERY: |
tanahashi | 2:104839501493 | 202 | buzzer = 1; |
tanahashi | 1:5c46289e3bd1 | 203 | sep = 0; |
tanahashi | 1:5c46289e3bd1 | 204 | break; |
tanahashi | 0:106e97338223 | 205 | } |
tanahashi | 0:106e97338223 | 206 | } |
tanahashi | 0:106e97338223 | 207 | } |
tanahashi | 0:106e97338223 | 208 | |
tanahashi | 0:106e97338223 | 209 | void init() |
tanahashi | 0:106e97338223 | 210 | { |
tanahashi | 1:5c46289e3bd1 | 211 | char file_name_format[] = "/sd/IZU2020_AVIONICS_%d.dat"; |
tanahashi | 1:5c46289e3bd1 | 212 | int file_number = 1; |
tanahashi | 1:5c46289e3bd1 | 213 | while(1) { |
tanahashi | 1:5c46289e3bd1 | 214 | sprintf(file_name, file_name_format, file_number); |
tanahashi | 1:5c46289e3bd1 | 215 | sd = fopen(file_name, "r"); |
tanahashi | 1:5c46289e3bd1 | 216 | if(sd != NULL) { |
tanahashi | 1:5c46289e3bd1 | 217 | fclose(sd); |
tanahashi | 1:5c46289e3bd1 | 218 | file_number++; |
tanahashi | 1:5c46289e3bd1 | 219 | } else { |
tanahashi | 1:5c46289e3bd1 | 220 | sprintf(file_name, "/sd/IZU2020_AVIONICS_%d.dat", file_number); |
tanahashi | 1:5c46289e3bd1 | 221 | break; |
tanahashi | 1:5c46289e3bd1 | 222 | } |
tanahashi | 1:5c46289e3bd1 | 223 | } |
tanahashi | 1:5c46289e3bd1 | 224 | sd = fopen(file_name, "w"); |
tanahashi | 2:104839501493 | 225 | sd_timer.start(); |
tanahashi | 1:5c46289e3bd1 | 226 | |
tanahashi | 1:5c46289e3bd1 | 227 | if(sd) { |
tanahashi | 1:5c46289e3bd1 | 228 | fprintf(sd, "mission_timer_reset,"); |
tanahashi | 1:5c46289e3bd1 | 229 | fprintf(sd, "mission_time,"); |
tanahashi | 1:5c46289e3bd1 | 230 | fprintf(sd, "flight_time,"); |
tanahashi | 1:5c46289e3bd1 | 231 | fprintf(sd, "phase,"); |
tanahashi | 1:5c46289e3bd1 | 232 | fprintf(sd, "f_sd,"); |
tanahashi | 1:5c46289e3bd1 | 233 | fprintf(sd, "f_gps,"); |
tanahashi | 1:5c46289e3bd1 | 234 | fprintf(sd, "f_adxl,"); |
tanahashi | 1:5c46289e3bd1 | 235 | fprintf(sd, "f_ina_in,"); |
tanahashi | 1:5c46289e3bd1 | 236 | fprintf(sd, "f_ina_ex,"); |
tanahashi | 1:5c46289e3bd1 | 237 | fprintf(sd, "f_lps,"); |
tanahashi | 1:5c46289e3bd1 | 238 | fprintf(sd, "f_mpu,"); |
tanahashi | 1:5c46289e3bd1 | 239 | fprintf(sd, "f_mpu_ak,"); |
tanahashi | 1:5c46289e3bd1 | 240 | fprintf(sd, "lat,"); |
tanahashi | 1:5c46289e3bd1 | 241 | fprintf(sd, "lon,"); |
tanahashi | 1:5c46289e3bd1 | 242 | fprintf(sd, "sat,"); |
tanahashi | 1:5c46289e3bd1 | 243 | fprintf(sd, "fix,"); |
tanahashi | 1:5c46289e3bd1 | 244 | fprintf(sd, "hdop,"); |
tanahashi | 1:5c46289e3bd1 | 245 | fprintf(sd, "alt,"); |
tanahashi | 1:5c46289e3bd1 | 246 | fprintf(sd, "geoid,"); |
tanahashi | 1:5c46289e3bd1 | 247 | fprintf(sd, "high_accel_x,"); |
tanahashi | 1:5c46289e3bd1 | 248 | fprintf(sd, "high_accel_y,"); |
tanahashi | 1:5c46289e3bd1 | 249 | fprintf(sd, "high_accel_z,"); |
tanahashi | 1:5c46289e3bd1 | 250 | fprintf(sd, "voltage_in,"); |
tanahashi | 1:5c46289e3bd1 | 251 | fprintf(sd, "current_in,"); |
tanahashi | 1:5c46289e3bd1 | 252 | fprintf(sd, "voltage_ex,"); |
tanahashi | 1:5c46289e3bd1 | 253 | fprintf(sd, "current_ex,"); |
tanahashi | 1:5c46289e3bd1 | 254 | fprintf(sd, "press,"); |
tanahashi | 1:5c46289e3bd1 | 255 | fprintf(sd, "temp,"); |
tanahashi | 1:5c46289e3bd1 | 256 | fprintf(sd, "accel_x,"); |
tanahashi | 1:5c46289e3bd1 | 257 | fprintf(sd, "accel_y,"); |
tanahashi | 1:5c46289e3bd1 | 258 | fprintf(sd, "accel_z,"); |
tanahashi | 1:5c46289e3bd1 | 259 | fprintf(sd, "gyro_x,"); |
tanahashi | 1:5c46289e3bd1 | 260 | fprintf(sd, "gyro_y,"); |
tanahashi | 1:5c46289e3bd1 | 261 | fprintf(sd, "gyro_z,"); |
tanahashi | 1:5c46289e3bd1 | 262 | fprintf(sd, "mag_x,"); |
tanahashi | 1:5c46289e3bd1 | 263 | fprintf(sd, "mag_y,"); |
tanahashi | 1:5c46289e3bd1 | 264 | fprintf(sd, "mag_z,"); |
tanahashi | 1:5c46289e3bd1 | 265 | fprintf(sd, "\r\n"); |
tanahashi | 1:5c46289e3bd1 | 266 | } |
tanahashi | 1:5c46289e3bd1 | 267 | |
tanahashi | 5:22adf1eae5e4 | 268 | debug_pin.mode(PullUp); |
tanahashi | 1:5c46289e3bd1 | 269 | liftoff_pin.mode(PullDown); |
tanahashi | 1:5c46289e3bd1 | 270 | ems_pin.mode(PullDown); |
tanahashi | 1:5c46289e3bd1 | 271 | flight_pin.mode(PullUp); |
tanahashi | 2:104839501493 | 272 | |
tanahashi | 2:104839501493 | 273 | debug_ticker.attach(debug, 1.0f / DEBUG_RATE); |
tanahashi | 2:104839501493 | 274 | log_ticker.attach(log, 1.0f / LOG_RATE); |
tanahashi | 1:5c46289e3bd1 | 275 | downlink_ticker.attach(downlink, 1.0f / DOWNLINK_RATE); |
tanahashi | 1:5c46289e3bd1 | 276 | |
tanahashi | 1:5c46289e3bd1 | 277 | es.attach(command_handler); |
tanahashi | 0:106e97338223 | 278 | |
tanahashi | 0:106e97338223 | 279 | adxl.begin(); |
tanahashi | 0:106e97338223 | 280 | ina_in.begin(); |
tanahashi | 0:106e97338223 | 281 | ina_ex.begin(); |
tanahashi | 0:106e97338223 | 282 | lps.begin(); |
tanahashi | 0:106e97338223 | 283 | mpu.begin(); |
tanahashi | 0:106e97338223 | 284 | } |
tanahashi | 0:106e97338223 | 285 | |
tanahashi | 0:106e97338223 | 286 | void read() |
tanahashi | 0:106e97338223 | 287 | { |
tanahashi | 2:104839501493 | 288 | if(mission_timer.read_ms() >= 30*60*1000) { |
tanahashi | 2:104839501493 | 289 | mission_timer.reset(); |
tanahashi | 2:104839501493 | 290 | mission_timer_reset++; |
tanahashi | 2:104839501493 | 291 | } |
tanahashi | 1:5c46289e3bd1 | 292 | mission_time = mission_timer.read_ms(); |
tanahashi | 1:5c46289e3bd1 | 293 | flight_time = flight_timer.read_ms(); |
tanahashi | 0:106e97338223 | 294 | |
tanahashi | 1:5c46289e3bd1 | 295 | utc_hour = gps.get_hour(); |
tanahashi | 1:5c46289e3bd1 | 296 | utc_min = gps.get_min(); |
tanahashi | 1:5c46289e3bd1 | 297 | utc_sec = gps.get_sec(); |
tanahashi | 1:5c46289e3bd1 | 298 | lat = gps.get_lat(); |
tanahashi | 1:5c46289e3bd1 | 299 | lon = gps.get_lon(); |
tanahashi | 1:5c46289e3bd1 | 300 | sat = gps.get_sat(); |
tanahashi | 1:5c46289e3bd1 | 301 | fix = gps.get_fix(); |
tanahashi | 1:5c46289e3bd1 | 302 | hdop = gps.get_hdop(); |
tanahashi | 1:5c46289e3bd1 | 303 | alt = gps.get_alt(); |
tanahashi | 1:5c46289e3bd1 | 304 | geoid = gps.get_geoid(); |
tanahashi | 1:5c46289e3bd1 | 305 | |
tanahashi | 1:5c46289e3bd1 | 306 | f_sd = (bool)sd; |
tanahashi | 1:5c46289e3bd1 | 307 | |
tanahashi | 2:104839501493 | 308 | f_gps = (bool)fix; |
tanahashi | 2:104839501493 | 309 | |
tanahashi | 1:5c46289e3bd1 | 310 | f_adxl = adxl.test(); |
tanahashi | 2:104839501493 | 311 | if(f_adxl) { |
tanahashi | 2:104839501493 | 312 | adxl.read(high_accel); |
tanahashi | 2:104839501493 | 313 | } |
tanahashi | 1:5c46289e3bd1 | 314 | |
tanahashi | 1:5c46289e3bd1 | 315 | f_ina_in = ina_in.test(); |
tanahashi | 1:5c46289e3bd1 | 316 | if(f_ina_in) { |
tanahashi | 1:5c46289e3bd1 | 317 | ina_in.read_voltage(&voltage_in); |
tanahashi | 1:5c46289e3bd1 | 318 | ina_in.read_current(¤t_in); |
tanahashi | 1:5c46289e3bd1 | 319 | } |
tanahashi | 0:106e97338223 | 320 | |
tanahashi | 1:5c46289e3bd1 | 321 | f_ina_ex = ina_ex.test(); |
tanahashi | 1:5c46289e3bd1 | 322 | if(f_ina_ex) { |
tanahashi | 1:5c46289e3bd1 | 323 | ina_ex.read_voltage(&voltage_ex); |
tanahashi | 1:5c46289e3bd1 | 324 | ina_ex.read_current(¤t_ex); |
tanahashi | 1:5c46289e3bd1 | 325 | } |
tanahashi | 0:106e97338223 | 326 | |
tanahashi | 1:5c46289e3bd1 | 327 | f_lps = lps.test(); |
tanahashi | 1:5c46289e3bd1 | 328 | if(f_lps) { |
tanahashi | 1:5c46289e3bd1 | 329 | lps.read_press(&press); |
tanahashi | 1:5c46289e3bd1 | 330 | lps.read_temp(&temp); |
tanahashi | 2:104839501493 | 331 | |
tanahashi | 2:104839501493 | 332 | press_LPF = press * coef + press_prev_LPF * (1 - coef); |
tanahashi | 2:104839501493 | 333 | press_prev_LPF = press_LPF; |
tanahashi | 1:5c46289e3bd1 | 334 | } |
tanahashi | 0:106e97338223 | 335 | |
tanahashi | 1:5c46289e3bd1 | 336 | f_mpu = mpu.test(); |
tanahashi | 1:5c46289e3bd1 | 337 | if(f_mpu) { |
tanahashi | 1:5c46289e3bd1 | 338 | mpu.read_accel(accel); |
tanahashi | 1:5c46289e3bd1 | 339 | mpu.read_gyro(gyro); |
tanahashi | 1:5c46289e3bd1 | 340 | } |
tanahashi | 0:106e97338223 | 341 | |
tanahashi | 1:5c46289e3bd1 | 342 | f_mpu_ak = mpu.test_AK8963(); |
tanahashi | 1:5c46289e3bd1 | 343 | if(f_mpu_ak) { |
tanahashi | 1:5c46289e3bd1 | 344 | mpu.read_mag(mag); |
tanahashi | 1:5c46289e3bd1 | 345 | } |
tanahashi | 0:106e97338223 | 346 | } |
tanahashi | 0:106e97338223 | 347 | |
tanahashi | 0:106e97338223 | 348 | void command_handler(char *command) |
tanahashi | 0:106e97338223 | 349 | { |
tanahashi | 0:106e97338223 | 350 | switch(command[0]) { |
tanahashi | 1:5c46289e3bd1 | 351 | case 0x80: |
tanahashi | 1:5c46289e3bd1 | 352 | break; |
tanahashi | 1:5c46289e3bd1 | 353 | case 0x81: |
tanahashi | 1:5c46289e3bd1 | 354 | break; |
tanahashi | 1:5c46289e3bd1 | 355 | case 0x82: |
tanahashi | 1:5c46289e3bd1 | 356 | break; |
tanahashi | 1:5c46289e3bd1 | 357 | case 0x83: |
tanahashi | 1:5c46289e3bd1 | 358 | break; |
tanahashi | 1:5c46289e3bd1 | 359 | case 0x84: |
tanahashi | 1:5c46289e3bd1 | 360 | break; |
tanahashi | 1:5c46289e3bd1 | 361 | case 0x85: |
tanahashi | 1:5c46289e3bd1 | 362 | break; |
tanahashi | 1:5c46289e3bd1 | 363 | case 0x86: |
tanahashi | 1:5c46289e3bd1 | 364 | break; |
tanahashi | 1:5c46289e3bd1 | 365 | case 0x87: |
tanahashi | 1:5c46289e3bd1 | 366 | break; |
tanahashi | 1:5c46289e3bd1 | 367 | case 0x88: |
tanahashi | 1:5c46289e3bd1 | 368 | break; |
tanahashi | 1:5c46289e3bd1 | 369 | case 0x89: |
tanahashi | 1:5c46289e3bd1 | 370 | break; |
tanahashi | 1:5c46289e3bd1 | 371 | case 0x8A: |
tanahashi | 1:5c46289e3bd1 | 372 | break; |
tanahashi | 1:5c46289e3bd1 | 373 | case 0x8B: |
tanahashi | 1:5c46289e3bd1 | 374 | break; |
tanahashi | 1:5c46289e3bd1 | 375 | case 0x8C: |
tanahashi | 1:5c46289e3bd1 | 376 | break; |
tanahashi | 1:5c46289e3bd1 | 377 | case 0x8D: |
tanahashi | 1:5c46289e3bd1 | 378 | break; |
tanahashi | 1:5c46289e3bd1 | 379 | case 0x8E: |
tanahashi | 1:5c46289e3bd1 | 380 | break; |
tanahashi | 1:5c46289e3bd1 | 381 | case 0x8F: |
tanahashi | 1:5c46289e3bd1 | 382 | break; |
tanahashi | 1:5c46289e3bd1 | 383 | case 0x90: |
tanahashi | 1:5c46289e3bd1 | 384 | break; |
tanahashi | 1:5c46289e3bd1 | 385 | case 0x91: |
tanahashi | 1:5c46289e3bd1 | 386 | break; |
tanahashi | 1:5c46289e3bd1 | 387 | case 0x92: |
tanahashi | 1:5c46289e3bd1 | 388 | break; |
tanahashi | 1:5c46289e3bd1 | 389 | case 0x93: |
tanahashi | 1:5c46289e3bd1 | 390 | break; |
tanahashi | 1:5c46289e3bd1 | 391 | case 0x94: |
tanahashi | 1:5c46289e3bd1 | 392 | break; |
tanahashi | 1:5c46289e3bd1 | 393 | case 0x95: |
tanahashi | 1:5c46289e3bd1 | 394 | break; |
tanahashi | 1:5c46289e3bd1 | 395 | case 0x96: |
tanahashi | 1:5c46289e3bd1 | 396 | break; |
tanahashi | 1:5c46289e3bd1 | 397 | case 0x97: |
tanahashi | 1:5c46289e3bd1 | 398 | break; |
tanahashi | 1:5c46289e3bd1 | 399 | case 0x98: |
tanahashi | 1:5c46289e3bd1 | 400 | break; |
tanahashi | 1:5c46289e3bd1 | 401 | case 0x99: |
tanahashi | 1:5c46289e3bd1 | 402 | break; |
tanahashi | 1:5c46289e3bd1 | 403 | case 0x9A: |
tanahashi | 1:5c46289e3bd1 | 404 | break; |
tanahashi | 1:5c46289e3bd1 | 405 | case 0x9B: |
tanahashi | 1:5c46289e3bd1 | 406 | break; |
tanahashi | 1:5c46289e3bd1 | 407 | case 0x9C: |
tanahashi | 1:5c46289e3bd1 | 408 | break; |
tanahashi | 1:5c46289e3bd1 | 409 | case 0x9D: |
tanahashi | 1:5c46289e3bd1 | 410 | break; |
tanahashi | 1:5c46289e3bd1 | 411 | case 0x9E: |
tanahashi | 1:5c46289e3bd1 | 412 | break; |
tanahashi | 1:5c46289e3bd1 | 413 | case 0x9F: |
tanahashi | 0:106e97338223 | 414 | break; |
tanahashi | 1:5c46289e3bd1 | 415 | case 0xA0: |
tanahashi | 1:5c46289e3bd1 | 416 | break; |
tanahashi | 1:5c46289e3bd1 | 417 | case 0xA1: |
tanahashi | 1:5c46289e3bd1 | 418 | break; |
tanahashi | 1:5c46289e3bd1 | 419 | case 0xA2: |
tanahashi | 1:5c46289e3bd1 | 420 | break; |
tanahashi | 1:5c46289e3bd1 | 421 | case 0xA3: |
tanahashi | 1:5c46289e3bd1 | 422 | break; |
tanahashi | 1:5c46289e3bd1 | 423 | case 0xA4: |
tanahashi | 1:5c46289e3bd1 | 424 | break; |
tanahashi | 1:5c46289e3bd1 | 425 | case 0xA5: |
tanahashi | 1:5c46289e3bd1 | 426 | break; |
tanahashi | 1:5c46289e3bd1 | 427 | case 0xA6: |
tanahashi | 1:5c46289e3bd1 | 428 | break; |
tanahashi | 1:5c46289e3bd1 | 429 | case 0xA7: |
tanahashi | 1:5c46289e3bd1 | 430 | break; |
tanahashi | 1:5c46289e3bd1 | 431 | case 0xA8: |
tanahashi | 1:5c46289e3bd1 | 432 | break; |
tanahashi | 1:5c46289e3bd1 | 433 | case 0xA9: |
tanahashi | 1:5c46289e3bd1 | 434 | break; |
tanahashi | 1:5c46289e3bd1 | 435 | case 0xAA: |
tanahashi | 1:5c46289e3bd1 | 436 | break; |
tanahashi | 1:5c46289e3bd1 | 437 | case 0xAB: |
tanahashi | 1:5c46289e3bd1 | 438 | break; |
tanahashi | 1:5c46289e3bd1 | 439 | case 0xAC: |
tanahashi | 1:5c46289e3bd1 | 440 | break; |
tanahashi | 1:5c46289e3bd1 | 441 | case 0xAD: |
tanahashi | 1:5c46289e3bd1 | 442 | break; |
tanahashi | 1:5c46289e3bd1 | 443 | case 0xAE: |
tanahashi | 1:5c46289e3bd1 | 444 | break; |
tanahashi | 1:5c46289e3bd1 | 445 | case 0xAF: |
tanahashi | 0:106e97338223 | 446 | break; |
tanahashi | 1:5c46289e3bd1 | 447 | case 0xB0: |
tanahashi | 1:5c46289e3bd1 | 448 | if(phase == READY) phase = SAFETY; |
tanahashi | 1:5c46289e3bd1 | 449 | break; |
tanahashi | 1:5c46289e3bd1 | 450 | case 0xB1: |
tanahashi | 1:5c46289e3bd1 | 451 | if(phase == SAFETY) phase = READY; |
tanahashi | 1:5c46289e3bd1 | 452 | break; |
tanahashi | 1:5c46289e3bd1 | 453 | case 0xB2: |
tanahashi | 1:5c46289e3bd1 | 454 | if(phase == READY) phase = FLIGHT; |
tanahashi | 1:5c46289e3bd1 | 455 | break; |
tanahashi | 1:5c46289e3bd1 | 456 | case 0xB3: |
tanahashi | 2:104839501493 | 457 | if(!burning & phase == FLIGHT) phase = SEP; |
tanahashi | 1:5c46289e3bd1 | 458 | break; |
tanahashi | 1:5c46289e3bd1 | 459 | case 0xB4: |
tanahashi | 1:5c46289e3bd1 | 460 | if(phase >= FLIGHT & phase <= SEP) phase = EMERGENCY; |
tanahashi | 1:5c46289e3bd1 | 461 | break; |
tanahashi | 1:5c46289e3bd1 | 462 | case 0xB5: |
tanahashi | 1:5c46289e3bd1 | 463 | if(phase == SEP) phase = RECOVERY; |
tanahashi | 1:5c46289e3bd1 | 464 | break; |
tanahashi | 1:5c46289e3bd1 | 465 | case 0xB6: |
tanahashi | 1:5c46289e3bd1 | 466 | break; |
tanahashi | 1:5c46289e3bd1 | 467 | case 0xB7: |
tanahashi | 1:5c46289e3bd1 | 468 | break; |
tanahashi | 1:5c46289e3bd1 | 469 | case 0xB8: |
tanahashi | 1:5c46289e3bd1 | 470 | break; |
tanahashi | 1:5c46289e3bd1 | 471 | case 0xB9: |
tanahashi | 1:5c46289e3bd1 | 472 | break; |
tanahashi | 1:5c46289e3bd1 | 473 | case 0xBA: |
tanahashi | 1:5c46289e3bd1 | 474 | break; |
tanahashi | 1:5c46289e3bd1 | 475 | case 0xBB: |
tanahashi | 1:5c46289e3bd1 | 476 | break; |
tanahashi | 1:5c46289e3bd1 | 477 | case 0xBC: |
tanahashi | 1:5c46289e3bd1 | 478 | break; |
tanahashi | 1:5c46289e3bd1 | 479 | case 0xBD: |
tanahashi | 1:5c46289e3bd1 | 480 | break; |
tanahashi | 1:5c46289e3bd1 | 481 | case 0xBE: |
tanahashi | 0:106e97338223 | 482 | break; |
tanahashi | 1:5c46289e3bd1 | 483 | case 0xBF: |
tanahashi | 1:5c46289e3bd1 | 484 | break; |
tanahashi | 1:5c46289e3bd1 | 485 | case 0xC0: |
tanahashi | 1:5c46289e3bd1 | 486 | break; |
tanahashi | 1:5c46289e3bd1 | 487 | case 0xC1: |
tanahashi | 1:5c46289e3bd1 | 488 | break; |
tanahashi | 1:5c46289e3bd1 | 489 | case 0xC2: |
tanahashi | 1:5c46289e3bd1 | 490 | break; |
tanahashi | 1:5c46289e3bd1 | 491 | case 0xC3: |
tanahashi | 1:5c46289e3bd1 | 492 | break; |
tanahashi | 1:5c46289e3bd1 | 493 | case 0xC4: |
tanahashi | 1:5c46289e3bd1 | 494 | break; |
tanahashi | 1:5c46289e3bd1 | 495 | case 0xC5: |
tanahashi | 1:5c46289e3bd1 | 496 | break; |
tanahashi | 1:5c46289e3bd1 | 497 | case 0xC6: |
tanahashi | 1:5c46289e3bd1 | 498 | break; |
tanahashi | 1:5c46289e3bd1 | 499 | case 0xC7: |
tanahashi | 1:5c46289e3bd1 | 500 | break; |
tanahashi | 1:5c46289e3bd1 | 501 | case 0xC8: |
tanahashi | 1:5c46289e3bd1 | 502 | break; |
tanahashi | 1:5c46289e3bd1 | 503 | case 0xC9: |
tanahashi | 1:5c46289e3bd1 | 504 | break; |
tanahashi | 1:5c46289e3bd1 | 505 | case 0xCA: |
tanahashi | 1:5c46289e3bd1 | 506 | break; |
tanahashi | 1:5c46289e3bd1 | 507 | case 0xCB: |
tanahashi | 1:5c46289e3bd1 | 508 | break; |
tanahashi | 1:5c46289e3bd1 | 509 | case 0xCC: |
tanahashi | 1:5c46289e3bd1 | 510 | break; |
tanahashi | 1:5c46289e3bd1 | 511 | case 0xCD: |
tanahashi | 1:5c46289e3bd1 | 512 | break; |
tanahashi | 1:5c46289e3bd1 | 513 | case 0xCE: |
tanahashi | 1:5c46289e3bd1 | 514 | break; |
tanahashi | 1:5c46289e3bd1 | 515 | case 0xCF: |
tanahashi | 1:5c46289e3bd1 | 516 | break; |
tanahashi | 1:5c46289e3bd1 | 517 | case 0xD0: |
tanahashi | 1:5c46289e3bd1 | 518 | break; |
tanahashi | 1:5c46289e3bd1 | 519 | case 0xD1: |
tanahashi | 1:5c46289e3bd1 | 520 | break; |
tanahashi | 1:5c46289e3bd1 | 521 | case 0xD2: |
tanahashi | 1:5c46289e3bd1 | 522 | break; |
tanahashi | 1:5c46289e3bd1 | 523 | case 0xD3: |
tanahashi | 1:5c46289e3bd1 | 524 | break; |
tanahashi | 1:5c46289e3bd1 | 525 | case 0xD4: |
tanahashi | 1:5c46289e3bd1 | 526 | break; |
tanahashi | 1:5c46289e3bd1 | 527 | case 0xD5: |
tanahashi | 1:5c46289e3bd1 | 528 | break; |
tanahashi | 1:5c46289e3bd1 | 529 | case 0xD6: |
tanahashi | 1:5c46289e3bd1 | 530 | break; |
tanahashi | 1:5c46289e3bd1 | 531 | case 0xD7: |
tanahashi | 1:5c46289e3bd1 | 532 | break; |
tanahashi | 1:5c46289e3bd1 | 533 | case 0xD8: |
tanahashi | 1:5c46289e3bd1 | 534 | break; |
tanahashi | 1:5c46289e3bd1 | 535 | case 0xD9: |
tanahashi | 1:5c46289e3bd1 | 536 | break; |
tanahashi | 1:5c46289e3bd1 | 537 | case 0xDA: |
tanahashi | 1:5c46289e3bd1 | 538 | break; |
tanahashi | 1:5c46289e3bd1 | 539 | case 0xDB: |
tanahashi | 1:5c46289e3bd1 | 540 | break; |
tanahashi | 1:5c46289e3bd1 | 541 | case 0xDC: |
tanahashi | 1:5c46289e3bd1 | 542 | break; |
tanahashi | 1:5c46289e3bd1 | 543 | case 0xDD: |
tanahashi | 1:5c46289e3bd1 | 544 | break; |
tanahashi | 1:5c46289e3bd1 | 545 | case 0xDE: |
tanahashi | 1:5c46289e3bd1 | 546 | break; |
tanahashi | 1:5c46289e3bd1 | 547 | case 0xDF: |
tanahashi | 1:5c46289e3bd1 | 548 | break; |
tanahashi | 1:5c46289e3bd1 | 549 | case 0xE0: |
tanahashi | 0:106e97338223 | 550 | break; |
tanahashi | 1:5c46289e3bd1 | 551 | case 0xE1: |
tanahashi | 1:5c46289e3bd1 | 552 | adxl.begin(); |
tanahashi | 1:5c46289e3bd1 | 553 | break; |
tanahashi | 1:5c46289e3bd1 | 554 | case 0xE2: |
tanahashi | 1:5c46289e3bd1 | 555 | break; |
tanahashi | 1:5c46289e3bd1 | 556 | case 0xE3: |
tanahashi | 1:5c46289e3bd1 | 557 | break; |
tanahashi | 1:5c46289e3bd1 | 558 | case 0xE4: |
tanahashi | 1:5c46289e3bd1 | 559 | break; |
tanahashi | 1:5c46289e3bd1 | 560 | case 0xE5: |
tanahashi | 1:5c46289e3bd1 | 561 | ina_ex.begin(); |
tanahashi | 1:5c46289e3bd1 | 562 | break; |
tanahashi | 1:5c46289e3bd1 | 563 | case 0xE6: |
tanahashi | 1:5c46289e3bd1 | 564 | break; |
tanahashi | 1:5c46289e3bd1 | 565 | case 0xE7: |
tanahashi | 1:5c46289e3bd1 | 566 | break; |
tanahashi | 1:5c46289e3bd1 | 567 | case 0xE8: |
tanahashi | 1:5c46289e3bd1 | 568 | break; |
tanahashi | 1:5c46289e3bd1 | 569 | case 0xE9: |
tanahashi | 1:5c46289e3bd1 | 570 | ina_in.begin(); |
tanahashi | 1:5c46289e3bd1 | 571 | break; |
tanahashi | 1:5c46289e3bd1 | 572 | case 0xEA: |
tanahashi | 1:5c46289e3bd1 | 573 | break; |
tanahashi | 1:5c46289e3bd1 | 574 | case 0xEB: |
tanahashi | 1:5c46289e3bd1 | 575 | break; |
tanahashi | 1:5c46289e3bd1 | 576 | case 0xEC: |
tanahashi | 1:5c46289e3bd1 | 577 | lps.begin(); |
tanahashi | 1:5c46289e3bd1 | 578 | break; |
tanahashi | 1:5c46289e3bd1 | 579 | case 0xED: |
tanahashi | 1:5c46289e3bd1 | 580 | mpu.begin(); |
tanahashi | 1:5c46289e3bd1 | 581 | break; |
tanahashi | 1:5c46289e3bd1 | 582 | case 0xEE: |
tanahashi | 0:106e97338223 | 583 | break; |
tanahashi | 1:5c46289e3bd1 | 584 | case 0xEF: |
tanahashi | 1:5c46289e3bd1 | 585 | break; |
tanahashi | 1:5c46289e3bd1 | 586 | case 0xF0: |
tanahashi | 1:5c46289e3bd1 | 587 | break; |
tanahashi | 1:5c46289e3bd1 | 588 | case 0xF1: |
tanahashi | 1:5c46289e3bd1 | 589 | break; |
tanahashi | 1:5c46289e3bd1 | 590 | case 0xF2: |
tanahashi | 1:5c46289e3bd1 | 591 | break; |
tanahashi | 1:5c46289e3bd1 | 592 | case 0xF3: |
tanahashi | 1:5c46289e3bd1 | 593 | break; |
tanahashi | 1:5c46289e3bd1 | 594 | case 0xF4: |
tanahashi | 1:5c46289e3bd1 | 595 | break; |
tanahashi | 1:5c46289e3bd1 | 596 | case 0xF5: |
tanahashi | 1:5c46289e3bd1 | 597 | break; |
tanahashi | 1:5c46289e3bd1 | 598 | case 0xF6: |
tanahashi | 0:106e97338223 | 599 | break; |
tanahashi | 1:5c46289e3bd1 | 600 | case 0xF7: |
tanahashi | 1:5c46289e3bd1 | 601 | break; |
tanahashi | 1:5c46289e3bd1 | 602 | case 0xF8: |
tanahashi | 1:5c46289e3bd1 | 603 | break; |
tanahashi | 1:5c46289e3bd1 | 604 | case 0xF9: |
tanahashi | 1:5c46289e3bd1 | 605 | break; |
tanahashi | 1:5c46289e3bd1 | 606 | case 0xFA: |
tanahashi | 1:5c46289e3bd1 | 607 | break; |
tanahashi | 1:5c46289e3bd1 | 608 | case 0xFB: |
tanahashi | 1:5c46289e3bd1 | 609 | break; |
tanahashi | 1:5c46289e3bd1 | 610 | case 0xFC: |
tanahashi | 1:5c46289e3bd1 | 611 | break; |
tanahashi | 1:5c46289e3bd1 | 612 | case 0xFD: |
tanahashi | 1:5c46289e3bd1 | 613 | break; |
tanahashi | 1:5c46289e3bd1 | 614 | case 0xFE: |
tanahashi | 1:5c46289e3bd1 | 615 | break; |
tanahashi | 1:5c46289e3bd1 | 616 | case 0xFF: |
tanahashi | 1:5c46289e3bd1 | 617 | NVIC_SystemReset(); |
tanahashi | 0:106e97338223 | 618 | break; |
tanahashi | 0:106e97338223 | 619 | } |
tanahashi | 0:106e97338223 | 620 | } |
tanahashi | 0:106e97338223 | 621 | |
tanahashi | 0:106e97338223 | 622 | void downlink() |
tanahashi | 0:106e97338223 | 623 | { |
tanahashi | 1:5c46289e3bd1 | 624 | mission_time_bits = (short)(mission_time / TIME_LSB); |
tanahashi | 1:5c46289e3bd1 | 625 | flight_time_bits = (short)(flight_time / TIME_LSB); |
tanahashi | 3:84d2520b9079 | 626 | flags = 0; |
tanahashi | 1:5c46289e3bd1 | 627 | flags |= f_sd << 7; |
tanahashi | 1:5c46289e3bd1 | 628 | flags |= f_gps << 6; |
tanahashi | 1:5c46289e3bd1 | 629 | flags |= f_adxl << 5; |
tanahashi | 1:5c46289e3bd1 | 630 | flags |= f_ina_in << 4; |
tanahashi | 1:5c46289e3bd1 | 631 | flags |= f_ina_ex << 3; |
tanahashi | 1:5c46289e3bd1 | 632 | flags |= f_lps << 2; |
tanahashi | 1:5c46289e3bd1 | 633 | flags |= f_mpu << 1; |
tanahashi | 1:5c46289e3bd1 | 634 | flags |= f_mpu_ak; |
tanahashi | 1:5c46289e3bd1 | 635 | voltage_in_bits = (short)(voltage_in / VOLTAGE_LSB); |
tanahashi | 1:5c46289e3bd1 | 636 | current_in_bits = (short)(current_in / CURRENT_LSB); |
tanahashi | 1:5c46289e3bd1 | 637 | voltage_ex_bits = (short)(voltage_ex / VOLTAGE_LSB); |
tanahashi | 1:5c46289e3bd1 | 638 | current_ex_bits = (short)(current_ex / CURRENT_LSB); |
tanahashi | 1:5c46289e3bd1 | 639 | press_bits = (short)(press / PRESS_LSB); |
tanahashi | 1:5c46289e3bd1 | 640 | temp_bits = (short)(temp / TEMP_LSB); |
tanahashi | 1:5c46289e3bd1 | 641 | for(int i = 0; i < 3; i++) { |
tanahashi | 1:5c46289e3bd1 | 642 | accel_bits[i] = (short)(accel[i] / ACCEL_LSB); |
tanahashi | 1:5c46289e3bd1 | 643 | } |
tanahashi | 1:5c46289e3bd1 | 644 | for(int i = 0; i < 3; i++) { |
tanahashi | 1:5c46289e3bd1 | 645 | gyro_bits[i] = (short)(gyro[i] / GYRO_LSB); |
tanahashi | 1:5c46289e3bd1 | 646 | } |
tanahashi | 1:5c46289e3bd1 | 647 | for(int i = 0; i < 3; i++) { |
tanahashi | 1:5c46289e3bd1 | 648 | mag_bits[i] = (short)(mag[i] / MAG_LSB); |
tanahashi | 1:5c46289e3bd1 | 649 | } |
tanahashi | 1:5c46289e3bd1 | 650 | |
tanahashi | 1:5c46289e3bd1 | 651 | char data[50]; |
tanahashi | 1:5c46289e3bd1 | 652 | data[0] = DOWNLINK_HEADER; |
tanahashi | 1:5c46289e3bd1 | 653 | data[1] = mission_timer_reset; |
tanahashi | 1:5c46289e3bd1 | 654 | data[2] = ((char*)&mission_time_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 655 | data[3] = ((char*)&mission_time_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 656 | data[4] = ((char*)&flight_time_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 657 | data[5] = ((char*)&flight_time_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 658 | data[6] = flags; |
tanahashi | 1:5c46289e3bd1 | 659 | data[7] = phase; |
tanahashi | 2:104839501493 | 660 | data[8] = ((char*)&lat)[0]; |
tanahashi | 2:104839501493 | 661 | data[9] = ((char*)&lat)[1]; |
tanahashi | 2:104839501493 | 662 | data[10] = ((char*)&lat)[2]; |
tanahashi | 2:104839501493 | 663 | data[11] = ((char*)&lat)[3]; |
tanahashi | 2:104839501493 | 664 | data[12] = ((char*)&lon)[0]; |
tanahashi | 2:104839501493 | 665 | data[13] = ((char*)&lon)[1]; |
tanahashi | 2:104839501493 | 666 | data[14] = ((char*)&lon)[2]; |
tanahashi | 2:104839501493 | 667 | data[15] = ((char*)&lon)[3]; |
tanahashi | 2:104839501493 | 668 | data[16] = ((char*)&alt)[0]; |
tanahashi | 2:104839501493 | 669 | data[17] = ((char*)&alt)[1]; |
tanahashi | 2:104839501493 | 670 | data[18] = ((char*)&alt)[2]; |
tanahashi | 2:104839501493 | 671 | data[19] = ((char*)&alt)[3]; |
tanahashi | 1:5c46289e3bd1 | 672 | data[20] = ((char*)&voltage_in_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 673 | data[21] = ((char*)&voltage_in_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 674 | data[22] = ((char*)¤t_in_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 675 | data[23] = ((char*)¤t_in_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 676 | data[24] = ((char*)&voltage_ex_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 677 | data[25] = ((char*)&voltage_ex_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 678 | data[26] = ((char*)¤t_ex_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 679 | data[27] = ((char*)¤t_ex_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 680 | data[28] = ((char*)&press_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 681 | data[29] = ((char*)&press_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 682 | data[30] = ((char*)&temp_bits)[0]; |
tanahashi | 1:5c46289e3bd1 | 683 | data[31] = ((char*)&temp_bits)[1]; |
tanahashi | 1:5c46289e3bd1 | 684 | data[32] = ((char*)&accel_bits[0])[0]; |
tanahashi | 1:5c46289e3bd1 | 685 | data[33] = ((char*)&accel_bits[0])[1]; |
tanahashi | 1:5c46289e3bd1 | 686 | data[34] = ((char*)&accel_bits[1])[0]; |
tanahashi | 1:5c46289e3bd1 | 687 | data[35] = ((char*)&accel_bits[1])[1]; |
tanahashi | 1:5c46289e3bd1 | 688 | data[36] = ((char*)&accel_bits[2])[0]; |
tanahashi | 1:5c46289e3bd1 | 689 | data[37] = ((char*)&accel_bits[2])[1]; |
tanahashi | 1:5c46289e3bd1 | 690 | data[38] = ((char*)&gyro_bits[0])[0]; |
tanahashi | 1:5c46289e3bd1 | 691 | data[39] = ((char*)&gyro_bits[0])[1]; |
tanahashi | 1:5c46289e3bd1 | 692 | data[40] = ((char*)&gyro_bits[1])[0]; |
tanahashi | 1:5c46289e3bd1 | 693 | data[41] = ((char*)&gyro_bits[1])[1]; |
tanahashi | 1:5c46289e3bd1 | 694 | data[42] = ((char*)&gyro_bits[2])[0]; |
tanahashi | 1:5c46289e3bd1 | 695 | data[43] = ((char*)&gyro_bits[2])[1]; |
tanahashi | 1:5c46289e3bd1 | 696 | data[44] = ((char*)&mag_bits[0])[0]; |
tanahashi | 1:5c46289e3bd1 | 697 | data[45] = ((char*)&mag_bits[0])[1]; |
tanahashi | 1:5c46289e3bd1 | 698 | data[46] = ((char*)&mag_bits[1])[0]; |
tanahashi | 1:5c46289e3bd1 | 699 | data[47] = ((char*)&mag_bits[1])[1]; |
tanahashi | 1:5c46289e3bd1 | 700 | data[48] = ((char*)&mag_bits[2])[0]; |
tanahashi | 1:5c46289e3bd1 | 701 | data[49] = ((char*)&mag_bits[2])[1]; |
tanahashi | 1:5c46289e3bd1 | 702 | |
tanahashi | 1:5c46289e3bd1 | 703 | es.send(data, 50); |
tanahashi | 1:5c46289e3bd1 | 704 | } |
tanahashi | 1:5c46289e3bd1 | 705 | |
tanahashi | 0:106e97338223 | 706 | void log() |
tanahashi | 0:106e97338223 | 707 | { |
tanahashi | 2:104839501493 | 708 | if(phase >= FLIGHT && phase <= SEP) { |
tanahashi | 2:104839501493 | 709 | char data[128]; |
tanahashi | 2:104839501493 | 710 | data[0] = LOG_HEADER; |
tanahashi | 2:104839501493 | 711 | data[1] = ((char*)&mission_timer_reset)[0]; |
tanahashi | 2:104839501493 | 712 | data[2] = ((char*)&mission_time)[0]; |
tanahashi | 2:104839501493 | 713 | data[3] = ((char*)&mission_time)[1]; |
tanahashi | 2:104839501493 | 714 | data[4] = ((char*)&mission_time)[2]; |
tanahashi | 2:104839501493 | 715 | data[5] = ((char*)&mission_time)[3]; |
tanahashi | 2:104839501493 | 716 | data[6] = ((char*)&flight_time)[0]; |
tanahashi | 2:104839501493 | 717 | data[7] = ((char*)&flight_time)[1]; |
tanahashi | 2:104839501493 | 718 | data[8] = ((char*)&flight_time)[2]; |
tanahashi | 2:104839501493 | 719 | data[9] = ((char*)&flight_time)[3]; |
tanahashi | 2:104839501493 | 720 | data[10] = ((char*)&f_sd)[0]; |
tanahashi | 2:104839501493 | 721 | data[11] = ((char*)&f_gps)[0]; |
tanahashi | 2:104839501493 | 722 | data[12] = ((char*)&f_adxl)[0]; |
tanahashi | 2:104839501493 | 723 | data[13] = ((char*)&f_ina_in)[0]; |
tanahashi | 2:104839501493 | 724 | data[14] = ((char*)&f_ina_ex)[0]; |
tanahashi | 2:104839501493 | 725 | data[15] = ((char*)&f_lps)[0]; |
tanahashi | 2:104839501493 | 726 | data[16] = ((char*)&f_mpu)[0]; |
tanahashi | 2:104839501493 | 727 | data[17] = ((char*)&f_mpu_ak)[0]; |
tanahashi | 2:104839501493 | 728 | data[18] = ((char*)&phase)[0]; |
tanahashi | 2:104839501493 | 729 | data[19] = ((char*)&lat)[0]; |
tanahashi | 2:104839501493 | 730 | data[20] = ((char*)&lat)[1]; |
tanahashi | 2:104839501493 | 731 | data[21] = ((char*)&lat)[2]; |
tanahashi | 2:104839501493 | 732 | data[22] = ((char*)&lat)[3]; |
tanahashi | 2:104839501493 | 733 | data[23] = ((char*)&lon)[0]; |
tanahashi | 2:104839501493 | 734 | data[24] = ((char*)&lon)[1]; |
tanahashi | 2:104839501493 | 735 | data[25] = ((char*)&lon)[2]; |
tanahashi | 2:104839501493 | 736 | data[26] = ((char*)&lon)[3]; |
tanahashi | 2:104839501493 | 737 | data[27] = ((char*)&sat)[0]; |
tanahashi | 2:104839501493 | 738 | data[28] = ((char*)&sat)[1]; |
tanahashi | 2:104839501493 | 739 | data[29] = ((char*)&sat)[2]; |
tanahashi | 2:104839501493 | 740 | data[30] = ((char*)&sat)[3]; |
tanahashi | 2:104839501493 | 741 | data[31] = ((char*)&fix)[0]; |
tanahashi | 2:104839501493 | 742 | data[32] = ((char*)&fix)[1]; |
tanahashi | 2:104839501493 | 743 | data[33] = ((char*)&fix)[2]; |
tanahashi | 2:104839501493 | 744 | data[34] = ((char*)&fix)[3]; |
tanahashi | 2:104839501493 | 745 | data[35] = ((char*)&hdop)[0]; |
tanahashi | 2:104839501493 | 746 | data[36] = ((char*)&hdop)[1]; |
tanahashi | 2:104839501493 | 747 | data[37] = ((char*)&hdop)[2]; |
tanahashi | 2:104839501493 | 748 | data[38] = ((char*)&hdop)[3]; |
tanahashi | 2:104839501493 | 749 | data[39] = ((char*)&alt)[0]; |
tanahashi | 2:104839501493 | 750 | data[40] = ((char*)&alt)[1]; |
tanahashi | 2:104839501493 | 751 | data[41] = ((char*)&alt)[2]; |
tanahashi | 2:104839501493 | 752 | data[42] = ((char*)&alt)[3]; |
tanahashi | 2:104839501493 | 753 | data[43] = ((char*)&geoid)[0]; |
tanahashi | 2:104839501493 | 754 | data[44] = ((char*)&geoid)[1]; |
tanahashi | 2:104839501493 | 755 | data[45] = ((char*)&geoid)[2]; |
tanahashi | 2:104839501493 | 756 | data[46] = ((char*)&geoid)[3]; |
tanahashi | 2:104839501493 | 757 | data[47] = ((char*)&high_accel[0])[0]; |
tanahashi | 2:104839501493 | 758 | data[48] = ((char*)&high_accel[0])[1]; |
tanahashi | 2:104839501493 | 759 | data[49] = ((char*)&high_accel[0])[2]; |
tanahashi | 2:104839501493 | 760 | data[50] = ((char*)&high_accel[0])[3]; |
tanahashi | 2:104839501493 | 761 | data[51] = ((char*)&high_accel[1])[0]; |
tanahashi | 2:104839501493 | 762 | data[52] = ((char*)&high_accel[1])[1]; |
tanahashi | 2:104839501493 | 763 | data[53] = ((char*)&high_accel[1])[2]; |
tanahashi | 2:104839501493 | 764 | data[54] = ((char*)&high_accel[1])[3]; |
tanahashi | 2:104839501493 | 765 | data[55] = ((char*)&high_accel[2])[0]; |
tanahashi | 2:104839501493 | 766 | data[56] = ((char*)&high_accel[2])[1]; |
tanahashi | 2:104839501493 | 767 | data[57] = ((char*)&high_accel[2])[2]; |
tanahashi | 2:104839501493 | 768 | data[58] = ((char*)&high_accel[2])[3]; |
tanahashi | 2:104839501493 | 769 | data[59] = ((char*)&voltage_in)[0]; |
tanahashi | 2:104839501493 | 770 | data[60] = ((char*)&voltage_in)[1]; |
tanahashi | 2:104839501493 | 771 | data[61] = ((char*)&voltage_in)[2]; |
tanahashi | 2:104839501493 | 772 | data[62] = ((char*)&voltage_in)[3]; |
tanahashi | 2:104839501493 | 773 | data[63] = ((char*)¤t_in)[0]; |
tanahashi | 2:104839501493 | 774 | data[64] = ((char*)¤t_in)[1]; |
tanahashi | 2:104839501493 | 775 | data[65] = ((char*)¤t_in)[2]; |
tanahashi | 2:104839501493 | 776 | data[66] = ((char*)¤t_in)[3]; |
tanahashi | 2:104839501493 | 777 | data[67] = ((char*)&voltage_ex)[0]; |
tanahashi | 2:104839501493 | 778 | data[68] = ((char*)&voltage_ex)[1]; |
tanahashi | 2:104839501493 | 779 | data[69] = ((char*)&voltage_ex)[2]; |
tanahashi | 2:104839501493 | 780 | data[70] = ((char*)&voltage_ex)[3]; |
tanahashi | 2:104839501493 | 781 | data[71] = ((char*)¤t_ex)[0]; |
tanahashi | 2:104839501493 | 782 | data[72] = ((char*)¤t_ex)[1]; |
tanahashi | 2:104839501493 | 783 | data[73] = ((char*)¤t_ex)[2]; |
tanahashi | 2:104839501493 | 784 | data[74] = ((char*)¤t_ex)[3]; |
tanahashi | 2:104839501493 | 785 | data[75] = ((char*)&press)[0]; |
tanahashi | 2:104839501493 | 786 | data[76] = ((char*)&press)[1]; |
tanahashi | 2:104839501493 | 787 | data[77] = ((char*)&press)[2]; |
tanahashi | 2:104839501493 | 788 | data[78] = ((char*)&press)[3]; |
tanahashi | 2:104839501493 | 789 | data[79] = ((char*)&temp)[0]; |
tanahashi | 2:104839501493 | 790 | data[80] = ((char*)&temp)[1]; |
tanahashi | 2:104839501493 | 791 | data[81] = ((char*)&temp)[2]; |
tanahashi | 2:104839501493 | 792 | data[82] = ((char*)&temp)[3]; |
tanahashi | 2:104839501493 | 793 | data[83] = ((char*)&accel[0])[0]; |
tanahashi | 2:104839501493 | 794 | data[84] = ((char*)&accel[0])[1]; |
tanahashi | 2:104839501493 | 795 | data[85] = ((char*)&accel[0])[2]; |
tanahashi | 2:104839501493 | 796 | data[86] = ((char*)&accel[0])[3]; |
tanahashi | 2:104839501493 | 797 | data[87] = ((char*)&accel[1])[0]; |
tanahashi | 2:104839501493 | 798 | data[88] = ((char*)&accel[1])[1]; |
tanahashi | 2:104839501493 | 799 | data[89] = ((char*)&accel[1])[2]; |
tanahashi | 2:104839501493 | 800 | data[90] = ((char*)&accel[1])[3]; |
tanahashi | 2:104839501493 | 801 | data[91] = ((char*)&accel[2])[0]; |
tanahashi | 2:104839501493 | 802 | data[92] = ((char*)&accel[2])[1]; |
tanahashi | 2:104839501493 | 803 | data[93] = ((char*)&accel[2])[2]; |
tanahashi | 2:104839501493 | 804 | data[94] = ((char*)&accel[2])[3]; |
tanahashi | 2:104839501493 | 805 | data[95] = ((char*)&gyro[0])[0]; |
tanahashi | 2:104839501493 | 806 | data[96] = ((char*)&gyro[0])[1]; |
tanahashi | 2:104839501493 | 807 | data[97] = ((char*)&gyro[0])[2]; |
tanahashi | 2:104839501493 | 808 | data[98] = ((char*)&gyro[0])[3]; |
tanahashi | 2:104839501493 | 809 | data[99] = ((char*)&gyro[1])[0]; |
tanahashi | 2:104839501493 | 810 | data[100] = ((char*)&gyro[1])[1]; |
tanahashi | 2:104839501493 | 811 | data[101] = ((char*)&gyro[1])[2]; |
tanahashi | 2:104839501493 | 812 | data[102] = ((char*)&gyro[1])[3]; |
tanahashi | 2:104839501493 | 813 | data[103] = ((char*)&gyro[2])[0]; |
tanahashi | 2:104839501493 | 814 | data[104] = ((char*)&gyro[2])[1]; |
tanahashi | 2:104839501493 | 815 | data[105] = ((char*)&gyro[2])[2]; |
tanahashi | 2:104839501493 | 816 | data[106] = ((char*)&gyro[2])[3]; |
tanahashi | 2:104839501493 | 817 | data[107] = ((char*)&mag[0])[0]; |
tanahashi | 2:104839501493 | 818 | data[108] = ((char*)&mag[0])[1]; |
tanahashi | 2:104839501493 | 819 | data[109] = ((char*)&mag[0])[2]; |
tanahashi | 2:104839501493 | 820 | data[110] = ((char*)&mag[0])[3]; |
tanahashi | 2:104839501493 | 821 | data[111] = ((char*)&mag[1])[0]; |
tanahashi | 2:104839501493 | 822 | data[112] = ((char*)&mag[1])[1]; |
tanahashi | 2:104839501493 | 823 | data[113] = ((char*)&mag[1])[2]; |
tanahashi | 2:104839501493 | 824 | data[114] = ((char*)&mag[1])[3]; |
tanahashi | 2:104839501493 | 825 | data[115] = ((char*)&mag[2])[0]; |
tanahashi | 2:104839501493 | 826 | data[116] = ((char*)&mag[2])[1]; |
tanahashi | 2:104839501493 | 827 | data[117] = ((char*)&mag[2])[2]; |
tanahashi | 2:104839501493 | 828 | data[118] = ((char*)&mag[2])[3]; |
tanahashi | 2:104839501493 | 829 | data[119] = 0x00; |
tanahashi | 2:104839501493 | 830 | data[120] = 0x00; |
tanahashi | 2:104839501493 | 831 | data[121] = 0x00; |
tanahashi | 2:104839501493 | 832 | data[122] = 0x00; |
tanahashi | 2:104839501493 | 833 | data[123] = 0x00; |
tanahashi | 2:104839501493 | 834 | data[124] = 0x00; |
tanahashi | 2:104839501493 | 835 | data[125] = 0x00; |
tanahashi | 2:104839501493 | 836 | data[126] = 0x00; |
tanahashi | 2:104839501493 | 837 | data[127] = 0x00; |
tanahashi | 2:104839501493 | 838 | |
tanahashi | 2:104839501493 | 839 | eeprom.write(addr, data, 128); |
tanahashi | 2:104839501493 | 840 | addr += 0x80; |
tanahashi | 2:104839501493 | 841 | } |
tanahashi | 0:106e97338223 | 842 | |
tanahashi | 1:5c46289e3bd1 | 843 | if(sd) { |
tanahashi | 1:5c46289e3bd1 | 844 | fprintf(sd, "%d,", mission_timer_reset); |
tanahashi | 1:5c46289e3bd1 | 845 | fprintf(sd, "%d,", mission_time); |
tanahashi | 1:5c46289e3bd1 | 846 | fprintf(sd, "%d,", flight_time); |
tanahashi | 1:5c46289e3bd1 | 847 | fprintf(sd, "%d,", phase); |
tanahashi | 1:5c46289e3bd1 | 848 | fprintf(sd, "%d,", f_sd); |
tanahashi | 1:5c46289e3bd1 | 849 | fprintf(sd, "%d,", f_gps); |
tanahashi | 1:5c46289e3bd1 | 850 | fprintf(sd, "%d,", f_adxl); |
tanahashi | 1:5c46289e3bd1 | 851 | fprintf(sd, "%d,", f_ina_in); |
tanahashi | 1:5c46289e3bd1 | 852 | fprintf(sd, "%d,", f_ina_ex); |
tanahashi | 1:5c46289e3bd1 | 853 | fprintf(sd, "%d,", f_lps); |
tanahashi | 1:5c46289e3bd1 | 854 | fprintf(sd, "%d,", f_mpu); |
tanahashi | 1:5c46289e3bd1 | 855 | fprintf(sd, "%d,", f_mpu_ak); |
tanahashi | 1:5c46289e3bd1 | 856 | fprintf(sd, "%f,", lat); |
tanahashi | 1:5c46289e3bd1 | 857 | fprintf(sd, "%f,", lon); |
tanahashi | 1:5c46289e3bd1 | 858 | fprintf(sd, "%d,", sat); |
tanahashi | 1:5c46289e3bd1 | 859 | fprintf(sd, "%d,", fix); |
tanahashi | 1:5c46289e3bd1 | 860 | fprintf(sd, "%f,", hdop); |
tanahashi | 1:5c46289e3bd1 | 861 | fprintf(sd, "%f,", alt); |
tanahashi | 1:5c46289e3bd1 | 862 | fprintf(sd, "%f,", geoid); |
tanahashi | 1:5c46289e3bd1 | 863 | fprintf(sd, "%f,", high_accel[0]); |
tanahashi | 1:5c46289e3bd1 | 864 | fprintf(sd, "%f,", high_accel[1]); |
tanahashi | 1:5c46289e3bd1 | 865 | fprintf(sd, "%f,", high_accel[2]); |
tanahashi | 1:5c46289e3bd1 | 866 | fprintf(sd, "%f,", voltage_in); |
tanahashi | 1:5c46289e3bd1 | 867 | fprintf(sd, "%f,", current_in); |
tanahashi | 1:5c46289e3bd1 | 868 | fprintf(sd, "%f,", voltage_ex); |
tanahashi | 1:5c46289e3bd1 | 869 | fprintf(sd, "%f,", current_ex); |
tanahashi | 1:5c46289e3bd1 | 870 | fprintf(sd, "%f,", press); |
tanahashi | 1:5c46289e3bd1 | 871 | fprintf(sd, "%f,", temp); |
tanahashi | 1:5c46289e3bd1 | 872 | fprintf(sd, "%f,", accel[0]); |
tanahashi | 1:5c46289e3bd1 | 873 | fprintf(sd, "%f,", accel[1]); |
tanahashi | 1:5c46289e3bd1 | 874 | fprintf(sd, "%f,", accel[2]); |
tanahashi | 1:5c46289e3bd1 | 875 | fprintf(sd, "%f,", gyro[0]); |
tanahashi | 1:5c46289e3bd1 | 876 | fprintf(sd, "%f,", gyro[1]); |
tanahashi | 1:5c46289e3bd1 | 877 | fprintf(sd, "%f,", gyro[2]); |
tanahashi | 1:5c46289e3bd1 | 878 | fprintf(sd, "%f,", mag[0]); |
tanahashi | 1:5c46289e3bd1 | 879 | fprintf(sd, "%f,", mag[1]); |
tanahashi | 1:5c46289e3bd1 | 880 | fprintf(sd, "%f,", mag[2]); |
tanahashi | 1:5c46289e3bd1 | 881 | fprintf(sd, "\r\n"); |
tanahashi | 1:5c46289e3bd1 | 882 | } |
tanahashi | 0:106e97338223 | 883 | |
tanahashi | 2:104839501493 | 884 | if(sd_timer.read_ms() >= 60*1000) { |
tanahashi | 0:106e97338223 | 885 | sd_timer.reset(); |
tanahashi | 0:106e97338223 | 886 | sd_timer.start(); |
tanahashi | 1:5c46289e3bd1 | 887 | if(sd) { |
tanahashi | 1:5c46289e3bd1 | 888 | fclose(sd); |
tanahashi | 1:5c46289e3bd1 | 889 | sd = fopen(file_name, "a"); |
tanahashi | 0:106e97338223 | 890 | } |
tanahashi | 0:106e97338223 | 891 | } |
tanahashi | 2:104839501493 | 892 | } |
tanahashi | 2:104839501493 | 893 | |
tanahashi | 2:104839501493 | 894 | void debug() |
tanahashi | 2:104839501493 | 895 | { |
tanahashi | 5:22adf1eae5e4 | 896 | if(!debug_pin) { |
tanahashi | 5:22adf1eae5e4 | 897 | pc.printf("mission_timer_reset: %d\r\n", mission_timer_reset); |
tanahashi | 5:22adf1eae5e4 | 898 | pc.printf("mission_time: %d\r\n", mission_time); |
tanahashi | 5:22adf1eae5e4 | 899 | pc.printf("flight_time: %d\r\n", flight_time); |
tanahashi | 5:22adf1eae5e4 | 900 | pc.printf("phase: %d\r\n", phase); |
tanahashi | 5:22adf1eae5e4 | 901 | pc.printf("f_sd: %d\r\n", f_sd); |
tanahashi | 5:22adf1eae5e4 | 902 | pc.printf("f_gps: %d\r\n", f_gps); |
tanahashi | 5:22adf1eae5e4 | 903 | pc.printf("f_adxl: %d\r\n", f_adxl); |
tanahashi | 5:22adf1eae5e4 | 904 | pc.printf("f_ina_in: %d\r\n", f_ina_in); |
tanahashi | 5:22adf1eae5e4 | 905 | pc.printf("f_ina_ex: %d\r\n", f_ina_ex); |
tanahashi | 5:22adf1eae5e4 | 906 | pc.printf("f_lps: %d\r\n", f_lps); |
tanahashi | 5:22adf1eae5e4 | 907 | pc.printf("f_mpu: %d\r\n", f_mpu); |
tanahashi | 5:22adf1eae5e4 | 908 | pc.printf("f_mpu_ak: %d\r\n", f_mpu_ak); |
tanahashi | 5:22adf1eae5e4 | 909 | pc.printf("lat: %f\r\n", lat); |
tanahashi | 5:22adf1eae5e4 | 910 | pc.printf("lon: %f\r\n", lon); |
tanahashi | 5:22adf1eae5e4 | 911 | pc.printf("sat: %d\r\n", sat); |
tanahashi | 5:22adf1eae5e4 | 912 | pc.printf("fix: %d\r\n", fix); |
tanahashi | 5:22adf1eae5e4 | 913 | pc.printf("hdop: %f\r\n", hdop); |
tanahashi | 5:22adf1eae5e4 | 914 | pc.printf("alt: %f\r\n", alt); |
tanahashi | 5:22adf1eae5e4 | 915 | pc.printf("geoid: %f\r\n", geoid); |
tanahashi | 5:22adf1eae5e4 | 916 | pc.printf("high_accel_x: %f\r\n", high_accel[0]); |
tanahashi | 5:22adf1eae5e4 | 917 | pc.printf("high_accel_y: %f\r\n", high_accel[1]); |
tanahashi | 5:22adf1eae5e4 | 918 | pc.printf("high_accel_z: %f\r\n", high_accel[2]); |
tanahashi | 5:22adf1eae5e4 | 919 | pc.printf("voltage_in: %f\r\n", voltage_in); |
tanahashi | 5:22adf1eae5e4 | 920 | pc.printf("current_in: %f\r\n", current_in); |
tanahashi | 5:22adf1eae5e4 | 921 | pc.printf("voltage_ex: %f\r\n", voltage_ex); |
tanahashi | 5:22adf1eae5e4 | 922 | pc.printf("current_ex: %f\r\n", current_ex); |
tanahashi | 5:22adf1eae5e4 | 923 | pc.printf("press: %f\r\n", press); |
tanahashi | 5:22adf1eae5e4 | 924 | pc.printf("temp: %f\r\n", temp); |
tanahashi | 5:22adf1eae5e4 | 925 | pc.printf("accel_x: %f\r\n", accel[0]); |
tanahashi | 5:22adf1eae5e4 | 926 | pc.printf("accel_y: %f\r\n", accel[1]); |
tanahashi | 5:22adf1eae5e4 | 927 | pc.printf("accel_z: %f\r\n", accel[2]); |
tanahashi | 5:22adf1eae5e4 | 928 | pc.printf("gyro_x: %f\r\n", gyro[0]); |
tanahashi | 5:22adf1eae5e4 | 929 | pc.printf("gyro_y: %f\r\n", gyro[1]); |
tanahashi | 5:22adf1eae5e4 | 930 | pc.printf("gyro_z: %f\r\n", gyro[2]); |
tanahashi | 5:22adf1eae5e4 | 931 | pc.printf("mag_x: %f\r\n", mag[0]); |
tanahashi | 5:22adf1eae5e4 | 932 | pc.printf("mag_y: %f\r\n", mag[1]); |
tanahashi | 5:22adf1eae5e4 | 933 | pc.printf("mag_z: %f\r\n", mag[2]); |
tanahashi | 5:22adf1eae5e4 | 934 | } |
tanahashi | 0:106e97338223 | 935 | } |