Files
AC707N/loader/ble_app_ota_update/app/inc/le_common.h
T
2025-12-03 11:12:34 +08:00

158 lines
4.9 KiB
C

/*********************************************************************************************
* Filename : le_counter.h
* Description :
* Author : Bingquan
* Email : bingquan_cai@zh-jieli.com
* Last modifiled : 2017-01-17 15:17
* Copyright:(c)JIELI 2011-2016 @ , All Rights Reserved.
*********************************************************************************************/
#ifndef __LE_COMMON_H_
#define __LE_COMMON_H_
typedef enum {
BLE_ST_NULL = 0,
BLE_ST_INIT_OK, //init ok
BLE_ST_IDLE,
BLE_ST_ADV,
BLE_ST_CONNECT,
BLE_ST_SEND_DISCONN,
BLE_ST_NOTIFY_IDICATE,//server ok
BLE_ST_SCAN,
BLE_ST_SEARCH_COMPLETE,//client ok
} ble_state_e;
enum {
APP_BLE_NO_ERROR = 0,
APP_BLE_BUFF_ERROR = 1,
APP_BLE_BUFF_FULL = 2,
APP_BLE_OPERATION_ERROR = 3,
APP_BLE_IS_DISCONN = 4,
};
typedef enum {
HCI_EIR_DATATYPE_FLAGS = 0x01,
HCI_EIR_DATATYPE_MORE_16BIT_SERVICE_UUIDS = 0x02,
HCI_EIR_DATATYPE_COMPLETE_16BIT_SERVICE_UUIDS = 0x03,
HCI_EIR_DATATYPE_MORE_32BIT_SERVICE_UUIDS = 0x04,
HCI_EIR_DATATYPE_COMPLETE_32BIT_SERVICE_UUIDS = 0x05,
HCI_EIR_DATATYPE_MORE_128BIT_SERVICE_UUIDS = 0x06,
HCI_EIR_DATATYPE_COMPLETE_128BIT_SERVICE_UUIDS = 0x07,
HCI_EIR_DATATYPE_SHORTENED_LOCAL_NAME = 0x08,
HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME = 0x09,
HCI_EIR_DATATYPE_TX_POWER_LEVEL = 0x0A,
HCI_EIR_DATATYPE_CLASS_OF_DEVICE = 0x0D,
HCI_EIR_DATATYPE_SIMPLE_PAIRING_HASH_C = 0x0E,
HCI_EIR_DATATYPE_SIMPLE_PAIRING_RANDOMIZER_R = 0x0F,
HCI_EIR_DATATYPE_SECURITY_MANAGER_TK_VALUE = 0x10,
HCI_EIR_DATATYPE_SECURITY_MANAGER_OOB_FLAGS = 0x11,
HCI_EIR_DATATYPE_SLAVE_CONNECTION_INTERVAL_RANGE = 0x12,
HCI_EIR_DATATYPE_16BIT_SERVICE_SOLICITATION_UUIDS = 0x14,
HCI_EIR_DATATYPE_128BIT_SERVICE_SOLICITATION_UUIDS = 0x15,
HCI_EIR_DATATYPE_SERVICE_DATA = 0x16,
HCI_EIR_DATATYPE_MANUFACTURER_SPECIFIC_DATA = 0xFF
} HCI_EIR_datatype_t;
#define ADV_RSP_PACKET_MAX 31
static inline u8 make_eir_packet_val(u8 *buf, u16 offset, u8 data_type, u32 val, u8 val_size)
{
if (ADV_RSP_PACKET_MAX - offset < val_size + 2) {
return offset + val_size + 2;
}
buf[0] = val_size + 1;
buf[1] = data_type;
memcpy(buf + 2, &val, val_size);
return val_size + 2;
}
static inline u8 make_eir_packet_data(u8 *buf, u16 offset, u8 data_type, u8 *data, u8 data_len)
{
if (ADV_RSP_PACKET_MAX - offset < data_len + 2) {
return offset + data_len + 2;
}
buf[0] = data_len + 1;
buf[1] = data_type;
memcpy(buf + 2, data, data_len);
return data_len + 2;
}
#if 0
#include "typedef.h"
#include <stdint.h>
//--------------------------------------------
struct conn_param_t {
u16 interval;
u16 latency;
u16 timeout;
};
// #define NOTIFY_TYPE 1
// #define INDICATION_TYPE 2
// Minimum/default MTU
typedef enum {
BLE_ST_NULL = 0,
BLE_ST_INIT_OK, //init ok
BLE_ST_IDLE,
BLE_ST_ADV,
BLE_ST_CONNECT,
BLE_ST_SEND_DISCONN,
BLE_ST_NOTIFY_IDICATE,//server ok
BLE_ST_SCAN,
BLE_ST_SEARCH_COMPLETE,//client ok
} ble_state_e;
enum {
APP_BLE_NO_ERROR = 0,
APP_BLE_BUFF_ERROR = 1,
APP_BLE_BUFF_FULL = 2,
APP_BLE_OPERATION_ERROR = 3,
APP_BLE_IS_DISCONN = 4,
};
struct ble_server_operation_t {
int(*adv_enable)(void *priv, u32 enable);
int(*disconnect)(void *priv);
int(*get_buffer_vaild)(void *priv);
int(*send_data)(void *priv, void *buf, u16 len);
int(*regist_wakeup_send)(void *priv, void *cbk);
int(*regist_recieve_cbk)(void *priv, void *cbk);
int(*regist_state_cbk)(void *priv, void *cbk);
};
void ble_get_server_operation_table(struct ble_server_operation_t **interface_pt);
struct ble_client_operation_t {
int(*scan_enable)(void *priv, u32 enable);
int(*disconnect)(void *priv);
int(*get_buffer_vaild)(void *priv);
int(*write_data)(void *priv, void *buf, u16 len);
int(*read_do)(void *priv);
int(*regist_wakeup_send)(void *priv, void *cbk);
int(*regist_recieve_cbk)(void *priv, void *cbk);
int(*regist_state_cbk)(void *priv, void *cbk);
};
void ble_get_client_operation_table(struct ble_client_operation_t **interface_pt);
extern void le_l2cap_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size));
#endif
#endif