diff --git a/drivers/sensors/gnss_uorb.c b/drivers/sensors/gnss_uorb.c index ca68ca640a359..a86f2c97b03ea 100644 --- a/drivers/sensors/gnss_uorb.c +++ b/drivers/sensors/gnss_uorb.c @@ -110,6 +110,9 @@ static int gnss_set_interval(FAR struct sensor_lowerhalf_s *lower, FAR uint32_t *interval); static int gnss_control(FAR struct sensor_lowerhalf_s *lower, FAR struct file *filep, int cmd, unsigned long arg); +static int gnss_get_info(FAR struct sensor_lowerhalf_s *lower, + FAR struct file *filep, + FAR struct sensor_device_info_s *info); static int gnss_open(FAR struct file *filep); static int gnss_close(FAR struct file *filep); @@ -131,6 +134,7 @@ static const struct sensor_ops_s g_gnss_sensor_ops = .activate = gnss_activate, .set_interval = gnss_set_interval, .control = gnss_control, + .get_info = gnss_get_info, }; static const struct file_operations g_gnss_fops = @@ -205,6 +209,21 @@ static int gnss_set_interval(FAR struct sensor_lowerhalf_s *lower, return upper->lower->ops->set_interval(upper->lower, filep, interval); } +static int gnss_get_info(FAR struct sensor_lowerhalf_s *lower, + FAR struct file *filep, + FAR struct sensor_device_info_s *info) +{ + FAR struct gnss_sensor_s *dev = (FAR struct gnss_sensor_s *)lower; + FAR struct gnss_upperhalf_s *upper = dev->upper; + + if (upper->lower->ops->get_info == NULL) + { + return -ENOTSUP; + } + + return upper->lower->ops->get_info(upper->lower, filep, info); +} + static int gnss_control(FAR struct sensor_lowerhalf_s *lower, FAR struct file *filep, int cmd, unsigned long arg) { diff --git a/include/nuttx/sensors/gnss.h b/include/nuttx/sensors/gnss.h index f26f3dd7e453b..ecd74dca4bbcd 100644 --- a/include/nuttx/sensors/gnss.h +++ b/include/nuttx/sensors/gnss.h @@ -28,6 +28,7 @@ ****************************************************************************/ #include +#include /**************************************************************************** * Pre-processor Definitions @@ -99,6 +100,28 @@ struct gnss_ops_s FAR struct file *filep, FAR uint32_t *period_us); + /************************************************************************** + * Name: get_info + * + * With this method, the user can obtain information about the current + * device. The name and vendor information cannot exceed + * SENSOR_INFO_NAME_SIZE. + * + * Input Parameters: + * lower - The instance of lower half sensor driver. + * filep - The pointer of file, represents each user using sensor. + * info - Device information structure pointer. + * + * Returned Value: + * Zero (OK) on success; a negated errno value on failure. + * -ENOTTY - The cmd don't support. + * + **************************************************************************/ + + CODE int (*get_info)(FAR struct gnss_lowerhalf_s *lower, + FAR struct file *filep, + FAR struct sensor_device_info_s *info); + /************************************************************************** * Name: control *