ls.h
Go to the documentation of this file.
1 /**
2  ****************************************************************************************
3  *
4  * @file lms.h
5  *
6  * @brief LMS Service API
7  *
8  ****************************************************************************************
9  * @attention
10  #####Copyright (c) 2019 GOODIX
11  All rights reserved.
12 
13  Redistribution and use in source and binary forms, with or without
14  modification, are permitted provided that the following conditions are met:
15  * Redistributions of source code must retain the above copyright
16  notice, this list of conditions and the following disclaimer.
17  * Redistributions in binary form must reproduce the above copyright
18  notice, this list of conditions and the following disclaimer in the
19  documentation and/or other materials provided with the distribution.
20  * Neither the name of GOODIX nor the names of its contributors may be used
21  to endorse or promote products derived from this software without
22  specific prior written permission.
23 
24  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  POSSIBILITY OF SUCH DAMAGE.
35  *****************************************************************************************
36  */
37 
38 /**
39  * @addtogroup BLE_SRV BLE Services
40  * @{
41  * @brief Definitions and prototypes for the BLE Service interface.
42  */
43 
44 /**
45  * @defgroup BLE_SDK_LMS LMS Service (LMS)
46  * @{
47  * @brief Definitions and prototypes for the LMS interface.
48  *
49  * @details The LMS Service exposes the state of a battery within a device.
50  * This module implements the Battery Service with the Battery Level
51  * characteristic. After @ref otas_init_t variable is initialized, the
52  * developer shall call @ref otas_service_init() to add the LMS
53  * Service and RX, TX, Control characteristic to the BLE stack database.
54  *
55  * This module also provides \ref otas_notify_tx_data() function to the application
56  * to send data to peer.
57  */
58 
59 #ifndef _LMS_H_
60 #define _LMS_H_
61 
62 /*
63  * INCLUDE FILES
64  ****************************************************************************************
65  */
66 #include "gr55xx_sys.h"
67 #include "custom_config.h"
68 
69 /**
70  * @defgroup LMS_MACRO Defines
71  * @{
72  */
73 #define LMS_CONNECTION_MAX (10 < CFG_MAX_CONNECTIONS ?\
74  10 : CFG_MAX_CONNECTIONS) /**< Maximum number of LMS Service connections. */
75 #define LMS_MAX_DATA_LEN 244 /**< Maximum length of LMS characteristic. */
76 #define BLE_UUID_LMS_SERVICE 0x1B, 0xD7, 0x90, 0xEC, 0xE8, 0xB9, 0x75, 0x80,\
77  0x0A, 0x46, 0x44, 0xD3, 0x01, 0x0B, 0xED, 0xA6 /**< The UUID of LMS Service for setting advertising data. */
78 
79 #define LMS_PATTERN_VALUE 0x474f4f44 /**< The Fast OTA pattern value. */
80 /** @} */
81 
82 /**
83  * @defgroup LMS_ENUM Enumerations
84  * @{
85  */
86 /**@brief LMS Service event type. */
87 typedef enum
88 {
99 /** @} */
100 
101 /**
102  * @defgroup LMS_STRUCT Structures
103  * @{
104  */
105 /**@brief LMS Service event. */
106 typedef struct
107 {
108  lms_evt_type_t evt_type; /**< The LMS event. */
109  uint8_t conn_idx; /**< Index of connection. */
110  uint8_t *p_data; /**< Pointer to data. */
111  uint16_t length; /**< Length of data. */
112 } lms_evt_t;
113 /** @} */
114 
115 /**
116  * @defgroup LMS_TYPEDEF Typedefs
117  * @{
118  */
119 /**@brief LMS Service event handler type. */
120 typedef void (*lms_evt_handler_t)(lms_evt_t *p_evt);
121 
122 /**@brief LMS Service function type. */
123 typedef void (*function)(void);
124 /** @} */
125 
126 /**
127  * @defgroup LMS_STRUCT Structures
128  * @{
129  */
130 /**@brief LMS Service initialization variable. */
131 typedef struct
132 {
133  lms_evt_handler_t evt_handler; /**< Handler to handle otas event. */
134 } lms_init_t;
135 /** @} */
136 
137 
138 /**
139  * @defgroup LMS_FUNCTION Functions
140  * @{
141  */
142 /**
143  *****************************************************************************************
144  * @brief Add an LMS Service instance in the DB
145  *
146  * @param[in] p_otas_init :Pointer to LMS Service environment variable
147  *
148  * @return Result of service initialization.
149  *****************************************************************************************
150  */
152 
153 
154 /**
155  *****************************************************************************************
156  * @brief Send data to peer device
157  *
158  * @param[in] conn_idx: Connection index
159  * @param[in] p_data: The Pointer of send value
160  * @param[in] length: The Lenth of send value
161  *
162  * @return Result of notify and indicate value
163  *****************************************************************************************
164  */
165 sdk_err_t lms_notify_cmd(uint8_t conn_idx, uint8_t *p_data,uint16_t length);
166 
167 /**
168  *****************************************************************************************
169  * @brief Send data to peer device
170  *
171  * @param[in] conn_idx: Connection index
172  * @param[in] p_data: The Pointer of send value
173  * @param[in] length: The Lenth of send value
174  *
175  * @return Result of notify and indicate value
176  *****************************************************************************************
177  */
178 sdk_err_t lms_notify_data(uint8_t conn_idx, uint8_t *p_data,uint16_t length);
179 /** @} */
180 
181 #endif
182 /** @} */
183 /** @} */
lms_evt_t::conn_idx
uint8_t conn_idx
Index of connection.
Definition: ls.h:109
lms_evt_t::evt_type
lms_evt_type_t evt_type
The LMS event.
Definition: ls.h:108
LMS_EVT_INVALID
@ LMS_EVT_INVALID
Definition: ls.h:89
lms_init_t
LMS Service initialization variable.
Definition: ls.h:132
gr55xx_sys.h
GR55XX System API.
LMS_EVT_CMD_NOTIFY_COMPLETE
@ LMS_EVT_CMD_NOTIFY_COMPLETE
Definition: ls.h:93
lms_evt_handler_t
void(* lms_evt_handler_t)(lms_evt_t *p_evt)
LMS Service event handler type.
Definition: ls.h:120
LMS_EVT_DATA_RECEIVE_DATA
@ LMS_EVT_DATA_RECEIVE_DATA
Definition: ls.h:96
lms_notify_cmd
sdk_err_t lms_notify_cmd(uint8_t conn_idx, uint8_t *p_data, uint16_t length)
Send data to peer device.
LMS_EVT_DATA_NOTIFICATION_DISABLED
@ LMS_EVT_DATA_NOTIFICATION_DISABLED
Definition: ls.h:95
lms_evt_t
LMS Service event.
Definition: ls.h:107
LMS_EVT_CMD_NOTIFICATION_ENABLED
@ LMS_EVT_CMD_NOTIFICATION_ENABLED
Definition: ls.h:90
LMS_EVT_DATA_NOTIFY_COMPLETE
@ LMS_EVT_DATA_NOTIFY_COMPLETE
Definition: ls.h:97
sdk_err_t
uint16_t sdk_err_t
SDK API result type.
Definition: ble_error.h:243
lms_service_init
sdk_err_t lms_service_init(lms_init_t *p_otas_init)
Add an LMS Service instance in the DB.
lms_evt_t::length
uint16_t length
Length of data.
Definition: ls.h:111
LMS_EVT_CMD_NOTIFICATION_DISABLED
@ LMS_EVT_CMD_NOTIFICATION_DISABLED
Definition: ls.h:91
lms_evt_type_t
lms_evt_type_t
LMS Service event type.
Definition: ls.h:88
LMS_EVT_DATA_NOTIFICATION_ENABLED
@ LMS_EVT_DATA_NOTIFICATION_ENABLED
Definition: ls.h:94
lms_notify_data
sdk_err_t lms_notify_data(uint8_t conn_idx, uint8_t *p_data, uint16_t length)
Send data to peer device.
LMS_EVT_CMD_RECEIVE_DATA
@ LMS_EVT_CMD_RECEIVE_DATA
Definition: ls.h:92
lms_evt_t::p_data
uint8_t * p_data
Pointer to data.
Definition: ls.h:110
lms_init_t::evt_handler
lms_evt_handler_t evt_handler
Handler to handle otas event.
Definition: ls.h:133