From d10556b0d53a548a8552c147675738751990ba3a Mon Sep 17 00:00:00 2001 From: caocong Date: Tue, 6 Jan 2026 21:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95:=E5=9C=BA=E6=99=AF=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=88=9D=E6=AD=A5=E6=B5=8B=E8=AF=95OK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 场景执行-弱电输入触发控制继电器 --- BLV_485_Driver/blv_nor_dev_lvoutput.c | 2 +- BLV_485_Driver/blv_not_dev_lvinput.c | 3 +- MCU_Driver/blv_dev_action.c | 621 +++++++++++++++++--------- MCU_Driver/blv_netcomm_function.c | 2 +- MCU_Driver/blv_rs485_protocol.c | 75 +++- MCU_Driver/inc/blv_dev_action.h | 22 +- MCU_Driver/inc/blv_rs485_protocol.h | 2 + MCU_Driver/logic_file_function.c | 114 ++--- Readme.md | 6 + User/main.c | 6 +- 10 files changed, 558 insertions(+), 295 deletions(-) diff --git a/BLV_485_Driver/blv_nor_dev_lvoutput.c b/BLV_485_Driver/blv_nor_dev_lvoutput.c index 284a552..fbd0808 100644 --- a/BLV_485_Driver/blv_nor_dev_lvoutput.c +++ b/BLV_485_Driver/blv_nor_dev_lvoutput.c @@ -201,7 +201,7 @@ void Dev_LVoutput_Dis(uint32_t DevAddr) BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_PublicLVoutput,(uint8_t *)&DevLVoutputInfo,sizeof(NOR_LVOUTPUT_INFO)); - BLV_Device_Info_Write_To_SRAM(DevLVoutputInfo.DevC5IOAddr+Dev_Privately,&BUS_PublicC5IO,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); + BLV_Device_Info_Write_To_SRAM(DevLVoutputInfo.DevC5IOAddr,&BUS_PublicC5IO,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } diff --git a/BLV_485_Driver/blv_not_dev_lvinput.c b/BLV_485_Driver/blv_not_dev_lvinput.c index 0b9b1d4..7972b22 100644 --- a/BLV_485_Driver/blv_not_dev_lvinput.c +++ b/BLV_485_Driver/blv_not_dev_lvinput.c @@ -78,6 +78,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Dev_LVinput_InType_Get(uint32_t if(DevInputType == DevLVinputInfo.DevReadBuf[DevInputLoop]) //ҵ { + DevLVinputInfo.DevReadBuf[DevInputLoop] = 0x00; // Ret = CtrlValid; } @@ -239,7 +240,7 @@ __attribute__((section(".non_0_wait"))) void Dev_LVinput_Dis(uint32_t DevAddr) BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_PublicLVinput,(uint8_t *)&DevLVinputInfo,sizeof(NOR_LVINPUT_INFO)); /*C5IO*/ - BLV_Device_Info_Write_To_SRAM(DevLVinputInfo.DevC5IOAddr+Dev_Privately,&BUS_PublicC5IO,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); + BLV_Device_Info_Write_To_SRAM(DevLVinputInfo.DevC5IOAddr,&BUS_PublicC5IO,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } } diff --git a/MCU_Driver/blv_dev_action.c b/MCU_Driver/blv_dev_action.c index 3acbf6c..7f32b05 100644 --- a/MCU_Driver/blv_dev_action.c +++ b/MCU_Driver/blv_dev_action.c @@ -11,6 +11,220 @@ BLV_DevAction_Manage_G DevActionGlobal; // #define Action_Group_Ctrl_Num 30 //е Ⱥظ + +/******************************************************************************* +* Function Name : DevAction_Info_Write_To_SRAM +* Description : 豸Ϣṹ壬浽ⲿSRAM +* DevAction_Info ṹ +*******************************************************************************/ +uint8_t DevAction_Info_Write_To_SRAM(uint32_t addr,DEV_ACTION_INFO *DevAction_Info) +{ + uint16_t temp_len = 0; + memset(Global_Large_Buff,0,sizeof(Global_Large_Buff)); + + //ṹݳ - 2Byte + Global_Large_Buff[temp_len++] = 0x00; + Global_Large_Buff[temp_len++] = 0x00; + //ṹУλ - 1Byte + Global_Large_Buff[temp_len++] = 0x00; + + // - 2Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionCore.ActionNo & 0xFF); + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionCore.ActionNo >> 8) & 0xFF; + // - 32Byte + memcpy(&Global_Large_Buff[temp_len],DevAction_Info->DevActionCore.DevActionName,DevActionNameLenMax); + temp_len += DevActionNameLenMax; + //豸 - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionInput.DevType; + //豸ַ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionInput.DevAddr; + //豸· - 2Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionInput.DevLoop & 0xFF); + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionInput.DevLoop >> 8) & 0xFF; + //豸¼ - 2Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionInput.DevEvent & 0xFF); + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionInput.DevEvent >> 8) & 0xFF; + //ִзʽ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionCond.SceneExcute; + //ִе - 8Byte + memcpy(&Global_Large_Buff[temp_len],(uint8_t *)&DevAction_Info->DevActionCond.DevActionU64Cond,sizeof(Dev_Action_U64Cond)); + temp_len += sizeof(Dev_Action_U64Cond); + //״̬ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.SceneState; + //֮ǰ״̬ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.SceneStateLast; + //ñ־λ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.SceneReuseFlag; + //±ñ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.MultiSetFlag; + //ǰ± - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.MultiNumber; + //ЧĶ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.MultiValidNo; + //жϱ־ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionState.SceneTypeFlag; + //豸ַ - 4Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionState.DevAddrIn & 0xFF); + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionState.DevAddrIn >> 8) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionState.DevAddrIn >> 16) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionState.DevAddrIn >> 24) & 0xFF; + //豸 - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevCtrlNum; + //п豸 - 16Byte*50 + for(uint8_t i=0;iDevActionOutput[i].DevActionOutCfg.DevType; //豸 - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevAddr; //豸ַ - 1Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop & 0xFF); //豸· - 2Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop >> 8) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0xFF); //豸״̬ - 2Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState >> 8) & 0xFF; + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont; //豸ʱ - 1Byte + Global_Large_Buff[temp_len++] = DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight; //豸ʱλ - 1Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutAddr & 0xFF); //豸SRAMַ - 4Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutAddr >> 8) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutAddr >> 16) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevActionOutAddr >> 24) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevDlyAddr & 0xFF); //Ӧʱַ(SRAMַ) - 4Byte + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevDlyAddr >> 8) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevDlyAddr >> 16) & 0xFF; + Global_Large_Buff[temp_len++] = (DevAction_Info->DevActionOutput[i].DevDlyAddr >> 24) & 0xFF; + } + + //ݳǹ̶ 864Byte 2025-01-06 + Global_Large_Buff[0] = temp_len & 0xFF; + Global_Large_Buff[1] = (temp_len >> 8) & 0xFF; + + Global_Large_Buff[2] = Data_CheckSum(Global_Large_Buff,temp_len); + +// Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"W ַ: %x : %d", addr,temp_len); +// Dbg_Print_Buff(DBG_BIT_LOGIC_STATUS_bit,"W :",Global_Large_Buff,temp_len); + + SRAM_DMA_Write_Buff(Global_Large_Buff,SRAM_DevAction_List_Size,addr); + + return 0; +} + +/******************************************************************************* +* Function Name : DevAction_Info_Read_To_Struct +* Description : 豸Ϣ ⲿSRAMжȡṹ +* addr ȡַ +* DevAction_Info ṹ +*******************************************************************************/ +uint8_t DevAction_Info_Read_To_Struct(uint32_t addr,DEV_ACTION_INFO *DevAction_Info) +{ + uint16_t temp_len = SRAM_Read_Word(addr); + + if(temp_len >= SRAM_DevAction_List_Size) temp_len = SRAM_DevAction_List_Size; + + SRAM_DMA_Read_Buff(Global_Large_Buff, temp_len, addr); + +// Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"R ַ: %x : %d", addr,temp_len); +// Dbg_Print_Buff(DBG_BIT_LOGIC_STATUS_bit,"R :",Global_Large_Buff,temp_len); + + if(Data_CheckSum(Global_Large_Buff,temp_len) != 0x00 ) { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уʧ: %x", addr); + return 0x01; + } + + if( temp_len < DEV_ACTION_INFO_Size) return 0x02; + + temp_len = 0x00; + //ṹݳ - 2Byte + DevAction_Info->data_len = Global_Large_Buff[temp_len + 1]; + DevAction_Info->data_len <<= 8; + DevAction_Info->data_len |= Global_Large_Buff[temp_len]; + temp_len += 2; + //ṹУλ - 1Byte + DevAction_Info->CheckVal = Global_Large_Buff[temp_len++]; + // - 2Byte + DevAction_Info->DevActionCore.ActionNo = Global_Large_Buff[temp_len + 1]; + DevAction_Info->DevActionCore.ActionNo <<= 8; + DevAction_Info->DevActionCore.ActionNo |= Global_Large_Buff[temp_len]; + temp_len += 2; + // - 32Byte + memcpy(DevAction_Info->DevActionCore.DevActionName,&Global_Large_Buff[temp_len],DevActionNameLenMax); + temp_len += DevActionNameLenMax; + //豸 - 1Byte + DevAction_Info->DevActionInput.DevType = Global_Large_Buff[temp_len++]; + //豸ַ - 1Byte + DevAction_Info->DevActionInput.DevAddr = Global_Large_Buff[temp_len++]; + //豸· - 2Byte + DevAction_Info->DevActionInput.DevLoop = Global_Large_Buff[temp_len + 1]; + DevAction_Info->DevActionInput.DevLoop <<= 8; + DevAction_Info->DevActionInput.DevLoop |= Global_Large_Buff[temp_len]; + temp_len += 0x02; + //豸¼ - 2Byte + DevAction_Info->DevActionInput.DevEvent = Global_Large_Buff[temp_len + 1]; + DevAction_Info->DevActionInput.DevEvent <<= 8; + DevAction_Info->DevActionInput.DevEvent |= Global_Large_Buff[temp_len]; + temp_len += 0x02; + //ִзʽ - 1Byte + DevAction_Info->DevActionCond.SceneExcute = Global_Large_Buff[temp_len++]; + //ִе - 8Byte + memcpy((uint8_t *)&DevAction_Info->DevActionCond.DevActionU64Cond,&Global_Large_Buff[temp_len],sizeof(Dev_Action_U64Cond)); + temp_len += sizeof(Dev_Action_U64Cond); + //״̬ - 1Byte + DevAction_Info->DevActionState.SceneState = Global_Large_Buff[temp_len++]; + //֮ǰ״̬ - 1Byte + DevAction_Info->DevActionState.SceneStateLast = Global_Large_Buff[temp_len++]; + //ñ־λ - 1Byte + DevAction_Info->DevActionState.SceneReuseFlag = Global_Large_Buff[temp_len++]; + //±ñ - 1Byte + DevAction_Info->DevActionState.MultiSetFlag = Global_Large_Buff[temp_len++]; + //ǰ± - 1Byte + DevAction_Info->DevActionState.MultiNumber = Global_Large_Buff[temp_len++]; + //ЧĶ - 1Byte + DevAction_Info->DevActionState.MultiValidNo = Global_Large_Buff[temp_len++]; + //жϱ־ - 1Byte + DevAction_Info->DevActionState.SceneTypeFlag = Global_Large_Buff[temp_len++]; + //豸ַ - 4Byte + DevAction_Info->DevActionState.DevAddrIn = Global_Large_Buff[temp_len + 3]; + DevAction_Info->DevActionState.DevAddrIn <<= 8; + DevAction_Info->DevActionState.DevAddrIn |= Global_Large_Buff[temp_len + 2]; + DevAction_Info->DevActionState.DevAddrIn <<= 8; + DevAction_Info->DevActionState.DevAddrIn |= Global_Large_Buff[temp_len + 1]; + DevAction_Info->DevActionState.DevAddrIn <<= 8; + DevAction_Info->DevActionState.DevAddrIn |= Global_Large_Buff[temp_len]; + temp_len += 4; + //豸 - 1Byte + DevAction_Info->DevCtrlNum = Global_Large_Buff[temp_len++]; + //п豸 - 16Byte*50 + for(uint8_t i=0;iDevActionOutput[i].DevActionOutCfg.DevType = Global_Large_Buff[temp_len++]; //豸 - 1Byte + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevAddr = Global_Large_Buff[temp_len++]; //豸ַ - 1Byte + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop = Global_Large_Buff[temp_len + 1]; //豸· - 2Byte + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop |= Global_Large_Buff[temp_len]; + temp_len += 2; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState = Global_Large_Buff[temp_len + 1]; //豸״̬ - 2Byte + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState |= Global_Large_Buff[temp_len]; + temp_len += 2; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont = Global_Large_Buff[temp_len++]; //豸ʱ - 1Byte + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight = Global_Large_Buff[temp_len++]; //豸ʱλ - 1Byte + DevAction_Info->DevActionOutput[i].DevActionOutAddr = Global_Large_Buff[temp_len + 3]; //豸SRAMַ - 4Byte + DevAction_Info->DevActionOutput[i].DevActionOutAddr <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutAddr |= Global_Large_Buff[temp_len + 2]; + DevAction_Info->DevActionOutput[i].DevActionOutAddr <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutAddr |= Global_Large_Buff[temp_len + 1]; + DevAction_Info->DevActionOutput[i].DevActionOutAddr <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutAddr |= Global_Large_Buff[temp_len]; + temp_len += 4; + DevAction_Info->DevActionOutput[i].DevDlyAddr = Global_Large_Buff[temp_len + 3]; //Ӧʱַ(SRAMַ) - 4Byte + DevAction_Info->DevActionOutput[i].DevDlyAddr <<= 8; + DevAction_Info->DevActionOutput[i].DevDlyAddr |= Global_Large_Buff[temp_len + 2]; + DevAction_Info->DevActionOutput[i].DevDlyAddr <<= 8; + DevAction_Info->DevActionOutput[i].DevDlyAddr |= Global_Large_Buff[temp_len + 1]; + DevAction_Info->DevActionOutput[i].DevDlyAddr <<= 8; + DevAction_Info->DevActionOutput[i].DevDlyAddr |= Global_Large_Buff[temp_len]; + temp_len += 4; + } + + return 0x00; +} + /******************************************************************************* * Function Name : Add_DevAction_To_List * Description : 豸Ϣӵ浽ⲿSRAM @@ -29,21 +243,10 @@ __attribute__((section(".non_0_wait"))) void Add_DevAction_To_List(DEV_ACTION_IN Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ӳɹǰ%d ǰַ: %X", DevActionGlobal.DevActionNum, list_addr); - /**/ - for(uint16_t i = 0;idata_len); - - DevAction_Info->CheckVal = 0x00; - DevAction_Info->CheckVal = DevAction_CheckSum(list_addr,DevAction_Info->data_len); //У - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"У飺%d", DevAction_Info->CheckVal); - - SRAM_DMA_Write_Buff((uint8_t *)DevAction_Info, DevAction_Info->data_len, list_addr); //д + DevAction_Info_Write_To_SRAM(list_addr,DevAction_Info); //д } + __attribute__((section(".non_0_wait"))) void Logic_Action_Output_DataGet(DEV_ACTION_INFO *DevAction_Info, uint8_t *DevCtrlBuf) { uint8_t i = 0; @@ -152,12 +355,12 @@ __attribute__((section(".non_0_wait"))) void Logic_DevAction_Add(uint8_t *data,u DevAction_Info.DevActionInput.DevType = data[0]; //豸 DevAction_Info.DevActionInput.DevAddr = data[1]; //豸ַ - DevAction_Info.DevActionInput.inAddr = data[4] + (data[5]<<8); //· - if(0x00 != DevAction_Info.DevActionInput.inAddr) + DevAction_Info.DevActionInput.DevLoop = data[4] + (data[5]<<8); //· + if(0x00 != DevAction_Info.DevActionInput.DevLoop) { - DevAction_Info.DevActionInput.inAddr--; //ת + DevAction_Info.DevActionInput.DevLoop--; //ת } - DevAction_Info.DevActionInput.inType = data[6] + (data[7]<<8); + DevAction_Info.DevActionInput.DevEvent = data[6] + (data[7]<<8); memcpy(&DevAction_Info.DevActionCond.DevActionU64Cond, &data[8], sizeof(Dev_Action_U64Cond)); // Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ʹ DevActionOutFlag: %d", DevAction_Info.DevActionCond.DevActionU64Cond.DevActionOutFlag); @@ -198,19 +401,18 @@ __attribute__((section(".non_0_wait"))) void Logic_DevAction_Add(uint8_t *data,u }else{ DevAction_Info.DevCtrlNum = data[115]; // } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:%d豸:%d豸ַ:%d,豸洢ַ:%x,豸¼:%X ִзʽ:%d", \ + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%dӦ豸:%dַ:%d,·:%d,¼:%X,SRAMַ:%x,ִзʽ:%d", \ DevAction_Info.DevCtrlNum, \ DevAction_Info.DevActionInput.DevType, \ DevAction_Info.DevActionInput.DevAddr, \ + DevAction_Info.DevActionInput.DevLoop, \ + DevAction_Info.DevActionInput.DevEvent, \ DevAction_Info.DevActionState.DevAddrIn, \ - DevAction_Info.DevActionInput.inType, \ DevAction_Info.DevActionCond.SceneExcute); Logic_Action_Output_DataGet(&DevAction_Info, &data[116]); //Լ豸ڵõ - DevAction_Info.data_len = sizeof(DEV_ACTION_INFO) ; Add_DevAction_To_List(&DevAction_Info); - } /******************************************************************************* @@ -692,7 +894,6 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De { uint8_t i;//,j; - uint32_t DevAddrOut = 0x00; //豸ֲַ Device_Public_Information_G BUS_Public; // uint8_t DevCtrlWay = 0x00; //ִзʽ uint8_t DevCtrlCont = 0x00; //ִ @@ -705,16 +906,15 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De 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: //̵ - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); 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) + if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) == DEV_STATE_OPEN) { SceneState = DEV_STATE_CLOSE; //ֵֻ break; @@ -723,10 +923,10 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De break; #if RS485_LED_Flag case DEV_RS485_PWM: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); 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) + if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != 0x00) { SceneState = DEV_STATE_CLOSE; break; @@ -746,14 +946,14 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType) { case Dev_Rs485_PB20_Relay: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); 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 ) + if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlWay ) { SceneState = DEV_STATE_CLOSE; break; @@ -764,7 +964,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De case Dev_Rs485_PB20: case Dev_Rs485_PB20_LD: case Dev_Rs485_PB20_LS: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 ) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00ff); @@ -775,7 +975,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De } break; case DEV_Virtual_ColorTemp: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; @@ -783,7 +983,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De 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 ) + if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DevCtrlCont ) { SceneState = DEV_STATE_CLOSE; break; @@ -1146,7 +1346,7 @@ __attribute__((section(".non_0_wait"))) uint32_t Add_DevDly_To_List(uint8_t DevT SRAM_DMA_Write_Buff((uint8_t *)&DevDlyCore, sizeof(Struct_Dev_Dly_Core), list_addr); DevActionGlobal.DevDlyNum++; //ʱڵ - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʱ豸ӳɹǰʱڵַ:%08X ǰʱ豸:%d ʱ豸ַ: %08X ʱ豸·%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʱӳɹǰʱڵַ:%X ǰʱ豸:%d ʱ豸ַ: %X ʱ豸·%d", list_addr , DevActionGlobal.DevDlyNum, DevDlyCore.DevDlyAddr, @@ -1270,7 +1470,7 @@ __attribute__((section(".non_0_wait"))) uint8_t DevAddrCtr(DEV_ACTION_INFO *DevA BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, + DevActionInfo->DevActionInput.DevLoop, DevAddrOut, DevActionOutput.DevActionOutCfg.DevOutputLoop, DevActionOutput.DevActionOutCfg.DevCtrlState); @@ -1305,7 +1505,7 @@ __attribute__((section(".non_0_wait"))) uint8_t DevAddrCtr(DEV_ACTION_INFO *DevA BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, + DevActionInfo->DevActionInput.DevLoop, DevAddrOut, DevActionOutput.DevActionOutCfg.DevOutputLoop, DevActionOutput.DevActionOutCfg.DevCtrlState); @@ -1406,7 +1606,6 @@ __attribute__((section(".non_0_wait"))) void Ele_Ctrl_OpenClose(uint8_t Ctrl) __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INFO *DevActionInfo) { uint8_t i = 0,j = 0; - uint32_t DevAddrOut = 0x00; //豸ֲַ Device_Public_Information_G BUS_Public; EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0}; @@ -1416,7 +1615,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF for(i = 0; i < DevActionInfo->DevCtrlNum; i++) { - if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != DevAddrOut) + if(DevActionInfo->DevActionOutput[i].DevActionOutAddr != 0x00) { switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType) { @@ -1427,13 +1626,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF { if( expand_type[j].ExpandReadFlag != 0x00 ) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != 0x00 ) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, expand_type[j].ExpandReadFlag, HVoutNumMAX, expand_type[j].ExpandReadState); @@ -1457,13 +1656,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF { if( dimm_type[j].DimmReadFlag != 0x00 ) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != 0x00 ) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, dimm_type[j].DimmReadFlag, LED_OUT_CH_MAX, dimm_type[j].DimmReadState); @@ -1520,7 +1719,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF case DEV_Carbon_Saved: case Dev_Scene_Restore: case Dev_Energy_Monitor: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( (DevActionInfo != NULL) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1528,21 +1727,21 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //Ϣ״ֵ̬ BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); }else { BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); } @@ -1551,7 +1750,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF case DEV_RS485_STRIP: case DEV_Virtual_ColorTemp: case Dev_Virtual_GlobalSet: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { @@ -1560,28 +1759,28 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //Ϣ״ֵ̬ BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); }else { BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); } } break; case DEV_RS485_MUSIC: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( ( DevActionInfo != NULL ) @@ -1597,7 +1796,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //ִпָ break; @@ -1608,7 +1807,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); //ִпָ break; @@ -1649,7 +1848,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTION_INFO *DevActionInfo) { uint8_t i = 0,j = 0; - uint32_t DevAddrOut = 0; + //uint32_t DevAddrOut = 0; Device_Public_Information_G BUS_Public; EXPAND_TYPE_G expand_type[Action_Group_Ctrl_Num]={0}; @@ -1670,13 +1869,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO { if( expand_type[j].ExpandReadFlag != 0x00 ) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL ) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, expand_type[j].ExpandReadFlag, HVoutNumMAX, expand_type[j].ExpandReadState); @@ -1700,13 +1899,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO { if( dimm_type[j].DimmReadFlag != 0x00 ) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, dimm_type[j].DimmReadFlag, LED_OUT_CH_MAX, dimm_type[j].DimmReadState); @@ -1741,7 +1940,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO case Dev_Rs485_PB20_LS: case Dev_Rs485_PB20_Relay: case Dev_Scene_Restore: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1749,21 +1948,21 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); }else{ BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); } @@ -1772,7 +1971,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO case DEV_RS485_STRIP: case DEV_Virtual_ColorTemp: case Dev_Virtual_GlobalSet: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1780,21 +1979,21 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); }else { BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); } @@ -1841,7 +2040,6 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO __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}; @@ -1862,13 +2060,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI { if(expand_type[j].ExpandReadFlag != 0x00) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, expand_type[j].ExpandReadFlag, HVoutNumMAX, expand_type[j].ExpandReadState); @@ -1890,13 +2088,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI { if(dimm_type[j].DimmReadFlag != 0x00) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, dimm_type[j].DimmReadFlag, LED_OUT_CH_MAX, dimm_type[j].DimmReadState); @@ -1937,7 +2135,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI case DEV_Virtual_ColorTemp: case Dev_Scene_Restore: case Dev_Virtual_GlobalSet: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1945,21 +2143,21 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); }else { BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); } @@ -1968,7 +2166,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI case Dev_Rs485_PB20: case Dev_Rs485_PB20_LD: case Dev_Rs485_PB20_LS: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1976,21 +2174,21 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x0012); BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x0012); }else { BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x0012); } @@ -2026,7 +2224,6 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI __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}; @@ -2045,13 +2242,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN { if(expand_type[j].ExpandReadFlag != 0x00) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, expand_type[j].ExpandReadFlag, HVoutNumMAX, expand_type[j].ExpandReadState); @@ -2074,13 +2271,13 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN { if(dimm_type[j].DimmReadFlag != 0x00) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, dimm_type[j].DimmReadFlag, LED_OUT_CH_MAX, dimm_type[j].DimmReadState); @@ -2121,7 +2318,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN case DEV_Virtual_ColorTemp: case Dev_Scene_Restore: case Dev_Virtual_GlobalSet: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -2129,21 +2326,21 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); }else { BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); } @@ -2152,7 +2349,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN case Dev_Rs485_PB20: case Dev_Rs485_PB20_LD: case Dev_Rs485_PB20_LS: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) //ǿ { if((DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00)) // @@ -2160,28 +2357,28 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%04X 豸:%d ַ:%04X %d· ״̬: %04X", DevActionInfo->DevActionState.DevAddrIn, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x0012); BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x0012); }else{ BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x0012); } } break; case Dev_NodeCurtain: //ȡΪͣ ȡΪͣ ͣȡΪ - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { switch(ModeCtrl) @@ -2195,7 +2392,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_STOP); break; @@ -2204,7 +2401,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, 0x17); break; @@ -2216,7 +2413,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); break; @@ -2224,7 +2421,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN } break; case DEV_RS485_CURTAIN: - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { switch(ModeCtrl) @@ -2238,8 +2435,8 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN case 0x05: BUS_Public.DevFunInfo.Dev_Output_Ctrl( DevActionInfo->DevActionState.DevAddrIn, - DevActionInfo->DevActionInput.inAddr, - DevAddrOut, + DevActionInfo->DevActionInput.DevLoop, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_STOP); @@ -2253,7 +2450,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); break; @@ -2261,7 +2458,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN } break; case Dev_Host_Service: //˯߿ƷϢ - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { switch(ModeCtrl) @@ -2274,7 +2471,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DEV_CTRLWAY_CLOSE); break; @@ -2284,7 +2481,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN BUS_Public.DevFunInfo.Dev_Output_Ctrl( 0x00, 0x00, - DevAddrOut, + DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState); break; @@ -2324,7 +2521,6 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN __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++) @@ -2333,7 +2529,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandDlyClear(DEV_ACTION { if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Host_Invalid) { - BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); } if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionInfo->DevActionOutput[i].DevDlyAddr != 0x00) ) @@ -2374,11 +2570,16 @@ __attribute__((section(".non_0_wait"))) uint32_t DevAction_No_Get(uint16_t DevAc 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) + + if( DevAction_Info_Read_To_Struct(list_addr, &DevActionInfo) == 0x00 ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"жҵӦij:%d %s", DevActionNo, DevActionInfo.DevActionCore.DevActionName); - return list_addr; //صǰĵַ + if(DevActionInfo.DevActionCore.ActionNo == DevActionNo) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ҵ:%d - %s", DevActionNo, DevActionInfo.DevActionCore.DevActionName); + return list_addr; //صǰĵַ + } + }else { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%x Уʧ", list_addr); } } @@ -2450,56 +2651,58 @@ __attribute__((section(".non_0_wait"))) void DevAction_No_Ctrl(uint16_t DevActio if(DevActionNo == 0x00) return ; //ֱ˳ - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ж׼ִг:%d", DevActionNo); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"г׼ִг:%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) + if( DevAction_Info_Read_To_Struct(list_addr, &DevActionInfo) == 0x00 ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ҵӦij:%d %s洢ַ:%08X,ִУʱִб־", \ - 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);//ʱִб־λ õʱڵĵַ - - if( (DevActionNo == ACTION_SCENE_SLEEP) || (DevActionInfo.DevActionCond.SceneExcute == ACTION_SCENE_SLEEP) ) + if( DevActionInfo.DevActionCore.ActionNo == DevActionNo ) { - DevAction_Mode_Ctrl(&DevActionInfo, Mode, SLEEP_MODE_CTRL, CtrlState); - }else { - DevAction_Mode_Ctrl(&DevActionInfo, Mode, NOR_MODE_CTRL, CtrlState); - } + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ҵ:%d - %sַ:%X,ִУʱִб־", \ + DevActionNo, \ + DevActionInfo.DevActionCore.DevActionName, \ + list_addr); - if( DevActionGlobal.ServerCtrl == 0x01 ) - { - DevActionGlobal.ServerCtrl = 0x00; - if( DevActionInfo.DevActionCond.SceneExcute == ACTION_SCENE_SLEEP ) + Temp_Dly.DelayCont = 0x00; + Temp_Dly.DelayWeight = 0x00; + DevDly_InfoSet(DevDlyAddr_Get(list_addr, DevActionNo), 0x00, 0x00, Temp_Dly, 0x00);//ʱִб־λ õʱڵĵַ + + if( (DevActionNo == ACTION_SCENE_SLEEP) || (DevActionInfo.DevActionCond.SceneExcute == ACTION_SCENE_SLEEP) ) { - if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) //ҹйأҹƴ - { - if( DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart) - { - DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart; - } - } - DevActionGlobal.SleepMode_State = 0x01; //˯ģʽ - DevActionGlobal.SleepLight_State = 0x00; //Ϩ𱳹⣬ر - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"˯߳"); + DevAction_Mode_Ctrl(&DevActionInfo, Mode, SLEEP_MODE_CTRL, CtrlState); }else { - if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) //ҹйأҹƴ - { - DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose; - } - DevActionGlobal.SleepMode_State = 0x00; //˯ģʽ - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"˳˯߳"); + 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 ) //ҹйأҹƴ + { + if( DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart) + { + DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart; + } + } + DevActionGlobal.SleepMode_State = 0x01; //˯ģʽ + DevActionGlobal.SleepLight_State = 0x00; //Ϩ𱳹⣬ر + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"˯߳"); + }else { + if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) //ҹйأҹƴ + { + DevActionGlobal.DevActionU64Cond.NeightState = NightModeClose; + } + DevActionGlobal.SleepMode_State = 0x00; //˯ģʽ + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"˳˯߳"); + } + } + break; } - break; } } } @@ -2882,7 +3085,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_IndicateCtrl(DEV_ACTION_I { if( DevActionInfo->DevActionState.SceneState == DEV_STATE_OPEN ) { - switch(DevActionInfo->DevActionInput.inType) + switch(DevActionInfo->DevActionInput.DevEvent) { case DEV_CTRLWAY_OPEN: // case DEV_CTRLWAY_CLOSE: // @@ -2901,7 +3104,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_IndicateCtrl(DEV_ACTION_I 0x00, DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop, - DevActionInfo->DevActionInput.inType); + DevActionInfo->DevActionInput.DevEvent); } break; } @@ -2933,18 +3136,16 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr for(j = BUS_Public->ActionCoord; j < DevActionGlobal.DevActionNum; j++) //ΪɶҪѭ - ʵ { 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; + temp_offset = DevActionAddr + DevActionInfo_DevActionState_DevAddrIn_Index; if(SRAM_Read_DW(temp_offset) == Dev_processing_addr) //ӵͬ봥ڵ DevActionInfo.DevActionState.DevAddrIn { - SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), DevActionAddr); //豸Ϣ 豸ȥִп - - if( Data_CheckSum((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO)) != 0x00 ) + if(DevAction_Info_Read_To_Struct(DevActionAddr, &DevActionInfo) != 0x00) { Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",DevActionAddr); continue; }else { - //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уͨ:%x 봥ڵ:%x",DevActionAddr,Dev_processing_addr); + //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уͨ:%x",DevActionAddr); } RcuLockState_Scan(); @@ -2956,25 +3157,25 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr if( DevActionInfo.DevActionState.SceneReuseFlag == 0x00 ) //״̬ - ñ־λ ʵ㣺ñ־λʲô { 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) ) + && (BUS_Public->DevFunInfo.Dev_Input_Type_Get(DevActionInfo.DevActionState.DevAddrIn, DevActionInfo.DevActionInput.DevLoop, DevActionInfo.DevActionInput.DevEvent) == CtrlValid) ) { if(BLV_DevAction_Cond_Judge(&DevActionInfo) == CondIsPass) { BreakFlag = 0x01; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸:%d 豸ַ%d ַ:%d ַ:%d ַ:%08Xͨ", \ + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ַ%d ·:%d :%d ַ:%Xͨ", \ DevActionInfo.DevActionInput.DevType, \ DevActionInfo.DevActionInput.DevAddr, \ - DevActionInfo.DevActionInput.inAddr, \ + DevActionInfo.DevActionInput.DevLoop, \ DevActionInfo.DevActionCore.ActionNo, \ DevActionAddr); DevAction_Output(&DevActionInfo); //ִ }else if(DevActionInfo.DevActionCond.DevActionU64Cond.EleCtrlFlag == 0x01) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸:%d 豸ַ%d ַ:%d ַ:%d ַ:%08Xδͨпȡ翪־", - DevActionInfo.DevActionInput.DevType, - DevActionInfo.DevActionInput.DevAddr, - DevActionInfo.DevActionInput.inAddr, - DevActionInfo.DevActionCore.ActionNo, + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ַ%d ·:%d :%d ַ:%Xδͨпȡ翪־", + DevActionInfo.DevActionInput.DevType, \ + DevActionInfo.DevActionInput.DevAddr, \ + DevActionInfo.DevActionInput.DevLoop, \ + DevActionInfo.DevActionCore.ActionNo, \ DevActionAddr); if(0x00 == Get_Authorize_Lock_Status()) //Ȩж @@ -2990,7 +3191,7 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr { 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); + uint8_t ret = BUS_Public->DevFunInfo.Dev_Input_Type_Get(DevActionInfo.DevActionState.DevAddrIn, DevActionInfo.DevActionInput.DevLoop, DevActionInfo.DevActionInput.DevEvent); if( (ret & 0x01) == CtrlValid ) { @@ -2998,11 +3199,11 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr { BreakFlag = 0x01; Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%s,豸͸:%d 豸ַ%d ַ:%d :%d ַ:%08Xͨ", - DevActionInfo.DevActionCore.DevActionName, - DevActionInfo.DevActionInput.DevType, - DevActionInfo.DevActionInput.DevAddr, - DevActionInfo.DevActionInput.inAddr, - DevActionInfo.DevActionCore.ActionNo, + DevActionInfo.DevActionCore.DevActionName, \ + DevActionInfo.DevActionInput.DevType, \ + DevActionInfo.DevActionInput.DevAddr, \ + DevActionInfo.DevActionInput.DevLoop, \ + DevActionInfo.DevActionCore.ActionNo, \ DevActionAddr); DevAction_Output(&DevActionInfo); //ִ @@ -3024,23 +3225,22 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr } } - deal_addr = TempAddr+sizeof(Dev_Action_Core)+sizeof(Dev_Action_Input)+sizeof(Dev_Action_Cond)+sizeof(Dev_Action_State) - 4 ; + deal_addr = TempAddr + DevActionInfo_DevActionState_DevAddrIn_Index; 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 ) + if(DevAction_Info_Read_To_Struct(TempAddr, &DevActionInfo) != 0x00) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%d"); - continue ; + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",DevActionAddr); + continue; } BreakFlag = 0x01; Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%s,豸͸:%d 豸ַ%d ַ:%d :%d ַ:%08Xͨ", - DevActionInfo.DevActionCore.DevActionName, - DevActionInfo.DevActionInput.DevType, - DevActionInfo.DevActionInput.DevAddr, - DevActionInfo.DevActionInput.inAddr, - DevActionInfo.DevActionCore.ActionNo, + DevActionInfo.DevActionCore.DevActionName, \ + DevActionInfo.DevActionInput.DevType, \ + DevActionInfo.DevActionInput.DevAddr, \ + DevActionInfo.DevActionInput.DevLoop, \ + DevActionInfo.DevActionCore.ActionNo, \ DevActionAddr); DevAction_Output(&DevActionInfo); //ִ } @@ -3052,22 +3252,25 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr && (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 ) ) + DevActionInfo.DevActionInput.DevLoop, + DevActionInfo.DevActionInput.DevEvent ) == CtrlValid ) ) { BreakFlag = 0x01; Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%s,豸͸:%d 豸ַ%d ַ:%d :%d ַ:%08Xͨ", - DevActionInfo.DevActionCore.DevActionName, - DevActionInfo.DevActionInput.DevType, - DevActionInfo.DevActionInput.DevAddr, - DevActionInfo.DevActionInput.inAddr, - DevActionInfo.DevActionCore.ActionNo, + DevActionInfo.DevActionCore.DevActionName, \ + DevActionInfo.DevActionInput.DevType, \ + DevActionInfo.DevActionInput.DevAddr, \ + DevActionInfo.DevActionInput.DevLoop, \ + DevActionInfo.DevActionCore.ActionNo, \ DevActionAddr); DevAction_Output(&DevActionInfo); //ִ } } } + }else { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰδ "); + } if(BreakFlag == 0x01) //ز¼ˢ³״̬ @@ -3081,9 +3284,7 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr 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); + DevAction_Info_Write_To_SRAM(DevActionAddr, &DevActionInfo); } if(BreakFlag == 0x01) @@ -3176,23 +3377,29 @@ __attribute__((section(".non_0_wait"))) void DevAction_DevAddr_Ctrl( return ; } - SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), DevActionAddr); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ƣַЧ:%X:%d",DevActionAddr, DevActionInfo.DevActionCore.ActionNo); - - if( DevActionInfo.DevActionCore.ActionNo == ACTION_SCENE_SLEEP ) + if(DevAction_Info_Read_To_Struct(DevActionAddr, &DevActionInfo) == 0x00) { - if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ƣַЧ:%X:%d",DevActionAddr, DevActionInfo.DevActionCore.ActionNo); + + if( DevActionInfo.DevActionCore.ActionNo == ACTION_SCENE_SLEEP ) { - if( DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart ) + if( DevActionGlobal.DevActionU64Cond.NeightFlag == 0x01 ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ƣг˯ߣҹ"); - DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart; + if( DevActionGlobal.DevActionU64Cond.NeightState != NightModeStart ) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ƣг˯ߣҹ"); + 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); } - DevAction_Mode_Ctrl(&DevActionInfo, LIGHT_MODE_CTRL, SLEEP_MODE_CTRL, DEV_CTRLWAY_CLOSE); }else { - DevAction_Mode_Ctrl(&DevActionInfo, Mode, SceneMode, CtrlState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",DevActionAddr); } + + } /******************************************************************************* diff --git a/MCU_Driver/blv_netcomm_function.c b/MCU_Driver/blv_netcomm_function.c index 4c0c793..d424a79 100644 --- a/MCU_Driver/blv_netcomm_function.c +++ b/MCU_Driver/blv_netcomm_function.c @@ -7,7 +7,7 @@ #include "includes.h" #include -uint8_t Global_Large_Buff[1100] = {0}; //׽ͨѶдⲿSRAMӳĴ +uint8_t Global_Large_Buff[1100] = {0}; //׽ͨѶдⲿSRAMӳĴд豸Ϣ uint32_t ProjectCode = 1001; //ģĿ uint8_t Versions[4] = {0,0,0,0}; //ģð汾 diff --git a/MCU_Driver/blv_rs485_protocol.c b/MCU_Driver/blv_rs485_protocol.c index e8209aa..fb7185d 100644 --- a/MCU_Driver/blv_rs485_protocol.c +++ b/MCU_Driver/blv_rs485_protocol.c @@ -1344,6 +1344,75 @@ __attribute__((section(".non_0_wait"))) void BLV_ActivePort_ModeTask(void) } } +/******************************************************************************* +* Function Name : BLV_Nor_Dev_Polling_Task +* Description : ͨ豸ɨ ֮һе豸 +*******************************************************************************/ +void BLV_Nor_Dev_Polling_Task(void) +{ + uint16_t i; + uint32_t Start_addr = SRAM_Read_DW(SRAM_ACTIVE_Device_List_Addr); //ȡ豸Ϣʼַ + uint32_t List_addr; + static uint8_t FlagDis = 0x01; + + if(0x01 == FlagDis) + { + FlagDis = 0x00; + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ͨ豸ʼ:%08X,豸:%d",Start_addr,NorDevInfoGlobal.NorDeviceNum); + + } + + for(i = 0; i < NorDevInfoGlobal.NorDeviceNum; i++) //ͨ豸 + { + List_addr = Start_addr + i*SRAM_Device_List_Size; + { + Device_Public_Information_G BUS_Public; // + + if(BLV_Device_PublicInfo_Read_To_Struct(List_addr,&BUS_Public) == 0x00) + { + switch(BUS_Public.type) + { + // case Dev_Host_HVout: //ǿ̵ ״̬ + case Dev_Host_LVinput: // ״̬ + case Dev_Host_LVoutput: // ״̬ + case Dev_Host_Service: //Ϣ ״̬ + case Dev_NodeCurtain: //ɽڵ㴰 ״̬ + case Dev_Rs485_PB20_LD: + case Dev_Rs485_PB20_LS: + case Dev_Rs485_PB20_Relay: + case DEV_Virtual_NoCard: + case DEV_Virtual_Time: + case DEV_Virtual_Card: + case DEV_Virtual_ColorTemp: + case DEV_Carbon_Saved: + case Dev_Scene_Restore: + case Dev_Virtual_GlobalSet: + if(NULL != BUS_Public.DevFunInfo.Dev_Data_Process) //ָ벻Ϊ0 + { + BUS_Public.DevFunInfo.Dev_Data_Process(List_addr); //ת + } + } + } + + } + } +} + +/******************************************************************************* +* Function Name : BLV_NormalPort_ModeTask +* Description : +*******************************************************************************/ +void BLV_Nor_Dev_ModeTask(void) +{ + static uint32_t dev_Nor_processing_tick = 0; + + if( SysTick_1ms - dev_Nor_processing_tick > 4) //5msһ豸 + { + dev_Nor_processing_tick = SysTick_1ms; + BLV_Nor_Dev_Polling_Task(); + } +} + /******************************************************************************* * Function Name : BLV_Active_Set_List_Addr * Description : ActivePort ַ @@ -1572,7 +1641,7 @@ __attribute__((section(".non_0_wait"))) void Write_Device_Fault_State( SRAM_Write_DW(read_addr,SRAM_DEVICE_ONLINE_STATE_TEMP_ADDR); } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s SRAM addr:%08X",__func__, write_addr); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s SRAM addr:%X",__func__, write_addr); memset(data,0x00,6); //豸Ϣ0 @@ -1583,7 +1652,7 @@ __attribute__((section(".non_0_wait"))) void Write_Device_Fault_State( if( (write_addr + 0x06) > SRAM_DEVICE_ONLINE_STATE_END_ADDR ) { - Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s overstep_1 %08X!!!",__func__,write_addr); + Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s overstep_1 %X!!!",__func__,write_addr); len = SRAM_DEVICE_ONLINE_STATE_END_ADDR - write_addr; SRAM_DMA_Write_Buff(data,len,write_addr); write_addr = SRAM_DEVICE_ONLINE_STATE_START_ADDR; @@ -1596,7 +1665,7 @@ __attribute__((section(".non_0_wait"))) void Write_Device_Fault_State( if(write_addr > SRAM_DEVICE_ONLINE_STATE_END_ADDR) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s overstep:%08X",__func__,write_addr); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s overstep:%X",__func__,write_addr); write_addr = SRAM_DEVICE_ONLINE_STATE_START_ADDR; } diff --git a/MCU_Driver/inc/blv_dev_action.h b/MCU_Driver/inc/blv_dev_action.h index f67c22b..aebb342 100644 --- a/MCU_Driver/inc/blv_dev_action.h +++ b/MCU_Driver/inc/blv_dev_action.h @@ -57,6 +57,9 @@ #define DevCtrlDlyLen 0x08 //豸Ƴȴʱ̶8ֽ ҪԼ豸ʱڵ #define DevCtrlDlyLenAddr 0x10 //豸Ƴȴ豸̶ַ16ֽ Ҫڲʹ +#define DEV_ACTION_INFO_Size 864 //Ϣܳ 864Byte +#define DevActionInfo_DevActionState_DevAddrIn_Index 59 //豸ַ± + typedef struct { uint16_t ActionNo; // @@ -67,8 +70,8 @@ typedef struct { uint8_t DevType; //豸 uint8_t DevAddr; //豸ַ - uint16_t inAddr; //ַ - uint16_t inType; // 豸ͣʶ + uint16_t DevLoop; //豸· + uint16_t DevEvent; //豸¼ }Dev_Action_Input; // һ6ֽ typedef struct @@ -150,7 +153,6 @@ typedef struct CFG_Action_Add Dev_Action_Cond DevActionCond; //豸 һ9ֽ /* ṹ峤Ƚ ݿܳ49ֽ */ - Dev_Action_State DevActionState; //״̬ һ11ֽ uint8_t CheckVal; //ǰ豸У 1ֽ uint16_t data_len; //豸 2ֽ @@ -251,10 +253,6 @@ typedef struct Dev_Dly_Value DlyBlinkTime; //˸Ƶ 0201 Ϊ1Sл 0202 Ϊ2Sл Ϊ ΪǰҪִеչ豸± }Struct_Dev_Dly; //豸ʱṹ壬дʱչ豸 ̶16ֽ - - - - typedef struct{ uint8_t Addr; uint16_t ExpandReadState[32]; @@ -269,15 +267,10 @@ typedef struct{ - - - - - - - extern BLV_DevAction_Manage_G DevActionGlobal; +uint8_t DevAction_Info_Write_To_SRAM(uint32_t addr,DEV_ACTION_INFO *DevAction_Info); +uint8_t DevAction_Info_Read_To_Struct(uint32_t addr,DEV_ACTION_INFO *DevAction_Info); void Logic_DevAction_Add(uint8_t *data,uint16_t len); uint32_t DevAction_No_Get(uint16_t DevActionNo); @@ -287,5 +280,6 @@ void DevAction_No_Ctrl(uint16_t DevActionNo, uint8_t Mode, uint16_t CtrlState); uint8_t DevActionCtrl(uint8_t *p, uint8_t DataLen); void BLV_DevAction_Task(void); +void BLV_DevDly_Task(void); #endif /* MCU_DRIVER_INC_BLV_DEV_ACTION_H_ */ diff --git a/MCU_Driver/inc/blv_rs485_protocol.h b/MCU_Driver/inc/blv_rs485_protocol.h index 21b8b3a..3c0c71d 100644 --- a/MCU_Driver/inc/blv_rs485_protocol.h +++ b/MCU_Driver/inc/blv_rs485_protocol.h @@ -346,6 +346,8 @@ void BLV_PollPort_ModeTask(void); void BLV_ActivePort_Task(void); void Act485Port_Passthrough_Task(void); void BLV_ActivePort_ModeTask(void); +void BLV_Nor_Dev_ModeTask(void); + void BLV_Active_Set_List_Addr(uint32_t addr); uint32_t Find_Device_List_Information(uint8_t dev_type,uint8_t addr); uint32_t Find_AllDevice_List_Information(uint8_t dev_type,uint8_t addr); diff --git a/MCU_Driver/logic_file_function.c b/MCU_Driver/logic_file_function.c index fbbef54..83c7fa2 100644 --- a/MCU_Driver/logic_file_function.c +++ b/MCU_Driver/logic_file_function.c @@ -34,11 +34,12 @@ __attribute__((section(".non_0_wait"))) void Action_Coord_Get(uint32_t Dev_proce for(i = 0; i < DevActionGlobal.DevActionNum; i++) // { - DevActionAddr = SRAM_DevAction_List_Start_Addr + i*SRAM_DevAction_List_Size; + DevActionAddr = SRAM_DevAction_List_Start_Addr + i*SRAM_DevAction_List_Size + DevActionInfo_DevActionState_DevAddrIn_Index; - if(SRAM_Read_DW(DevActionAddr+sizeof(Dev_Action_Core)+sizeof(Dev_Action_Input)+sizeof(Dev_Action_Cond)+sizeof(Dev_Action_State)-4) == Dev_processing_addr) + if(SRAM_Read_DW(DevActionAddr) == Dev_processing_addr) { BUS_Public->ActionCoord = i; //ǰһڵ豸ڵһµĶ + break; } } @@ -74,8 +75,7 @@ __attribute__((section(".non_0_wait"))) void Dev_Coord_Get(void) SRAM_DMA_Read_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),Dev_processing_addr+Dev_Privately); DevHVoutInfo.DevC5IOAddr = Find_AllDevice_List_Information(DEV_C5IO_Type, 0x00); //õC5IO洢ַ - Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"DevHVoutInfo.DevC5IOAddr:%08X", DevHVoutInfo.DevC5IOAddr); - SRAM_DMA_Write_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),Dev_processing_addr+Dev_Privately); //̵˽д + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"DevHVoutInfo.DevC5IOAddr:%X", DevHVoutInfo.DevC5IOAddr); BLV_Device_Info_Write_To_SRAM(Dev_processing_addr, &BUS_Public, (uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO)); }else { @@ -106,28 +106,36 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) for(i = 0; i < DevActionGlobal.DevActionNum; i++) { list_addri = SRAM_DevAction_List_Start_Addr + i * SRAM_DevAction_List_Size; - SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfoi, sizeof(DEV_ACTION_INFO), list_addri); + if(DevAction_Info_Read_To_Struct(list_addri, &DevActionInfoi) != 0x00) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",list_addri); + continue; + } + DevActionInfoi.DevActionState.DevAddrIn = Find_AllDevice_List_Information(DevActionInfoi.DevActionInput.DevType, DevActionInfoi.DevActionInput.DevAddr); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:%d豸:%d豸ַ:%d,豸ַ:%x", - DevActionInfoi.DevCtrlNum, - DevActionInfoi.DevActionInput.DevType, - DevActionInfoi.DevActionInput.DevAddr, + DevActionInfoi.DevCtrlNum, \ + DevActionInfoi.DevActionInput.DevType, \ + DevActionInfoi.DevActionInput.DevAddr, \ DevActionInfoi.DevActionState.DevAddrIn); - Dbg_Print_Buff(DBG_BIT_LOGIC_STATUS_bit,"ǰݴӡ:",(uint8_t *)&DevActionInfoi,sizeof(Dev_Action_Core) + sizeof(Dev_Action_Input)+sizeof(Dev_Action_Cond)+sizeof(Dev_Action_State)); - for(j = 0; j < DevActionGlobal.DevActionNum ; j++) { if( j != i ) { list_addrj = SRAM_DevAction_List_Start_Addr + j * SRAM_DevAction_List_Size; - SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfoj, sizeof(DEV_ACTION_INFO), list_addrj); + if(DevAction_Info_Read_To_Struct(list_addrj, &DevActionInfoj) != 0x00) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",list_addrj); + continue; + } + if( ( DevActionInfoi.DevActionCond.DevActionU64Cond.DevActionOutFlag == 0x00 ) && ( DevActionInfoj.DevActionCond.DevActionU64Cond.DevActionOutFlag == 0x00 ) && ( DevActionInfoi.DevActionInput.DevType == DevActionInfoj.DevActionInput.DevType ) && ( DevActionInfoi.DevActionInput.DevAddr == DevActionInfoj.DevActionInput.DevAddr ) - && ( DevActionInfoi.DevActionInput.inAddr == DevActionInfoj.DevActionInput.inAddr ) - && ( DevActionInfoi.DevActionInput.inType == DevActionInfoj.DevActionInput.inType ) ) + && ( DevActionInfoi.DevActionInput.DevLoop == DevActionInfoj.DevActionInput.DevLoop ) + && ( DevActionInfoi.DevActionInput.DevEvent == DevActionInfoj.DevActionInput.DevEvent ) ) { Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰַ:%X֮ǰַ:%X", list_addri, list_addrj); DevActionInfoi.DevActionState.SceneReuseFlag = 0x01; @@ -146,7 +154,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) DevActionInfoi.DevActionState.MultiValidNo++; Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ·:%d ʼַ:%X ±:%d", DevActionInfoi.DevActionInput.DevAddr, - DevActionInfoi.DevActionInput.inAddr, + DevActionInfoi.DevActionInput.DevLoop, list_addri, DevActionInfoi.DevActionState.MultiNumber); } @@ -163,20 +171,12 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ·:%d ǰַ:%X ±:%d", DevActionInfoj.DevActionInput.DevAddr, - DevActionInfoj.DevActionInput.inAddr, + DevActionInfoj.DevActionInput.DevLoop, list_addrj, DevActionInfoj.DevActionState.MultiNumber); - //Ż - for(k = 0; k < SRAM_DevAction_List_Size; k++) - { - SRAM_Write_Byte(0x00,list_addrj+k); - } Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Ϊ±λ׼±,ַ:%X", list_addrj); - DevActionInfoj.CheckVal = 0x00; - SRAM_DMA_Write_Buff((uint8_t *)&DevActionInfoj, DevActionInfoj.data_len, list_addrj); - DevActionInfoj.CheckVal = DevAction_CheckSum(list_addrj,DevActionInfoj.data_len); - SRAM_Write_Byte(DevActionInfoj.CheckVal, ( list_addrj + sizeof(Dev_Action_Core) + sizeof(Dev_Action_Input) + sizeof(Dev_Action_Cond) + sizeof(Dev_Action_State) ) ); + DevAction_Info_Write_To_SRAM(list_addrj, &DevActionInfoj); //涯 DevAdd = Find_AllDevice_List_Information2(Active_Port, DevActionInfoi.DevActionInput.DevType, DevActionInfoi.DevActionInput.DevAddr); if(DevAdd != 0x00) @@ -185,15 +185,15 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) SRAM_DMA_Read_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAdd+Dev_Privately); if(DevActionInfoi.DevActionState.MultiValidNo <= 127) { - Rs485SwiInfo.MultiValidNo[DevActionInfoi.DevActionInput.inAddr] = DevActionInfoi.DevActionState.MultiValidNo; + Rs485SwiInfo.MultiValidNo[DevActionInfoi.DevActionInput.DevLoop] = DevActionInfoi.DevActionState.MultiValidNo; } BLV_Device_Info_Write_To_SRAM(DevAdd,&BUS_Public,(uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO)); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%d ,·:%d Ч:%d", DevActionInfoi.DevActionInput.DevAddr, - DevActionInfoi.DevActionInput.inAddr, - Rs485SwiInfo.MultiValidNo[DevActionInfoi.DevActionInput.inAddr]); + DevActionInfoi.DevActionInput.DevLoop, + Rs485SwiInfo.MultiValidNo[DevActionInfoi.DevActionInput.DevLoop]); } } } @@ -210,7 +210,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) { DevActionInfoi.DevActionOutput[k].DevActionOutAddr = DevAction_No_Get(DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevOutputLoop); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ,ַ:%X ַ:%X ±:%d ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ,ַ:%X ijַ:%X ±:%d ·:%d", list_addri, DevActionInfoi.DevActionOutput[k].DevActionOutAddr, i, @@ -221,7 +221,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevType, DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevAddr); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"չ豸:%dչ豸ַ:%d,չ豸·ַ:%d,չ豸洢ַ:%x", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸:%dַ:%d,·:%d,SRAM洢ַ:%x", DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevType, DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevAddr, DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevOutputLoop, @@ -238,14 +238,14 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) if(Dev_Host_Invalid != DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevType) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱ豸׼±,ַ:%X ±:%d,ʱڵ:%X 漰ʱ豸ַ:%X, ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱ,׼±,ַ:%X ±:%d,ʱڵ:%X 漰ʱ豸ַ:%X, ·:%d", list_addri, i, DevActionInfoi.DevActionOutput[k].DevDlyAddr, DevActionInfoi.DevActionOutput[k].DevActionOutAddr, DevActionInfoi.DevActionOutput[k].DevActionOutCfg.DevOutputLoop); }else{ - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱ׼±,ַ:%X ±:%d,ʱڵ:%X 漰ʱ豸ַ:%X, ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱ,׼±,ַ:%X ±:%d,ʱڵ:%X 漰ʱ豸ַ:%X, ·:%d", list_addri, i, DevActionInfoi.DevActionOutput[k].DevDlyAddr, @@ -257,17 +257,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) } } - for(k = 0; k < SRAM_DevAction_List_Size; k++) - { - SRAM_Write_Byte(0x00,list_addri+k); - } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰΪñ־λ׼±,ַ:%X", list_addri); - DevActionInfoi.CheckVal = 0x00; - SRAM_DMA_Write_Buff((uint8_t *)&DevActionInfoi, DevActionInfoi.data_len, list_addri); //д - - DevActionInfoi.CheckVal = DevAction_CheckSum(list_addri,DevActionInfoi.data_len); //У - - SRAM_Write_Byte(DevActionInfoi.CheckVal,(list_addri + sizeof(Dev_Action_Core) + sizeof(Dev_Action_Input) + sizeof(Dev_Action_Cond) + sizeof(Dev_Action_State)) ); //Уֵд + DevAction_Info_Write_To_SRAM(list_addri, &DevActionInfoi); //涯 } } @@ -287,7 +277,11 @@ __attribute__((section(".non_0_wait"))) void Expand_Scene_Get(void) { KeepFlag = 0x00; 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(DevAction_Info_Read_To_Struct(list_addr, &DevActionInfo) != 0x00) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",list_addr); + continue; + } for(j = 0; j < DevActionInfo.DevCtrlNum; j++) { @@ -297,7 +291,7 @@ __attribute__((section(".non_0_wait"))) void Expand_Scene_Get(void) if( DevActionInfo.DevActionOutput[j].DevActionOutAddr != 0x00 ) { KeepFlag = 0x01; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%X ַ:%X ±:%d ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%X ַ:%X ±:%d ·:%d", list_addr,DevActionInfo.DevActionOutput[j].DevActionOutAddr, i, DevActionInfo.DevActionOutput[j].DevActionOutCfg.DevOutputLoop); @@ -341,17 +335,7 @@ __attribute__((section(".non_0_wait"))) void Expand_Scene_Get(void) if( KeepFlag == 0x01 ) { - for(uint16_t k = 0;k