#ifndef __MOUDBUS_PCS_H_
#define __MOUDBUS_PCS_H_

#ifdef __cplusplus
extern "C" {
#endif

#define PRODUCT_INFORMATION                                         11//产品信息查询指令(产品类型寄存器地址)
#define PRODUCT_SN                                                  53//产品信息查询指令(SN码的寄存器地址)
#define CONTROLLER                                                  256//控制器数据查询指令(蓄电池电量SOC的寄存器地址)
#define INVERTER_DATAFAULTCODE                                      516//逆变器数据查询指令数据(当前故障码的寄存器地址)
#define INVERTER_DATA_TIME                                          524//逆变器数据查询指令(当前时间数据的寄存器地址)
#define HISTORRICAL_WEEKLY_STATISTICAL_DATA_GENERATEELECTRICITY_CHARGE_ELECTRO-DISCHARGE 61440//历史一周统计数据查询指令(PV发电量最近7天历史数据的寄存器地址)
#define HISTORRICAL_WEEKLY_STATISTICAL_DATA_CHARGE_CONSUME_CONSUME  61461//历史一周统计数据查询指令(市电充电电量最近7天历史数据的寄存器地址)
#define DAILY_STATISTICAL_DATA                                      61485//当天统计数据查询指令(电池当天充电安时数的寄存器地址)
#define TOTAL_HISTORICAL_STATISTICS                                 61489//历史统计总数据查询指令(总运行天数的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD0                          63488//历史故障数据查询指令(故障记录0的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD1                          63504//历史故障数据查询指令(故障记录1的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD2                          63520//历史故障数据查询指令(故障记录2的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD3                          63536//历史故障数据查询指令(故障记录3的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD4                          63552//历史故障数据查询指令(故障记录4的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD5                          63568//历史故障数据查询指令(故障记录5的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD6                          63584//历史故障数据查询指令(故障记录6的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD7                          63600//历史故障数据查询指令(故障记录7的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD8                          63616//历史故障数据查询指令(故障记录8的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD9                          63632//历史故障数据查询指令(故障记录9的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD10                         63648//历史故障数据查询指令(故障记录10的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD11                         63664//历史故障数据查询指令(故障记录11的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD12                         63680//历史故障数据查询指令(故障记录12的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD13                         63696//历史故障数据查询指令(故障记录13的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD14                         63712//历史故障数据查询指令(故障记录14的寄存器地址)
#define HISTORICAL_FAULT_DATA_FAULTRECORD15                         63728//历史故障数据查询指令(故障记录15的寄存器地址)
#define BATTERY_PARAMETERS_PHOTOVOLTAICCHARGING                     57345//电池参数设定值查询指令(光伏最大充电电流设置的寄存器地址)
#define BATTERY_PARAMETERS_MAINSSWITCHINGVOLTAGE                    57371//电池参数设定值查询指令(市电切换电压的寄存器地址)
#define BATTERY_PARAMETERS_INVERTERSWITCHINGVOLTAGE                 57378//电池参数设定值查询指令(逆变切换电压的寄存器地址)
#define INVERTER_PARAMETERS_PARALLELMODE                            57857//逆变器参数设定值查询指令(并机模式的寄存器地址)
#define PCS_ONOROFF_CONTROL_ONOFFCONTROL                           57088//PCS开关机控制指令(开关机控制的寄存器地址)
#define PCS_RESET_CONTROL_RESET                                     57089//PCS复位控制指令(复位控制的寄存器地址)
#define PCS_FACTORY_RESET_COMMAND_FACTORYRESET                      57090//PCS恢复出厂设置指令(恢复出厂值的寄存器地址)
#define PCS_CLEAR_HISTORY_CLEARHISTORY                              57093//PCS清除历史记录指令(清除历史记录的寄存器地址)
#define PCS_BALANCED_CHARGING_IMMEDIATEEQUALIZATIONCHARGINGCOMMAND  57101//PCS立即均衡充电控制指令(立即均衡充电指令的寄存器地址)
#define PCS_BATTERY_PARAMETER_SETTING_MAXIMUMCHARGINGCURRENTSETTINGFORPHOTOVOLTAICS 57345//PCS电池参数设定指令(光伏最大充电电流设置的寄存器地址)
#define PCS_BATTERY_PARAMETER_SETTING_RATEDVOLTAGEOFBATTERY         57347//PCS电池参数设定指令(电池额定电压（只读）的寄存器地址)
#define PCS_BATTERY_PARAMETER_SETTING_OVERDISCHARGEDELAYTIME        57360//PCS电池参数设定指令(过放延时时间的寄存器地址)
#define PCS_BATTERY_PARAMETER_SETTING_INVERTERSWITCHINGVOLTAGE      57378//PCS电池参数设定指令(逆变切换电压的寄存器地址)
#define PCS_INVERTER_PARAMETER_SETTING_PARALLELMODE                 57857//PCS逆变器参数设定指令(并机模式的寄存器地址)
#define PCS_INVERTER_PARAMETER_SETTING_OUTPUTVOLTAGE                57864//PCS逆变器参数设定指令(输出电压的寄存器地址)
#define PCS_INVERTER_PARAMETER_SETTING_SPLITPHASETRANSFORMER        57876//PCS逆变器参数设定指令(分相变压器的寄存器地址)
#define MODIFY_DEVICE_TIME_TIME                                     524//修改设备时间指令(当前时间的寄存器地址)







#define TEMPDATA                                            20
#define PRODUCT_INFORMATION_BUF_LENGHT                      20  //产品信息查询指令(数组buf的长度)
#define PRODUCT_INFORMATION_PRODUCTID_LENGHT                20  //产品信息查询指令(数组product_ID的长度)
#define PRODUCT_CONTROLLER_BUF_LENGHT                       14  //控制器数据查询指令(数组buf的长度)
#define INVERTER_DATA_DATAFAULTCODE_LENGHT                  4   //逆变器数据查询指令(数组Fault_code的长度)
#define INVERTER_DATA_BUF_LENGHT                            25  //逆变器数据查询指令(数组buf的长度)
#define HISTORRICAL_WEEKLY_STATISTICAL_DATA_ARR_BUF_LENGHT  21  //历史一周统计数据查询指令(数组buf的长度)
#define DAILY_STATISTICAL_DATA_BUF_LENGHT                   19  //当天统计数据查询指令(数组buf的长度)
#define TOTAL_HISTORICAL_STATISTICS_BUF_LENGHT              27  //历史统计总数据查询指令(数组buf的长度)
#define HISTORICAL_FAULT_DATAFault_RECORD_LENGHT            64  //历史故障数据查询指令(数组record的长度)
#define BATTERY_PARAMETERS_BUF_LENGHT                       19  //电池参数设定值查询指令(数组buf的长度)
#define BATTERY_PARAMETERS_ARR_LENGHT                       1   //电池参数设定值查询指令(数组arr的长度)
#define BATTERY_PARAMETERS_CONTAINER_LENGHT                 12  //电池参数设定值查询指令(数组container的长度)
#define INVERTER_PARAMETERS_BUF_LENGHT                      21  //逆变器参数设定值查询指令(数组buf的长度)
#define PCS_BATTERY_PARAMETER_SETTING_BUF1_LENGHT           1   //PCS电池参数设定指令(数组buf_1的长度)
#define PCS_BATTERY_PARAMETER_SETTING_BUF2_LENGHT           5   //PCS电池参数设定指令(数组buf_2的长度)
#define PCS_BATTERY_PARAMETER_SETTING_BUF3_LENGHT           10  //PCS电池参数设定指令(数组buf_3的长度)
#define PCS_BATTERY_PARAMETER_SETTING_BUF4_LENGHT           2   //PCS电池参数设定指令(数组buf_4的长度)
#define PCS_INVERTER_PARAMETER_SETTING_BUF1_LENGHT          3   //PCS逆变器参数设定指令(数组buf_1的长度)
#define PCS_INVERTER_PARAMETER_SETTING_BUF2_LENGHT          12  //PCS逆变器参数设定指令(数组buf_2的长度)
#define PCS_INVERTER_PARAMETER_SETTING_BUF3_LENGHT          2   //PCS逆变器参数设定指令(数组buf_3的长度)
#define MODIFY_DEVICE_TIME_BUF_LENGHT                       3   //修改设备时间指令(数组buf的长度)


char *Registration_Instructions(char *json_data);
char *Fault_reporting();
char *QDTU_registration_information(char *json_data);
char *QDTU_device_status(char *json_data);
char *QController(void);
char *QProduct_information(void); //查询产品信息
char *QInverter_data(void);
char *QHistorical_Weekly_Statistical_Data(void); //历史一周统计数据查询
char *Qdaily_statistical_data(void);             //当天统计数据查询
char *Qhistorical_total_data(void);              //历史统计总数据查询
char *QHistorical_fault_data(void);              //历史故障数据查询
char *QBattery_parameters(void);                 //电池参数设定值查询
char *QInverter_parameters(void);                //逆变器参数设定值查询
char *PCS_onORoff_control(cJSON *json);                 // PCS开关机控制指令
char *PCS_reset_control(void);                   // PCS复位控制指令
char *PCS_Factory_reset_command(void);           // PCS恢复出厂设置指令
char *PCS_Clear_History(void);                   // PCS清除历史记录指令
char *PCS_balanced_charging(void);               // PCS立即均衡充电控制指令
char *PCS_battery_parameter_setting(cJSON *json_data);       // PCS电池参数设定指令
char *PCS_inverter_parameter_setting(cJSON *json_data);      // PCS逆变器参数设定指令
char *Modify_device_time(cJSON *json_data);                  //修改设备时间指令
/*char *Wrong_instruction(char *json_data, int code);*/
char *QMqtt(cJSON *json);
char *Timed_retransmission();

#ifdef __cplusplus
}
#endif

#endif
