GPS GMS-6 Module

Dependents:   RwSDCard_Xml_GPS

Committer:
nsrwsurasak
Date:
Tue May 10 06:33:57 2016 +0000
Revision:
0:7ef27b349b37
Child:
1:dceb4eaf697e
GPSGms6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nsrwsurasak 0:7ef27b349b37 1
nsrwsurasak 0:7ef27b349b37 2
nsrwsurasak 0:7ef27b349b37 3 #define HEADER_SIZE 5
nsrwsurasak 0:7ef27b349b37 4 #define GPRMC_TIME_SIZE 10
nsrwsurasak 0:7ef27b349b37 5 #define GPRMC_STATUS_SIZE 1
nsrwsurasak 0:7ef27b349b37 6 #define GPRMC_LATITUDE_SIZE 9
nsrwsurasak 0:7ef27b349b37 7 #define GPRMC_LATITUDE_HEMI_SIZE 1
nsrwsurasak 0:7ef27b349b37 8 #define GPRMC_LONGITUDE_SIZE 10
nsrwsurasak 0:7ef27b349b37 9 #define GPRMC_LONGITUDE_HEMI_SIZE 1
nsrwsurasak 0:7ef27b349b37 10 #define GPRMC_SPEED_SIZE 5
nsrwsurasak 0:7ef27b349b37 11 #define GPRMC_COURSE_SIZE 5
nsrwsurasak 0:7ef27b349b37 12 #define GPRMC_DATE_SIZE 6
nsrwsurasak 0:7ef27b349b37 13 #define GPRMC_MAGNETIC_SIZE 5
nsrwsurasak 0:7ef27b349b37 14 #define GPRMC_MAGNETIC_DIR_SIZE 1
nsrwsurasak 0:7ef27b349b37 15 #define GPRMC_INDICATOR_SIZE 1
nsrwsurasak 0:7ef27b349b37 16
nsrwsurasak 0:7ef27b349b37 17 #define INVALID_VALUE 0xFFFF
nsrwsurasak 0:7ef27b349b37 18 #define RX_BUF_SIZE 100
nsrwsurasak 0:7ef27b349b37 19
nsrwsurasak 0:7ef27b349b37 20 typedef struct {
nsrwsurasak 0:7ef27b349b37 21 char header[HEADER_SIZE+1];
nsrwsurasak 0:7ef27b349b37 22 char time[GPRMC_TIME_SIZE+1];
nsrwsurasak 0:7ef27b349b37 23 char status[GPRMC_TIME_SIZE+1];
nsrwsurasak 0:7ef27b349b37 24 char latitude[GPRMC_LATITUDE_SIZE+1];
nsrwsurasak 0:7ef27b349b37 25 char latitude_hemi[GPRMC_LATITUDE_HEMI_SIZE+1];
nsrwsurasak 0:7ef27b349b37 26 char longitude[GPRMC_LONGITUDE_SIZE+1];
nsrwsurasak 0:7ef27b349b37 27 char longitude_hemi[GPRMC_LATITUDE_HEMI_SIZE+1];
nsrwsurasak 0:7ef27b349b37 28 char speed[GPRMC_SPEED_SIZE+1];
nsrwsurasak 0:7ef27b349b37 29 char course[GPRMC_COURSE_SIZE+1];
nsrwsurasak 0:7ef27b349b37 30 char date[GPRMC_DATE_SIZE+1];
nsrwsurasak 0:7ef27b349b37 31 char magnetic[GPRMC_MAGNETIC_SIZE+1];
nsrwsurasak 0:7ef27b349b37 32 char magnetic_dir[GPRMC_MAGNETIC_DIR_SIZE+1];
nsrwsurasak 0:7ef27b349b37 33 char indicator[GPRMC_INDICATOR_SIZE+1];
nsrwsurasak 0:7ef27b349b37 34 } GPRMC_Data_TypeDef;
nsrwsurasak 0:7ef27b349b37 35
nsrwsurasak 0:7ef27b349b37 36 typedef enum GPS_ProcessState {
nsrwsurasak 0:7ef27b349b37 37 GPS_Process_Start = 0,
nsrwsurasak 0:7ef27b349b37 38 GPS_Process_Header,
nsrwsurasak 0:7ef27b349b37 39 GPS_Process_Time,
nsrwsurasak 0:7ef27b349b37 40 GPS_Process_Status,
nsrwsurasak 0:7ef27b349b37 41 GPS_Process_Latitude,
nsrwsurasak 0:7ef27b349b37 42 GPS_Process_Latitude_hemis,
nsrwsurasak 0:7ef27b349b37 43 GPS_Process_Longitude,
nsrwsurasak 0:7ef27b349b37 44 GPS_Process_Longitude_hemis,
nsrwsurasak 0:7ef27b349b37 45 GPS_Process_Speed,
nsrwsurasak 0:7ef27b349b37 46 GPS_Process_Course,
nsrwsurasak 0:7ef27b349b37 47 GPS_Process_Date,
nsrwsurasak 0:7ef27b349b37 48 GPS_Process_Magnetic,
nsrwsurasak 0:7ef27b349b37 49 GPS_Process_Magnetic_Dir,
nsrwsurasak 0:7ef27b349b37 50 GPS_Process_Indicator,
nsrwsurasak 0:7ef27b349b37 51 GPS_Process_Complete ,
nsrwsurasak 0:7ef27b349b37 52 GPS_Process_SIZE
nsrwsurasak 0:7ef27b349b37 53 } GPS_ProcessState;
nsrwsurasak 0:7ef27b349b37 54
nsrwsurasak 0:7ef27b349b37 55 typedef enum GPS_ProcessStatus {
nsrwsurasak 0:7ef27b349b37 56 GPS_Status_Valid,
nsrwsurasak 0:7ef27b349b37 57 GPS_Status_Empty,
nsrwsurasak 0:7ef27b349b37 58 GPS_Status_NotEnough,
nsrwsurasak 0:7ef27b349b37 59 } GPS_ProcessStatus;
nsrwsurasak 0:7ef27b349b37 60
nsrwsurasak 0:7ef27b349b37 61 typedef struct {
nsrwsurasak 0:7ef27b349b37 62 GPS_ProcessState state;
nsrwsurasak 0:7ef27b349b37 63 int size;
nsrwsurasak 0:7ef27b349b37 64 char * p_val;
nsrwsurasak 0:7ef27b349b37 65 } GPRMC_Tbl_TypeDef;
nsrwsurasak 0:7ef27b349b37 66
nsrwsurasak 0:7ef27b349b37 67
nsrwsurasak 0:7ef27b349b37 68
nsrwsurasak 0:7ef27b349b37 69 class GPSGms6
nsrwsurasak 0:7ef27b349b37 70 {
nsrwsurasak 0:7ef27b349b37 71 public:
nsrwsurasak 0:7ef27b349b37 72
nsrwsurasak 0:7ef27b349b37 73 GPSGms6();
nsrwsurasak 0:7ef27b349b37 74
nsrwsurasak 0:7ef27b349b37 75 void start_GPS();
nsrwsurasak 0:7ef27b349b37 76 tm UTCTime();
nsrwsurasak 0:7ef27b349b37 77 /** Get Latest GPRMC Data
nsrwsurasak 0:7ef27b349b37 78 *
nsrwsurasak 0:7ef27b349b37 79 * @returns
nsrwsurasak 0:7ef27b349b37 80 * Latest GPRMC Data
nsrwsurasak 0:7ef27b349b37 81 */
nsrwsurasak 0:7ef27b349b37 82 GPRMC_Data_TypeDef latestGPRMC();
nsrwsurasak 0:7ef27b349b37 83
nsrwsurasak 0:7ef27b349b37 84 /** Get Valid Data Interval
nsrwsurasak 0:7ef27b349b37 85 *
nsrwsurasak 0:7ef27b349b37 86 * @returns
nsrwsurasak 0:7ef27b349b37 87 * Valid Data Interval
nsrwsurasak 0:7ef27b349b37 88 */
nsrwsurasak 0:7ef27b349b37 89 GPRMC_Data_TypeDef validGPRMC();
nsrwsurasak 0:7ef27b349b37 90
nsrwsurasak 0:7ef27b349b37 91 /** Get availability of gprmc
nsrwsurasak 0:7ef27b349b37 92 *
nsrwsurasak 0:7ef27b349b37 93 * @returns
nsrwsurasak 0:7ef27b349b37 94 * 'true' - if data is available
nsrwsurasak 0:7ef27b349b37 95 */
nsrwsurasak 0:7ef27b349b37 96 bool available();
nsrwsurasak 0:7ef27b349b37 97
nsrwsurasak 0:7ef27b349b37 98
nsrwsurasak 0:7ef27b349b37 99 private:
nsrwsurasak 0:7ef27b349b37 100 // States
nsrwsurasak 0:7ef27b349b37 101
nsrwsurasak 0:7ef27b349b37 102
nsrwsurasak 0:7ef27b349b37 103
nsrwsurasak 0:7ef27b349b37 104 //Member variables
nsrwsurasak 0:7ef27b349b37 105
nsrwsurasak 0:7ef27b349b37 106
nsrwsurasak 0:7ef27b349b37 107
nsrwsurasak 0:7ef27b349b37 108 //void GPS_ProcessGpsData(char * buf, unsigned int size, char * t, char * d);
nsrwsurasak 0:7ef27b349b37 109 //GPS_ProcessStatus GPS_ProcessGprmcSection(GPS_ProcessState state,char * buf , unsigned int buf_index,unsigned int buf_size, unsigned int section_size, char * ret_value);
nsrwsurasak 0:7ef27b349b37 110
nsrwsurasak 0:7ef27b349b37 111 };