Loading...
Searching...
No Matches
gap.h
1#pragma once
2
3#include <stdint.h>
4#include <stdbool.h>
5
6#include <furi_hal_version.h>
7
8#define GAP_MAC_ADDR_SIZE (6)
9#define GAP_KEY_SIZE (0x10)
10
11/*
12 * GAP helpers - background thread that handles BLE GAP events and advertising.
13 */
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19typedef enum {
20 GapEventTypeConnected,
21 GapEventTypeDisconnected,
22 GapEventTypeStartAdvertising,
23 GapEventTypeStopAdvertising,
24 GapEventTypePinCodeShow,
25 GapEventTypePinCodeVerify,
26 GapEventTypeUpdateMTU,
27 GapEventTypeBeaconStart,
28 GapEventTypeBeaconStop,
29} GapEventType;
30
31typedef union {
32 uint32_t pin_code;
33 uint16_t max_packet_size;
35
36typedef struct {
37 GapEventType type;
38 GapEventData data;
39} GapEvent;
40
41typedef bool (*GapEventCallback)(GapEvent event, void* context);
42
43typedef enum {
44 GapStateUninitialized,
45 GapStateIdle,
46 GapStateStartingAdv,
47 GapStateAdvFast,
48 GapStateAdvLowPower,
49 GapStateConnected,
50} GapState;
51
52typedef enum {
53 GapPairingNone,
54 GapPairingPinCodeShow,
55 GapPairingPinCodeVerifyYesNo,
56 GapPairingCount,
57} GapPairing;
58
59typedef struct {
60 uint16_t conn_interval;
61 uint16_t slave_latency;
62 uint16_t supervisor_timeout;
64
65typedef struct {
66 uint16_t conn_int_min;
67 uint16_t conn_int_max;
68 uint16_t slave_latency;
69 uint16_t supervisor_timeout;
71
72typedef struct {
73 struct {
74 uint8_t UUID_Type;
75 uint16_t Service_UUID_16;
76 uint8_t Service_UUID_128[16];
77 } adv_service;
78 uint8_t mfg_data[23];
79 uint8_t mfg_data_len;
80 uint16_t appearance_char;
81 bool bonding_mode;
82 GapPairing pairing_method;
83 uint8_t mac_address[GAP_MAC_ADDR_SIZE];
86} GapConfig;
87
88typedef struct {
89 // Encryption Root key. Must be unique per-device (or app)
90 uint8_t erk[GAP_KEY_SIZE];
91 // Identity Root key. Used for resolving RPAs, if configured
92 uint8_t irk[GAP_KEY_SIZE];
94
95bool gap_init(
96 GapConfig* config,
97 const GapRootSecurityKeys* root_keys,
98 GapEventCallback on_event_cb,
99 void* context);
100
101void gap_start_advertising(void);
102
103void gap_stop_advertising(void);
104
105GapState gap_get_state(void);
106
107void gap_thread_stop(void);
108
109void gap_emit_ble_beacon_status_event(bool active);
110
111#ifdef __cplusplus
112}
113#endif
Version HAL API.
#define FURI_HAL_VERSION_DEVICE_NAME_LENGTH
BLE symbol + name.
Definition furi_hal_version.h:22
Definition gap.h:72
Definition gap.h:59
Definition gap.h:65
Definition gap.h:36
Definition gap.h:88
Definition gap.h:31