X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fcan%2Fsignals.hpp;h=cd1c919a7ac700db4dada9629a56a75c14941bd0;hb=2dcfd4d0faa9699a4a32af1c39be674dc2856f41;hp=32cd7606be08381d5bac153a219ec66d2a19cc82;hpb=e1caf27db81e9897af7512a0b47e0783593833d5;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/can/signals.hpp b/low-can-binding/can/signals.hpp index 32cd7606..cd1c919a 100755 --- a/low-can-binding/can/signals.hpp +++ b/low-can-binding/can/signals.hpp @@ -60,6 +60,14 @@ typedef openxc_DynamicField (*signal_decoder)(signal_t& signal, std::shared_ptr< typedef uint64_t (*signal_encoder)(signal_t& signal, const openxc_DynamicField& field, bool* send); +enum sign_t +{ + UNSIGNED = 0, + SIGN_BIT = 1, + ONES_COMPLEMENT = 2, + TWOS_COMPLEMENT = 3, + SIGN_BIT_EXTERN = 4 +}; class signal_t { @@ -99,8 +107,8 @@ private: std::pair multiplex_; /*!< multiplex_ - If bool is false and int is 0 is not a multiplex signal If bool is true, that indicate that is a multiplexor If int is different of 0, that indicate the link with a multiplexor */ - bool is_big_endian_; /*!< is_big_endian - True if the signal's data are meant to be read as a big_endian */ - bool is_signed_; /* !< is_signed_ - True if the data is signed */ + sign_t sign_; /* !< sign_ - if the data is signed it indicates the encode */ + int32_t bit_sign_position_; /*!< bit_sign_position_ - The bit that indicates the sign of the signal in its CAN message*/ std::string unit_; /* !< unit_ - The unit of the data */ public: @@ -122,8 +130,8 @@ public: signal_encoder encoder, bool received, std::pair multiplex, - bool is_big_endian, - bool is_signed, + sign_t sign, + int32_t bit_sign_position, std::string unit); @@ -163,12 +171,13 @@ public: float get_last_value() const; std::pair get_last_value_with_timestamp() const; std::pair get_multiplex() const; - bool get_is_big_endian() const; - bool get_is_signed() const; + sign_t get_sign() const; + int32_t get_bit_sign_position() const; const std::string get_unit() const; void set_parent(std::shared_ptr parent); void set_received(bool r); void set_last_value(float val); void set_timestamp(uint64_t timestamp); + void set_bit_position(uint32_t bit_position); };