123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- #ifndef BLE_OWNED_C_H__
- #define BLE_OWNED_C_H__
- #include "sdk_common.h"
- #include "ble_config.h"
- #include "ble_owned_c.h"
- #include "ble_db_discovery.h"
- #include "ble_types.h"
- #include "ble_srv_common.h"
- #include "ble_gattc.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**@brief Macro for defining a ble_owned_c instance.
- *
- * @param _name Name of the instance.
- * @hideinitializer
- */
- #define BLE_OWNED_C_DEF(_name) \
- static ble_owned_c_t _name; \
- NRF_SDH_BLE_OBSERVER(_name ## _obs, \
- BLE_OWNED_C_BLE_OBSERVER_PRIO, \
- ble_owned_c_on_ble_evt, &_name)
- /** @brief Macro for defining multiple ble_owned_c instances.
- *
- * @param _name Name of the array of instances.
- * @param _cnt Number of instances to define.
- * @hideinitializer
- */
- #define BLE_OWNED_C_ARRAY_DEF(_name, _cnt) \
- static ble_owned_c_t _name[_cnt]; \
- NRF_SDH_BLE_OBSERVERS(_name ## _obs, \
- BLE_OWNED_C_BLE_OBSERVER_PRIO, \
- ble_owned_c_on_ble_evt, &_name, _cnt)
- /**
- * @defgroup wechat_c_enums Enumerations
- * @{
- */
-
- #ifndef BLE_UUID_OWNED_BASE
- #ifdef BLE_UUID_WECHAT_SERVICE
- #define BLE_UUID_OWNED_BASE BLE_UUID_WECHAT_SERVICE
- #else
- #define BLE_UUID_OWNED_BASE 0xFEE7
- #endif
- #endif
- #ifndef BLE_UUID_INDICATE_CHARACTERISTICS
- #define BLE_UUID_INDICATE_CHARACTERISTICS 0xFECA
- #endif
- #ifndef BLE_OWNED_MAX_DATA_LEN
- #define BLE_OWNED_MAX_DATA_LEN 64
- #endif
- /**@brief OWNED Client event type. */
- typedef enum
- {
- BLE_OWNED_C_EVT_DISCOVERY_COMPLETE, /**< Event indicating that the Owned service and its characteristics was found. */
- BLE_OWNED_C_EVT_OWNED_WR_EVT, /**< Event indicating that the central has received something from a peer. */
- BLE_OWNED_C_EVT_DISCONNECTED, /**< Event indicating that the OWNED server has disconnected. */
- }ble_owned_c_evt_type_t;
- /**@brief Handles on the connected peer device needed to interact with it. */
- typedef struct
- {
- uint16_t owned_wr_handle; /**< Handle of the write characteristic as provided by a discovery. */
- uint16_t owned_wr_cccd_handle; /**< Handle of the CCCD of the OWNED TX characteristic as provided by a discovery. */
- }ble_owned_c_handles_t;
- /**@brief Structure containing the OWNED event data received from the peer. */
- typedef struct
- {
- ble_owned_c_evt_type_t evt_type;
- uint16_t conn_handle;
- uint16_t max_data_len;
- uint8_t *p_data;
- uint16_t data_len;
- ble_owned_c_handles_t handles; /**< Handles on which the Nordic Uart service characteristics was discovered on the peer device. This will be filled if the evt_type is @ref ble_owned_C_EVT_DISCOVERY_COMPLETE.*/
- } ble_owned_c_evt_t;
- // Forward declaration of the ble_owned_t type.
- typedef struct ble_owned_c_s ble_owned_c_t;
- /**@brief Event handler type.
- *
- * @details This is the type of the event handler that should be provided by the application
- * of this module to receive events.
- */
- typedef void (* ble_owned_c_evt_handler_t)(ble_owned_c_t * p_ble_owned_c, ble_owned_c_evt_t const * p_evt);
- /**@brief OWNED Client structure. */
- struct ble_owned_c_s
- {
- uint8_t uuid_type; /**< UUID type. */
- uint16_t conn_handle; /**< Handle of the current connection. Set with @ref ble_owned_c_handles_assign when connected. */
- ble_owned_c_handles_t handles; /**< Handles on the connected peer device needed to interact with it. */
- ble_owned_c_evt_handler_t evt_handler; /**< Application event handler to be called when there is an event related to the OWNED. */
- };
- /**@brief OWNED Client initialization structure. */
- typedef struct
- {
- ble_owned_c_evt_handler_t evt_handler;
- } ble_owned_c_init_t;
- /**@brief Function for initializing the Nordic UART client module.
- *
- * @details This function registers with the Database Discovery module
- * for the OWNED. Doing so will make the Database Discovery
- * module look for the presence of a OWNED instance at the peer when a
- * discovery is started.
- *
- * @param[in] p_ble_owned_c Pointer to the OWNED client structure.
- * @param[in] p_ble_owned_c_init Pointer to the OWNED initialization structure containing the
- * initialization information.
- *
- * @retval NRF_SUCCESS If the module was initialized successfully. Otherwise, an error
- * code is returned. This function
- * propagates the error code returned by the Database Discovery module API
- * @ref ble_db_discovery_evt_register.
- */
- uint32_t ble_owned_c_init(ble_owned_c_t * p_ble_owned_c, ble_owned_c_init_t * p_ble_owned_c_init);
- /**@brief Function for handling events from the database discovery module.
- *
- * @details This function will handle an event from the database discovery module, and determine
- * if it relates to the discovery of OWNED at the peer. If so, it will
- * call the application's event handler indicating that OWNED has been
- * discovered at the peer. It also populates the event with the service related
- * information before providing it to the application.
- *
- * @param[in] p_ble_owned_c Pointer to the OWNED client structure.
- * @param[in] p_evt Pointer to the event received from the database discovery module.
- */
- void ble_owned_c_on_db_disc_evt(ble_owned_c_t * p_ble_owned_c, ble_db_discovery_evt_t * p_evt);
- /**@brief Function for handling BLE events from the SoftDevice.
- *
- * @details This function handles the BLE events received from the SoftDevice. If a BLE
- * event is relevant to the OWNED module, it is used to update
- * internal variables and, if necessary, send events to the application.
- *
- * @param[in] p_ble_evt Pointer to the BLE event.
- * @param[in] p_context Pointer to the OWNED client structure.
- */
- void ble_owned_c_on_ble_evt(ble_evt_t const * p_ble_evt, void * p_context);
- /**@brief Function for requesting the peer to start sending notification of TX characteristic.
- *
- * @details This function enables notifications of the OWNED TX characteristic at the peer
- * by writing to the CCCD of the OWNED TX characteristic.
- *
- * @param p_ble_owned_c Pointer to the OWNED client structure.
- *
- * @retval NRF_SUCCESS If the SoftDevice has been requested to write to the CCCD of the peer.
- * Otherwise, an error code is returned. This function propagates the error
- * code returned by the SoftDevice API @ref sd_ble_gattc_write.
- */
- uint32_t ble_owned_c_wr_notif_enable(ble_owned_c_t * p_ble_owned_c);
- /**@brief Function for sending a string to the server.
- *
- * @details This function writes the RX characteristic of the server.
- *
- * @param[in] p_ble_owned_c Pointer to the OWNED client structure.
- * @param[in] p_string String to be sent.
- * @param[in] length Length of the string.
- *
- * @retval NRF_SUCCESS If the string was sent successfully. Otherwise, an error code is returned.
- */
- uint32_t ble_owned_c_data_send(ble_owned_c_t * p_ble_owned_c, uint8_t * p_byte, uint16_t length);
- /**@brief Function for assigning handles to a this instance of OWNED_c.
- *
- * @details Call this function when a link has been established with a peer to
- * associate this link to this instance of the module. This makes it
- * possible to handle several link and associate each link to a particular
- * instance of this module. The connection handle and attribute handles will be
- * provided from the discovery event @ref ble_owned_C_EVT_DISCOVERY_COMPLETE.
- *
- * @param[in] p_ble_owned_c Pointer to the OWNED client structure instance to associate with these
- * handles.
- * @param[in] conn_handle Connection handle to associated with the given OWNED Instance.
- * @param[in] p_peer_handles Attribute handles on the OWNED server that you want this OWNED client to
- * interact with.
- *
- * @retval NRF_SUCCESS If the operation was successful.
- * @retval NRF_ERROR_NULL If a p_OWNED was a NULL pointer.
- */
- uint32_t ble_owned_c_handles_assign(ble_owned_c_t * p_ble_owned_c,
- uint16_t conn_handle,
- ble_owned_c_handles_t const * p_peer_handles);
- #ifdef __cplusplus
- }
- #endif
- #endif // ble_owned_C_H__
- /** @} */ // End tag for the file.
|