// ECUSettings.h was generated by ProtoGen version 3.2.a /* * This file is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This file is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . * * Author: Oliver Walters / Currawong Engineering Pty Ltd */ #ifndef _ECUSETTINGS_H #define _ECUSETTINGS_H // Language target is C, C++ compilers: don't mangle us #ifdef __cplusplus extern "C" { #endif /*! * \file */ #include #include "ECUProtocol.h" #include "ECUDefines.h" /*! * ECU settings packets (not available on CAN or RS232 interfaces) */ typedef enum { PKT_ECU_SETTINGS_THROTTLE = 0xF0, //!< Throttle settings PKT_ECU_SETTINGS_PUMP = 0xF1, //!< Throttle settings PKT_ECU_SETTINGS_GOVERNOR = 0xF2, //!< Throttle settings PKT_ECU_SETTINGS_TELEMETRY = 0xF3, //!< Throttle settings PKT_ECU_SETTINGS_FUEL_USED = 0xF4, //!< Throttle settings PKT_ECU_SETTINGS_ENGINE_TIME = 0xF5, //!< Engine run time PKT_ECU_SETTINGS_USER = 0xFA //!< User data } ECUSettingsPackets; typedef struct { unsigned reserved : 8; //!< Reserved for future use }ECU_PumpOptionBits_t; //! return the minimum encoded length for the ECU_PumpOptionBits_t structure #define getMinLengthOfECU_PumpOptionBits_t() (1) //! return the maximum encoded length for the ECU_PumpOptionBits_t structure #define getMaxLengthOfECU_PumpOptionBits_t() (1) //! Encode a ECU_PumpOptionBits_t into a byte array void encodeECU_PumpOptionBits_t(uint8_t* data, int* bytecount, const ECU_PumpOptionBits_t* user); //! Decode a ECU_PumpOptionBits_t from a byte array int decodeECU_PumpOptionBits_t(const uint8_t* data, int* bytecount, ECU_PumpOptionBits_t* user); /*! * Throttle settings */ typedef struct { uint16_t pulseOpen; //!< Throttle open PWM value uint16_t pulseClosed; //!< Throttle closed PWM value uint16_t pulseInputOpen; //!< Throttle input open PWM value uint16_t pulseInputClosed; //!< Throttle input closed PWM value uint8_t delay; //!< Throttle delay, constant value uint8_t minDelay; //!< Throttle delay, minimum value uint8_t maxDelay; //!< Throttle delay, minimum value ECU_ThrottleDelayConfigBits_t delayConfig; uint8_t softLimit; //!< Throttle dashpot soft limit value uint8_t hardLimit; //!< Throttle dashpot hard limit value uint8_t falloffRate; //!< Throttle dashpot falloff rate uint8_t curve[11]; //!< Throttle curve lookup table elements ECU_ThrottleCurveConfigBits_t curveConfig; //!< Throttle curve config bits ECU_ThrottleConfigBits_t config; uint8_t analogSpan1; uint16_t analogSpan2; uint8_t throttleTarget; }ECU_ThrottleSettings_t; //! Create the ECU_ThrottleSettings packet void encodeECU_ThrottleSettingsPacketStructure(void* pkt, const ECU_ThrottleSettings_t* user); //! Decode the ECU_ThrottleSettings packet int decodeECU_ThrottleSettingsPacketStructure(const void* pkt, ECU_ThrottleSettings_t* user); //! return the packet ID for the ECU_ThrottleSettings packet #define getECU_ThrottleSettingsPacketID() (PKT_ECU_SETTINGS_THROTTLE) //! return the minimum encoded length for the ECU_ThrottleSettings packet #define getECU_ThrottleSettingsMinDataLength() (31) //! return the maximum encoded length for the ECU_ThrottleSettings packet #define getECU_ThrottleSettingsMaxDataLength() (31) /*! * Throttle settings */ typedef struct { uint8_t resetOnStartup; uint16_t divisor; uint16_t offset; }ECU_FuelUsedSettings_t; //! Create the ECU_FuelUsedSettings packet void encodeECU_FuelUsedSettingsPacketStructure(void* pkt, const ECU_FuelUsedSettings_t* user); //! Decode the ECU_FuelUsedSettings packet int decodeECU_FuelUsedSettingsPacketStructure(const void* pkt, ECU_FuelUsedSettings_t* user); //! return the packet ID for the ECU_FuelUsedSettings packet #define getECU_FuelUsedSettingsPacketID() (PKT_ECU_SETTINGS_FUEL_USED) //! return the minimum encoded length for the ECU_FuelUsedSettings packet #define getECU_FuelUsedSettingsMinDataLength() (5) //! return the maximum encoded length for the ECU_FuelUsedSettings packet #define getECU_FuelUsedSettingsMaxDataLength() (5) /*! * Throttle settings */ typedef struct { float pGain; float iGain; float dGain; float scalePower; float maxRPM; float minRPM; uint8_t mode; }ECU_GovernorSettings_t; //! Create the ECU_GovernorSettings packet void encodeECU_GovernorSettingsPacketStructure(void* pkt, const ECU_GovernorSettings_t* user); //! Decode the ECU_GovernorSettings packet int decodeECU_GovernorSettingsPacketStructure(const void* pkt, ECU_GovernorSettings_t* user); //! return the packet ID for the ECU_GovernorSettings packet #define getECU_GovernorSettingsPacketID() (PKT_ECU_SETTINGS_GOVERNOR) //! return the minimum encoded length for the ECU_GovernorSettings packet #define getECU_GovernorSettingsMinDataLength() (19) //! return the maximum encoded length for the ECU_GovernorSettings packet #define getECU_GovernorSettingsMaxDataLength() (19) /*! * Throttle settings */ typedef struct { float kp; //!< Pump proportional gain float ki; //!< Pump integral gain float km; //!< Pump IMC (internal model) gain float pressureLowerLimit; //!< Pump lower pressure limit (PSI) float pressureUpperLimit; //!< Pump upper pressure limit (PSI) float pressureSetpoint; //!< Fuel pressure setpoint uint8_t minimumPWM; uint8_t maximumPWM; uint8_t rampRate; //!< Pump duty cycle ramp rate ECU_PumpOptionBits_t options; //!< Pump control system options uint8_t reservedA; //!< Reserved for future use uint8_t reservedB; //!< Reserved for future use }ECU_PumpSettings_t; //! Create the ECU_PumpSettings packet void encodeECU_PumpSettingsPacketStructure(void* pkt, const ECU_PumpSettings_t* user); //! Decode the ECU_PumpSettings packet int decodeECU_PumpSettingsPacketStructure(const void* pkt, ECU_PumpSettings_t* user); //! return the packet ID for the ECU_PumpSettings packet #define getECU_PumpSettingsPacketID() (PKT_ECU_SETTINGS_PUMP) //! return the minimum encoded length for the ECU_PumpSettings packet #define getECU_PumpSettingsMinDataLength() (30) //! return the maximum encoded length for the ECU_PumpSettings packet #define getECU_PumpSettingsMaxDataLength() (30) /*! * User data */ typedef struct { uint16_t powerCycles; uint32_t engineTime; uint32_t engineTimeTotal; uint16_t fuelUsedOverflows; uint8_t userValues[8]; }ECU_ECUData_t; //! Create the ECU_ECUData packet void encodeECU_ECUDataPacketStructure(void* pkt, const ECU_ECUData_t* user); //! Decode the ECU_ECUData packet int decodeECU_ECUDataPacketStructure(const void* pkt, ECU_ECUData_t* user); //! return the packet ID for the ECU_ECUData packet #define getECU_ECUDataPacketID() (PKT_ECU_SETTINGS_USER) //! return the minimum encoded length for the ECU_ECUData packet #define getECU_ECUDataMinDataLength() (20) //! return the maximum encoded length for the ECU_ECUData packet #define getECU_ECUDataMaxDataLength() (20) #ifdef __cplusplus } #endif #endif // _ECUSETTINGS_H