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