summaryrefslogtreecommitdiffstats
path: root/src/can-decoder.cpp
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-03-06 22:28:50 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-03-16 17:05:17 +0100
commitde8fb10e1d8e98a85dfba6fc8966266dbf5e42c6 (patch)
tree0eab1a766f80b7498d63fb8ecd36486c13b633a2 /src/can-decoder.cpp
parent4fd376fac5b1d47eed3f22467ae5b5e35f1ec610 (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.cpp119
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);
-}