/*** 
 * @Author: mbw
 * @Date: 2024-12-03 11:13:13
 * @LastEditors: mbw && 1600520629@qq.com
 * @LastEditTime: 2024-12-06 14:47:52
 * @FilePath: \ble_-tyq_-bjq_-ch584-m\APP\include\multiCentral.h
 * @Description: 
 * @
 * @Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
 */
/********************************** (C) COPYRIGHT *******************************
 * File Name          : multiCentral.h
 * Author             : WCH
 * Version            : V1.0
 * Date               : 2018/11/12
 * Description        :
 *********************************************************************************
 * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
 * Attention: This software (modified or not) and binary are used for 
 * microcontroller manufactured by Nanjing Qinheng Microelectronics.
 *******************************************************************************/

#ifndef MULTICENTRAL_H
#define MULTICENTRAL_H

#include "CONFIG.h"

#ifdef __cplusplus
extern "C" {
#endif

/*********************************************************************
 * INCLUDES
 */

/*********************************************************************
 * CONSTANTS
 */

// Simple BLE Observer Task Events
// 定义设备启动事件的常量
#define START_DEVICE_EVT              0x0001
// 定义启动发现过程事件的常量
#define START_DISCOVERY_EVT           0x0002
// 定义启动扫描过程事件的常量
#define START_SCAN_EVT                0x0004
// 定义启动服务发现事件的常量
#define START_SVC_DISCOVERY_EVT       0x0008
// 定义启动参数更新事件的常量
#define START_PARAM_UPDATE_EVT        0x0010
// 定义启动读或写操作事件的常量
#define START_READ_OR_WRITE_EVT       0x0020
// 定义启动读取RSSI事件的常量
#define START_READ_RSSI_EVT           0x0040
// 定义建立连接超时事件的常量
#define ESTABLISH_LINK_TIMEOUT_EVT    0x0080
// 定义启动写入CCCD（客户端特性配置描述符）事件的常量
#define START_WRITE_CCCD_EVT          0x0100

// 定义启动读或写操作事件的常量
#define CH2_READ_EVT       0x0200
#define CH3_WRITE_EVT       0x0400
#define CH4_NOTI_EVT       0x0800

#define CONNECT0_ITEM                 0
 #define CONNECT1_ITEM                 1
// #define CONNECT2_ITEM                 2
// #define CONNECT3_ITEM                 3
// #define CONNECT4_ITEM                 4
// #define CONNECT5_ITEM                 5
// #define CONNECT6_ITEM                 6
// #define CONNECT7_ITEM                 7




/*********************************************************************
 * MACROS
 */
typedef struct
{
    uint8_t  taskID;     // Task ID for internal task/event processing
    uint16_t connHandle; // Connection handle of current connection
    uint8_t  state;      // Application state
    uint8_t  peerAddr[B_ADDR_LEN];
    uint8_t  discState;           // Discovery state
    uint8_t  procedureInProgress; // GATT read/write procedure state
    uint16_t svcStartHdl;         // Discovered service start handle
    uint16_t svcEndHdl;           // Discovered service end handle
    uint16_t charHdl;             // Discovered characteristic handle
    uint16_t charHd2;             // Discovered characteristic handle
    uint16_t charHd3;             // Discovered characteristic handle
    uint16_t charHd4;             // Discovered characteristic handle
    uint16_t cccHdl;              // client characteristic configuration discovery handle
} centralConnItem_t;

typedef struct
{
    uint8_t peerAddr[B_ADDR_LEN];
} peerAddrDefItem_t;

/*********************************************************************
 * FUNCTIONS
 */

/*
 * Task Initialization for the BLE Application
 */
extern void Central_Init(void);

/*
 * Task Event Processor for the BLE Application
 */
extern uint16_t Central_ProcessEvent(uint8_t task_id, uint16_t events);
extern centralConnItem_t centralConnList[CENTRAL_MAX_CONNECTION];

int BSP_Master_Send(centralConnItem_t *centralConnList, uint8_t id, uint8_t *Data, uint8_t Len);
/*********************************************************************
*********************************************************************/

#ifdef __cplusplus
}
#endif

#endif /* MULTICENTRAL_H */
