Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FXOS8700CQ MODSERIAL mbed
Fork of Avnet_ATT_Cellular_IOT by
Diff: sensors.cpp
- Revision:
- 69:5a3414cc7531
- Parent:
- 68:6e311c747045
- Child:
- 70:24d5800f27be
diff -r 6e311c747045 -r 5a3414cc7531 sensors.cpp
--- a/sensors.cpp Thu Aug 11 00:03:09 2016 +0000
+++ b/sensors.cpp Thu Aug 11 04:38:02 2016 +0000
@@ -18,8 +18,10 @@
#include "mbed.h"
#include "sensors.h"
#include "hardware.h"
+#include "config_me.h"
#include "FXOS8700CQ.h"
#include "HTS221.h"
+#include "xadow_gps.h"
#include <string>
//I2C for pmod sensors:
@@ -419,6 +421,78 @@
} //bHTS221_present
} //Read_HTS221()
+bool bGPS_present = false;
+void Init_GPS(void)
+{
+ char scan_id[GPS_SCAN_SIZE+2]; //The first two bytes are the response length (0x00, 0x04)
+ I2C_WriteSingleByte(GPS_DEVICE_ADDR, GPS_SCAN_ID, false); //no hold, must do read
+
+ unsigned char i;
+ for(i=0;i<(GPS_SCAN_SIZE+2);i++)
+ {
+ scan_id[i] = I2C_ReadSingleByte(GPS_DEVICE_ADDR);
+ }
+
+ if(scan_id[5] != GPS_DEVICE_ID)
+ {
+ bGPS_present = false;
+ PRINTF("Xadow GPS not found\n");
+ }
+ else
+ {
+ bGPS_present = true;
+ PRINTF("Xadow GPS Scan ID response = 0x%02X%02X (length), 0x%02X%02X%02X%02X\r\n", scan_id[0], scan_id[1], scan_id[2], scan_id[3], scan_id[4], scan_id[5]);
+ char status = gps_get_status();
+ if (iSensorsToReport == TEMP_HUMIDITY_ACCELEROMETER_GPS)
+ { //we must wait for GPS to initialize
+ PRINTF("Waiting for GPS to become ready... ");
+ while (status != 'A')
+ {
+ wait (5.0);
+ char status = gps_get_status();
+ unsigned char num_satellites = gps_get_sate_in_veiw();
+ PRINTF("%c%d", status, num_satellites);
+ }
+ PRINTF("\r\n");
+ } //we must wait for GPS to initialize
+ PRINTF("gps_check_online is %d\r\n", gps_check_online());
+ unsigned char *data;
+ data = gps_get_utc_date_time();
+ PRINTF("gps_get_utc_date_time : %d-%d-%d,%d:%d:%d\r\n", data[0], data[1], data[2], data[3], data[4], data[5]);
+ PRINTF("gps_get_status : %c ('A' = Valid, 'V' = Invalid)\r\n", gps_get_status());
+ PRINTF("gps_get_latitude : %c:%f\r\n", gps_get_ns(), gps_get_latitude());
+ PRINTF("gps_get_longitude : %c:%f\r\n", gps_get_ew(), gps_get_longitude());
+ PRINTF("gps_get_altitude : %f meters\r\n", gps_get_altitude());
+ PRINTF("gps_get_speed : %f knots\r\n", gps_get_speed());
+ PRINTF("gps_get_course : %f degrees\r\n", gps_get_course());
+ PRINTF("gps_get_position_fix : %c\r\n", gps_get_position_fix());
+ PRINTF("gps_get_sate_in_view : %d satellites\r\n", gps_get_sate_in_veiw());
+ PRINTF("gps_get_sate_used : %d\r\n", gps_get_sate_used());
+ PRINTF("gps_get_mode : %c ('A' = Automatic, 'M' = Manual)\r\n", gps_get_mode());
+ PRINTF("gps_get_mode2 : %c ('1' = no fix, '1' = 2D fix, '3' = 3D fix)\r\n", gps_get_mode2());
+ } //bool bGPS_present = true
+} //Init_GPS()
+
+void Read_GPS()
+{
+ unsigned char gps_quality = 0; //default
+ if (bGPS_present)
+ {
+ if ((gps_get_status() == 'A') && (gps_get_mode2() != '1'))
+ {
+ gps_quality = 1;
+ }
+ PRINTF("gps_quality : %d\r\n", gps_quality);
+ PRINTF("gps_get_latitude : %c:%f\r\n", gps_get_ns(), gps_get_latitude());
+ PRINTF("gps_get_longitude : %c:%f\r\n", gps_get_ew(), gps_get_longitude());
+ PRINTF("gps_get_altitude : %f meters\r\n", gps_get_altitude());
+ PRINTF("gps_get_speed : %f knots\r\n", gps_get_speed());
+ PRINTF("gps_get_course : %f degrees\r\n", gps_get_course());
+ //sprintf(SENSOR_DATA.Temperature, "%0.2f", CTOF(hts221.readTemperature()));
+ //sprintf(SENSOR_DATA.Humidity, "%02d", hts221.readHumidity());
+ } //bGPS_present
+} //Read_GPS()
+
#ifdef USE_VIRTUAL_SENSORS
bool bUsbConnected = false;
volatile uint8_t usb_uart_rx_buff[256];
@@ -558,6 +632,7 @@
Init_Si7020();
Init_Si1145();
Init_motion_sensor();
+ Init_GPS();
} //sensors_init
void read_sensors(void)
@@ -566,4 +641,5 @@
Read_Si7020();
Read_Si1145();
Read_motion_sensor();
+ Read_GPS();
} //read_sensors
