GPS LIB

Committer:
renanbmx123
Date:
Sun Oct 14 02:00:50 2018 +0000
Revision:
0:20506ffee09a
GPS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
renanbmx123 0:20506ffee09a 1 #include "gps.h"
renanbmx123 0:20506ffee09a 2
renanbmx123 0:20506ffee09a 3
renanbmx123 0:20506ffee09a 4 GPS::GPS(Serial* serial, PinName pwr_pin, int pwr_crtl, int baud): _gps(serial) {
renanbmx123 0:20506ffee09a 5 _gps->attach(callback(this, &GPS::recvAttach), Serial::RxIrq);
renanbmx123 0:20506ffee09a 6 _pwr_pin = new DigitalOut(pwr_pin, pwr_crtl);
renanbmx123 0:20506ffee09a 7 _gps->baud(baud);
renanbmx123 0:20506ffee09a 8 }
renanbmx123 0:20506ffee09a 9 GPS::~GPS(){
renanbmx123 0:20506ffee09a 10 delete _gps;
renanbmx123 0:20506ffee09a 11 delete _pwr_pin;
renanbmx123 0:20506ffee09a 12
renanbmx123 0:20506ffee09a 13 }
renanbmx123 0:20506ffee09a 14
renanbmx123 0:20506ffee09a 15 void GPS::recvAttach (void)
renanbmx123 0:20506ffee09a 16 {
renanbmx123 0:20506ffee09a 17 // if(int_ctrl == 1)
renanbmx123 0:20506ffee09a 18 if(_gps->readable()) {
renanbmx123 0:20506ffee09a 19 _gps->gets(data,90);
renanbmx123 0:20506ffee09a 20 printf("%s",data);
renanbmx123 0:20506ffee09a 21 }
renanbmx123 0:20506ffee09a 22 }
renanbmx123 0:20506ffee09a 23
renanbmx123 0:20506ffee09a 24 void GPS::set_gps_on(void){
renanbmx123 0:20506ffee09a 25 *_pwr_pin = 1;
renanbmx123 0:20506ffee09a 26 }
renanbmx123 0:20506ffee09a 27
renanbmx123 0:20506ffee09a 28 void GPS::set_gps_off(void){
renanbmx123 0:20506ffee09a 29 *_pwr_pin = 0;
renanbmx123 0:20506ffee09a 30 }
renanbmx123 0:20506ffee09a 31
renanbmx123 0:20506ffee09a 32 int GPS::data_availiable(float* _lat, float* _lon, float* _alt, float* _tFix, float* _speed, char* NS, char* EW, int* _date, char* Ualt){
renanbmx123 0:20506ffee09a 33 // parse string.
renanbmx123 0:20506ffee09a 34 if(data[0] == '$'){
renanbmx123 0:20506ffee09a 35 if(strncmp(data, "$GPRMC", 6) == 0){
renanbmx123 0:20506ffee09a 36 sscanf(data, "$GPRMC,%f,%c,%f,%c,%f,%c,%f,,%d", &tFix, &status, &lat, &NorthSouth, &lon, &EastWest, &speed, &date);
renanbmx123 0:20506ffee09a 37 printf("date:%d\n",date);
renanbmx123 0:20506ffee09a 38 *_lat = lat;
renanbmx123 0:20506ffee09a 39 * _lon = lon;
renanbmx123 0:20506ffee09a 40 *_tFix = tFix;
renanbmx123 0:20506ffee09a 41 *_speed = speed;
renanbmx123 0:20506ffee09a 42 *NS = NorthSouth;
renanbmx123 0:20506ffee09a 43 *EW = EastWest;
renanbmx123 0:20506ffee09a 44 *_date = date;
renanbmx123 0:20506ffee09a 45
renanbmx123 0:20506ffee09a 46 }else if (!strncmp(data, GPGSA, 6)){
renanbmx123 0:20506ffee09a 47 sscanf(data, "$GPSGA,%c,%d,%d,%d,,,,,,,,,,,,%f,%f,%f", &mode[0], &mode[1], &sat[0], &sat[1], &pdop, &hdop, &vdop);
renanbmx123 0:20506ffee09a 48 //printf("hdop:%f\n",hdop);
renanbmx123 0:20506ffee09a 49
renanbmx123 0:20506ffee09a 50
renanbmx123 0:20506ffee09a 51 }else if(!strncmp(data, GPGGA, 6)){
renanbmx123 0:20506ffee09a 52 sscanf(data, "$GPGGA,%f,%f,%c,%f,%c,%d,%d,%f,,%f,%c", &tFix, &lat, &NorthSouth, &lon, &EastWest, &fq, &nst, &hdop, &alt, &unit);
renanbmx123 0:20506ffee09a 53 //printf("tfix:%f\n",tFix);
renanbmx123 0:20506ffee09a 54 *_alt = alt;
renanbmx123 0:20506ffee09a 55 * _lon = lon;
renanbmx123 0:20506ffee09a 56 *_alt = alt;
renanbmx123 0:20506ffee09a 57 *NS = NorthSouth;
renanbmx123 0:20506ffee09a 58 *EW = EastWest;
renanbmx123 0:20506ffee09a 59 *_tFix = tFix;
renanbmx123 0:20506ffee09a 60
renanbmx123 0:20506ffee09a 61 }else if(!strncmp(data, GPGLL, 6)){
renanbmx123 0:20506ffee09a 62 sscanf(data, "$GPGLL,%f,%c,%f,%c,%f", &lat, &NorthSouth, &lon, &EastWest, &tFix);
renanbmx123 0:20506ffee09a 63 //printf("lat:%f\n",lat);
renanbmx123 0:20506ffee09a 64 *_lat = lat;
renanbmx123 0:20506ffee09a 65 * _lon = lon;
renanbmx123 0:20506ffee09a 66 *NS = NorthSouth;
renanbmx123 0:20506ffee09a 67 *EW = EastWest;
renanbmx123 0:20506ffee09a 68 *_tFix = tFix;
renanbmx123 0:20506ffee09a 69 }
renanbmx123 0:20506ffee09a 70 data[0] = 0;
renanbmx123 0:20506ffee09a 71 return 1;
renanbmx123 0:20506ffee09a 72 }else
renanbmx123 0:20506ffee09a 73 return 0;
renanbmx123 0:20506ffee09a 74 }
renanbmx123 0:20506ffee09a 75
renanbmx123 0:20506ffee09a 76 void GPS::int_mng(int value){
renanbmx123 0:20506ffee09a 77 int_ctrl = value;
renanbmx123 0:20506ffee09a 78 }