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
259 #define RDMNET_CONTROLLER_RDM_DATA_DEFAULT_INIT \
261 0, 0, NULL, NULL, NULL, NULL, E120_PRODUCT_CATEGORY_CONTROL_CONTROLLER, false \
329 #define RDMNET_CONTROLLER_CONFIG_DEFAULT_INIT(manu_id) \
331 {{0}}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL}, \
332 RDMNET_CONTROLLER_RDM_DATA_DEFAULT_INIT, {(0x8000 | manu_id), 0}, NULL, false, NULL, 0 \
348 uint8_t* response_buf,
372 const char* new_search_domain,
408 const uint8_t* response_data,
409 size_t response_data_len);
413 rdm_nack_reason_t nack_reason);
423 const uint8_t* response_data,
424 uint8_t response_data_len);
427 rdm_nack_reason_t nack_reason);
API definitions used by RDMnet clients (controllers and devices)
rdmnet_disconnect_reason_t
Disconnect reason defines for the BrokerDisconnectMsg.
Definition: common.h:85
rdmnet_command_class_t
An RDM command class, for RDMnet purposes.
Definition: common.h:350
client_list_action_t
How to apply the client entries to the existing client list in a client_list_update_received callback...
Definition: client.h:50
int rdmnet_client_scope_t
A handle to a scope that an RDMnet client participates in.
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
A buffer and set of callbacks which can be optionally provided to handle RDM commands addressed to a ...
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:412
etcpal_error_t rdmnet_controller_create(const RdmnetControllerConfig *config, rdmnet_controller_t *handle)
Create a new instance of RDMnet controller functionality.
Definition: controller.c:249
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:788
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:690
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:758
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:321
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:144
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:176
struct RdmnetControllerCallbacks RdmnetControllerCallbacks
A set of notification callbacks received about a controller.
etcpal_error_t rdmnet_controller_destroy(rdmnet_controller_t controller_handle, rdmnet_disconnect_reason_t reason)
Destroy a controller instance.
Definition: controller.c:287
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:653
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:503
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:612
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:148
void(* 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:116
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:219
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:532
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:351
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:475
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:444
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:170
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:570
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:723
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:128
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:381
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:815
struct RdmnetControllerConfig RdmnetControllerConfig
A set of information that defines the startup parameters of an RDMnet Controller.
int rdmnet_controller_t
A handle to an RDMnet controller.
Definition: controller.h:54
struct RdmnetControllerRdmData RdmnetControllerRdmData
A set of data for the controller library to use for handling RDM commands internally.
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:183
Basic types for parsed RDMnet messages.
An RDM command received from a remote LLRP Manager.
Definition: message.h:439
An RDM command received from a remote LLRP Manager.
Definition: message.h:459
Information provided by the library about an unsuccessful RDMnet client connection.
Definition: client.h:164
Information provided by the library about a successful RDMnet client connection.
Definition: client.h:151
Information provided by the library about an RDMnet client connection that disconnected after a succe...
Definition: client.h:196
A set of notification callbacks received about a controller.
Definition: controller.h:151
RdmnetControllerStatusReceivedCallback status_received
Required.
Definition: controller.h:157
RdmnetControllerDisconnectedCallback disconnected
Required.
Definition: controller.h:154
void * context
(optional) Pointer to opaque data passed back with each callback.
Definition: controller.h:159
RdmnetControllerClientListUpdateReceivedCallback client_list_update_received
Required.
Definition: controller.h:155
RdmnetControllerConnectedCallback connected
Required.
Definition: controller.h:152
RdmnetControllerConnectFailedCallback connect_failed
Required.
Definition: controller.h:153
RdmnetControllerResponderIdsReceivedCallback responder_ids_received
Optional.
Definition: controller.h:158
RdmnetControllerRdmResponseReceivedCallback rdm_response_received
Required.
Definition: controller.h:156
A set of information that defines the startup parameters of an RDMnet Controller.
Definition: controller.h:266
const char * search_domain
(optional) The controller's configured search domain for discovery.
Definition: controller.h:301
RdmnetControllerRdmCmdHandler rdm_handler
Callbacks and a buffer for the controller to receive RDM commands over RDMnet.
Definition: controller.h:279
RdmnetControllerCallbacks callbacks
A set of callbacks for the controller to receive RDMnet notifications.
Definition: controller.h:274
EtcPalUuid cid
The controller's CID.
Definition: controller.h:272
bool create_llrp_target
(optional) Whether to create an LLRP target associated with this controller.
Definition: controller.h:306
size_t num_llrp_netints
(optional) The size of the llrp_netints array.
Definition: controller.h:315
const RdmnetMcastNetintId * llrp_netints
(optional) A set of network interfaces to use for the LLRP target associated with this controller.
Definition: controller.h:313
RdmnetControllerRdmData rdm_data
Data for the library to use for handling RDM commands internally.
Definition: controller.h:284
RdmUid uid
(optional) The controller's UID.
Definition: controller.h:295
A buffer and set of callbacks which can be optionally provided to handle RDM commands addressed to a ...
Definition: controller.h:192
RdmnetControllerRdmCommandReceivedCallback rdm_command_received
Callback called when an RDM command is received from a controller.
Definition: controller.h:194
uint8_t * response_buf
(optional) A data buffer used to respond synchronously to RDM commands.
Definition: controller.h:201
RdmnetControllerLlrpRdmCommandReceivedCallback llrp_rdm_command_received
Callback called when an RDM command is received over LLRP.
Definition: controller.h:196
void * context
(optional) Pointer to opaque data passed back with each callback.
Definition: controller.h:203
A set of data for the controller library to use for handling RDM commands internally.
Definition: controller.h:208
uint16_t model_id
A number representing the product model which implements the controller.
Definition: controller.h:217
uint16_t product_category
A number representing the product's primary function.
Definition: controller.h:242
const char * device_model_description
A string representing the name of the product model which implements the controller.
Definition: controller.h:226
uint32_t software_version_id
A number representing the version of the controller software.
Definition: controller.h:222
const char * manufacturer_label
A string representing the manufacturer of the controller.
Definition: controller.h:224
const char * software_version_label
A string representing the software version of the controller.
Definition: controller.h:228
const char * device_label
A user-settable string representing a name for this particular controller instance.
Definition: controller.h:230
bool device_label_settable
Whether the library should allow the device_label to be changed remotely.
Definition: controller.h:247
A destination address for an RDM command in RDMnet's RPT protocol.
Definition: client.h:84
A list of mappings from dynamic UIDs to responder IDs received from an RDMnet broker.
Definition: message.h:245
A set of identifying information for a network interface, for multicast purposes.
Definition: common.h:364
An RDMnet RDM command received by this component.
Definition: message.h:53
An RDMnet RDM response received by a local component.
Definition: message.h:90
A structure that represents a list of RPT Client Entries.
Definition: message.h:398
An RDMnet RPT status message received by a local component.
Definition: message.h:193
An RDM command received by this component and saved for a later response.
Definition: message.h:73
A set of configuration information for a single scope in which an RDMnet client is participating.
Definition: client.h:224
This structure should not be manipulated directly - use the macros to access it:
Definition: common.h:214