/******************************************************************************
 * @file      protocol_mqtt_bcu.h
 * @brief     protocol_mqtt_bcu.h
 * @version   V1.0
 * @author    Gary
 * @copyright
 ******************************************************************************/
#ifndef PROTOCOL_MQTT_BCU_H_
#define PROTOCOL_MQTT_BCU_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include "cJSON.h"
#include "drv_qfc41d.h"
#include "drv_rtc.h"

typedef struct {
    const char* key;                		// JSON 中的键，比如 "BCU_2"
    uint8_t groupId;						// mqtt因为json长度限制，这里面用于分组传输,从0开始，
    uint16_t input;							// get_val的入参，用于获取key对应的数据
    uint32_t (*get_val)(uint16_t);          // 对应值的获取函数
} devPointMap;

typedef struct {
    const char* key;                		// JSON 中的键，比如 "BCU_"后面不带数字，数据后面通过BCU_pointId组合
    uint16_t pointId;						// 用于记录开始的测点号，见bcu模型
	uint16_t startCellIndex;				// 开始的电压序号（入参）
	uint16_t endCellIndex;					// 结束的电压序号（入参）
    uint32_t (*get_val)(uint16_t);          // 对应值的获取函数
} devCellPointMap;

extern const devPointMap bms_points[];
extern const devCellPointMap bms_volt_points[];
extern const devCellPointMap bms_temp_points[];

void mqtt_publish_bms_data(uint32_t basetime);

#ifdef __cplusplus
}
#endif

#endif