RDM
HEAD (unstable)
Implementation of ANSI E1.31 (Streaming ACN)
|
View other versions:
|
Contains type definitions for use with RDM (E1.20) messages. More...
Go to the source code of this file.
Data Structures | |
struct | RdmBuffer |
struct | RdmCommandHeader |
struct | RdmResponseHeader |
Macros | |
#define | RDM_MAX_BYTES 257 |
#define | RDM_MIN_BYTES 26 |
#define | RDM_MAX_PDL 231 |
#define | RDM_HEADER_SIZE 24 |
#define | RDM_NUM_STANDARD_NR_CODES 20 |
#define | RDM_GET_COMMAND_CLASS(rdmbufptr) ((rdmbufptr)->data[RDM_OFFSET_COMMAND_CLASS]) |
Get the command class value from a packed RDM command. More... | |
#define | RDM_GET_TRANSACTION_NUM(rdmbufptr) ((rdmbufptr)->data[RDM_OFFSET_TRANSACTION]) |
Get the RDM transaction number from a packed RDM command. More... | |
#define | RDM_PACKED_SIZE(data_len) (RDM_HEADER_SIZE + (data_len) + 2u) |
Get the packed size in bytes of an RDM message. More... | |
RDM packet offsets | |
#define | RDM_OFFSET_STARTCODE 0 |
#define | RDM_OFFSET_SUBSTART 1 |
#define | RDM_OFFSET_LENGTH 2 |
#define | RDM_OFFSET_DEST_MANUFACTURER 3 |
#define | RDM_OFFSET_DEST_DEVICE 5 |
#define | RDM_OFFSET_SRC_MANUFACTURER 9 |
#define | RDM_OFFSET_SRC_DEVICE 11 |
#define | RDM_OFFSET_TRANSACTION 15 |
#define | RDM_OFFSET_PORTID_RESPTYPE 16 |
#define | RDM_OFFSET_MSGCOUNT 17 |
#define | RDM_OFFSET_SUBDEVICE 18 |
#define | RDM_OFFSET_COMMAND_CLASS 20 |
#define | RDM_OFFSET_PARAM_ID 21 |
#define | RDM_OFFSET_PARAM_DATA_LEN 23 |
#define | RDM_OFFSET_PARAM_DATA 24 |
Typedefs | |
typedef struct RdmBuffer | RdmBuffer |
typedef struct RdmCommandHeader | RdmCommandHeader |
typedef struct RdmResponseHeader | RdmResponseHeader |
Enumerations | |
enum | rdm_command_class_t { kRdmCCDiscoveryCommand = E120_DISCOVERY_COMMAND , kRdmCCDiscoveryCommandResponse = E120_DISCOVERY_COMMAND_RESPONSE , kRdmCCGetCommand = E120_GET_COMMAND , kRdmCCGetCommandResponse = E120_GET_COMMAND_RESPONSE , kRdmCCSetCommand = E120_SET_COMMAND , kRdmCCSetCommandResponse = E120_SET_COMMAND_RESPONSE } |
enum | rdm_response_type_t { kRdmResponseTypeAck = E120_RESPONSE_TYPE_ACK , kRdmResponseTypeAckTimer = E120_RESPONSE_TYPE_ACK_TIMER , kRdmResponseTypeNackReason = E120_RESPONSE_TYPE_NACK_REASON , kRdmResponseTypeAckOverflow = E120_RESPONSE_TYPE_ACK_OVERFLOW } |
enum | rdm_nack_reason_t { kRdmNRUnknownPid = E120_NR_UNKNOWN_PID , kRdmNRFormatError = E120_NR_FORMAT_ERROR , kRdmNRHardwareFault = E120_NR_HARDWARE_FAULT , kRdmNRProxyReject = E120_NR_PROXY_REJECT , kRdmNRWriteProtect = E120_NR_WRITE_PROTECT , kRdmNRUnsupportedCommandClass = E120_NR_UNSUPPORTED_COMMAND_CLASS , kRdmNRDataOutOfRange = E120_NR_DATA_OUT_OF_RANGE , kRdmNRBufferFull = E120_NR_BUFFER_FULL , kRdmNRPacketSizeUnsupported = E120_NR_PACKET_SIZE_UNSUPPORTED , kRdmNRSubDeviceOutOfRange = E120_NR_SUB_DEVICE_OUT_OF_RANGE , kRdmNRProxyBufferFull = E120_NR_PROXY_BUFFER_FULL , kRdmNRActionNotSupported = E137_2_NR_ACTION_NOT_SUPPORTED , kRdmNREndpointNumberInvalid = E137_7_NR_ENDPOINT_NUMBER_INVALID , kRdmNRInvalidEndpointMode = E137_7_NR_INVALID_ENDPOINT_MODE , kRdmNRUnknownUid = E137_7_NR_UNKNOWN_UID , kRdmNRUnknownScope = E133_NR_UNKNOWN_SCOPE , kRdmNRInvalidStaticConfigType = E133_NR_INVALID_STATIC_CONFIG_TYPE , kRdmNRInvalidIpv4Address = E133_NR_INVALID_IPV4_ADDRESS , kRdmNRInvalidIpv6Address = E133_NR_INVALID_IPV6_ADDRESS , kRdmNRInvalidPort = E133_NR_INVALID_PORT } |
Functions | |
void | rdm_pack_checksum (uint8_t *buffer, size_t data_len_without_checksum) |
Calculate and pack an RDM checksum at the end of an RDM message. More... | |
bool | rdm_validate_msg (const RdmBuffer *buffer) |
Perform basic validation of a packed RDM message. More... | |
bool | rdm_command_header_is_valid (const RdmCommandHeader *cmd_header) |
Determine whether the values contained in a command header are valid for an RDM command. More... | |
bool | rdm_response_header_is_valid (const RdmResponseHeader *resp_header) |
Determine whether the values contained in a response header are valid for an RDM response. More... | |
etcpal_error_t | rdm_pack_command (const RdmCommandHeader *cmd_header, const uint8_t *cmd_data, uint8_t cmd_data_len, RdmBuffer *buffer) |
Convert an RDM command header and data to the RDM wire format. More... | |
etcpal_error_t | rdm_pack_command_with_custom_buf (const RdmCommandHeader *cmd_header, const uint8_t *cmd_data, uint8_t cmd_data_len, uint8_t *buf, size_t buf_len) |
Convert an RDM command header and data to the RDM wire format in a user-provided buffer. More... | |
etcpal_error_t | rdm_pack_response (const RdmCommandHeader *cmd_header, uint8_t msg_count, const uint8_t *response_data, uint8_t response_data_len, RdmBuffer *buffer) |
Serialize an RDM ACK response to a previously-received command. More... | |
etcpal_error_t | rdm_pack_overflow_response (const RdmCommandHeader *cmd_header, const uint8_t *response_data, uint8_t response_data_len, RdmBuffer *buffer) |
Serialize an RDM ACK_OVERFLOW response to a previously-received command. More... | |
etcpal_error_t | rdm_pack_nack_response (const RdmCommandHeader *cmd_header, uint8_t msg_count, rdm_nack_reason_t nack_reason, RdmBuffer *buffer) |
Serialize an RDM NACK response to a previously-received command. More... | |
etcpal_error_t | rdm_pack_timer_response (const RdmCommandHeader *cmd_header, uint8_t msg_count, unsigned int delay_time_ms, RdmBuffer *buffer) |
Serialize an RDM ACK_TIMER response to a previously-received command. More... | |
etcpal_error_t | rdm_pack_dub_response (const RdmUid *responder_uid, RdmBuffer *buffer) |
Serialize an RDM DISC_UNIQUE_BRANCH response. More... | |
size_t | rdm_get_num_responses_needed (uint16_t param_id, size_t response_data_len) |
Get the number of RDM responses needed to send the given response data. More... | |
etcpal_error_t | rdm_pack_full_response (const RdmCommandHeader *cmd_header, const uint8_t *response_data, size_t response_data_len, RdmBuffer *buffers, size_t num_buffers) |
Serialize a full RDM ACK response, splitting ACK_OVERFLOW responses if necessary. More... | |
etcpal_error_t | rdm_append_parameter_data (RdmBuffer *buffer, const uint8_t *additional_data, uint8_t additional_data_len) |
Add additional parameter data to an already-serialized RDM command. More... | |
etcpal_error_t | rdm_unpack_command (const RdmBuffer *buffer, RdmCommandHeader *cmd_header, const uint8_t **param_data, uint8_t *param_data_len) |
Deserialize an RDM command from its wire format. More... | |
etcpal_error_t | rdm_unpack_response (const RdmBuffer *buffer, RdmResponseHeader *resp_header, const uint8_t **param_data, uint8_t *param_data_len) |
Deserialize an RDM response from its wire format. More... | |
etcpal_error_t | rdm_unpack_dub_response (const RdmBuffer *buffer, RdmUid *responder_uid) |
Deserialize an RDM DISC_UNIQUE_BRANCH from its wire format. More... | |
unsigned int | rdm_get_ack_timer_delay (const uint8_t *param_data) |
Get the ACK_TIMER delay in milliseconds from an ACK_TIMER message. More... | |
rdm_nack_reason_t | rdm_get_nack_reason_code (const uint8_t *param_data) |
Get the NACK reason code from a NACK_REASON message. More... | |
const char * | rdm_command_class_to_string (rdm_command_class_t command_class) |
Get a string representation of an RDM command class. More... | |
const char * | rdm_response_type_to_string (rdm_response_type_t resp_type) |
Get a string representation of an RDM response type. More... | |
const char * | rdm_nack_reason_to_string (rdm_nack_reason_t reason_code) |
Get a string representation of an RDM NACK reason code. More... | |
Contains type definitions for use with RDM (E1.20) messages.