xref: /btstack/test/gap/gap_whitelist.c (revision db88441f671cf9b797d1a7638cc0e38d13db6ac0)
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 
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 
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);
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