File syn_ble_gap.h¶
File List > ble > syn_ble_gap.h
Go to the documentation of this file
#ifndef SYN_BLE_GAP_H
#define SYN_BLE_GAP_H
#include "../common/syn_defs.h"
#include "syn_ble_hci.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SYN_BLE_ADV_IND 0x00U
#define SYN_BLE_ADV_DIRECT_IND 0x01U
#define SYN_BLE_ADV_SCAN_IND 0x02U
#define SYN_BLE_ADV_NONCONN_IND 0x03U
typedef enum {
SYN_BLE_GAP_EVT_CONNECTED = 0,
SYN_BLE_GAP_EVT_DISCONNECTED,
SYN_BLE_GAP_EVT_ADV_REPORT
} SYN_BLE_GAP_EventType;
typedef struct {
uint16_t conn_handle;
uint8_t peer_addr_type;
uint8_t peer_addr[6];
uint16_t conn_interval;
uint16_t conn_latency;
uint16_t supervision_timeout;
} SYN_BLE_GAP_ConnInfo;
typedef struct {
uint8_t evt_type;
uint8_t addr_type;
uint8_t addr[6];
const uint8_t *data;
uint8_t data_len;
int8_t rssi;
} SYN_BLE_GAP_AdvReport;
typedef struct SYN_BLE_GAP_s SYN_BLE_GAP;
typedef void (*SYN_BLE_GAP_EventCb)(SYN_BLE_GAP *gap, SYN_BLE_GAP_EventType evt_type,
const void *evt_data, void *user_data);
typedef struct {
uint16_t interval_min;
uint16_t interval_max;
uint8_t type;
uint8_t own_addr_type;
uint8_t peer_addr_type;
uint8_t peer_addr[6];
uint8_t channel_map;
uint8_t filter_policy;
} SYN_BLE_GAP_AdvParams;
struct SYN_BLE_GAP_s {
SYN_BLE_HCI *hci;
SYN_BLE_GAP_EventCb evt_cb;
void *user_data;
bool advertising;
bool scanning;
};
SYN_Status syn_ble_gap_init(SYN_BLE_GAP *gap, SYN_BLE_HCI *hci, SYN_BLE_GAP_EventCb evt_cb,
void *user_data);
SYN_Status syn_ble_gap_set_adv_data(SYN_BLE_GAP *gap, const uint8_t *data, uint8_t len,
uint8_t *tx_buf, uint16_t *tx_len);
SYN_Status syn_ble_gap_set_adv_enable(SYN_BLE_GAP *gap, bool enable, uint8_t *tx_buf,
uint16_t *tx_len);
SYN_Status syn_ble_gap_process_hci_evt(SYN_BLE_GAP *gap, uint8_t evt_code, const uint8_t *payload,
uint8_t len);
#ifdef __cplusplus
}
#endif
#endif /* SYN_BLE_GAP_H */