From b93c94760861a3bf4c113d64eb2edae6732c70cd Mon Sep 17 00:00:00 2001 From: likun17 Date: Wed, 9 Sep 2026 19:58:03 +0800 Subject: [PATCH] system/uorb: add voltage, current and power topics Declare and define the uORB metadata for the voltage, current and power types, and register them in g_sensor_list[] so that orb_get_meta() and uorb_listener can resolve them by name. Signed-off-by: likun17 --- system/uorb/sensor/current.c | 41 ++++++++++++++++++++++++++++++++++++ system/uorb/sensor/current.h | 38 +++++++++++++++++++++++++++++++++ system/uorb/sensor/power.c | 41 ++++++++++++++++++++++++++++++++++++ system/uorb/sensor/power.h | 38 +++++++++++++++++++++++++++++++++ system/uorb/sensor/topics.c | 6 ++++++ system/uorb/sensor/voltage.c | 41 ++++++++++++++++++++++++++++++++++++ system/uorb/sensor/voltage.h | 38 +++++++++++++++++++++++++++++++++ 7 files changed, 243 insertions(+) create mode 100644 system/uorb/sensor/current.c create mode 100644 system/uorb/sensor/current.h create mode 100644 system/uorb/sensor/power.c create mode 100644 system/uorb/sensor/power.h create mode 100644 system/uorb/sensor/voltage.c create mode 100644 system/uorb/sensor/voltage.h diff --git a/system/uorb/sensor/current.c b/system/uorb/sensor/current.c new file mode 100644 index 000000000..0043f3551 --- /dev/null +++ b/system/uorb/sensor/current.c @@ -0,0 +1,41 @@ +/**************************************************************************** + * apps/system/uorb/sensor/current.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +#ifdef CONFIG_UORB_FORMAT +static const char sensor_current_format[] = + "timestamp:%" PRIu64 ",current:%hf"; +#endif + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +ORB_DEFINE(sensor_current, struct sensor_current, + sensor_current_format); diff --git a/system/uorb/sensor/current.h b/system/uorb/sensor/current.h new file mode 100644 index 000000000..054e4a73f --- /dev/null +++ b/system/uorb/sensor/current.h @@ -0,0 +1,38 @@ +/**************************************************************************** + * apps/system/uorb/sensor/current.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __APPS_SYSTEM_UORB_SENSOR_CURRENT_H +#define __APPS_SYSTEM_UORB_SENSOR_CURRENT_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +/* register this as object request broker structure */ + +ORB_DECLARE(sensor_current); + +#endif diff --git a/system/uorb/sensor/power.c b/system/uorb/sensor/power.c new file mode 100644 index 000000000..02295697d --- /dev/null +++ b/system/uorb/sensor/power.c @@ -0,0 +1,41 @@ +/**************************************************************************** + * apps/system/uorb/sensor/power.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +#ifdef CONFIG_UORB_FORMAT +static const char sensor_power_format[] = + "timestamp:%" PRIu64 ",power:%hf"; +#endif + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +ORB_DEFINE(sensor_power, struct sensor_power, + sensor_power_format); diff --git a/system/uorb/sensor/power.h b/system/uorb/sensor/power.h new file mode 100644 index 000000000..38490ec8f --- /dev/null +++ b/system/uorb/sensor/power.h @@ -0,0 +1,38 @@ +/**************************************************************************** + * apps/system/uorb/sensor/power.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __APPS_SYSTEM_UORB_SENSOR_POWER_H +#define __APPS_SYSTEM_UORB_SENSOR_POWER_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +/* register this as object request broker structure */ + +ORB_DECLARE(sensor_power); + +#endif diff --git a/system/uorb/sensor/topics.c b/system/uorb/sensor/topics.c index 2eec67dec..e41268ada 100644 --- a/system/uorb/sensor/topics.c +++ b/system/uorb/sensor/topics.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -61,6 +62,7 @@ #include #include #include +#include #include #include #include @@ -71,6 +73,7 @@ #include #include #include +#include #include @@ -87,6 +90,7 @@ static FAR const struct orb_metadata *g_sensor_list[] = ORB_ID(sensor_baro), ORB_ID(sensor_cap), ORB_ID(sensor_co2), + ORB_ID(sensor_current), ORB_ID(sensor_device_orientation), ORB_ID(sensor_dust), ORB_ID(sensor_ecg), @@ -128,6 +132,7 @@ static FAR const struct orb_metadata *g_sensor_list[] = ORB_ID(sensor_pm1p0), ORB_ID(sensor_pm25), ORB_ID(sensor_pose_6dof), + ORB_ID(sensor_power), ORB_ID(sensor_ppgd), ORB_ID(sensor_ppgq), ORB_ID(sensor_prox), @@ -142,6 +147,7 @@ static FAR const struct orb_metadata *g_sensor_list[] = ORB_ID(sensor_tvoc), ORB_ID(sensor_uv), ORB_ID(sensor_velocity), + ORB_ID(sensor_voltage), ORB_ID(sensor_wake_gesture), ORB_ID(sensor_wake_gesture_uncal), ORB_ID(sensor_wrist_tilt), diff --git a/system/uorb/sensor/voltage.c b/system/uorb/sensor/voltage.c new file mode 100644 index 000000000..a76fafc11 --- /dev/null +++ b/system/uorb/sensor/voltage.c @@ -0,0 +1,41 @@ +/**************************************************************************** + * apps/system/uorb/sensor/voltage.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +#ifdef CONFIG_UORB_FORMAT +static const char sensor_voltage_format[] = + "timestamp:%" PRIu64 ",voltage:%hf"; +#endif + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +ORB_DEFINE(sensor_voltage, struct sensor_voltage, + sensor_voltage_format); diff --git a/system/uorb/sensor/voltage.h b/system/uorb/sensor/voltage.h new file mode 100644 index 000000000..c75c760c5 --- /dev/null +++ b/system/uorb/sensor/voltage.h @@ -0,0 +1,38 @@ +/**************************************************************************** + * apps/system/uorb/sensor/voltage.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __APPS_SYSTEM_UORB_SENSOR_VOLTAGE_H +#define __APPS_SYSTEM_UORB_SENSOR_VOLTAGE_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +/* register this as object request broker structure */ + +ORB_DECLARE(sensor_voltage); + +#endif