mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-01-17 07:19:42 +00:00
example/le_counter: add Battery Service
This commit is contained in:
parent
23ffcbe214
commit
8577affdb5
@ -163,7 +163,7 @@ sdp_bnep_query: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} ${SDP_CLIENT} sdp_bnep_
|
||||
spp_counter: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} spp_counter.c
|
||||
${CC} $^ ${CFLAGS} ${LDFLAGS} -o $@
|
||||
|
||||
le_counter: le_counter.h ${CORE_OBJ} ${COMMON_OBJ} ${ATT_OBJ} ${GATT_SERVER_OBJ} ${SM_OBJ} le_counter.c
|
||||
le_counter: le_counter.h ${CORE_OBJ} ${COMMON_OBJ} ${ATT_OBJ} ${GATT_SERVER_OBJ} ${SM_OBJ} battery_service_server.o le_counter.c
|
||||
${CC} $(filter-out le_counter.h,$^) ${CFLAGS} ${LDFLAGS} -o $@
|
||||
|
||||
sm_pairing_peripheral: sm_pairing_peripheral.h ${CORE_OBJ} ${COMMON_OBJ} ${ATT_OBJ} ${GATT_SERVER_OBJ} ${SM_OBJ} sm_pairing_peripheral.c
|
||||
|
@ -52,6 +52,7 @@
|
||||
|
||||
#include "le_counter.h"
|
||||
#include "btstack.h"
|
||||
#include "ble/battery_service_server.h"
|
||||
|
||||
#define HEARTBEAT_PERIOD_MS 1000
|
||||
|
||||
@ -59,7 +60,9 @@
|
||||
*
|
||||
* @text Listing MainConfiguration shows main application code.
|
||||
* It initializes L2CAP, the Security Manager and configures the ATT Server with the pre-compiled
|
||||
* ATT Database generated from $le_counter.gatt$. Finally, it configures the advertisements
|
||||
* ATT Database generated from $le_counter.gatt$.
|
||||
* Additionally, it enables the Battery Service Server with the current battery level.
|
||||
* Finally, it configures the advertisements
|
||||
* and the heartbeat handler and boots the Bluetooth stack.
|
||||
* In this example, the Advertisement contains the Flags attribute and the device name.
|
||||
* The flag 0x06 indicates: LE General Discoverable Mode and BR/EDR not supported.
|
||||
@ -70,6 +73,7 @@ static int le_notification_enabled;
|
||||
static btstack_timer_source_t heartbeat;
|
||||
static btstack_packet_callback_registration_t hci_event_callback_registration;
|
||||
static hci_con_handle_t con_handle;
|
||||
static uint8_t battery = 100;
|
||||
|
||||
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
||||
static uint16_t att_read_callback(hci_con_handle_t con_handle, uint16_t att_handle, uint16_t offset, uint8_t * buffer, uint16_t buffer_size);
|
||||
@ -103,6 +107,9 @@ static void le_counter_setup(void){
|
||||
att_server_init(profile_data, att_read_callback, att_write_callback);
|
||||
att_server_register_packet_handler(packet_handler);
|
||||
|
||||
// setup battery service
|
||||
battery_service_server_init(battery);
|
||||
|
||||
// setup advertisements
|
||||
uint16_t adv_int_min = 0x0030;
|
||||
uint16_t adv_int_max = 0x0030;
|
||||
@ -146,6 +153,14 @@ static void heartbeat_handler(struct btstack_timer_source *ts){
|
||||
beat();
|
||||
att_server_request_can_send_now_event(con_handle);
|
||||
}
|
||||
|
||||
// simulate battery drain
|
||||
battery--;
|
||||
if (battery < 50) {
|
||||
battery = 100;
|
||||
}
|
||||
battery_service_set_server_battery_value(battery);
|
||||
|
||||
btstack_run_loop_set_timer(ts, HEARTBEAT_PERIOD_MS);
|
||||
btstack_run_loop_add_timer(ts);
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
PRIMARY_SERVICE, GAP_SERVICE
|
||||
CHARACTERISTIC, GAP_DEVICE_NAME, READ, "SPP+LE Counter"
|
||||
|
||||
// add Battery Service
|
||||
#import <battery_service.gatt>
|
||||
|
||||
PRIMARY_SERVICE, GATT_SERVICE
|
||||
CHARACTERISTIC, GATT_SERVICE_CHANGED, READ,
|
||||
|
||||
@ -8,5 +11,3 @@ CHARACTERISTIC, GATT_SERVICE_CHANGED, READ,
|
||||
PRIMARY_SERVICE, 0000FF10-0000-1000-8000-00805F9B34FB
|
||||
// Counter Characteristic, with read and notify
|
||||
CHARACTERISTIC, 0000FF11-0000-1000-8000-00805F9B34FB, READ | NOTIFY | DYNAMIC,
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user