/*
 * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD 
 *
 * SPDX-License-Identifier: Unlicense OR CC0-1.0 
 */
 
#pragma once 
 
#include <stdint.h>
#include "esp_blufi_api.h"  // 添加缺少的类型声明
#include "esp_log.h"
 
#define BLUFI_TAG "cx-mxb-wifi"
#define BLUFI_INFO(fmt, ...)   ESP_LOGI(BLUFI_TAG, fmt, ##__VA_ARGS__)
#define BLUFI_ERROR(fmt, ...)  ESP_LOGE(BLUFI_TAG, fmt, ##__VA_ARGS__)
 
#ifdef __cplusplus 
extern "C" {
#endif
 
// 安全协议函数
void blufi_dh_negotiate_data_handler(uint8_t *data, int len, 
                                     uint8_t **output_data, int *output_len, 
                                     bool *need_free);
int blufi_aes_encrypt(uint8_t iv8, uint8_t *crypt_data, int crypt_len);
int blufi_aes_decrypt(uint8_t iv8, uint8_t *crypt_data, int crypt_len);
uint16_t blufi_crc_checksum(uint8_t iv8, uint8_t *data, int len);
 
// 初始化和反初始化
int blufi_security_init(void);
void blufi_security_deinit(void);
 
// BLE GAP 回调注册 
int esp_blufi_gap_register_callback(void);
 
// Blufi 主机控制接口 
esp_err_t esp_blufi_host_init(void);
esp_err_t esp_blufi_host_and_cb_init(esp_blufi_callbacks_t *callbacks);
esp_err_t esp_blufi_host_deinit(void);
 
// Blufi 控制器接口 
esp_err_t esp_blufi_controller_init(void);
esp_err_t esp_blufi_controller_deinit(void);
 
// 主测试函数
void blufi_entry_func(void);
void blufi_entry_func_deinit(void);

#ifdef __cplusplus 
}
#endif