diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-06 22:28:50 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-16 17:05:17 +0100 |
commit | de8fb10e1d8e98a85dfba6fc8966266dbf5e42c6 (patch) | |
tree | 0eab1a766f80b7498d63fb8ecd36486c13b633a2 /src/can-decoder.cpp | |
parent | 4fd376fac5b1d47eed3f22467ae5b5e35f1ec610 (diff) |
Beginning of work on obd2 object and
files reorganization.
Change-Id: Idaa7ad05c45d734ce771506fd6e41f1a09a6ac66
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'src/can-decoder.cpp')
-rw-r--r-- | src/can-decoder.cpp | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/can-decoder.cpp b/src/can-decoder.cpp deleted file mode 100644 index 03471398..00000000 --- a/src/can-decoder.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2015, 2016 "IoT.bzh" - * Author "Romain Forlot" <romain.forlot@iot.bzh> - * - * 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 "can-decoder.hpp" -#include "canutil/read.h" - -float decoder_t::parseSignalBitfield(CanSignal& signal, const can_message_t& message) -{ - return bitfield_parse_float(message.get_data(), CAN_MESSAGE_SIZE, - signal.bitPosition, signal.bitSize, signal.factor, - signal.offset); -} - -openxc_DynamicField decoder_t::noopDecoder(CanSignal& signal, - const std::vector<CanSignal>& signals, float value, bool* send) -{ - openxc_DynamicField decoded_value; - decoded_value.has_type = true; - decoded_value.type = openxc_DynamicField_Type_NUM; - decoded_value.has_numeric_value = true; - decoded_value.numeric_value = value; - - return decoded_value; -} - -openxc_DynamicField decoder_t::booleanDecoder(CanSignal& signal, - const std::vector<CanSignal>& signals, float value, bool* send) -{ - openxc_DynamicField decoded_value; - decoded_value.has_type = true; - decoded_value.type = openxc_DynamicField_Type_BOOL; - decoded_value.has_boolean_value = true; - decoded_value.boolean_value = value == 0.0 ? false : true; - - return decoded_value; -} - -openxc_DynamicField decoder_t::ignoreDecoder(CanSignal& signal, - const std::vector<CanSignal>& signals, float value, bool* send) -{ - if(send) - *send = false; - - openxc_DynamicField decoded_value = {0, openxc_DynamicField_Type_BOOL, 0, "", 0, 0, 0, 0}; - - return decoded_value; -} - -openxc_DynamicField decoder_t::stateDecoder(CanSignal& signal, - const std::vector<CanSignal>& signals, float value, bool* send) -{ - openxc_DynamicField decoded_value = {0, openxc_DynamicField_Type_BOOL, 0, "", 0, 0, 0, 0}; - decoded_value.has_type = true; - decoded_value.type = openxc_DynamicField_Type_STRING; - decoded_value.has_string_value = true; - - /* TODO: Handle SignalState - const CanSignalState* signalState = lookupSignalState(value, signal); - if(signalState != NULL) { - ::strcpy(decoded_value.string_value, signalState->name); - } else { - *send = false; - }*/ - return decoded_value; -} - -openxc_DynamicField decoder_t::translateSignal(CanSignal& signal, can_message_t& message, - const std::vector<CanSignal>& signals) -{ - if(&signal == nullptr || &message == nullptr) - { - openxc_DynamicField ret = {0, openxc_DynamicField_Type_BOOL, 0, "", 0, 0, 0, 0}; - return ret; - } - - float value = parseSignalBitfield(signal, message); - DEBUG(binder_interface, "translateSignal: Decoded message: %f", value); - - bool send = true; - // Must call the decoders every time, regardless of if we are going to - // decide to send the signal or not. - openxc_DynamicField decoded_value = decodeSignal(signal, - value, signals, &send); - - signal.received = true; - signal.lastValue = value; - return decoded_value; -} - -openxc_DynamicField decoder_t::decodeSignal( CanSignal& signal, - float value, const std::vector<CanSignal>& signals, bool* send) -{ - SignalDecoder decoder = signal.decoder == NULL ? - noopDecoder : signal.decoder; - openxc_DynamicField decoded_value = decoder(signal, signals, - value, send); - return decoded_value; -} - -openxc_DynamicField decoder_t::decodeSignal( CanSignal& signal, - const can_message_t& message, const std::vector<CanSignal>& signals, bool* send) -{ - float value = parseSignalBitfield(signal, message); - return decodeSignal(signal, value, signals, send); -} |