CaryCoders
/
demo_SX1276_standalone
standalone sx1276 demo program
Fork of SX1276_GPS by
Diff: utilities.cpp
- Revision:
- 33:319cbac3b6eb
- Parent:
- 32:a2472bbe7c92
diff -r a2472bbe7c92 -r 319cbac3b6eb utilities.cpp --- a/utilities.cpp Wed Jul 29 12:14:42 2015 +0000 +++ b/utilities.cpp Thu Sep 03 14:33:55 2015 +0000 @@ -4,6 +4,7 @@ #include "debug.h" #include "serial_api.h" +#ifndef STANDALONE void gps_setup(void) { printf("setting up gps\r\n"); @@ -18,8 +19,8 @@ gpsd.minute=1; gpsd.seconds=1; } - -int get_kbd_str(char* buf, int size) +#endif +int get_kbd_str2(char* buf, int size) { char c; int i; @@ -51,25 +52,82 @@ buf[i++] = c; pc.putc(c); } + } else { + if (app == APP_PING) + ping_pong(); + if (app == APP_HELLO) + hello(); +#ifndef STANDALONE + if (app == APP_GPS) + check_gps(); +#endif + #if 1 + if (app == APP_CHAT) + { + // printf("utility call to console chat\r\n"); + check_rx_chat(); + } + #endif + } + } // ...for() +} + +int get_kbd_str(char* buf, int size) +{ + char c; + int i; + static int prev_len; + + for (i = 0;;) { + if (pc.readable()) { + c = pc.getc(); + if (c == 8 && i > 0) { + pc.putc(8); + pc.putc(' '); + pc.putc(8); + i--; + } else if (c == '\r') { + if (i == 0) { + if (app == APP_CHAT) + return 0; + else + return prev_len; // repeat previous + } else { + buf[i] = 0; // null terminate + prev_len = i; + return i; + } + } else if (c == 3) { + { + // ctrl-C abort + //printf("ctrl c\r\n"); + app = APP_CONSOLE; + return -1; + } + } else if (i < size) { + buf[i++] = c; + pc.putc(c); + } } else { #if 0 - return 0; + return 1; #else if (app == APP_PING) ping_pong(); if (app == APP_HELLO) { - // if (check_gps() == 0) - // { - return 0; - //hello(); - // } +#ifndef STANDALONE + check_gps(); +#endif + hello(); + } - +#ifndef STANDALONE if (app == APP_GPS) check_gps(); +#endif #if 1 if (app == APP_CHAT) { @@ -311,6 +369,24 @@ } +void OnCadDone( bool activity ) +{ + //Radio.Sleep(); + State = CAD; + if (activity) + { + debug_if( DEBUG_MESSAGE, "> OnCadDone\n\r" ); + printf("on cad done\r\n"); + Radio.StartCad(); + } + else + { + // printf("false\r\n"); + Radio.StartCad(); + } +} + +#ifndef STANDALONE void find_distance() { //float dist = 0; @@ -325,6 +401,7 @@ float d = 0; distance = 0; + if (gpsd.lat_deg == 0.0) { distance = -1; @@ -336,8 +413,8 @@ return; } - lat1 = r_latitude; - lon1 = r_longitude; + lat1 = r_latitude_last; + lon1 = r_longitude_last; lat2 = gpsd.lat_deg; lon2 = gpsd.lon_deg; @@ -354,7 +431,13 @@ d = 0; } distance = distance + d; - // printf("distance: %f\r\n", gpsd.distance); +#if 0 + if (distance > 10000) + { + printf("distance: %f\r\n", distance); + printf("lat1=%f lon1=%f lat2=%f lon2=%f\r\n",lat1,lon1,lat2,lon2); + } +#endif } @@ -375,7 +458,8 @@ //check if we recieved a new message from GPS, if so, attempt to parse it, if ( gpsd.newNMEAreceived() ) { - if (r_latitude != 0) + //printf("nmea received \r\n"); + if (r_latitude_last != 0) { find_distance(); //printf("distance is %f\r\n",distance); @@ -386,10 +470,22 @@ cLCD.setCursor(0,1); cLCD.printf("d:%0.1fm per:%d ", distance,per); } + } + //printf("distance = %f, %f\r\n",distance, r_latitude_last); } + else + { + cLCD.setCursor(0,1); + if (gpsd.lat_deg != 0) + cLCD.printf("%0.4f %0.4f", gpsd.lat_deg, gpsd.lon_deg); + else + cLCD.printf("No GPS. per:%d ",per); + } + + - if ( !gpsd.parse(gpsd.lastNMEA()) ) + if ( !gpsd.parse(gpsd.lastNMEA()) ) { // radfta led = !led; #if 0 @@ -419,4 +515,4 @@ } } - +#endif