1 #define BTSTACK_FILE__ "gatt_whitelist.c"
2
3 #include <stdint.h>
4 #include <stdio.h>
5 #include "btstack.h"
6
7 #define HEARTBEAT_PERIOD_MS 2000
8
9 static btstack_timer_source_t heartbeat;
10 static btstack_packet_callback_registration_t hci_event_callback_registration;
11 static bd_addr_t addr;
12
heartbeat_handler(struct btstack_timer_source * ts)13 static void heartbeat_handler(struct btstack_timer_source *ts){
14 addr[5]++;
15 addr[4]++;
16 gap_whitelist_add(BD_ADDR_TYPE_LE_PUBLIC, addr);
17 printf("Add %s to Whitelist\n", bd_addr_to_str(addr));
18
19 btstack_run_loop_set_timer(ts, HEARTBEAT_PERIOD_MS);
20 btstack_run_loop_add_timer(ts);
21 }
22
packet_handler(uint8_t packet_type,uint16_t channel,uint8_t * packet,uint16_t size)23 static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
24 UNUSED(channel);
25 UNUSED(size);
26 if (packet_type != HCI_EVENT_PACKET) return;
27 switch (hci_event_packet_get_type(packet)) {
28 case BTSTACK_EVENT_STATE:
29 if (btstack_event_state_get_state(packet) != HCI_STATE_WORKING) return;
30 // started
31 printf("GAP Connect with Whitelist\n");
32 gap_connect_with_whitelist();
33 // set one-shot timer
34 heartbeat.process = &heartbeat_handler;
35 btstack_run_loop_set_timer(&heartbeat, HEARTBEAT_PERIOD_MS);
36 btstack_run_loop_add_timer(&heartbeat);
37 break;
38 default:
39 break;
40 }
41 }
42
43 int btstack_main(void);
btstack_main(void)44 int btstack_main(void)
45 {
46 // register for HCI events
47 hci_event_callback_registration.callback = &packet_handler;
48 hci_add_event_handler(&hci_event_callback_registration);
49
50 hci_power_control(HCI_POWER_ON);
51 return 0;
52 }
53 /* EXAMPLE_END */
54