GPS GMS-6 Module
GPSGms6.h
- Committer:
- nsrwsurasak
- Date:
- 2016-05-10
- Revision:
- 0:7ef27b349b37
- Child:
- 1:dceb4eaf697e
File content as of revision 0:7ef27b349b37:
#define HEADER_SIZE 5 #define GPRMC_TIME_SIZE 10 #define GPRMC_STATUS_SIZE 1 #define GPRMC_LATITUDE_SIZE 9 #define GPRMC_LATITUDE_HEMI_SIZE 1 #define GPRMC_LONGITUDE_SIZE 10 #define GPRMC_LONGITUDE_HEMI_SIZE 1 #define GPRMC_SPEED_SIZE 5 #define GPRMC_COURSE_SIZE 5 #define GPRMC_DATE_SIZE 6 #define GPRMC_MAGNETIC_SIZE 5 #define GPRMC_MAGNETIC_DIR_SIZE 1 #define GPRMC_INDICATOR_SIZE 1 #define INVALID_VALUE 0xFFFF #define RX_BUF_SIZE 100 typedef struct { char header[HEADER_SIZE+1]; char time[GPRMC_TIME_SIZE+1]; char status[GPRMC_TIME_SIZE+1]; char latitude[GPRMC_LATITUDE_SIZE+1]; char latitude_hemi[GPRMC_LATITUDE_HEMI_SIZE+1]; char longitude[GPRMC_LONGITUDE_SIZE+1]; char longitude_hemi[GPRMC_LATITUDE_HEMI_SIZE+1]; char speed[GPRMC_SPEED_SIZE+1]; char course[GPRMC_COURSE_SIZE+1]; char date[GPRMC_DATE_SIZE+1]; char magnetic[GPRMC_MAGNETIC_SIZE+1]; char magnetic_dir[GPRMC_MAGNETIC_DIR_SIZE+1]; char indicator[GPRMC_INDICATOR_SIZE+1]; } GPRMC_Data_TypeDef; typedef enum GPS_ProcessState { GPS_Process_Start = 0, GPS_Process_Header, GPS_Process_Time, GPS_Process_Status, GPS_Process_Latitude, GPS_Process_Latitude_hemis, GPS_Process_Longitude, GPS_Process_Longitude_hemis, GPS_Process_Speed, GPS_Process_Course, GPS_Process_Date, GPS_Process_Magnetic, GPS_Process_Magnetic_Dir, GPS_Process_Indicator, GPS_Process_Complete , GPS_Process_SIZE } GPS_ProcessState; typedef enum GPS_ProcessStatus { GPS_Status_Valid, GPS_Status_Empty, GPS_Status_NotEnough, } GPS_ProcessStatus; typedef struct { GPS_ProcessState state; int size; char * p_val; } GPRMC_Tbl_TypeDef; class GPSGms6 { public: GPSGms6(); void start_GPS(); tm UTCTime(); /** Get Latest GPRMC Data * * @returns * Latest GPRMC Data */ GPRMC_Data_TypeDef latestGPRMC(); /** Get Valid Data Interval * * @returns * Valid Data Interval */ GPRMC_Data_TypeDef validGPRMC(); /** Get availability of gprmc * * @returns * 'true' - if data is available */ bool available(); private: // States //Member variables //void GPS_ProcessGpsData(char * buf, unsigned int size, char * t, char * d); //GPS_ProcessStatus GPS_ProcessGprmcSection(GPS_ProcessState state,char * buf , unsigned int buf_index,unsigned int buf_size, unsigned int section_size, char * ret_value); };