/*----------------------------------------------------------------
* FileName    : bms_devid.h
* Create Date : 2016-03-08
*
*---------------------------------------------------------------*/

#ifndef __BSM_DEVID_H__
#define __BSM_DEVID_H__


typedef enum
{
    BMS_DB_MASTER_OPRATOR,
    BMS_DB_SLAVE_OPRATOR
}BMS_DB_OPRATOR_TYPE_ENUM;

#define BMS_DB_SWITCH_ON       1   /*  风扇 :开; 接触器 :闭合; 干节点 :使能；均衡: 工作；*/
#define BMS_DB_SWITCH_OFF      2   /*  风扇 :关; 接触器 :断开; 干节点 :恢复正常；均衡: 不工作；*/
/* BMS_DB_ADDR_TYPE的bit11~bit15，定义了devid */
typedef enum
{
    BMS_OBJ_MASTER_ID = 1,

    BMS_OBJ_SLAVE_ID_1 = 2,
    BMS_OBJ_SLAVE_ID_2 = 3,
    BMS_OBJ_SLAVE_ID_3 = 4,
    BMS_OBJ_SLAVE_ID_4 = 5,

    BMS_OBJ_SLAVE_ID_MAX = BMS_OBJ_SLAVE_ID_1 + 30
}BMS_OBJ_DEV_ID_ENUM;


#define BMS_OBJ_SLAVECTRL_ID_BUTT  ((uint16_t)MAX_ENABLE_SLAVE_NUM + (uint16_t)BMS_OBJ_SLAVE_ID_1)

/* ESS_IBU_DB_SLAVECTRL_ID_BUTT专用于储能一体机DB  */
#define ESS_IBU_DB_SLAVECTRL_ID_BUTT    ((uint16_t)MAX_SAMPLE_CHIP_NUM + (uint16_t)BMS_OBJ_SLAVE_ID_1)

#define MAX_SLAVE_NUM_FOR_APPLY_FOR_MEMORY 16
/* 跟从控devid保持一致 */
typedef enum
{
    BMS_CURRNET_BRD_OBJ_ID_0 = 1,
    BMS_MASTER_OBJ_ID = 2,
    BMS_SLAVE_OBJ_ID_0 = 3,

    BMS_SLAVE_OBJ_ID_MAX = BMS_SLAVE_OBJ_ID_0 + 30,

}BMS_SLAVE_OBJ_ID_ENUM;

#ifdef _DEBUG
#define BMS_SLAVE_OBJ_ID_0 3
#endif

#define MAX_DEVICE_ID_BUTT MAX(BMS_OBJ_SLAVE_ID_MAX, BMS_SLAVE_OBJ_ID_MAX)

#define BMS_SLAVE_OBJ_ID_BUTT  (MAX_ENABLE_SLAVE_NUM + BMS_SLAVE_OBJ_ID_0)

typedef enum{
    PCS_NORMAL_STATE,
    PCS_CHARGE_FULL_STATE,
    PCS_DISCHARGE_EMPTY_STATE,
    PCS_STANDBY_STATE,
    PCS_STOP_STATE,
    PCS_STATE_BUTT
}PCS_STATE_ENUM;/*提供给外部的状态*/

/* 根据一簇的devid，计算簇的索引 */
#define BMS_DB_GET_SLAVE_INDEX_BY_DEVID(devId) (devId - (uint32_t)BMS_OBJ_SLAVE_ID_1)
/* 根据簇索引，计算devid */
#define BMS_DB_GET_DEVID_BY_SLAVE_INDEX(cluterIndex) (cluterIndex + (uint32_t)BMS_OBJ_SLAVE_ID_1)

#define BMS_DB_GET_DEVICE_ID_BY_SALVE_INDEX(index) (index + (uint32_t)BMS_SLAVE_OBJ_ID_0)
#define BMS_DB_GET_SALVE_INDEX_BY_DEVICE_ID(deviceId) (deviceId - (uint32_t)BMS_SLAVE_OBJ_ID_0)

#endif  /*__BSM_DEVID_H__*/

