new Xadow GPS module
Dependents: xadow_smartstrap_for_pebble Avnet_ATT_Cellular_IOT Xadow-M0_Xadow-OLED_Accelerometer
XadowGPS.cpp@1:97f0865ea131, 2015-11-04 (annotated)
- Committer:
- KillingJacky
- Date:
- Wed Nov 04 10:01:05 2015 +0000
- Revision:
- 1:97f0865ea131
- Parent:
- 0:0cbe7e15999a
- Child:
- 2:cf4d22190de4
init commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
KillingJacky | 0:0cbe7e15999a | 1 | |
KillingJacky | 1:97f0865ea131 | 2 | #include <stdlib.h> |
KillingJacky | 0:0cbe7e15999a | 3 | #include "mbed.h" |
KillingJacky | 0:0cbe7e15999a | 4 | #include "XadowGPS.h" |
KillingJacky | 1:97f0865ea131 | 5 | #include "USBSerial.h" |
KillingJacky | 0:0cbe7e15999a | 6 | |
KillingJacky | 0:0cbe7e15999a | 7 | |
KillingJacky | 0:0cbe7e15999a | 8 | |
KillingJacky | 0:0cbe7e15999a | 9 | unsigned char gps_utc_date_time[GPS_UTC_DATE_TIME_SIZE] = {0}; |
KillingJacky | 1:97f0865ea131 | 10 | static char cmd[2]; |
KillingJacky | 0:0cbe7e15999a | 11 | |
KillingJacky | 0:0cbe7e15999a | 12 | extern I2C i2c; |
KillingJacky | 1:97f0865ea131 | 13 | extern USBSerial dbg_serial; |
KillingJacky | 0:0cbe7e15999a | 14 | |
KillingJacky | 0:0cbe7e15999a | 15 | |
KillingJacky | 0:0cbe7e15999a | 16 | unsigned char gps_check_online(void) |
KillingJacky | 0:0cbe7e15999a | 17 | { |
KillingJacky | 0:0cbe7e15999a | 18 | unsigned char data[GPS_SCAN_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 19 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 20 | |
KillingJacky | 0:0cbe7e15999a | 21 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 0:0cbe7e15999a | 22 | //dlc_i2c_send_byte(GPS_SCAN_ID); |
KillingJacky | 0:0cbe7e15999a | 23 | cmd[0] = GPS_SCAN_ID; |
KillingJacky | 0:0cbe7e15999a | 24 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 25 | |
KillingJacky | 0:0cbe7e15999a | 26 | for(i=0;i<(GPS_SCAN_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 27 | { |
KillingJacky | 1:97f0865ea131 | 28 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 29 | } |
KillingJacky | 0:0cbe7e15999a | 30 | |
KillingJacky | 1:97f0865ea131 | 31 | if(data[5] == (GPS_DEVICE_ADDR>>1))return 1; |
KillingJacky | 0:0cbe7e15999a | 32 | else return 0; |
KillingJacky | 0:0cbe7e15999a | 33 | } |
KillingJacky | 1:97f0865ea131 | 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 | 1:97f0865ea131 | 40 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 41 | //dlc_i2c_send_byte(GPS_UTC_DATE_TIME_ID); |
KillingJacky | 1:97f0865ea131 | 42 | |
KillingJacky | 1:97f0865ea131 | 43 | cmd[0] = GPS_UTC_DATE_TIME_ID; |
KillingJacky | 1:97f0865ea131 | 44 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 45 | |
KillingJacky | 0:0cbe7e15999a | 46 | for(i=0;i<(GPS_UTC_DATE_TIME_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 47 | { |
KillingJacky | 1:97f0865ea131 | 48 | //data[i] = dlc_i2c_receive_byte(); |
KillingJacky | 1:97f0865ea131 | 49 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 50 | } |
KillingJacky | 0:0cbe7e15999a | 51 | |
KillingJacky | 0:0cbe7e15999a | 52 | for(i=0;i<GPS_UTC_DATE_TIME_SIZE;i++) |
KillingJacky | 1:97f0865ea131 | 53 | gps_utc_date_time[i] = data[i+2]; |
KillingJacky | 0:0cbe7e15999a | 54 | |
KillingJacky | 0:0cbe7e15999a | 55 | return gps_utc_date_time; |
KillingJacky | 0:0cbe7e15999a | 56 | } |
KillingJacky | 0:0cbe7e15999a | 57 | |
KillingJacky | 0:0cbe7e15999a | 58 | unsigned char gps_get_status(void) |
KillingJacky | 0:0cbe7e15999a | 59 | { |
KillingJacky | 0:0cbe7e15999a | 60 | unsigned char data[GPS_STATUS_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 61 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 62 | |
KillingJacky | 1:97f0865ea131 | 63 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 64 | //dlc_i2c_send_byte(GPS_STATUS_ID); |
KillingJacky | 1:97f0865ea131 | 65 | |
KillingJacky | 1:97f0865ea131 | 66 | cmd[0] = GPS_STATUS_ID; |
KillingJacky | 1:97f0865ea131 | 67 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 68 | |
KillingJacky | 0:0cbe7e15999a | 69 | for(i=0;i<(GPS_STATUS_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 70 | { |
KillingJacky | 1:97f0865ea131 | 71 | //data[i] = dlc_i2c_receive_byte(); |
KillingJacky | 1:97f0865ea131 | 72 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 73 | } |
KillingJacky | 0:0cbe7e15999a | 74 | |
KillingJacky | 0:0cbe7e15999a | 75 | return data[2]; |
KillingJacky | 0:0cbe7e15999a | 76 | } |
KillingJacky | 0:0cbe7e15999a | 77 | |
KillingJacky | 0:0cbe7e15999a | 78 | float gps_get_latitude(void) |
KillingJacky | 0:0cbe7e15999a | 79 | { |
KillingJacky | 0:0cbe7e15999a | 80 | unsigned char data[GPS_LATITUDE_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 81 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 82 | |
KillingJacky | 1:97f0865ea131 | 83 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 84 | //dlc_i2c_send_byte(GPS_LATITUDE_ID); |
KillingJacky | 1:97f0865ea131 | 85 | cmd[0] = GPS_LATITUDE_ID; |
KillingJacky | 1:97f0865ea131 | 86 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 1:97f0865ea131 | 87 | |
KillingJacky | 0:0cbe7e15999a | 88 | for(i=0;i<(GPS_LATITUDE_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 89 | { |
KillingJacky | 1:97f0865ea131 | 90 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 91 | } |
KillingJacky | 0:0cbe7e15999a | 92 | |
KillingJacky | 1:97f0865ea131 | 93 | return atof((const char *)&data[2]); |
KillingJacky | 0:0cbe7e15999a | 94 | } |
KillingJacky | 0:0cbe7e15999a | 95 | |
KillingJacky | 0:0cbe7e15999a | 96 | unsigned char gps_get_ns(void) |
KillingJacky | 0:0cbe7e15999a | 97 | { |
KillingJacky | 0:0cbe7e15999a | 98 | unsigned char data[GPS_NS_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 99 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 100 | |
KillingJacky | 1:97f0865ea131 | 101 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 102 | //dlc_i2c_send_byte(GPS_NS_ID); |
KillingJacky | 1:97f0865ea131 | 103 | cmd[0] = GPS_NS_ID; |
KillingJacky | 1:97f0865ea131 | 104 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 105 | |
KillingJacky | 0:0cbe7e15999a | 106 | for(i=0;i<(GPS_NS_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 107 | { |
KillingJacky | 1:97f0865ea131 | 108 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 109 | } |
KillingJacky | 0:0cbe7e15999a | 110 | |
KillingJacky | 0:0cbe7e15999a | 111 | if(data[2] == 'N' || data[2] == 'S')return data[2]; |
KillingJacky | 0:0cbe7e15999a | 112 | else return data[2] = '-'; |
KillingJacky | 0:0cbe7e15999a | 113 | |
KillingJacky | 0:0cbe7e15999a | 114 | } |
KillingJacky | 0:0cbe7e15999a | 115 | |
KillingJacky | 0:0cbe7e15999a | 116 | float gps_get_longitude(void) |
KillingJacky | 0:0cbe7e15999a | 117 | { |
KillingJacky | 0:0cbe7e15999a | 118 | unsigned char data[GPS_LONGITUDE_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 119 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 120 | |
KillingJacky | 1:97f0865ea131 | 121 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 122 | //dlc_i2c_send_byte(GPS_LONGITUDE_ID); |
KillingJacky | 1:97f0865ea131 | 123 | cmd[0] = GPS_LONGITUDE_ID; |
KillingJacky | 1:97f0865ea131 | 124 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 125 | |
KillingJacky | 0:0cbe7e15999a | 126 | for(i=0;i<(GPS_LONGITUDE_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 127 | { |
KillingJacky | 1:97f0865ea131 | 128 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 129 | } |
KillingJacky | 0:0cbe7e15999a | 130 | |
KillingJacky | 1:97f0865ea131 | 131 | return atof((const char *)&data[2]); |
KillingJacky | 0:0cbe7e15999a | 132 | } |
KillingJacky | 0:0cbe7e15999a | 133 | |
KillingJacky | 0:0cbe7e15999a | 134 | unsigned char gps_get_ew(void) |
KillingJacky | 0:0cbe7e15999a | 135 | { |
KillingJacky | 0:0cbe7e15999a | 136 | unsigned char data[GPS_EW_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 137 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 138 | |
KillingJacky | 1:97f0865ea131 | 139 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 140 | //dlc_i2c_send_byte(GPS_EW_ID); |
KillingJacky | 1:97f0865ea131 | 141 | cmd[0] = GPS_EW_ID; |
KillingJacky | 1:97f0865ea131 | 142 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 143 | |
KillingJacky | 0:0cbe7e15999a | 144 | for(i=0;i<(GPS_EW_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 145 | { |
KillingJacky | 1:97f0865ea131 | 146 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 147 | } |
KillingJacky | 0:0cbe7e15999a | 148 | |
KillingJacky | 0:0cbe7e15999a | 149 | if(data[2] == 'E' || data[2] == 'W')return data[2]; |
KillingJacky | 0:0cbe7e15999a | 150 | else return data[2] = '-'; |
KillingJacky | 0:0cbe7e15999a | 151 | } |
KillingJacky | 0:0cbe7e15999a | 152 | |
KillingJacky | 0:0cbe7e15999a | 153 | float gps_get_speed(void) |
KillingJacky | 0:0cbe7e15999a | 154 | { |
KillingJacky | 0:0cbe7e15999a | 155 | unsigned char data[GPS_SPEED_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 156 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 157 | |
KillingJacky | 1:97f0865ea131 | 158 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 159 | //dlc_i2c_send_byte(GPS_SPEED_ID); |
KillingJacky | 1:97f0865ea131 | 160 | cmd[0] = GPS_SPEED_ID; |
KillingJacky | 1:97f0865ea131 | 161 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 162 | |
KillingJacky | 0:0cbe7e15999a | 163 | for(i=0;i<(GPS_SPEED_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 164 | { |
KillingJacky | 1:97f0865ea131 | 165 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 166 | } |
KillingJacky | 0:0cbe7e15999a | 167 | |
KillingJacky | 1:97f0865ea131 | 168 | return atof((const char *)&data[2]); |
KillingJacky | 0:0cbe7e15999a | 169 | } |
KillingJacky | 0:0cbe7e15999a | 170 | |
KillingJacky | 0:0cbe7e15999a | 171 | float gps_get_course(void) |
KillingJacky | 0:0cbe7e15999a | 172 | { |
KillingJacky | 0:0cbe7e15999a | 173 | unsigned char data[GPS_COURSE_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 174 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 175 | |
KillingJacky | 1:97f0865ea131 | 176 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 177 | //dlc_i2c_send_byte(GPS_COURSE_ID); |
KillingJacky | 1:97f0865ea131 | 178 | cmd[0] = GPS_COURSE_ID; |
KillingJacky | 1:97f0865ea131 | 179 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 180 | |
KillingJacky | 0:0cbe7e15999a | 181 | for(i=0;i<(GPS_COURSE_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 182 | { |
KillingJacky | 1:97f0865ea131 | 183 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 184 | } |
KillingJacky | 0:0cbe7e15999a | 185 | |
KillingJacky | 1:97f0865ea131 | 186 | return atof((const char *)&data[2]); |
KillingJacky | 0:0cbe7e15999a | 187 | } |
KillingJacky | 0:0cbe7e15999a | 188 | |
KillingJacky | 0:0cbe7e15999a | 189 | unsigned char gps_get_position_fix(void) |
KillingJacky | 0:0cbe7e15999a | 190 | { |
KillingJacky | 0:0cbe7e15999a | 191 | unsigned char data[GPS_POSITION_FIX_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 192 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 193 | |
KillingJacky | 1:97f0865ea131 | 194 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 195 | //dlc_i2c_send_byte(GPS_POSITION_FIX_ID); |
KillingJacky | 1:97f0865ea131 | 196 | cmd[0] = GPS_POSITION_FIX_ID; |
KillingJacky | 1:97f0865ea131 | 197 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 198 | |
KillingJacky | 0:0cbe7e15999a | 199 | for(i=0;i<(GPS_POSITION_FIX_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 200 | { |
KillingJacky | 1:97f0865ea131 | 201 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 202 | } |
KillingJacky | 0:0cbe7e15999a | 203 | |
KillingJacky | 1:97f0865ea131 | 204 | return data[2] - '0'; |
KillingJacky | 0:0cbe7e15999a | 205 | } |
KillingJacky | 0:0cbe7e15999a | 206 | |
KillingJacky | 0:0cbe7e15999a | 207 | unsigned char gps_get_sate_used(void) |
KillingJacky | 0:0cbe7e15999a | 208 | { |
KillingJacky | 0:0cbe7e15999a | 209 | unsigned char data[GPS_SATE_USED_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 210 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 211 | unsigned char value; |
KillingJacky | 0:0cbe7e15999a | 212 | |
KillingJacky | 1:97f0865ea131 | 213 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 214 | //dlc_i2c_send_byte(GPS_SATE_USED_ID); |
KillingJacky | 1:97f0865ea131 | 215 | cmd[0] = GPS_SATE_USED_ID; |
KillingJacky | 1:97f0865ea131 | 216 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 217 | |
KillingJacky | 0:0cbe7e15999a | 218 | for(i=0;i<(GPS_SATE_USED_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 219 | { |
KillingJacky | 1:97f0865ea131 | 220 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 1:97f0865ea131 | 221 | //dbg_serial.printf("data[%d]: %02x ", i, data[i]); |
KillingJacky | 0:0cbe7e15999a | 222 | } |
KillingJacky | 1:97f0865ea131 | 223 | if(data[3] >= '0' && data[3] <= '9' )value = (data[3] - '0') * 10; |
KillingJacky | 0:0cbe7e15999a | 224 | else value = 0; |
KillingJacky | 1:97f0865ea131 | 225 | if(data[2] >= '0' && data[2] <= '9' )value += (data[2] - '0'); |
KillingJacky | 0:0cbe7e15999a | 226 | else value += 0; |
KillingJacky | 0:0cbe7e15999a | 227 | |
KillingJacky | 0:0cbe7e15999a | 228 | return value; |
KillingJacky | 0:0cbe7e15999a | 229 | } |
KillingJacky | 0:0cbe7e15999a | 230 | |
KillingJacky | 0:0cbe7e15999a | 231 | float gps_get_altitude(void) |
KillingJacky | 0:0cbe7e15999a | 232 | { |
KillingJacky | 0:0cbe7e15999a | 233 | unsigned char data[GPS_ALTITUDE_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 234 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 235 | |
KillingJacky | 1:97f0865ea131 | 236 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 237 | //dlc_i2c_send_byte(GPS_ALTITUDE_ID); |
KillingJacky | 1:97f0865ea131 | 238 | cmd[0] = GPS_ALTITUDE_ID; |
KillingJacky | 1:97f0865ea131 | 239 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 1:97f0865ea131 | 240 | |
KillingJacky | 0:0cbe7e15999a | 241 | for(i=0;i<(GPS_ALTITUDE_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 242 | { |
KillingJacky | 1:97f0865ea131 | 243 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 244 | } |
KillingJacky | 0:0cbe7e15999a | 245 | |
KillingJacky | 1:97f0865ea131 | 246 | return atof((const char *)&data[2]); |
KillingJacky | 0:0cbe7e15999a | 247 | } |
KillingJacky | 0:0cbe7e15999a | 248 | |
KillingJacky | 1:97f0865ea131 | 249 | char gps_get_mode(void) |
KillingJacky | 0:0cbe7e15999a | 250 | { |
KillingJacky | 1:97f0865ea131 | 251 | char data[GPS_MODE_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 252 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 253 | |
KillingJacky | 1:97f0865ea131 | 254 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 255 | //dlc_i2c_send_byte(GPS_MODE_ID); |
KillingJacky | 1:97f0865ea131 | 256 | cmd[0] = GPS_MODE_ID; |
KillingJacky | 1:97f0865ea131 | 257 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 258 | |
KillingJacky | 0:0cbe7e15999a | 259 | for(i=0;i<(GPS_MODE_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 260 | { |
KillingJacky | 1:97f0865ea131 | 261 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 262 | } |
KillingJacky | 0:0cbe7e15999a | 263 | |
KillingJacky | 0:0cbe7e15999a | 264 | return data[2]; |
KillingJacky | 0:0cbe7e15999a | 265 | } |
KillingJacky | 0:0cbe7e15999a | 266 | |
KillingJacky | 0:0cbe7e15999a | 267 | unsigned char gps_get_mode2(void) |
KillingJacky | 0:0cbe7e15999a | 268 | { |
KillingJacky | 0:0cbe7e15999a | 269 | unsigned char data[GPS_MODE2_SIZE+2]; |
KillingJacky | 0:0cbe7e15999a | 270 | unsigned char i; |
KillingJacky | 0:0cbe7e15999a | 271 | |
KillingJacky | 1:97f0865ea131 | 272 | //dlc_i2c_configure(GPS_DEVICE_ADDR, 100); |
KillingJacky | 1:97f0865ea131 | 273 | //dlc_i2c_send_byte(GPS_MODE2_ID); |
KillingJacky | 1:97f0865ea131 | 274 | cmd[0] = GPS_MODE2_ID; |
KillingJacky | 1:97f0865ea131 | 275 | i2c.write(GPS_DEVICE_ADDR, cmd, 1); |
KillingJacky | 0:0cbe7e15999a | 276 | |
KillingJacky | 0:0cbe7e15999a | 277 | for(i=0;i<(GPS_MODE2_SIZE+2);i++) |
KillingJacky | 0:0cbe7e15999a | 278 | { |
KillingJacky | 1:97f0865ea131 | 279 | i2c.read(GPS_DEVICE_ADDR, (char *)&data[i], 1); //the gps module's i2c supports only 1 byte read/write per burst |
KillingJacky | 0:0cbe7e15999a | 280 | } |
KillingJacky | 0:0cbe7e15999a | 281 | |
KillingJacky | 1:97f0865ea131 | 282 | return data[2] - '0'; |
KillingJacky | 0:0cbe7e15999a | 283 | } |