new Xadow GPS module

Dependents:   xadow_smartstrap_for_pebble Avnet_ATT_Cellular_IOT Xadow-M0_Xadow-OLED_Accelerometer

Committer:
KillingJacky
Date:
Wed Nov 04 09:50:28 2015 +0000
Revision:
0:0cbe7e15999a
Child:
1:97f0865ea131
init commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KillingJacky 0:0cbe7e15999a 1
KillingJacky 0:0cbe7e15999a 2
KillingJacky 0:0cbe7e15999a 3 #include "mbed.h"
KillingJacky 0:0cbe7e15999a 4 #include "XadowGPS.h"
KillingJacky 0:0cbe7e15999a 5
KillingJacky 0:0cbe7e15999a 6
KillingJacky 0:0cbe7e15999a 7
KillingJacky 0:0cbe7e15999a 8 unsigned char gps_utc_date_time[GPS_UTC_DATE_TIME_SIZE] = {0};
KillingJacky 0:0cbe7e15999a 9 char cmd[2];
KillingJacky 0:0cbe7e15999a 10
KillingJacky 0:0cbe7e15999a 11 extern I2C i2c;
KillingJacky 0:0cbe7e15999a 12
KillingJacky 0:0cbe7e15999a 13
KillingJacky 0:0cbe7e15999a 14 unsigned char gps_check_online(void)
KillingJacky 0:0cbe7e15999a 15 {
KillingJacky 0:0cbe7e15999a 16 unsigned char data[GPS_SCAN_SIZE+2];
KillingJacky 0:0cbe7e15999a 17 unsigned char i;
KillingJacky 0:0cbe7e15999a 18
KillingJacky 0:0cbe7e15999a 19 //dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 20
KillingJacky 0:0cbe7e15999a 21 //dlc_i2c_send_byte(GPS_SCAN_ID);
KillingJacky 0:0cbe7e15999a 22 cmd[0] = GPS_SCAN_ID;
KillingJacky 0:0cbe7e15999a 23 i2c.write(GPS_DEVICE_ADDR, cmd, 1);
KillingJacky 0:0cbe7e15999a 24
KillingJacky 0:0cbe7e15999a 25 for(i=0;i<(GPS_SCAN_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 26 {
KillingJacky 0:0cbe7e15999a 27 //data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 28 }
KillingJacky 0:0cbe7e15999a 29 i2c.read(GPS_DEVICE_ADDR, (char *)data, GPS_SCAN_SIZE+2);
KillingJacky 0:0cbe7e15999a 30
KillingJacky 0:0cbe7e15999a 31 if(data[5] == GPS_DEVICE_ADDR)return 1;
KillingJacky 0:0cbe7e15999a 32 else return 0;
KillingJacky 0:0cbe7e15999a 33 }
KillingJacky 0:0cbe7e15999a 34 /*
KillingJacky 0:0cbe7e15999a 35 unsigned char* gps_get_utc_date_time(void)
KillingJacky 0:0cbe7e15999a 36 {
KillingJacky 0:0cbe7e15999a 37 unsigned char data[GPS_UTC_DATE_TIME_SIZE+2];
KillingJacky 0:0cbe7e15999a 38 unsigned char i;
KillingJacky 0:0cbe7e15999a 39
KillingJacky 0:0cbe7e15999a 40 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 41
KillingJacky 0:0cbe7e15999a 42 dlc_i2c_send_byte(GPS_UTC_DATE_TIME_ID);
KillingJacky 0:0cbe7e15999a 43
KillingJacky 0:0cbe7e15999a 44 for(i=0;i<(GPS_UTC_DATE_TIME_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 45 {
KillingJacky 0:0cbe7e15999a 46 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 47 }
KillingJacky 0:0cbe7e15999a 48
KillingJacky 0:0cbe7e15999a 49 for(i=0;i<GPS_UTC_DATE_TIME_SIZE;i++)
KillingJacky 0:0cbe7e15999a 50 gps_utc_date_time[i] = data[i+2];
KillingJacky 0:0cbe7e15999a 51
KillingJacky 0:0cbe7e15999a 52 return gps_utc_date_time;
KillingJacky 0:0cbe7e15999a 53 }
KillingJacky 0:0cbe7e15999a 54
KillingJacky 0:0cbe7e15999a 55 unsigned char gps_get_status(void)
KillingJacky 0:0cbe7e15999a 56 {
KillingJacky 0:0cbe7e15999a 57 unsigned char data[GPS_STATUS_SIZE+2];
KillingJacky 0:0cbe7e15999a 58 unsigned char i;
KillingJacky 0:0cbe7e15999a 59
KillingJacky 0:0cbe7e15999a 60 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 61
KillingJacky 0:0cbe7e15999a 62 dlc_i2c_send_byte(GPS_STATUS_ID);
KillingJacky 0:0cbe7e15999a 63 for(i=0;i<(GPS_STATUS_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 64 {
KillingJacky 0:0cbe7e15999a 65 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 66 }
KillingJacky 0:0cbe7e15999a 67
KillingJacky 0:0cbe7e15999a 68 return data[2];
KillingJacky 0:0cbe7e15999a 69 }
KillingJacky 0:0cbe7e15999a 70
KillingJacky 0:0cbe7e15999a 71 float gps_get_latitude(void)
KillingJacky 0:0cbe7e15999a 72 {
KillingJacky 0:0cbe7e15999a 73 unsigned char data[GPS_LATITUDE_SIZE+2];
KillingJacky 0:0cbe7e15999a 74 unsigned char i;
KillingJacky 0:0cbe7e15999a 75
KillingJacky 0:0cbe7e15999a 76 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 77
KillingJacky 0:0cbe7e15999a 78 dlc_i2c_send_byte(GPS_LATITUDE_ID);
KillingJacky 0:0cbe7e15999a 79 for(i=0;i<(GPS_LATITUDE_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 80 {
KillingJacky 0:0cbe7e15999a 81 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 82 }
KillingJacky 0:0cbe7e15999a 83
KillingJacky 0:0cbe7e15999a 84 return atof(&data[2]);
KillingJacky 0:0cbe7e15999a 85 }
KillingJacky 0:0cbe7e15999a 86
KillingJacky 0:0cbe7e15999a 87 unsigned char gps_get_ns(void)
KillingJacky 0:0cbe7e15999a 88 {
KillingJacky 0:0cbe7e15999a 89 unsigned char data[GPS_NS_SIZE+2];
KillingJacky 0:0cbe7e15999a 90 unsigned char i;
KillingJacky 0:0cbe7e15999a 91
KillingJacky 0:0cbe7e15999a 92 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 93
KillingJacky 0:0cbe7e15999a 94 dlc_i2c_send_byte(GPS_NS_ID);
KillingJacky 0:0cbe7e15999a 95 for(i=0;i<(GPS_NS_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 96 {
KillingJacky 0:0cbe7e15999a 97 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 98 }
KillingJacky 0:0cbe7e15999a 99
KillingJacky 0:0cbe7e15999a 100 if(data[2] == 'N' || data[2] == 'S')return data[2];
KillingJacky 0:0cbe7e15999a 101 else return data[2] = '-';
KillingJacky 0:0cbe7e15999a 102
KillingJacky 0:0cbe7e15999a 103 }
KillingJacky 0:0cbe7e15999a 104
KillingJacky 0:0cbe7e15999a 105 float gps_get_longitude(void)
KillingJacky 0:0cbe7e15999a 106 {
KillingJacky 0:0cbe7e15999a 107 unsigned char data[GPS_LONGITUDE_SIZE+2];
KillingJacky 0:0cbe7e15999a 108 unsigned char i;
KillingJacky 0:0cbe7e15999a 109
KillingJacky 0:0cbe7e15999a 110 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 111
KillingJacky 0:0cbe7e15999a 112 dlc_i2c_send_byte(GPS_LONGITUDE_ID);
KillingJacky 0:0cbe7e15999a 113 for(i=0;i<(GPS_LONGITUDE_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 114 {
KillingJacky 0:0cbe7e15999a 115 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 116 }
KillingJacky 0:0cbe7e15999a 117
KillingJacky 0:0cbe7e15999a 118 return atof(&data[2]);
KillingJacky 0:0cbe7e15999a 119 }
KillingJacky 0:0cbe7e15999a 120
KillingJacky 0:0cbe7e15999a 121 unsigned char gps_get_ew(void)
KillingJacky 0:0cbe7e15999a 122 {
KillingJacky 0:0cbe7e15999a 123 unsigned char data[GPS_EW_SIZE+2];
KillingJacky 0:0cbe7e15999a 124 unsigned char i;
KillingJacky 0:0cbe7e15999a 125
KillingJacky 0:0cbe7e15999a 126 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 127
KillingJacky 0:0cbe7e15999a 128 dlc_i2c_send_byte(GPS_EW_ID);
KillingJacky 0:0cbe7e15999a 129 for(i=0;i<(GPS_EW_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 130 {
KillingJacky 0:0cbe7e15999a 131 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 132 }
KillingJacky 0:0cbe7e15999a 133
KillingJacky 0:0cbe7e15999a 134 if(data[2] == 'E' || data[2] == 'W')return data[2];
KillingJacky 0:0cbe7e15999a 135 else return data[2] = '-';
KillingJacky 0:0cbe7e15999a 136 }
KillingJacky 0:0cbe7e15999a 137
KillingJacky 0:0cbe7e15999a 138 float gps_get_speed(void)
KillingJacky 0:0cbe7e15999a 139 {
KillingJacky 0:0cbe7e15999a 140 unsigned char data[GPS_SPEED_SIZE+2];
KillingJacky 0:0cbe7e15999a 141 unsigned char i;
KillingJacky 0:0cbe7e15999a 142
KillingJacky 0:0cbe7e15999a 143 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 144
KillingJacky 0:0cbe7e15999a 145 dlc_i2c_send_byte(GPS_SPEED_ID);
KillingJacky 0:0cbe7e15999a 146 for(i=0;i<(GPS_SPEED_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 147 {
KillingJacky 0:0cbe7e15999a 148 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 149 }
KillingJacky 0:0cbe7e15999a 150
KillingJacky 0:0cbe7e15999a 151 return atof(&data[2]);
KillingJacky 0:0cbe7e15999a 152 }
KillingJacky 0:0cbe7e15999a 153
KillingJacky 0:0cbe7e15999a 154 float gps_get_course(void)
KillingJacky 0:0cbe7e15999a 155 {
KillingJacky 0:0cbe7e15999a 156 unsigned char data[GPS_COURSE_SIZE+2];
KillingJacky 0:0cbe7e15999a 157 unsigned char i;
KillingJacky 0:0cbe7e15999a 158
KillingJacky 0:0cbe7e15999a 159 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 160
KillingJacky 0:0cbe7e15999a 161 dlc_i2c_send_byte(GPS_COURSE_ID);
KillingJacky 0:0cbe7e15999a 162 for(i=0;i<(GPS_COURSE_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 163 {
KillingJacky 0:0cbe7e15999a 164 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 165 }
KillingJacky 0:0cbe7e15999a 166
KillingJacky 0:0cbe7e15999a 167 return atof(&data[2]);
KillingJacky 0:0cbe7e15999a 168 }
KillingJacky 0:0cbe7e15999a 169
KillingJacky 0:0cbe7e15999a 170 unsigned char gps_get_position_fix(void)
KillingJacky 0:0cbe7e15999a 171 {
KillingJacky 0:0cbe7e15999a 172 unsigned char data[GPS_POSITION_FIX_SIZE+2];
KillingJacky 0:0cbe7e15999a 173 unsigned char i;
KillingJacky 0:0cbe7e15999a 174
KillingJacky 0:0cbe7e15999a 175 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 176
KillingJacky 0:0cbe7e15999a 177 dlc_i2c_send_byte(GPS_POSITION_FIX_ID);
KillingJacky 0:0cbe7e15999a 178 for(i=0;i<(GPS_POSITION_FIX_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 179 {
KillingJacky 0:0cbe7e15999a 180 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 181 }
KillingJacky 0:0cbe7e15999a 182
KillingJacky 0:0cbe7e15999a 183 return data[2];
KillingJacky 0:0cbe7e15999a 184 }
KillingJacky 0:0cbe7e15999a 185
KillingJacky 0:0cbe7e15999a 186 unsigned char gps_get_sate_used(void)
KillingJacky 0:0cbe7e15999a 187 {
KillingJacky 0:0cbe7e15999a 188 unsigned char data[GPS_SATE_USED_SIZE+2];
KillingJacky 0:0cbe7e15999a 189 unsigned char i;
KillingJacky 0:0cbe7e15999a 190 unsigned char value;
KillingJacky 0:0cbe7e15999a 191
KillingJacky 0:0cbe7e15999a 192 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 193
KillingJacky 0:0cbe7e15999a 194 dlc_i2c_send_byte(GPS_SATE_USED_ID);
KillingJacky 0:0cbe7e15999a 195 for(i=0;i<(GPS_SATE_USED_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 196 {
KillingJacky 0:0cbe7e15999a 197 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 198 }
KillingJacky 0:0cbe7e15999a 199
KillingJacky 0:0cbe7e15999a 200 if(data[3] >= '0')value = (data[3] - '0') * 10;
KillingJacky 0:0cbe7e15999a 201 else value = 0;
KillingJacky 0:0cbe7e15999a 202 if(data[2] >= '0')value += (data[2] - '0');
KillingJacky 0:0cbe7e15999a 203 else value += 0;
KillingJacky 0:0cbe7e15999a 204
KillingJacky 0:0cbe7e15999a 205 return value;
KillingJacky 0:0cbe7e15999a 206 }
KillingJacky 0:0cbe7e15999a 207
KillingJacky 0:0cbe7e15999a 208 float gps_get_altitude(void)
KillingJacky 0:0cbe7e15999a 209 {
KillingJacky 0:0cbe7e15999a 210 unsigned char data[GPS_ALTITUDE_SIZE+2];
KillingJacky 0:0cbe7e15999a 211 unsigned char i;
KillingJacky 0:0cbe7e15999a 212
KillingJacky 0:0cbe7e15999a 213 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 214
KillingJacky 0:0cbe7e15999a 215 dlc_i2c_send_byte(GPS_ALTITUDE_ID);
KillingJacky 0:0cbe7e15999a 216 for(i=0;i<(GPS_ALTITUDE_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 217 {
KillingJacky 0:0cbe7e15999a 218 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 219 }
KillingJacky 0:0cbe7e15999a 220
KillingJacky 0:0cbe7e15999a 221 return atof(&data[2]);
KillingJacky 0:0cbe7e15999a 222 }
KillingJacky 0:0cbe7e15999a 223
KillingJacky 0:0cbe7e15999a 224 unsigned char gps_get_mode(void)
KillingJacky 0:0cbe7e15999a 225 {
KillingJacky 0:0cbe7e15999a 226 unsigned char data[GPS_MODE_SIZE+2];
KillingJacky 0:0cbe7e15999a 227 unsigned char i;
KillingJacky 0:0cbe7e15999a 228
KillingJacky 0:0cbe7e15999a 229 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 230
KillingJacky 0:0cbe7e15999a 231 dlc_i2c_send_byte(GPS_MODE_ID);
KillingJacky 0:0cbe7e15999a 232 for(i=0;i<(GPS_MODE_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 233 {
KillingJacky 0:0cbe7e15999a 234 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 235 }
KillingJacky 0:0cbe7e15999a 236
KillingJacky 0:0cbe7e15999a 237 return data[2];
KillingJacky 0:0cbe7e15999a 238 }
KillingJacky 0:0cbe7e15999a 239
KillingJacky 0:0cbe7e15999a 240 unsigned char gps_get_mode2(void)
KillingJacky 0:0cbe7e15999a 241 {
KillingJacky 0:0cbe7e15999a 242 unsigned char data[GPS_MODE2_SIZE+2];
KillingJacky 0:0cbe7e15999a 243 unsigned char i;
KillingJacky 0:0cbe7e15999a 244
KillingJacky 0:0cbe7e15999a 245 dlc_i2c_configure(GPS_DEVICE_ADDR, 100);
KillingJacky 0:0cbe7e15999a 246
KillingJacky 0:0cbe7e15999a 247 dlc_i2c_send_byte(GPS_MODE2_ID);
KillingJacky 0:0cbe7e15999a 248 for(i=0;i<(GPS_MODE2_SIZE+2);i++)
KillingJacky 0:0cbe7e15999a 249 {
KillingJacky 0:0cbe7e15999a 250 data[i] = dlc_i2c_receive_byte();
KillingJacky 0:0cbe7e15999a 251 }
KillingJacky 0:0cbe7e15999a 252
KillingJacky 0:0cbe7e15999a 253 return data[2];
KillingJacky 0:0cbe7e15999a 254 }
KillingJacky 0:0cbe7e15999a 255 */