diff --git a/src/IBS_Sensor.hpp b/src/IBS_Sensor.hpp index 047f099..fe7a1a6 100644 --- a/src/IBS_Sensor.hpp +++ b/src/IBS_Sensor.hpp @@ -15,84 +15,86 @@ #pragma once //#include -//This device needs a lin interface to read and write on +//This class needs a lin interface to read and write on #include #define LIN_BAUDRATE_IBS_SENSOR 19200 -class IBS_Sensor { - public: - // Batery types - enum IBS_BatteryTypes { - BAT_TYPE_STARTER, - BAT_TYPE_GEL, - BAT_TYPE_AGM - }; +class IBS_Sensor +{ +public: + // Batery types + enum IBS_BatteryTypes + { + BAT_TYPE_STARTER, + BAT_TYPE_GEL, + BAT_TYPE_AGM + }; - // constructor - IBS_Sensor(int SensorNo); + // constructor + IBS_Sensor(int SensorNo); - // Lin Interface will be used to send and request frames - Lin_Interface *LinBus; + // Lin Interface will be used to send and request frames + Lin_Interface *LinBus; - // Frame "Status" - bool StatusReady = false; // ready for Data Request? - uint8_t StatusByte = 0x00; // provides at least a StatusReady flag, but the is more encoded + // Frame "Status" + bool StatusReady = false; // ready for Data Request? + uint8_t StatusByte = 0x00; // provides at least a StatusReady flag, but the is more encoded - // Frame "Current" - float Ibat = 0.0; // Current in Ampere - float Ubat = 0.0; // Battery Voltage in Volt - float Tbat = 0.0; // Battery Temperature in Celsius - uint8_t unknown1 = 0x00; + // Frame "Current" + float Ibat = 0.0; // Current in Ampere + float Ubat = 0.0; // Battery Voltage in Volt + float Tbat = 0.0; // Battery Temperature in Celsius + uint8_t unknown1 = 0x00; - // Frame "Error", flags / code unknown - uint8_t ErrorByte = 0x00; // Error code/flags? + // Frame "Error", flags / code unknown + uint8_t ErrorByte = 0x00; // Error code/flags? - // Frame "tb3", data unknown - uint16_t unknown2; - uint16_t unknown3; + // Frame "tb3", data unknown + uint16_t unknown2 = 0; + uint16_t unknown3 = 0; - // Frame "SOx", mayby includes State of Functon? - float SOH = -1.0; // procides State of Healt in percent - float SOC = -1.0; // procides State of Charge in percent - uint8_t unknown4; - uint8_t unknown5; - uint16_t unknown6; + // Frame "SOx", mayby includes State of Functon? + float SOH = -1.0; // State of Health in percent (need replace?) + float SOC = -1.0; // State of Charge in percent (need charge?) + uint8_t unknown4 = 0; + uint8_t unknown5 = 0; + uint16_t unknown6 = 0; - // Frame "Capacity" - float Cap_Max = 0.0; // max seen capacity - float Cap_Available = 0.0; // max available capacity, means charge level - uint8_t Cap_Configured = 0; // configured battery capacity - bool CalibrationDone = false; // data may plausible, but sensor has still some doubts - uint8_t CalibByte = 0x00; // Capacity flag byte, may only contains CalibrationDone flag + // Frame "Capacity" + float Cap_Max = 0.0; // max seen capacity (eq. SOH) + float Cap_Available = 0.0; // max available capacity (eq. SOC) + uint8_t Cap_Configured = 0; // configured battery capacity + bool CalibrationDone = false; // data may plausible, but sensor has still some doubts + uint8_t CalibByte = 0x00; // Capacity flag byte, may only contains CalibrationDone flag -//----------------------------------------------------------------------------- -// Request current valus form sensor + //----------------------------------------------------------------------------- + // Request current valus form sensor - // regular read - bool readFrames(); + // regular read + bool readFrames(); - // specific read of Frame - bool readFrameStatus(); - bool readFrameCurrent(); - bool readFrameError(); - bool readFrameSOx(); - bool readFrameCapacity(); - bool readFrameTB3(); + // specific read of Frame + bool readFrameStatus(); + bool readFrameCurrent(); + bool readFrameError(); + bool readFrameSOx(); + bool readFrameCapacity(); + bool readFrameTB3(); -//----------------------------------------------------------------------------- -// configuration of Sensor - only needed once: data will be stored in sensor + //----------------------------------------------------------------------------- + // configuration of Sensor - only needed once: data will be stored in sensor - //configuration of sensor - void writeConfiguration(IBS_BatteryTypes BatType, uint8_t BatCapacity); + //configuration of sensor + void writeConfiguration(IBS_BatteryTypes BatType, uint8_t BatCapacity); - // all known configuraton Frames, used by original Panel - void writeUnknownParam(); - void writeBatCapacity(uint8_t BatCapacity); - void writeBatType(IBS_BatteryTypes BatType); + // all known configuraton Frames, used by original Panel + void writeUnknownParam(); + void writeBatCapacity(uint8_t BatCapacity); + void writeBatType(IBS_BatteryTypes BatType); - private: - // SensorNo = 0 --> Hella IBS 200 labeled "Sensor 1" - // SensorNo = 1 --> Hella IBS 200 labeled "Sensor 2" - int _SensorNo; +private: + // SensorNo = 0 --> Hella IBS 200 labeled "Sensor 1" + // SensorNo = 1 --> Hella IBS 200 labeled "Sensor 2" + int _SensorNo; };