summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorluhuadong <[email protected]>2020-09-11 18:04:28 +0800
committerluhuadong <[email protected]>2020-09-11 18:04:28 +0800
commit6c25b839eeae79d330308872eb4af0ed3b4172d8 (patch)
treeeae505cc219f0d9214931a129062fca836b97335 /components/drivers
parentde0bb6f96c2933c1b4cdd860a4eb948a57cd5882 (diff)
[sensor] support GPS/GNSS sensor class
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/sensors/sensor.c3
-rwxr-xr-xcomponents/drivers/sensors/sensor.h10
-rwxr-xr-xcomponents/drivers/sensors/sensor_cmd.c3
3 files changed, 15 insertions, 1 deletions
diff --git a/components/drivers/sensors/sensor.c b/components/drivers/sensors/sensor.c
index 08127bc292..eb5c97a574 100644
--- a/components/drivers/sensors/sensor.c
+++ b/components/drivers/sensors/sensor.c
@@ -34,7 +34,8 @@ static char *const sensor_name_str[] =
"step_", /* Step sensor */
"forc_", /* Force sensor */
"dust_", /* Dust sensor */
- "eco2_" /* eCO2 sensor */
+ "eco2_", /* eCO2 sensor */
+ "gnss_" /* GPS/GNSS sensor */
};
/* Sensor interrupt correlation function */
diff --git a/components/drivers/sensors/sensor.h b/components/drivers/sensors/sensor.h
index e61b32acba..99cf073dd0 100755
--- a/components/drivers/sensors/sensor.h
+++ b/components/drivers/sensors/sensor.h
@@ -47,6 +47,7 @@ extern "C" {
#define RT_SENSOR_CLASS_FORCE (13) /* Force sensor */
#define RT_SENSOR_CLASS_DUST (14) /* Dust sensor */
#define RT_SENSOR_CLASS_ECO2 (15) /* eCO2 sensor */
+#define RT_SENSOR_CLASS_GNSS (16) /* GPS/GNSS sensor */
/* Sensor vendor types */
@@ -84,6 +85,8 @@ extern "C" {
#define RT_SENSOR_UNIT_MN (13) /* Force unit: mN */
#define RT_SENSOR_UNIT_PPM (14) /* Concentration unit: ppm */
#define RT_SENSOR_UNIT_PPB (15) /* Concentration unit: ppb */
+#define RT_SENSOR_UNIT_DMS (16) /* Coordinates unit: DMS */
+#define RT_SENSOR_UNIT_DD (17) /* Coordinates unit: DD */
/* Sensor communication interface types */
@@ -184,6 +187,12 @@ struct sensor_3_axis
rt_int32_t z;
};
+struct coordinates
+{
+ double longitude;
+ double latitude;
+};
+
struct rt_sensor_data
{
rt_uint32_t timestamp; /* The timestamp when the data was received */
@@ -193,6 +202,7 @@ struct rt_sensor_data
struct sensor_3_axis acce; /* Accelerometer. unit: mG */
struct sensor_3_axis gyro; /* Gyroscope. unit: mdps */
struct sensor_3_axis mag; /* Magnetometer. unit: mGauss */
+ struct coordinates coord; /* Coordinates unit: degrees */
rt_int32_t temp; /* Temperature. unit: dCelsius */
rt_int32_t humi; /* Relative humidity. unit: permillage */
rt_int32_t baro; /* Pressure. unit: pascal (Pa) */
diff --git a/components/drivers/sensors/sensor_cmd.c b/components/drivers/sensors/sensor_cmd.c
index d74b1a6307..70e08f601a 100755
--- a/components/drivers/sensors/sensor_cmd.c
+++ b/components/drivers/sensors/sensor_cmd.c
@@ -34,6 +34,9 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor
case RT_SENSOR_CLASS_MAG:
LOG_I("num:%3d, x:%5d, y:%5d, z:%5d mGauss, timestamp:%5d", num, sensor_data->data.mag.x, sensor_data->data.mag.y, sensor_data->data.mag.z, sensor_data->timestamp);
break;
+ case RT_SENSOR_CLASS_GNSS:
+ LOG_I("num:%3d, lon:%5d, lat:%5d, timestamp:%5d", num, sensor_data->data.coord.longitude, sensor_data->data.coord.latitude, sensor_data->timestamp);
+ break;
case RT_SENSOR_CLASS_TEMP:
LOG_I("num:%3d, temp:%3d.%d C, timestamp:%5d", num, sensor_data->data.temp / 10, sensor_data->data.temp % 10, sensor_data->timestamp);
break;