From fd9fe4d4663fbb7dd04729b182ef1172a155a535 Mon Sep 17 00:00:00 2001 From: SangYoun Kwak Date: Mon, 13 Jan 2025 16:06:07 +0900 Subject: [PATCH] Fix to legacy hal can be loaded properly Since the legacy hal has create_t function and it creates sensor object, which type is sensor_device provided by hal-api-sensor repository previously. To make sensord can load legacy hal properly, legacy sensor_device class is added as name 'sensor_device'. 'sensor_device' class for hal sensor device is renamed as hal_sensor_device. Change-Id: If4e2f1f03fe1c8d0cfc59201956bb55e78f32c02 Signed-off-by: SangYoun Kwak --- include/hal_sensor_device.h | 48 +++++++++++++++ include/sensor_device.h | 58 +++++++++++-------- ...ensor_device.cpp => hal_sensor_device.cpp} | 32 +++++----- src/server/sensor_loader.cpp | 3 +- 4 files changed, 101 insertions(+), 40 deletions(-) create mode 100644 include/hal_sensor_device.h rename src/server/{sensor_device.cpp => hal_sensor_device.cpp} (71%) diff --git a/include/hal_sensor_device.h b/include/hal_sensor_device.h new file mode 100644 index 00000000..9e48b227 --- /dev/null +++ b/include/hal_sensor_device.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 Samsung Electronics Co., Ltd. + * + * Licensed 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. + */ + +#pragma once + +#include + +#include "sensor_device.h" + +class hal_sensor_device: public sensor_device { +public: + hal_sensor_device(uint64_t sensor_device_id); + ~hal_sensor_device(); + + int get_poll_fd(void); + int get_sensors(const sensor_info_t **sensors); + + bool enable(uint32_t id); + bool disable(uint32_t id); + + int read_fd(uint32_t **ids); + int get_data(uint32_t id, sensor_data_t **data, int *length); + + bool set_interval(uint32_t id, unsigned long val); + bool set_batch_latency(uint32_t id, unsigned long val); + bool set_attribute_int(uint32_t id, int32_t attribute, int32_t value); + bool set_attribute_str(uint32_t id, int32_t attribute, const char *value, int len) ; + bool get_attribute_int(uint32_t id, int32_t attribute, int32_t *value); + bool get_attribute_str(uint32_t id, int32_t attribute, char **value, int *len); + + bool flush(uint32_t id); + +private: + uint64_t sensor_device_id; +}; diff --git a/include/sensor_device.h b/include/sensor_device.h index 3e59c746..146dd278 100644 --- a/include/sensor_device.h +++ b/include/sensor_device.h @@ -22,27 +22,39 @@ class sensor_device { public: - sensor_device(uint64_t sensor_device_id); - ~sensor_device(); - - int get_poll_fd(void); - int get_sensors(const sensor_info_t **sensors); - - bool enable(uint32_t id); - bool disable(uint32_t id); - - int read_fd(uint32_t **ids); - int get_data(uint32_t id, sensor_data_t **data, int *length); - - bool set_interval(uint32_t id, unsigned long val); - bool set_batch_latency(uint32_t id, unsigned long val); - bool set_attribute_int(uint32_t id, int32_t attribute, int32_t value); - bool set_attribute_str(uint32_t id, int32_t attribute, const char *value, int len) ; - bool get_attribute_int(uint32_t id, int32_t attribute, int32_t *value); - bool get_attribute_str(uint32_t id, int32_t attribute, char **value, int *len); - - bool flush(uint32_t id); - -private: - uint64_t sensor_device_id; + virtual ~sensor_device() {} + + virtual int get_poll_fd(void) = 0; + virtual int get_sensors(const sensor_info_t **sensors) = 0; + + virtual bool enable(uint32_t id) = 0; + virtual bool disable(uint32_t id) = 0; + + virtual int read_fd(uint32_t **ids) = 0; + virtual int get_data(uint32_t id, sensor_data_t **data, int *length) = 0; + + virtual bool set_interval(uint32_t id, unsigned long val) { + return true; + } + virtual bool set_batch_latency(uint32_t id, unsigned long val) { + return true; + } + virtual bool set_attribute_int(uint32_t id, int32_t attribute, + int32_t value) { + return true; + } + virtual bool set_attribute_str(uint32_t id, int32_t attribute, + const char *value, int len) { + return true; + } + virtual bool get_attribute_int(uint32_t id, int32_t attribute, + int32_t *value) { + return true; + } + virtual bool get_attribute_str(uint32_t id, int32_t attribute, + char **value, int *len) { + return true; + } + + virtual bool flush(uint32_t id) { return true; } }; diff --git a/src/server/sensor_device.cpp b/src/server/hal_sensor_device.cpp similarity index 71% rename from src/server/sensor_device.cpp rename to src/server/hal_sensor_device.cpp index e231f154..09c9b976 100644 --- a/src/server/sensor_device.cpp +++ b/src/server/hal_sensor_device.cpp @@ -23,17 +23,17 @@ #include #include "sensor_log.h" -#include "sensor_device.h" +#include "hal_sensor_device.h" -sensor_device::sensor_device(uint64_t sensor_device_id): +hal_sensor_device::hal_sensor_device(uint64_t sensor_device_id): sensor_device_id(sensor_device_id) { } -sensor_device::~sensor_device() +hal_sensor_device::~hal_sensor_device() { hal_sensor_delete(&sensor_device_id, 1); } -int sensor_device::get_poll_fd(void) +int hal_sensor_device::get_poll_fd(void) { int poll_fd = 0; int ret = 0; @@ -45,7 +45,7 @@ int sensor_device::get_poll_fd(void) return poll_fd; } -int sensor_device::get_sensors(const sensor_info_t **sensors) +int hal_sensor_device::get_sensors(const sensor_info_t **sensors) { size_t sensors_len = 0; int ret = 0; @@ -60,17 +60,17 @@ int sensor_device::get_sensors(const sensor_info_t **sensors) return sensors_len; } -bool sensor_device::enable(uint32_t id) +bool hal_sensor_device::enable(uint32_t id) { return hal_sensor_enable(sensor_device_id, id) == 0; } -bool sensor_device::disable(uint32_t id) +bool hal_sensor_device::disable(uint32_t id) { return hal_sensor_disable(sensor_device_id, id) == 0; } -int sensor_device::read_fd(uint32_t **ids) +int hal_sensor_device::read_fd(uint32_t **ids) { size_t ids_len = 0; int ret = 0; @@ -85,7 +85,7 @@ int sensor_device::read_fd(uint32_t **ids) return ids_len; } -int sensor_device::get_data(uint32_t id, sensor_data_t **data, int *length) +int hal_sensor_device::get_data(uint32_t id, sensor_data_t **data, int *length) { size_t data_length = 0; int ret = 0; @@ -101,22 +101,22 @@ int sensor_device::get_data(uint32_t id, sensor_data_t **data, int *length) return 0; } -bool sensor_device::set_interval(uint32_t id, unsigned long val) +bool hal_sensor_device::set_interval(uint32_t id, unsigned long val) { return hal_sensor_set_interval(sensor_device_id, id, val) == 0; } -bool sensor_device::set_batch_latency(uint32_t id, unsigned long val) +bool hal_sensor_device::set_batch_latency(uint32_t id, unsigned long val) { return hal_sensor_set_batch_latency(sensor_device_id, id, val) == 0; } -bool sensor_device::set_attribute_int(uint32_t id, int32_t attribute, int32_t value) +bool hal_sensor_device::set_attribute_int(uint32_t id, int32_t attribute, int32_t value) { return hal_sensor_set_attribute_int(sensor_device_id, id, attribute, value) == 0; } -bool sensor_device::set_attribute_str(uint32_t id, int32_t attribute, const char *value, int len) +bool hal_sensor_device::set_attribute_str(uint32_t id, int32_t attribute, const char *value, int len) { if (len < 0) return false; @@ -124,12 +124,12 @@ bool sensor_device::set_attribute_str(uint32_t id, int32_t attribute, const char return hal_sensor_set_attribute_str(sensor_device_id, id, attribute, value, len) == 0; } -bool sensor_device::get_attribute_int(uint32_t id, int32_t attribute, int32_t *value) +bool hal_sensor_device::get_attribute_int(uint32_t id, int32_t attribute, int32_t *value) { return hal_sensor_get_attribute_int(sensor_device_id, id, attribute, value) == 0; } -bool sensor_device::get_attribute_str(uint32_t id, int32_t attribute, char **value, int *len) +bool hal_sensor_device::get_attribute_str(uint32_t id, int32_t attribute, char **value, int *len) { char *temp_value = nullptr; size_t temp_value_len = 0; @@ -150,7 +150,7 @@ bool sensor_device::get_attribute_str(uint32_t id, int32_t attribute, char **val return true; } -bool sensor_device::flush(uint32_t id) +bool hal_sensor_device::flush(uint32_t id) { return hal_sensor_flush(sensor_device_id, id) == 0; } diff --git a/src/server/sensor_loader.cpp b/src/server/sensor_loader.cpp index ab037942..62ffc45a 100644 --- a/src/server/sensor_loader.cpp +++ b/src/server/sensor_loader.cpp @@ -19,6 +19,7 @@ #include "sensor_loader.h" #include "sensor_device.h" +#include "hal_sensor_device.h" #include #include @@ -58,7 +59,7 @@ void sensor_loader::load_hal(device_sensor_registry_t &devices) { } for (size_t i = 0; i < size; ++i) { - devices.emplace_back(new sensor_device(sensor_device_ids[i])); + devices.emplace_back(new hal_sensor_device(sensor_device_ids[i])); } free(sensor_device_ids); -- 2.34.1