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} GapPairing;
57
58typedef struct {
59 uint16_t conn_interval;
60 uint16_t slave_latency;
61 uint16_t supervisor_timeout;
63
64typedef struct {
65 uint16_t conn_int_min;
66 uint16_t conn_int_max;
67 uint16_t slave_latency;
68 uint16_t supervisor_timeout;
70
71typedef struct {
72 struct {
73 uint8_t UUID_Type;
74 uint16_t Service_UUID_16;
75 uint8_t Service_UUID_128[16];
76 } adv_service;
77 uint8_t mfg_data[23];
78 uint8_t mfg_data_len;
79 uint16_t appearance_char;
80 bool bonding_mode;
81 GapPairing pairing_method;
82 uint8_t mac_address[GAP_MAC_ADDR_SIZE];
85} GapConfig;
86
87typedef struct {
88 // Encryption Root key. Must be unique per-device (or app)
89 uint8_t erk[GAP_KEY_SIZE];
90 // Identity Root key. Used for resolving RPAs, if configured
91 uint8_t irk[GAP_KEY_SIZE];
93
94bool gap_init(
95 GapConfig* config,
96 const GapRootSecurityKeys* root_keys,
97 GapEventCallback on_event_cb,
98 void* context);
99
100void gap_start_advertising(void);
101
102void gap_stop_advertising(void);
103
104GapState gap_get_state(void);
105
106void gap_thread_stop(void);
107
108void gap_emit_ble_beacon_status_event(bool active);
109
110#ifdef __cplusplus
111}
112#endif
Version HAL API.
#define FURI_HAL_VERSION_DEVICE_NAME_LENGTH
BLE symbol + "Flipper " + name.
Definition furi_hal_version.h:20
Definition gap.h:71
Definition gap.h:58
Definition gap.h:64
Definition gap.h:36
Definition gap.h:87
Definition gap.h:31