diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterCommands.c b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterCommands.c
deleted file mode 100644
index c88f82e26c..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterCommands.c
+++ /dev/null
@@ -1,248 +0,0 @@
-// TransmuterCommands.c was generated by ProtoGen version 3.5.c
-
-/*
- * 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
- */
-
-#include "TransmuterCommands.h"
-#include "fielddecode.h"
-#include "fieldencode.h"
-#include "scaleddecode.h"
-#include "scaledencode.h"
-
-/*!
- * \brief Lookup label for 'TransmuterSystemCommands' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string label of the given entry
- */
-const char* TransmuterSystemCommands_EnumLabel(int value)
-{
- switch (value)
- {
- default:
- return "";
- case CMD_TRANSMUTER_SET_CURRENT_TARGET_AUTO:
- return "CMD_TRANSMUTER_SET_CURRENT_TARGET_AUTO";
- case CMD_TRANSMUTER_SET_CURRENT_TARGET_MANUAL:
- return "CMD_TRANSMUTER_SET_CURRENT_TARGET_MANUAL";
- case CMD_TRANSMUTER_SET_RPM_TARGET_AUTO:
- return "CMD_TRANSMUTER_SET_RPM_TARGET_AUTO";
- case CMD_TRANSMUTER_SET_RPM_TARGET_MANUAL:
- return "CMD_TRANSMUTER_SET_RPM_TARGET_MANUAL";
- case CMD_TRANSMUTER_REQUEST_HF_DATA:
- return "CMD_TRANSMUTER_REQUEST_HF_DATA";
- }
-}
-
-/*!
- * \brief Create the Transmuter_SetCurrentTargetAuto packet
- *
- * Set current target to auto mode
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_SetCurrentTargetAutoPacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- uint8ToBytes((uint8_t)(CMD_TRANSMUTER_SET_CURRENT_TARGET_AUTO), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_SetCurrentTargetAutoPacketID());
-
-}// encodeTransmuter_SetCurrentTargetAutoPacket
-
-/*!
- * \brief Decode the Transmuter_SetCurrentTargetAuto packet
- *
- * Set current target to auto mode
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_SetCurrentTargetAutoPacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_SetCurrentTargetAutoPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_SetCurrentTargetAutoMinDataLength())
- return 0;
-
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) CMD_TRANSMUTER_SET_CURRENT_TARGET_AUTO)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_SetCurrentTargetAutoPacket
-
-/*!
- * \brief Create the Transmuter_SetCurrentTargetManual packet
- *
- * Set current target to auto mode
- * \param _pg_pkt points to the packet which will be created by this function
- * \param current is
- */
-void encodeTransmuter_SetCurrentTargetManualPacket(void* _pg_pkt, float current)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- uint8ToBytes((uint8_t)(CMD_TRANSMUTER_SET_CURRENT_TARGET_MANUAL), _pg_data, &_pg_byteindex);
-
- // Range of current is -255.0f to 255.0f.
- float32ScaledTo2SignedBeBytes(current, _pg_data, &_pg_byteindex, 128.498039f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_SetCurrentTargetManualPacketID());
-
-}// encodeTransmuter_SetCurrentTargetManualPacket
-
-/*!
- * \brief Decode the Transmuter_SetCurrentTargetManual packet
- *
- * Set current target to auto mode
- * \param _pg_pkt points to the packet being decoded by this function
- * \param current receives
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_SetCurrentTargetManualPacket(const void* _pg_pkt, float* current)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_SetCurrentTargetManualPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_SetCurrentTargetManualMinDataLength())
- return 0;
-
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) CMD_TRANSMUTER_SET_CURRENT_TARGET_MANUAL)
- return 0;
-
- // Range of current is -255.0f to 255.0f.
- (*current) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/128.498039f);
-
- return 1;
-
-}// decodeTransmuter_SetCurrentTargetManualPacket
-
-/*!
- * \brief Create the Transmuter_SetRpmTargetAuto packet
- *
- * Set RPM target to auto mode
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_SetRpmTargetAutoPacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- uint8ToBytes((uint8_t)(CMD_TRANSMUTER_SET_RPM_TARGET_AUTO), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_SetRpmTargetAutoPacketID());
-
-}// encodeTransmuter_SetRpmTargetAutoPacket
-
-/*!
- * \brief Decode the Transmuter_SetRpmTargetAuto packet
- *
- * Set RPM target to auto mode
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_SetRpmTargetAutoPacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_SetRpmTargetAutoPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_SetRpmTargetAutoMinDataLength())
- return 0;
-
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) CMD_TRANSMUTER_SET_RPM_TARGET_AUTO)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_SetRpmTargetAutoPacket
-
-/*!
- * \brief Create the Transmuter_SetRpmTargetManual packet
- *
- * Set RPM target to auto mode
- * \param _pg_pkt points to the packet which will be created by this function
- * \param rpm is Manual RPM command
- */
-void encodeTransmuter_SetRpmTargetManualPacket(void* _pg_pkt, uint16_t rpm)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- uint8ToBytes((uint8_t)(CMD_TRANSMUTER_SET_RPM_TARGET_MANUAL), _pg_data, &_pg_byteindex);
-
- // Manual RPM command
- // Range of rpm is 0 to 65535.
- uint16ToBeBytes(rpm, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_SetRpmTargetManualPacketID());
-
-}// encodeTransmuter_SetRpmTargetManualPacket
-
-/*!
- * \brief Decode the Transmuter_SetRpmTargetManual packet
- *
- * Set RPM target to auto mode
- * \param _pg_pkt points to the packet being decoded by this function
- * \param rpm receives Manual RPM command
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_SetRpmTargetManualPacket(const void* _pg_pkt, uint16_t* rpm)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_SetRpmTargetManualPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_SetRpmTargetManualMinDataLength())
- return 0;
-
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) CMD_TRANSMUTER_SET_RPM_TARGET_MANUAL)
- return 0;
-
- // Manual RPM command
- // Range of rpm is 0 to 65535.
- (*rpm) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_SetRpmTargetManualPacket
-// end of TransmuterCommands.c
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterCommands.h b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterCommands.h
deleted file mode 100644
index c35572094f..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterCommands.h
+++ /dev/null
@@ -1,130 +0,0 @@
-// TransmuterCommands.h was generated by ProtoGen version 3.5.c
-
-/*
- * 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 _TRANSMUTERCOMMANDS_H
-#define _TRANSMUTERCOMMANDS_H
-
-// Language target is C, C++ compilers: don't mangle us
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- * \file
- */
-
-#include
-#include
-#include "TransmuterProtocol.h"
-
-/*!
- * Enumeration of available system commands
- */
-typedef enum
-{
- CMD_TRANSMUTER_SET_CURRENT_TARGET_AUTO = 0xC0, //!< Set the current target to auto
- CMD_TRANSMUTER_SET_CURRENT_TARGET_MANUAL, //!< Set the current target manual value
- CMD_TRANSMUTER_SET_RPM_TARGET_AUTO = 0xD0, //!< Set the RPM target to auto
- CMD_TRANSMUTER_SET_RPM_TARGET_MANUAL, //!< Set the RPM target to a manual value
- CMD_TRANSMUTER_REQUEST_HF_DATA = 0xE0 //!< Request high-frequency transmuter specific telemetry data
-} TransmuterSystemCommands;
-
-//! \return the label of a 'TransmuterSystemCommands' enum entry, based on its value
-const char* TransmuterSystemCommands_EnumLabel(int value);
-
-//! Create the Transmuter_SetCurrentTargetAuto packet from parameters
-void encodeTransmuter_SetCurrentTargetAutoPacket(void* pkt);
-
-//! Decode the Transmuter_SetCurrentTargetAuto packet to parameters
-int decodeTransmuter_SetCurrentTargetAutoPacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_SetCurrentTargetAuto packet
-#define getTransmuter_SetCurrentTargetAutoPacketID() (PKT_TRANSMUTER_SYSTEM_CMD)
-
-//! return the minimum encoded length for the Transmuter_SetCurrentTargetAuto packet
-#define getTransmuter_SetCurrentTargetAutoMinDataLength() (1)
-
-//! return the maximum encoded length for the Transmuter_SetCurrentTargetAuto packet
-#define getTransmuter_SetCurrentTargetAutoMaxDataLength() (1)
-
-/*!
- * Set current target to auto mode
- */
-typedef struct
-{
- float current;
-}Transmuter_SetCurrentTargetManual_t;
-
-//! Create the Transmuter_SetCurrentTargetManual packet from parameters
-void encodeTransmuter_SetCurrentTargetManualPacket(void* pkt, float current);
-
-//! Decode the Transmuter_SetCurrentTargetManual packet to parameters
-int decodeTransmuter_SetCurrentTargetManualPacket(const void* pkt, float* current);
-
-//! return the packet ID for the Transmuter_SetCurrentTargetManual packet
-#define getTransmuter_SetCurrentTargetManualPacketID() (PKT_TRANSMUTER_SYSTEM_CMD)
-
-//! return the minimum encoded length for the Transmuter_SetCurrentTargetManual packet
-#define getTransmuter_SetCurrentTargetManualMinDataLength() (3)
-
-//! return the maximum encoded length for the Transmuter_SetCurrentTargetManual packet
-#define getTransmuter_SetCurrentTargetManualMaxDataLength() (3)
-
-//! Create the Transmuter_SetRpmTargetAuto packet from parameters
-void encodeTransmuter_SetRpmTargetAutoPacket(void* pkt);
-
-//! Decode the Transmuter_SetRpmTargetAuto packet to parameters
-int decodeTransmuter_SetRpmTargetAutoPacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_SetRpmTargetAuto packet
-#define getTransmuter_SetRpmTargetAutoPacketID() (PKT_TRANSMUTER_SYSTEM_CMD)
-
-//! return the minimum encoded length for the Transmuter_SetRpmTargetAuto packet
-#define getTransmuter_SetRpmTargetAutoMinDataLength() (1)
-
-//! return the maximum encoded length for the Transmuter_SetRpmTargetAuto packet
-#define getTransmuter_SetRpmTargetAutoMaxDataLength() (1)
-
-/*!
- * Set RPM target to auto mode
- */
-typedef struct
-{
- uint16_t rpm; //!< Manual RPM command
-}Transmuter_SetRpmTargetManual_t;
-
-//! Create the Transmuter_SetRpmTargetManual packet from parameters
-void encodeTransmuter_SetRpmTargetManualPacket(void* pkt, uint16_t rpm);
-
-//! Decode the Transmuter_SetRpmTargetManual packet to parameters
-int decodeTransmuter_SetRpmTargetManualPacket(const void* pkt, uint16_t* rpm);
-
-//! return the packet ID for the Transmuter_SetRpmTargetManual packet
-#define getTransmuter_SetRpmTargetManualPacketID() (PKT_TRANSMUTER_SYSTEM_CMD)
-
-//! return the minimum encoded length for the Transmuter_SetRpmTargetManual packet
-#define getTransmuter_SetRpmTargetManualMinDataLength() (3)
-
-//! return the maximum encoded length for the Transmuter_SetRpmTargetManual packet
-#define getTransmuter_SetRpmTargetManualMaxDataLength() (3)
-
-#ifdef __cplusplus
-}
-#endif
-#endif // _TRANSMUTERCOMMANDS_H
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterDefines.c b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterDefines.c
deleted file mode 100644
index d64991ebaa..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterDefines.c
+++ /dev/null
@@ -1,465 +0,0 @@
-// TransmuterDefines.c was generated by ProtoGen version 3.5.c
-
-/*
- * 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
- */
-
-#include "TransmuterDefines.h"
-#include "fielddecode.h"
-#include "fieldencode.h"
-#include "scaleddecode.h"
-#include "scaledencode.h"
-
-/*!
- * \brief Encode a Transmuter_StatusBits_t into a byte array
- *
- * Transmuter operational status information
- * \param _pg_data points to the byte array to add encoded data to
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of encoded bytes.
- * \param _pg_user is the data to encode in the byte array
- */
-void encodeTransmuter_StatusBits_t(uint8_t* _pg_data, int* _pg_bytecount, const Transmuter_StatusBits_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // Transmuter operational mode
- // Range of mode is 0 to 15.
- _pg_data[_pg_byteindex] = (uint8_t)limitMax(_pg_user->mode, 15) << 4;
-
- // Hardware enable is active
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->hwEnable == true) ? 1 : 0) << 3;
-
- // Software enable is active
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->swEnable == true) ? 1 : 0) << 2;
-
- // Critical error flag set (refer to error status packet)
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->anyErrors == true) ? 1 : 0) << 1;
-
- // Warning flag set (refer to error status packet)
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->anyWarnings == true) ? 1 : 0);
-
- // 0 = Auto current, 1 = Manual current
- _pg_data[_pg_byteindex + 1] = (uint8_t)((_pg_user->manualCurrent == true) ? 1 : 0) << 7;
-
- // 0 = Auto RPM, 1 = Manual RPM
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->manualSpeed == true) ? 1 : 0) << 6;
-
- // Reserved for future use
-
- // EFI system enabled status
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->efiEnabled == true) ? 1 : 0) << 1;
-
- // Transmuter is ready to run
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->readyToRun == true) ? 1 : 0);
- _pg_byteindex += 2; // close bit field
-
- *_pg_bytecount = _pg_byteindex;
-
-}// encodeTransmuter_StatusBits_t
-
-/*!
- * \brief Decode a Transmuter_StatusBits_t from a byte array
- *
- * Transmuter operational status information
- * \param _pg_data points to the byte array to decoded data from
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of bytes decoded
- * \param _pg_user is the data to decode from the byte array
- * \return 1 if the data are decoded, else 0.
- */
-int decodeTransmuter_StatusBits_t(const uint8_t* _pg_data, int* _pg_bytecount, Transmuter_StatusBits_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // Transmuter operational mode
- // Range of mode is 0 to 15.
- _pg_user->mode = (_pg_data[_pg_byteindex] >> 4);
-
- // Hardware enable is active
- _pg_user->hwEnable = (((_pg_data[_pg_byteindex] >> 3) & 0x1)) ? true : false;
-
- // Software enable is active
- _pg_user->swEnable = (((_pg_data[_pg_byteindex] >> 2) & 0x1)) ? true : false;
-
- // Critical error flag set (refer to error status packet)
- _pg_user->anyErrors = (((_pg_data[_pg_byteindex] >> 1) & 0x1)) ? true : false;
-
- // Warning flag set (refer to error status packet)
- _pg_user->anyWarnings = (((_pg_data[_pg_byteindex]) & 0x1)) ? true : false;
-
- // 0 = Auto current, 1 = Manual current
- _pg_user->manualCurrent = ((_pg_data[_pg_byteindex + 1] >> 7)) ? true : false;
-
- // 0 = Auto RPM, 1 = Manual RPM
- _pg_user->manualSpeed = (((_pg_data[_pg_byteindex + 1] >> 6) & 0x1)) ? true : false;
-
- // Reserved for future use
-
- // EFI system enabled status
- _pg_user->efiEnabled = (((_pg_data[_pg_byteindex + 1] >> 1) & 0x1)) ? true : false;
-
- // Transmuter is ready to run
- _pg_user->readyToRun = (((_pg_data[_pg_byteindex + 1]) & 0x1)) ? true : false;
- _pg_byteindex += 2; // close bit field
-
- *_pg_bytecount = _pg_byteindex;
-
- return 1;
-
-}// decodeTransmuter_StatusBits_t
-
-/*!
- * \brief Encode a Transmuter_WarningBits_t into a byte array
- *
- * Transmuter operational status warning bits
- * \param _pg_data points to the byte array to add encoded data to
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of encoded bytes.
- * \param _pg_user is the data to encode in the byte array
- */
-void encodeTransmuter_WarningBits_t(uint8_t* _pg_data, int* _pg_bytecount, const Transmuter_WarningBits_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // General motor control warning (refer to the motor warnings packet)
- _pg_data[_pg_byteindex] = (uint8_t)((_pg_user->motor == true) ? 1 : 0) << 7;
-
- // Battery voltage is outside configured range
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->batVoltage == true) ? 1 : 0) << 6;
-
- // Battery current is outside configured range
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->batCurrent == true) ? 1 : 0) << 5;
-
- // Generator current is outside configured range
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->genCurrent == true) ? 1 : 0) << 4;
-
- // Generator motor temperature exceeds warning limit
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->genTemp == true) ? 1 : 0) << 3;
-
- // ESC MOSFET temperature exceeds warning limit
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->escTemp == true) ? 1 : 0) << 2;
-
- // Reserved for future use
-
- // General ECU warning
- _pg_data[_pg_byteindex + 1] = (uint8_t)((_pg_user->ecu == true) ? 1 : 0) << 7;
-
- // General fuel pump warning
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->pump == true) ? 1 : 0) << 6;
-
- // Mismatch between engine and generator RPM
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->rpmMismatch == true) ? 1 : 0) << 5;
-
- // Engine is not generating expected power
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->powerLoss == true) ? 1 : 0) << 4;
-
- // Engine is performing at maximum power limit
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->engineLimit == true) ? 1 : 0) << 3;
-
- // Fuel pressure warning
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->fuelPressure == true) ? 1 : 0) << 2;
-
- // Engine temperature exceeds warning threshold
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->chtTemp == true) ? 1 : 0) << 1;
-
- // Reserved for future use
- _pg_byteindex += 2; // close bit field
-
- // Reserved for future use
- uint8ToBytes((uint8_t)(0), _pg_data, &_pg_byteindex);
-
- *_pg_bytecount = _pg_byteindex;
-
-}// encodeTransmuter_WarningBits_t
-
-/*!
- * \brief Decode a Transmuter_WarningBits_t from a byte array
- *
- * Transmuter operational status warning bits
- * \param _pg_data points to the byte array to decoded data from
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of bytes decoded
- * \param _pg_user is the data to decode from the byte array
- * \return 1 if the data are decoded, else 0.
- */
-int decodeTransmuter_WarningBits_t(const uint8_t* _pg_data, int* _pg_bytecount, Transmuter_WarningBits_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // General motor control warning (refer to the motor warnings packet)
- _pg_user->motor = ((_pg_data[_pg_byteindex] >> 7)) ? true : false;
-
- // Battery voltage is outside configured range
- _pg_user->batVoltage = (((_pg_data[_pg_byteindex] >> 6) & 0x1)) ? true : false;
-
- // Battery current is outside configured range
- _pg_user->batCurrent = (((_pg_data[_pg_byteindex] >> 5) & 0x1)) ? true : false;
-
- // Generator current is outside configured range
- _pg_user->genCurrent = (((_pg_data[_pg_byteindex] >> 4) & 0x1)) ? true : false;
-
- // Generator motor temperature exceeds warning limit
- _pg_user->genTemp = (((_pg_data[_pg_byteindex] >> 3) & 0x1)) ? true : false;
-
- // ESC MOSFET temperature exceeds warning limit
- _pg_user->escTemp = (((_pg_data[_pg_byteindex] >> 2) & 0x1)) ? true : false;
-
- // Reserved for future use
-
- // General ECU warning
- _pg_user->ecu = ((_pg_data[_pg_byteindex + 1] >> 7)) ? true : false;
-
- // General fuel pump warning
- _pg_user->pump = (((_pg_data[_pg_byteindex + 1] >> 6) & 0x1)) ? true : false;
-
- // Mismatch between engine and generator RPM
- _pg_user->rpmMismatch = (((_pg_data[_pg_byteindex + 1] >> 5) & 0x1)) ? true : false;
-
- // Engine is not generating expected power
- _pg_user->powerLoss = (((_pg_data[_pg_byteindex + 1] >> 4) & 0x1)) ? true : false;
-
- // Engine is performing at maximum power limit
- _pg_user->engineLimit = (((_pg_data[_pg_byteindex + 1] >> 3) & 0x1)) ? true : false;
-
- // Fuel pressure warning
- _pg_user->fuelPressure = (((_pg_data[_pg_byteindex + 1] >> 2) & 0x1)) ? true : false;
-
- // Engine temperature exceeds warning threshold
- _pg_user->chtTemp = (((_pg_data[_pg_byteindex + 1] >> 1) & 0x1)) ? true : false;
-
- // Reserved for future use
- _pg_byteindex += 2; // close bit field
-
- // Reserved for future use
- _pg_byteindex += 1;
-
- *_pg_bytecount = _pg_byteindex;
-
- return 1;
-
-}// decodeTransmuter_WarningBits_t
-
-/*!
- * \brief Encode a Transmuter_ErrorBits_t into a byte array
- *
- * Transmuter operational status error bits
- * \param _pg_data points to the byte array to add encoded data to
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of encoded bytes.
- * \param _pg_user is the data to encode in the byte array
- */
-void encodeTransmuter_ErrorBits_t(uint8_t* _pg_data, int* _pg_bytecount, const Transmuter_ErrorBits_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // General motor control error (refer to the motor errors packet)
- _pg_data[_pg_byteindex] = (uint8_t)((_pg_user->motor == true) ? 1 : 0) << 7;
-
- // Reserved for future use
-
- // System power map is improperly configured
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->powerMap == true) ? 1 : 0) << 5;
-
- // Error during starting routine
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->starting == true) ? 1 : 0) << 4;
-
- // Reserved for future use
-
- // ECU connection lost
- _pg_data[_pg_byteindex + 1] = (uint8_t)((_pg_user->ecuConnection == true) ? 1 : 0) << 7;
-
- // Fuel pump connection lost
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->pumpConnection == true) ? 1 : 0) << 6;
-
- // Engine stopped due to between engine and generator RPM
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->rpmMismatch == true) ? 1 : 0) << 5;
-
- // Engine stopped due to not generating power
- _pg_data[_pg_byteindex + 1] |= (uint8_t)((_pg_user->powerLoss == true) ? 1 : 0) << 4;
-
- // Reserved for future use
- _pg_byteindex += 2; // close bit field
-
- // Reserved for future use
- uint8ToBytes((uint8_t)(0), _pg_data, &_pg_byteindex);
-
- *_pg_bytecount = _pg_byteindex;
-
-}// encodeTransmuter_ErrorBits_t
-
-/*!
- * \brief Decode a Transmuter_ErrorBits_t from a byte array
- *
- * Transmuter operational status error bits
- * \param _pg_data points to the byte array to decoded data from
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of bytes decoded
- * \param _pg_user is the data to decode from the byte array
- * \return 1 if the data are decoded, else 0.
- */
-int decodeTransmuter_ErrorBits_t(const uint8_t* _pg_data, int* _pg_bytecount, Transmuter_ErrorBits_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // General motor control error (refer to the motor errors packet)
- _pg_user->motor = ((_pg_data[_pg_byteindex] >> 7)) ? true : false;
-
- // Reserved for future use
-
- // System power map is improperly configured
- _pg_user->powerMap = (((_pg_data[_pg_byteindex] >> 5) & 0x1)) ? true : false;
-
- // Error during starting routine
- _pg_user->starting = (((_pg_data[_pg_byteindex] >> 4) & 0x1)) ? true : false;
-
- // Reserved for future use
-
- // ECU connection lost
- _pg_user->ecuConnection = ((_pg_data[_pg_byteindex + 1] >> 7)) ? true : false;
-
- // Fuel pump connection lost
- _pg_user->pumpConnection = (((_pg_data[_pg_byteindex + 1] >> 6) & 0x1)) ? true : false;
-
- // Engine stopped due to between engine and generator RPM
- _pg_user->rpmMismatch = (((_pg_data[_pg_byteindex + 1] >> 5) & 0x1)) ? true : false;
-
- // Engine stopped due to not generating power
- _pg_user->powerLoss = (((_pg_data[_pg_byteindex + 1] >> 4) & 0x1)) ? true : false;
-
- // Reserved for future use
- _pg_byteindex += 2; // close bit field
-
- // Reserved for future use
- _pg_byteindex += 1;
-
- *_pg_bytecount = _pg_byteindex;
-
- return 1;
-
-}// decodeTransmuter_ErrorBits_t
-
-/*!
- * \brief Set a Transmuter_TelemetryPackets_t to initial values.
- *
- * Set a Transmuter_TelemetryPackets_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_TelemetryPackets_t(Transmuter_TelemetryPackets_t* _pg_user)
-{
-
- // Enable TelemetryStatus packet
- _pg_user->status = 1;
-
- // Enable TelemetryPower packet
- _pg_user->power = 1;
-
- // Enable TelemetrySetpoint packet
- _pg_user->setpoint = 1;
-
- // Enable TelemetryGenerator packet
- _pg_user->generator = 1;
-
- // Enable TelemetryCapacity packet
- _pg_user->capacity = 1;
-
- // Enable ControlLoop packet
- _pg_user->ctrlLoop = 0;
-
- // Enable TelemetryAPB packet
- _pg_user->apb = 0;
-
-}// initTransmuter_TelemetryPackets_t
-
-/*!
- * \brief Encode a Transmuter_TelemetryPackets_t into a byte array
- *
-
- * \param _pg_data points to the byte array to add encoded data to
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of encoded bytes.
- * \param _pg_user is the data to encode in the byte array
- */
-void encodeTransmuter_TelemetryPackets_t(uint8_t* _pg_data, int* _pg_bytecount, const Transmuter_TelemetryPackets_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // Enable TelemetryStatus packet
- _pg_data[_pg_byteindex] = (uint8_t)((_pg_user->status == true) ? 1 : 0) << 7;
-
- // Enable TelemetryPower packet
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->power == true) ? 1 : 0) << 6;
-
- // Enable TelemetrySetpoint packet
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->setpoint == true) ? 1 : 0) << 5;
-
- // Enable TelemetryGenerator packet
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->generator == true) ? 1 : 0) << 4;
-
- // Enable TelemetryCapacity packet
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->capacity == true) ? 1 : 0) << 3;
-
- // Enable ControlLoop packet
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->ctrlLoop == true) ? 1 : 0) << 2;
-
- // Enable TelemetryAPB packet
- _pg_data[_pg_byteindex] |= (uint8_t)((_pg_user->apb == true) ? 1 : 0) << 1;
-
- // Reserved for future use
- _pg_byteindex += 1; // close bit field
-
- *_pg_bytecount = _pg_byteindex;
-
-}// encodeTransmuter_TelemetryPackets_t
-
-/*!
- * \brief Decode a Transmuter_TelemetryPackets_t from a byte array
- *
-
- * \param _pg_data points to the byte array to decoded data from
- * \param _pg_bytecount points to the starting location in the byte array, and will be incremented by the number of bytes decoded
- * \param _pg_user is the data to decode from the byte array
- * \return 1 if the data are decoded, else 0.
- */
-int decodeTransmuter_TelemetryPackets_t(const uint8_t* _pg_data, int* _pg_bytecount, Transmuter_TelemetryPackets_t* _pg_user)
-{
- int _pg_byteindex = *_pg_bytecount;
-
- // Enable TelemetryStatus packet
- _pg_user->status = ((_pg_data[_pg_byteindex] >> 7)) ? true : false;
-
- // Enable TelemetryPower packet
- _pg_user->power = (((_pg_data[_pg_byteindex] >> 6) & 0x1)) ? true : false;
-
- // Enable TelemetrySetpoint packet
- _pg_user->setpoint = (((_pg_data[_pg_byteindex] >> 5) & 0x1)) ? true : false;
-
- // Enable TelemetryGenerator packet
- _pg_user->generator = (((_pg_data[_pg_byteindex] >> 4) & 0x1)) ? true : false;
-
- // Enable TelemetryCapacity packet
- _pg_user->capacity = (((_pg_data[_pg_byteindex] >> 3) & 0x1)) ? true : false;
-
- // Enable ControlLoop packet
- _pg_user->ctrlLoop = (((_pg_data[_pg_byteindex] >> 2) & 0x1)) ? true : false;
-
- // Enable TelemetryAPB packet
- _pg_user->apb = (((_pg_data[_pg_byteindex] >> 1) & 0x1)) ? true : false;
-
- // Reserved for future use
- _pg_byteindex += 1; // close bit field
-
- *_pg_bytecount = _pg_byteindex;
-
- return 1;
-
-}// decodeTransmuter_TelemetryPackets_t
-
-// end of TransmuterDefines.c
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterDefines.h b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterDefines.h
deleted file mode 100644
index f1b96a55ab..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterDefines.h
+++ /dev/null
@@ -1,160 +0,0 @@
-// TransmuterDefines.h was generated by ProtoGen version 3.5.c
-
-/*
- * 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 _TRANSMUTERDEFINES_H
-#define _TRANSMUTERDEFINES_H
-
-// Language target is C, C++ compilers: don't mangle us
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- * \file
- */
-
-#include
-#include
-#include "TransmuterProtocol.h"
-
-/*!
- * Transmuter operational status information
- */
-typedef struct
-{
- uint8_t mode; //!< Transmuter operational mode
- bool hwEnable; //!< Hardware enable is active
- bool swEnable; //!< Software enable is active
- bool anyErrors; //!< Critical error flag set (refer to error status packet)
- bool anyWarnings; //!< Warning flag set (refer to error status packet)
- bool manualCurrent; //!< 0 = Auto current, 1 = Manual current
- bool manualSpeed; //!< 0 = Auto RPM, 1 = Manual RPM
- bool efiEnabled; //!< EFI system enabled status
- bool readyToRun; //!< Transmuter is ready to run
-}Transmuter_StatusBits_t;
-
-//! return the minimum encoded length for the Transmuter_StatusBits_t structure
-#define getMinLengthOfTransmuter_StatusBits_t() (2)
-
-//! return the maximum encoded length for the Transmuter_StatusBits_t structure
-#define getMaxLengthOfTransmuter_StatusBits_t() (2)
-
-//! Encode a Transmuter_StatusBits_t into a byte array
-void encodeTransmuter_StatusBits_t(uint8_t* data, int* bytecount, const Transmuter_StatusBits_t* user);
-
-//! Decode a Transmuter_StatusBits_t from a byte array
-int decodeTransmuter_StatusBits_t(const uint8_t* data, int* bytecount, Transmuter_StatusBits_t* user);
-
-/*!
- * Transmuter operational status warning bits
- */
-typedef struct
-{
- bool motor; //!< General motor control warning (refer to the motor warnings packet)
- bool batVoltage; //!< Battery voltage is outside configured range
- bool batCurrent; //!< Battery current is outside configured range
- bool genCurrent; //!< Generator current is outside configured range
- bool genTemp; //!< Generator motor temperature exceeds warning limit
- bool escTemp; //!< ESC MOSFET temperature exceeds warning limit
- bool ecu; //!< General ECU warning
- bool pump; //!< General fuel pump warning
- bool rpmMismatch; //!< Mismatch between engine and generator RPM
- bool powerLoss; //!< Engine is not generating expected power
- bool engineLimit; //!< Engine is performing at maximum power limit
- bool fuelPressure; //!< Fuel pressure warning
- bool chtTemp; //!< Engine temperature exceeds warning threshold
-}Transmuter_WarningBits_t;
-
-//! return the minimum encoded length for the Transmuter_WarningBits_t structure
-#define getMinLengthOfTransmuter_WarningBits_t() (3)
-
-//! return the maximum encoded length for the Transmuter_WarningBits_t structure
-#define getMaxLengthOfTransmuter_WarningBits_t() (3)
-
-//! Encode a Transmuter_WarningBits_t into a byte array
-void encodeTransmuter_WarningBits_t(uint8_t* data, int* bytecount, const Transmuter_WarningBits_t* user);
-
-//! Decode a Transmuter_WarningBits_t from a byte array
-int decodeTransmuter_WarningBits_t(const uint8_t* data, int* bytecount, Transmuter_WarningBits_t* user);
-
-/*!
- * Transmuter operational status error bits
- */
-typedef struct
-{
- bool motor; //!< General motor control error (refer to the motor errors packet)
- bool powerMap; //!< System power map is improperly configured
- bool starting; //!< Error during starting routine
- bool ecuConnection; //!< ECU connection lost
- bool pumpConnection; //!< Fuel pump connection lost
- bool rpmMismatch; //!< Engine stopped due to between engine and generator RPM
- bool powerLoss; //!< Engine stopped due to not generating power
-}Transmuter_ErrorBits_t;
-
-//! return the minimum encoded length for the Transmuter_ErrorBits_t structure
-#define getMinLengthOfTransmuter_ErrorBits_t() (3)
-
-//! return the maximum encoded length for the Transmuter_ErrorBits_t structure
-#define getMaxLengthOfTransmuter_ErrorBits_t() (3)
-
-//! Encode a Transmuter_ErrorBits_t into a byte array
-void encodeTransmuter_ErrorBits_t(uint8_t* data, int* bytecount, const Transmuter_ErrorBits_t* user);
-
-//! Decode a Transmuter_ErrorBits_t from a byte array
-int decodeTransmuter_ErrorBits_t(const uint8_t* data, int* bytecount, Transmuter_ErrorBits_t* user);
-
-// Initial and verify values for TelemetryPackets
-#define Transmuter_TelemetryPackets_status_InitValue 1
-#define Transmuter_TelemetryPackets_power_InitValue 1
-#define Transmuter_TelemetryPackets_setpoint_InitValue 1
-#define Transmuter_TelemetryPackets_generator_InitValue 1
-#define Transmuter_TelemetryPackets_capacity_InitValue 1
-#define Transmuter_TelemetryPackets_ctrlLoop_InitValue 0
-#define Transmuter_TelemetryPackets_apb_InitValue 0
-
-typedef struct
-{
- bool status; //!< Enable TelemetryStatus packet
- bool power; //!< Enable TelemetryPower packet
- bool setpoint; //!< Enable TelemetrySetpoint packet
- bool generator; //!< Enable TelemetryGenerator packet
- bool capacity; //!< Enable TelemetryCapacity packet
- bool ctrlLoop; //!< Enable ControlLoop packet
- bool apb; //!< Enable TelemetryAPB packet
-}Transmuter_TelemetryPackets_t;
-
-//! return the minimum encoded length for the Transmuter_TelemetryPackets_t structure
-#define getMinLengthOfTransmuter_TelemetryPackets_t() (1)
-
-//! return the maximum encoded length for the Transmuter_TelemetryPackets_t structure
-#define getMaxLengthOfTransmuter_TelemetryPackets_t() (1)
-
-//! Set a Transmuter_TelemetryPackets_t to initial values
-void initTransmuter_TelemetryPackets_t(Transmuter_TelemetryPackets_t* user);
-
-//! Encode a Transmuter_TelemetryPackets_t into a byte array
-void encodeTransmuter_TelemetryPackets_t(uint8_t* data, int* bytecount, const Transmuter_TelemetryPackets_t* user);
-
-//! Decode a Transmuter_TelemetryPackets_t from a byte array
-int decodeTransmuter_TelemetryPackets_t(const uint8_t* data, int* bytecount, Transmuter_TelemetryPackets_t* user);
-
-#ifdef __cplusplus
-}
-#endif
-#endif // _TRANSMUTERDEFINES_H
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterPackets.c b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterPackets.c
deleted file mode 100644
index a9f9994d47..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterPackets.c
+++ /dev/null
@@ -1,2988 +0,0 @@
-// TransmuterPackets.c was generated by ProtoGen version 3.5.c
-
-/*
- * 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
- */
-
-#include "TransmuterPackets.h"
-#include "fielddecode.h"
-#include "fieldencode.h"
-#include "scaleddecode.h"
-#include "scaledencode.h"
-#include "TransmuterDefines.h"
-
-/*!
- * \brief Create the Transmuter_EnterStandby packet
- *
- * Put the Transmuter in *STANDBY* mode. If the Transmuter is running it will
- * be disabled.
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_EnterStandbyPacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Constant value required for standby sequence
- uint8ToBytes((uint8_t)(0xA0), _pg_data, &_pg_byteindex);
-
- // Constant value required for standby sequence
- uint8ToBytes((uint8_t)(0xB0), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EnterStandbyPacketID());
-
-}// encodeTransmuter_EnterStandbyPacket
-
-/*!
- * \brief Decode the Transmuter_EnterStandby packet
- *
- * Put the Transmuter in *STANDBY* mode. If the Transmuter is running it will
- * be disabled.
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EnterStandbyPacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EnterStandbyPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_EnterStandbyMinDataLength())
- return 0;
-
- // Constant value required for standby sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xA0)
- return 0;
-
- // Constant value required for standby sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xB0)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_EnterStandbyPacket
-
-/*!
- * \brief Create the Transmuter_EnterPreflight packet
- *
- * Put the Transmuter in *PREFLIGHT* mode
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_EnterPreflightPacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Constant value required for standby sequence
- uint8ToBytes((uint8_t)(0xC0), _pg_data, &_pg_byteindex);
-
- // Constant value required for standby sequence
- uint8ToBytes((uint8_t)(0xD0), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EnterPreflightPacketID());
-
-}// encodeTransmuter_EnterPreflightPacket
-
-/*!
- * \brief Decode the Transmuter_EnterPreflight packet
- *
- * Put the Transmuter in *PREFLIGHT* mode
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EnterPreflightPacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EnterPreflightPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_EnterPreflightMinDataLength())
- return 0;
-
- // Constant value required for standby sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xC0)
- return 0;
-
- // Constant value required for standby sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xD0)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_EnterPreflightPacket
-
-/*!
- * \brief Create the Transmuter_EnterWarmup packet
- *
- * Put the Transmuter in *WARMUP* mode. If the engine is not spinning, the
- * Transmuter will enter the engine starting routine.
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_EnterWarmupPacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Constant value required for warmup sequence
- uint8ToBytes((uint8_t)(0xC5), _pg_data, &_pg_byteindex);
-
- // Constant value required for warmup sequence
- uint8ToBytes((uint8_t)(0x5C), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EnterWarmupPacketID());
-
-}// encodeTransmuter_EnterWarmupPacket
-
-/*!
- * \brief Decode the Transmuter_EnterWarmup packet
- *
- * Put the Transmuter in *WARMUP* mode. If the engine is not spinning, the
- * Transmuter will enter the engine starting routine.
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EnterWarmupPacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EnterWarmupPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_EnterWarmupMinDataLength())
- return 0;
-
- // Constant value required for warmup sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xC5)
- return 0;
-
- // Constant value required for warmup sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0x5C)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_EnterWarmupPacket
-
-/*!
- * \brief Create the Transmuter_EnterRunMode packet
- *
- * Put the Transmuter in *RUN* mode. If the engine is not spinning, the
- * Transmuter will enter the engine starting routine.
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_EnterRunModePacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Constant value requried for run sequence
- uint8ToBytes((uint8_t)(0x5A), _pg_data, &_pg_byteindex);
-
- // Constant value requried for run sequence
- uint8ToBytes((uint8_t)(0xA5), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EnterRunModePacketID());
-
-}// encodeTransmuter_EnterRunModePacket
-
-/*!
- * \brief Decode the Transmuter_EnterRunMode packet
- *
- * Put the Transmuter in *RUN* mode. If the engine is not spinning, the
- * Transmuter will enter the engine starting routine.
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EnterRunModePacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EnterRunModePacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_EnterRunModeMinDataLength())
- return 0;
-
- // Constant value requried for run sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0x5A)
- return 0;
-
- // Constant value requried for run sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xA5)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_EnterRunModePacket
-
-/*!
- * \brief Create the Transmuter_EnterPWMMode packet
- *
- * Put the Transmtuer in *PWM* mode. The Transmuter will act as a regular ESC
- * and perform ESC PWM commands
- * \param _pg_pkt points to the packet which will be created by this function
- */
-void encodeTransmuter_EnterPWMModePacket(void* _pg_pkt)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Constant value requried for run sequence
- uint8ToBytes((uint8_t)(0x6B), _pg_data, &_pg_byteindex);
-
- // Constant value requried for run sequence
- uint8ToBytes((uint8_t)(0xB6), _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EnterPWMModePacketID());
-
-}// encodeTransmuter_EnterPWMModePacket
-
-/*!
- * \brief Decode the Transmuter_EnterPWMMode packet
- *
- * Put the Transmtuer in *PWM* mode. The Transmuter will act as a regular ESC
- * and perform ESC PWM commands
- * \param _pg_pkt points to the packet being decoded by this function
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EnterPWMModePacket(const void* _pg_pkt)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EnterPWMModePacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_EnterPWMModeMinDataLength())
- return 0;
-
- // Constant value requried for run sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0x6B)
- return 0;
-
- // Constant value requried for run sequence
- if (uint8FromBytes(_pg_data, &_pg_byteindex) != (uint8_t) 0xB6)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_EnterPWMModePacket
-
-/*!
- * \brief Create the Transmuter_TelemetryStatus packet
- *
- * The TelemetryStatus packet contains critical operational status information
- * pertaining to the current state of the Transmuter
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetryStatusPacketStructure(void* _pg_pkt, const Transmuter_TelemetryStatus_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- encodeTransmuter_StatusBits_t(_pg_data, &_pg_byteindex, &_pg_user->status);
-
- encodeTransmuter_WarningBits_t(_pg_data, &_pg_byteindex, &_pg_user->warning);
-
- encodeTransmuter_ErrorBits_t(_pg_data, &_pg_byteindex, &_pg_user->errors);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryStatusPacketID());
-
-}// encodeTransmuter_TelemetryStatusPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetryStatus packet
- *
- * The TelemetryStatus packet contains critical operational status information
- * pertaining to the current state of the Transmuter
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryStatusPacketStructure(const void* _pg_pkt, Transmuter_TelemetryStatus_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryStatusPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetryStatusMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- if(decodeTransmuter_StatusBits_t(_pg_data, &_pg_byteindex, &_pg_user->status) == 0)
- return 0;
-
- if(decodeTransmuter_WarningBits_t(_pg_data, &_pg_byteindex, &_pg_user->warning) == 0)
- return 0;
-
- if(decodeTransmuter_ErrorBits_t(_pg_data, &_pg_byteindex, &_pg_user->errors) == 0)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_TelemetryStatusPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetryStatus packet
- *
- * The TelemetryStatus packet contains critical operational status information
- * pertaining to the current state of the Transmuter
- * \param _pg_pkt points to the packet which will be created by this function
- * \param status is
- * \param warning is
- * \param errors is
- */
-void encodeTransmuter_TelemetryStatusPacket(void* _pg_pkt, const Transmuter_StatusBits_t* status, const Transmuter_WarningBits_t* warning, const Transmuter_ErrorBits_t* errors)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- encodeTransmuter_StatusBits_t(_pg_data, &_pg_byteindex, status);
-
- encodeTransmuter_WarningBits_t(_pg_data, &_pg_byteindex, warning);
-
- encodeTransmuter_ErrorBits_t(_pg_data, &_pg_byteindex, errors);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryStatusPacketID());
-
-}// encodeTransmuter_TelemetryStatusPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetryStatus packet
- *
- * The TelemetryStatus packet contains critical operational status information
- * pertaining to the current state of the Transmuter
- * \param _pg_pkt points to the packet being decoded by this function
- * \param status receives
- * \param warning receives
- * \param errors receives
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryStatusPacket(const void* _pg_pkt, Transmuter_StatusBits_t* status, Transmuter_WarningBits_t* warning, Transmuter_ErrorBits_t* errors)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryStatusPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetryStatusMinDataLength())
- return 0;
-
- if(decodeTransmuter_StatusBits_t(_pg_data, &_pg_byteindex, status) == 0)
- return 0;
-
- if(decodeTransmuter_WarningBits_t(_pg_data, &_pg_byteindex, warning) == 0)
- return 0;
-
- if(decodeTransmuter_ErrorBits_t(_pg_data, &_pg_byteindex, errors) == 0)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_TelemetryStatusPacket
-
-/*!
- * \brief Create the Transmuter_TelemetryPower packet
- *
- * The TelemetryPower packet contains information on the current operation
- * point of the engine and generator
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetryPowerPacketStructure(void* _pg_pkt, const Transmuter_TelemetryPower_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // System voltage
- // Range of voltage is 0.0f to 128.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->voltage, _pg_data, &_pg_byteindex, 0.0f, 511.992188f);
-
- // Generator current
- // Range of genCurrent is -500.0f to 500.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->genCurrent, _pg_data, &_pg_byteindex, 65.534f);
-
- // Battery current
- // Range of batCurrent is -500.0f to 500.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->batCurrent, _pg_data, &_pg_byteindex, 65.534f);
-
- // Mechanical rotational speed
- // Range of rpm is -32768 to 32767.
- int16ToBeBytes(_pg_user->rpm, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryPowerPacketID());
-
-}// encodeTransmuter_TelemetryPowerPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetryPower packet
- *
- * The TelemetryPower packet contains information on the current operation
- * point of the engine and generator
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryPowerPacketStructure(const void* _pg_pkt, Transmuter_TelemetryPower_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryPowerPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetryPowerMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // System voltage
- // Range of voltage is 0.0f to 128.0f.
- _pg_user->voltage = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/511.992188f);
-
- // Generator current
- // Range of genCurrent is -500.0f to 500.0f.
- _pg_user->genCurrent = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/65.534f);
-
- // Battery current
- // Range of batCurrent is -500.0f to 500.0f.
- _pg_user->batCurrent = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/65.534f);
-
- // Mechanical rotational speed
- // Range of rpm is -32768 to 32767.
- _pg_user->rpm = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_TelemetryPowerPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetryPower packet
- *
- * The TelemetryPower packet contains information on the current operation
- * point of the engine and generator
- * \param _pg_pkt points to the packet which will be created by this function
- * \param voltage is System voltage
- * \param genCurrent is Generator current
- * \param batCurrent is Battery current
- * \param rpm is Mechanical rotational speed
- */
-void encodeTransmuter_TelemetryPowerPacket(void* _pg_pkt, float voltage, float genCurrent, float batCurrent, int16_t rpm)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // System voltage
- // Range of voltage is 0.0f to 128.0f.
- float32ScaledTo2UnsignedBeBytes(voltage, _pg_data, &_pg_byteindex, 0.0f, 511.992188f);
-
- // Generator current
- // Range of genCurrent is -500.0f to 500.0f.
- float32ScaledTo2SignedBeBytes(genCurrent, _pg_data, &_pg_byteindex, 65.534f);
-
- // Battery current
- // Range of batCurrent is -500.0f to 500.0f.
- float32ScaledTo2SignedBeBytes(batCurrent, _pg_data, &_pg_byteindex, 65.534f);
-
- // Mechanical rotational speed
- // Range of rpm is -32768 to 32767.
- int16ToBeBytes(rpm, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryPowerPacketID());
-
-}// encodeTransmuter_TelemetryPowerPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetryPower packet
- *
- * The TelemetryPower packet contains information on the current operation
- * point of the engine and generator
- * \param _pg_pkt points to the packet being decoded by this function
- * \param voltage receives System voltage
- * \param genCurrent receives Generator current
- * \param batCurrent receives Battery current
- * \param rpm receives Mechanical rotational speed
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryPowerPacket(const void* _pg_pkt, float* voltage, float* genCurrent, float* batCurrent, int16_t* rpm)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryPowerPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetryPowerMinDataLength())
- return 0;
-
- // System voltage
- // Range of voltage is 0.0f to 128.0f.
- (*voltage) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/511.992188f);
-
- // Generator current
- // Range of genCurrent is -500.0f to 500.0f.
- (*genCurrent) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/65.534f);
-
- // Battery current
- // Range of batCurrent is -500.0f to 500.0f.
- (*batCurrent) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/65.534f);
-
- // Mechanical rotational speed
- // Range of rpm is -32768 to 32767.
- (*rpm) = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_TelemetryPowerPacket
-
-/*!
- * \brief Create the Transmuter_TelemetrySetpoint packet
- *
- * The TelemetrySetpoint packet contains system setpoint/target information
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetrySetpointPacketStructure(void* _pg_pkt, const Transmuter_TelemetrySetpoint_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Battery current setpoint value
- // Range of currentSetpoint is -255.0f to 255.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->currentSetpoint, _pg_data, &_pg_byteindex, 128.498039f);
-
- // System RPM target
- // Range of rpmTarget is -32768 to 32767.
- int16ToBeBytes(_pg_user->rpmTarget, _pg_data, &_pg_byteindex);
-
- // ECU throttle target
- // Range of throttleTarget is 0 to 255.
- uint8ToBytes(_pg_user->throttleTarget, _pg_data, &_pg_byteindex);
-
- // Generator power target
- // Range of powerTarget is -32768 to 32767.
- int16ToBeBytes(_pg_user->powerTarget, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetrySetpointPacketID());
-
-}// encodeTransmuter_TelemetrySetpointPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetrySetpoint packet
- *
- * The TelemetrySetpoint packet contains system setpoint/target information
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetrySetpointPacketStructure(const void* _pg_pkt, Transmuter_TelemetrySetpoint_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetrySetpointPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetrySetpointMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Battery current setpoint value
- // Range of currentSetpoint is -255.0f to 255.0f.
- _pg_user->currentSetpoint = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/128.498039f);
-
- // System RPM target
- // Range of rpmTarget is -32768 to 32767.
- _pg_user->rpmTarget = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // ECU throttle target
- // Range of throttleTarget is 0 to 255.
- _pg_user->throttleTarget = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Generator power target
- // Range of powerTarget is -32768 to 32767.
- _pg_user->powerTarget = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_TelemetrySetpointPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetrySetpoint packet
- *
- * The TelemetrySetpoint packet contains system setpoint/target information
- * \param _pg_pkt points to the packet which will be created by this function
- * \param currentSetpoint is Battery current setpoint value
- * \param rpmTarget is System RPM target
- * \param throttleTarget is ECU throttle target
- * \param powerTarget is Generator power target
- */
-void encodeTransmuter_TelemetrySetpointPacket(void* _pg_pkt, float currentSetpoint, int16_t rpmTarget, uint8_t throttleTarget, int16_t powerTarget)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Battery current setpoint value
- // Range of currentSetpoint is -255.0f to 255.0f.
- float32ScaledTo2SignedBeBytes(currentSetpoint, _pg_data, &_pg_byteindex, 128.498039f);
-
- // System RPM target
- // Range of rpmTarget is -32768 to 32767.
- int16ToBeBytes(rpmTarget, _pg_data, &_pg_byteindex);
-
- // ECU throttle target
- // Range of throttleTarget is 0 to 255.
- uint8ToBytes(throttleTarget, _pg_data, &_pg_byteindex);
-
- // Generator power target
- // Range of powerTarget is -32768 to 32767.
- int16ToBeBytes(powerTarget, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetrySetpointPacketID());
-
-}// encodeTransmuter_TelemetrySetpointPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetrySetpoint packet
- *
- * The TelemetrySetpoint packet contains system setpoint/target information
- * \param _pg_pkt points to the packet being decoded by this function
- * \param currentSetpoint receives Battery current setpoint value
- * \param rpmTarget receives System RPM target
- * \param throttleTarget receives ECU throttle target
- * \param powerTarget receives Generator power target
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetrySetpointPacket(const void* _pg_pkt, float* currentSetpoint, int16_t* rpmTarget, uint8_t* throttleTarget, int16_t* powerTarget)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetrySetpointPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetrySetpointMinDataLength())
- return 0;
-
- // Battery current setpoint value
- // Range of currentSetpoint is -255.0f to 255.0f.
- (*currentSetpoint) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/128.498039f);
-
- // System RPM target
- // Range of rpmTarget is -32768 to 32767.
- (*rpmTarget) = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // ECU throttle target
- // Range of throttleTarget is 0 to 255.
- (*throttleTarget) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Generator power target
- // Range of powerTarget is -32768 to 32767.
- (*powerTarget) = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_TelemetrySetpointPacket
-
-/*!
- * \brief Create the Transmuter_TelemetryGenerator packet
- *
- * The TelemetryGenerator packet provides information about the current
- * operational status of the generator and EFI system.
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetryGeneratorPacketStructure(void* _pg_pkt, const Transmuter_TelemetryGenerator_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Power electronics module temperature
- // Range of fetTemperature is 0 to 255.
- uint8ToBytes(_pg_user->fetTemperature, _pg_data, &_pg_byteindex);
-
- // Generator motor temperature
- // Range of motTemperature is 0 to 255.
- uint8ToBytes(_pg_user->motTemperature, _pg_data, &_pg_byteindex);
-
- // Engine cylinder head temperature
- // Range of chtTemperature is 0 to 255.
- uint8ToBytes(_pg_user->chtTemperature, _pg_data, &_pg_byteindex);
-
- // Fuel pressure
- // Range of fuelPressure is 0.0f to 655.35f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->fuelPressure, _pg_data, &_pg_byteindex, 0.0f, 100.0f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryGeneratorPacketID());
-
-}// encodeTransmuter_TelemetryGeneratorPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetryGenerator packet
- *
- * The TelemetryGenerator packet provides information about the current
- * operational status of the generator and EFI system.
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryGeneratorPacketStructure(const void* _pg_pkt, Transmuter_TelemetryGenerator_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryGeneratorPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetryGeneratorMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Power electronics module temperature
- // Range of fetTemperature is 0 to 255.
- _pg_user->fetTemperature = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Generator motor temperature
- // Range of motTemperature is 0 to 255.
- _pg_user->motTemperature = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Engine cylinder head temperature
- // Range of chtTemperature is 0 to 255.
- _pg_user->chtTemperature = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Fuel pressure
- // Range of fuelPressure is 0.0f to 655.35f.
- _pg_user->fuelPressure = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/100.0f);
-
- return 1;
-
-}// decodeTransmuter_TelemetryGeneratorPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetryGenerator packet
- *
- * The TelemetryGenerator packet provides information about the current
- * operational status of the generator and EFI system.
- * \param _pg_pkt points to the packet which will be created by this function
- * \param fetTemperature is Power electronics module temperature
- * \param motTemperature is Generator motor temperature
- * \param chtTemperature is Engine cylinder head temperature
- * \param fuelPressure is Fuel pressure
- */
-void encodeTransmuter_TelemetryGeneratorPacket(void* _pg_pkt, uint8_t fetTemperature, uint8_t motTemperature, uint8_t chtTemperature, float fuelPressure)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Power electronics module temperature
- // Range of fetTemperature is 0 to 255.
- uint8ToBytes(fetTemperature, _pg_data, &_pg_byteindex);
-
- // Generator motor temperature
- // Range of motTemperature is 0 to 255.
- uint8ToBytes(motTemperature, _pg_data, &_pg_byteindex);
-
- // Engine cylinder head temperature
- // Range of chtTemperature is 0 to 255.
- uint8ToBytes(chtTemperature, _pg_data, &_pg_byteindex);
-
- // Fuel pressure
- // Range of fuelPressure is 0.0f to 655.35f.
- float32ScaledTo2UnsignedBeBytes(fuelPressure, _pg_data, &_pg_byteindex, 0.0f, 100.0f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryGeneratorPacketID());
-
-}// encodeTransmuter_TelemetryGeneratorPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetryGenerator packet
- *
- * The TelemetryGenerator packet provides information about the current
- * operational status of the generator and EFI system.
- * \param _pg_pkt points to the packet being decoded by this function
- * \param fetTemperature receives Power electronics module temperature
- * \param motTemperature receives Generator motor temperature
- * \param chtTemperature receives Engine cylinder head temperature
- * \param fuelPressure receives Fuel pressure
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryGeneratorPacket(const void* _pg_pkt, uint8_t* fetTemperature, uint8_t* motTemperature, uint8_t* chtTemperature, float* fuelPressure)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryGeneratorPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetryGeneratorMinDataLength())
- return 0;
-
- // Power electronics module temperature
- // Range of fetTemperature is 0 to 255.
- (*fetTemperature) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Generator motor temperature
- // Range of motTemperature is 0 to 255.
- (*motTemperature) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Engine cylinder head temperature
- // Range of chtTemperature is 0 to 255.
- (*chtTemperature) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Fuel pressure
- // Range of fuelPressure is 0.0f to 655.35f.
- (*fuelPressure) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/100.0f);
-
- return 1;
-
-}// decodeTransmuter_TelemetryGeneratorPacket
-
-/*!
- * \brief Create the Transmuter_TelemetryCapacity packet
- *
- * The TelemetryCapacity packet provides information on the battery and fuel
- * capacity
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetryCapacityPacketStructure(void* _pg_pkt, const Transmuter_TelemetryCapacity_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Fuel used estimate
- // Range of fuelUsed is 0 to 4294967295.
- uint32ToBeBytes(_pg_user->fuelUsed, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryCapacityPacketID());
-
-}// encodeTransmuter_TelemetryCapacityPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetryCapacity packet
- *
- * The TelemetryCapacity packet provides information on the battery and fuel
- * capacity
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryCapacityPacketStructure(const void* _pg_pkt, Transmuter_TelemetryCapacity_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryCapacityPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetryCapacityMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Fuel used estimate
- // Range of fuelUsed is 0 to 4294967295.
- _pg_user->fuelUsed = uint32FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_TelemetryCapacityPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetryCapacity packet
- *
- * The TelemetryCapacity packet provides information on the battery and fuel
- * capacity
- * \param _pg_pkt points to the packet which will be created by this function
- * \param fuelUsed is Fuel used estimate
- */
-void encodeTransmuter_TelemetryCapacityPacket(void* _pg_pkt, uint32_t fuelUsed)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Fuel used estimate
- // Range of fuelUsed is 0 to 4294967295.
- uint32ToBeBytes(fuelUsed, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryCapacityPacketID());
-
-}// encodeTransmuter_TelemetryCapacityPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetryCapacity packet
- *
- * The TelemetryCapacity packet provides information on the battery and fuel
- * capacity
- * \param _pg_pkt points to the packet being decoded by this function
- * \param fuelUsed receives Fuel used estimate
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryCapacityPacket(const void* _pg_pkt, uint32_t* fuelUsed)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryCapacityPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetryCapacityMinDataLength())
- return 0;
-
- // Fuel used estimate
- // Range of fuelUsed is 0 to 4294967295.
- (*fuelUsed) = uint32FromBeBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_TelemetryCapacityPacket
-
-/*!
- * \brief Create the Transmuter_TelemetryControlLoop packet
- *
- * Current state of the transmuter current control loop
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetryControlLoopPacketStructure(void* _pg_pkt, const Transmuter_TelemetryControlLoop_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Range of pTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->pTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // Range of iTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->iTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // Range of dTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->dTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // Range of fTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->fTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryControlLoopPacketID());
-
-}// encodeTransmuter_TelemetryControlLoopPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetryControlLoop packet
- *
- * Current state of the transmuter current control loop
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryControlLoopPacketStructure(const void* _pg_pkt, Transmuter_TelemetryControlLoop_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryControlLoopPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetryControlLoopMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Range of pTerm is -100.0f to 100.0f.
- _pg_user->pTerm = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- // Range of iTerm is -100.0f to 100.0f.
- _pg_user->iTerm = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- // Range of dTerm is -100.0f to 100.0f.
- _pg_user->dTerm = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- // Range of fTerm is -100.0f to 100.0f.
- _pg_user->fTerm = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- return 1;
-
-}// decodeTransmuter_TelemetryControlLoopPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetryControlLoop packet
- *
- * Current state of the transmuter current control loop
- * \param _pg_pkt points to the packet which will be created by this function
- * \param pTerm is
- * \param iTerm is
- * \param dTerm is
- * \param fTerm is
- */
-void encodeTransmuter_TelemetryControlLoopPacket(void* _pg_pkt, float pTerm, float iTerm, float dTerm, float fTerm)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Range of pTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(pTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // Range of iTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(iTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // Range of dTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(dTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // Range of fTerm is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(fTerm, _pg_data, &_pg_byteindex, 327.67f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryControlLoopPacketID());
-
-}// encodeTransmuter_TelemetryControlLoopPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetryControlLoop packet
- *
- * Current state of the transmuter current control loop
- * \param _pg_pkt points to the packet being decoded by this function
- * \param pTerm receives
- * \param iTerm receives
- * \param dTerm receives
- * \param fTerm receives
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryControlLoopPacket(const void* _pg_pkt, float* pTerm, float* iTerm, float* dTerm, float* fTerm)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryControlLoopPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetryControlLoopMinDataLength())
- return 0;
-
- // Range of pTerm is -100.0f to 100.0f.
- (*pTerm) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- // Range of iTerm is -100.0f to 100.0f.
- (*iTerm) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- // Range of dTerm is -100.0f to 100.0f.
- (*dTerm) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- // Range of fTerm is -100.0f to 100.0f.
- (*fTerm) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- return 1;
-
-}// decodeTransmuter_TelemetryControlLoopPacket
-
-/*!
- * \brief Create the Transmuter_TelemetryAPBPower packet
- *
- * Power information for the Auxilary Power Board
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetryAPBPowerPacketStructure(void* _pg_pkt, const Transmuter_TelemetryAPBPower_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // APB output voltage (V)
- // Range of apbVoltage is 0.0f to 25.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->apbVoltage, _pg_data, &_pg_byteindex, 0.0f, 2621.4f);
-
- // APB output current (A)
- // Range of apbCurrent is 0.0f to 8.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->apbCurrent, _pg_data, &_pg_byteindex, 0.0f, 8191.875f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryAPBPowerPacketID());
-
-}// encodeTransmuter_TelemetryAPBPowerPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetryAPBPower packet
- *
- * Power information for the Auxilary Power Board
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryAPBPowerPacketStructure(const void* _pg_pkt, Transmuter_TelemetryAPBPower_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryAPBPowerPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetryAPBPowerMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // APB output voltage (V)
- // Range of apbVoltage is 0.0f to 25.0f.
- _pg_user->apbVoltage = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/2621.4f);
-
- // APB output current (A)
- // Range of apbCurrent is 0.0f to 8.0f.
- _pg_user->apbCurrent = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/8191.875f);
-
- return 1;
-
-}// decodeTransmuter_TelemetryAPBPowerPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetryAPBPower packet
- *
- * Power information for the Auxilary Power Board
- * \param _pg_pkt points to the packet which will be created by this function
- * \param apbVoltage is APB output voltage (V)
- * \param apbCurrent is APB output current (A)
- */
-void encodeTransmuter_TelemetryAPBPowerPacket(void* _pg_pkt, float apbVoltage, float apbCurrent)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // APB output voltage (V)
- // Range of apbVoltage is 0.0f to 25.0f.
- float32ScaledTo2UnsignedBeBytes(apbVoltage, _pg_data, &_pg_byteindex, 0.0f, 2621.4f);
-
- // APB output current (A)
- // Range of apbCurrent is 0.0f to 8.0f.
- float32ScaledTo2UnsignedBeBytes(apbCurrent, _pg_data, &_pg_byteindex, 0.0f, 8191.875f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetryAPBPowerPacketID());
-
-}// encodeTransmuter_TelemetryAPBPowerPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetryAPBPower packet
- *
- * Power information for the Auxilary Power Board
- * \param _pg_pkt points to the packet being decoded by this function
- * \param apbVoltage receives APB output voltage (V)
- * \param apbCurrent receives APB output current (A)
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetryAPBPowerPacket(const void* _pg_pkt, float* apbVoltage, float* apbCurrent)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetryAPBPowerPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetryAPBPowerMinDataLength())
- return 0;
-
- // APB output voltage (V)
- // Range of apbVoltage is 0.0f to 25.0f.
- (*apbVoltage) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/2621.4f);
-
- // APB output current (A)
- // Range of apbCurrent is 0.0f to 8.0f.
- (*apbCurrent) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/8191.875f);
-
- return 1;
-
-}// decodeTransmuter_TelemetryAPBPowerPacket
-
-/*!
- * \brief Set a Transmuter_WarningLevels_t to initial values.
- *
- * Set a Transmuter_WarningLevels_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_WarningLevels_t(Transmuter_WarningLevels_t* _pg_user)
-{
-
- // Engine (CHT) temperature warning level
- _pg_user->engineTemp = 140;
-
-}// initTransmuter_WarningLevels_t
-
-/*!
- * \brief Create the Transmuter_WarningLevels packet
- *
- * Warning level configuration values
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_WarningLevelsPacketStructure(void* _pg_pkt, const Transmuter_WarningLevels_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Engine (CHT) temperature warning level
- // Range of engineTemp is 0 to 255.
- uint8ToBytes(_pg_user->engineTemp, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_WarningLevelsPacketID());
-
-}// encodeTransmuter_WarningLevelsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_WarningLevels packet
- *
- * Warning level configuration values
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_WarningLevelsPacketStructure(const void* _pg_pkt, Transmuter_WarningLevels_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_WarningLevelsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_WarningLevelsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Engine (CHT) temperature warning level
- // Range of engineTemp is 0 to 255.
- _pg_user->engineTemp = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_WarningLevelsPacketStructure
-
-/*!
- * \brief Create the Transmuter_WarningLevels packet
- *
- * Warning level configuration values
- * \param _pg_pkt points to the packet which will be created by this function
- * \param engineTemp is Engine (CHT) temperature warning level
- */
-void encodeTransmuter_WarningLevelsPacket(void* _pg_pkt, uint8_t engineTemp)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Engine (CHT) temperature warning level
- // Range of engineTemp is 0 to 255.
- uint8ToBytes(engineTemp, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_WarningLevelsPacketID());
-
-}// encodeTransmuter_WarningLevelsPacket
-
-/*!
- * \brief Decode the Transmuter_WarningLevels packet
- *
- * Warning level configuration values
- * \param _pg_pkt points to the packet being decoded by this function
- * \param engineTemp receives Engine (CHT) temperature warning level
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_WarningLevelsPacket(const void* _pg_pkt, uint8_t* engineTemp)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_WarningLevelsPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_WarningLevelsMinDataLength())
- return 0;
-
- // Engine (CHT) temperature warning level
- // Range of engineTemp is 0 to 255.
- (*engineTemp) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_WarningLevelsPacket
-
-/*!
- * \brief Verify a Transmuter_WarningLevels_t has acceptable values.
- *
- * Verify a Transmuter_WarningLevels_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_WarningLevels_t(Transmuter_WarningLevels_t* _pg_user)
-{
- int _pg_good = 1;
-
- // Engine (CHT) temperature warning level
- if(_pg_user->engineTemp < 50)
- {
- _pg_user->engineTemp = 50;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_WarningLevels_t
-
-/*!
- * \brief Set a Transmuter_EFISettings_t to initial values.
- *
- * Set a Transmuter_EFISettings_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_EFISettings_t(Transmuter_EFISettings_t* _pg_user)
-{
-
- // CAN Node ID for the ECU
- _pg_user->ecuAddress = 200;
-
- // CAN Node ID for the triplex pump
- _pg_user->triplexAddress = 201;
-
- // Minimum required fuel pressure
- _pg_user->fuelPressureMin = 5.0f;
-
-}// initTransmuter_EFISettings_t
-
-/*!
- * \brief Create the Transmuter_EFISettings packet
- *
- * ECU connection configuration packet
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_EFISettingsPacketStructure(void* _pg_pkt, const Transmuter_EFISettings_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // CAN Node ID for the ECU
- // Range of ecuAddress is 0 to 255.
- uint8ToBytes(_pg_user->ecuAddress, _pg_data, &_pg_byteindex);
-
- // ECU firmware checksum
- // Range of ecuFirmwareChecksum is 0 to 65535.
- uint16ToBeBytes(_pg_user->ecuFirmwareChecksum, _pg_data, &_pg_byteindex);
-
- // ECU settings checksum
- // Range of ecuSettingsChecksum is 0 to 65535.
- uint16ToBeBytes(_pg_user->ecuSettingsChecksum, _pg_data, &_pg_byteindex);
-
- // CAN Node ID for the triplex pump
- // Range of triplexAddress is 0 to 255.
- uint8ToBytes(_pg_user->triplexAddress, _pg_data, &_pg_byteindex);
-
- // Triplex pump firmware checksum
- // Range of triplexFirmwareChecksum is 0 to 65535.
- uint16ToBeBytes(_pg_user->triplexFirmwareChecksum, _pg_data, &_pg_byteindex);
-
- // Minimum required fuel pressure
- // Range of fuelPressureMin is -327.67f to 327.67f.
- float32ScaledTo2SignedBeBytes(_pg_user->fuelPressureMin, _pg_data, &_pg_byteindex, 100.0f);
-
- // Fuel pressure control method
- // Range of pumpController is 0 to 255.
- uint8ToBytes(_pg_user->pumpController, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EFISettingsPacketID());
-
-}// encodeTransmuter_EFISettingsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_EFISettings packet
- *
- * ECU connection configuration packet
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EFISettingsPacketStructure(const void* _pg_pkt, Transmuter_EFISettings_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EFISettingsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_EFISettingsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // this packet has default fields, make sure they are set
- _pg_user->pumpController = TRANSMUTER_PUMP_TRIPLEX;
-
- // CAN Node ID for the ECU
- // Range of ecuAddress is 0 to 255.
- _pg_user->ecuAddress = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // ECU firmware checksum
- // Range of ecuFirmwareChecksum is 0 to 65535.
- _pg_user->ecuFirmwareChecksum = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // ECU settings checksum
- // Range of ecuSettingsChecksum is 0 to 65535.
- _pg_user->ecuSettingsChecksum = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // CAN Node ID for the triplex pump
- // Range of triplexAddress is 0 to 255.
- _pg_user->triplexAddress = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Triplex pump firmware checksum
- // Range of triplexFirmwareChecksum is 0 to 65535.
- _pg_user->triplexFirmwareChecksum = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Minimum required fuel pressure
- // Range of fuelPressureMin is -327.67f to 327.67f.
- _pg_user->fuelPressureMin = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/100.0f);
-
- if(_pg_byteindex + 1 > _pg_numbytes)
- return 1;
-
- // Fuel pressure control method
- // Range of pumpController is 0 to 255.
- _pg_user->pumpController = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_EFISettingsPacketStructure
-
-/*!
- * \brief Create the Transmuter_EFISettings packet
- *
- * ECU connection configuration packet
- * \param _pg_pkt points to the packet which will be created by this function
- * \param ecuAddress is CAN Node ID for the ECU
- * \param ecuFirmwareChecksum is ECU firmware checksum
- * \param ecuSettingsChecksum is ECU settings checksum
- * \param triplexAddress is CAN Node ID for the triplex pump
- * \param triplexFirmwareChecksum is Triplex pump firmware checksum
- * \param fuelPressureMin is Minimum required fuel pressure
- * \param pumpController is Fuel pressure control method
- */
-void encodeTransmuter_EFISettingsPacket(void* _pg_pkt, uint8_t ecuAddress, uint16_t ecuFirmwareChecksum, uint16_t ecuSettingsChecksum, uint8_t triplexAddress, uint16_t triplexFirmwareChecksum, float fuelPressureMin, uint8_t pumpController)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // CAN Node ID for the ECU
- // Range of ecuAddress is 0 to 255.
- uint8ToBytes(ecuAddress, _pg_data, &_pg_byteindex);
-
- // ECU firmware checksum
- // Range of ecuFirmwareChecksum is 0 to 65535.
- uint16ToBeBytes(ecuFirmwareChecksum, _pg_data, &_pg_byteindex);
-
- // ECU settings checksum
- // Range of ecuSettingsChecksum is 0 to 65535.
- uint16ToBeBytes(ecuSettingsChecksum, _pg_data, &_pg_byteindex);
-
- // CAN Node ID for the triplex pump
- // Range of triplexAddress is 0 to 255.
- uint8ToBytes(triplexAddress, _pg_data, &_pg_byteindex);
-
- // Triplex pump firmware checksum
- // Range of triplexFirmwareChecksum is 0 to 65535.
- uint16ToBeBytes(triplexFirmwareChecksum, _pg_data, &_pg_byteindex);
-
- // Minimum required fuel pressure
- // Range of fuelPressureMin is -327.67f to 327.67f.
- float32ScaledTo2SignedBeBytes(fuelPressureMin, _pg_data, &_pg_byteindex, 100.0f);
-
- // Fuel pressure control method
- // Range of pumpController is 0 to 255.
- uint8ToBytes(pumpController, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_EFISettingsPacketID());
-
-}// encodeTransmuter_EFISettingsPacket
-
-/*!
- * \brief Decode the Transmuter_EFISettings packet
- *
- * ECU connection configuration packet
- * \param _pg_pkt points to the packet being decoded by this function
- * \param ecuAddress receives CAN Node ID for the ECU
- * \param ecuFirmwareChecksum receives ECU firmware checksum
- * \param ecuSettingsChecksum receives ECU settings checksum
- * \param triplexAddress receives CAN Node ID for the triplex pump
- * \param triplexFirmwareChecksum receives Triplex pump firmware checksum
- * \param fuelPressureMin receives Minimum required fuel pressure
- * \param pumpController receives Fuel pressure control method
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_EFISettingsPacket(const void* _pg_pkt, uint8_t* ecuAddress, uint16_t* ecuFirmwareChecksum, uint16_t* ecuSettingsChecksum, uint8_t* triplexAddress, uint16_t* triplexFirmwareChecksum, float* fuelPressureMin, uint8_t* pumpController)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_EFISettingsPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_EFISettingsMinDataLength())
- return 0;
-
- // this packet has default fields, make sure they are set
- (*pumpController) = TRANSMUTER_PUMP_TRIPLEX;
-
- // CAN Node ID for the ECU
- // Range of ecuAddress is 0 to 255.
- (*ecuAddress) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // ECU firmware checksum
- // Range of ecuFirmwareChecksum is 0 to 65535.
- (*ecuFirmwareChecksum) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // ECU settings checksum
- // Range of ecuSettingsChecksum is 0 to 65535.
- (*ecuSettingsChecksum) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // CAN Node ID for the triplex pump
- // Range of triplexAddress is 0 to 255.
- (*triplexAddress) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Triplex pump firmware checksum
- // Range of triplexFirmwareChecksum is 0 to 65535.
- (*triplexFirmwareChecksum) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Minimum required fuel pressure
- // Range of fuelPressureMin is -327.67f to 327.67f.
- (*fuelPressureMin) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/100.0f);
-
- if(_pg_byteindex + 1 > _pg_numbytes)
- return 1;
-
- // Fuel pressure control method
- // Range of pumpController is 0 to 255.
- (*pumpController) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_EFISettingsPacket
-
-/*!
- * \brief Verify a Transmuter_EFISettings_t has acceptable values.
- *
- * Verify a Transmuter_EFISettings_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_EFISettings_t(Transmuter_EFISettings_t* _pg_user)
-{
- int _pg_good = 1;
-
- // CAN Node ID for the ECU
- if(_pg_user->ecuAddress > 254)
- {
- _pg_user->ecuAddress = 254;
- _pg_good = 0;
- }
-
- // CAN Node ID for the triplex pump
- if(_pg_user->triplexAddress > 254)
- {
- _pg_user->triplexAddress = 254;
- _pg_good = 0;
- }
-
- // Minimum required fuel pressure
- if(_pg_user->fuelPressureMin < 1.0f)
- {
- _pg_user->fuelPressureMin = 1.0f;
- _pg_good = 0;
- }
- else if(_pg_user->fuelPressureMin > 25.0f)
- {
- _pg_user->fuelPressureMin = 25.0f;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_EFISettings_t
-
-/*!
- * \brief Set a Transmuter_GeneratorSettings_t to initial values.
- *
- * Set a Transmuter_GeneratorSettings_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_GeneratorSettings_t(Transmuter_GeneratorSettings_t* _pg_user)
-{
-
- // Belt ratio between engine and generator motor
- _pg_user->beltRatio = 1.0f;
-
- // Allowable RPM measurement difference between generator and engine
- _pg_user->rpmThreshold = 350;
-
- // Timeout before system disables due to engine power loss. Set to zero to disable timeout
- _pg_user->powerLossTimeout = 25;
-
-}// initTransmuter_GeneratorSettings_t
-
-/*!
- * \brief Create the Transmuter_GeneratorSettings packet
- *
- * Generator motor parameters
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_GeneratorSettingsPacketStructure(void* _pg_pkt, const Transmuter_GeneratorSettings_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Belt ratio between engine and generator motor
- // Range of beltRatio is 0.0f to 65.535f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->beltRatio, _pg_data, &_pg_byteindex, 0.0f, 1000.0f);
-
- // Allowable RPM measurement difference between generator and engine
- // Range of rpmThreshold is 0 to 65535.
- uint16ToBeBytes(_pg_user->rpmThreshold, _pg_data, &_pg_byteindex);
-
- // Timeout before system disables due to engine power loss. Set to zero to disable timeout
- // Range of powerLossTimeout is 0 to 255.
- uint8ToBytes(_pg_user->powerLossTimeout, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_GeneratorSettingsPacketID());
-
-}// encodeTransmuter_GeneratorSettingsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_GeneratorSettings packet
- *
- * Generator motor parameters
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_GeneratorSettingsPacketStructure(const void* _pg_pkt, Transmuter_GeneratorSettings_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_GeneratorSettingsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_GeneratorSettingsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Belt ratio between engine and generator motor
- // Range of beltRatio is 0.0f to 65.535f.
- _pg_user->beltRatio = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1000.0f);
-
- // Allowable RPM measurement difference between generator and engine
- // Range of rpmThreshold is 0 to 65535.
- _pg_user->rpmThreshold = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Timeout before system disables due to engine power loss. Set to zero to disable timeout
- // Range of powerLossTimeout is 0 to 255.
- _pg_user->powerLossTimeout = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_GeneratorSettingsPacketStructure
-
-/*!
- * \brief Create the Transmuter_GeneratorSettings packet
- *
- * Generator motor parameters
- * \param _pg_pkt points to the packet which will be created by this function
- * \param beltRatio is Belt ratio between engine and generator motor
- * \param rpmThreshold is Allowable RPM measurement difference between generator and engine
- * \param powerLossTimeout is Timeout before system disables due to engine power loss. Set to zero to disable timeout
- */
-void encodeTransmuter_GeneratorSettingsPacket(void* _pg_pkt, float beltRatio, uint16_t rpmThreshold, uint8_t powerLossTimeout)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Belt ratio between engine and generator motor
- // Range of beltRatio is 0.0f to 65.535f.
- float32ScaledTo2UnsignedBeBytes(beltRatio, _pg_data, &_pg_byteindex, 0.0f, 1000.0f);
-
- // Allowable RPM measurement difference between generator and engine
- // Range of rpmThreshold is 0 to 65535.
- uint16ToBeBytes(rpmThreshold, _pg_data, &_pg_byteindex);
-
- // Timeout before system disables due to engine power loss. Set to zero to disable timeout
- // Range of powerLossTimeout is 0 to 255.
- uint8ToBytes(powerLossTimeout, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_GeneratorSettingsPacketID());
-
-}// encodeTransmuter_GeneratorSettingsPacket
-
-/*!
- * \brief Decode the Transmuter_GeneratorSettings packet
- *
- * Generator motor parameters
- * \param _pg_pkt points to the packet being decoded by this function
- * \param beltRatio receives Belt ratio between engine and generator motor
- * \param rpmThreshold receives Allowable RPM measurement difference between generator and engine
- * \param powerLossTimeout receives Timeout before system disables due to engine power loss. Set to zero to disable timeout
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_GeneratorSettingsPacket(const void* _pg_pkt, float* beltRatio, uint16_t* rpmThreshold, uint8_t* powerLossTimeout)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_GeneratorSettingsPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_GeneratorSettingsMinDataLength())
- return 0;
-
- // Belt ratio between engine and generator motor
- // Range of beltRatio is 0.0f to 65.535f.
- (*beltRatio) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1000.0f);
-
- // Allowable RPM measurement difference between generator and engine
- // Range of rpmThreshold is 0 to 65535.
- (*rpmThreshold) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Timeout before system disables due to engine power loss. Set to zero to disable timeout
- // Range of powerLossTimeout is 0 to 255.
- (*powerLossTimeout) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_GeneratorSettingsPacket
-
-/*!
- * \brief Verify a Transmuter_GeneratorSettings_t has acceptable values.
- *
- * Verify a Transmuter_GeneratorSettings_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_GeneratorSettings_t(Transmuter_GeneratorSettings_t* _pg_user)
-{
- int _pg_good = 1;
-
- // Belt ratio between engine and generator motor
- if(_pg_user->beltRatio < 0.1f)
- {
- _pg_user->beltRatio = 0.1f;
- _pg_good = 0;
- }
- else if(_pg_user->beltRatio > 10.0f)
- {
- _pg_user->beltRatio = 10.0f;
- _pg_good = 0;
- }
-
- // Allowable RPM measurement difference between generator and engine
- if(_pg_user->rpmThreshold > 5000)
- {
- _pg_user->rpmThreshold = 5000;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_GeneratorSettings_t
-
-/*!
- * \brief Set a Transmuter_StartingSettings_t to initial values.
- *
- * Set a Transmuter_StartingSettings_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_StartingSettings_t(Transmuter_StartingSettings_t* _pg_user)
-{
-
- // Number of auto-retries allowed for engine starting routine
- _pg_user->retries = 3;
-
- // Timeout for engine starting routine
- _pg_user->timeout = 50;
-
- // Starting RPM value
- _pg_user->rpm = 3000;
-
- // Starting throttle position
- _pg_user->throttle = 25;
-
- // Settling time after reaching starting RPM
- _pg_user->settlingPeriod = 25;
-
-}// initTransmuter_StartingSettings_t
-
-/*!
- * \brief Create the Transmuter_StartingSettings packet
- *
- * Engine starting settings
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_StartingSettingsPacketStructure(void* _pg_pkt, const Transmuter_StartingSettings_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Number of auto-retries allowed for engine starting routine
- // Range of retries is 0 to 255.
- uint8ToBytes(_pg_user->retries, _pg_data, &_pg_byteindex);
-
- // Timeout for engine starting routine
- // Range of timeout is 0 to 255.
- uint8ToBytes(_pg_user->timeout, _pg_data, &_pg_byteindex);
-
- // Starting RPM value
- // Range of rpm is 0 to 65535.
- uint16ToBeBytes(_pg_user->rpm, _pg_data, &_pg_byteindex);
-
- // Starting throttle position
- // Range of throttle is 0 to 255.
- uint8ToBytes(_pg_user->throttle, _pg_data, &_pg_byteindex);
-
- // Settling time after reaching starting RPM
- // Range of settlingPeriod is 0 to 255.
- uint8ToBytes(_pg_user->settlingPeriod, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_StartingSettingsPacketID());
-
-}// encodeTransmuter_StartingSettingsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_StartingSettings packet
- *
- * Engine starting settings
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_StartingSettingsPacketStructure(const void* _pg_pkt, Transmuter_StartingSettings_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_StartingSettingsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_StartingSettingsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Number of auto-retries allowed for engine starting routine
- // Range of retries is 0 to 255.
- _pg_user->retries = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Timeout for engine starting routine
- // Range of timeout is 0 to 255.
- _pg_user->timeout = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Starting RPM value
- // Range of rpm is 0 to 65535.
- _pg_user->rpm = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Starting throttle position
- // Range of throttle is 0 to 255.
- _pg_user->throttle = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Settling time after reaching starting RPM
- // Range of settlingPeriod is 0 to 255.
- _pg_user->settlingPeriod = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_StartingSettingsPacketStructure
-
-/*!
- * \brief Create the Transmuter_StartingSettings packet
- *
- * Engine starting settings
- * \param _pg_pkt points to the packet which will be created by this function
- * \param retries is Number of auto-retries allowed for engine starting routine
- * \param timeout is Timeout for engine starting routine
- * \param rpm is Starting RPM value
- * \param throttle is Starting throttle position
- * \param settlingPeriod is Settling time after reaching starting RPM
- */
-void encodeTransmuter_StartingSettingsPacket(void* _pg_pkt, uint8_t retries, uint8_t timeout, uint16_t rpm, uint8_t throttle, uint8_t settlingPeriod)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Number of auto-retries allowed for engine starting routine
- // Range of retries is 0 to 255.
- uint8ToBytes(retries, _pg_data, &_pg_byteindex);
-
- // Timeout for engine starting routine
- // Range of timeout is 0 to 255.
- uint8ToBytes(timeout, _pg_data, &_pg_byteindex);
-
- // Starting RPM value
- // Range of rpm is 0 to 65535.
- uint16ToBeBytes(rpm, _pg_data, &_pg_byteindex);
-
- // Starting throttle position
- // Range of throttle is 0 to 255.
- uint8ToBytes(throttle, _pg_data, &_pg_byteindex);
-
- // Settling time after reaching starting RPM
- // Range of settlingPeriod is 0 to 255.
- uint8ToBytes(settlingPeriod, _pg_data, &_pg_byteindex);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_StartingSettingsPacketID());
-
-}// encodeTransmuter_StartingSettingsPacket
-
-/*!
- * \brief Decode the Transmuter_StartingSettings packet
- *
- * Engine starting settings
- * \param _pg_pkt points to the packet being decoded by this function
- * \param retries receives Number of auto-retries allowed for engine starting routine
- * \param timeout receives Timeout for engine starting routine
- * \param rpm receives Starting RPM value
- * \param throttle receives Starting throttle position
- * \param settlingPeriod receives Settling time after reaching starting RPM
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_StartingSettingsPacket(const void* _pg_pkt, uint8_t* retries, uint8_t* timeout, uint16_t* rpm, uint8_t* throttle, uint8_t* settlingPeriod)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_StartingSettingsPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_StartingSettingsMinDataLength())
- return 0;
-
- // Number of auto-retries allowed for engine starting routine
- // Range of retries is 0 to 255.
- (*retries) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Timeout for engine starting routine
- // Range of timeout is 0 to 255.
- (*timeout) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Starting RPM value
- // Range of rpm is 0 to 65535.
- (*rpm) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Starting throttle position
- // Range of throttle is 0 to 255.
- (*throttle) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Settling time after reaching starting RPM
- // Range of settlingPeriod is 0 to 255.
- (*settlingPeriod) = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- return 1;
-
-}// decodeTransmuter_StartingSettingsPacket
-
-/*!
- * \brief Verify a Transmuter_StartingSettings_t has acceptable values.
- *
- * Verify a Transmuter_StartingSettings_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_StartingSettings_t(Transmuter_StartingSettings_t* _pg_user)
-{
- int _pg_good = 1;
-
- // Number of auto-retries allowed for engine starting routine
- if(_pg_user->retries > 50)
- {
- _pg_user->retries = 50;
- _pg_good = 0;
- }
-
- // Timeout for engine starting routine
- if(_pg_user->timeout < 1)
- {
- _pg_user->timeout = 1;
- _pg_good = 0;
- }
-
- // Starting RPM value
- if(_pg_user->rpm < 500)
- {
- _pg_user->rpm = 500;
- _pg_good = 0;
- }
- else if(_pg_user->rpm > 25000)
- {
- _pg_user->rpm = 25000;
- _pg_good = 0;
- }
-
- // Starting throttle position
- if(_pg_user->throttle > 100)
- {
- _pg_user->throttle = 100;
- _pg_good = 0;
- }
-
- // Settling time after reaching starting RPM
- if(_pg_user->settlingPeriod < 10)
- {
- _pg_user->settlingPeriod = 10;
- _pg_good = 0;
- }
- else if(_pg_user->settlingPeriod > 250)
- {
- _pg_user->settlingPeriod = 250;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_StartingSettings_t
-
-/*!
- * \brief Set a Transmuter_PowerMap_t to initial values.
- *
- * Set a Transmuter_PowerMap_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_PowerMap_t(Transmuter_PowerMap_t* _pg_user)
-{
-
- // Power demand low pass filter corner frequency
- _pg_user->powerFilterHz = 1.0f;
-
-}// initTransmuter_PowerMap_t
-
-/*!
- * \brief Create the Transmuter_PowerMap packet
- *
- * Configuration of transmuter power map lookup table
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_PowerMapPacketStructure(void* _pg_pkt, const Transmuter_PowerMap_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
- unsigned _pg_i = 0;
-
- // Range of size is 0 to 255.
- uint8ToBytes(_pg_user->size, _pg_data, &_pg_byteindex);
-
- // Power Input (W)
- // Range of power is -32768 to 32767.
- for(_pg_i = 0; _pg_i < (unsigned)_pg_user->size && _pg_i < 15; _pg_i++)
- int16ToBeBytes(_pg_user->power[_pg_i], _pg_data, &_pg_byteindex);
-
- // Speed Output (RPM)
- // Range of rpm is -32768 to 32767.
- for(_pg_i = 0; _pg_i < (unsigned)_pg_user->size && _pg_i < 15; _pg_i++)
- int16ToBeBytes(_pg_user->rpm[_pg_i], _pg_data, &_pg_byteindex);
-
- // Power demand low pass filter corner frequency
- // Range of powerFilterHz is 0.0f to 65.535f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->powerFilterHz, _pg_data, &_pg_byteindex, 0.0f, 1000.0f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_PowerMapPacketID());
-
-}// encodeTransmuter_PowerMapPacketStructure
-
-/*!
- * \brief Decode the Transmuter_PowerMap packet
- *
- * Configuration of transmuter power map lookup table
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_PowerMapPacketStructure(const void* _pg_pkt, Transmuter_PowerMap_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
- unsigned _pg_i = 0;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_PowerMapPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_PowerMapMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // this packet has default fields, make sure they are set
- _pg_user->powerFilterHz = 1.0f;
-
- // Range of size is 0 to 255.
- _pg_user->size = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Power Input (W)
- // Range of power is -32768 to 32767.
- for(_pg_i = 0; _pg_i < (unsigned)_pg_user->size && _pg_i < 15; _pg_i++)
- _pg_user->power[_pg_i] = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Speed Output (RPM)
- // Range of rpm is -32768 to 32767.
- for(_pg_i = 0; _pg_i < (unsigned)_pg_user->size && _pg_i < 15; _pg_i++)
- _pg_user->rpm[_pg_i] = int16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Used variable length arrays or dependent fields, check actual length
- if(_pg_numbytes < _pg_byteindex)
- return 0;
-
- if(_pg_byteindex + 2 > _pg_numbytes)
- return 1;
-
- // Power demand low pass filter corner frequency
- // Range of powerFilterHz is 0.0f to 65.535f.
- _pg_user->powerFilterHz = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1000.0f);
-
- return 1;
-
-}// decodeTransmuter_PowerMapPacketStructure
-
-/*!
- * \brief Verify a Transmuter_PowerMap_t has acceptable values.
- *
- * Verify a Transmuter_PowerMap_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_PowerMap_t(Transmuter_PowerMap_t* _pg_user)
-{
- int _pg_good = 1;
- unsigned _pg_i = 0;
-
- if(_pg_user->size < 2)
- {
- _pg_user->size = 2;
- _pg_good = 0;
- }
- else if(_pg_user->size > 15)
- {
- _pg_user->size = 15;
- _pg_good = 0;
- }
-
- // Power Input (W)
- for(_pg_i = 0; _pg_i < (unsigned)_pg_user->size && _pg_i < 15; _pg_i++)
- if(_pg_user->power[_pg_i] < 0)
- {
- _pg_user->power[_pg_i] = 0;
- _pg_good = 0;
- }
- else if(_pg_user->power[_pg_i] > 25000)
- {
- _pg_user->power[_pg_i] = 25000;
- _pg_good = 0;
- }
-
- // Speed Output (RPM)
- for(_pg_i = 0; _pg_i < (unsigned)_pg_user->size && _pg_i < 15; _pg_i++)
- if(_pg_user->rpm[_pg_i] < 0)
- {
- _pg_user->rpm[_pg_i] = 0;
- _pg_good = 0;
- }
- else if(_pg_user->rpm[_pg_i] > 25000)
- {
- _pg_user->rpm[_pg_i] = 25000;
- _pg_good = 0;
- }
-
- // Power demand low pass filter corner frequency
- if(_pg_user->powerFilterHz < 0.01f)
- {
- _pg_user->powerFilterHz = 0.01f;
- _pg_good = 0;
- }
- else if(_pg_user->powerFilterHz > 50.0f)
- {
- _pg_user->powerFilterHz = 50.0f;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_PowerMap_t
-
-/*!
- * \brief Set a Transmuter_BatterySettings_t to initial values.
- *
- * Set a Transmuter_BatterySettings_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_BatterySettings_t(Transmuter_BatterySettings_t* _pg_user)
-{
-
- _pg_user->nominalVoltage = 48;
-
- _pg_user->chargingCurrent = 5;
-
- // Battery capacity
- _pg_user->capacity = 5000;
-
- // Battery current measurement scaler value
- _pg_user->currentScaler = 1.0f;
-
- // Battery current measurement offset value
- _pg_user->currentOffset = 0.0f;
-
-}// initTransmuter_BatterySettings_t
-
-/*!
- * \brief Create the Transmuter_BatterySettings packet
- *
- * Configuration of battery charging parameters
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_BatterySettingsPacketStructure(void* _pg_pkt, const Transmuter_BatterySettings_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Range of nominalVoltage is 0.0f to 100.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->nominalVoltage, _pg_data, &_pg_byteindex, 0.0f, 655.35f);
-
- // Range of chargingCurrent is 0.0f to 100.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->chargingCurrent, _pg_data, &_pg_byteindex, 0.0f, 655.35f);
-
- // Battery capacity
- // Range of capacity is 0 to 65535.
- uint16ToBeBytes(_pg_user->capacity, _pg_data, &_pg_byteindex);
-
- // Reserved for future use
- uint8ToBytes((uint8_t)(0), _pg_data, &_pg_byteindex);
-
- // Battery current measurement scaler value
- // Range of currentScaler is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->currentScaler, _pg_data, &_pg_byteindex, 327.67f);
-
- // Battery current measurement offset value
- // Range of currentOffset is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(_pg_user->currentOffset, _pg_data, &_pg_byteindex, 327.67f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_BatterySettingsPacketID());
-
-}// encodeTransmuter_BatterySettingsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_BatterySettings packet
- *
- * Configuration of battery charging parameters
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_BatterySettingsPacketStructure(const void* _pg_pkt, Transmuter_BatterySettings_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_BatterySettingsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_BatterySettingsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // this packet has default fields, make sure they are set
- _pg_user->currentScaler = 1.0f;
- _pg_user->currentOffset = 0.0f;
-
- // Range of nominalVoltage is 0.0f to 100.0f.
- _pg_user->nominalVoltage = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/655.35f);
-
- // Range of chargingCurrent is 0.0f to 100.0f.
- _pg_user->chargingCurrent = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/655.35f);
-
- // Battery capacity
- // Range of capacity is 0 to 65535.
- _pg_user->capacity = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Reserved for future use
- _pg_byteindex += 1;
-
- if(_pg_byteindex + 2 > _pg_numbytes)
- return 1;
-
- // Battery current measurement scaler value
- // Range of currentScaler is -100.0f to 100.0f.
- _pg_user->currentScaler = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- if(_pg_byteindex + 2 > _pg_numbytes)
- return 1;
-
- // Battery current measurement offset value
- // Range of currentOffset is -100.0f to 100.0f.
- _pg_user->currentOffset = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- return 1;
-
-}// decodeTransmuter_BatterySettingsPacketStructure
-
-/*!
- * \brief Create the Transmuter_BatterySettings packet
- *
- * Configuration of battery charging parameters
- * \param _pg_pkt points to the packet which will be created by this function
- * \param nominalVoltage is
- * \param chargingCurrent is
- * \param capacity is Battery capacity
- * \param currentScaler is Battery current measurement scaler value
- * \param currentOffset is Battery current measurement offset value
- */
-void encodeTransmuter_BatterySettingsPacket(void* _pg_pkt, float nominalVoltage, float chargingCurrent, uint16_t capacity, float currentScaler, float currentOffset)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Range of nominalVoltage is 0.0f to 100.0f.
- float32ScaledTo2UnsignedBeBytes(nominalVoltage, _pg_data, &_pg_byteindex, 0.0f, 655.35f);
-
- // Range of chargingCurrent is 0.0f to 100.0f.
- float32ScaledTo2UnsignedBeBytes(chargingCurrent, _pg_data, &_pg_byteindex, 0.0f, 655.35f);
-
- // Battery capacity
- // Range of capacity is 0 to 65535.
- uint16ToBeBytes(capacity, _pg_data, &_pg_byteindex);
-
- // Reserved for future use
- uint8ToBytes((uint8_t)(0), _pg_data, &_pg_byteindex);
-
- // Battery current measurement scaler value
- // Range of currentScaler is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(currentScaler, _pg_data, &_pg_byteindex, 327.67f);
-
- // Battery current measurement offset value
- // Range of currentOffset is -100.0f to 100.0f.
- float32ScaledTo2SignedBeBytes(currentOffset, _pg_data, &_pg_byteindex, 327.67f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_BatterySettingsPacketID());
-
-}// encodeTransmuter_BatterySettingsPacket
-
-/*!
- * \brief Decode the Transmuter_BatterySettings packet
- *
- * Configuration of battery charging parameters
- * \param _pg_pkt points to the packet being decoded by this function
- * \param nominalVoltage receives
- * \param chargingCurrent receives
- * \param capacity receives Battery capacity
- * \param currentScaler receives Battery current measurement scaler value
- * \param currentOffset receives Battery current measurement offset value
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_BatterySettingsPacket(const void* _pg_pkt, float* nominalVoltage, float* chargingCurrent, uint16_t* capacity, float* currentScaler, float* currentOffset)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_BatterySettingsPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_BatterySettingsMinDataLength())
- return 0;
-
- // this packet has default fields, make sure they are set
- (*currentScaler) = 1.0f;
- (*currentOffset) = 0.0f;
-
- // Range of nominalVoltage is 0.0f to 100.0f.
- (*nominalVoltage) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/655.35f);
-
- // Range of chargingCurrent is 0.0f to 100.0f.
- (*chargingCurrent) = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/655.35f);
-
- // Battery capacity
- // Range of capacity is 0 to 65535.
- (*capacity) = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- // Reserved for future use
- _pg_byteindex += 1;
-
- if(_pg_byteindex + 2 > _pg_numbytes)
- return 1;
-
- // Battery current measurement scaler value
- // Range of currentScaler is -100.0f to 100.0f.
- (*currentScaler) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- if(_pg_byteindex + 2 > _pg_numbytes)
- return 1;
-
- // Battery current measurement offset value
- // Range of currentOffset is -100.0f to 100.0f.
- (*currentOffset) = float32ScaledFrom2SignedBeBytes(_pg_data, &_pg_byteindex, 1.0f/327.67f);
-
- return 1;
-
-}// decodeTransmuter_BatterySettingsPacket
-
-/*!
- * \brief Verify a Transmuter_BatterySettings_t has acceptable values.
- *
- * Verify a Transmuter_BatterySettings_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_BatterySettings_t(Transmuter_BatterySettings_t* _pg_user)
-{
- int _pg_good = 1;
-
- if(_pg_user->nominalVoltage < 20.0f)
- {
- _pg_user->nominalVoltage = 20.0f;
- _pg_good = 0;
- }
- else if(_pg_user->nominalVoltage > 100.0f)
- {
- _pg_user->nominalVoltage = 100.0f;
- _pg_good = 0;
- }
-
- // Battery current measurement scaler value
- if(_pg_user->currentScaler < 0.75f)
- {
- _pg_user->currentScaler = 0.75f;
- _pg_good = 0;
- }
- else if(_pg_user->currentScaler > 1.25f)
- {
- _pg_user->currentScaler = 1.25f;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_BatterySettings_t
-
-/*!
- * \brief Set a Transmuter_TelemetrySettings_t to initial values.
- *
- * Set a Transmuter_TelemetrySettings_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_TelemetrySettings_t(Transmuter_TelemetrySettings_t* _pg_user)
-{
-
- // Telemetry packet selection
- initTransmuter_TelemetryPackets_t(&_pg_user->packets);
-
-}// initTransmuter_TelemetrySettings_t
-
-/*!
- * \brief Create the Transmuter_TelemetrySettings packet
- *
- * Transmuter packet selection. Enable or disable various telemetry packets
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_TelemetrySettingsPacketStructure(void* _pg_pkt, const Transmuter_TelemetrySettings_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Telemetry packet selection
- encodeTransmuter_TelemetryPackets_t(_pg_data, &_pg_byteindex, &_pg_user->packets);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetrySettingsPacketID());
-
-}// encodeTransmuter_TelemetrySettingsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_TelemetrySettings packet
- *
- * Transmuter packet selection. Enable or disable various telemetry packets
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetrySettingsPacketStructure(const void* _pg_pkt, Transmuter_TelemetrySettings_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetrySettingsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_TelemetrySettingsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // Telemetry packet selection
- if(decodeTransmuter_TelemetryPackets_t(_pg_data, &_pg_byteindex, &_pg_user->packets) == 0)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_TelemetrySettingsPacketStructure
-
-/*!
- * \brief Create the Transmuter_TelemetrySettings packet
- *
- * Transmuter packet selection. Enable or disable various telemetry packets
- * \param _pg_pkt points to the packet which will be created by this function
- * \param packets is Telemetry packet selection
- */
-void encodeTransmuter_TelemetrySettingsPacket(void* _pg_pkt, const Transmuter_TelemetryPackets_t* packets)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Telemetry packet selection
- encodeTransmuter_TelemetryPackets_t(_pg_data, &_pg_byteindex, packets);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_TelemetrySettingsPacketID());
-
-}// encodeTransmuter_TelemetrySettingsPacket
-
-/*!
- * \brief Decode the Transmuter_TelemetrySettings packet
- *
- * Transmuter packet selection. Enable or disable various telemetry packets
- * \param _pg_pkt points to the packet being decoded by this function
- * \param packets receives Telemetry packet selection
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_TelemetrySettingsPacket(const void* _pg_pkt, Transmuter_TelemetryPackets_t* packets)
-{
- int _pg_byteindex = 0;
- const uint8_t* _pg_data = getTransmuterPacketDataConst(_pg_pkt);
- int _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_TelemetrySettingsPacketID())
- return 0;
-
- if(_pg_numbytes < getTransmuter_TelemetrySettingsMinDataLength())
- return 0;
-
- // Telemetry packet selection
- if(decodeTransmuter_TelemetryPackets_t(_pg_data, &_pg_byteindex, packets) == 0)
- return 0;
-
- return 1;
-
-}// decodeTransmuter_TelemetrySettingsPacket
-
-/*!
- * \brief Set a Transmuter_ThrottleControlLoopSettings_t to initial values.
- *
- * Set a Transmuter_ThrottleControlLoopSettings_t to initial values. Not all fields are set,
- * only those which the protocol specifies.
- * \param _pg_user is the structure whose data are set to initial values
- */
-void initTransmuter_ThrottleControlLoopSettings_t(Transmuter_ThrottleControlLoopSettings_t* _pg_user)
-{
-
- _pg_user->Kp = 25;
-
- _pg_user->Ki = (float)2.5;
-
- _pg_user->Kd = 0;
-
- _pg_user->Kf = 0;
-
- // Minimum engine throttle position
- _pg_user->throttleMin = 10;
-
- // Maximum engine throttle position
- _pg_user->throttleMax = 100;
-
- // Maximum throttle slew rate
- _pg_user->slewLimit = 100;
-
- // Throttle command low pass filter corner frequency
- _pg_user->throttleFilterHz = 1.0f;
-
-}// initTransmuter_ThrottleControlLoopSettings_t
-
-/*!
- * \brief Create the Transmuter_ThrottleControlLoopSettings packet
- *
- * Engine throttle control loop settings
- * \param _pg_pkt points to the packet which will be created by this function
- * \param _pg_user points to the user data that will be encoded in _pg_pkt
- */
-void encodeTransmuter_ThrottleControlLoopSettingsPacketStructure(void* _pg_pkt, const Transmuter_ThrottleControlLoopSettings_t* _pg_user)
-{
- uint8_t* _pg_data = getTransmuterPacketData(_pg_pkt);
- int _pg_byteindex = 0;
-
- // Range of Kp is 0.0f to 50.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->Kp, _pg_data, &_pg_byteindex, 0.0f, 1310.7f);
-
- // Range of Ki is 0.0f to 50.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->Ki, _pg_data, &_pg_byteindex, 0.0f, 1310.7f);
-
- // Range of Kd is 0.0f to 50.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->Kd, _pg_data, &_pg_byteindex, 0.0f, 1310.7f);
-
- // Range of Kf is 0.0f to 50.0f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->Kf, _pg_data, &_pg_byteindex, 0.0f, 1310.7f);
-
- // Minimum engine throttle position
- // Range of throttleMin is 0 to 255.
- uint8ToBytes(_pg_user->throttleMin, _pg_data, &_pg_byteindex);
-
- // Maximum engine throttle position
- // Range of throttleMax is 0 to 255.
- uint8ToBytes(_pg_user->throttleMax, _pg_data, &_pg_byteindex);
-
- // Maximum throttle slew rate
- // Range of slewLimit is 0 to 65535.
- uint16ToBeBytes(_pg_user->slewLimit, _pg_data, &_pg_byteindex);
-
- // Throttle command low pass filter corner frequency
- // Range of throttleFilterHz is 0.0f to 65.535f.
- float32ScaledTo2UnsignedBeBytes(_pg_user->throttleFilterHz, _pg_data, &_pg_byteindex, 0.0f, 1000.0f);
-
- // complete the process of creating the packet
- finishTransmuterPacket(_pg_pkt, _pg_byteindex, getTransmuter_ThrottleControlLoopSettingsPacketID());
-
-}// encodeTransmuter_ThrottleControlLoopSettingsPacketStructure
-
-/*!
- * \brief Decode the Transmuter_ThrottleControlLoopSettings packet
- *
- * Engine throttle control loop settings
- * \param _pg_pkt points to the packet being decoded by this function
- * \param _pg_user receives the data decoded from the packet
- * \return 0 is returned if the packet ID or size is wrong, else 1
- */
-int decodeTransmuter_ThrottleControlLoopSettingsPacketStructure(const void* _pg_pkt, Transmuter_ThrottleControlLoopSettings_t* _pg_user)
-{
- int _pg_numbytes;
- int _pg_byteindex = 0;
- const uint8_t* _pg_data;
-
- // Verify the packet identifier
- if(getTransmuterPacketID(_pg_pkt) != getTransmuter_ThrottleControlLoopSettingsPacketID())
- return 0;
-
- // Verify the packet size
- _pg_numbytes = getTransmuterPacketSize(_pg_pkt);
- if(_pg_numbytes < getTransmuter_ThrottleControlLoopSettingsMinDataLength())
- return 0;
-
- // The raw data from the packet
- _pg_data = getTransmuterPacketDataConst(_pg_pkt);
-
- // this packet has default fields, make sure they are set
- _pg_user->throttleFilterHz = 1.0f;
-
- // Range of Kp is 0.0f to 50.0f.
- _pg_user->Kp = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1310.7f);
-
- // Range of Ki is 0.0f to 50.0f.
- _pg_user->Ki = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1310.7f);
-
- // Range of Kd is 0.0f to 50.0f.
- _pg_user->Kd = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1310.7f);
-
- // Range of Kf is 0.0f to 50.0f.
- _pg_user->Kf = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1310.7f);
-
- // Minimum engine throttle position
- // Range of throttleMin is 0 to 255.
- _pg_user->throttleMin = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Maximum engine throttle position
- // Range of throttleMax is 0 to 255.
- _pg_user->throttleMax = uint8FromBytes(_pg_data, &_pg_byteindex);
-
- // Maximum throttle slew rate
- // Range of slewLimit is 0 to 65535.
- _pg_user->slewLimit = uint16FromBeBytes(_pg_data, &_pg_byteindex);
-
- if(_pg_byteindex + 2 > _pg_numbytes)
- return 1;
-
- // Throttle command low pass filter corner frequency
- // Range of throttleFilterHz is 0.0f to 65.535f.
- _pg_user->throttleFilterHz = float32ScaledFrom2UnsignedBeBytes(_pg_data, &_pg_byteindex, 0.0f, 1.0f/1000.0f);
-
- return 1;
-
-}// decodeTransmuter_ThrottleControlLoopSettingsPacketStructure
-
-/*!
- * \brief Verify a Transmuter_ThrottleControlLoopSettings_t has acceptable values.
- *
- * Verify a Transmuter_ThrottleControlLoopSettings_t has acceptable values. Not all fields are
- * verified, only those which the protocol specifies. Fields which are outside
- * the allowable range are changed to the maximum or minimum allowable value.
- * \param _pg_user is the structure whose data are verified
- * \return 1 if all verifiable data where valid, else 0 if data had to be corrected
- */
-int verifyTransmuter_ThrottleControlLoopSettings_t(Transmuter_ThrottleControlLoopSettings_t* _pg_user)
-{
- int _pg_good = 1;
-
- if(_pg_user->Kp < 0.0f)
- {
- _pg_user->Kp = 0.0f;
- _pg_good = 0;
- }
- else if(_pg_user->Kp > 50.0f)
- {
- _pg_user->Kp = 50.0f;
- _pg_good = 0;
- }
-
- if(_pg_user->Ki < 0.0f)
- {
- _pg_user->Ki = 0.0f;
- _pg_good = 0;
- }
- else if(_pg_user->Ki > 50.0f)
- {
- _pg_user->Ki = 50.0f;
- _pg_good = 0;
- }
-
- if(_pg_user->Kd < 0.0f)
- {
- _pg_user->Kd = 0.0f;
- _pg_good = 0;
- }
- else if(_pg_user->Kd > 50.0f)
- {
- _pg_user->Kd = 50.0f;
- _pg_good = 0;
- }
-
- if(_pg_user->Kf < 0.0f)
- {
- _pg_user->Kf = 0.0f;
- _pg_good = 0;
- }
- else if(_pg_user->Kf > 50.0f)
- {
- _pg_user->Kf = 50.0f;
- _pg_good = 0;
- }
-
- // Minimum engine throttle position
- if(_pg_user->throttleMin > 100)
- {
- _pg_user->throttleMin = 100;
- _pg_good = 0;
- }
-
- // Maximum engine throttle position
- if(_pg_user->throttleMax > 100)
- {
- _pg_user->throttleMax = 100;
- _pg_good = 0;
- }
-
- // Maximum throttle slew rate
- if(_pg_user->slewLimit < 10)
- {
- _pg_user->slewLimit = 10;
- _pg_good = 0;
- }
- else if(_pg_user->slewLimit > 1000)
- {
- _pg_user->slewLimit = 1000;
- _pg_good = 0;
- }
-
- // Throttle command low pass filter corner frequency
- if(_pg_user->throttleFilterHz < 0.01f)
- {
- _pg_user->throttleFilterHz = 0.01f;
- _pg_good = 0;
- }
- else if(_pg_user->throttleFilterHz > 50.0f)
- {
- _pg_user->throttleFilterHz = 50.0f;
- _pg_good = 0;
- }
-
- return _pg_good;
-
-}// verifyTransmuter_ThrottleControlLoopSettings_t
-
-// end of TransmuterPackets.c
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterPackets.h b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterPackets.h
deleted file mode 100644
index 9199fb3f66..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterPackets.h
+++ /dev/null
@@ -1,709 +0,0 @@
-// TransmuterPackets.h was generated by ProtoGen version 3.5.c
-
-/*
- * 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 _TRANSMUTERPACKETS_H
-#define _TRANSMUTERPACKETS_H
-
-// Language target is C, C++ compilers: don't mangle us
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- * \file
- */
-
-#include
-#include
-#include "TransmuterProtocol.h"
-#include "TransmuterDefines.h"
-
-//! Create the Transmuter_EnterStandby packet from parameters
-void encodeTransmuter_EnterStandbyPacket(void* pkt);
-
-//! Decode the Transmuter_EnterStandby packet to parameters
-int decodeTransmuter_EnterStandbyPacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_EnterStandby packet
-#define getTransmuter_EnterStandbyPacketID() (PKT_TRANSMUTER_STANDBY)
-
-//! return the minimum encoded length for the Transmuter_EnterStandby packet
-#define getTransmuter_EnterStandbyMinDataLength() (2)
-
-//! return the maximum encoded length for the Transmuter_EnterStandby packet
-#define getTransmuter_EnterStandbyMaxDataLength() (2)
-
-//! Create the Transmuter_EnterPreflight packet from parameters
-void encodeTransmuter_EnterPreflightPacket(void* pkt);
-
-//! Decode the Transmuter_EnterPreflight packet to parameters
-int decodeTransmuter_EnterPreflightPacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_EnterPreflight packet
-#define getTransmuter_EnterPreflightPacketID() (PKT_TRANSMUTER_PREFLIGHT)
-
-//! return the minimum encoded length for the Transmuter_EnterPreflight packet
-#define getTransmuter_EnterPreflightMinDataLength() (2)
-
-//! return the maximum encoded length for the Transmuter_EnterPreflight packet
-#define getTransmuter_EnterPreflightMaxDataLength() (2)
-
-//! Create the Transmuter_EnterWarmup packet from parameters
-void encodeTransmuter_EnterWarmupPacket(void* pkt);
-
-//! Decode the Transmuter_EnterWarmup packet to parameters
-int decodeTransmuter_EnterWarmupPacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_EnterWarmup packet
-#define getTransmuter_EnterWarmupPacketID() (PKT_TRANSMUTER_WARMUP)
-
-//! return the minimum encoded length for the Transmuter_EnterWarmup packet
-#define getTransmuter_EnterWarmupMinDataLength() (2)
-
-//! return the maximum encoded length for the Transmuter_EnterWarmup packet
-#define getTransmuter_EnterWarmupMaxDataLength() (2)
-
-//! Create the Transmuter_EnterRunMode packet from parameters
-void encodeTransmuter_EnterRunModePacket(void* pkt);
-
-//! Decode the Transmuter_EnterRunMode packet to parameters
-int decodeTransmuter_EnterRunModePacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_EnterRunMode packet
-#define getTransmuter_EnterRunModePacketID() (PKT_TRANSMUTER_RUN)
-
-//! return the minimum encoded length for the Transmuter_EnterRunMode packet
-#define getTransmuter_EnterRunModeMinDataLength() (2)
-
-//! return the maximum encoded length for the Transmuter_EnterRunMode packet
-#define getTransmuter_EnterRunModeMaxDataLength() (2)
-
-//! Create the Transmuter_EnterPWMMode packet from parameters
-void encodeTransmuter_EnterPWMModePacket(void* pkt);
-
-//! Decode the Transmuter_EnterPWMMode packet to parameters
-int decodeTransmuter_EnterPWMModePacket(const void* pkt);
-
-//! return the packet ID for the Transmuter_EnterPWMMode packet
-#define getTransmuter_EnterPWMModePacketID() (PKT_TRANSMUTER_PWM)
-
-//! return the minimum encoded length for the Transmuter_EnterPWMMode packet
-#define getTransmuter_EnterPWMModeMinDataLength() (2)
-
-//! return the maximum encoded length for the Transmuter_EnterPWMMode packet
-#define getTransmuter_EnterPWMModeMaxDataLength() (2)
-
-/*!
- * The TelemetryStatus packet contains critical operational status information
- * pertaining to the current state of the Transmuter
- */
-typedef struct
-{
- Transmuter_StatusBits_t status;
- Transmuter_WarningBits_t warning;
- Transmuter_ErrorBits_t errors;
-}Transmuter_TelemetryStatus_t;
-
-//! Create the Transmuter_TelemetryStatus packet
-void encodeTransmuter_TelemetryStatusPacketStructure(void* pkt, const Transmuter_TelemetryStatus_t* user);
-
-//! Decode the Transmuter_TelemetryStatus packet
-int decodeTransmuter_TelemetryStatusPacketStructure(const void* pkt, Transmuter_TelemetryStatus_t* user);
-
-//! Create the Transmuter_TelemetryStatus packet from parameters
-void encodeTransmuter_TelemetryStatusPacket(void* pkt, const Transmuter_StatusBits_t* status, const Transmuter_WarningBits_t* warning, const Transmuter_ErrorBits_t* errors);
-
-//! Decode the Transmuter_TelemetryStatus packet to parameters
-int decodeTransmuter_TelemetryStatusPacket(const void* pkt, Transmuter_StatusBits_t* status, Transmuter_WarningBits_t* warning, Transmuter_ErrorBits_t* errors);
-
-//! return the packet ID for the Transmuter_TelemetryStatus packet
-#define getTransmuter_TelemetryStatusPacketID() (PKT_TRANSMUTER_TELEMETRY_STATUS)
-
-//! return the minimum encoded length for the Transmuter_TelemetryStatus packet
-#define getTransmuter_TelemetryStatusMinDataLength() (8)
-
-//! return the maximum encoded length for the Transmuter_TelemetryStatus packet
-#define getTransmuter_TelemetryStatusMaxDataLength() (8)
-
-/*!
- * The TelemetryPower packet contains information on the current operation
- * point of the engine and generator
- */
-typedef struct
-{
- float voltage; //!< System voltage
- float genCurrent; //!< Generator current
- float batCurrent; //!< Battery current
- int16_t rpm; //!< Mechanical rotational speed
-}Transmuter_TelemetryPower_t;
-
-//! Create the Transmuter_TelemetryPower packet
-void encodeTransmuter_TelemetryPowerPacketStructure(void* pkt, const Transmuter_TelemetryPower_t* user);
-
-//! Decode the Transmuter_TelemetryPower packet
-int decodeTransmuter_TelemetryPowerPacketStructure(const void* pkt, Transmuter_TelemetryPower_t* user);
-
-//! Create the Transmuter_TelemetryPower packet from parameters
-void encodeTransmuter_TelemetryPowerPacket(void* pkt, float voltage, float genCurrent, float batCurrent, int16_t rpm);
-
-//! Decode the Transmuter_TelemetryPower packet to parameters
-int decodeTransmuter_TelemetryPowerPacket(const void* pkt, float* voltage, float* genCurrent, float* batCurrent, int16_t* rpm);
-
-//! return the packet ID for the Transmuter_TelemetryPower packet
-#define getTransmuter_TelemetryPowerPacketID() (PKT_TRANSMUTER_TELEMETRY_POWER)
-
-//! return the minimum encoded length for the Transmuter_TelemetryPower packet
-#define getTransmuter_TelemetryPowerMinDataLength() (8)
-
-//! return the maximum encoded length for the Transmuter_TelemetryPower packet
-#define getTransmuter_TelemetryPowerMaxDataLength() (8)
-
-/*!
- * The TelemetrySetpoint packet contains system setpoint/target information
- */
-typedef struct
-{
- float currentSetpoint; //!< Battery current setpoint value
- int16_t rpmTarget; //!< System RPM target
- uint8_t throttleTarget; //!< ECU throttle target
- int16_t powerTarget; //!< Generator power target
-}Transmuter_TelemetrySetpoint_t;
-
-//! Create the Transmuter_TelemetrySetpoint packet
-void encodeTransmuter_TelemetrySetpointPacketStructure(void* pkt, const Transmuter_TelemetrySetpoint_t* user);
-
-//! Decode the Transmuter_TelemetrySetpoint packet
-int decodeTransmuter_TelemetrySetpointPacketStructure(const void* pkt, Transmuter_TelemetrySetpoint_t* user);
-
-//! Create the Transmuter_TelemetrySetpoint packet from parameters
-void encodeTransmuter_TelemetrySetpointPacket(void* pkt, float currentSetpoint, int16_t rpmTarget, uint8_t throttleTarget, int16_t powerTarget);
-
-//! Decode the Transmuter_TelemetrySetpoint packet to parameters
-int decodeTransmuter_TelemetrySetpointPacket(const void* pkt, float* currentSetpoint, int16_t* rpmTarget, uint8_t* throttleTarget, int16_t* powerTarget);
-
-//! return the packet ID for the Transmuter_TelemetrySetpoint packet
-#define getTransmuter_TelemetrySetpointPacketID() (PKT_TRANSMUTER_TELEMETRY_SETPOINT)
-
-//! return the minimum encoded length for the Transmuter_TelemetrySetpoint packet
-#define getTransmuter_TelemetrySetpointMinDataLength() (7)
-
-//! return the maximum encoded length for the Transmuter_TelemetrySetpoint packet
-#define getTransmuter_TelemetrySetpointMaxDataLength() (7)
-
-/*!
- * The TelemetryGenerator packet provides information about the current
- * operational status of the generator and EFI system.
- */
-typedef struct
-{
- uint8_t fetTemperature; //!< Power electronics module temperature
- uint8_t motTemperature; //!< Generator motor temperature
- uint8_t chtTemperature; //!< Engine cylinder head temperature
- float fuelPressure; //!< Fuel pressure
-}Transmuter_TelemetryGenerator_t;
-
-//! Create the Transmuter_TelemetryGenerator packet
-void encodeTransmuter_TelemetryGeneratorPacketStructure(void* pkt, const Transmuter_TelemetryGenerator_t* user);
-
-//! Decode the Transmuter_TelemetryGenerator packet
-int decodeTransmuter_TelemetryGeneratorPacketStructure(const void* pkt, Transmuter_TelemetryGenerator_t* user);
-
-//! Create the Transmuter_TelemetryGenerator packet from parameters
-void encodeTransmuter_TelemetryGeneratorPacket(void* pkt, uint8_t fetTemperature, uint8_t motTemperature, uint8_t chtTemperature, float fuelPressure);
-
-//! Decode the Transmuter_TelemetryGenerator packet to parameters
-int decodeTransmuter_TelemetryGeneratorPacket(const void* pkt, uint8_t* fetTemperature, uint8_t* motTemperature, uint8_t* chtTemperature, float* fuelPressure);
-
-//! return the packet ID for the Transmuter_TelemetryGenerator packet
-#define getTransmuter_TelemetryGeneratorPacketID() (PKT_TRANSMUTER_TELEMETRY_GEN)
-
-//! return the minimum encoded length for the Transmuter_TelemetryGenerator packet
-#define getTransmuter_TelemetryGeneratorMinDataLength() (5)
-
-//! return the maximum encoded length for the Transmuter_TelemetryGenerator packet
-#define getTransmuter_TelemetryGeneratorMaxDataLength() (5)
-
-/*!
- * The TelemetryCapacity packet provides information on the battery and fuel
- * capacity
- */
-typedef struct
-{
- uint32_t fuelUsed; //!< Fuel used estimate
-}Transmuter_TelemetryCapacity_t;
-
-//! Create the Transmuter_TelemetryCapacity packet
-void encodeTransmuter_TelemetryCapacityPacketStructure(void* pkt, const Transmuter_TelemetryCapacity_t* user);
-
-//! Decode the Transmuter_TelemetryCapacity packet
-int decodeTransmuter_TelemetryCapacityPacketStructure(const void* pkt, Transmuter_TelemetryCapacity_t* user);
-
-//! Create the Transmuter_TelemetryCapacity packet from parameters
-void encodeTransmuter_TelemetryCapacityPacket(void* pkt, uint32_t fuelUsed);
-
-//! Decode the Transmuter_TelemetryCapacity packet to parameters
-int decodeTransmuter_TelemetryCapacityPacket(const void* pkt, uint32_t* fuelUsed);
-
-//! return the packet ID for the Transmuter_TelemetryCapacity packet
-#define getTransmuter_TelemetryCapacityPacketID() (PKT_TRANSMUTER_TELEMETRY_CAPACITY)
-
-//! return the minimum encoded length for the Transmuter_TelemetryCapacity packet
-#define getTransmuter_TelemetryCapacityMinDataLength() (4)
-
-//! return the maximum encoded length for the Transmuter_TelemetryCapacity packet
-#define getTransmuter_TelemetryCapacityMaxDataLength() (4)
-
-/*!
- * Current state of the transmuter current control loop
- */
-typedef struct
-{
- float pTerm;
- float iTerm;
- float dTerm;
- float fTerm;
-}Transmuter_TelemetryControlLoop_t;
-
-//! Create the Transmuter_TelemetryControlLoop packet
-void encodeTransmuter_TelemetryControlLoopPacketStructure(void* pkt, const Transmuter_TelemetryControlLoop_t* user);
-
-//! Decode the Transmuter_TelemetryControlLoop packet
-int decodeTransmuter_TelemetryControlLoopPacketStructure(const void* pkt, Transmuter_TelemetryControlLoop_t* user);
-
-//! Create the Transmuter_TelemetryControlLoop packet from parameters
-void encodeTransmuter_TelemetryControlLoopPacket(void* pkt, float pTerm, float iTerm, float dTerm, float fTerm);
-
-//! Decode the Transmuter_TelemetryControlLoop packet to parameters
-int decodeTransmuter_TelemetryControlLoopPacket(const void* pkt, float* pTerm, float* iTerm, float* dTerm, float* fTerm);
-
-//! return the packet ID for the Transmuter_TelemetryControlLoop packet
-#define getTransmuter_TelemetryControlLoopPacketID() (PKT_TRANSMUTER_TELEMETRY_CTRL_LOOP)
-
-//! return the minimum encoded length for the Transmuter_TelemetryControlLoop packet
-#define getTransmuter_TelemetryControlLoopMinDataLength() (8)
-
-//! return the maximum encoded length for the Transmuter_TelemetryControlLoop packet
-#define getTransmuter_TelemetryControlLoopMaxDataLength() (8)
-
-/*!
- * Power information for the Auxilary Power Board
- */
-typedef struct
-{
- float apbVoltage; //!< APB output voltage (V)
- float apbCurrent; //!< APB output current (A)
-}Transmuter_TelemetryAPBPower_t;
-
-//! Create the Transmuter_TelemetryAPBPower packet
-void encodeTransmuter_TelemetryAPBPowerPacketStructure(void* pkt, const Transmuter_TelemetryAPBPower_t* user);
-
-//! Decode the Transmuter_TelemetryAPBPower packet
-int decodeTransmuter_TelemetryAPBPowerPacketStructure(const void* pkt, Transmuter_TelemetryAPBPower_t* user);
-
-//! Create the Transmuter_TelemetryAPBPower packet from parameters
-void encodeTransmuter_TelemetryAPBPowerPacket(void* pkt, float apbVoltage, float apbCurrent);
-
-//! Decode the Transmuter_TelemetryAPBPower packet to parameters
-int decodeTransmuter_TelemetryAPBPowerPacket(const void* pkt, float* apbVoltage, float* apbCurrent);
-
-//! return the packet ID for the Transmuter_TelemetryAPBPower packet
-#define getTransmuter_TelemetryAPBPowerPacketID() (PKT_TRANSMUTER_TELEMETRY_APB)
-
-//! return the minimum encoded length for the Transmuter_TelemetryAPBPower packet
-#define getTransmuter_TelemetryAPBPowerMinDataLength() (4)
-
-//! return the maximum encoded length for the Transmuter_TelemetryAPBPower packet
-#define getTransmuter_TelemetryAPBPowerMaxDataLength() (4)
-
-// Initial and verify values for WarningLevels
-#define Transmuter_WarningLevels_engineTemp_InitValue 140
-#define Transmuter_WarningLevels_engineTemp_VerifyMin 50
-
-/*!
- * Warning level configuration values
- */
-typedef struct
-{
- uint8_t engineTemp; //!< Engine (CHT) temperature warning level
-}Transmuter_WarningLevels_t;
-
-//! Set a Transmuter_WarningLevels_t to initial values
-void initTransmuter_WarningLevels_t(Transmuter_WarningLevels_t* user);
-
-//! Create the Transmuter_WarningLevels packet
-void encodeTransmuter_WarningLevelsPacketStructure(void* pkt, const Transmuter_WarningLevels_t* user);
-
-//! Decode the Transmuter_WarningLevels packet
-int decodeTransmuter_WarningLevelsPacketStructure(const void* pkt, Transmuter_WarningLevels_t* user);
-
-//! Create the Transmuter_WarningLevels packet from parameters
-void encodeTransmuter_WarningLevelsPacket(void* pkt, uint8_t engineTemp);
-
-//! Decode the Transmuter_WarningLevels packet to parameters
-int decodeTransmuter_WarningLevelsPacket(const void* pkt, uint8_t* engineTemp);
-
-//! Verify a Transmuter_WarningLevels_t has acceptable values
-int verifyTransmuter_WarningLevels_t(Transmuter_WarningLevels_t* user);
-
-//! return the packet ID for the Transmuter_WarningLevels packet
-#define getTransmuter_WarningLevelsPacketID() (PKT_TRANSMUTER_WARNING_LEVELS)
-
-//! return the minimum encoded length for the Transmuter_WarningLevels packet
-#define getTransmuter_WarningLevelsMinDataLength() (1)
-
-//! return the maximum encoded length for the Transmuter_WarningLevels packet
-#define getTransmuter_WarningLevelsMaxDataLength() (1)
-
-// Initial and verify values for EFISettings
-#define Transmuter_EFISettings_ecuAddress_InitValue 200
-#define Transmuter_EFISettings_ecuAddress_VerifyMax 254
-#define Transmuter_EFISettings_triplexAddress_InitValue 201
-#define Transmuter_EFISettings_triplexAddress_VerifyMax 254
-#define Transmuter_EFISettings_fuelPressureMin_InitValue 5.0f
-#define Transmuter_EFISettings_fuelPressureMin_VerifyMin 1.0f
-#define Transmuter_EFISettings_fuelPressureMin_VerifyMax 25.0f
-
-/*!
- * ECU connection configuration packet
- */
-typedef struct
-{
- uint8_t ecuAddress; //!< CAN Node ID for the ECU
- uint16_t ecuFirmwareChecksum; //!< ECU firmware checksum
- uint16_t ecuSettingsChecksum; //!< ECU settings checksum
- uint8_t triplexAddress; //!< CAN Node ID for the triplex pump
- uint16_t triplexFirmwareChecksum; //!< Triplex pump firmware checksum
- float fuelPressureMin; //!< Minimum required fuel pressure
- uint8_t pumpController; //!< Fuel pressure control method
-}Transmuter_EFISettings_t;
-
-//! Set a Transmuter_EFISettings_t to initial values
-void initTransmuter_EFISettings_t(Transmuter_EFISettings_t* user);
-
-//! Create the Transmuter_EFISettings packet
-void encodeTransmuter_EFISettingsPacketStructure(void* pkt, const Transmuter_EFISettings_t* user);
-
-//! Decode the Transmuter_EFISettings packet
-int decodeTransmuter_EFISettingsPacketStructure(const void* pkt, Transmuter_EFISettings_t* user);
-
-//! Create the Transmuter_EFISettings packet from parameters
-void encodeTransmuter_EFISettingsPacket(void* pkt, uint8_t ecuAddress, uint16_t ecuFirmwareChecksum, uint16_t ecuSettingsChecksum, uint8_t triplexAddress, uint16_t triplexFirmwareChecksum, float fuelPressureMin, uint8_t pumpController);
-
-//! Decode the Transmuter_EFISettings packet to parameters
-int decodeTransmuter_EFISettingsPacket(const void* pkt, uint8_t* ecuAddress, uint16_t* ecuFirmwareChecksum, uint16_t* ecuSettingsChecksum, uint8_t* triplexAddress, uint16_t* triplexFirmwareChecksum, float* fuelPressureMin, uint8_t* pumpController);
-
-//! Verify a Transmuter_EFISettings_t has acceptable values
-int verifyTransmuter_EFISettings_t(Transmuter_EFISettings_t* user);
-
-//! return the packet ID for the Transmuter_EFISettings packet
-#define getTransmuter_EFISettingsPacketID() (PKT_TRANSMUTER_EFI_CONFIG)
-
-//! return the minimum encoded length for the Transmuter_EFISettings packet
-#define getTransmuter_EFISettingsMinDataLength() (10)
-
-//! return the maximum encoded length for the Transmuter_EFISettings packet
-#define getTransmuter_EFISettingsMaxDataLength() (11)
-
-// Initial and verify values for GeneratorSettings
-#define Transmuter_GeneratorSettings_beltRatio_InitValue 1.0f
-#define Transmuter_GeneratorSettings_beltRatio_VerifyMin 0.1f
-#define Transmuter_GeneratorSettings_beltRatio_VerifyMax 10.0f
-#define Transmuter_GeneratorSettings_rpmThreshold_InitValue 350
-#define Transmuter_GeneratorSettings_rpmThreshold_VerifyMax 5000
-#define Transmuter_GeneratorSettings_powerLossTimeout_InitValue 25
-
-/*!
- * Generator motor parameters
- */
-typedef struct
-{
- float beltRatio; //!< Belt ratio between engine and generator motor
- uint16_t rpmThreshold; //!< Allowable RPM measurement difference between generator and engine
- uint8_t powerLossTimeout; //!< Timeout before system disables due to engine power loss. Set to zero to disable timeout
-}Transmuter_GeneratorSettings_t;
-
-//! Set a Transmuter_GeneratorSettings_t to initial values
-void initTransmuter_GeneratorSettings_t(Transmuter_GeneratorSettings_t* user);
-
-//! Create the Transmuter_GeneratorSettings packet
-void encodeTransmuter_GeneratorSettingsPacketStructure(void* pkt, const Transmuter_GeneratorSettings_t* user);
-
-//! Decode the Transmuter_GeneratorSettings packet
-int decodeTransmuter_GeneratorSettingsPacketStructure(const void* pkt, Transmuter_GeneratorSettings_t* user);
-
-//! Create the Transmuter_GeneratorSettings packet from parameters
-void encodeTransmuter_GeneratorSettingsPacket(void* pkt, float beltRatio, uint16_t rpmThreshold, uint8_t powerLossTimeout);
-
-//! Decode the Transmuter_GeneratorSettings packet to parameters
-int decodeTransmuter_GeneratorSettingsPacket(const void* pkt, float* beltRatio, uint16_t* rpmThreshold, uint8_t* powerLossTimeout);
-
-//! Verify a Transmuter_GeneratorSettings_t has acceptable values
-int verifyTransmuter_GeneratorSettings_t(Transmuter_GeneratorSettings_t* user);
-
-//! return the packet ID for the Transmuter_GeneratorSettings packet
-#define getTransmuter_GeneratorSettingsPacketID() (PKT_TRANSMUTER_GEN_CONFIG)
-
-//! return the minimum encoded length for the Transmuter_GeneratorSettings packet
-#define getTransmuter_GeneratorSettingsMinDataLength() (5)
-
-//! return the maximum encoded length for the Transmuter_GeneratorSettings packet
-#define getTransmuter_GeneratorSettingsMaxDataLength() (5)
-
-// Initial and verify values for StartingSettings
-#define Transmuter_StartingSettings_retries_InitValue 3
-#define Transmuter_StartingSettings_retries_VerifyMax 50
-#define Transmuter_StartingSettings_timeout_InitValue 50
-#define Transmuter_StartingSettings_timeout_VerifyMin 1
-#define Transmuter_StartingSettings_rpm_InitValue 3000
-#define Transmuter_StartingSettings_rpm_VerifyMin 500
-#define Transmuter_StartingSettings_rpm_VerifyMax 25000
-#define Transmuter_StartingSettings_throttle_InitValue 25
-#define Transmuter_StartingSettings_throttle_VerifyMax 100
-#define Transmuter_StartingSettings_settlingPeriod_InitValue 25
-#define Transmuter_StartingSettings_settlingPeriod_VerifyMin 10
-#define Transmuter_StartingSettings_settlingPeriod_VerifyMax 250
-
-/*!
- * Engine starting settings
- */
-typedef struct
-{
- uint8_t retries; //!< Number of auto-retries allowed for engine starting routine
- uint8_t timeout; //!< Timeout for engine starting routine
- uint16_t rpm; //!< Starting RPM value
- uint8_t throttle; //!< Starting throttle position
- uint8_t settlingPeriod; //!< Settling time after reaching starting RPM
-}Transmuter_StartingSettings_t;
-
-//! Set a Transmuter_StartingSettings_t to initial values
-void initTransmuter_StartingSettings_t(Transmuter_StartingSettings_t* user);
-
-//! Create the Transmuter_StartingSettings packet
-void encodeTransmuter_StartingSettingsPacketStructure(void* pkt, const Transmuter_StartingSettings_t* user);
-
-//! Decode the Transmuter_StartingSettings packet
-int decodeTransmuter_StartingSettingsPacketStructure(const void* pkt, Transmuter_StartingSettings_t* user);
-
-//! Create the Transmuter_StartingSettings packet from parameters
-void encodeTransmuter_StartingSettingsPacket(void* pkt, uint8_t retries, uint8_t timeout, uint16_t rpm, uint8_t throttle, uint8_t settlingPeriod);
-
-//! Decode the Transmuter_StartingSettings packet to parameters
-int decodeTransmuter_StartingSettingsPacket(const void* pkt, uint8_t* retries, uint8_t* timeout, uint16_t* rpm, uint8_t* throttle, uint8_t* settlingPeriod);
-
-//! Verify a Transmuter_StartingSettings_t has acceptable values
-int verifyTransmuter_StartingSettings_t(Transmuter_StartingSettings_t* user);
-
-//! return the packet ID for the Transmuter_StartingSettings packet
-#define getTransmuter_StartingSettingsPacketID() (PKT_TRANSMUTER_STARTING_SETTINGS)
-
-//! return the minimum encoded length for the Transmuter_StartingSettings packet
-#define getTransmuter_StartingSettingsMinDataLength() (6)
-
-//! return the maximum encoded length for the Transmuter_StartingSettings packet
-#define getTransmuter_StartingSettingsMaxDataLength() (6)
-
-// Initial and verify values for PowerMap
-#define Transmuter_PowerMap_size_VerifyMin 2
-#define Transmuter_PowerMap_size_VerifyMax 15
-#define Transmuter_PowerMap_power_VerifyMin 0
-#define Transmuter_PowerMap_power_VerifyMax 25000
-#define Transmuter_PowerMap_rpm_VerifyMin 0
-#define Transmuter_PowerMap_rpm_VerifyMax 25000
-#define Transmuter_PowerMap_powerFilterHz_InitValue 1.0f
-#define Transmuter_PowerMap_powerFilterHz_VerifyMin 0.01f
-#define Transmuter_PowerMap_powerFilterHz_VerifyMax 50.0f
-
-/*!
- * Configuration of transmuter power map lookup table
- */
-typedef struct
-{
- uint8_t size;
- int16_t power[15]; //!< Power Input (W)
- int16_t rpm[15]; //!< Speed Output (RPM)
- float powerFilterHz; //!< Power demand low pass filter corner frequency
-}Transmuter_PowerMap_t;
-
-//! Set a Transmuter_PowerMap_t to initial values
-void initTransmuter_PowerMap_t(Transmuter_PowerMap_t* user);
-
-//! Create the Transmuter_PowerMap packet
-void encodeTransmuter_PowerMapPacketStructure(void* pkt, const Transmuter_PowerMap_t* user);
-
-//! Decode the Transmuter_PowerMap packet
-int decodeTransmuter_PowerMapPacketStructure(const void* pkt, Transmuter_PowerMap_t* user);
-
-//! Verify a Transmuter_PowerMap_t has acceptable values
-int verifyTransmuter_PowerMap_t(Transmuter_PowerMap_t* user);
-
-//! return the packet ID for the Transmuter_PowerMap packet
-#define getTransmuter_PowerMapPacketID() (PKT_TRANSMUTER_POWER_MAP)
-
-//! return the minimum encoded length for the Transmuter_PowerMap packet
-#define getTransmuter_PowerMapMinDataLength() (1)
-
-//! return the maximum encoded length for the Transmuter_PowerMap packet
-#define getTransmuter_PowerMapMaxDataLength() (63)
-
-// Initial and verify values for BatterySettings
-#define Transmuter_BatterySettings_nominalVoltage_InitValue 48
-#define Transmuter_BatterySettings_nominalVoltage_VerifyMin 20
-#define Transmuter_BatterySettings_nominalVoltage_VerifyMax 100
-#define Transmuter_BatterySettings_chargingCurrent_InitValue 5
-#define Transmuter_BatterySettings_capacity_InitValue 5000
-#define Transmuter_BatterySettings_currentScaler_InitValue 1.0f
-#define Transmuter_BatterySettings_currentScaler_VerifyMin 0.75f
-#define Transmuter_BatterySettings_currentScaler_VerifyMax 1.25f
-#define Transmuter_BatterySettings_currentOffset_InitValue 0.0f
-
-/*!
- * Configuration of battery charging parameters
- */
-typedef struct
-{
- float nominalVoltage;
- float chargingCurrent;
- uint16_t capacity; //!< Battery capacity
- float currentScaler; //!< Battery current measurement scaler value
- float currentOffset; //!< Battery current measurement offset value
-}Transmuter_BatterySettings_t;
-
-//! Set a Transmuter_BatterySettings_t to initial values
-void initTransmuter_BatterySettings_t(Transmuter_BatterySettings_t* user);
-
-//! Create the Transmuter_BatterySettings packet
-void encodeTransmuter_BatterySettingsPacketStructure(void* pkt, const Transmuter_BatterySettings_t* user);
-
-//! Decode the Transmuter_BatterySettings packet
-int decodeTransmuter_BatterySettingsPacketStructure(const void* pkt, Transmuter_BatterySettings_t* user);
-
-//! Create the Transmuter_BatterySettings packet from parameters
-void encodeTransmuter_BatterySettingsPacket(void* pkt, float nominalVoltage, float chargingCurrent, uint16_t capacity, float currentScaler, float currentOffset);
-
-//! Decode the Transmuter_BatterySettings packet to parameters
-int decodeTransmuter_BatterySettingsPacket(const void* pkt, float* nominalVoltage, float* chargingCurrent, uint16_t* capacity, float* currentScaler, float* currentOffset);
-
-//! Verify a Transmuter_BatterySettings_t has acceptable values
-int verifyTransmuter_BatterySettings_t(Transmuter_BatterySettings_t* user);
-
-//! return the packet ID for the Transmuter_BatterySettings packet
-#define getTransmuter_BatterySettingsPacketID() (PKT_TRANSMUTER_BATTERY_SETTINGS)
-
-//! return the minimum encoded length for the Transmuter_BatterySettings packet
-#define getTransmuter_BatterySettingsMinDataLength() (7)
-
-//! return the maximum encoded length for the Transmuter_BatterySettings packet
-#define getTransmuter_BatterySettingsMaxDataLength() (11)
-
-/*!
- * Transmuter packet selection. Enable or disable various telemetry packets
- */
-typedef struct
-{
- Transmuter_TelemetryPackets_t packets; //!< Telemetry packet selection
-}Transmuter_TelemetrySettings_t;
-
-//! Set a Transmuter_TelemetrySettings_t to initial values
-void initTransmuter_TelemetrySettings_t(Transmuter_TelemetrySettings_t* user);
-
-//! Create the Transmuter_TelemetrySettings packet
-void encodeTransmuter_TelemetrySettingsPacketStructure(void* pkt, const Transmuter_TelemetrySettings_t* user);
-
-//! Decode the Transmuter_TelemetrySettings packet
-int decodeTransmuter_TelemetrySettingsPacketStructure(const void* pkt, Transmuter_TelemetrySettings_t* user);
-
-//! Create the Transmuter_TelemetrySettings packet from parameters
-void encodeTransmuter_TelemetrySettingsPacket(void* pkt, const Transmuter_TelemetryPackets_t* packets);
-
-//! Decode the Transmuter_TelemetrySettings packet to parameters
-int decodeTransmuter_TelemetrySettingsPacket(const void* pkt, Transmuter_TelemetryPackets_t* packets);
-
-//! return the packet ID for the Transmuter_TelemetrySettings packet
-#define getTransmuter_TelemetrySettingsPacketID() (PKT_TRANSMUTER_TELEMETRY_CONFIG)
-
-//! return the minimum encoded length for the Transmuter_TelemetrySettings packet
-#define getTransmuter_TelemetrySettingsMinDataLength() (1)
-
-//! return the maximum encoded length for the Transmuter_TelemetrySettings packet
-#define getTransmuter_TelemetrySettingsMaxDataLength() (1)
-
-// Initial and verify values for ThrottleControlLoopSettings
-#define Transmuter_ThrottleControlLoopSettings_Kp_InitValue 25
-#define Transmuter_ThrottleControlLoopSettings_Kp_VerifyMin 0.0f
-#define Transmuter_ThrottleControlLoopSettings_Kp_VerifyMax 50.0f
-#define Transmuter_ThrottleControlLoopSettings_Ki_InitValue 2.5
-#define Transmuter_ThrottleControlLoopSettings_Ki_VerifyMin 0.0f
-#define Transmuter_ThrottleControlLoopSettings_Ki_VerifyMax 50.0f
-#define Transmuter_ThrottleControlLoopSettings_Kd_InitValue 0
-#define Transmuter_ThrottleControlLoopSettings_Kd_VerifyMin 0.0f
-#define Transmuter_ThrottleControlLoopSettings_Kd_VerifyMax 50.0f
-#define Transmuter_ThrottleControlLoopSettings_Kf_InitValue 0
-#define Transmuter_ThrottleControlLoopSettings_Kf_VerifyMin 0.0f
-#define Transmuter_ThrottleControlLoopSettings_Kf_VerifyMax 50.0f
-#define Transmuter_ThrottleControlLoopSettings_throttleMin_InitValue 10
-#define Transmuter_ThrottleControlLoopSettings_throttleMin_VerifyMax 100
-#define Transmuter_ThrottleControlLoopSettings_throttleMax_InitValue 100
-#define Transmuter_ThrottleControlLoopSettings_throttleMax_VerifyMax 100
-#define Transmuter_ThrottleControlLoopSettings_slewLimit_InitValue 100
-#define Transmuter_ThrottleControlLoopSettings_slewLimit_VerifyMin 10
-#define Transmuter_ThrottleControlLoopSettings_slewLimit_VerifyMax 1000
-#define Transmuter_ThrottleControlLoopSettings_throttleFilterHz_InitValue 1.0f
-#define Transmuter_ThrottleControlLoopSettings_throttleFilterHz_VerifyMin 0.01f
-#define Transmuter_ThrottleControlLoopSettings_throttleFilterHz_VerifyMax 50.0f
-
-/*!
- * Engine throttle control loop settings
- */
-typedef struct
-{
- float Kp;
- float Ki;
- float Kd;
- float Kf;
- uint8_t throttleMin; //!< Minimum engine throttle position
- uint8_t throttleMax; //!< Maximum engine throttle position
- uint16_t slewLimit; //!< Maximum throttle slew rate
- float throttleFilterHz; //!< Throttle command low pass filter corner frequency
-}Transmuter_ThrottleControlLoopSettings_t;
-
-//! Set a Transmuter_ThrottleControlLoopSettings_t to initial values
-void initTransmuter_ThrottleControlLoopSettings_t(Transmuter_ThrottleControlLoopSettings_t* user);
-
-//! Create the Transmuter_ThrottleControlLoopSettings packet
-void encodeTransmuter_ThrottleControlLoopSettingsPacketStructure(void* pkt, const Transmuter_ThrottleControlLoopSettings_t* user);
-
-//! Decode the Transmuter_ThrottleControlLoopSettings packet
-int decodeTransmuter_ThrottleControlLoopSettingsPacketStructure(const void* pkt, Transmuter_ThrottleControlLoopSettings_t* user);
-
-//! Verify a Transmuter_ThrottleControlLoopSettings_t has acceptable values
-int verifyTransmuter_ThrottleControlLoopSettings_t(Transmuter_ThrottleControlLoopSettings_t* user);
-
-//! return the packet ID for the Transmuter_ThrottleControlLoopSettings packet
-#define getTransmuter_ThrottleControlLoopSettingsPacketID() (PKT_TRANSMUTER_CTRL_LOOP_SETTINGS)
-
-//! return the minimum encoded length for the Transmuter_ThrottleControlLoopSettings packet
-#define getTransmuter_ThrottleControlLoopSettingsMinDataLength() (12)
-
-//! return the maximum encoded length for the Transmuter_ThrottleControlLoopSettings packet
-#define getTransmuter_ThrottleControlLoopSettingsMaxDataLength() (14)
-
-#ifdef __cplusplus
-}
-#endif
-#endif // _TRANSMUTERPACKETS_H
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterProtocol.c b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterProtocol.c
deleted file mode 100644
index 24ede728d3..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterProtocol.c
+++ /dev/null
@@ -1,253 +0,0 @@
-// TransmuterProtocol.c was generated by ProtoGen version 3.5.c
-
-/*
- * 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
- */
-
-#include "TransmuterProtocol.h"
-
-/*!
- * \brief Lookup label for 'TransmuterModes' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string label of the given entry
- */
-const char* TransmuterModes_EnumLabel(int value)
-{
- switch (value)
- {
- default:
- return "";
- case TRANSMUTER_MODE_STARTUP:
- return "TRANSMUTER_MODE_STARTUP";
- case TRANSMUTER_MODE_STANDBY:
- return "TRANSMUTER_MODE_STANDBY";
- case TRANSMUTER_MODE_PREFLIGHT:
- return "TRANSMUTER_MODE_PREFLIGHT";
- case TRANSMUTER_MODE_STARTING:
- return "TRANSMUTER_MODE_STARTING";
- case TRANSMUTER_MODE_WARMUP:
- return "TRANSMUTER_MODE_WARMUP";
- case TRANSMUTER_MODE_RPM:
- return "TRANSMUTER_MODE_RPM";
- case TRANSMUTER_MODE_CURRENT:
- return "TRANSMUTER_MODE_CURRENT";
- case TRANSMUTER_MODE_PWM:
- return "TRANSMUTER_MODE_PWM";
- case TRANSMUTER_MODE_NUM_MODES:
- return "TRANSMUTER_MODE_NUM_MODES";
- }
-}
-
-/*!
- * \brief Lookup title for 'TransmuterModes' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string title of the given entry (comment if no title given)
- */
-const char* TransmuterModes_EnumTitle(int value)
-{
- switch (value)
- {
- default:
- return "";
- case TRANSMUTER_MODE_STARTUP:
- return "Initial powerup mode of the transmuter";
- case TRANSMUTER_MODE_STANDBY:
- return "Transmuter is in standby mode";
- case TRANSMUTER_MODE_PREFLIGHT:
- return "Transmuter is in preflight check mode";
- case TRANSMUTER_MODE_STARTING:
- return "Transmuter is attempting to start the engine";
- case TRANSMUTER_MODE_WARMUP:
- return "Transmuter is in warmup mode";
- case TRANSMUTER_MODE_RPM:
- return "Transmuter is running in RPM control mode";
- case TRANSMUTER_MODE_CURRENT:
- return "Transmuter is running in CURRENT control mode";
- case TRANSMUTER_MODE_PWM:
- return "Transmuter is running in PWM control mode";
- case TRANSMUTER_MODE_NUM_MODES:
- return "Number of transmuter operational modes";
- }
-}
-
-
-/*!
- * \brief Lookup label for 'TransmuterStartingStates' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string label of the given entry
- */
-const char* TransmuterStartingStates_EnumLabel(int value)
-{
- switch (value)
- {
- default:
- return "";
- case TRANSMUTER_START_INIT:
- return "TRANSMUTER_START_INIT";
- case TRANSMUTER_START_PRIMING:
- return "TRANSMUTER_START_PRIMING";
- case TRANSMUTER_START_DISABLE_ECU:
- return "TRANSMUTER_START_DISABLE_ECU";
- case TRANSMUTER_START_CRANK_GEN:
- return "TRANSMUTER_START_CRANK_GEN";
- case TRANSMUTER_START_ENABLE_ECU:
- return "TRANSMUTER_START_ENABLE_ECU";
- case TRANSMUTER_START_FAILURE:
- return "TRANSMUTER_START_FAILURE";
- }
-}
-
-/*!
- * \brief Lookup title for 'TransmuterStartingStates' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string title of the given entry (comment if no title given)
- */
-const char* TransmuterStartingStates_EnumTitle(int value)
-{
- switch (value)
- {
- default:
- return "";
- case TRANSMUTER_START_INIT:
- return "Initializing the starting routine";
- case TRANSMUTER_START_PRIMING:
- return "Priming engine / fuel pump / etc";
- case TRANSMUTER_START_DISABLE_ECU:
- return "Disabling ECU prior to engine cranking";
- case TRANSMUTER_START_CRANK_GEN:
- return "Spinning the generator";
- case TRANSMUTER_START_ENABLE_ECU:
- return "Enable ECU once the system is spinning";
- case TRANSMUTER_START_FAILURE:
- return "Starting failed";
- }
-}
-
-
-/*!
- * \brief Lookup label for 'TransmuterStandbyCause' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string label of the given entry
- */
-const char* TransmuterStandbyCause_EnumLabel(int value)
-{
- switch (value)
- {
- default:
- return "";
- case TRANSMUTER_STANDBY_CAUSE_POWERUP:
- return "TRANSMUTER_STANDBY_CAUSE_POWERUP";
- case TRANSMUTER_STANDBY_CAUSE_HW_DISABLE:
- return "TRANSMUTER_STANDBY_CAUSE_HW_DISABLE";
- case TRANSMUTER_STANDBY_CAUSE_SW_DISABLE:
- return "TRANSMUTER_STANDBY_CAUSE_SW_DISABLE";
- case TRANSMUTER_STANDBY_CAUSE_STARTING_RETRIES:
- return "TRANSMUTER_STANDBY_CAUSE_STARTING_RETRIES";
- case TRANSMUTER_STANDBY_CAUSE_CMD:
- return "TRANSMUTER_STANDBY_CAUSE_CMD";
- case TRANSMUTER_STANDBY_CAUSE_CRITICAL_RUNNING_ERROR:
- return "TRANSMUTER_STANDBY_CAUSE_CRITICAL_RUNNING_ERROR";
- case TRANSMUTER_STANDBY_CAUSE_UNKNOWN_MODE:
- return "TRANSMUTER_STANDBY_CAUSE_UNKNOWN_MODE";
- }
-}
-
-
-/*!
- * \brief Lookup label for 'TransmuterFuelPumpMode' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string label of the given entry
- */
-const char* TransmuterFuelPumpMode_EnumLabel(int value)
-{
- switch (value)
- {
- default:
- return "";
- case TRANSMUTER_PUMP_TRIPLEX:
- return "TRANSMUTER_PUMP_TRIPLEX";
- case TRANSMUTER_PUMP_ECU:
- return "TRANSMUTER_PUMP_ECU";
- }
-}
-
-
-/*!
- * \brief Lookup label for 'TransmuterPackets' enum entry
- *
- * \param value is the integer value of the enum entry
- * \return string label of the given entry
- */
-const char* TransmuterPackets_EnumLabel(int value)
-{
- switch (value)
- {
- default:
- return "";
- case PKT_TRANSMUTER_STANDBY:
- return "PKT_TRANSMUTER_STANDBY";
- case PKT_TRANSMUTER_PREFLIGHT:
- return "PKT_TRANSMUTER_PREFLIGHT";
- case PKT_TRANSMUTER_WARMUP:
- return "PKT_TRANSMUTER_WARMUP";
- case PKT_TRANSMUTER_RUN:
- return "PKT_TRANSMUTER_RUN";
- case PKT_TRANSMUTER_PWM:
- return "PKT_TRANSMUTER_PWM";
- case PKT_TRANSMUTER_SYSTEM_CMD:
- return "PKT_TRANSMUTER_SYSTEM_CMD";
- case PKT_TRANSMUTER_TELEMETRY_STATUS:
- return "PKT_TRANSMUTER_TELEMETRY_STATUS";
- case PKT_TRANSMUTER_TELEMETRY_POWER:
- return "PKT_TRANSMUTER_TELEMETRY_POWER";
- case PKT_TRANSMUTER_TELEMETRY_SETPOINT:
- return "PKT_TRANSMUTER_TELEMETRY_SETPOINT";
- case PKT_TRANSMUTER_TELEMETRY_GEN:
- return "PKT_TRANSMUTER_TELEMETRY_GEN";
- case PKT_TRANSMUTER_TELEMETRY_CAPACITY:
- return "PKT_TRANSMUTER_TELEMETRY_CAPACITY";
- case PKT_TRANSMUTER_TELEMETRY_CTRL_LOOP:
- return "PKT_TRANSMUTER_TELEMETRY_CTRL_LOOP";
- case PKT_TRANSMUTER_TELEMETRY_APB:
- return "PKT_TRANSMUTER_TELEMETRY_APB";
- case PKT_TRANSMUTER_TELEMETRY_CONFIG:
- return "PKT_TRANSMUTER_TELEMETRY_CONFIG";
- case PKT_TRANSMUTER_WARNING_LEVELS:
- return "PKT_TRANSMUTER_WARNING_LEVELS";
- case PKT_TRANSMUTER_CTRL_LOOP_SETTINGS:
- return "PKT_TRANSMUTER_CTRL_LOOP_SETTINGS";
- case PKT_TRANSMUTER_BATTERY_SETTINGS:
- return "PKT_TRANSMUTER_BATTERY_SETTINGS";
- case PKT_TRANSMUTER_EFI_CONFIG:
- return "PKT_TRANSMUTER_EFI_CONFIG";
- case PKT_TRANSMUTER_GEN_CONFIG:
- return "PKT_TRANSMUTER_GEN_CONFIG";
- case PKT_TRANSMUTER_POWER_MAP:
- return "PKT_TRANSMUTER_POWER_MAP";
- case PKT_TRANSMUTER_STARTING_SETTINGS:
- return "PKT_TRANSMUTER_STARTING_SETTINGS";
- case PKT_TRANSMUTER_BULK_TRANSFER:
- return "PKT_TRANSMUTER_BULK_TRANSFER";
- }
-}
-
-// end of TransmuterProtocol.c
diff --git a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterProtocol.h b/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterProtocol.h
deleted file mode 100644
index 3a49252e10..0000000000
--- a/libraries/AP_PiccoloCAN/piccolo_protocol/TransmuterProtocol.h
+++ /dev/null
@@ -1,177 +0,0 @@
-// TransmuterProtocol.h was generated by ProtoGen version 3.5.c
-
-/*
- * 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 _TRANSMUTERPROTOCOL_H
-#define _TRANSMUTERPROTOCOL_H
-
-// Language target is C, C++ compilers: don't mangle us
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- * \file
- * \mainpage Transmuter protocol stack
- *
- * This is the ICD for the Currawong Engineering Hybrid Transmuter. This
- * document details the Transmuter command and packet structure for
- * communication with and configuration of the Transmuter.
- *
- * The protocol API enumeration is incremented anytime the protocol is changed
- * in a way that affects compatibility with earlier versions of the protocol.
- * The protocol enumeration for this version is: 15
- *
- * The protocol version is 0.11
- */
-
-#include
-#include
-
-//! \return the protocol API enumeration
-#define getTransmuterApi() 15
-
-//! \return the protocol version string
-#define getTransmuterVersion() "0.11"
-
-/*!
- * Defines the various high-level operational modes of the Transmuter state
- * machine
- */
-typedef enum
-{
- TRANSMUTER_MODE_STARTUP = 0, //!< Initial powerup mode of the transmuter
- TRANSMUTER_MODE_STANDBY, //!< Transmuter is in standby mode
- TRANSMUTER_MODE_PREFLIGHT, //!< Transmuter is in preflight check mode
- TRANSMUTER_MODE_STARTING, //!< Transmuter is attempting to start the engine
- TRANSMUTER_MODE_WARMUP, //!< Transmuter is in warmup mode
- TRANSMUTER_MODE_RPM, //!< Transmuter is running in RPM control mode
- TRANSMUTER_MODE_CURRENT, //!< Transmuter is running in CURRENT control mode
- TRANSMUTER_MODE_PWM, //!< Transmuter is running in PWM control mode
- TRANSMUTER_MODE_NUM_MODES //!< Number of transmuter operational modes
-} TransmuterModes;
-
-//! \return the label of a 'TransmuterModes' enum entry, based on its value
-const char* TransmuterModes_EnumLabel(int value);
-
-//! \return the title of a 'TransmuterModes' enum entry, based on its value
-const char* TransmuterModes_EnumTitle(int value);
-
-/*!
- * Defines the various states of the transmuter engine starting state machine
- */
-typedef enum
-{
- TRANSMUTER_START_INIT = 0, //!< Initializing the starting routine
- TRANSMUTER_START_PRIMING, //!< Priming engine / fuel pump / etc
- TRANSMUTER_START_DISABLE_ECU, //!< Disabling ECU prior to engine cranking
- TRANSMUTER_START_CRANK_GEN, //!< Spinning the generator
- TRANSMUTER_START_ENABLE_ECU, //!< Enable ECU once the system is spinning
- TRANSMUTER_START_FAILURE = 0x0F //!< Starting failed
-} TransmuterStartingStates;
-
-//! \return the label of a 'TransmuterStartingStates' enum entry, based on its value
-const char* TransmuterStartingStates_EnumLabel(int value);
-
-//! \return the title of a 'TransmuterStartingStates' enum entry, based on its value
-const char* TransmuterStartingStates_EnumTitle(int value);
-
-/*!
- * Possible transmuter system standby causes
- */
-typedef enum
-{
- TRANSMUTER_STANDBY_CAUSE_POWERUP = 0x01, //!< System power-on (or reset)
- TRANSMUTER_STANDBY_CAUSE_HW_DISABLE = 0x10, //!< System standby caused by hardware inhibit line
- TRANSMUTER_STANDBY_CAUSE_SW_DISABLE, //!< System standby casued by software inhibit
- TRANSMUTER_STANDBY_CAUSE_STARTING_RETRIES = 0x20, //!< Too many starting attempts
- TRANSMUTER_STANDBY_CAUSE_CMD = 0x30, //!< Standby due to received command
- TRANSMUTER_STANDBY_CAUSE_CRITICAL_RUNNING_ERROR = 0x40, //!< Standby due to critical error during running
- TRANSMUTER_STANDBY_CAUSE_UNKNOWN_MODE = 0x80 //!< Unknown operational mode
-} TransmuterStandbyCause;
-
-//! \return the label of a 'TransmuterStandbyCause' enum entry, based on its value
-const char* TransmuterStandbyCause_EnumLabel(int value);
-
-/*!
- * Fuel pump mode
- */
-typedef enum
-{
- TRANSMUTER_PUMP_TRIPLEX = 0x00, //!< Fuel pressure is regulated via triplex pump
- TRANSMUTER_PUMP_ECU = 0x01 //!< Fuel pressure is regulated via ECU
-} TransmuterFuelPumpMode;
-
-//! \return the label of a 'TransmuterFuelPumpMode' enum entry, based on its value
-const char* TransmuterFuelPumpMode_EnumLabel(int value);
-
-/*!
- * Transmuter packet ID values
- */
-typedef enum
-{
- PKT_TRANSMUTER_STANDBY = 0x10, //!< Command the transmuter to enter standby mode
- PKT_TRANSMUTER_PREFLIGHT = 0x11, //!< Command the transmuter to enter preflight mode
- PKT_TRANSMUTER_WARMUP = 0x12, //!< Command the transmuter to enter engine warmup mode
- PKT_TRANSMUTER_RUN = 0x15, //!< Command the transmuter to enter running mode
- PKT_TRANSMUTER_PWM = 0x20, //!< Command the transmuter to enter PWM mode
- PKT_TRANSMUTER_SYSTEM_CMD = 0x50, //!< Send various system commands to the transmuter
- PKT_TRANSMUTER_TELEMETRY_STATUS = 0x80, //!< General transmuter status information
- PKT_TRANSMUTER_TELEMETRY_POWER = 0x81, //!< Current and power information
- PKT_TRANSMUTER_TELEMETRY_SETPOINT = 0x82, //!< System setpoint information
- PKT_TRANSMUTER_TELEMETRY_GEN = 0x83, //!< Generator and EFI status information
- PKT_TRANSMUTER_TELEMETRY_CAPACITY = 0x84, //!< System capacity information
- PKT_TRANSMUTER_TELEMETRY_CTRL_LOOP = 0x86, //!< Control loop output information
- PKT_TRANSMUTER_TELEMETRY_APB = 0x87, //!< Power output from auxillary power board
- PKT_TRANSMUTER_TELEMETRY_CONFIG = 0x94, //!< Telemetry settings
- PKT_TRANSMUTER_WARNING_LEVELS = 0x95, //!< Warning threshold calibration
- PKT_TRANSMUTER_CTRL_LOOP_SETTINGS = 0xA0, //!< Control loop settings packet
- PKT_TRANSMUTER_BATTERY_SETTINGS = 0xB0, //!< Battery management configuration
- PKT_TRANSMUTER_EFI_CONFIG = 0xB5, //!< EFI configuration
- PKT_TRANSMUTER_GEN_CONFIG = 0xB6, //!< Generator motor config
- PKT_TRANSMUTER_POWER_MAP = 0xC0, //!< Engine power map
- PKT_TRANSMUTER_STARTING_SETTINGS = 0xCA, //!< Engine starting settings
- PKT_TRANSMUTER_BULK_TRANSFER = 0xF0 //!< Bulk data transfer (long packets)
-} TransmuterPackets;
-
-//! \return the label of a 'TransmuterPackets' enum entry, based on its value
-const char* TransmuterPackets_EnumLabel(int value);
-
-
-// The prototypes below provide an interface to the packets.
-// They are not auto-generated functions, but must be hand-written
-
-//! \return the packet data pointer from the packet
-uint8_t* getTransmuterPacketData(void* pkt);
-
-//! \return the packet data pointer from the packet, const
-const uint8_t* getTransmuterPacketDataConst(const void* pkt);
-
-//! Complete a packet after the data have been encoded
-void finishTransmuterPacket(void* pkt, int size, uint32_t packetID);
-
-//! \return the size of a packet from the packet header
-int getTransmuterPacketSize(const void* pkt);
-
-//! \return the ID of a packet from the packet header
-uint32_t getTransmuterPacketID(const void* pkt);
-
-#ifdef __cplusplus
-}
-#endif
-#endif // _TRANSMUTERPROTOCOL_H