![](/media/cache/profiles/profile2.jpg.50x50_q85.jpg)
This software setup a central node of a star topology network
Dependencies: MQTT target_st_bluenrg
Fork of ble-star-mbed by
Diff: inc/BleSlaveService.h
- Revision:
- 0:1902469bdd2d
diff -r 000000000000 -r 1902469bdd2d inc/BleSlaveService.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inc/BleSlaveService.h Tue Feb 20 11:21:41 2018 +0000 @@ -0,0 +1,129 @@ +#ifndef __BLESLAVESERVICE_H__ +#define __BLESLAVESERVICE_H__ + +#include "ble/GattService.h" +#include "ble/GattCharacteristic.h" +#include <BleMasterService.h> + +/* Attribute value format of the STAR_CHAR */ +/* Timestamp | Node ID | Type ID | value | Type ID | value | Type ID | value | */ +/* 2 bytes | 2 bytes | 1 byte | x bytes | 1 byte | x bytes | 1 byte | x bytes | */ +#define STAR_CHAR_MAX_VALUE_LEN 20 + +#define uint8_tNAME_BLESTAR1 'B','l','e','S','t','a','r','1' + + +/* Store Value into a buffer in Little Endian Format */ +#define STORE_LE_16(buf, val) ( ((buf)[0] = (uint8_t) (val) ) , \ + ((buf)[1] = (uint8_t) (val>>8) ) ) + +#define STORE_LE_32(buf, val) ( ((buf)[0] = (uint8_t) (val) ) , \ + ((buf)[1] = (uint8_t) (val>>8) ) , \ + ((buf)[2] = (uint8_t) (val>>16) ) , \ + ((buf)[3] = (uint8_t) (val>>24) ) ) + +#define STORE_BE_32(buf, val) ( ((buf)[3] = (uint8_t) (val) ) , \ + ((buf)[2] = (uint8_t) (val>>8) ) , \ + ((buf)[1] = (uint8_t) (val>>16) ) , \ + ((buf)[0] = (uint8_t) (val>>24) ) ) + + + + + +typedef BLEProtocol::AddressBytes_t tBDAddr; + + /* MANUFACTURER_SPECIFIC_DATA */ +extern uint8_t manuf_data[6]; + + + + +/* BLE Slave Service exported types */ +typedef struct { + uint8_t data_length; + uint8_t *attribute_value; + tBDAddr devAddr; + uint16_t attribute_handle; +} NotificationData_t; + +typedef struct { + uint8_t is_discoverable; + uint8_t is_connected; + uint16_t conn_handle; + uint16_t star_hw_serv_handle; + uint16_t star_data_char_handle; + uint16_t star_config_char_handle; + uint8_t star_data_char_notify; + uint8_t star_config_value[3]; + uint8_t star_config_value_len; + NotificationData_t notification_data; +} SlaveDevice_t; + + +/* This struct owns the Change_Notification_Status() parameters */ +typedef struct { + uint8_t *att_data; + uint8_t *attr_value; + uint16_t conn_handle; + uint8_t i; + uint32_t feature_mask; + uint8_t frequency; +}ChangeNotificationQueue; + + + + +/* ---- BLE Slave Service exported functions ---- */ +/* Set the device as a slave in discoverable mode */ +void setSlaveDiscoverable (void); + +/* Stop advertising */ +void stopAdv (void); + +/* Sets some notification properties */ +void setNotificationProperty (uint16_t conn_handle, uint8_t i, uint32_t feature_mask, + uint8_t command, uint8_t data); +/* Disable all notifications */ +void disableAllNotifications (void); + +/* This function enables or disables the new peripheral scanning */ +void setNewNodesScanning (uint8_t enabled); + +/* This function forwards to the peripheral device the command coming from the Cloud */ +void Forward_Command_To_BlueNRG (uint8_t* data_ptr, uint8_t data_length); + +/* This function is called when an attribute gets modified */ +void AttributeModified_CB (const GattWriteCallbackParams* param); + +/* Notification callbacks */ +void onUpdatesDisabledCallback (Gap::Handle_t handle); +void onUpdatesEnabledCallback (GattAttribute::Handle_t handle); + +/* Retrieve the device index from the peripheral device address */ +uint8_t Get_Device_Index_From_Addr (uint8_t *addr); + +/* This function is called to Enable/Disable MIC/PRX/AGM/SFusion notifications */ +void Change_Notification_Status (uint8_t *att_data, uint8_t *attr_value, uint16_t conn_handle, uint8_t i, + uint32_t feature_mask, uint8_t frequency); + +/* Add all services using a vendor specific UUIDs */ +void addAllServices (void); + +/* Forwards to master all notifications from peripherals */ +//void notifyMaster (uint8_t data_length, uint8_t* attribute_value, GattCharacteristic *pCharac); +void notifyMaster (uint8_t data_length, uint8_t* attribute_value, uint16_t attribute_handle); + +/* Function used to call Attribute_Modified_CB outside the callback call */ +void createAttribute_Modified_CB_Prototype (uint16_t handle, uint8_t data_length, uint8_t *att_data); + + + + + + + + + + +#endif /*__BLESLAVESERVICE_H__*/ \ No newline at end of file