RDMnet  0.3.0
Implementation of ANSI E1.33 (RDMnet)
View other versions:
llrp_manager.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2020 ETC Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************
16  * This file is a part of RDMnet. For more information, go to:
17  * https://github.com/ETCLabs/RDMnet
18  *****************************************************************************/
19 
25 #ifndef RDMNET_LLRP_MANAGER_H_
26 #define RDMNET_LLRP_MANAGER_H_
27 
28 #include "etcpal/uuid.h"
29 #include "etcpal/inet.h"
30 #include "rdm/message.h"
31 #include "rdmnet/common.h"
32 #include "rdmnet/llrp.h"
33 #include "rdmnet/message.h"
34 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
51 typedef int llrp_manager_t;
53 #define LLRP_MANAGER_INVALID -1
54 
62  const LlrpDiscoveredTarget* target,
63  void* context);
64 
72  const LlrpRdmResponse* resp,
73  void* context);
74 
80 typedef void (*LlrpManagerDiscoveryFinishedCallback)(llrp_manager_t handle, void* context);
81 
83 typedef struct LlrpManagerCallbacks
84 {
88  void* context;
90 
92 typedef struct LlrpManagerConfig
93 {
94  /************************************************************************************************
95  * Required Values
96  ***********************************************************************************************/
97 
103  uint16_t manu_id;
107 
117 #define LLRP_MANAGER_CONFIG_DEFAULT_INIT \
118  { \
119  {{0}}, {kEtcPalIpTypeInvalid, 0}, 0, { NULL, NULL, NULL, NULL } \
120  }
121 
122 void llrp_manager_config_init(LlrpManagerConfig* config, uint16_t manufacturer_id);
124  LlrpManagerTargetDiscoveredCallback target_discovered,
125  LlrpManagerRdmResponseReceivedCallback rdm_response_received,
126  LlrpManagerDiscoveryFinishedCallback discovery_finished,
127  void* context);
128 
131 
134 
136  const LlrpDestinationAddr* destination,
137  rdmnet_command_class_t command_class,
138  uint16_t param_id,
139  const uint8_t* data,
140  uint8_t data_len,
141  uint32_t* seq_num);
143  const LlrpDestinationAddr* destination,
144  uint16_t param_id,
145  const uint8_t* data,
146  uint8_t data_len,
147  uint32_t* seq_num);
149  const LlrpDestinationAddr* destination,
150  uint16_t param_id,
151  const uint8_t* data,
152  uint8_t data_len,
153  uint32_t* seq_num);
154 
155 #ifdef __cplusplus
156 }
157 #endif
158 
163 #endif /* RDMNET_LLRP_MANAGER_H_ */
Functions and definitions common to all RDMnet API modules.
etcpal_error_t
void(* LlrpManagerRdmResponseReceivedCallback)(llrp_manager_t handle, const LlrpRdmResponse *resp, void *context)
An RDM response has been received from an LLRP target.
Definition: llrp_manager.h:71
etcpal_error_t llrp_manager_send_set_command(llrp_manager_t handle, const LlrpDestinationAddr *destination, uint16_t param_id, const uint8_t *data, uint8_t data_len, uint32_t *seq_num)
Send an RDM SET command from an LLRP manager.
Definition: llrp_manager.c:316
int llrp_manager_t
A handle for an instance of LLRP Manager functionality.
Definition: llrp_manager.h:51
struct LlrpManagerConfig LlrpManagerConfig
A set of information that defines the startup parameters of an LLRP Manager.
struct LlrpManagerCallbacks LlrpManagerCallbacks
A set of notification callbacks received about an LLRP manager.
void llrp_manager_config_set_callbacks(LlrpManagerConfig *config, LlrpManagerTargetDiscoveredCallback target_discovered, LlrpManagerRdmResponseReceivedCallback rdm_response_received, LlrpManagerDiscoveryFinishedCallback discovery_finished, void *context)
Set the callbacks in an LLRP manager configuration structure.
Definition: llrp_manager.c:98
etcpal_error_t llrp_manager_destroy(llrp_manager_t handle)
Destroy an LLRP manager instance.
Definition: llrp_manager.c:163
etcpal_error_t llrp_manager_send_get_command(llrp_manager_t handle, const LlrpDestinationAddr *destination, uint16_t param_id, const uint8_t *data, uint8_t data_len, uint32_t *seq_num)
Send an RDM GET command from an LLRP manager.
Definition: llrp_manager.c:281
etcpal_error_t llrp_manager_send_rdm_command(llrp_manager_t handle, const LlrpDestinationAddr *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 an LLRP manager.
Definition: llrp_manager.c:245
void(* LlrpManagerDiscoveryFinishedCallback)(llrp_manager_t handle, void *context)
The previously-started LLRP discovery process has finished.
Definition: llrp_manager.h:80
void(* LlrpManagerTargetDiscoveredCallback)(llrp_manager_t handle, const LlrpDiscoveredTarget *target, void *context)
An LLRP target has been discovered.
Definition: llrp_manager.h:61
etcpal_error_t llrp_manager_stop_discovery(llrp_manager_t handle)
Stop discovery on an LLRP manager.
Definition: llrp_manager.c:215
void llrp_manager_config_init(LlrpManagerConfig *config, uint16_t manufacturer_id)
Initialize an LlrpManagerConfig with default values for the optional config options.
Definition: llrp_manager.c:77
etcpal_error_t llrp_manager_create(const LlrpManagerConfig *config, llrp_manager_t *handle)
Create a new LLRP manager instance.
Definition: llrp_manager.c:128
etcpal_error_t llrp_manager_start_discovery(llrp_manager_t handle, uint16_t filter)
Start discovery on an LLRP manager.
Definition: llrp_manager.c:192
rdmnet_command_class_t
An RDM command class, for RDMnet purposes.
Definition: common.h:350
Functions and definitions common to LLRP Managers and Targets.
Basic types for parsed RDMnet messages.
A destination address for an RDM command in LLRP.
Definition: llrp.h:48
A set of information associated with an LLRP Target.
Definition: llrp.h:72
A set of notification callbacks received about an LLRP manager.
Definition: llrp_manager.h:84
LlrpManagerDiscoveryFinishedCallback discovery_finished
LLRP discovery is finished.
Definition: llrp_manager.h:87
LlrpManagerRdmResponseReceivedCallback rdm_response_received
An LLRP RDM response has been received.
Definition: llrp_manager.h:86
LlrpManagerTargetDiscoveredCallback target_discovered
An LLRP target has been discovered.
Definition: llrp_manager.h:85
void * context
(optional) Pointer to opaque data passed back with each callback.
Definition: llrp_manager.h:88
A set of information that defines the startup parameters of an LLRP Manager.
Definition: llrp_manager.h:93
EtcPalUuid cid
The manager's CID.
Definition: llrp_manager.h:99
LlrpManagerCallbacks callbacks
A set of callbacks for the manager to receive RDMnet notifications.
Definition: llrp_manager.h:105
uint16_t manu_id
The manager's ESTA manufacturer ID.
Definition: llrp_manager.h:103
RdmnetMcastNetintId netint
The network interface that this manager operates on.
Definition: llrp_manager.h:101
An RDM response received from a remote LLRP Target.
Definition: message.h:479
A set of identifying information for a network interface, for multicast purposes.
Definition: common.h:364