nRF5 SDK for Mesh v5.0.0
light_ctl_client.h
1 /* Copyright (c) 2010 - 2020, Nordic Semiconductor ASA
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification,
5  * are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form, except as embedded into a Nordic
11  * Semiconductor ASA integrated circuit in a product or a software update for
12  * such product, must reproduce the above copyright notice, this list of
13  * conditions and the following disclaimer in the documentation and/or other
14  * materials provided with the distribution.
15  *
16  * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
17  * contributors may be used to endorse or promote products derived from this
18  * software without specific prior written permission.
19  *
20  * 4. This software, with or without modification, must only be used with a
21  * Nordic Semiconductor ASA integrated circuit.
22  *
23  * 5. Any software provided in binary form under this license must not be reverse
24  * engineered, decompiled, modified and/or disassembled.
25  *
26  * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
27  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
28  * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
29  * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
32  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
35  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  */
37 
38 #ifndef LIGHT_CTL_CLIENT_H__
39 #define LIGHT_CTL_CLIENT_H__
40 
41 #include <stdint.h>
42 #include "access.h"
43 #include "access_reliable.h"
44 #include "light_ctl_common.h"
45 #include "light_ctl_messages.h"
46 
55 #define LIGHT_CTL_CLIENT_MODEL_ID 0x1305
56 
57 /* Forward declaration */
58 typedef struct __light_ctl_client_t light_ctl_client_t;
59 
67 typedef void (*light_ctl_lightness_state_status_cb_t)(const light_ctl_client_t * p_self,
68  const access_message_rx_meta_t * p_meta,
69  const light_ctl_status_params_t * p_in);
70 
78 typedef void (*light_ctl_temperature_state_status_cb_t)(const light_ctl_client_t * p_self,
79  const access_message_rx_meta_t * p_meta,
81 
89 typedef void (*light_ctl_temperature_range_state_status_cb_t)(const light_ctl_client_t * p_self,
90  const access_message_rx_meta_t * p_meta,
92 
100 typedef void (*light_ctl_default_state_status_cb_t)(const light_ctl_client_t * p_self,
101  const access_message_rx_meta_t * p_meta,
102  const light_ctl_default_status_params_t * p_in);
103 
105 typedef struct
106 {
117 
121 typedef struct
122 {
126  uint32_t timeout;
133 
137 
139 typedef union
140 {
146 
149 {
154  /* Acknowledged message context variable */
155  access_reliable_t access_message;
156 
159 };
160 
180 uint32_t light_ctl_client_init(light_ctl_client_t * p_client, uint8_t element_index);
181 
201 uint32_t light_ctl_client_set(light_ctl_client_t * p_client,
202  const light_ctl_set_params_t * p_params,
203  const model_transition_t * p_transition);
204 
228 uint32_t light_ctl_client_set_unack(light_ctl_client_t * p_client,
229  const light_ctl_set_params_t * p_params,
230  const model_transition_t * p_transition, uint8_t repeats);
231 
251 uint32_t light_ctl_client_temperature_set(light_ctl_client_t * p_client,
252  const light_ctl_temperature_set_params_t * p_params,
253  const model_transition_t * p_transition);
254 
278 uint32_t light_ctl_client_temperature_set_unack(light_ctl_client_t * p_client,
279  const light_ctl_temperature_set_params_t * p_params,
280  const model_transition_t * p_transition, uint8_t repeats);
281 
300 uint32_t light_ctl_client_temperature_range_set(light_ctl_client_t * p_client,
302 
325 uint32_t light_ctl_client_temperature_range_set_unack(light_ctl_client_t * p_client,
327  uint8_t repeats);
328 
347 uint32_t light_ctl_client_default_set(light_ctl_client_t * p_client,
348  const light_ctl_default_set_params_t * p_params);
349 
372 uint32_t light_ctl_client_default_set_unack(light_ctl_client_t * p_client,
373  const light_ctl_default_set_params_t * p_params,
374  uint8_t repeats);
375 
393 uint32_t light_ctl_client_get(light_ctl_client_t * p_client);
394 
412 uint32_t light_ctl_client_temperature_get(light_ctl_client_t * p_client);
413 
431 uint32_t light_ctl_client_temperature_range_get(light_ctl_client_t * p_client);
432 
450 uint32_t light_ctl_client_default_get(light_ctl_client_t * p_client);
451 
452 
455 #endif /* LIGHT_CTL_CLIENT_H__ */
uint32_t light_ctl_client_init(light_ctl_client_t *p_client, uint8_t element_index)
Initializes Light CTL client.
Message format for the Light CTL Temperature Range Set message.
uint16_t access_model_handle_t
Access layer handle type.
Definition: access.h:162
void(* light_ctl_temperature_range_state_status_cb_t)(const light_ctl_client_t *p_self, const access_message_rx_meta_t *p_meta, const light_ctl_temperature_range_status_params_t *p_in)
Callback type for Light CTL Temperature Range state related transactions.
light_ctl_temperature_set_msg_pkt_t temperature_set
Storage for the Light CTL Temperature Linear Set message.
uint32_t light_ctl_client_temperature_range_set_unack(light_ctl_client_t *p_client, const light_ctl_temperature_range_set_params_t *p_params, uint8_t repeats)
Sends a Temperature Range Set Unacknowledged message to the server.
access_model_handle_t model_handle
Model handle assigned to this instance.
bool force_segmented
If server should force outgoing messages as segmented messages.
void(* light_ctl_lightness_state_status_cb_t)(const light_ctl_client_t *p_self, const access_message_rx_meta_t *p_meta, const light_ctl_status_params_t *p_in)
Callback type for Light CTL Lightness state related transactions.
light_ctl_temperature_state_status_cb_t light_ctl_temperature_status_cb
Callback for the Light CTL Temperature Status message.
uint32_t light_ctl_client_set(light_ctl_client_t *p_client, const light_ctl_set_params_t *p_params, const model_transition_t *p_transition)
Sends a Set message to the server.
uint32_t light_ctl_client_temperature_get(light_ctl_client_t *p_client)
Sends a Temperature Get message to the server.
light_ctl_client_msg_data_t msg_pkt
Holds the raw message packet data for transactions.
void(* access_publish_timeout_cb_t)(access_model_handle_t handle, void *p_args)
Access layer publish timeout event callback.
Definition: access.h:170
Parameters for the Light CTL Default Status message.
light_ctl_client_settings_t settings
Model settings and callbacks for this instance.
access_reliable_cb_t ack_transaction_status_cb
Callback to call after the acknowledged transaction has ended.
light_ctl_temperature_range_set_msg_pkt_t temperature_range_set
Storage for the Light Temperature Range Set message.
Message format for the CTL Temperature Set message.
uint32_t light_ctl_client_default_set(light_ctl_client_t *p_client, const light_ctl_default_set_params_t *p_params)
Sends a Default Set message to the server.
uint32_t light_ctl_client_temperature_range_set(light_ctl_client_t *p_client, const light_ctl_temperature_range_set_params_t *p_params)
Sends a Temperature Range Set message to the server.
uint32_t light_ctl_client_temperature_range_get(light_ctl_client_t *p_client)
Sends a Temperature Range Get message to the server.
access_publish_timeout_cb_t periodic_publish_cb
callback called at the end of the each period for the publishing
uint32_t light_ctl_client_default_get(light_ctl_client_t *p_client)
Sends a Default Get message to the server.
Union for holding current message packet.
void(* light_ctl_default_state_status_cb_t)(const light_ctl_client_t *p_self, const access_message_rx_meta_t *p_meta, const light_ctl_default_status_params_t *p_in)
Callback type for Light CTL Default state related transactions.
light_ctl_default_state_status_cb_t light_ctl_default_status_cb
Callback for Light CTL Default Status message.
const light_ctl_client_callbacks_t * p_callbacks
Callback list.
Metadata for received messages.
Definition: access.h:196
void(* light_ctl_temperature_state_status_cb_t)(const light_ctl_client_t *p_self, const access_message_rx_meta_t *p_meta, const light_ctl_temperature_status_params_t *p_in)
Callback type for Light CTL Temperature state related transactions.
Access layer acknowledged publish parameter structure.
uint32_t light_ctl_client_set_unack(light_ctl_client_t *p_client, const light_ctl_set_params_t *p_params, const model_transition_t *p_transition, uint8_t repeats)
Sends a Set Unacknowledged message to the server.
uint32_t light_ctl_client_default_set_unack(light_ctl_client_t *p_client, const light_ctl_default_set_params_t *p_params, uint8_t repeats)
Sends a Default Set Unacknowledged message to the server.
nrf_mesh_transmic_size_t
Message MIC size selection.
Definition: nrf_mesh.h:385
uint32_t light_ctl_client_temperature_set_unack(light_ctl_client_t *p_client, const light_ctl_temperature_set_params_t *p_params, const model_transition_t *p_transition, uint8_t repeats)
Sends a Temperature Set Unacknowledged message to the server.
uint32_t light_ctl_client_get(light_ctl_client_t *p_client)
Sends a Get message to the server.
Client callback structure.
Message format for the CTL Default Set message.
Message format for the Light CTL Temperature Set message.
Message format for the Light CTL Default Set message.
uint32_t timeout
Reliable message timeout in microseconds.
light_ctl_lightness_state_status_cb_t light_ctl_status_cb
Callback for the Light CTL Status message.
void(* access_reliable_cb_t)(access_model_handle_t model_handle, void *p_args, access_reliable_status_t status)
Access layer acknowledged message callback type.
light_ctl_default_set_msg_pkt_t default_set
Storage for the Light CTL Default Set message.
Parameters for the Light CTL Temperature Status message.
light_ctl_temperature_range_state_status_cb_t light_ctl_temperature_range_status_cb
Callback for Light CTL Temperature Range Status message.
User provided settings and callbacks for the model instance.
Parameters for the Light CTL Status message.
uint32_t light_ctl_client_temperature_set(light_ctl_client_t *p_client, const light_ctl_temperature_set_params_t *p_params, const model_transition_t *p_transition)
Sends a Temperature Set message to the server.
Message format for the CTL Temperature Range Set message.
Packed message structure typedefs are used for packing and unpacking byte stream. ...
Parameters for the Light CTL Temperature Range Status message.
Generic Transition parameters for the model messages.
Definition: model_common.h:162
Unpacked message structure typedefs are used for API interfaces and for implementing model code...
nrf_mesh_transmic_size_t transmic_size
TransMIC size used by the outgoing server messages.

Documentation feedback | Developer Zone | Subscribe | Updated