/*****************************************************************************
 * Module    : User
 * File      : user_bt.h
 * Author    : Hanny
 * Function  : 蓝牙相关用户API接口
 *****************************************************************************/
#ifndef USER_BT_H
#define USER_BT_H

#define BT_RFINFO_SET           0x06
#define BT_RFINFO_MIC           0x0a
#define BT_RFINFO_NAME          0x0e
#define BT_RFINFO_ADDR          0x2e
#define BT_RFINFO_VOICE         0x40

#if BT_SAMPLERATE_16K
    #define BT_VIOCE_SAMPLES    256
#else
    #define BT_VIOCE_SAMPLES    128
#endif

//BT_RFINFO_SET BIT
#define BT_RFINFO_SET_NAME      0
#define BT_RFINFO_SET_ADDR      1
#define BT_RFINFO_SET_VOICE     2
#define BT_RFINFO_SET_MIC       3
#define BT_RFINFO_SET_DYADDR    6

/*****************************************************************************
 * Module    : 蓝牙配对信息偏移地址。为了方便记忆，编号0无效，从1开始
 *****************************************************************************/
#define BT_PARAM_LATEST             0       //最后一次有效的蓝牙编号        1byte
#define BT_PARAM_ORDER              4       //配对信息排序                  保留16byte
#define BT_PARAM_PAIRS              20      //配对信息                      58byte x 4 = 232byte
//以下是每条配对信息的偏移地址
#define BT_PAIR_NUM                 4       //最多支持4条配对信息
#define BT_PAIR_SIZE                58                                                  //配对信息，58Byte
#define BT_PAIR_VALID(n)            ((BT_PAIR_SIZE * (n)) + BT_PARAM_PAIRS)             //配对信息是否有效      1byte
#define BT_PAIR_ADDR(n)             ((BT_PAIR_SIZE * (n)) + BT_PARAM_PAIRS + 4)         //蓝牙地址              6byte
#define BT_PAIR_LINK_KEY(n)         ((BT_PAIR_SIZE * (n)) + BT_PARAM_PAIRS + 10)        //蓝牙link key          16byte
#define BT_PAIR_NAME(n)             ((BT_PAIR_SIZE * (n)) + BT_PARAM_PAIRS + 26)        //蓝牙名字              26byte

typedef struct __TYPE_BT_PAIR {
    u8 valid;                               //最后一次有效的蓝牙编号
    u8 reserved[3];
    u8 addr[6];
    u8 link_key[16];
    u8 name[32];
} TYPE_BT_PAIR;

typedef struct __TYPE_BT_PARAM_PAIR {
    u8 latest;                              //最后一次有效的蓝牙编号
    u8 reserved[3];
    u8 order[16];
    TYPE_BT_PAIR pair[4];
} TYPE_BT_PARAM_PAIR;

typedef struct {
    u8 disp_bt_sta;
    u8 disp_dev_bat;                //苹果设备电量显示值
    u8 add_sco_flag;                //判断是否已经调用add_sco函数
    u8 hid_enable;                  //是否启用HID
} type_bt;

extern type_bt t_bt;
extern bool bt_play_status;
void user_bt_init(void);
void user_bt_off(void);
void user_bt_event(void);
u8 bt_status_get(void);             //重新封装蓝牙状态获取
void bt_pause_play(void);           //蓝牙音乐播放/暂停

bool bt_hid_photo(void);

void btinfo_get_name(u8 *ptr);
void btinfo_get_addr(u8 *ptr);
void btinfo_get_rfparam(u8 *ptr);
void btinfo_get_mic(u8 *ptr);
void btinfo_get_voice(u8 *ptr);
void spp_tx(u8 *ptr, u8 len);               //SPP发送接口

extern volatile u8 bt_sleep_cnt;             //BT模块计数进入休眠模式
void send_bat_to_iphone_hook(void);
#endif
