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