Skip to content

Commit bfebcac

Browse files
authored
Merge pull request #3903 from luhuadong/develop
[sensor] support GPS/GNSS sensor class
2 parents de0bb6f + 6c25b83 commit bfebcac

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

components/drivers/sensors/sensor.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ static char *const sensor_name_str[] =
3434
"step_", /* Step sensor */
3535
"forc_", /* Force sensor */
3636
"dust_", /* Dust sensor */
37-
"eco2_" /* eCO2 sensor */
37+
"eco2_", /* eCO2 sensor */
38+
"gnss_" /* GPS/GNSS sensor */
3839
};
3940

4041
/* Sensor interrupt correlation function */

components/drivers/sensors/sensor.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ extern "C" {
4747
#define RT_SENSOR_CLASS_FORCE (13) /* Force sensor */
4848
#define RT_SENSOR_CLASS_DUST (14) /* Dust sensor */
4949
#define RT_SENSOR_CLASS_ECO2 (15) /* eCO2 sensor */
50+
#define RT_SENSOR_CLASS_GNSS (16) /* GPS/GNSS sensor */
5051

5152
/* Sensor vendor types */
5253

@@ -84,6 +85,8 @@ extern "C" {
8485
#define RT_SENSOR_UNIT_MN (13) /* Force unit: mN */
8586
#define RT_SENSOR_UNIT_PPM (14) /* Concentration unit: ppm */
8687
#define RT_SENSOR_UNIT_PPB (15) /* Concentration unit: ppb */
88+
#define RT_SENSOR_UNIT_DMS (16) /* Coordinates unit: DMS */
89+
#define RT_SENSOR_UNIT_DD (17) /* Coordinates unit: DD */
8790

8891
/* Sensor communication interface types */
8992

@@ -184,6 +187,12 @@ struct sensor_3_axis
184187
rt_int32_t z;
185188
};
186189

190+
struct coordinates
191+
{
192+
double longitude;
193+
double latitude;
194+
};
195+
187196
struct rt_sensor_data
188197
{
189198
rt_uint32_t timestamp; /* The timestamp when the data was received */
@@ -193,6 +202,7 @@ struct rt_sensor_data
193202
struct sensor_3_axis acce; /* Accelerometer. unit: mG */
194203
struct sensor_3_axis gyro; /* Gyroscope. unit: mdps */
195204
struct sensor_3_axis mag; /* Magnetometer. unit: mGauss */
205+
struct coordinates coord; /* Coordinates unit: degrees */
196206
rt_int32_t temp; /* Temperature. unit: dCelsius */
197207
rt_int32_t humi; /* Relative humidity. unit: permillage */
198208
rt_int32_t baro; /* Pressure. unit: pascal (Pa) */

components/drivers/sensors/sensor_cmd.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor
3434
case RT_SENSOR_CLASS_MAG:
3535
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);
3636
break;
37+
case RT_SENSOR_CLASS_GNSS:
38+
LOG_I("num:%3d, lon:%5d, lat:%5d, timestamp:%5d", num, sensor_data->data.coord.longitude, sensor_data->data.coord.latitude, sensor_data->timestamp);
39+
break;
3740
case RT_SENSOR_CLASS_TEMP:
3841
LOG_I("num:%3d, temp:%3d.%d C, timestamp:%5d", num, sensor_data->data.temp / 10, sensor_data->data.temp % 10, sensor_data->timestamp);
3942
break;

0 commit comments

Comments
 (0)