VFD modular clock firmware
Dependencies: DipCortex-EEprom RTC flw mbed
Diff: gps.h
- Revision:
- 0:f6e68b4ce169
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gps.h Mon Feb 09 13:40:46 2015 +0000 @@ -0,0 +1,58 @@ +/* + * GPS support for VFD Modular Clock + * (C) 2012 William B Phelps + * + * mbed Port (C) 2014 Akafugu Corporation + * + * This program is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + */ + +#ifndef GPS_H_ +#define GPS_H_ + +#ifdef HAVE_GPS + +#include "mbed.h" + +//convenience macro to convert to and from tm years +#define tmYearToY2k(Y) ((Y) - 100) // offset is from 1900 +#define y2kYearToTm(Y) ((Y) + 100) + +// String buffer size: +#define GPSBUFFERSIZE 96 +//The year the clock was programmed, used for error checking +#define PROGRAMMING_YEAR 14 + +#define SECS_PER_HOUR (3600UL) + +extern unsigned long tGPSupdate; // really time_t + +// we double buffer: read into one line and leave one for the main program +//extern volatile char gpsBuffer1[GPSBUFFERSIZE]; +//extern volatile char gpsBuffer2[GPSBUFFERSIZE]; +// our index into filling the current line +//extern volatile uint8_t gpsBufferPtr; +// pointers to the double buffers +//extern volatile char *gpsNextBuffer; +//extern volatile char *gpsLastBuffer; +//extern volatile uint8_t gpsDataReady_; + +//GPS serial data handling functions: +uint8_t gpsDataReady(void); +void GPSread(char c); +char *gpsNMEA(void); +time_t parseGPSdata(char *gpsBuffer, bool& error, bool& fix, int8_t tzh, uint8_t tzm); + +uint8_t leapyear(uint16_t y); +void gps_init(); + +#endif // HAVE_GPS +#endif // GPS_H_