82 lines
2.3 KiB
C
82 lines
2.3 KiB
C
#ifndef __BAROS_BLE_H__
|
|
#define __BAROS_BLE_H__
|
|
|
|
#include <stdbool.h>
|
|
#include "esp_event_base.h"
|
|
#include "host/ble_hs.h"
|
|
|
|
|
|
#ifdef MACSTR
|
|
#undef MACSTR
|
|
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
|
|
#endif
|
|
|
|
#ifdef MAC2STR
|
|
#undef MAC2STR
|
|
#define MAC2STR(a) (uint8_t)(a)[0], (uint8_t)(a)[1], (uint8_t)(a)[2], (uint8_t)(a)[3], (uint8_t)(a)[4], (uint8_t)(a)[5]
|
|
#endif
|
|
|
|
#define BAROS_NAME_MAX_LEN ( 32)
|
|
#define BAROS_BLE_SERVICE_PUMP_ENABLED (0x4200)
|
|
#define BAROS_BLE_SERVICE_PUMP_STATE (0x4300)
|
|
#define BAROS_BLE_SERVICE_PUMP_DURATION (0x4350)
|
|
|
|
#define BAROS_BLE_SERVICE_BARBACK (0x4400)
|
|
|
|
#define BAROS_CHAR_BUTTON (BAROS_BLE_SERVICE_BARBACK + 1) // 0x4401
|
|
#define BAROS_CHAR_NAME (BAROS_BLE_SERVICE_BARBACK + 2) // 0x4402
|
|
#define BAROS_CHAR_POUR (BAROS_BLE_SERVICE_BARBACK + 3) // 0x4403
|
|
|
|
ESP_EVENT_DECLARE_BASE(EVENT_BAROS_BLE);
|
|
|
|
#include "baros.h"
|
|
|
|
typedef enum {
|
|
BAROS_BLE_DISC,
|
|
BAROS_BLE_CONNECT,
|
|
} baros_ble_event_t;
|
|
|
|
typedef struct {
|
|
const char *name;
|
|
baros_role_t role;
|
|
} baros_ble_cfg_t;
|
|
|
|
typedef struct {
|
|
char *name;
|
|
uint8_t name_len;
|
|
ble_addr_t addr;
|
|
baros_role_t role;
|
|
} baros_ble_discovery_t;
|
|
|
|
typedef void baros_ble_connect_callback_t(ble_addr_t addr, void *arg);
|
|
|
|
typedef struct {
|
|
ble_addr_t addr;
|
|
void *arg;
|
|
baros_ble_connect_callback_t *cb;
|
|
} baros_ble_connect_cfg_t;
|
|
|
|
typedef struct baros_list_node baros_list_node_t;
|
|
|
|
struct baros_list_node {
|
|
baros_list_node_t *first;
|
|
baros_list_node_t *last;
|
|
baros_list_node_t *next;
|
|
baros_list_node_t *prev;
|
|
void *element;
|
|
};
|
|
|
|
uint8_t baros_ble_init(baros_ble_cfg_t *cfg);
|
|
void baros_ble_connect(baros_ble_connect_cfg_t *cfg);
|
|
|
|
typedef bool baros_list_find_element_callback(void *element, void *arg);
|
|
|
|
void *baros_list_find_element(baros_list_node_t *list, baros_list_find_element_callback *cb, void *arg);
|
|
void *baros_list_find_node(baros_list_node_t *list, baros_list_find_element_callback *cb, void *arg);
|
|
void baros_list_free(baros_list_node_t *list);
|
|
baros_list_node_t *baros_list_find_all_nodes(baros_list_node_t *list, baros_list_find_element_callback *cb, void *arg);
|
|
baros_list_node_t *baros_list_add(baros_list_node_t *list, void *element);
|
|
|
|
extern baros_list_node_t *peer_list;
|
|
|
|
#endif
|