Test software for SatChat prototype hardware Platform - MAX32630FTHR
Dependencies: USBDevice max32630fthr
Diff: main.cpp
- Revision:
- 1:b8cb82927f33
- Parent:
- 0:59c04ca89ae2
- Child:
- 2:814706310a71
diff -r 59c04ca89ae2 -r b8cb82927f33 main.cpp --- a/main.cpp Sun Jun 18 03:41:55 2017 +0000 +++ b/main.cpp Sat Jul 01 01:01:50 2017 +0000 @@ -1,38 +1,82 @@ #include "mbed.h" #include "max32630fthr.h" +#include <stdbool.h> +#define on 1 +#define off 0 + Serial pc(USBTX, USBRX); -Serial uart(P5_3, P5_4, 9600); +Serial gps(P5_3, P5_4, 9600); I2C i2c(P5_7,P6_0); // SDA, SCL -DigitalOut pc_activity(LED1); -DigitalOut uart_activity(LED2); - -int main() { - uart.format(8,Serial::None,1); - char data[2]; - data[0] = 0x1A; //MAX14960 BootCfg register - data[1] = 0x30; // Always-On Mode, off state via PWR_OFF_CMD +DigitalOut red_led(LED1,1); +DigitalOut green_led(LED2,1); +DigitalOut blue_led(LED3,1); + +void gps_power(bool state) +{ + char data[2]; + data[0] = 0x16; //MAX14690 LDO3cfg register + data[1] = 0xE0; //Disable LDO3 + if (state == on) { + data[1] = 0xE2; //Enable LDO3 + } + i2c.write( 0x50, data, 2 ); +} + +void gps_update(void) +{ + char nmea_descriptor[5] = {0}; + gps_power(on); + while (1) { + char nmea_sentence[82] = {0}; //Fill with NUL terminators + gps.format(8,Serial::None,1); + while (gps.getc()!='$'); //wait for start of sentence + int nmea_index = 0; + nmea_sentence[nmea_index++] = '$'; + while (nmea_sentence[nmea_index-1] != '\n') { + blue_led = 1; + nmea_sentence[nmea_index++] = gps.getc(); + blue_led = 0; + //pc.putc(nmea_sentence[nmea_index-1]); + if (nmea_index > 80) { + nmea_index=80; + } + } + // const char s[2] = ","; + const char gprmc[7] = "$GPRMC"; + char *token; + token = strtok(nmea_sentence, ","); + if (strcmp(token,gprmc) == 0){ + pc.printf( " %s\n\r", token ); + token = strtok(NULL, ","); + pc.printf( " %s\n\r", token ); + token = strtok(NULL, ","); + pc.printf( " %s\n\r", token ); + } + } + + while (gps.readable()) { + char dummy = gps.getc(); + } +} + + +int main() +{ +// + char data[2]; + data[0] = 0x1A; //MAX14690 BootCfg register + data[1] = 0x30; //Always-On Mode, off state via PWR_OFF_CMD i2c.write( 0x50, data, 2 ); - data[0] = 0x17; //MAX14960 LDO3Vset register + data[0] = 0x17; //MAX14690 LDO3Vset register data[1] = 0x19; //3.3V i2c.write( 0x50, data, 2 ); - - data[0] = 0x16; //MAX14960 LDO3cfg register - data[1] = 0xE2; //Enable LDO3 - i2c.write( 0x50, data, 2 ); - - wait(1); - while(1) { - if(pc.readable()) { - uart.putc(pc.getc()); - pc_activity = !pc_activity; - } - if(uart.readable()) { - pc.putc(uart.getc()); - uart_activity = !uart_activity; - } + gps_power(off); + wait(5); + while (1) { + gps_update(); } }