From b98027ffaa4e55b41a75f5b713918fea029131a9 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 26 Nov 2019 16:18:59 +0100 Subject: Add file converter to manage all conversions This commits create a class converter to access conversions functions. For example to_hex, or for future usage in multi packet signal_to_bits_bytes. Bug-AGL : SPEC-2779 Bug-AGL: SPEC-2976 Change-Id: Ife652006a7756547184ed548bda5ffef0d09d941 Signed-off-by: Arthur Guyader Signed-off-by: Romain Forlot --- low-can-binding/utils/converter.cpp | 58 +++++++++++++++++++++++++++++++++++++ low-can-binding/utils/converter.hpp | 27 +++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 low-can-binding/utils/converter.cpp create mode 100644 low-can-binding/utils/converter.hpp (limited to 'low-can-binding/utils') diff --git a/low-can-binding/utils/converter.cpp b/low-can-binding/utils/converter.cpp new file mode 100644 index 00000000..5cfc8f5c --- /dev/null +++ b/low-can-binding/utils/converter.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2019, 2020 "IoT.bzh" + * Author "Arthur Guyader" + * + * 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. + */ + +#include "converter.hpp" +#include +#include +#include + +/** + * @brief Convert hex data to string + * + * @param data An array of data + * @param length The length of the data + * @return std::string The string data + */ +std::string converter_t::to_hex(const uint8_t data[], const size_t length) +{ + std::stringstream stream; + stream << std::hex << std::setfill('0'); + for(int i = 0; i < length; i++) + { + stream << std::hex << ((int) data[i]); + } + return stream.str(); +} + +/** + * @brief Translate bit_position and bit_size + * + * + * @param bit_position The position in the frame + * @param bit_size The size of the signal + * @param new_start_byte The first bytes of the signal in the frame + * @param new_end_byte The last byte of the signal in the frame + * @param new_start_bit The first bit of the signal in the frame + * @param new_end_bit The last bit of the signal in the frame + */ +void converter_t::signal_to_bits_bytes(uint32_t bit_position, uint32_t bit_size, int &new_start_byte, int &new_end_byte, int &new_start_bit, int &new_end_bit) +{ + new_start_byte = bit_position >> 3; + new_start_bit = bit_position % 8; + new_end_byte = (bit_position + bit_size - 1) >> 3; + new_end_bit = (bit_position + bit_size - 1) % 8; +} \ No newline at end of file diff --git a/low-can-binding/utils/converter.hpp b/low-can-binding/utils/converter.hpp new file mode 100644 index 00000000..f388fd0a --- /dev/null +++ b/low-can-binding/utils/converter.hpp @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2019, 2020 "IoT.bzh" + * Author "Arthur Guyader" + * + * 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. + */ + + +#include +#include + +class converter_t +{ + public: + static std::string to_hex(const uint8_t data[], const size_t length); + static void signal_to_bits_bytes(uint32_t bit_position, uint32_t bit_size, int &new_start_byte, int &new_end_byte, int &new_start_bit, int &new_end_bit); +}; -- cgit 1.2.3-korg