hydrolink-headers/include/hydrolink/hydrolink_msg_set_cmd.h

37 lines
No EOL
1.6 KiB
C

#pragma once
#include "protocol.h"
#define HYDROLINK_MSG_ID_SET_CMD 2
#define HYDROLINK_MSG_ID_SET_CMD_LEN 6
#define HYDROLINK_MSG_ID_2_LEN 6
#define HYDROLINK_MSG_ID_SET_CMD_CRC_EXTRA 58
typedef struct hydrolink_msg_set_cmd_t_s {
int32_t value; ///
uint8_t index; ///
uint8_t cmd_id; /// Command defined as in CMD_ID enum.
} hydrolink_msg_set_cmd_t;
void hydrolink_set_cmd_msg_encode(uint8_t src_id, uint8_t dst_id, const hydrolink_msg_set_cmd_t *msg, hydrolink_msg_t *packet) {
packet->id = HYDROLINK_MSG_ID_SET_CMD;
packet->src_id = src_id;
packet->dst_id = dst_id;
packet->length = HYDROLINK_MSG_ID_2_LEN + HYDROLINK_NON_PAYLOAD_LEN;
hydrolink_put_int32_t(HYDROLINK_PAYLOAD_NON_CONST(packet), 0, msg->value);
hydrolink_put_uint8_t(HYDROLINK_PAYLOAD_NON_CONST(packet), 4, msg->index);
hydrolink_put_uint8_t(HYDROLINK_PAYLOAD_NON_CONST(packet), 5, msg->cmd_id);
}
static inline int32_t hydrolink_msg_set_cmd_get_value(const hydrolink_msg_t *packet) {
return HYDROLINK_RETURN_int32_t(packet, 0);
}
static inline uint8_t hydrolink_msg_set_cmd_get_index(const hydrolink_msg_t *packet) {
return HYDROLINK_RETURN_uint8_t(packet, 4);
}
static inline uint8_t hydrolink_msg_set_cmd_get_cmd_id(const hydrolink_msg_t *packet) {
return HYDROLINK_RETURN_uint8_t(packet, 5);
}
static inline void hydrolink_msgset_cmd_decode(const hydrolink_msg_t *packet, hydrolink_msg_set_cmd_t *set_cmd) {
set_cmd->value = hydrolink_msg_set_cmd_get_value(packet);
set_cmd->index = hydrolink_msg_set_cmd_get_index(packet);
set_cmd->cmd_id = hydrolink_msg_set_cmd_get_cmd_id(packet);
}