|
|
@@ -186,12 +186,12 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
|
|
|
memcpy(&recive,&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
if(recive == 1)
|
|
|
{
|
|
|
- t_data->write_at24(IIC_OUT_CHANNEL,recive,sizeof(recive));
|
|
|
+ t_data->write_at24(IIC_OUT_CHANNEL,&recive,sizeof(recive));
|
|
|
t_data->open_output();
|
|
|
}else if(recive == 0)
|
|
|
{
|
|
|
t_data->close_output();
|
|
|
- t_data->write_at24(IIC_OUT_CHANNEL,recive,sizeof(recive));
|
|
|
+ t_data->write_at24(IIC_OUT_CHANNEL,&recive,sizeof(recive));
|
|
|
}else
|
|
|
{
|
|
|
eStatus = MB_ENOREG;
|
|
|
@@ -214,13 +214,75 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
|
|
|
uint16_t *p_start = &(data->input_th[0].voltage_max);
|
|
|
memcpy(p_start+WeeiRegIndex,&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
t_data->write_at24(IIC_INPUT_THRESHOLD_START+(WeeiRegIndex*2),&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
-
|
|
|
+ for(int i =0 ; i < 2; i++) {
|
|
|
+ if(data->input_th[i].voltage_max <= SMALL_VALUE)
|
|
|
+ UNSET_VOLTAGE_MAX_EN(t_data->input_wanning_en[i]);
|
|
|
+ else
|
|
|
+ SET_VOLTAGE_MAX_EN(t_data->input_wanning_en[i]);
|
|
|
+
|
|
|
+ if(data->input_th[i].voltage_min <= SMALL_VALUE)
|
|
|
+ UNSET_VOLTAGE_MIN_EN(t_data->input_wanning_en[i]);
|
|
|
+ else
|
|
|
+ SET_VOLTAGE_MIN_EN(t_data->input_wanning_en[i]);
|
|
|
+
|
|
|
+ if(data->input_th[i].freq_max <= SMALL_VALUE)
|
|
|
+ UNSET_FREQ_MAX_EN(t_data->input_wanning_en[i]);
|
|
|
+ else
|
|
|
+ SET_FREQ_MAX_EN(t_data->input_wanning_en[i]);
|
|
|
+
|
|
|
+ if(data->input_th[i].freq_min <= SMALL_VALUE)
|
|
|
+ UNSET_FREQ_MIN_EN(t_data->input_wanning_en[i]);
|
|
|
+ else
|
|
|
+ SET_FREQ_MIN_EN(t_data->input_wanning_en[i]);
|
|
|
+ }
|
|
|
}else if(usAddress >= STS_OUTPUT_THRESHOLD && usAddress < STS_TEMP_THRESHOLD)
|
|
|
{
|
|
|
+ WeeiRegIndex = (uint16_t)(usAddress - STS_OUTPUT_THRESHOLD);
|
|
|
+ uint16_t *p_start = &data->output_th;
|
|
|
+ memcpy(p_start+WeeiRegIndex,&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
+ t_data->write_at24(IIC_OUTPUT_THRESHOLD_START+(WeeiRegIndex*2),&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
+ if(data->output_th.voltage_max <= SMALL_VALUE)
|
|
|
+ UNSET_VOLTAGE_MAX_EN(t_data ->output_wanning_en);
|
|
|
+ else
|
|
|
+ SET_VOLTAGE_MAX_EN(t_data ->output_wanning_en);
|
|
|
+
|
|
|
+ if(data->output_th.voltage_min <= SMALL_VALUE)
|
|
|
+ UNSET_VOLTAGE_MIN_EN(t_data ->output_wanning_en);
|
|
|
+ else
|
|
|
+ SET_VOLTAGE_MIN_EN(t_data ->output_wanning_en);
|
|
|
+
|
|
|
+ if(data->output_th.current_max <= SMALL_VALUE)
|
|
|
+ UNSET_CURRENT_MAX_EN(t_data ->output_wanning_en);
|
|
|
+ else
|
|
|
+ SET_CURRENT_MAX_EN(t_data ->output_wanning_en);
|
|
|
+
|
|
|
+ if(data->output_th.power_max <= SMALL_VALUE)
|
|
|
+ UNSET_POWER_MAX_EN(t_data ->output_wanning_en);
|
|
|
+ else
|
|
|
+ SET_POWER_MAX_EN(t_data ->output_wanning_en);
|
|
|
+
|
|
|
+ if(data->output_th.consumer_max <= SMALL_VALUE)
|
|
|
+ UNSET_CONSUMER_MAX_EN(t_data ->output_wanning_en);
|
|
|
+ else
|
|
|
+ SET_CONSUMER_MAX_EN(t_data ->output_wanning_en);
|
|
|
+
|
|
|
}else if(usAddress >= STS_TEMP_THRESHOLD && usAddress < STS_OVER_FUNC)
|
|
|
{
|
|
|
+ WeeiRegIndex = (uint16_t)(usAddress - STS_TEMP_THRESHOLD);
|
|
|
+ uint16_t *p_start = &data->temprature_th;
|
|
|
+ memcpy(p_start+WeeiRegIndex,&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
+ t_data->write_at24(IIC_TEMPRATURE_THRESHOLD_START+(WeeiRegIndex*2),&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
}else if(usAddress == STS_OVER_FUNC)
|
|
|
{
|
|
|
+ uint16_t recive = 0;
|
|
|
+ if(recive > 0x003F)
|
|
|
+ {
|
|
|
+ eStatus = MB_ENOREG;
|
|
|
+ }else{
|
|
|
+ memcpy(&recive,&usRegHoldBuf[WiRegIndex],WusNRegs*2);
|
|
|
+ t_data->m_data.over_func = recive;
|
|
|
+ t_data->write_at24(IIC_OVER_FUNC_START,&recive,sizeof(recive));
|
|
|
+ }
|
|
|
}else
|
|
|
{
|
|
|
eStatus = MB_ENOREG;
|