xref: /btstack/src/mesh/mesh_generic_on_off_client.h (revision 2fca4dad957cd7b88f4657ed51e89c12615dda72)
139018edaSMilanka Ringwald /*
239018edaSMilanka Ringwald  * Copyright (C) 2019 BlueKitchen GmbH
339018edaSMilanka Ringwald  *
439018edaSMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
539018edaSMilanka Ringwald  * modification, are permitted provided that the following conditions
639018edaSMilanka Ringwald  * are met:
739018edaSMilanka Ringwald  *
839018edaSMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
939018edaSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
1039018edaSMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
1139018edaSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
1239018edaSMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
1339018edaSMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
1439018edaSMilanka Ringwald  *    contributors may be used to endorse or promote products derived
1539018edaSMilanka Ringwald  *    from this software without specific prior written permission.
1639018edaSMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
1739018edaSMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
1839018edaSMilanka Ringwald  *    monetary gain.
1939018edaSMilanka Ringwald  *
2039018edaSMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
2139018edaSMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2239018edaSMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*2fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
24*2fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2539018edaSMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2639018edaSMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
2739018edaSMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2839018edaSMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2939018edaSMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
3039018edaSMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3139018edaSMilanka Ringwald  * SUCH DAMAGE.
3239018edaSMilanka Ringwald  *
3339018edaSMilanka Ringwald  * Please inquire about commercial licensing options at
3439018edaSMilanka Ringwald  * [email protected]
3539018edaSMilanka Ringwald  *
3639018edaSMilanka Ringwald  */
3739018edaSMilanka Ringwald 
3839018edaSMilanka Ringwald #ifndef __MESH_GENERIC_ON_OFF_CLIENT_H
3939018edaSMilanka Ringwald #define __MESH_GENERIC_ON_OFF_CLIENT_H
4039018edaSMilanka Ringwald 
4139018edaSMilanka Ringwald #include <stdint.h>
4239018edaSMilanka Ringwald 
4339018edaSMilanka Ringwald #include "mesh/mesh_access.h"
4439018edaSMilanka Ringwald 
4539018edaSMilanka Ringwald #ifdef __cplusplus
4639018edaSMilanka Ringwald extern "C"
4739018edaSMilanka Ringwald {
4839018edaSMilanka Ringwald #endif
4939018edaSMilanka Ringwald 
5039018edaSMilanka Ringwald const mesh_operation_t * mesh_generic_on_off_client_get_operations(void);
5139018edaSMilanka Ringwald /**
5239018edaSMilanka Ringwald  * @brief Register packet handler
5339018edaSMilanka Ringwald  * @param generic_on_off_client_model
5439018edaSMilanka Ringwald  * @param events_packet_handler
5539018edaSMilanka Ringwald  */
5639018edaSMilanka Ringwald void mesh_generic_on_off_client_register_packet_handler(mesh_model_t *mesh_model, btstack_packet_handler_t events_packet_handler);
5739018edaSMilanka Ringwald 
5839018edaSMilanka Ringwald /**
5939018edaSMilanka Ringwald  * @brief Set ON/OFF value acknowledged
6039018edaSMilanka Ringwald  * @param mesh_model
6139018edaSMilanka Ringwald  * @param dest
6239018edaSMilanka Ringwald  * @param netkey_index
6339018edaSMilanka Ringwald  * @param appkey_index
6439018edaSMilanka Ringwald  * @param on_off_value
6539018edaSMilanka Ringwald  * @param transition_time_gdtt
6639018edaSMilanka Ringwald  * @param delay_time_gdtt
6739018edaSMilanka Ringwald  * @param transaction_id
6839018edaSMilanka Ringwald  * @return status    0 if successful
6939018edaSMilanka Ringwald  */
7039018edaSMilanka Ringwald  uint8_t mesh_generic_on_off_client_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
7139018edaSMilanka Ringwald     uint8_t on_off_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
7239018edaSMilanka Ringwald 
7339018edaSMilanka Ringwald /**
7439018edaSMilanka Ringwald  * @brief Set ON/OFF value unacknowledged
7539018edaSMilanka Ringwald  * @param  mesh_model
7639018edaSMilanka Ringwald  * @param dest
7739018edaSMilanka Ringwald  * @param netkey_index
7839018edaSMilanka Ringwald  * @param appkey_index
7939018edaSMilanka Ringwald  * @param on_off_value
8039018edaSMilanka Ringwald  * @param transition_time_gdtt
8139018edaSMilanka Ringwald  * @param delay_time_gdtt
8239018edaSMilanka Ringwald  * @param transaction_id
8339018edaSMilanka Ringwald  * @return status    0 if successful
8439018edaSMilanka Ringwald  */
8539018edaSMilanka Ringwald uint8_t mesh_generic_on_off_client_set_unacknowledged(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
8639018edaSMilanka Ringwald     uint8_t on_off_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
8739018edaSMilanka Ringwald 
8839018edaSMilanka Ringwald /**
8939018edaSMilanka Ringwald  * @brief  Get present ON/OFF value
9039018edaSMilanka Ringwald  * @param  mesh_model
9139018edaSMilanka Ringwald  * @param dest
9239018edaSMilanka Ringwald  * @param netkey_index
9339018edaSMilanka Ringwald  * @param appkey_index
9439018edaSMilanka Ringwald  * @return status    0 if successful
9539018edaSMilanka Ringwald  */
9639018edaSMilanka Ringwald uint8_t mesh_generic_on_off_client_get(mesh_model_t *mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
9739018edaSMilanka Ringwald 
9839018edaSMilanka Ringwald /**
9939018edaSMilanka Ringwald  * @brief Publish on_off value by sending an unacknowledged set message to the publish destination
10039018edaSMilanka Ringwald  * @param mesh_model
10139018edaSMilanka Ringwald  * @param on_off_value
10239018edaSMilanka Ringwald  * @param transaction_id
10339018edaSMilanka Ringwald  * @return status    0 if successful
10439018edaSMilanka Ringwald  */
10539018edaSMilanka Ringwald uint8_t mesh_generic_on_off_client_publish(mesh_model_t * mesh_model, uint8_t on_off_value, uint8_t transaction_id);
10639018edaSMilanka Ringwald 
10739018edaSMilanka Ringwald #ifdef __cplusplus
10839018edaSMilanka Ringwald } /* end of extern "C" */
10939018edaSMilanka Ringwald #endif
11039018edaSMilanka Ringwald 
11139018edaSMilanka Ringwald #endif
112