Files
RCU_C1P_Module/MCU_Driver/blv_dev_action.c

3038 lines
151 KiB
C
Raw Normal View History

/*
* blv_dev_action.c
*
* Created on: Nov 11, 2025
* Author: cc
*/
#include "includes.h"
BLV_DevAction_Manage_G DevActionGlobal; //<2F><EFBFBD><E8B1B8>Ϣȫ<CFA2>ֱ<EFBFBD><D6B1><EFBFBD>
#define Action_Group_Ctrl_Num 30 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ⱥ<>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*******************************************************************************
* Function Name : Expand_And_Dimm_Action_Get
* Description : ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еļ̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD> 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>Ŀǰֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ؼ̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD> 2<EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ͬһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊɶ<EFBFBD><EFBFBD>Ҫ<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD>Ϊɶ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>Dz<EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>α<EFBFBD><EFBFBD><EFBFBD>
* Input :
* DevActionInfo - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* expand_type - <EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* dimm_type - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* on_off - Ⱥ<EFBFBD><EFBFBD>״̬
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void Expand_And_Dimm_Action_Get(DEV_ACTION_INFO *DevActionInfo,EXPAND_TYPE_G *expand_type,DIMM_TYPE_G *dimm_type,uint8_t on_off)
{
uint8_t TNum = 0x00; //<2F><>ַ<EFBFBD><D6B7>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>
uint8_t i = 0x00,j = 0x00;
uint8_t expandexnum=0; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>
#if RS485_LED_Flag
uint8_t dimmexnum=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>
#endif
for(i = 0; i < DevActionInfo->DevCtrlNum; i++ )
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> ״̬
if( (expandexnum == 0) && (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType == Dev_Host_HVout) )
{
expand_type[expandexnum].Addr = DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr;
expandexnum++;
}else if( (expandexnum > 0) && (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType == Dev_Host_HVout) )
{
for(j = 0; j <= expandexnum; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
TNum++;
break;
}
}
if(TNum == 0x00)
{
expand_type[expandexnum].Addr = DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr;
expandexnum++;
}
else if(TNum > 0)
{
TNum = 0x00;
}
}
#if RS485_LED_Flag
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸 ״̬
if( (dimmexnum == 0x00) && (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType == DEV_RS485_PWM) )
{
dimm_type[dimmexnum].Addr = DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr;
dimmexnum++;
}
else if( (dimmexnum > 0) && (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType == DEV_RS485_PWM) )
{
for(j = 0; j <= dimmexnum; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr)
{
TNum++;
break;
}
}
if(TNum == 0x00)
{
dimm_type[dimmexnum].Addr = DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr;
dimmexnum++;
}
else if(TNum > 0)
{
TNum = 0x00;
}
}
#endif
}
for(i = 0; i < DevActionInfo->DevCtrlNum; i++) //<2F><>һ<EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ŵ<EFBFBD>һ<EFBFBD><D2BB>
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00 ) //<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>вŲ<D0B2><C5B2><EFBFBD><EFBFBD>ж<EFBFBD>
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType == Dev_Host_HVout)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop < HVoutNumMAX)
{
for(j = 0 ; j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
expand_type[j].ExpandReadFlag|= 0x01<<DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop; //<2F><><EFBFBD>Ʊ<EFBFBD>־λ - <20><>λ
if(on_off == 0x01)
{
expand_type[j].ExpandReadState[DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop]= DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState;
}else if(on_off == 0x00)
{
expand_type[j].ExpandReadState[DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop]= DEV_CTRLWAY_CLOSE;
}
}
}
}
}
#if RS485_LED_Flag
else if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType == DEV_RS485_PWM)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop < LED_OUT_CH_MAX)
{
for(j = 0; j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr)
{
dimm_type[j].DimmReadFlag |= 0x01<<DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop;
if(on_off == 0x01)
{
dimm_type[j].DimmReadState[DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop] = DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState;
}else if(on_off == 0x02)
{
dimm_type[j].DimmReadState[DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop] = DEV_CTRLWAY_CLOSE;
}
}
}
}
}
#endif
}
}
}
/*******************************************************************************
* Function Name : RcuLockState_Scan
* Description : RCU<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ɨ<EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void RcuLockState_Scan(void)
{
uint8_t LockState;
LockState = Get_Authorize_Lock_Status(); //<2F>õ<EFBFBD>RCU<43><55><EFBFBD><EFBFBD>״̬ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(DevActionGlobal.DevActionU64Cond.RcuLockState != LockState)
{
DevActionGlobal.DevActionU64Cond.RcuLockState = LockState; //ͬ<><CDAC>
switch(DevActionGlobal.DevActionU64Cond.RcuLockState)
{
case 0x01: //<2F><><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"RCU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>");
//Ele_Ctrl_OpenClose(0x02); //<2F>ϵ<EFBFBD>
break;
case 0x00: //<2F><><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"RCU<EFBFBD>ѽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>");
break;
}
}
}
/*******************************************************************************
* @Function Name : CondJudge
* @Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
* @Input :
* State1 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x00 <EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* State2 <EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״ֵ̬
* @Return <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t CondJudge(uint8_t State1, uint8_t State2)
{
if( (0x00 == State1) || ( (0x00 != State1) && (State1 == State2) ))
{
return CondIsPass;
}else{
return CondIsNotPass;
}
}
/*******************************************************************************
* @Function Name : BLV_DevAction_Cond_Judge
* @Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<EFBFBD><EFBFBD><EFBFBD>
* @Input :
* DevActionAddr : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* @Return <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>56λ
* @Attention : <EFBFBD>ж<EFBFBD>8<EFBFBD><EFBFBD><EFBFBD>ֽڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>0
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t BLV_DevAction_Cond_Judge(DEV_ACTION_INFO *DevActionInfo)
{
if(0x01 == DevActionInfo->DevActionCond.DevActionU64Cond.DevActionOutFlag)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return CondIsNotPass; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.RoomState, DevActionGlobal.DevActionU64Cond.RoomState)){Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD>̬δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><>̬
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.EleState, DevActionGlobal.DevActionU64Cond.EleState)){Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"ȡ<EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //ȡ<><C8A1>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.DndState, DevActionGlobal.DevActionU64Cond.DndState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.CleanState, DevActionGlobal.DevActionU64Cond.CleanState)){Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.CallState, DevActionGlobal.DevActionU64Cond.CallState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.WashState, DevActionGlobal.DevActionU64Cond.WashState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"ϴ<EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //ϴ<><CFB4>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.CheckOutState, DevActionGlobal.DevActionU64Cond.CheckOutState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD>˷<EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F>˷<EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.WaitState, DevActionGlobal.DevActionU64Cond.WaitState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD>Ժ<EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F>Ժ<EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.SosState, DevActionGlobal.DevActionU64Cond.SosState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"SOSδ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //SOS
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.RentState, DevActionGlobal.DevActionU64Cond.RentState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"ԤԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //ԤԼ<D4A4><D4BC><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.LockState, DevActionGlobal.DevActionU64Cond.LockState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.LuggageState, DevActionGlobal.DevActionU64Cond.LuggageState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.StrongState, DevActionGlobal.DevActionU64Cond.StrongState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.DoorState, DevActionGlobal.DevActionU64Cond.DoorState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD>Ŵ<EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F>Ŵ<EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.SeasonState, DevActionGlobal.DevActionU64Cond.SeasonState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD>
if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.TimeState, DevActionGlobal.DevActionU64Cond.TimeState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"ʱ<EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>"); return CondIsNotPass; } //ʱ<><CAB1>
// if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.NeightFlag, DevActionInfo->DevActionCond.DevActionU64Cond.NeightState, DevActionGlobal.DevActionU64Cond.NeightState)){Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<22><>ҹδ<D2B9>ж<EFBFBD>ͨ<EFBFBD><CDA8>"); return CondIsNotPass; } //<2F><>ҹ
// if(CondIsNotPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.RcuLockState, DevActionGlobal.DevActionU64Cond.RcuLockState)) {Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<22><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><CDA8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s",DevActionInfo->DevActionCore.DevActionName); return CondIsNotPass; } //<2F><><EFBFBD><EFBFBD> DevActionGlobal.DevActionU64Cond.RcuLockState
if( (0x00 != DevActionInfo->DevActionCond.DevActionU64Cond.RcuLockState)
&& ( ((0x01 == DevActionInfo->DevActionCond.DevActionU64Cond.RcuLockState)&&(0x00 == DevActionGlobal.DevActionU64Cond.RcuLockState))
||((0x02 == DevActionInfo->DevActionCond.DevActionU64Cond.RcuLockState)&&(0x01 == DevActionGlobal.DevActionU64Cond.RcuLockState) ) ) )
{
//<2F><><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_ActCond_STATUS_bit,"<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s",DevActionInfo->DevActionCore.DevActionName);
return CondIsNotPass;
}
return CondIsPass;
}
/*******************************************************************************
* Function Name : Expand_State_Get
* Description : <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>иó<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>·״̬
* <EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ż<EFBFBD>˼·<EFBFBD><EFBFBD>
* 1<EFBFBD><EFBFBD>Ⱥ<EFBFBD>ص<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˼<EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD>ⲿSRAM<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD>жϵ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹأ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>жϣ<EFBFBD>ɫ<EFBFBD><EFBFBD>״̬<EFBFBD>жϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>Щ<EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ʵ
* if(DevActionInfo->DevActionCond.SceneExcute != ACTION_SCENE_SLEEP) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD>Ϊʲô˯<EFBFBD><EFBFBD>ģʽ<EFBFBD>²<EFBFBD><EFBFBD>ж<EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0x00,j = 0x00;
uint32_t DevAddrOut = 0x00; //<2F><EFBFBD><E8B1B8>ַ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
uint8_t DevCtrlWay = 0x00; //ִ<>з<EFBFBD>ʽ
uint8_t DevCtrlCont = 0x00; //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t SceneState = DEV_STATE_OPEN;
uint8_t SceneType = 0x01;
Device_Public_Information_G BUS_Public;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
Expand_And_Dimm_Action_Get(DevActionInfo,expand_type,dimm_type,0x01); //<2F><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ķ<CDB5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*
* 1<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еļ̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD>
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫѭ<EFBFBD><EFBFBD>30<EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* */
for(i = 0; i < DevActionInfo->DevCtrlNum; i++ )
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout: //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
for(j = 0;j < Action_Group_Ctrl_Num;j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if(expand_type[j].ExpandReadFlag != 0x00)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(NULL != BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr)
{
if(DEV_STATE_CLOSE == BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr(DevActionInfo->DevActionOutput[i].DevActionOutAddr, SceneType, expand_type[j].ExpandReadFlag, HVoutNumMAX, expand_type[j].ExpandReadState))
{
SceneState = DEV_STATE_CLOSE;
}
}
expand_type[j].ExpandReadFlag=0x00; //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>־λ<D6BE><CEBB><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
}
break; //<2F>ҵ<EFBFBD><D2B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ⱥ<EFBFBD><C8BA>ַ<EFBFBD><D6B7><><D6B1><EFBFBD>˳<EFBFBD>
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
for(j = 0;j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if(0x00!=dimm_type[j].DimmReadFlag)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(NULL != BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr)
{
if(DEV_STATE_CLOSE == BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr(DevActionInfo->DevActionOutput[i].DevActionOutAddr, SceneType, dimm_type[j].DimmReadFlag, LED_OUT_CH_MAX, dimm_type[j].DimmReadState))
{
SceneState = DEV_STATE_CLOSE;
}
}
dimm_type[j].DimmReadFlag = 0x00; //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>־λ<D6BE><CEBB><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
}
break; //<2F>ҵ<EFBFBD><D2B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ⱥ<EFBFBD><C8BA>ַ<EFBFBD><D6B7><><D6B1><EFBFBD>˳<EFBFBD>
}
}
break;
#endif
}
}
}
for(i = 0;i < DevActionInfo->DevCtrlNum; i++)
{
//<2F>ж϶<D0B6><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><E8B1B8>ַ<EFBFBD>ǿ<EFBFBD>
if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00)
&& (DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00 ) )
{
switch( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType )
{
case Dev_Host_LVoutput:
case DEV_RS485_SWT:
case Dev_Host_Service:
case Dev_Scene_Restore:
if(DevActionInfo->DevActionCond.SceneExcute != ACTION_SCENE_SLEEP)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); //<2F><>ȡ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
if( (DevCtrlWay == DEV_CTRLWAY_OPEN) || (DevCtrlWay == DEV_CTRLWAY_CLOSE) || (DevCtrlWay == DEV_CTRLWAY_STOP) )
{
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlWay)
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
}
break;
#if RS485_PB20_Relay_Flag
case Dev_Rs485_PB20_Relay:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
if( (DevCtrlWay == DEV_CTRLWAY_OPEN) || (DevCtrlWay == DEV_CTRLWAY_CLOSE) || (DevCtrlWay == DEV_CTRLWAY_STOP) )
{
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlWay)
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
break;
#endif
case Dev_NodeCurtain: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸 - <20><><EFBFBD><EFBFBD>
case DEV_RS485_CURTAIN: //RS485<38>豸 - <20><><EFBFBD><EFBFBD>
if(DevActionInfo->DevActionCond.SceneExcute != ACTION_SCENE_SLEEP)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
if( (DevCtrlWay == DEV_CTRLWAY_OPEN) \
|| (DevCtrlWay == DEV_CTRLWAY_CLOSE) \
|| (DevCtrlWay == DEV_CTRLWAY_STOP) \
|| (DevCtrlWay == 0x15) \
|| (DevCtrlWay == 0x16) )
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlWay)
{
SceneState = DEV_STATE_CLOSE;
break;
}
}else if( (DevCtrlWay == CFG_Dev_CtrlWay_Is_TOGGLE) || (DevCtrlWay == 0x05) )
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DEV_CTRLWAY_STOP)
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
}
break;
#if Dev_Nor_ColorTemp
case Dev_Nor_ColorTemp:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
DevCtrlCont = ((DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)>>8)&0x00ff;
if(DevCtrlWay == DEV_CTRLWAY_OPEN)
{
DevCtrlCont |= 0x80;
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlCont )
{
SceneState = DEV_STATE_CLOSE;
break;
}
}else if(DevCtrlWay == DEV_CTRLWAY_CLOSE)
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != (DevCtrlCont & 0x80) )
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
break;
#endif
case DEV_C5MUSIC_Type:
if(DevActionInfo->DevActionCond.SceneExcute != ACTION_SCENE_SLEEP)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DEV_MUSIC_CTRLSTATE DevMusicCtrlState;
BLV_Music_CtrlState_Get(&DevMusicCtrlState,DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
if(DevMusicCtrlState.DevMusicCtrlWay.CtrlDirect == 0x00) //<2F><><EFBFBD>ʵ<EFBFBD> - <20><>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
DevCtrlWay = DevMusicCtrlState.DevMusicCtrlWay.CtrlDir;
if( (DevCtrlWay == DEV_CTRLWAY_OPEN) \
|| (DevCtrlWay == DEV_CTRLWAY_CLOSE) )
{
if(DevCtrlWay != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop))
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
}
}
break;
#if Dev_Nor_Carbon_Flag
case DEV_Carbon_Saved:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(NULL != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get) //<2F>ǿ<EFBFBD>
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; //<2F><><EFBFBD>ֽ<EFBFBD>
DevCtrlCont = ((DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)>>8)&0x00ff; //<2F><><EFBFBD>ֽ<EFBFBD>
if(0x01 == DevCtrlWay) //<2F>ҿ<EFBFBD><D2BF>ƽ<EFBFBD><C6BD><EFBFBD>״̬ <20><><EFBFBD>͹<EFBFBD>
{
if(DevCtrlCont != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop))
{
SceneState = DEV_STATE_CLOSE; //ֻҪ<D6BB><D2AA>һ<EFBFBD><D2BB>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>״̬Ϊ<CCAC><CEAA>
break; //<2F><><EFBFBD><EFBFBD>switchѭ<68><D1AD>
}
}
}
break;
#endif
}
}
if(SceneState == DEV_STATE_CLOSE) break;
}
if(DevActionInfo->DevActionState.SceneState != SceneState)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit," <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD>״̬:%d", DevActionInfo->DevActionCore.ActionNo, SceneState);
DevActionInfo->DevActionState.SceneState = SceneState; //1<><31> 2<><32><30><CEB4>ʼ<EFBFBD><CABC>
}
}
/*******************************************************************************
* Function Name : Sleep_State_Get
* Description : ˯<EFBFBD><EFBFBD>ģʽ״̬<EFBFBD><EFBFBD>ȡ
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i;//,j;
uint32_t DevAddrOut = 0x00; //<2F><EFBFBD><E8B1B8>ַ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
Device_Public_Information_G BUS_Public; //<2F><><EFBFBD><EFBFBD>
uint8_t DevCtrlWay = 0x00; //ִ<>з<EFBFBD>ʽ
uint8_t DevCtrlCont = 0x00; //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t SceneState = DEV_STATE_OPEN;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
Expand_And_Dimm_Action_Get(DevActionInfo,expand_type,dimm_type,0x01);
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
DevAddrOut = DevActionInfo->DevActionOutput[i].DevActionOutAddr;
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout: //<2F>̵<EFBFBD><CCB5><EFBFBD>
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) == DEV_STATE_OPEN)
{
SceneState = DEV_STATE_CLOSE; //ֻ<><D6BB>ֵ<EFBFBD><D6B5>
break;
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != 0x00)
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
break;
#endif
}
}
}
for(i = 0; i < DevActionInfo->DevCtrlNum; i++ )
{
if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00)
&& (DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00) )
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Rs485_PB20_Relay:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
if( (DevCtrlWay == DEV_CTRLWAY_OPEN) || (DevCtrlWay == DEV_CTRLWAY_CLOSE) || (DevCtrlWay == DEV_CTRLWAY_STOP) )
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlWay )
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
break;
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 )
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00ff);
DevCtrlCont = ((DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState) >> 8) & 0x00ff;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -
}
break;
case DEV_Virtual_ColorTemp:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00)
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
DevCtrlCont = ((DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)>>8)&0x00ff;
if( (DevCtrlWay == DEV_CTRLWAY_OPEN) || (DevCtrlWay == DEV_CTRLWAY_CLOSE) )
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlCont )
{
SceneState = DEV_STATE_CLOSE;
break;
}
}
}
break;
}
}
if(DEV_STATE_CLOSE == SceneState) break;
}
if(DevActionInfo->DevActionState.SceneState != SceneState)
{
DevActionInfo->DevActionState.SceneState = SceneState;
}
}
/*******************************************************************************
* Function Name : MainSwitch_Expand_State_Get
* Description : <EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ע<EFBFBD><EFBFBD>:<EFBFBD>ܿ<EFBFBD><EFBFBD>س<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϿ<EFBFBD><EFBFBD>ĵƣ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void MainSwitch_Expand_State_Get(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0,j = 0;
uint32_t DevAddrOut = 0x00;
Device_Public_Information_G BUS_Public; //<2F><><EFBFBD><EFBFBD>
uint8_t DevCtrlWay = 0x00; //ִ<>з<EFBFBD>ʽ
uint8_t DevCtrlCont = 0x00; //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t SceneState = DEV_STATE_CLOSE;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
Expand_And_Dimm_Action_Get(DevActionInfo,expand_type,dimm_type,0x01);
for(i = 0;i < DevActionInfo->DevCtrlNum; i++)
{
if( DevActionInfo->DevActionOutput[i].DevActionOutAddr != DevAddrOut )
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout: //<2F>̵<EFBFBD><CCB5><EFBFBD>
for(j = 0;j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if(expand_type[j].ExpandReadFlag != 0x00)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr != 0x00)
{
if(BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr(DevAddrOut, DEV_STATE_CLOSE, expand_type[j].ExpandReadFlag, HVoutNumMAX, expand_type[j].ExpandReadState) == DEV_STATE_OPEN)
{
SceneState = DEV_STATE_OPEN;
}
}
expand_type[j].ExpandReadFlag=0x00; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
}
break;
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM:
for(j = 0;j < Action_Group_Ctrl_Num; j++)
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr )
{
if( dimm_type[j].DimmReadFlag != 0x00 )
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr != 0x00 )
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr(DevAddrOut, DEV_STATE_CLOSE, dimm_type[j].DimmReadFlag, LED_OUT_CH_MAX, dimm_type[j].DimmReadState) == DEV_STATE_OPEN )
{
SceneState = DEV_STATE_OPEN;
}
}
dimm_type[j].DimmReadFlag=0x00; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
}
break;
}
}
break;
#endif
}
}
}
for( i = 0; i < DevActionInfo->DevCtrlNum; i++ )
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00 )
{
if( DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00 )
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case DEV_RS485_STRIP:
case Dev_Rs485_PB20:
case DEV_Virtual_ColorTemp:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 )
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
DevCtrlCont = ((DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)>>8)&0x00ff;
if(DevCtrlWay == DEV_STATE_OPEN)
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) == DevCtrlCont )
{
SceneState = DEV_STATE_OPEN;
break;
}
}
}
break;
case Dev_Scene_Restore:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 )
{
DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff;
if( (DevCtrlWay == DEV_STATE_OPEN) || (DevCtrlWay == DEV_STATE_CLOSE) )
{
if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) == DevCtrlWay )
{
SceneState = DEV_STATE_OPEN;
break;
}
}
}
break;
}
}
if(SceneState == DEV_STATE_OPEN) break; //<2F><><EFBFBD><EFBFBD>forѭ<72><D1AD>
}
}
DevActionInfo->DevActionState.SceneState = SceneState;
}
/*******************************************************************************
* Function Name : DevAction_State_Get
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>õ<EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_State_Get(DEV_ACTION_INFO *DevActionInfo)
{
switch(DevActionInfo->DevActionCond.SceneExcute) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ִ<EFBFBD>з<EFBFBD>ʽ
{
case ACTION_SCENE_SLEEP: //<2F>豸ִ<E8B1B8>з<EFBFBD>ʽ - ˯<><CBAF>ģʽ
if(DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01) //ҹ<>ƴ<EFBFBD><C6B4><EFBFBD>
{
if(DevActionGlobal.DevActionU64Cond.NeightState == NightModeStart) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD> <20><>ֵ<EFBFBD><D6B5>ȫ<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
DevActionInfo->DevActionState.SceneState = DEV_STATE_OPEN; //<2F><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD> - <20><>
if( DevActionGlobal.SleepLight_State != 0x01 )
{
DevActionGlobal.SleepMode_State = 0x01;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> 5");
}
}
if(DevActionGlobal.CardInFlag == 0x01) //<2F><>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>˯<EFBFBD>߱<EFBFBD>־λ
{
Sleep_State_Get(DevActionInfo);
if(DevActionInfo->DevActionState.SceneState == DEV_STATE_CLOSE) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> ҹ<>ƴ<EFBFBD><C6B4>ڵĻ<DAB5>,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>˯<EFBFBD><CBAF>ģʽ - <20><><EFBFBD>ʵ<EFBFBD>
{
DevActionGlobal.CardInFlag = 0x00;
DevActionGlobal.SleepMode_State = 0x00;
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> -5");
}
}
break; //<2F><>ҹ<EFBFBD><D2B9> ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}else {
Expand_State_Get(DevActionInfo);
if(DevActionInfo->DevActionState.SceneState == DEV_STATE_CLOSE)
{
if(DevActionGlobal.CardInFlag == 0x01)
{
DevActionGlobal.CardInFlag = 0x00;
DevActionGlobal.SleepMode_State = 0x00;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> -6");
}
}
}
break;
case ACTION_SCENE_ONE: //<2F>豸ִ<E8B1B8>з<EFBFBD>ʽ - <20><><EFBFBD>ɹر<C9B9>
case ACTION_SCENE_TWO: //<2F>豸ִ<E8B1B8>з<EFBFBD>ʽ - <20>ɹر<C9B9>
case ACTION_SCENE_HELPSLEEP: //<2F>豸ִ<E8B1B8>з<EFBFBD>ʽ - <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>
Expand_State_Get(DevActionInfo);
break;
case ACTION_SCENE_MAINSWITCH: //<2F>豸ִ<E8B1B8>з<EFBFBD>ʽ - <20>ܿ<EFBFBD><DCBF><EFBFBD>
MainSwitch_Expand_State_Get(DevActionInfo); //<2F><><EFBFBD><EFBFBD>״̬<D7B4>õ<EFBFBD>
break;
}
if( DevActionGlobal.DevActionU64Cond.NeightState != DevActionGlobal.Last_NeightState )
{
DevActionGlobal.Last_NeightState = DevActionGlobal.DevActionU64Cond.NeightState;
}
}
/*******************************************************************************
* Function Name : DevDly_InfoSet
* Description : <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>Ϣֱ<EFBFBD>Ӹ<EFBFBD>ֵ
* Input :
DevDlyAddr : <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ<EFBFBD><EFBFBD><EFBFBD>ַ
DlyExcuteFlag <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<EFBFBD>б<EFBFBD>־
DevOutputType <EFBFBD><EFBFBD>ִ<EFBFBD>з<EFBFBD>ʽ
DevDelayTime <EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
DlyBlinkFlag <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>־λ
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevDly_InfoSet(
uint32_t DevDlyAddr,
uint8_t DlyExcuteFlag,
uint16_t DevOutputType,
Dev_Dly_Value DevDelayTime,
uint8_t DlyBlinkFlag)
{
Struct_Dev_Dly DevDlyInfo;
Dev_Dly_Value DevDlyValue;
uint32_t DlyExcuteTime = 0x00;
if( DevDlyAddr == 0x00 ) return ;
DevDlyValue.DelayCont = DevDelayTime.DelayCont;
DevDlyValue.DelayWeight = DevDelayTime.DelayWeight;
switch(DevDlyValue.DelayWeight)
{
case 0x00: //<2F><>λΪ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
DlyExcuteTime = 0x00;
break;
case DELAY_TIME_MS: //0x01 //<2F><><EFBFBD><EFBFBD>
DlyExcuteTime = SysTick_1ms + DevDlyValue.DelayCont;
break;
case DELAY_TIME_S: //0x02 //<2F><>
DlyExcuteTime = SysTick_1ms + DevDlyValue.DelayCont*1000;
break;
case DELAY_TIME_MIN: //0x03 //<2F><><EFBFBD><EFBFBD>
DlyExcuteTime = SysTick_1ms + DevDlyValue.DelayCont*1000*60;
break;
case DELAY_TIME_HOUR: //0x04 //Сʱ
DlyExcuteTime = SysTick_1ms + DevDlyValue.DelayCont*1000*60*60;
break;
default:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD>Ч:", DevDlyValue.DelayWeight);
return; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
}
SRAM_DMA_Read_Buff((uint8_t *)&DevDlyInfo, sizeof(Struct_Dev_Dly), DevDlyAddr); //<2F><>״̬<D7B4><CCAC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if( ( DevDlyInfo.DlyExcuteTime != DlyExcuteTime )
|| ( DevDlyInfo.DlyExcuteFlag != DlyExcuteFlag )
|| ( DevDlyInfo.DevOutputType != DevOutputType )
|| ( DevDlyInfo.DlyBlinkFlag != DlyBlinkFlag )
|| ( DevDlyInfo.DlyBlinkTime.DelayCont != DevDelayTime.DelayCont )
|| ( DevDlyInfo.DlyBlinkTime.DelayWeight != DevDelayTime.DelayWeight ) )
{
DevDlyInfo.DlyExcuteFlag = DlyExcuteFlag;
DevDlyInfo.DevOutputType = DevOutputType;
switch(DlyBlinkFlag)
{
case 0x01: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸
DevDlyInfo.DlyBlinkFlag = DlyBlinkFlag;
DevDlyInfo.DlyExcuteTime = DlyExcuteTime;
break;
case 0x02: //<2F>ر<EFBFBD><D8B1><EFBFBD>˸ <20><><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>
if(0x01 == DevDlyInfo.DlyBlinkFlag) //֮ǰ<D6AE>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD>˸״̬
{
DevDlyInfo.DlyBlinkFlag = DlyBlinkFlag;
}
break;
default:
DevDlyInfo.DlyBlinkFlag = DlyBlinkFlag;
DevDlyInfo.DlyExcuteTime = DlyExcuteTime;
break;
}
DevDlyInfo.DlyBlinkTime.DelayCont = DevDelayTime.DelayCont;
DevDlyInfo.DlyBlinkTime.DelayWeight = DevDelayTime.DelayWeight;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ʱ<EFBFBD>ڵ㸳ֵ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ַ:%08X ִ<>б<EFBFBD>־:%d ʱ<><CAB1>:%02x%02x, ִ<>з<EFBFBD>ʽ:%04X <20><>˸<EFBFBD><CBB8>־:%d", \
DevDlyAddr, DlyExcuteFlag, \
DevDlyValue.DelayCont, \
DevDlyValue.DelayWeight, \
DevOutputType, \
DevDlyInfo.DlyBlinkFlag);
SRAM_DMA_Write_Buff((uint8_t *)&DevDlyInfo, sizeof(Struct_Dev_Dly), DevDlyAddr); //<2F><>״̬<D7B4><CCAC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
}
}
/*******************************************************************************
* Function Name : DevDlyAddr_Get
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͻ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ڵ<EFBFBD>
* Input :
DevDlyAddr : <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ<EFBFBD><EFBFBD><EFBFBD>ַ
DevOutputLoop <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint32_t DevDlyAddr_Get(uint32_t DevDlyAddr, uint16_t DevOutputLoop)
{
uint16_t i = 0x00;
uint32_t list_addr = 0x00;
Struct_Dev_Dly_Core DevDlyCore;
for(i = 0; i < DevActionGlobal.DevDlyNum; i++)
{
list_addr = SRAM_DevDly_List_Start_Addr + i * DevDlyStructLen;
SRAM_DMA_Read_Buff((uint8_t *)&DevDlyCore, sizeof(Struct_Dev_Dly_Core), list_addr);
if( (DevDlyCore.DevDlyAddr == DevDlyAddr) && (DevDlyCore.DevOutputLoop == DevOutputLoop) )
{
return list_addr;
}
}
return 0x00;
}
/*******************************************************************************
* Function Name : Add_DevDly_To_List
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʱ<EFBFBD>Ľڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½ڵ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿɽڵ<EFBFBD>ͷ<EFBFBD><EFBFBD>ؾɵ<EFBFBD>ַ
* Input :
DevType : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DevDlyAddr <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ַ
DevOutputLoop <EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>ַ
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint32_t Add_DevDly_To_List(uint8_t DevType, uint32_t DevDlyAddr, uint16_t DevOutputLoop)
{
uint32_t list_addr = 0x00;
Struct_Dev_Dly_Core DevDlyCore;
if(DevActionGlobal.DevActionNum >= DevDlyNumMax) //<2F><>ʱ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ <20><>ʱ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>: %d", DevDlyNumMax);
return 0x00;
}
list_addr = DevDlyAddr_Get(DevDlyAddr, DevOutputLoop); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ڵ<EFBFBD>
if(list_addr != 0x00) return list_addr; //ֱ<>ӽ<EFBFBD><D3BD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
DevDlyCore.DevType = DevType;
DevDlyCore.DevDlyAddr = DevDlyAddr;
DevDlyCore.DevOutputLoop = DevOutputLoop; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list_addr = SRAM_DevDly_List_Start_Addr + DevActionGlobal.DevDlyNum*DevDlyStructLen;
SRAM_DMA_Write_Buff((uint8_t *)&DevDlyCore, sizeof(Struct_Dev_Dly_Core), list_addr);
DevActionGlobal.DevDlyNum++; //<2F><>ʱ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ʱ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ַ:%08X <20><>ǰ<EFBFBD><C7B0>ʱ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ʱ<EFBFBD><EFBFBD><E8B1B8>ַ: %08X <20><>ʱ<EFBFBD><EFBFBD><E8B1B8>·<EFBFBD><C2B7>%d",
list_addr ,
DevActionGlobal.DevDlyNum,
DevDlyCore.DevDlyAddr,
DevDlyCore.DevOutputLoop);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ʱ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9>ģ<EFBFBD><C4A3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
return list_addr; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ĵ<EFBFBD>ַ
}
/*******************************************************************************
* Function Name : DevAddrCtr
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t DevAddrCtr(DEV_ACTION_INFO *DevActionInfo, uint8_t *p, uint8_t DataLen)
{
uint8_t Ret = 0x02; //Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
uint32_t DevAddrOut = 0x00; //<2F><EFBFBD><E8B1B8>ַ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
Dev_Action_Output DevActionOutput;
memset((uint8_t *)&DevActionOutput, 0x00, sizeof(Dev_Action_Output));
switch(DataLen)
{
case DevCtrlLen:
case DevCtrlDlyLenAddr:
memcpy((uint8_t *)&DevActionOutput, p, DataLen);
break;
default:
return Ret;
}
switch(DataLen)
{
case DevCtrlLen: //6<>ֽ<EFBFBD> <20><>Ҫ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
DevAddrOut = Find_AllDevice_List_Information(DevActionOutput.DevActionOutCfg.DevType, DevActionOutput.DevActionOutCfg.DevAddr);
break;
case DevCtrlDlyLenAddr: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E8B1B8>ַ
DevAddrOut = DevActionOutput.DevActionOutAddr;
break;
}
if(DevAddrOut == 0x00) return Ret;
Ret = 0x01;
if( DevActionOutput.DevActionOutCfg.DevDlyValue.DelayCont == 0x00 )
{
Device_Public_Information_G BUS_Public;
DevDly_InfoSet(
DevActionOutput.DevDlyAddr,
0x00,
DevActionOutput.DevActionOutCfg.DevCtrlState,
DevActionOutput.DevActionOutCfg.DevDlyValue,
0x00);
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
switch(DevActionOutput.DevActionOutCfg.DevType)
{
case DEV_RS485_SWT:
case DEV_RS485_WxLock:
case Dev_Host_Service:
case Dev_Host_HVout:
case Dev_Host_LVoutput:
case Dev_NodeCurtain:
case DEV_RS485_CURTAIN:
case DEV_RS485_IR_SEND:
case DEV_RS485_TEMP:
case DEV_RS485_FreshAir:
case DEV_RS485_HEATER:
case Dev_Energy_Monitor:
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionOutput.DevActionOutCfg.DevType,
DevAddrOut,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState);
}
}
break;
case DEV_RS485_PWM:
case DEV_RS485_STRIP:
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
case Dev_Rs485_PB20_Relay:
case DEV_Virtual_ColorTemp:
case Dev_Virtual_GlobalSet:
if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL )
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionOutput.DevActionOutCfg.DevType,
DevAddrOut,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState);
}
}
break;
}
}else if( (DevActionOutput.DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionOutput.DevDlyAddr != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %d,ʱ<>䣺%d<><64>λ<EFBFBD><CEBB>%d",
DevActionOutput.DevActionOutCfg.DevType,
DevActionOutput.DevActionOutCfg.DevOutputLoop,
DevActionOutput.DevActionOutCfg.DevCtrlState,
DevActionOutput.DevActionOutCfg.DevDlyValue.DelayCont,
DevActionOutput.DevActionOutCfg.DevDlyValue.DelayWeight);
DevDly_InfoSet(
DevActionOutput.DevDlyAddr,
0x01,
DevActionOutput.DevActionOutCfg.DevCtrlState,
DevActionOutput.DevActionOutCfg.DevDlyValue,
0x00);
}
return Ret;
}
/*******************************************************************************
* Function Name : DevActionCtrl
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t DevActionCtrl(uint8_t *p, uint8_t DataLen)
{
uint8_t Ret = 0x02; //Ĭ<><C4AC>ʧ<EFBFBD><CAA7>
uint16_t SceneCtrlNo = 0x00; //<2F><><EFBFBD>Ƶij<C6B5><C4B3><EFBFBD><EFBFBD><EFBFBD>
uint16_t SceneCtrlState = 0x00;
if(DevCtrlLen != DataLen) return Ret;
switch(p[0])
{
case Dev_Host_Invalid:
DevActionGlobal.ServerCtrl = 0x01;
SceneCtrlNo = p[3];
SceneCtrlNo <<= 0x08;
SceneCtrlNo |= p[2];
SceneCtrlState = p[5];
SceneCtrlState <<= 0x08;
SceneCtrlState |= p[4];
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d", SceneCtrlNo);
if(SceneCtrlNo == DevActionGlobal.SleepActionNo) p[4] = 0x02;
DevAction_No_Ctrl(SceneCtrlNo, 0x01, SceneCtrlState);
break;
default:
Ret = DevAddrCtr(NULL, p, DataLen);
break;
}
return Ret;
}
/*******************************************************************************
* Function Name : Ele_Ctrl_OpenClose
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>״̬
* Input :
Ctrl : 0x01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x00-<EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void Ele_Ctrl_OpenClose(uint8_t Ctrl)
{
uint8_t DataBuf[6];
DataBuf[0] = Dev_Host_Service;
DataBuf[1] = 0x00;
DataBuf[2] = 0x00;
DataBuf[3] = 0x00;
DataBuf[4] = Ctrl;
DataBuf[5] = 0x00;
DevAddrCtr(NULL, DataBuf, 0x06); //<2F>忨ȡ<E5BFA8><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
/*******************************************************************************
* Function Name : DevAction_ExpandCtrl
* Description : <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0,j = 0;
uint32_t DevAddrOut = 0x00; //<2F><EFBFBD><E8B1B8>ַ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
Device_Public_Information_G BUS_Public;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
Expand_And_Dimm_Action_Get(DevActionInfo,expand_type,dimm_type,0x01);
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != DevAddrOut)
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout:
for(j = 0; j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if( expand_type[j].ExpandReadFlag != 0x00 )
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != 0x00 )
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
expand_type[j].ExpandReadFlag,
HVoutNumMAX,
expand_type[j].ExpandReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>״̬Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
expand_type[j].ExpandReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
expand_type[j].ExpandReadFlag=0x00;
}
break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰѭ<C7B0><D1AD>
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM:
for(j = 0; j < Action_Group_Ctrl_Num; j++ )
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr )
{
if( dimm_type[j].DimmReadFlag != 0x00 )
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != 0x00 )
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
dimm_type[j].DimmReadFlag,
LED_OUT_CH_MAX,
dimm_type[j].DimmReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD>ַ:%d<><64><EFBFBD><EFBFBD>·<EFBFBD><C2B7>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr,
dimm_type[j].DimmReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
dimm_type[j].DimmReadFlag = 0x00;
}
break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰѭ<C7B0><D1AD>
}
}
break;
#endif
}
}
}
for(i = 0; i < DevActionInfo->DevCtrlNum ; i++ )
{
if( DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00 )
{
//<2F><><EFBFBD><EFBFBD>ʱִ<CAB1>б<EFBFBD>־λ
DevDly_InfoSet(
DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case DEV_RS485_SWT:
case DEV_RS485_WxLock:
case Dev_Host_Service:
case Dev_Host_LVoutput:
case Dev_NodeCurtain:
case DEV_RS485_IR_SEND:
case DEV_RS485_TEMP:
case DEV_RS485_CURTAIN:
case DEV_RS485_FreshAir:
case DEV_RS485_HEATER:
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
case Dev_Rs485_PB20_Relay:
case DEV_Virtual_NoCard:
case DEV_Virtual_Card:
case Dev_485_BLE_Music:
case DEV_Carbon_Saved:
case Dev_Scene_Restore:
case Dev_Energy_Monitor:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
if( (DevActionInfo != NULL) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ״̬<D7B4><CCAC>ֵ
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}
}
break;
case DEV_RS485_STRIP:
case DEV_Virtual_ColorTemp:
case Dev_Virtual_GlobalSet:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
if( (DevActionInfo != NULL) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ״̬<D7B4><CCAC>ֵ
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}
}
break;
case DEV_RS485_MUSIC:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
if( ( DevActionInfo != NULL )
&& ( CondIsPass == CondJudge(DevActionInfo->DevActionCond.DevActionU64Cond.WarningState, DevActionGlobal.DevActionU64Cond.WarningState) ) )
{
DEV_MUSIC_CTRLSTATE DevMusicCtrlState; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>״̬
BLV_Music_CtrlState_Get(&DevMusicCtrlState,DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
switch(DevMusicCtrlState.DevMusicCtrlWay.CtrlDirect)
{
case 0x03: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD>ִ<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>·:%d ״̬: %04X",DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //ִ<>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
case 0x04: //<2F><><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
break;
default: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD>ִ<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><EFBFBD>ػ<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>ַ:%d <20><>·:%d״̬: %04X",BUS_Public.addr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //ִ<>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
}
}
}
break;
}
}
else if( ( 0x00 != DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont )
&& ( 0x00 != DevActionInfo->DevActionOutput[i].DevDlyAddr ) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %d,ʱ<>䣺%d<><64>λ<EFBFBD><CEBB>%d",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight);
DevDly_InfoSet(
DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x01,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
}
}
}
}
/*******************************************************************************
* Function Name : DevAction_ExpandLightOpen
* Description : <EFBFBD><EFBFBD>չ<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0,j = 0;
uint32_t DevAddrOut = 0;
Device_Public_Information_G BUS_Public;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
Expand_And_Dimm_Action_Get(DevActionInfo,expand_type,dimm_type,0x01);
for(i = 0; i < DevActionInfo->DevCtrlNum; i++ )
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout:
for(j = 0; j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if( expand_type[j].ExpandReadFlag != 0x00 )
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL )
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
0x00,
0x00,
DevAddrOut,
expand_type[j].ExpandReadFlag,
HVoutNumMAX,
expand_type[j].ExpandReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
expand_type[j].ExpandReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
expand_type[j].ExpandReadFlag=0x00;
}
break;
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM:
for(j = 0; j < Action_Group_Ctrl_Num; j++)
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr )
{
if( dimm_type[j].DimmReadFlag != 0x00 )
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
0x00,
0x00,
DevAddrOut,
dimm_type[j].DimmReadFlag,
LED_OUT_CH_MAX,
dimm_type[j].DimmReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD>ַ:%d<><64><EFBFBD><EFBFBD>·<EFBFBD><C2B7>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr,
dimm_type[j].DimmReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
dimm_type[j].DimmReadFlag = 0x00;
}
}
}
break;
#endif
}
}
}
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if( DevActionInfo->DevActionOutput[i].DevActionOutAddr == 0x00 )
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00 )
{
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr, 0x00, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue, 0x00);
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_LVoutput:
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
case Dev_Rs485_PB20_Relay:
case Dev_Scene_Restore:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}else{
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}
}
break;
case DEV_RS485_STRIP:
case DEV_Virtual_ColorTemp:
case Dev_Virtual_GlobalSet:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL )
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
}
}
break;
}
}else if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionInfo->DevActionOutput[i].DevDlyAddr != 0x00) )
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout:
case Dev_Host_LVoutput:
case DEV_RS485_PWM:
case DEV_RS485_STRIP:
case DEV_Virtual_ColorTemp:
case Dev_Scene_Restore:
case Dev_Virtual_GlobalSet:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %d,ʱ<>䣺%d<><64>λ<EFBFBD><CEBB>%d",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight);
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x01,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
break;
}
}
}
}
}
/*******************************************************************************
* Function Name : DevAction_ExpandLightClose
* Description : <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0x00,j = 0x00;
uint32_t DevAddrOut = 0x00;
Device_Public_Information_G BUS_Public;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
Expand_And_Dimm_Action_Get(DevActionInfo,expand_type,dimm_type,0x00);
for(i = 0; i < DevActionInfo->DevCtrlNum; i++ )
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
switch( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType )
{
case Dev_Host_HVout:
for(j = 0; j < Action_Group_Ctrl_Num ; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if(expand_type[j].ExpandReadFlag != 0x00)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
0x00,
0x00,
DevAddrOut,
expand_type[j].ExpandReadFlag,
HVoutNumMAX,
expand_type[j].ExpandReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>״̬Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
expand_type[j].ExpandReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
expand_type[j].ExpandReadFlag=0x00;
}
break; //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM:
for(j = 0;j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr)
{
if(dimm_type[j].DimmReadFlag != 0x00)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
0x00,
0x00,
DevAddrOut,
dimm_type[j].DimmReadFlag,
LED_OUT_CH_MAX,
dimm_type[j].DimmReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD>ַ:%d<><64><EFBFBD><EFBFBD>·<EFBFBD><C2B7>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr,
dimm_type[j].DimmReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
dimm_type[j].DimmReadFlag = 0x00;
}
break;
}
}
break;
#endif
}
}
}
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if( DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00 )
{
if( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00 )
{
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_LVoutput:
case DEV_RS485_STRIP:
case Dev_Rs485_PB20_Relay:
case DEV_Virtual_ColorTemp:
case Dev_Scene_Restore:
case Dev_Virtual_GlobalSet:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL )
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
}
}
break;
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL )
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x0012);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x0012);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x0012);
}
}
break;
}
}else if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionInfo->DevActionOutput[i].DevDlyAddr != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %d,ʱ<>䣺%d<><64>λ<EFBFBD><CEBB>%d",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight);
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x01,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
}
}
}
}
/*******************************************************************************
* Function Name : DevAction_ExpandClose
* Description : <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_INFO *DevActionInfo, uint8_t ModeCtrl)
{
uint8_t i = 0x00,j = 0x00;
uint32_t DevAddrOut = 0x00;
Device_Public_Information_G BUS_Public;
EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0};
DIMM_TYPE_G dimm_type[Action_Group_Ctrl_Num]={0};
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case Dev_Host_HVout:
for(j = 0; j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == expand_type[j].Addr)
{
if(expand_type[j].ExpandReadFlag != 0x00)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
0x00,
0x00,
DevAddrOut,
expand_type[j].ExpandReadFlag,
HVoutNumMAX,
expand_type[j].ExpandReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>״̬Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
expand_type[j].ExpandReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
expand_type[j].ExpandReadFlag=0x00;
}
break; //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
}
}
break;
#if RS485_LED_Flag
case DEV_RS485_PWM:
for(j = 0; j < Action_Group_Ctrl_Num; j++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr == dimm_type[j].Addr)
{
if(dimm_type[j].DimmReadFlag != 0x00)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl(
0x00,
0x00,
DevAddrOut,
dimm_type[j].DimmReadFlag,
LED_OUT_CH_MAX,
dimm_type[j].DimmReadState);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ⱥ<EFBFBD>ؿ<EFBFBD><EFBFBD>ƿ<EFBFBD>ʼ<EFBFBD><EFBFBD>ַ:%d<><64><EFBFBD><EFBFBD>·<EFBFBD><C2B7>־:%08X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s ",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr,
dimm_type[j].DimmReadFlag,
DevActionInfo->DevActionCore.DevActionName);
}
dimm_type[j].DimmReadFlag = 0x00;
}
break;
}
}
break;
#endif
}
}
}
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00)
{
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case DEV_RS485_SWT:
case Dev_Host_LVoutput:
case DEV_RS485_STRIP:
case Dev_Rs485_PB20_Relay:
case DEV_Virtual_ColorTemp:
case Dev_Scene_Restore:
case Dev_Virtual_GlobalSet:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
}else {
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
}
}
break;
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) //<2F>ǿ<EFBFBD>
{
if((DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00)) //
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%04X <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d <20><>ַ:%04X %d· <20><><EFBFBD><EFBFBD>״̬: %04X",
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x0012);
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x0012);
}else{
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x0012);
}
}
break;
case Dev_NodeCurtain: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ͣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ͣ <20><><EFBFBD><EFBFBD>ͣȡ<CDA3><C8A1>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
switch(ModeCtrl)
{
case NOR_MODE_CTRL:
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00FF)
{
case DEV_CTRLWAY_OPEN: //<2F><>
case DEV_CTRLWAY_CLOSE: //<2F><>
case CFG_Dev_CtrlWay_Is_TOGGLE: //<2F><><EFBFBD><EFBFBD>
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_STOP);
break;
case 0x15: //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>ƿ<EFBFBD>
case 0x16: //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>ƹ<EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>ɹر<C9B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ƹر<C6B9>״̬Ϊ0x17
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
0x17);
break;
case DEV_CTRLWAY_STOP:
break;
}
break;
case SLEEP_MODE_CTRL:
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
break;
}
}
break;
case DEV_RS485_CURTAIN:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL )
{
switch(ModeCtrl)
{
case NOR_MODE_CTRL: //<2F><>ͨģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00FF)
{
case DEV_CTRLWAY_OPEN:
case DEV_CTRLWAY_CLOSE:
case CFG_Dev_CtrlWay_Is_TOGGLE:
case 0x05:
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
DevActionInfo->DevActionState.DevAddrIn,
DevActionInfo->DevActionInput.inAddr,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_STOP);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>رտ<EFBFBD><EFBFBD><EFBFBD> state:%4X",DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
break;
case DEV_CTRLWAY_STOP:
break;
}
break;
case SLEEP_MODE_CTRL: //˯<><CBAF>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
break;
}
}
break;
case Dev_Host_Service: //˯<>߿<EFBFBD><DFBF>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
switch(ModeCtrl)
{
case NOR_MODE_CTRL: //<2F><>ͨģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)
{
case DEV_CTRLWAY_OPEN:
case DEV_CTRLWAY_CLOSE:
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_CLOSE);
break;
}
break;
case SLEEP_MODE_CTRL: //˯<><CBAF>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevAddrOut,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState);
break;
}
}
break;
}
}else if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionInfo->DevActionOutput[i].DevDlyAddr != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %d,ʱ<>䣺%d<><64>λ<EFBFBD><CEBB>%d",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight);
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
}
}
}
}
/*******************************************************************************
* Function Name : DevAction_Mode_Ctrl
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
Mode <EFBFBD><EFBFBD>0x01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>0x02-<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SceneMode <EFBFBD><EFBFBD>NOR_MODE_CTRL 0x01 <EFBFBD><EFBFBD>ͨģʽ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>SLEEP_MODE_CTRL 0x02 ˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CtrlState <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 1-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2-<EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_ExpandDlyClear(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0;
uint32_t DevAddrOut = 0x00;
Device_Public_Information_G BUS_Public;
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Host_Invalid)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut);
}
if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionInfo->DevActionOutput[i].DevDlyAddr != 0x00) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %d,ʱ<>䣺%d<><64>λ<EFBFBD><CEBB>%d",
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight);
DevDly_InfoSet(DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00);
}
}
}
}
/*******************************************************************************
* Function Name : DevAction_No_Get
* Description : <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵõ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
Mode <EFBFBD><EFBFBD>0x01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>0x02-<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SceneMode <EFBFBD><EFBFBD>NOR_MODE_CTRL 0x01 <EFBFBD><EFBFBD>ͨģʽ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>SLEEP_MODE_CTRL 0x02 ˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CtrlState <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 1-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2-<EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint32_t DevAction_No_Get(uint16_t DevActionNo)
{
uint16_t i = 0;
uint32_t list_addr = 0;
DEV_ACTION_INFO DevActionInfo;
for(i = 0; i < DevActionGlobal.DevActionNum; i++ )
{
list_addr = SRAM_DevAction_List_Start_Addr + i*SRAM_DevAction_List_Size;
SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), list_addr);
if(DevActionInfo.DevActionCore.ActionNo == DevActionNo)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s", DevActionNo, DevActionInfo.DevActionCore.DevActionName);
return list_addr; //<2F><><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
}
}
return 0x00;
}
/*******************************************************************************
* Function Name : DevAction_Mode_Ctrl
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
Mode <EFBFBD><EFBFBD>0x01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>0x02-<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SceneMode <EFBFBD><EFBFBD>NOR_MODE_CTRL 0x01 <EFBFBD><EFBFBD>ͨģʽ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>SLEEP_MODE_CTRL 0x02 ˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CtrlState <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 1-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2-<EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_Mode_Ctrl(
DEV_ACTION_INFO *DevActionInfo,
uint8_t Mode,
uint8_t SceneMode,
uint16_t CtrlState)
{
switch(CtrlState)
{
case DEV_CTRLWAY_OPEN:
switch(Mode)
{
case SCENE_MODE_CTRL:
DevAction_ExpandCtrl(DevActionInfo);
break;
case LIGHT_MODE_CTRL:
DevAction_ExpandLightOpen(DevActionInfo);
break;
}
break;
case DEV_CTRLWAY_CLOSE:
switch(Mode)
{
case SCENE_MODE_CTRL:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹرգ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d", DevActionInfo->DevActionCore.ActionNo);
DevAction_ExpandClose(DevActionInfo, SceneMode);
break;
case LIGHT_MODE_CTRL:
DevAction_ExpandLightClose(DevActionInfo);
break;
}
break;
case DEV_CTRLWAY_INVALID: //<2F><><EFBFBD>Ʒ<EFBFBD>ʽ<EFBFBD><CABD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ʱִ<CAB1><D6B4>
DevAction_ExpandDlyClear(DevActionInfo);
break;
}
}
/*******************************************************************************
* Function Name : DevAction_Output
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
* Input :
DevActionNo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Mode <EFBFBD><EFBFBD>0x01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>0x02-<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CtrlState <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 1-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2-<EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_No_Ctrl(uint16_t DevActionNo, uint8_t Mode, uint16_t CtrlState)
{
uint16_t i = 0x00; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
uint32_t list_addr = 0x00; //<2F><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
DEV_ACTION_INFO DevActionInfo;
Dev_Dly_Value Temp_Dly;
if(DevActionNo == 0x00) return ; //ֱ<><D6B1><EFBFBD>˳<EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD>ִ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d", DevActionNo);
for(i = 0; i < DevActionGlobal.DevActionNum; i++)
{
list_addr = SRAM_DevAction_List_Start_Addr + i*SRAM_DevAction_List_Size;
SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), list_addr);
if(DevActionInfo.DevActionCore.ActionNo == DevActionNo)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s<><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>ַ:%08X,<2C><><EFBFBD><EFBFBD>ִ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<CAB1>б<EFBFBD>־", \
DevActionNo, \
DevActionInfo.DevActionCore.DevActionName, \
list_addr);
Temp_Dly.DelayCont = 0x00;
Temp_Dly.DelayWeight = 0x00;
DevDly_InfoSet(DevDlyAddr_Get(list_addr, DevActionNo), 0x00, 0x00, Temp_Dly, 0x00);//<2F><><EFBFBD><EFBFBD>ʱִ<CAB1>б<EFBFBD>־λ <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ʱ<EFBFBD>ڵ<EFBFBD><DAB5>ĵ<EFBFBD>ַ
if( (DevActionNo == ACTION_SCENE_SLEEP) || (DevActionInfo.DevActionCond.SceneExcute == ACTION_SCENE_SLEEP) )
{
DevAction_Mode_Ctrl(&DevActionInfo, Mode, SLEEP_MODE_CTRL, CtrlState);
}else {
DevAction_Mode_Ctrl(&DevActionInfo, Mode, NOR_MODE_CTRL, CtrlState);
}
if( DevActionGlobal.ServerCtrl == 0x01 )
{
DevActionGlobal.ServerCtrl = 0x00;
if( DevActionInfo.DevActionCond.SceneExcute == ACTION_SCENE_SLEEP )
{
if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) //<2F><>ҹ<EFBFBD><D2B9><EFBFBD>йأ<D0B9><D8A3><EFBFBD>ҹ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
{
if( DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart)
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart;
}
}
DevActionGlobal.SleepMode_State = 0x01; //˯<><CBAF>ģʽ<C4A3><CABD>
DevActionGlobal.SleepLight_State = 0x00; //Ϩ<>𱳹⣬<F0B1B3B9>ر<EFBFBD><D8B1><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD>");
}else {
if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) //<2F><>ҹ<EFBFBD><D2B9><EFBFBD>йأ<D0B9><D8A3><EFBFBD>ҹ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
}
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD>");
}
}
break;
}
}
}
/*******************************************************************************
* Function Name : DevAction_Output
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
* Input :
DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
* Return : None
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_Output(DEV_ACTION_INFO *DevActionInfo)
{
switch( DevActionInfo->DevActionCond.SceneExcute )
{
case ACTION_SCENE_ONE:
case ACTION_SCENE_MULTI:
if( ( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 )
&& ( 0x01 == DevActionInfo->DevActionCond.DevActionU64Cond.NeightFlag ) )
{
switch( DevActionGlobal.DevActionU64Cond.NeightState )
{
case NightModeStart:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹر<C9B9> ׼<><D7BC>ִ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ҹ<EFBFBD><D2B9>:");
DevActionGlobal.DevActionU64Cond.NeightState = NightModeOpen;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_OPEN); //<2F><><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9>
if( DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT )
{
DevActionGlobal.SleepMode_State = 0x00;
Logic_Music_Ctrl(0x00, 0x00, Find_Device_List_Information(0x15,0x01), 0x00, 0x0020); //<2F><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> -1");
}
break;
case NightModeOpen:
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_CLOSE);//<2F>ر<EFBFBD>ҹ<EFBFBD><D2B9>
case NightModeClose:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
break;
}
}else {
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_ExpandCtrl(DevActionInfo);
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> -2");
}
}
break;
case ACTION_SCENE_TWO: //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹرգ<D8B1>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
if( (DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01) && (DevActionInfo->DevActionCond.DevActionU64Cond.NeightFlag == 0x01) )
{
switch(DevActionGlobal.DevActionU64Cond.NeightState)
{
case NightModeStart:
DevActionGlobal.DevActionU64Cond.NeightState = NightModeOpen;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_OPEN); //<2F><><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9>
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD> 2025-09-05
Logic_Music_Ctrl(0x00, 0x00, Find_Device_List_Information(0x15,0x01), 0x00, 0x0020); //<2F><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> -3");
break;
case NightModeClose:
case NightModeOpen:
if(NightModeOpen == DevActionGlobal.DevActionU64Cond.NeightState)
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_CLOSE); //<2F>ر<EFBFBD>ҹ<EFBFBD><D2B9>
}
if(DEV_STATE_CLOSE == DevActionInfo->DevActionState.SceneState) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
}
else if(DEV_STATE_OPEN == DevActionInfo->DevActionState.SceneState)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandClose(DevActionInfo, NOR_MODE_CTRL); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
}
break;
}
}else {
if(DEV_STATE_CLOSE == DevActionInfo->DevActionState.SceneState) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
}
else if(DEV_STATE_OPEN == DevActionInfo->DevActionState.SceneState) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandClose(DevActionInfo, NOR_MODE_CTRL); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
}
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> -4");
}
}
break;
case ACTION_SCENE_MAINSWITCH: //<2F>ܿ<EFBFBD><DCBF><EFBFBD>
if( (DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01) && (DevActionInfo->DevActionCond.DevActionU64Cond.NeightFlag == 0x01) )
{
switch(DevActionGlobal.DevActionU64Cond.NeightState)
{
case NightModeStart:
DevActionGlobal.DevActionU64Cond.NeightState = NightModeOpen;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_OPEN); //<2F><><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9>
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD>
Logic_Music_Ctrl(0x00, 0x00, Find_Device_List_Information(0x15,0x01), 0x00, 0x0020); //<2F><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
break;
case NightModeClose:
case NightModeOpen:
if(DevActionGlobal.DevActionU64Cond.NeightState == NightModeOpen)
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_CLOSE); //<2F>ر<EFBFBD>ҹ<EFBFBD><D2B9>
}
if(DevActionInfo->DevActionState.SceneState == DEV_STATE_CLOSE) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandLightOpen(DevActionInfo); //<2F>򿪵<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ĵƹ<C4B5>
}
else if(DevActionInfo->DevActionState.SceneState == DEV_STATE_OPEN)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandClose(DevActionInfo, SLEEP_MODE_CTRL); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
}
break;
}
}else {
if(DevActionInfo->DevActionState.SceneState == DEV_STATE_CLOSE) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandLightOpen(DevActionInfo); //<2F>򿪵<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ĵƹ<C4B5>
}
else if(DevActionInfo->DevActionState.SceneState == DEV_STATE_OPEN) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹرտ<D8B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:׼<><D7BC>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>");
DevAction_ExpandClose(DevActionInfo, SLEEP_MODE_CTRL); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
}
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD>
}
}
break;
case ACTION_SCENE_SLEEP: //˯<><CBAF>ģʽ <20><>ȫ<EFBFBD><C8AB><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><E3BFAA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>
if(DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01) //<2F><>ҹ<EFBFBD><D2B9><EFBFBD>й<EFBFBD> <20><>ҹ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
{
if(DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart)
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ
DevAction_ExpandClose(DevActionInfo, SLEEP_MODE_CTRL); //˯<>߳<EFBFBD><DFB3><EFBFBD>Ϊ<EFBFBD><CEAA> <20><><EFBFBD>ǵùر<C3B9><D8B1><EFBFBD><EFBFBD>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
DevActionGlobal.SleepMode_State = 0x01; //˯<><CBAF>ģʽ<C4A3><CABD>
DevActionGlobal.SleepLight_State = 0x00; //Ϩ<><CFA8>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> 1");
}else{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeOpen;
DevAction_ExpandLightOpen(DevActionInfo); //<2F><><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9>
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD>
Logic_Music_Ctrl(0x00, 0x00, Find_Device_List_Information(0x15,0x01), 0x00, 0x0020); //<2F><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>˳<EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> 1");
}
}else{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> ˯<>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
DevActionGlobal.SleepMode_State = 0x01; //˯<><CBAF>ģʽ<C4A3><CABD>
DevActionGlobal.SleepLight_State = 0x00; //Ϩ<><CFA8>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> 2");
}
break;
case ACTION_SCENE_HELPSLEEP: //<2F><><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ҹ<EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹر<DCB9>ҹ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>ȡ<EFBFBD><C8A1>˯<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʱ
if((DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 )&& (DevActionInfo->DevActionCond.DevActionU64Cond.NeightFlag == 0x01)) //<2F><>ҹ<EFBFBD><D2B9><EFBFBD>й<EFBFBD> <20><>ҹ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
{
switch(DevActionGlobal.DevActionU64Cond.NeightState)
{
case NightModeStart:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ׼<><D7BC>ִ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ҹ<EFBFBD><D2B9>:");
DevActionGlobal.DevActionU64Cond.NeightState = NightModeOpen;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_OPEN);//<2F><><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9> <20><>ȡ<EFBFBD><C8A1>˯<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʱ
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD>
}
Logic_Music_Ctrl(0x00, 0x00, Find_Device_List_Information(0x15,0x01), 0x00, 0x0020); //<2F><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
case NightModeClose:
case NightModeOpen:
if(DevActionGlobal.DevActionU64Cond.NeightState == NightModeOpen) //ҹ<>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>ҹ<EFBFBD>Ʊ<EFBFBD>־<EFBFBD>ر<EFBFBD>");
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_CLOSE);//<2F>ر<EFBFBD>ҹ<EFBFBD><D2B9>
}
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ
DevActionGlobal.SleepMode_State = 0x01; //˯<><CBAF>ģʽ<C4A3><CABD>
DevActionGlobal.SleepLight_State = 0x00; //Ϩ<><CFA8>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> 3");
}
break;
}
}else{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x01; //˯<><CBAF>ģʽ<C4A3><CABD>
DevActionGlobal.SleepLight_State = 0x00; //Ϩ<><CFA8>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD> 4");
}
}
break;
#if RS485_Switch_Rotary_Flag
case ACTION_SCENE_Rotary: //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
if((DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01) && (DevActionInfo->DevActionCond.DevActionU64Cond.NeightFlag == 0x01)) //<2F><>ҹ<EFBFBD><D2B9><EFBFBD>й<EFBFBD>
{
switch(DevActionGlobal.DevActionU64Cond.NeightState)
{
case NightModeStart:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD> ׼<><D7BC>ִ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ҹ<EFBFBD><D2B9>:");
DevActionGlobal.DevActionU64Cond.NeightState = NightModeOpen;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_OPEN);//<2F><><EFBFBD><EFBFBD>ҹ<EFBFBD><D2B9>
if(DevActionInfo->DevActionInput.DevType == DEV_RS485_SWT)
{
DevActionGlobal.SleepMode_State = 0x00; //˯<><CBAF>ģʽ<C4A3><CABD> 2025-09-05
}
break;
case NightModeClose:
case NightModeOpen:
if(NightModeOpen == DevActionGlobal.DevActionU64Cond.NeightState)
{
DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose;
DevAction_No_Ctrl(DevActionGlobal.SleepActionNo, 0x02, DEV_CTRLWAY_CLOSE);//<2F>ر<EFBFBD>ҹ<EFBFBD><D2B9>
}
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_RotaryCtrl(DevActionInfo);
break;
}
}else{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>и<EFBFBD>ֵ:");
DevAction_RotaryCtrl(DevActionInfo);
}
break;
#endif
case ACTION_SCENE_SLEEP_UNRELATED:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD> <20>޿<EFBFBD>ȡ<EFBFBD><C8A1>-<2D><><EFBFBD><EFBFBD><E2B0B4> ׼<><D7BC>ִ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ҹ<EFBFBD><D2B9>:");
DevAction_ExpandCtrl(DevActionInfo); //ִ<>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
break;
}
if(DevActionGlobal.DevActionU64Cond.NeightState != DevActionGlobal.Last_NeightState) {
DevActionGlobal.Last_NeightState = DevActionGlobal.DevActionU64Cond.NeightState;
}
}
/*******************************************************************************
* @Function Name : DevAction_IndicateCtrl
* @Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
* @Input :
* DevActionInfo : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* @Return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_IndicateCtrl(DEV_ACTION_INFO *DevActionInfo)
{
uint8_t i = 0x00;
uint8_t CtrlWay = 0x00;
Device_Public_Information_G BUS_Public;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>ı<EFBFBD>׼<EFBFBD><EFBFBD>ִ<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s<><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>%d,<2C><EFBFBD><E8B1B8><EFBFBD><EFBFBD>:%d",
DevActionInfo->DevActionCore.DevActionName,
DevActionInfo->DevActionState.SceneState,
DevActionInfo->DevCtrlNum);
for(i = 0; i < DevActionInfo->DevCtrlNum; i++)
{
if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00)
{
switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType)
{
case DEV_RS485_SWT:
case Dev_Host_LVoutput:
CtrlWay = DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0x00ff;
switch(CtrlWay)
{
case DEV_CTRLWAY_RELATESCENE:
switch(DevActionInfo->DevActionState.SceneState)
{
case DEV_STATE_OPEN:
case DEV_STATE_CLOSE:
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<EFBFBD><EFBFBD>,<2C><EFBFBD><E8B1B8><EFBFBD><EFBFBD>: %d <20><>ַ:%d<><64><EFBFBD><EFBFBD>·:%d<><64>״̬:%d",
BUS_Public.type,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionState.SceneState);
DevDly_InfoSet(
DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x00); //<2F><><EFBFBD><EFBFBD>˸ <20><><EFBFBD><EFBFBD>ʱ
if(NULL != BUS_Public.DevFunInfo.Dev_Output_Ctrl)
{
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutAddr,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionState.SceneState); //<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>״̬ȥ<CCAC><C8A5><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>
}
break;
}
break;
case CFG_Dev_CtrlWay_Is_RelateBlink:
if(0x00 != DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont) //<2F><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
{
switch(DevActionInfo->DevActionState.SceneState)
{
case DEV_STATE_OPEN: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸ Ӧ<>ȿ<EFBFBD>ָʾ<D6B8><CABE>
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸,״̬:%04X",CFG_Dev_CtrlWay_Is_TOGGLE |(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0xff00));
DevDly_InfoSet(
DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x01,
CFG_Dev_CtrlWay_Is_TOGGLE |(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0xff00),
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x01);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutAddr,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DEV_CTRLWAY_OPEN | ( DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0xff00 ) );
}
break;
case DEV_STATE_CLOSE: //<2F>ر<EFBFBD><D8B1><EFBFBD>˸ Ӧ<><D3A6><EFBFBD><EFBFBD>ָʾ<D6B8><CABE>
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>˸");
DevDly_InfoSet(
DevActionInfo->DevActionOutput[i].DevDlyAddr,
0x01,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue,
0x02);
break;
}
}
break;
}
break;
case Dev_NodeCurtain:
if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00ff) == DEV_CTRLWAY_RELATESCENE )
{
if( DevActionInfo->DevActionState.SceneState == DEV_STATE_OPEN )
{
switch(DevActionInfo->DevActionInput.inType)
{
case DEV_CTRLWAY_OPEN: //<2F><>
case DEV_CTRLWAY_CLOSE: //<2F><>
case DEV_CTRLWAY_STOP: //ͣ
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<EFBFBD><EFBFBD>,<2C><EFBFBD><E8B1B8><EFBFBD><EFBFBD>: %d <20><>ַ:%d<><64><EFBFBD><EFBFBD>·:%d<><64>״̬:%d",
BUS_Public.type,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionState.SceneState);
if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL)
{
BUS_Public.DevFunInfo.Dev_Output_Ctrl(
0x00,
0x00,
DevActionInfo->DevActionOutput[i].DevActionOutAddr,
DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop,
DevActionInfo->DevActionInput.inType);
}
break;
}
}
}
break;
}
}
}
}
/*******************************************************************************
* @Function Name : BLV_DevAction_Cycle
* @Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD>
* @Input :
* Dev_processing_addr : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* BUS_Public <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @Return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_processing_addr,Device_Public_Information_G *BUS_Public)
{
DEV_ACTION_INFO DevActionInfo; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>Ϣ - ռ<><D5BC>512Byte
uint32_t DevActionAddr = 0x00,temp_offset = 0x00; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t j = 0x00; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t BreakFlag = 0x00; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>־ <20><><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
for(j = BUS_Public->ActionCoord; j < DevActionGlobal.DevActionNum; j++) //<2F><><EFBFBD><EFBFBD>Ϊɶ<CEAA><C9B6>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>ʵ<EFBFBD>
{
DevActionAddr = SRAM_DevAction_List_Start_Addr + j*SRAM_DevAction_List_Size;
temp_offset = DevActionAddr + sizeof(Dev_Action_Core) + sizeof(Dev_Action_Input) + sizeof(Dev_Action_Cond) + sizeof(Dev_Action_State) - 4;
if(SRAM_Read_DW(temp_offset) == Dev_processing_addr) //ӵ<><D3B5><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB4A5><EFBFBD>ڵ<EFBFBD> DevActionInfo.DevActionState.DevAddrIn
{
SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), DevActionAddr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥִ<C8A5>п<EFBFBD><D0BF><EFBFBD>
if( Data_CheckSum((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO)) != 0x00 )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>:%d");
continue;
}
RcuLockState_Scan();
DevAction_State_Get(&DevActionInfo); //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȥ<EFBFBD>ж<EFBFBD>
if( DevActionInfo.DevActionCond.DevActionU64Cond.DevActionOutFlag == 0x00 ) //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>־λ
{
if( DevActionInfo.DevActionState.SceneReuseFlag == 0x00 ) //<2F><><EFBFBD><EFBFBD>״̬ - <20><><EFBFBD>ñ<EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ʵ㣺<CAB5><E3A3BA><EFBFBD>ñ<EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<CAB2><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if( (BUS_Public->DevFunInfo.Dev_Input_Type_Get != NULL)
&& (BUS_Public->DevFunInfo.Dev_Input_Type_Get(DevActionInfo.DevActionState.DevAddrIn, DevActionInfo.DevActionInput.inAddr, DevActionInfo.DevActionInput.inType) == CtrlValid) )
{
if(BLV_DevAction_Cond_Judge(&DevActionInfo) == CondIsPass)
{
BreakFlag = 0x01;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><EFBFBD><E8B1B8>ַ%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%d <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08Xͨ<58><CDA8>", \
DevActionInfo.DevActionInput.DevType, \
DevActionInfo.DevActionInput.DevAddr, \
DevActionInfo.DevActionInput.inAddr, \
DevActionInfo.DevActionCore.ActionNo, \
DevActionAddr);
DevAction_Output(&DevActionInfo); //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}else if(DevActionInfo.DevActionCond.DevActionU64Cond.EleCtrlFlag == 0x01)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><EFBFBD><E8B1B8>ַ%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%d <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08Xδͨ<CEB4><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD>ȡ<EFBFBD><EFBFBD><E7BFAA>־",
DevActionInfo.DevActionInput.DevType,
DevActionInfo.DevActionInput.DevAddr,
DevActionInfo.DevActionInput.inAddr,
DevActionInfo.DevActionCore.ActionNo,
DevActionAddr);
if(0x00 == Get_Authorize_Lock_Status()) //<2F><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
BreakFlag = 0x01;
Ele_Ctrl_OpenClose(0x01); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
}
}else if(DevActionInfo.DevActionState.SceneReuseFlag == 0x01) //<2F><><EFBFBD>ڸ<EFBFBD><DAB8>ñ<EFBFBD>־
{
if( (DevActionInfo.DevActionCond.SceneExcute == ACTION_SCENE_MULTI) && (DevActionInfo.DevActionInput.DevType == DEV_RS485_SWT) )
{
if( (CondIsPass == BLV_DevAction_Cond_Judge(&DevActionInfo)) && (BUS_Public->DevFunInfo.Dev_Input_Type_Get != NULL) )
{
uint8_t ret = BUS_Public->DevFunInfo.Dev_Input_Type_Get(DevActionInfo.DevActionState.DevAddrIn, DevActionInfo.DevActionInput.inAddr, DevActionInfo.DevActionInput.inType);
if( (ret & 0x01) == CtrlValid )
{
if( DevActionInfo.DevActionState.MultiNumber == (ret >> 0x01) )
{
BreakFlag = 0x01;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s,<2C><EFBFBD><E8B1B8><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>:%d <20><EFBFBD><E8B1B8>ַ%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08Xͨ<58><CDA8>",
DevActionInfo.DevActionCore.DevActionName,
DevActionInfo.DevActionInput.DevType,
DevActionInfo.DevActionInput.DevAddr,
DevActionInfo.DevActionInput.inAddr,
DevActionInfo.DevActionCore.ActionNo,
DevActionAddr);
DevAction_Output(&DevActionInfo); //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}else {
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1>Ϳ<EFBFBD><CDBF>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±겻<C2B1><EAB2BB><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ַ
uint32_t TempAddr = 0x00,deal_addr = 0;
deal_addr = TempAddr+sizeof(Dev_Action_Core)+sizeof(Dev_Action_Input)+sizeof(Dev_Action_Cond)+sizeof(Dev_Action_State) - 4 ;
for(uint8_t i = 0; i < DevActionGlobal.DevActionNum; i++ )
{
TempAddr = SRAM_DevAction_List_Start_Addr + i * SRAM_DevAction_List_Size;
if( SRAM_Read_DW(deal_addr) == Dev_processing_addr )
{
deal_addr = deal_addr - 3;
if( SRAM_Read_Byte(deal_addr) == (ret >> 0x01) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08X",SRAM_Read_Byte(deal_addr),TempAddr);
break;
}
}
}
deal_addr = TempAddr+sizeof(Dev_Action_Core)+sizeof(Dev_Action_Input)+sizeof(Dev_Action_Cond)+sizeof(Dev_Action_State) - 4 ;
if( (TempAddr != 0x00) && (SRAM_Read_DW(deal_addr) == Dev_processing_addr) )
{
SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), TempAddr);
if( Data_CheckSum( (uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO) ) != 0x00 )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>:%d");
continue ;
}
BreakFlag = 0x01;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s,<2C><EFBFBD><E8B1B8><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>:%d <20><EFBFBD><E8B1B8>ַ%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08Xͨ<58><CDA8>",
DevActionInfo.DevActionCore.DevActionName,
DevActionInfo.DevActionInput.DevType,
DevActionInfo.DevActionInput.DevAddr,
DevActionInfo.DevActionInput.inAddr,
DevActionInfo.DevActionCore.ActionNo,
DevActionAddr);
DevAction_Output(&DevActionInfo); //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
}
}
}else {
if( (BLV_DevAction_Cond_Judge(&DevActionInfo) == CondIsPass)
&& (BUS_Public->DevFunInfo.Dev_Input_Type_Get != NULL)
&& ( BUS_Public->DevFunInfo.Dev_Input_Type_Get(
DevActionInfo.DevActionState.DevAddrIn,
DevActionInfo.DevActionInput.inAddr,
DevActionInfo.DevActionInput.inType ) == CtrlValid ) )
{
BreakFlag = 0x01;
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%s,<2C><EFBFBD><E8B1B8><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>:%d <20><EFBFBD><E8B1B8>ַ%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08Xͨ<58><CDA8>",
DevActionInfo.DevActionCore.DevActionName,
DevActionInfo.DevActionInput.DevType,
DevActionInfo.DevActionInput.DevAddr,
DevActionInfo.DevActionInput.inAddr,
DevActionInfo.DevActionCore.ActionNo,
DevActionAddr);
DevAction_Output(&DevActionInfo); //ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
}
}
if(BreakFlag == 0x01) //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD>³<EFBFBD><C2B3><EFBFBD>״̬
{
DevAction_State_Get(&DevActionInfo); //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȥ<EFBFBD>ж<EFBFBD>
}
//<2F><><EFBFBD><EFBFBD>״̬<D7B4>ı<EFBFBD>,<2C><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>
if( DevActionInfo.DevActionState.SceneState != DevActionInfo.DevActionState.SceneStateLast )
{
DevActionInfo.DevActionState.SceneStateLast = DevActionInfo.DevActionState.SceneState;
DevAction_IndicateCtrl(&DevActionInfo);
DevActionInfo.CheckVal = 0x00;
DevActionInfo.CheckVal = Data_CheckSum((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO));
SRAM_DMA_Write_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), DevActionAddr);
}
if(BreakFlag == 0x01)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>:%d", j);
break;
}
}
}
}
/*******************************************************************************
* @Function Name : BLV_DevAction_Task
* @Description : BLV<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void BLV_DevAction_Task(void)
{
static uint32_t dev_action_processing_tick = 0;
uint32_t Dev_processing_addr;
Device_Public_Information_G BUS_Public; //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t BreakFlag = 0x00;
if( SysTick_1ms - dev_action_processing_tick >= 50)
{
if(DevActionGlobal.Devi >= DevActionGlobal.DevNum)
{
DevActionGlobal.Devi = 0x00;
}
for( ; DevActionGlobal.Devi < DevActionGlobal.DevNum ;)
{
Dev_processing_addr = SRAM_Device_List_Start_Addr + DevActionGlobal.Devi*SRAM_Device_List_Size;
switch(SRAM_Read_Byte(Dev_processing_addr+Dev_Type))
{
case Dev_Host_LVinput: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case Dev_NodeCurtain: //<2F>ɽӵ<C9BD><D3B5>豸 - <20><><EFBFBD><EFBFBD>
case DEV_RS485_CARD: //RS485<38>豸 - <20>忨ȡ<E5BFA8><C8A1>
case DEV_RS485_TEMP: //RS485<38>豸 - <20>¿<EFBFBD><C2BF><EFBFBD>
case Dev_Host_Service: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
case DEV_RS485_SWT: //RS485<38>豸 - <20><><EFBFBD><EFBFBD>
case DEV_RS485_PWM: //RS485<38>豸 - <20><><EFBFBD><EFBFBD>
case DEV_RS485_FreshAir: //RS485<38>豸 - <20>·<EFBFBD>
case DEV_RS485_HEATER: //RS485<38>豸 - <20><>ů
case Dev_Rs458_RotaryCtrl: //RS485<38>豸 - <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
case DEV_Virtual_Card: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸 - <20>޿<EFBFBD>ȡ<EFBFBD><C8A1>
case DEV_Carbon_Saved: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸 - ̼<><CCBC><EFBFBD><EFBFBD>
case Dev_Scene_Restore: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ
BreakFlag = 0x01;
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), Dev_processing_addr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BLV_DevAction_Cycle(Dev_processing_addr, &BUS_Public); //<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ㣬<DAB5>ѵ<EFBFBD>ַ<EFBFBD><D6B7>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ȥ
break;
}
DevActionGlobal.Devi++;
if(BreakFlag == 0x01) break;
}
dev_action_processing_tick = SysTick_1ms;
}
}
/*******************************************************************************
* @Function Name : BLV_DevAction_Cycle
* @Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD>
* @Input :
* Dev_processing_addr : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* BUS_Public <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @Return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void DevAction_DevAddr_Ctrl(
uint32_t DevActionAddr,
uint8_t Mode,
uint8_t SceneMode,
uint16_t CtrlState)
{
DEV_ACTION_INFO DevActionInfo;
if( (DevActionAddr < SRAM_DevAction_List_Start_Addr) || (DevActionAddr >= SRAM_DevAction_List_End_Addr) )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ч:%08X",DevActionAddr);
return ;
}
SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), DevActionAddr);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ч:%08X<38><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d",DevActionAddr, DevActionInfo.DevActionCore.ActionNo);
if( DevActionInfo.DevActionCore.ActionNo == ACTION_SCENE_SLEEP )
{
if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 )
{
if( DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ");
DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart;
}
}
DevAction_Mode_Ctrl(&DevActionInfo, LIGHT_MODE_CTRL, SLEEP_MODE_CTRL, DEV_CTRLWAY_CLOSE);
}else {
DevAction_Mode_Ctrl(&DevActionInfo, Mode, SceneMode, CtrlState);
}
}
/*******************************************************************************
* @Function Name : BLV_DevDly_Process
* @Description : <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʱ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void BLV_DevDly_Process(uint32_t dly_processing_addr)
{
Struct_Dev_Dly DevDlyInfo;
uint8_t KeepFlag = 0x00;
Dev_Output_Ctrl_ptr Dev_Output_Ctrl;
SRAM_DMA_Read_Buff((uint8_t *)&DevDlyInfo, sizeof(Struct_Dev_Dly), dly_processing_addr);
if( (DevDlyInfo.DlyExcuteFlag == 0x01) && (SysTick_1ms >= DevDlyInfo.DlyExcuteTime) )
{
DevDlyInfo.DlyExcuteFlag = 0x00; //<2F><>־<EFBFBD><D6BE>0
KeepFlag = 0x01;
if(DevDlyInfo.DevDlyCore.DevDlyAddr != 0x00)
{
switch(DevDlyInfo.DevDlyCore.DevType)
{
case Dev_Host_HVout:
case Dev_Host_LVoutput:
case Dev_Host_Service:
case Dev_NodeCurtain:
case DEV_RS485_TEMP:
case DEV_RS485_SWT:
case DEV_RS485_STRIP:
case DEV_RS485_PWM:
case DEV_RS485_MUSIC:
case DEV_RS485_CURTAIN:
case DEV_RS485_FreshAir:
case DEV_RS485_HEATER:
case Dev_Rs485_PB20:
case Dev_Rs485_PB20_LD:
case Dev_Rs485_PB20_LS:
case Dev_Rs485_PB20_Relay:
case DEV_Virtual_NoCard:
case DEV_Virtual_Card:
case DEV_Virtual_ColorTemp:
case Dev_485_BLE_Music:
case DEV_Carbon_Saved:
case Dev_Energy_Monitor:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ʱ<EFBFBD>豸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %04X",DevDlyInfo.DevDlyCore.DevType, DevDlyInfo.DevDlyCore.DevOutputLoop ,DevDlyInfo.DevOutputType);
Dev_Output_Ctrl = (Dev_Output_Ctrl_ptr)SRAM_Read_DW(DevDlyInfo.DevDlyCore.DevDlyAddr + Dev_Output_Ctrl_0);
if(Dev_Output_Ctrl != NULL)
{
Dev_Output_Ctrl(0x00, 0x00, DevDlyInfo.DevDlyCore.DevDlyAddr, DevDlyInfo.DevDlyCore.DevOutputLoop, DevDlyInfo.DevOutputType);
}
break;
case Dev_Host_Invalid:
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<EFBFBD>е<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:%08X ״̬: %04X",DevDlyInfo.DevDlyCore.DevDlyAddr, DevDlyInfo.DevOutputType);
DevAction_DevAddr_Ctrl(DevDlyInfo.DevDlyCore.DevDlyAddr, 0x01, NOR_MODE_CTRL, DevDlyInfo.DevOutputType);
break;
}
}
if( KeepFlag == 0x01 )
{
SRAM_DMA_Write_Buff((uint8_t *)&DevDlyInfo,sizeof(Struct_Dev_Dly),dly_processing_addr);
}
if( DevDlyInfo.DlyBlinkFlag == 0x01 )
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>˸ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d %d· <20><><EFBFBD><EFBFBD>: %04X",DevDlyInfo.DevDlyCore.DevType, DevDlyInfo.DevDlyCore.DevOutputLoop ,DevDlyInfo.DevOutputType); //<2F>̵<EFBFBD><CCB5><EFBFBD>״̬<D7B4><CCAC>ֵ
DevDly_InfoSet(dly_processing_addr, 0x01, DevDlyInfo.DevOutputType, DevDlyInfo.DlyBlinkTime, 0x01);
}else if( DevDlyInfo.DlyBlinkFlag == 0x02 )
{
DevDly_InfoSet(dly_processing_addr, 0x01, DEV_CTRLWAY_CLOSE, DevDlyInfo.DlyBlinkTime, 0x00);
}
}
}
/*******************************************************************************
* @Function Name : BLV_DevDly_Task
* @Description : BLV<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void BLV_DevDly_Task(void)
{
static uint32_t dev_devdly_processing_tick = 0;
uint32_t dly_processing_addr = 0;
if( SysTick_1ms - dev_devdly_processing_tick >= 10 )
{
dev_devdly_processing_tick = SysTick_1ms;
if( DevActionGlobal.DevDlyi > DevActionGlobal.DevDlyNum ) DevActionGlobal.DevDlyi = 0x00;
dly_processing_addr = SRAM_DevDly_List_Start_Addr + DevActionGlobal.DevDlyi*DevDlyStructLen;
BLV_DevDly_Process(dly_processing_addr);
DevActionGlobal.DevDlyi++;
}
}