25 #ifndef RDMNET_CONTROLLER_H_
26 #define RDMNET_CONTROLLER_H_
29 #include "etcpal/uuid.h"
30 #include "etcpal/inet.h"
56 #define RDMNET_CONTROLLER_INVALID -1
261 #define RDMNET_CONTROLLER_RDM_DATA_DEFAULT_INIT \
263 0, 0, NULL, NULL, NULL, NULL, E120_PRODUCT_CATEGORY_CONTROL_CONTROLLER, false \
327 #define RDMNET_CONTROLLER_CONFIG_DEFAULT_INIT(manu_id) \
329 {{0}}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL}, \
330 RDMNET_CONTROLLER_RDM_DATA_DEFAULT_INIT, {(0x8000 | manu_id), 0}, NULL, false \
346 uint8_t* response_buf,
370 const char* new_search_domain,
406 const uint8_t* response_data,
407 size_t response_data_len);
411 rdm_nack_reason_t nack_reason);
421 const uint8_t* response_data,
422 uint8_t response_data_len);
425 rdm_nack_reason_t nack_reason);
API definitions used by RDMnet clients (controllers and devices)
rdmnet_disconnect_reason_t
Definition: common.h:85
rdmnet_command_class_t
An RDM command class, for RDMnet purposes.
Definition: common.h:371
client_list_action_t
Definition: client.h:50
int rdmnet_client_scope_t
Definition: client.h:41
void(* RdmnetControllerConnectFailedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetClientConnectFailedInfo *info, void *context)
A connection attempt failed between a controller and a broker.
Definition: controller.h:77
void(* RdmnetControllerClientListUpdateReceivedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, client_list_action_t list_action, const RdmnetRptClientList *client_list, void *context)
A client list update has been received from a broker.
Definition: controller.h:103
struct RdmnetControllerRdmCmdHandler RdmnetControllerRdmCmdHandler
etcpal_error_t rdmnet_controller_change_scope(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetScopeConfig *new_scope_config, rdmnet_disconnect_reason_t disconnect_reason)
Change the configuration of a scope on a controller.
Definition: controller.c:436
etcpal_error_t rdmnet_controller_create(const RdmnetControllerConfig *config, rdmnet_controller_t *handle)
Create a new instance of RDMnet controller functionality.
Definition: controller.c:255
void(* RdmnetControllerDisconnectedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetClientDisconnectedInfo *info, void *context)
A controller which was previously connected to a broker has disconnected.
Definition: controller.h:89
etcpal_error_t rdmnet_controller_send_llrp_ack(rdmnet_controller_t controller_handle, const LlrpSavedRdmCommand *received_cmd, const uint8_t *response_data, uint8_t response_data_len)
Send an LLRP RDM ACK response from a controller.
Definition: controller.c:869
etcpal_error_t rdmnet_controller_send_rdm_ack(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetSavedRdmCommand *received_cmd, const uint8_t *response_data, size_t response_data_len)
Send an RDM ACK response from a controller on a scope.
Definition: controller.c:756
etcpal_error_t rdmnet_controller_send_rdm_update(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, uint16_t subdevice, uint16_t param_id, const uint8_t *data, size_t data_len)
Send an asynchronous RDM GET response to update the value of a local parameter.
Definition: controller.c:836
etcpal_error_t rdmnet_controller_add_scope(rdmnet_controller_t controller_handle, const RdmnetScopeConfig *scope_config, rdmnet_client_scope_t *scope_handle)
Add a new scope to a controller instance.
Definition: controller.c:330
void(* RdmnetControllerResponderIdsReceivedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetDynamicUidAssignmentList *list, void *context)
A set of previously-requested mappings of dynamic UIDs to responder IDs has been received.
Definition: controller.h:146
void(* RdmnetControllerConnectedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetClientConnectedInfo *info, void *context)
A controller has successfully connected to a broker.
Definition: controller.h:65
void rdmnet_controller_set_callbacks(RdmnetControllerConfig *config, RdmnetControllerConnectedCallback connected, RdmnetControllerConnectFailedCallback connect_failed, RdmnetControllerDisconnectedCallback disconnected, RdmnetControllerClientListUpdateReceivedCallback client_list_update_received, RdmnetControllerRdmResponseReceivedCallback rdm_response_received, RdmnetControllerStatusReceivedCallback status_received, RdmnetControllerResponderIdsReceivedCallback responder_ids_received, void *context)
Set the main callbacks in an RDMnet controller configuration structure.
Definition: controller.c:182
struct RdmnetControllerCallbacks RdmnetControllerCallbacks
etcpal_error_t rdmnet_controller_destroy(rdmnet_controller_t controller_handle, rdmnet_disconnect_reason_t reason)
Destroy a controller instance.
Definition: controller.c:293
etcpal_error_t rdmnet_controller_send_set_command(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetDestinationAddr *destination, uint16_t param_id, const uint8_t *data, uint8_t data_len, uint32_t *seq_num)
Send an RDM SET command from a controller on a scope.
Definition: controller.c:713
etcpal_error_t rdmnet_controller_request_client_list(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle)
Request a client list from a broker.
Definition: controller.c:542
bool(* RdmnetControllerRdmResponseReceivedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetRdmResponse *resp, void *context)
An RDM response has been received.
Definition: controller.h:118
etcpal_error_t rdmnet_controller_send_get_command(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetDestinationAddr *destination, uint16_t param_id, const uint8_t *data, uint8_t data_len, uint32_t *seq_num)
Send an RDM GET command from a controller on a scope.
Definition: controller.c:666
void rdmnet_controller_config_init(RdmnetControllerConfig *config, uint16_t manufacturer_id)
Initialize an RdmnetControllerConfig with default values for the optional config options.
Definition: controller.c:154
void rdmnet_controller_set_rdm_cmd_callbacks(RdmnetControllerConfig *config, RdmnetControllerRdmCommandReceivedCallback rdm_command_received, RdmnetControllerLlrpRdmCommandReceivedCallback llrp_rdm_command_received, uint8_t *response_buf, void *context)
Set callbacks to handle RDM commands in an RDMnet controller configuration structure.
Definition: controller.c:225
etcpal_error_t rdmnet_controller_request_responder_ids(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmUid *uids, size_t num_uids)
Request a set of responder IDs corresponding with dynamic responder UIDs from a broker.
Definition: controller.c:574
etcpal_error_t rdmnet_controller_add_default_scope(rdmnet_controller_t controller_handle, rdmnet_client_scope_t *scope_handle)
Add a new scope representing the default RDMnet scope to a controller instance.
Definition: controller.c:366
etcpal_error_t rdmnet_controller_change_search_domain(rdmnet_controller_t controller_handle, const char *new_search_domain, rdmnet_disconnect_reason_t disconnect_reason)
Change the controller's DNS search domain.
Definition: controller.c:508
etcpal_error_t rdmnet_controller_get_scope(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, char *scope_str_buf, EtcPalSockAddr *static_broker_addr)
Retrieve the scope configuration of a previously-added scope.
Definition: controller.c:474
void(* RdmnetControllerRdmCommandReceivedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetRdmCommand *cmd, RdmnetSyncRdmResponse *response, void *context)
An RDM command has been received addressed to a controller.
Definition: controller.h:172
etcpal_error_t rdmnet_controller_send_rdm_command(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetDestinationAddr *destination, rdmnet_command_class_t command_class, uint16_t param_id, const uint8_t *data, uint8_t data_len, uint32_t *seq_num)
Send an RDM command from a controller on a scope.
Definition: controller.c:618
etcpal_error_t rdmnet_controller_send_rdm_nack(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetSavedRdmCommand *received_cmd, rdm_nack_reason_t nack_reason)
Send an RDM NACK response from a controller on a scope.
Definition: controller.c:795
void(* RdmnetControllerStatusReceivedCallback)(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, const RdmnetRptStatus *status, void *context)
An RPT status message has been received in response to a previously-sent RDM command.
Definition: controller.h:130
etcpal_error_t rdmnet_controller_remove_scope(rdmnet_controller_t controller_handle, rdmnet_client_scope_t scope_handle, rdmnet_disconnect_reason_t reason)
Remove a previously-added scope from a controller instance.
Definition: controller.c:402
etcpal_error_t rdmnet_controller_send_llrp_nack(rdmnet_controller_t controller_handle, const LlrpSavedRdmCommand *received_cmd, rdm_nack_reason_t nack_reason)
Send an LLRP RDM NACK response from a controller.
Definition: controller.c:902
struct RdmnetControllerConfig RdmnetControllerConfig
A set of information that defines the startup parameters of an RDMnet Controller.
int rdmnet_controller_t
Definition: controller.h:54
struct RdmnetControllerRdmData RdmnetControllerRdmData
void(* RdmnetControllerLlrpRdmCommandReceivedCallback)(rdmnet_controller_t controller_handle, const LlrpRdmCommand *cmd, RdmnetSyncRdmResponse *response, void *context)
An RDM command has been received over LLRP, addressed to a controller.
Definition: controller.h:185
Basic types for parsed RDMnet messages.
Definition: message.h:440
Definition: message.h:460
Definition: controller.h:153
RdmnetControllerResponderIdsReceivedCallback responder_ids_received
Definition: controller.h:160
RdmnetControllerStatusReceivedCallback status_received
Definition: controller.h:159
RdmnetControllerClientListUpdateReceivedCallback client_list_update_received
Definition: controller.h:157
RdmnetControllerDisconnectedCallback disconnected
Definition: controller.h:156
RdmnetControllerConnectedCallback connected
Definition: controller.h:154
void * context
Definition: controller.h:161
RdmnetControllerConnectFailedCallback connect_failed
Definition: controller.h:155
RdmnetControllerRdmResponseReceivedCallback rdm_response_received
Definition: controller.h:158
A set of information that defines the startup parameters of an RDMnet Controller.
Definition: controller.h:273
RdmnetControllerCallbacks callbacks
Definition: controller.h:281
EtcPalUuid cid
Definition: controller.h:279
const char * search_domain
Definition: controller.h:308
bool create_llrp_target
Definition: controller.h:313
RdmnetControllerRdmData rdm_data
Definition: controller.h:291
RdmUid uid
Definition: controller.h:302
RdmnetControllerRdmCmdHandler rdm_handler
Definition: controller.h:286
Definition: controller.h:194
RdmnetControllerLlrpRdmCommandReceivedCallback llrp_rdm_command_received
Definition: controller.h:198
uint8_t * response_buf
Definition: controller.h:203
RdmnetControllerRdmCommandReceivedCallback rdm_command_received
Definition: controller.h:196
void * context
Definition: controller.h:205
Definition: controller.h:210
const char * software_version_label
Definition: controller.h:230
uint32_t software_version_id
A number representing the version of the controller software.
Definition: controller.h:224
uint16_t model_id
A number representing the product model which implements the controller.
Definition: controller.h:219
const char * device_model_description
Definition: controller.h:228
bool device_label_settable
Whether the library should allow the device_label to be changed remotely.
Definition: controller.h:249
const char * manufacturer_label
Definition: controller.h:226
const char * device_label
Definition: controller.h:232
uint16_t product_category
A number representing the product's primary function.
Definition: controller.h:244
A destination address for an RDM command in RDMnet's RPT protocol.
Definition: client.h:84
Definition: message.h:246
Definition: message.h:399
Definition: message.h:194