mirror of https://github.com/ArduPilot/ardupilot
532 lines
21 KiB
C
532 lines
21 KiB
C
// ServoPackets.h was generated by ProtoGen version 3.2.a
|
|
|
|
/*
|
|
* This file is free software: you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This file is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Author: Oliver Walters / Currawong Engineering Pty Ltd
|
|
*/
|
|
|
|
#ifndef _SERVOPACKETS_H
|
|
#define _SERVOPACKETS_H
|
|
|
|
// Language target is C, C++ compilers: don't mangle us
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*!
|
|
* \file
|
|
*/
|
|
|
|
#include <stdbool.h>
|
|
#include "ServoProtocol.h"
|
|
#include "ServoDefines.h"
|
|
|
|
/*!
|
|
* General servo configuration settings
|
|
*/
|
|
typedef struct
|
|
{
|
|
Servo_ConfigBits_t options; //!< Servo configuration parameters
|
|
uint16_t commandTimeout; //!< Servo command timeout
|
|
int16_t homePosition; //!< Servo neutral position. Servo can be configured to return to this position at powerup, or after loss of communication
|
|
uint8_t reserved[2]; //!< Reserved for future use
|
|
}Servo_Config_t;
|
|
|
|
//! Create the Servo_Config packet
|
|
void encodeServo_ConfigPacketStructure(void* pkt, const Servo_Config_t* user);
|
|
|
|
//! Decode the Servo_Config packet
|
|
int decodeServo_ConfigPacketStructure(const void* pkt, Servo_Config_t* user);
|
|
|
|
//! Create the Servo_Config packet from parameters
|
|
void encodeServo_ConfigPacket(void* pkt, const Servo_ConfigBits_t* options, uint16_t commandTimeout, int16_t homePosition, const uint8_t reserved[2]);
|
|
|
|
//! Decode the Servo_Config packet to parameters
|
|
int decodeServo_ConfigPacket(const void* pkt, Servo_ConfigBits_t* options, uint16_t* commandTimeout, int16_t* homePosition, uint8_t reserved[2]);
|
|
|
|
//! Encode a Servo_Config_t into a byte array
|
|
void encodeServo_Config_t(uint8_t* data, int* bytecount, const Servo_Config_t* user);
|
|
|
|
//! Decode a Servo_Config_t from a byte array
|
|
int decodeServo_Config_t(const uint8_t* data, int* bytecount, Servo_Config_t* user);
|
|
|
|
//! return the packet ID for the Servo_Config packet
|
|
#define getServo_ConfigPacketID() (PKT_SERVO_CONFIG)
|
|
|
|
//! return the minimum encoded length for the Servo_Config packet
|
|
#define getServo_ConfigMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_Config packet
|
|
#define getServo_ConfigMaxDataLength() (8)
|
|
|
|
/*!
|
|
* This packet can be used to simultaneously command multiple servos which have
|
|
* sequential CAN ID values. This packet must be sent as a broadcast packet
|
|
* (address = 0xFF) such that all servos can receive it. These commands can be
|
|
* sent to groups of servos with ID values up to 64, using different
|
|
* PKT_SERVO_MULTI_COMMAND_x packet ID values.
|
|
*/
|
|
typedef struct
|
|
{
|
|
int16_t commandA; //!< Servo command for servo with address offset 0
|
|
int16_t commandB; //!< Servo command for servo with address offset 1
|
|
int16_t commandC; //!< Servo command for servo with address offset 3
|
|
int16_t commandD; //!< Servo command for servo with address offset 3
|
|
}Servo_MultiPositionCommand_t;
|
|
|
|
//! Create the Servo_MultiPositionCommand packet from parameters
|
|
void encodeServo_MultiPositionCommandPacket(void* pkt, int16_t commandA, int16_t commandB, int16_t commandC, int16_t commandD, uint32_t id);
|
|
|
|
//! Decode the Servo_MultiPositionCommand packet to parameters
|
|
int decodeServo_MultiPositionCommandPacket(const void* pkt, int16_t* commandA, int16_t* commandB, int16_t* commandC, int16_t* commandD);
|
|
|
|
//! return the minimum encoded length for the Servo_MultiPositionCommand packet
|
|
#define getServo_MultiPositionCommandMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_MultiPositionCommand packet
|
|
#define getServo_MultiPositionCommandMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Send this command to move the servo(s) to the commanded position. Position
|
|
* command units depend on the configuration of the servo. Send with the
|
|
* broadcast ID (0xFF) to send the position command to *all* servos.
|
|
*/
|
|
typedef struct
|
|
{
|
|
int16_t command; //!< Servo command
|
|
}Servo_PositionCommand_t;
|
|
|
|
//! Create the Servo_PositionCommand packet from parameters
|
|
void encodeServo_PositionCommandPacket(void* pkt, int16_t command);
|
|
|
|
//! Decode the Servo_PositionCommand packet to parameters
|
|
int decodeServo_PositionCommandPacket(const void* pkt, int16_t* command);
|
|
|
|
//! return the packet ID for the Servo_PositionCommand packet
|
|
#define getServo_PositionCommandPacketID() (PKT_SERVO_POSITION_COMMAND)
|
|
|
|
//! return the minimum encoded length for the Servo_PositionCommand packet
|
|
#define getServo_PositionCommandMinDataLength() (2)
|
|
|
|
//! return the maximum encoded length for the Servo_PositionCommand packet
|
|
#define getServo_PositionCommandMaxDataLength() (2)
|
|
|
|
//! Create the Servo_NeutralPositionCommand packet from parameters
|
|
void encodeServo_NeutralPositionCommandPacket(void* pkt);
|
|
|
|
//! Decode the Servo_NeutralPositionCommand packet to parameters
|
|
int decodeServo_NeutralPositionCommandPacket(const void* pkt);
|
|
|
|
//! return the packet ID for the Servo_NeutralPositionCommand packet
|
|
#define getServo_NeutralPositionCommandPacketID() (PKT_SERVO_NEUTRAL_COMMAND)
|
|
|
|
//! return the minimum encoded length for the Servo_NeutralPositionCommand packet
|
|
#define getServo_NeutralPositionCommandMinDataLength() 0
|
|
|
|
//! return the maximum encoded length for the Servo_NeutralPositionCommand packet
|
|
#define getServo_NeutralPositionCommandMaxDataLength() 0
|
|
|
|
//! Create the Servo_Disable packet from parameters
|
|
void encodeServo_DisablePacket(void* pkt);
|
|
|
|
//! Decode the Servo_Disable packet to parameters
|
|
int decodeServo_DisablePacket(const void* pkt);
|
|
|
|
//! return the packet ID for the Servo_Disable packet
|
|
#define getServo_DisablePacketID() (PKT_SERVO_DISABLE)
|
|
|
|
//! return the minimum encoded length for the Servo_Disable packet
|
|
#define getServo_DisableMinDataLength() 0
|
|
|
|
//! return the maximum encoded length for the Servo_Disable packet
|
|
#define getServo_DisableMaxDataLength() 0
|
|
|
|
//! Create the Servo_Enable packet from parameters
|
|
void encodeServo_EnablePacket(void* pkt);
|
|
|
|
//! Decode the Servo_Enable packet to parameters
|
|
int decodeServo_EnablePacket(const void* pkt);
|
|
|
|
//! return the packet ID for the Servo_Enable packet
|
|
#define getServo_EnablePacketID() (PKT_SERVO_ENABLE)
|
|
|
|
//! return the minimum encoded length for the Servo_Enable packet
|
|
#define getServo_EnableMinDataLength() 0
|
|
|
|
//! return the maximum encoded length for the Servo_Enable packet
|
|
#define getServo_EnableMaxDataLength() 0
|
|
|
|
/*!
|
|
* Set the human-readable description of this servo
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint8_t title[8];
|
|
}Servo_SetTitle_t;
|
|
|
|
//! Create the Servo_SetTitle packet from parameters
|
|
void encodeServo_SetTitlePacket(void* pkt, const uint8_t title[8]);
|
|
|
|
//! Decode the Servo_SetTitle packet to parameters
|
|
int decodeServo_SetTitlePacket(const void* pkt, uint8_t title[8]);
|
|
|
|
//! return the packet ID for the Servo_SetTitle packet
|
|
#define getServo_SetTitlePacketID() (PKT_SERVO_SET_TITLE)
|
|
|
|
//! return the minimum encoded length for the Servo_SetTitle packet
|
|
#define getServo_SetTitleMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_SetTitle packet
|
|
#define getServo_SetTitleMaxDataLength() (8)
|
|
|
|
/*!
|
|
* The *SERVO_STATUS_A* packet contains status, warning and error information,
|
|
* in addition to the servo position
|
|
*/
|
|
typedef struct
|
|
{
|
|
Servo_StatusBits_t status; //!< Status bits contain information on servo operation
|
|
Servo_WarningBits_t warnings; //!< Warning bits indicate servo is operation outside of desired range
|
|
Servo_ErrorBits_t errors; //!< These bits indicate critical system error information
|
|
int16_t position; //!< Servo position, mapped to input units
|
|
int16_t command; //!< Servo commanded position
|
|
}Servo_StatusA_t;
|
|
|
|
//! Create the Servo_StatusA packet
|
|
void encodeServo_StatusAPacketStructure(void* pkt, const Servo_StatusA_t* user);
|
|
|
|
//! Decode the Servo_StatusA packet
|
|
int decodeServo_StatusAPacketStructure(const void* pkt, Servo_StatusA_t* user);
|
|
|
|
//! Create the Servo_StatusA packet from parameters
|
|
void encodeServo_StatusAPacket(void* pkt, const Servo_StatusBits_t* status, const Servo_WarningBits_t* warnings, const Servo_ErrorBits_t* errors, int16_t position, int16_t command);
|
|
|
|
//! Decode the Servo_StatusA packet to parameters
|
|
int decodeServo_StatusAPacket(const void* pkt, Servo_StatusBits_t* status, Servo_WarningBits_t* warnings, Servo_ErrorBits_t* errors, int16_t* position, int16_t* command);
|
|
|
|
//! return the packet ID for the Servo_StatusA packet
|
|
#define getServo_StatusAPacketID() (PKT_SERVO_STATUS_A)
|
|
|
|
//! return the minimum encoded length for the Servo_StatusA packet
|
|
#define getServo_StatusAMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_StatusA packet
|
|
#define getServo_StatusAMaxDataLength() (8)
|
|
|
|
/*!
|
|
* The *SERVO_STATUS_B* packet contains various servo feedback data
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint16_t current; //!< Servo current
|
|
uint16_t voltage; //!< Servo supply voltage
|
|
int8_t temperature; //!< Servo temperature
|
|
int8_t dutyCycle; //!< Motor duty cycle
|
|
int16_t speed; //!< Servo output shaft speed
|
|
}Servo_StatusB_t;
|
|
|
|
//! Create the Servo_StatusB packet
|
|
void encodeServo_StatusBPacketStructure(void* pkt, const Servo_StatusB_t* user);
|
|
|
|
//! Decode the Servo_StatusB packet
|
|
int decodeServo_StatusBPacketStructure(const void* pkt, Servo_StatusB_t* user);
|
|
|
|
//! Create the Servo_StatusB packet from parameters
|
|
void encodeServo_StatusBPacket(void* pkt, uint16_t current, uint16_t voltage, int8_t temperature, int8_t dutyCycle, int16_t speed);
|
|
|
|
//! Decode the Servo_StatusB packet to parameters
|
|
int decodeServo_StatusBPacket(const void* pkt, uint16_t* current, uint16_t* voltage, int8_t* temperature, int8_t* dutyCycle, int16_t* speed);
|
|
|
|
//! return the packet ID for the Servo_StatusB packet
|
|
#define getServo_StatusBPacketID() (PKT_SERVO_STATUS_B)
|
|
|
|
//! return the minimum encoded length for the Servo_StatusB packet
|
|
#define getServo_StatusBMinDataLength() (5)
|
|
|
|
//! return the maximum encoded length for the Servo_StatusB packet
|
|
#define getServo_StatusBMaxDataLength() (8)
|
|
|
|
/*!
|
|
* The *SERVO_STATUS_C* packet contains servo position data. It is a cut-down
|
|
* packet to allow high-speed feedback on servo position
|
|
*/
|
|
typedef struct
|
|
{
|
|
int16_t position; //!< Servo position, mapped to input units
|
|
}Servo_StatusC_t;
|
|
|
|
//! Create the Servo_StatusC packet
|
|
void encodeServo_StatusCPacketStructure(void* pkt, const Servo_StatusC_t* user);
|
|
|
|
//! Decode the Servo_StatusC packet
|
|
int decodeServo_StatusCPacketStructure(const void* pkt, Servo_StatusC_t* user);
|
|
|
|
//! Create the Servo_StatusC packet from parameters
|
|
void encodeServo_StatusCPacket(void* pkt, int16_t position);
|
|
|
|
//! Decode the Servo_StatusC packet to parameters
|
|
int decodeServo_StatusCPacket(const void* pkt, int16_t* position);
|
|
|
|
//! return the packet ID for the Servo_StatusC packet
|
|
#define getServo_StatusCPacketID() (PKT_SERVO_STATUS_C)
|
|
|
|
//! return the minimum encoded length for the Servo_StatusC packet
|
|
#define getServo_StatusCMinDataLength() (2)
|
|
|
|
//! return the maximum encoded length for the Servo_StatusC packet
|
|
#define getServo_StatusCMaxDataLength() (2)
|
|
|
|
/*!
|
|
* Raw accelerometer data. To convert these raw readings to 'real' units, use
|
|
* the formula acc = 0.5 * raw * fullscale / (2^resolution)
|
|
*/
|
|
typedef struct
|
|
{
|
|
int16_t xAcc; //!< X axis acceleration value
|
|
int16_t yAcc; //!< Y axis acceleration value
|
|
int16_t zAcc; //!< Z axis acceleration value
|
|
uint8_t fullscale; //!< Accelerometer full-scale range
|
|
uint8_t resolution; //!< Accelerometer measurement resolution, in 'bits'.
|
|
}Servo_Accelerometer_t;
|
|
|
|
//! Create the Servo_Accelerometer packet from parameters
|
|
void encodeServo_AccelerometerPacket(void* pkt, int16_t xAcc, int16_t yAcc, int16_t zAcc, uint8_t fullscale, uint8_t resolution);
|
|
|
|
//! Decode the Servo_Accelerometer packet to parameters
|
|
int decodeServo_AccelerometerPacket(const void* pkt, int16_t* xAcc, int16_t* yAcc, int16_t* zAcc, uint8_t* fullscale, uint8_t* resolution);
|
|
|
|
//! return the packet ID for the Servo_Accelerometer packet
|
|
#define getServo_AccelerometerPacketID() (PKT_SERVO_ACCELEROMETER)
|
|
|
|
//! return the minimum encoded length for the Servo_Accelerometer packet
|
|
#define getServo_AccelerometerMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_Accelerometer packet
|
|
#define getServo_AccelerometerMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Servo address information
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint8_t hwRev; //!< Hardware revision
|
|
uint32_t serialNumber; //!< Servo serial number
|
|
uint16_t userIDA; //!< Programmable User ID value 1/2
|
|
uint16_t userIDB; //!< Programmable User ID value 2/2
|
|
}Servo_Address_t;
|
|
|
|
//! Create the Servo_Address packet
|
|
void encodeServo_AddressPacketStructure(void* pkt, const Servo_Address_t* user);
|
|
|
|
//! Decode the Servo_Address packet
|
|
int decodeServo_AddressPacketStructure(const void* pkt, Servo_Address_t* user);
|
|
|
|
//! Create the Servo_Address packet from parameters
|
|
void encodeServo_AddressPacket(void* pkt, uint8_t hwRev, uint32_t serialNumber, uint16_t userIDA, uint16_t userIDB);
|
|
|
|
//! Decode the Servo_Address packet to parameters
|
|
int decodeServo_AddressPacket(const void* pkt, uint8_t* hwRev, uint32_t* serialNumber, uint16_t* userIDA, uint16_t* userIDB);
|
|
|
|
//! return the packet ID for the Servo_Address packet
|
|
#define getServo_AddressPacketID() (PKT_SERVO_ADDRESS)
|
|
|
|
//! return the minimum encoded length for the Servo_Address packet
|
|
#define getServo_AddressMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_Address packet
|
|
#define getServo_AddressMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Servo title information
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint8_t title[8]; //!< Human readable description string for the servo
|
|
}Servo_Title_t;
|
|
|
|
//! Create the Servo_Title packet from parameters
|
|
void encodeServo_TitlePacket(void* pkt, const uint8_t title[8]);
|
|
|
|
//! Decode the Servo_Title packet to parameters
|
|
int decodeServo_TitlePacket(const void* pkt, uint8_t title[8]);
|
|
|
|
//! return the packet ID for the Servo_Title packet
|
|
#define getServo_TitlePacketID() (PKT_SERVO_TITLE)
|
|
|
|
//! return the minimum encoded length for the Servo_Title packet
|
|
#define getServo_TitleMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_Title packet
|
|
#define getServo_TitleMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Servo firmware information
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint8_t major; //!< Firmware version, major number
|
|
uint8_t minor; //!< Firmware version, minor number
|
|
uint8_t day; //!< Firmware release date, day-of-month
|
|
uint8_t month; //!< Firmware release date, month-of-year
|
|
uint16_t year; //!< Firmware release date, year
|
|
uint16_t checksum; //!< Firmware checksum, 16-bit
|
|
}Servo_Firmware_t;
|
|
|
|
//! Create the Servo_Firmware packet
|
|
void encodeServo_FirmwarePacketStructure(void* pkt, const Servo_Firmware_t* user);
|
|
|
|
//! Decode the Servo_Firmware packet
|
|
int decodeServo_FirmwarePacketStructure(const void* pkt, Servo_Firmware_t* user);
|
|
|
|
//! Create the Servo_Firmware packet from parameters
|
|
void encodeServo_FirmwarePacket(void* pkt, uint8_t major, uint8_t minor, uint8_t day, uint8_t month, uint16_t year, uint16_t checksum);
|
|
|
|
//! Decode the Servo_Firmware packet to parameters
|
|
int decodeServo_FirmwarePacket(const void* pkt, uint8_t* major, uint8_t* minor, uint8_t* day, uint8_t* month, uint16_t* year, uint16_t* checksum);
|
|
|
|
//! return the packet ID for the Servo_Firmware packet
|
|
#define getServo_FirmwarePacketID() (PKT_SERVO_FIRMWARE)
|
|
|
|
//! return the minimum encoded length for the Servo_Firmware packet
|
|
#define getServo_FirmwareMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_Firmware packet
|
|
#define getServo_FirmwareMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Servo system info (uptime, etc)
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint32_t msSinceReset; //!< Time since last power cycle (milliseconds)
|
|
uint16_t powerCycles; //!< Number of recorded power cycles
|
|
uint8_t resetCode; //!< Processor code indicating cause of most recent reset event
|
|
uint8_t cpuOccupancy;
|
|
}Servo_SystemInfo_t;
|
|
|
|
//! Create the Servo_SystemInfo packet
|
|
void encodeServo_SystemInfoPacketStructure(void* pkt, const Servo_SystemInfo_t* user);
|
|
|
|
//! Decode the Servo_SystemInfo packet
|
|
int decodeServo_SystemInfoPacketStructure(const void* pkt, Servo_SystemInfo_t* user);
|
|
|
|
//! Create the Servo_SystemInfo packet from parameters
|
|
void encodeServo_SystemInfoPacket(void* pkt, uint32_t msSinceReset, uint16_t powerCycles, uint8_t resetCode, uint8_t cpuOccupancy);
|
|
|
|
//! Decode the Servo_SystemInfo packet to parameters
|
|
int decodeServo_SystemInfoPacket(const void* pkt, uint32_t* msSinceReset, uint16_t* powerCycles, uint8_t* resetCode, uint8_t* cpuOccupancy);
|
|
|
|
//! return the packet ID for the Servo_SystemInfo packet
|
|
#define getServo_SystemInfoPacketID() (PKT_SERVO_SYSTEM_INFO)
|
|
|
|
//! return the minimum encoded length for the Servo_SystemInfo packet
|
|
#define getServo_SystemInfoMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_SystemInfo packet
|
|
#define getServo_SystemInfoMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Telemetry settings configuration packet
|
|
*/
|
|
typedef struct
|
|
{
|
|
Servo_TelemetrySettings_t settings; //!< Servo telemetry settings
|
|
uint8_t icdVersion; //!< Servo ICD revision. Field is encoded constant.
|
|
}Servo_TelemetryConfig_t;
|
|
|
|
//! Create the Servo_TelemetryConfig packet
|
|
void encodeServo_TelemetryConfigPacketStructure(void* pkt, const Servo_TelemetryConfig_t* user);
|
|
|
|
//! Decode the Servo_TelemetryConfig packet
|
|
int decodeServo_TelemetryConfigPacketStructure(const void* pkt, Servo_TelemetryConfig_t* user);
|
|
|
|
//! Create the Servo_TelemetryConfig packet from parameters
|
|
void encodeServo_TelemetryConfigPacket(void* pkt, const Servo_TelemetrySettings_t* settings);
|
|
|
|
//! Decode the Servo_TelemetryConfig packet to parameters
|
|
int decodeServo_TelemetryConfigPacket(const void* pkt, Servo_TelemetrySettings_t* settings, uint8_t* icdVersion);
|
|
|
|
//! return the packet ID for the Servo_TelemetryConfig packet
|
|
#define getServo_TelemetryConfigPacketID() (PKT_SERVO_TELEMETRY_CONFIG)
|
|
|
|
//! return the minimum encoded length for the Servo_TelemetryConfig packet
|
|
#define getServo_TelemetryConfigMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_TelemetryConfig packet
|
|
#define getServo_TelemetryConfigMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Non-volatile settings configuration information
|
|
*/
|
|
typedef struct
|
|
{
|
|
unsigned eeUnlocked : 1; //!< Set if the servo is unlocked and ready to receive settings updates
|
|
unsigned eeVersion : 7; //!< Version of non-volatile settings configuration
|
|
uint16_t eeSize; //!< Size of non-volatile settings data
|
|
uint16_t eeChecksum; //!< NV settings checksum
|
|
uint8_t mramVersion;
|
|
uint16_t mramSize;
|
|
}Servo_SettingsInfo_t;
|
|
|
|
//! Create the Servo_SettingsInfo packet
|
|
void encodeServo_SettingsInfoPacketStructure(void* pkt, const Servo_SettingsInfo_t* user);
|
|
|
|
//! Decode the Servo_SettingsInfo packet
|
|
int decodeServo_SettingsInfoPacketStructure(const void* pkt, Servo_SettingsInfo_t* user);
|
|
|
|
//! Create the Servo_SettingsInfo packet from parameters
|
|
void encodeServo_SettingsInfoPacket(void* pkt, unsigned eeUnlocked, unsigned eeVersion, uint16_t eeSize, uint16_t eeChecksum, uint8_t mramVersion, uint16_t mramSize);
|
|
|
|
//! Decode the Servo_SettingsInfo packet to parameters
|
|
int decodeServo_SettingsInfoPacket(const void* pkt, unsigned* eeUnlocked, unsigned* eeVersion, uint16_t* eeSize, uint16_t* eeChecksum, uint8_t* mramVersion, uint16_t* mramSize);
|
|
|
|
//! return the packet ID for the Servo_SettingsInfo packet
|
|
#define getServo_SettingsInfoPacketID() (PKT_SERVO_SETTINGS_INFO)
|
|
|
|
//! return the minimum encoded length for the Servo_SettingsInfo packet
|
|
#define getServo_SettingsInfoMinDataLength() (8)
|
|
|
|
//! return the maximum encoded length for the Servo_SettingsInfo packet
|
|
#define getServo_SettingsInfoMaxDataLength() (8)
|
|
|
|
/*!
|
|
* Servo telltale data
|
|
*/
|
|
typedef struct
|
|
{
|
|
int8_t minTemperature; //!< Minimum temperature seen by the servo
|
|
int8_t maxTemperature; //!< Maximum temperature seen by the servo
|
|
}Servo_TelltaleA_t;
|
|
|
|
//! Create the Servo_TelltaleA packet from parameters
|
|
void encodeServo_TelltaleAPacket(void* pkt, int8_t minTemperature, int8_t maxTemperature);
|
|
|
|
//! Decode the Servo_TelltaleA packet to parameters
|
|
int decodeServo_TelltaleAPacket(const void* pkt, int8_t* minTemperature, int8_t* maxTemperature);
|
|
|
|
//! return the packet ID for the Servo_TelltaleA packet
|
|
#define getServo_TelltaleAPacketID() (PKT_SERVO_TELLTALE_A)
|
|
|
|
//! return the minimum encoded length for the Servo_TelltaleA packet
|
|
#define getServo_TelltaleAMinDataLength() (2)
|
|
|
|
//! return the maximum encoded length for the Servo_TelltaleA packet
|
|
#define getServo_TelltaleAMaxDataLength() (2)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // _SERVOPACKETS_H
|