#include "parameter.h"

#pragma pack(push, 1)

typedef struct _parameterInfo {
    float WorkCurrent;          //工作电流
    float WorkVoltage;          //工作电压
    float Temperature;          //温度

    uint32_t upWard_Uart_Baud;  //与网关通信波特率
    uint32_t J1_485_Baud;       //与J1_485通信波特率
    uint32_t J2_485_Baud;       //与J2_485通信波特率
    uint32_t J3_485_Baud;       //与J3_485通信波特率
    uint32_t J4_485_Baud;       //与J4_485通信波特率
    uint32_t J5_0_485_Baud;     //与J5_0_485通信波特率
}parameterInfo;

#pragma pack(pop)

static parameterInfo parameter;

#define startConfigAddr 0x00
#define configSize  (sizeof(configInfo))

/**
  * @brief  读取配置文件参数
  * @param  
  * @retval 
  */
void readConfigParameter(void)
{
    configInfo tempConfig;
    read_Flash((uint8_t *)&tempConfig, startConfigAddr, configSize);

    /* 配置文件校验通过 */
    if (tempConfig.crc == checkModebusCrc((uint8_t *)&tempConfig, configSize - 2)) {
        parameter.J1_485_Baud = tempConfig.J1_485_Baud;
        parameter.J2_485_Baud = tempConfig.J2_485_Baud;
        parameter.J3_485_Baud = tempConfig.J3_485_Baud;
        parameter.J4_485_Baud = tempConfig.J4_485_Baud;
        parameter.J5_0_485_Baud = tempConfig.J5_0_485_Baud;
        parameter.upWard_Uart_Baud = tempConfig.upWard_Uart_Baud;
    }

    /* 未通过则使用默认参数 */
    else {
        parameter.J1_485_Baud = 9600;
        parameter.J2_485_Baud = 9600;
        parameter.J3_485_Baud = 9600;
        parameter.J4_485_Baud = 9600;
        parameter.J5_0_485_Baud = 9600;
        parameter.upWard_Uart_Baud = 115200;
    }
}

/**
  * @brief  写入配置文件参数
  * @param  inConfigInfo 配置文件
  * @retval 
  */
void writeConfigParameter(configInfo inConfigInfo)
{    
    write_Flash((uint8_t *)&inConfigInfo, startConfigAddr, configSize);
}

/**
  * @brief  得到工作电流
  * @param  
  * @retval 
  */
float getWorkCurrent(void)
{
    return parameter.WorkCurrent;
}

/**
  * @brief  设置工作电流
  * @param  
  * @retval 
  */
void setWorkCurrent(float Curr)
{
    parameter.WorkCurrent = Curr;
}

/**
  * @brief  得到工作电压
  * @param  
  * @retval 
  */
float getWorkVoltage(void)
{
    return parameter.WorkVoltage;
}

/**
  * @brief  设置工作电压
  * @param  
  * @retval 
  */
void setWorkVoltage(float Voltage)
{
    parameter.WorkVoltage = Voltage;
}

/**
  * @brief  得到温度
  * @param  
  * @retval 
  */
float getTemperature(void)
{
    return parameter.Temperature;
}

/**
  * @brief  设置温度
  * @param  
  * @retval 
  */
void setTemperature(float Temperature)
{
    parameter.Temperature = Temperature;
}

/**
  * @brief  得到对智能模块通信波特率
  * @param  
  * @retval 
  */
uint32_t getUpWard_Uart_Baud(void)
{
    return parameter.upWard_Uart_Baud;
}

/**
  * @brief  得到对J1通信波特率
  * @param  
  * @retval 
  */
uint32_t getJ1_485_Baud(void)
{
    return parameter.J1_485_Baud;
}

/**
  * @brief  得到对J2通信波特率
  * @param  
  * @retval 
  */
uint32_t getJ2_485_Baud(void)
{
    return parameter.J2_485_Baud;
}

/**
  * @brief  得到对J3通信波特率
  * @param  
  * @retval 
  */
uint32_t getJ3_485_Baud(void)
{
    return parameter.J3_485_Baud;
}

/**
  * @brief  得到对J4通信波特率
  * @param  
  * @retval 
  */
uint32_t getJ4_485_Baud(void)
{
    return parameter.J4_485_Baud;
}

/**
  * @brief  得到对J5_0通信波特率
  * @param  
  * @retval 
  */
uint32_t getJ5_0_485_Baud(void)
{
    return parameter.J5_0_485_Baud;
}