Basis for uBlox-7 driver derived from GPS_CanSat

Dependents:   Crunchtrack_GPS_GSM Battlehack_tracker_1_NO

Fork of GPS_CanSat by JST 2011

Committer:
gipmad
Date:
Mon Aug 17 18:17:26 2015 +0000
Revision:
1:a38751ecc25c
Parent:
0:94c22ada3c5a
Modified for basic 9600bps GPS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JST2011 0:94c22ada3c5a 1 #include "GPS.h"
JST2011 0:94c22ada3c5a 2
JST2011 0:94c22ada3c5a 3 GPS::GPS(PinName tx, PinName rx) : _gps(tx, rx) {
gipmad 1:a38751ecc25c 4 //_gps.baud(38400);
gipmad 1:a38751ecc25c 5 _gps.baud(9600);
gipmad 1:a38751ecc25c 6 //_gps.baud(4800);
gipmad 1:a38751ecc25c 7 //_gps.printf("$PSRF103,2,0,0,1*26\r\n");
gipmad 1:a38751ecc25c 8 //_gps.printf("$PSRF103,3,0,0,1*27\r\n");
gipmad 1:a38751ecc25c 9 //_gps.printf("$PSRF103,4,0,0,1*20\r\n");
JST2011 0:94c22ada3c5a 10 flag_gps_get = 0;
JST2011 0:94c22ada3c5a 11 flag_gps_getend = 0;
JST2011 0:94c22ada3c5a 12 _gps.attach(this,&GPS::sample,Serial::RxIrq);
JST2011 0:94c22ada3c5a 13 count = 0;
JST2011 0:94c22ada3c5a 14 flag_gga = 0;
JST2011 0:94c22ada3c5a 15 }
JST2011 0:94c22ada3c5a 16
JST2011 0:94c22ada3c5a 17 void GPS::sample() {
JST2011 0:94c22ada3c5a 18 getline();
JST2011 0:94c22ada3c5a 19 if(flag_gps_getend){
JST2011 0:94c22ada3c5a 20 if(sscanf(msg, "$GPGGA,%f,%f,%c,%f,%c,%d", &_time, &_latitude, &_ns, &_longitude, &_ew, &_lock) >= 1) {
JST2011 0:94c22ada3c5a 21 flag_gga = 1;
JST2011 0:94c22ada3c5a 22 strcpy(gga,msg);
JST2011 0:94c22ada3c5a 23 float degrees = floor(_latitude / 100.0f);
JST2011 0:94c22ada3c5a 24 float minutes = _latitude - (degrees * 100.0f);
JST2011 0:94c22ada3c5a 25 _latitude = degrees + minutes / 60.0f;
JST2011 0:94c22ada3c5a 26 degrees = floor(_longitude / 100.0f);
JST2011 0:94c22ada3c5a 27 minutes = _longitude - (degrees * 100.0f);
JST2011 0:94c22ada3c5a 28 _longitude = degrees + minutes /60.0f;
JST2011 0:94c22ada3c5a 29 }
JST2011 0:94c22ada3c5a 30 flag_gps_getend = 0;
JST2011 0:94c22ada3c5a 31 }
JST2011 0:94c22ada3c5a 32 }
JST2011 0:94c22ada3c5a 33
JST2011 0:94c22ada3c5a 34 char* GPS::getGGA(){
JST2011 0:94c22ada3c5a 35 if(flag_gga){
JST2011 0:94c22ada3c5a 36 // strcpy(gga,msg);
JST2011 0:94c22ada3c5a 37 flag_gga = 0;
JST2011 0:94c22ada3c5a 38 }
JST2011 0:94c22ada3c5a 39 return gga;
JST2011 0:94c22ada3c5a 40 }
JST2011 0:94c22ada3c5a 41
JST2011 0:94c22ada3c5a 42 float GPS::longitude(){
JST2011 0:94c22ada3c5a 43 return _longitude;
JST2011 0:94c22ada3c5a 44 }
JST2011 0:94c22ada3c5a 45
JST2011 0:94c22ada3c5a 46 float GPS::latitude(){
JST2011 0:94c22ada3c5a 47 return _latitude;
JST2011 0:94c22ada3c5a 48 }
JST2011 0:94c22ada3c5a 49
JST2011 0:94c22ada3c5a 50 float GPS::time(){
JST2011 0:94c22ada3c5a 51 return _time;
JST2011 0:94c22ada3c5a 52 }
JST2011 0:94c22ada3c5a 53
JST2011 0:94c22ada3c5a 54 int GPS::ns(){
JST2011 0:94c22ada3c5a 55 int d;
JST2011 0:94c22ada3c5a 56 if(_ns == 'N'){
JST2011 0:94c22ada3c5a 57 d = 1;
JST2011 0:94c22ada3c5a 58 }else{
JST2011 0:94c22ada3c5a 59 d = -1;
JST2011 0:94c22ada3c5a 60 }
JST2011 0:94c22ada3c5a 61 return d;
JST2011 0:94c22ada3c5a 62 }
JST2011 0:94c22ada3c5a 63
JST2011 0:94c22ada3c5a 64 int GPS::ew(){
JST2011 0:94c22ada3c5a 65 int d;
JST2011 0:94c22ada3c5a 66 if(_ew == 'E'){
JST2011 0:94c22ada3c5a 67 d = 1;
JST2011 0:94c22ada3c5a 68 }else{
JST2011 0:94c22ada3c5a 69 d = -1;
JST2011 0:94c22ada3c5a 70 }
JST2011 0:94c22ada3c5a 71 return d;
JST2011 0:94c22ada3c5a 72 }
JST2011 0:94c22ada3c5a 73
JST2011 0:94c22ada3c5a 74 int GPS::lock(){
JST2011 0:94c22ada3c5a 75 return _lock;
JST2011 0:94c22ada3c5a 76 }
JST2011 0:94c22ada3c5a 77
JST2011 0:94c22ada3c5a 78 void GPS::getline() {
JST2011 0:94c22ada3c5a 79 char temp;
JST2011 0:94c22ada3c5a 80 temp = _gps.getc();
JST2011 0:94c22ada3c5a 81 if(temp == '$'){
JST2011 0:94c22ada3c5a 82 flag_gps_get = 1;
JST2011 0:94c22ada3c5a 83 count = 0;
JST2011 0:94c22ada3c5a 84 }
JST2011 0:94c22ada3c5a 85 if(flag_gps_get){
JST2011 0:94c22ada3c5a 86 msg[count] = temp;
JST2011 0:94c22ada3c5a 87 if(temp == '\r'){
JST2011 0:94c22ada3c5a 88 msg[count] = '\0';
JST2011 0:94c22ada3c5a 89 flag_gps_getend = 1;
JST2011 0:94c22ada3c5a 90 flag_gps_get = 0;
JST2011 0:94c22ada3c5a 91 }
JST2011 0:94c22ada3c5a 92 count ++;
JST2011 0:94c22ada3c5a 93 }
JST2011 0:94c22ada3c5a 94 }