mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-28 02:11:43 +00:00
Refactors retrieving the faults from the device to match the implementation that we have for the Pneumatic Hub. Instead of having a getter function for each fault, there is a single function to get all faults (sticky or normal) for use with the higher level API Renames functions to be consistent Removes some functions that don't need to be included in wpilib: - Identify device - this just flashes the module LED on the device and has no use in wpilib - Is PDH enabled - the PDH does not change state depending on robot enabled state PDH frame and signal names were updated in our DBC, and this PR makes use of the newly generated CAN frame helper functions
2015 lines
51 KiB
C++
2015 lines
51 KiB
C++
/**
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) 2018-2019 Erik Moqvist
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person
|
|
* obtaining a copy of this software and associated documentation
|
|
* files (the "Software"), to deal in the Software without
|
|
* restriction, including without limitation the rights to use, copy,
|
|
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
* of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be
|
|
* included in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*/
|
|
|
|
/**
|
|
* This file was generated by cantools version
|
|
*/
|
|
|
|
#include <string.h>
|
|
|
|
#include "PDHFrames.h"
|
|
|
|
static inline uint8_t pack_left_shift_u8(
|
|
uint8_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint8_t)((uint8_t)(value << shift) & mask);
|
|
}
|
|
|
|
static inline uint8_t pack_left_shift_u16(
|
|
uint16_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint8_t)((uint8_t)(value << shift) & mask);
|
|
}
|
|
|
|
static inline uint8_t pack_left_shift_u32(
|
|
uint32_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint8_t)((uint8_t)(value << shift) & mask);
|
|
}
|
|
|
|
static inline uint8_t pack_right_shift_u16(
|
|
uint16_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint8_t)((uint8_t)(value >> shift) & mask);
|
|
}
|
|
|
|
static inline uint8_t pack_right_shift_u32(
|
|
uint32_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint8_t)((uint8_t)(value >> shift) & mask);
|
|
}
|
|
|
|
static inline uint16_t unpack_left_shift_u16(
|
|
uint8_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint16_t)((uint16_t)(value & mask) << shift);
|
|
}
|
|
|
|
static inline uint32_t unpack_left_shift_u32(
|
|
uint8_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint32_t)((uint32_t)(value & mask) << shift);
|
|
}
|
|
|
|
static inline uint8_t unpack_right_shift_u8(
|
|
uint8_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint8_t)((uint8_t)(value & mask) >> shift);
|
|
}
|
|
|
|
static inline uint16_t unpack_right_shift_u16(
|
|
uint8_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint16_t)((uint16_t)(value & mask) >> shift);
|
|
}
|
|
|
|
static inline uint32_t unpack_right_shift_u32(
|
|
uint8_t value,
|
|
uint8_t shift,
|
|
uint8_t mask)
|
|
{
|
|
return (uint32_t)((uint32_t)(value & mask) >> shift);
|
|
}
|
|
|
|
int PDH_set_switch_channel_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_set_switch_channel_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 1u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 1);
|
|
|
|
dst_p[0] |= pack_left_shift_u8(src_p->output_set_value, 0u, 0x01u);
|
|
|
|
return (1);
|
|
}
|
|
|
|
int PDH_set_switch_channel_unpack(
|
|
struct PDH_set_switch_channel_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 1u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->output_set_value = unpack_right_shift_u8(src_p[0], 0u, 0x01u);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint8_t PDH_set_switch_channel_output_set_value_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_set_switch_channel_output_set_value_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_set_switch_channel_output_set_value_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
int PDH_status_0_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_status_0_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 8);
|
|
|
|
dst_p[0] |= pack_left_shift_u16(src_p->channel_0_current, 0u, 0xffu);
|
|
dst_p[1] |= pack_right_shift_u16(src_p->channel_0_current, 8u, 0x03u);
|
|
dst_p[1] |= pack_left_shift_u16(src_p->channel_1_current, 2u, 0xfcu);
|
|
dst_p[2] |= pack_right_shift_u16(src_p->channel_1_current, 6u, 0x0fu);
|
|
dst_p[2] |= pack_left_shift_u16(src_p->channel_2_current, 4u, 0xf0u);
|
|
dst_p[3] |= pack_right_shift_u16(src_p->channel_2_current, 4u, 0x3fu);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_0_breaker_fault, 6u, 0x40u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_1_breaker_fault, 7u, 0x80u);
|
|
dst_p[4] |= pack_left_shift_u16(src_p->channel_3_current, 0u, 0xffu);
|
|
dst_p[5] |= pack_right_shift_u16(src_p->channel_3_current, 8u, 0x03u);
|
|
dst_p[5] |= pack_left_shift_u16(src_p->channel_4_current, 2u, 0xfcu);
|
|
dst_p[6] |= pack_right_shift_u16(src_p->channel_4_current, 6u, 0x0fu);
|
|
dst_p[6] |= pack_left_shift_u16(src_p->channel_5_current, 4u, 0xf0u);
|
|
dst_p[7] |= pack_right_shift_u16(src_p->channel_5_current, 4u, 0x3fu);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_2_breaker_fault, 6u, 0x40u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_3_breaker_fault, 7u, 0x80u);
|
|
|
|
return (8);
|
|
}
|
|
|
|
int PDH_status_0_unpack(
|
|
struct PDH_status_0_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->channel_0_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu);
|
|
dst_p->channel_0_current |= unpack_left_shift_u16(src_p[1], 8u, 0x03u);
|
|
dst_p->channel_1_current = unpack_right_shift_u16(src_p[1], 2u, 0xfcu);
|
|
dst_p->channel_1_current |= unpack_left_shift_u16(src_p[2], 6u, 0x0fu);
|
|
dst_p->channel_2_current = unpack_right_shift_u16(src_p[2], 4u, 0xf0u);
|
|
dst_p->channel_2_current |= unpack_left_shift_u16(src_p[3], 4u, 0x3fu);
|
|
dst_p->channel_0_breaker_fault = unpack_right_shift_u8(src_p[3], 6u, 0x40u);
|
|
dst_p->channel_1_breaker_fault = unpack_right_shift_u8(src_p[3], 7u, 0x80u);
|
|
dst_p->channel_3_current = unpack_right_shift_u16(src_p[4], 0u, 0xffu);
|
|
dst_p->channel_3_current |= unpack_left_shift_u16(src_p[5], 8u, 0x03u);
|
|
dst_p->channel_4_current = unpack_right_shift_u16(src_p[5], 2u, 0xfcu);
|
|
dst_p->channel_4_current |= unpack_left_shift_u16(src_p[6], 6u, 0x0fu);
|
|
dst_p->channel_5_current = unpack_right_shift_u16(src_p[6], 4u, 0xf0u);
|
|
dst_p->channel_5_current |= unpack_left_shift_u16(src_p[7], 4u, 0x3fu);
|
|
dst_p->channel_2_breaker_fault = unpack_right_shift_u8(src_p[7], 6u, 0x40u);
|
|
dst_p->channel_3_breaker_fault = unpack_right_shift_u8(src_p[7], 7u, 0x80u);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint16_t PDH_status_0_channel_0_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_0_channel_0_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_0_channel_0_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_0_channel_1_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_0_channel_1_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_0_channel_1_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_0_channel_2_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_0_channel_2_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_0_channel_2_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_0_channel_0_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_0_channel_0_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_0_channel_0_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_0_channel_1_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_0_channel_1_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_0_channel_1_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint16_t PDH_status_0_channel_3_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_0_channel_3_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_0_channel_3_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_0_channel_4_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_0_channel_4_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_0_channel_4_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_0_channel_5_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_0_channel_5_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_0_channel_5_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_0_channel_2_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_0_channel_2_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_0_channel_2_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_0_channel_3_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_0_channel_3_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_0_channel_3_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
int PDH_status_1_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_status_1_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 8);
|
|
|
|
dst_p[0] |= pack_left_shift_u16(src_p->channel_6_current, 0u, 0xffu);
|
|
dst_p[1] |= pack_right_shift_u16(src_p->channel_6_current, 8u, 0x03u);
|
|
dst_p[1] |= pack_left_shift_u16(src_p->channel_7_current, 2u, 0xfcu);
|
|
dst_p[2] |= pack_right_shift_u16(src_p->channel_7_current, 6u, 0x0fu);
|
|
dst_p[2] |= pack_left_shift_u16(src_p->channel_8_current, 4u, 0xf0u);
|
|
dst_p[3] |= pack_right_shift_u16(src_p->channel_8_current, 4u, 0x3fu);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_4_breaker_fault, 6u, 0x40u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_5_breaker_fault, 7u, 0x80u);
|
|
dst_p[4] |= pack_left_shift_u16(src_p->channel_9_current, 0u, 0xffu);
|
|
dst_p[5] |= pack_right_shift_u16(src_p->channel_9_current, 8u, 0x03u);
|
|
dst_p[5] |= pack_left_shift_u16(src_p->channel_10_current, 2u, 0xfcu);
|
|
dst_p[6] |= pack_right_shift_u16(src_p->channel_10_current, 6u, 0x0fu);
|
|
dst_p[6] |= pack_left_shift_u16(src_p->channel_11_current, 4u, 0xf0u);
|
|
dst_p[7] |= pack_right_shift_u16(src_p->channel_11_current, 4u, 0x3fu);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_6_breaker_fault, 6u, 0x40u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_7_breaker_fault, 7u, 0x80u);
|
|
|
|
return (8);
|
|
}
|
|
|
|
int PDH_status_1_unpack(
|
|
struct PDH_status_1_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->channel_6_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu);
|
|
dst_p->channel_6_current |= unpack_left_shift_u16(src_p[1], 8u, 0x03u);
|
|
dst_p->channel_7_current = unpack_right_shift_u16(src_p[1], 2u, 0xfcu);
|
|
dst_p->channel_7_current |= unpack_left_shift_u16(src_p[2], 6u, 0x0fu);
|
|
dst_p->channel_8_current = unpack_right_shift_u16(src_p[2], 4u, 0xf0u);
|
|
dst_p->channel_8_current |= unpack_left_shift_u16(src_p[3], 4u, 0x3fu);
|
|
dst_p->channel_4_breaker_fault = unpack_right_shift_u8(src_p[3], 6u, 0x40u);
|
|
dst_p->channel_5_breaker_fault = unpack_right_shift_u8(src_p[3], 7u, 0x80u);
|
|
dst_p->channel_9_current = unpack_right_shift_u16(src_p[4], 0u, 0xffu);
|
|
dst_p->channel_9_current |= unpack_left_shift_u16(src_p[5], 8u, 0x03u);
|
|
dst_p->channel_10_current = unpack_right_shift_u16(src_p[5], 2u, 0xfcu);
|
|
dst_p->channel_10_current |= unpack_left_shift_u16(src_p[6], 6u, 0x0fu);
|
|
dst_p->channel_11_current = unpack_right_shift_u16(src_p[6], 4u, 0xf0u);
|
|
dst_p->channel_11_current |= unpack_left_shift_u16(src_p[7], 4u, 0x3fu);
|
|
dst_p->channel_6_breaker_fault = unpack_right_shift_u8(src_p[7], 6u, 0x40u);
|
|
dst_p->channel_7_breaker_fault = unpack_right_shift_u8(src_p[7], 7u, 0x80u);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint16_t PDH_status_1_channel_6_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_1_channel_6_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_1_channel_6_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_1_channel_7_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_1_channel_7_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_1_channel_7_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_1_channel_8_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_1_channel_8_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_1_channel_8_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_1_channel_4_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_1_channel_4_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_1_channel_4_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_1_channel_5_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_1_channel_5_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_1_channel_5_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint16_t PDH_status_1_channel_9_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_1_channel_9_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_1_channel_9_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_1_channel_10_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_1_channel_10_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_1_channel_10_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_1_channel_11_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_1_channel_11_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_1_channel_11_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_1_channel_6_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_1_channel_6_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_1_channel_6_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_1_channel_7_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_1_channel_7_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_1_channel_7_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
int PDH_status_2_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_status_2_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 8);
|
|
|
|
dst_p[0] |= pack_left_shift_u16(src_p->channel_12_current, 0u, 0xffu);
|
|
dst_p[1] |= pack_right_shift_u16(src_p->channel_12_current, 8u, 0x03u);
|
|
dst_p[1] |= pack_left_shift_u16(src_p->channel_13_current, 2u, 0xfcu);
|
|
dst_p[2] |= pack_right_shift_u16(src_p->channel_13_current, 6u, 0x0fu);
|
|
dst_p[2] |= pack_left_shift_u16(src_p->channel_14_current, 4u, 0xf0u);
|
|
dst_p[3] |= pack_right_shift_u16(src_p->channel_14_current, 4u, 0x3fu);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_8_breaker_fault, 6u, 0x40u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_9_breaker_fault, 7u, 0x80u);
|
|
dst_p[4] |= pack_left_shift_u16(src_p->channel_15_current, 0u, 0xffu);
|
|
dst_p[5] |= pack_right_shift_u16(src_p->channel_15_current, 8u, 0x03u);
|
|
dst_p[5] |= pack_left_shift_u16(src_p->channel_16_current, 2u, 0xfcu);
|
|
dst_p[6] |= pack_right_shift_u16(src_p->channel_16_current, 6u, 0x0fu);
|
|
dst_p[6] |= pack_left_shift_u16(src_p->channel_17_current, 4u, 0xf0u);
|
|
dst_p[7] |= pack_right_shift_u16(src_p->channel_17_current, 4u, 0x3fu);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_10_breaker_fault, 6u, 0x40u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_11_breaker_fault, 7u, 0x80u);
|
|
|
|
return (8);
|
|
}
|
|
|
|
int PDH_status_2_unpack(
|
|
struct PDH_status_2_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->channel_12_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu);
|
|
dst_p->channel_12_current |= unpack_left_shift_u16(src_p[1], 8u, 0x03u);
|
|
dst_p->channel_13_current = unpack_right_shift_u16(src_p[1], 2u, 0xfcu);
|
|
dst_p->channel_13_current |= unpack_left_shift_u16(src_p[2], 6u, 0x0fu);
|
|
dst_p->channel_14_current = unpack_right_shift_u16(src_p[2], 4u, 0xf0u);
|
|
dst_p->channel_14_current |= unpack_left_shift_u16(src_p[3], 4u, 0x3fu);
|
|
dst_p->channel_8_breaker_fault = unpack_right_shift_u8(src_p[3], 6u, 0x40u);
|
|
dst_p->channel_9_breaker_fault = unpack_right_shift_u8(src_p[3], 7u, 0x80u);
|
|
dst_p->channel_15_current = unpack_right_shift_u16(src_p[4], 0u, 0xffu);
|
|
dst_p->channel_15_current |= unpack_left_shift_u16(src_p[5], 8u, 0x03u);
|
|
dst_p->channel_16_current = unpack_right_shift_u16(src_p[5], 2u, 0xfcu);
|
|
dst_p->channel_16_current |= unpack_left_shift_u16(src_p[6], 6u, 0x0fu);
|
|
dst_p->channel_17_current = unpack_right_shift_u16(src_p[6], 4u, 0xf0u);
|
|
dst_p->channel_17_current |= unpack_left_shift_u16(src_p[7], 4u, 0x3fu);
|
|
dst_p->channel_10_breaker_fault = unpack_right_shift_u8(src_p[7], 6u, 0x40u);
|
|
dst_p->channel_11_breaker_fault = unpack_right_shift_u8(src_p[7], 7u, 0x80u);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint16_t PDH_status_2_channel_12_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_2_channel_12_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_2_channel_12_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_2_channel_13_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_2_channel_13_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_2_channel_13_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_2_channel_14_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_2_channel_14_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_2_channel_14_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_2_channel_8_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_2_channel_8_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_2_channel_8_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_2_channel_9_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_2_channel_9_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_2_channel_9_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint16_t PDH_status_2_channel_15_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_2_channel_15_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_2_channel_15_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_2_channel_16_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_2_channel_16_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_2_channel_16_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_2_channel_17_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_2_channel_17_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_2_channel_17_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_2_channel_10_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_2_channel_10_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_2_channel_10_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_2_channel_11_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_2_channel_11_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_2_channel_11_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
int PDH_status_3_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_status_3_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 8);
|
|
|
|
dst_p[0] |= pack_left_shift_u16(src_p->channel_18_current, 0u, 0xffu);
|
|
dst_p[1] |= pack_right_shift_u16(src_p->channel_18_current, 8u, 0x03u);
|
|
dst_p[1] |= pack_left_shift_u16(src_p->channel_19_current, 2u, 0xfcu);
|
|
dst_p[2] |= pack_right_shift_u16(src_p->channel_19_current, 6u, 0x0fu);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->channel_12_breaker_fault, 4u, 0x10u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->channel_13_breaker_fault, 5u, 0x20u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->channel_14_breaker_fault, 6u, 0x40u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->channel_15_breaker_fault, 7u, 0x80u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->channel_20_current, 0u, 0xffu);
|
|
dst_p[4] |= pack_left_shift_u8(src_p->channel_21_current, 0u, 0xffu);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->channel_22_current, 0u, 0xffu);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->channel_23_current, 0u, 0xffu);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_16_breaker_fault, 0u, 0x01u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_17_breaker_fault, 1u, 0x02u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_18_breaker_fault, 2u, 0x04u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_19_breaker_fault, 3u, 0x08u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_20_breaker_fault, 4u, 0x10u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_21_breaker_fault, 5u, 0x20u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_22_breaker_fault, 6u, 0x40u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->channel_23_breaker_fault, 7u, 0x80u);
|
|
|
|
return (8);
|
|
}
|
|
|
|
int PDH_status_3_unpack(
|
|
struct PDH_status_3_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->channel_18_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu);
|
|
dst_p->channel_18_current |= unpack_left_shift_u16(src_p[1], 8u, 0x03u);
|
|
dst_p->channel_19_current = unpack_right_shift_u16(src_p[1], 2u, 0xfcu);
|
|
dst_p->channel_19_current |= unpack_left_shift_u16(src_p[2], 6u, 0x0fu);
|
|
dst_p->channel_12_breaker_fault = unpack_right_shift_u8(src_p[2], 4u, 0x10u);
|
|
dst_p->channel_13_breaker_fault = unpack_right_shift_u8(src_p[2], 5u, 0x20u);
|
|
dst_p->channel_14_breaker_fault = unpack_right_shift_u8(src_p[2], 6u, 0x40u);
|
|
dst_p->channel_15_breaker_fault = unpack_right_shift_u8(src_p[2], 7u, 0x80u);
|
|
dst_p->channel_20_current = unpack_right_shift_u8(src_p[3], 0u, 0xffu);
|
|
dst_p->channel_21_current = unpack_right_shift_u8(src_p[4], 0u, 0xffu);
|
|
dst_p->channel_22_current = unpack_right_shift_u8(src_p[5], 0u, 0xffu);
|
|
dst_p->channel_23_current = unpack_right_shift_u8(src_p[6], 0u, 0xffu);
|
|
dst_p->channel_16_breaker_fault = unpack_right_shift_u8(src_p[7], 0u, 0x01u);
|
|
dst_p->channel_17_breaker_fault = unpack_right_shift_u8(src_p[7], 1u, 0x02u);
|
|
dst_p->channel_18_breaker_fault = unpack_right_shift_u8(src_p[7], 2u, 0x04u);
|
|
dst_p->channel_19_breaker_fault = unpack_right_shift_u8(src_p[7], 3u, 0x08u);
|
|
dst_p->channel_20_breaker_fault = unpack_right_shift_u8(src_p[7], 4u, 0x10u);
|
|
dst_p->channel_21_breaker_fault = unpack_right_shift_u8(src_p[7], 5u, 0x20u);
|
|
dst_p->channel_22_breaker_fault = unpack_right_shift_u8(src_p[7], 6u, 0x40u);
|
|
dst_p->channel_23_breaker_fault = unpack_right_shift_u8(src_p[7], 7u, 0x80u);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint16_t PDH_status_3_channel_18_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_3_channel_18_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_3_channel_18_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint16_t PDH_status_3_channel_19_current_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.125);
|
|
}
|
|
|
|
double PDH_status_3_channel_19_current_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.125);
|
|
}
|
|
|
|
bool PDH_status_3_channel_19_current_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 1023u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_12_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_12_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_12_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_13_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_13_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_13_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_14_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_14_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_14_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_15_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_15_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_15_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_20_current_encode(double value)
|
|
{
|
|
return (uint8_t)(value / 0.0625);
|
|
}
|
|
|
|
double PDH_status_3_channel_20_current_decode(uint8_t value)
|
|
{
|
|
return ((double)value * 0.0625);
|
|
}
|
|
|
|
bool PDH_status_3_channel_20_current_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_21_current_encode(double value)
|
|
{
|
|
return (uint8_t)(value / 0.0625);
|
|
}
|
|
|
|
double PDH_status_3_channel_21_current_decode(uint8_t value)
|
|
{
|
|
return ((double)value * 0.0625);
|
|
}
|
|
|
|
bool PDH_status_3_channel_21_current_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_22_current_encode(double value)
|
|
{
|
|
return (uint8_t)(value / 0.0625);
|
|
}
|
|
|
|
double PDH_status_3_channel_22_current_decode(uint8_t value)
|
|
{
|
|
return ((double)value * 0.0625);
|
|
}
|
|
|
|
bool PDH_status_3_channel_22_current_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_23_current_encode(double value)
|
|
{
|
|
return (uint8_t)(value / 0.0625);
|
|
}
|
|
|
|
double PDH_status_3_channel_23_current_decode(uint8_t value)
|
|
{
|
|
return ((double)value * 0.0625);
|
|
}
|
|
|
|
bool PDH_status_3_channel_23_current_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_16_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_16_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_16_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_17_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_17_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_17_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_18_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_18_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_18_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_19_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_19_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_19_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_20_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_20_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_20_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_21_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_21_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_21_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_22_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_22_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_22_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_3_channel_23_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_3_channel_23_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_3_channel_23_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
int PDH_status_4_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_status_4_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 8);
|
|
|
|
dst_p[0] |= pack_left_shift_u16(src_p->v_bus, 0u, 0xffu);
|
|
dst_p[1] |= pack_right_shift_u16(src_p->v_bus, 8u, 0x0fu);
|
|
dst_p[1] |= pack_left_shift_u8(src_p->system_enable, 4u, 0x10u);
|
|
dst_p[1] |= pack_left_shift_u8(src_p->rsvd0, 5u, 0xe0u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->brownout_fault, 0u, 0x01u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->rsvd1, 1u, 0x02u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->can_warning_fault, 2u, 0x04u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->hardware_fault, 3u, 0x08u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->switch_channel_state, 4u, 0x10u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->sticky_brownout_fault, 5u, 0x20u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->rsvd2, 6u, 0x40u);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->sticky_can_warning_fault, 7u, 0x80u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_can_bus_off_fault, 0u, 0x01u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_hardware_fault, 1u, 0x02u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_firmware_fault, 2u, 0x04u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_ch20_breaker_fault, 3u, 0x08u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_ch21_breaker_fault, 4u, 0x10u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_ch22_breaker_fault, 5u, 0x20u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_ch23_breaker_fault, 6u, 0x40u);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->sticky_has_reset_fault, 7u, 0x80u);
|
|
dst_p[4] |= pack_left_shift_u8(src_p->total_current, 0u, 0xffu);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch0_breaker_fault, 0u, 0x01u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch1_breaker_fault, 1u, 0x02u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch2_breaker_fault, 2u, 0x04u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch3_breaker_fault, 3u, 0x08u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch4_breaker_fault, 4u, 0x10u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch5_breaker_fault, 5u, 0x20u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch6_breaker_fault, 6u, 0x40u);
|
|
dst_p[5] |= pack_left_shift_u8(src_p->sticky_ch7_breaker_fault, 7u, 0x80u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch8_breaker_fault, 0u, 0x01u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch9_breaker_fault, 1u, 0x02u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch10_breaker_fault, 2u, 0x04u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch11_breaker_fault, 3u, 0x08u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch12_breaker_fault, 4u, 0x10u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch13_breaker_fault, 5u, 0x20u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch14_breaker_fault, 6u, 0x40u);
|
|
dst_p[6] |= pack_left_shift_u8(src_p->sticky_ch15_breaker_fault, 7u, 0x80u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->sticky_ch16_breaker_fault, 0u, 0x01u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->sticky_ch17_breaker_fault, 1u, 0x02u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->sticky_ch18_breaker_fault, 2u, 0x04u);
|
|
dst_p[7] |= pack_left_shift_u8(src_p->sticky_ch19_breaker_fault, 3u, 0x08u);
|
|
|
|
return (8);
|
|
}
|
|
|
|
int PDH_status_4_unpack(
|
|
struct PDH_status_4_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->v_bus = unpack_right_shift_u16(src_p[0], 0u, 0xffu);
|
|
dst_p->v_bus |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu);
|
|
dst_p->system_enable = unpack_right_shift_u8(src_p[1], 4u, 0x10u);
|
|
dst_p->rsvd0 = unpack_right_shift_u8(src_p[1], 5u, 0xe0u);
|
|
dst_p->brownout_fault = unpack_right_shift_u8(src_p[2], 0u, 0x01u);
|
|
dst_p->rsvd1 = unpack_right_shift_u8(src_p[2], 1u, 0x02u);
|
|
dst_p->can_warning_fault = unpack_right_shift_u8(src_p[2], 2u, 0x04u);
|
|
dst_p->hardware_fault = unpack_right_shift_u8(src_p[2], 3u, 0x08u);
|
|
dst_p->switch_channel_state = unpack_right_shift_u8(src_p[2], 4u, 0x10u);
|
|
dst_p->sticky_brownout_fault = unpack_right_shift_u8(src_p[2], 5u, 0x20u);
|
|
dst_p->rsvd2 = unpack_right_shift_u8(src_p[2], 6u, 0x40u);
|
|
dst_p->sticky_can_warning_fault = unpack_right_shift_u8(src_p[2], 7u, 0x80u);
|
|
dst_p->sticky_can_bus_off_fault = unpack_right_shift_u8(src_p[3], 0u, 0x01u);
|
|
dst_p->sticky_hardware_fault = unpack_right_shift_u8(src_p[3], 1u, 0x02u);
|
|
dst_p->sticky_firmware_fault = unpack_right_shift_u8(src_p[3], 2u, 0x04u);
|
|
dst_p->sticky_ch20_breaker_fault = unpack_right_shift_u8(src_p[3], 3u, 0x08u);
|
|
dst_p->sticky_ch21_breaker_fault = unpack_right_shift_u8(src_p[3], 4u, 0x10u);
|
|
dst_p->sticky_ch22_breaker_fault = unpack_right_shift_u8(src_p[3], 5u, 0x20u);
|
|
dst_p->sticky_ch23_breaker_fault = unpack_right_shift_u8(src_p[3], 6u, 0x40u);
|
|
dst_p->sticky_has_reset_fault = unpack_right_shift_u8(src_p[3], 7u, 0x80u);
|
|
dst_p->total_current = unpack_right_shift_u8(src_p[4], 0u, 0xffu);
|
|
dst_p->sticky_ch0_breaker_fault = unpack_right_shift_u8(src_p[5], 0u, 0x01u);
|
|
dst_p->sticky_ch1_breaker_fault = unpack_right_shift_u8(src_p[5], 1u, 0x02u);
|
|
dst_p->sticky_ch2_breaker_fault = unpack_right_shift_u8(src_p[5], 2u, 0x04u);
|
|
dst_p->sticky_ch3_breaker_fault = unpack_right_shift_u8(src_p[5], 3u, 0x08u);
|
|
dst_p->sticky_ch4_breaker_fault = unpack_right_shift_u8(src_p[5], 4u, 0x10u);
|
|
dst_p->sticky_ch5_breaker_fault = unpack_right_shift_u8(src_p[5], 5u, 0x20u);
|
|
dst_p->sticky_ch6_breaker_fault = unpack_right_shift_u8(src_p[5], 6u, 0x40u);
|
|
dst_p->sticky_ch7_breaker_fault = unpack_right_shift_u8(src_p[5], 7u, 0x80u);
|
|
dst_p->sticky_ch8_breaker_fault = unpack_right_shift_u8(src_p[6], 0u, 0x01u);
|
|
dst_p->sticky_ch9_breaker_fault = unpack_right_shift_u8(src_p[6], 1u, 0x02u);
|
|
dst_p->sticky_ch10_breaker_fault = unpack_right_shift_u8(src_p[6], 2u, 0x04u);
|
|
dst_p->sticky_ch11_breaker_fault = unpack_right_shift_u8(src_p[6], 3u, 0x08u);
|
|
dst_p->sticky_ch12_breaker_fault = unpack_right_shift_u8(src_p[6], 4u, 0x10u);
|
|
dst_p->sticky_ch13_breaker_fault = unpack_right_shift_u8(src_p[6], 5u, 0x20u);
|
|
dst_p->sticky_ch14_breaker_fault = unpack_right_shift_u8(src_p[6], 6u, 0x40u);
|
|
dst_p->sticky_ch15_breaker_fault = unpack_right_shift_u8(src_p[6], 7u, 0x80u);
|
|
dst_p->sticky_ch16_breaker_fault = unpack_right_shift_u8(src_p[7], 0u, 0x01u);
|
|
dst_p->sticky_ch17_breaker_fault = unpack_right_shift_u8(src_p[7], 1u, 0x02u);
|
|
dst_p->sticky_ch18_breaker_fault = unpack_right_shift_u8(src_p[7], 2u, 0x04u);
|
|
dst_p->sticky_ch19_breaker_fault = unpack_right_shift_u8(src_p[7], 3u, 0x08u);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint16_t PDH_status_4_v_bus_encode(double value)
|
|
{
|
|
return (uint16_t)(value / 0.0078125);
|
|
}
|
|
|
|
double PDH_status_4_v_bus_decode(uint16_t value)
|
|
{
|
|
return ((double)value * 0.0078125);
|
|
}
|
|
|
|
bool PDH_status_4_v_bus_is_in_range(uint16_t value)
|
|
{
|
|
return (value <= 4095u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_system_enable_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_system_enable_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_system_enable_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_rsvd0_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_rsvd0_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_rsvd0_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 7u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_brownout_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_brownout_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_brownout_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_rsvd1_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_rsvd1_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_rsvd1_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_can_warning_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_can_warning_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_can_warning_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_hardware_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_hardware_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_hardware_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_switch_channel_state_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_switch_channel_state_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_switch_channel_state_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_brownout_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_brownout_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_brownout_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_rsvd2_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_rsvd2_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_rsvd2_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_can_warning_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_can_warning_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_can_warning_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_can_bus_off_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_can_bus_off_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_can_bus_off_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_hardware_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_hardware_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_hardware_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_firmware_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_firmware_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_firmware_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch20_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch20_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch20_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch21_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch21_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch21_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch22_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch22_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch22_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch23_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch23_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch23_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_has_reset_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_has_reset_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_has_reset_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_total_current_encode(double value)
|
|
{
|
|
return (uint8_t)(value / 2.0);
|
|
}
|
|
|
|
double PDH_status_4_total_current_decode(uint8_t value)
|
|
{
|
|
return ((double)value * 2.0);
|
|
}
|
|
|
|
bool PDH_status_4_total_current_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch0_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch0_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch0_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch1_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch1_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch1_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch2_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch2_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch2_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch3_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch3_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch3_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch4_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch4_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch4_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch5_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch5_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch5_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch6_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch6_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch6_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch7_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch7_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch7_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch8_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch8_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch8_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch9_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch9_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch9_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch10_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch10_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch10_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch11_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch11_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch11_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch12_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch12_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch12_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch13_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch13_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch13_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch14_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch14_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch14_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch15_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch15_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch15_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch16_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch16_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch16_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch17_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch17_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch17_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch18_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch18_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch18_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
uint8_t PDH_status_4_sticky_ch19_breaker_fault_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_status_4_sticky_ch19_breaker_fault_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_status_4_sticky_ch19_breaker_fault_is_in_range(uint8_t value)
|
|
{
|
|
return (value <= 1u);
|
|
}
|
|
|
|
int PDH_clear_faults_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_clear_faults_t *src_p,
|
|
size_t size)
|
|
{
|
|
(void)dst_p;
|
|
(void)src_p;
|
|
(void)size;
|
|
|
|
return (0);
|
|
}
|
|
|
|
int PDH_clear_faults_unpack(
|
|
struct PDH_clear_faults_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
(void)dst_p;
|
|
(void)src_p;
|
|
(void)size;
|
|
|
|
return (0);
|
|
}
|
|
|
|
int PDH_version_pack(
|
|
uint8_t *dst_p,
|
|
const struct PDH_version_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
memset(&dst_p[0], 0, 8);
|
|
|
|
dst_p[0] |= pack_left_shift_u8(src_p->firmware_fix, 0u, 0xffu);
|
|
dst_p[1] |= pack_left_shift_u8(src_p->firmware_minor, 0u, 0xffu);
|
|
dst_p[2] |= pack_left_shift_u8(src_p->firmware_year, 0u, 0xffu);
|
|
dst_p[3] |= pack_left_shift_u8(src_p->hardware_minor, 0u, 0xffu);
|
|
dst_p[4] |= pack_left_shift_u8(src_p->hardware_major, 0u, 0xffu);
|
|
dst_p[5] |= pack_left_shift_u32(src_p->unique_id, 0u, 0xffu);
|
|
dst_p[6] |= pack_right_shift_u32(src_p->unique_id, 8u, 0xffu);
|
|
dst_p[7] |= pack_right_shift_u32(src_p->unique_id, 16u, 0xffu);
|
|
|
|
return (8);
|
|
}
|
|
|
|
int PDH_version_unpack(
|
|
struct PDH_version_t *dst_p,
|
|
const uint8_t *src_p,
|
|
size_t size)
|
|
{
|
|
if (size < 8u) {
|
|
return (-EINVAL);
|
|
}
|
|
|
|
dst_p->firmware_fix = unpack_right_shift_u8(src_p[0], 0u, 0xffu);
|
|
dst_p->firmware_minor = unpack_right_shift_u8(src_p[1], 0u, 0xffu);
|
|
dst_p->firmware_year = unpack_right_shift_u8(src_p[2], 0u, 0xffu);
|
|
dst_p->hardware_minor = unpack_right_shift_u8(src_p[3], 0u, 0xffu);
|
|
dst_p->hardware_major = unpack_right_shift_u8(src_p[4], 0u, 0xffu);
|
|
dst_p->unique_id = unpack_right_shift_u32(src_p[5], 0u, 0xffu);
|
|
dst_p->unique_id |= unpack_left_shift_u32(src_p[6], 8u, 0xffu);
|
|
dst_p->unique_id |= unpack_left_shift_u32(src_p[7], 16u, 0xffu);
|
|
|
|
return (0);
|
|
}
|
|
|
|
uint8_t PDH_version_firmware_fix_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_version_firmware_fix_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_version_firmware_fix_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_version_firmware_minor_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_version_firmware_minor_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_version_firmware_minor_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_version_firmware_year_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_version_firmware_year_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_version_firmware_year_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_version_hardware_minor_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_version_hardware_minor_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_version_hardware_minor_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint8_t PDH_version_hardware_major_encode(double value)
|
|
{
|
|
return (uint8_t)(value);
|
|
}
|
|
|
|
double PDH_version_hardware_major_decode(uint8_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_version_hardware_major_is_in_range(uint8_t value)
|
|
{
|
|
(void)value;
|
|
|
|
return (true);
|
|
}
|
|
|
|
uint32_t PDH_version_unique_id_encode(double value)
|
|
{
|
|
return (uint32_t)(value);
|
|
}
|
|
|
|
double PDH_version_unique_id_decode(uint32_t value)
|
|
{
|
|
return ((double)value);
|
|
}
|
|
|
|
bool PDH_version_unique_id_is_in_range(uint32_t value)
|
|
{
|
|
return (value <= 16777215u);
|
|
}
|