From 6e19d0b4514d8cc786341b91c28ae053cd3c7608 Mon Sep 17 00:00:00 2001 From: caocong Date: Mon, 5 Jan 2026 21:17:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9ACSIO=E7=BB=A7?= =?UTF-8?q?=E7=94=B5=E5=99=A8=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CSIO继电器控制初步测试OK --- .cproject | 2 +- .settings/language.settings.xml | 2 +- BLV_485_Driver/blv_bus_dev_c5iofun.c | 68 +-- BLV_485_Driver/blv_bus_dev_c5music.c | 234 +++------ BLV_485_Driver/blv_nor_dev_c5relay.c | 197 ++++++++ BLV_485_Driver/blv_nor_dev_hvoutfun.c | 24 +- BLV_485_Driver/blv_nor_dev_lvoutput.c | 210 ++++++++ BLV_485_Driver/blv_nor_dev_serviceinfo.c | 476 ++++++++++++++++++ BLV_485_Driver/blv_nor_dev_virtualcard.c | 24 +- BLV_485_Driver/blv_not_dev_lvinput.c | 23 +- BLV_485_Driver/blv_rs485_dev_c12dimming.c | 14 +- BLV_485_Driver/blv_rs485_dev_cardctrl.c | 22 +- BLV_485_Driver/blv_rs485_dev_ledctrl.c | 21 +- BLV_485_Driver/blv_rs485_dev_switchctrl.c | 15 +- BLV_485_Driver/blv_rs485_dev_tempctrl.c | 30 +- BLV_485_Driver/blv_rs485_dev_touchswitch.c | 18 +- BLV_485_Driver/blv_rs485_dev_touchtempt1.c | 7 +- BLV_485_Driver/inc/blv_nor_dev_c5relay.h | 20 + BLV_485_Driver/inc/blv_nor_dev_lvoutput.h | 32 ++ BLV_485_Driver/inc/blv_nor_dev_serviceinfo.h | 15 +- ...irtualcard.h => blv_nor_dev_virtualcard.h} | 12 +- BLV_485_Driver/pc_devicetest_fun.c | 21 +- MCU_Driver/blv_dev_action.c | 378 +++++++++++--- MCU_Driver/blv_netcomm_function.c | 126 ++--- MCU_Driver/blv_rs485_protocol.c | 462 ++++++++++------- MCU_Driver/debug.c | 2 +- MCU_Driver/inc/blv_dev_action.h | 125 +++-- MCU_Driver/inc/blv_rs485_protocol.h | 44 +- MCU_Driver/inc/logic_file_function.h | 10 +- MCU_Driver/inc/sram_mem_addr.h | 1 + MCU_Driver/logic_file_function.c | 302 ++++++----- MCU_Driver/uart.c | 55 +- Readme.md | 12 + User/includes.h | 4 +- User/main.c | 15 +- 35 files changed, 2094 insertions(+), 929 deletions(-) create mode 100644 BLV_485_Driver/blv_nor_dev_c5relay.c create mode 100644 BLV_485_Driver/blv_nor_dev_lvoutput.c create mode 100644 BLV_485_Driver/blv_nor_dev_serviceinfo.c create mode 100644 BLV_485_Driver/inc/blv_nor_dev_c5relay.h create mode 100644 BLV_485_Driver/inc/blv_nor_dev_lvoutput.h rename BLV_485_Driver/inc/{blv_nor_dec_virtualcard.h => blv_nor_dev_virtualcard.h} (96%) diff --git a/.cproject b/.cproject index 80bf217..e791d79 100644 --- a/.cproject +++ b/.cproject @@ -72,7 +72,7 @@ diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index ac427ad..6196f13 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/BLV_485_Driver/blv_bus_dev_c5iofun.c b/BLV_485_Driver/blv_bus_dev_c5iofun.c index 71a5773..b8dc5f7 100644 --- a/BLV_485_Driver/blv_bus_dev_c5iofun.c +++ b/BLV_485_Driver/blv_bus_dev_c5iofun.c @@ -117,7 +117,7 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_CSIO_DI_For_Logic_Init( memset(&BUS_Public,0,sizeof(Device_Public_Information_G)); memset(&C5IO_Info,0,sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),csio_addr); + BLV_Device_PublicInfo_Read_To_Struct(csio_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),csio_addr+Dev_Privately); input_num = dev_info->input_num; @@ -198,10 +198,7 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_CSIO_DI_For_Logic_Init( temp_len += 4; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),csio_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),csio_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(csio_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); BLV_Nor_Dev_LVinput_Init(dev_info->addr,dev_info->input_num); } @@ -224,7 +221,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Cycle_Call(uint32_t Device_Public_Information_G BUS_Public; BUS_C5IO_INFO C5IO_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); if((BUS_Public.port == Bus_port) && (BUS485_Info.BUS_Start == Baud_Wait)) { @@ -232,10 +229,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Cycle_Call(uint32_t //Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"лʹ,ֻѯ"); BUS_C5IO_Inquire_Datasend(dev_addr,&C5IO_Info); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); return RS485OCCUPYTIME; } @@ -332,10 +326,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Cycle_Call(uint32_t C5IO_Info.DevSendCnt++; //ʹۼ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); return RS485OCCUPYTIME; } @@ -413,7 +404,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Data_Processing(uin return 0x01; //У } - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); memset(deal_buff,0,sizeof(deal_buff)); @@ -482,7 +473,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Data_Processing(uin Device_Public_Information_G BUS_Public; C5IO_Info.DevOfflineLast = C5IO_Info.DevOffline; //һ״̬ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); Write_Device_Fault_State(BUS_Public.type,BUS_Public.addr,In_ErrFun_LineState,DEV_IS_ONLINE); //豸״̬SRAM } if((DI_Init_flg == 0) && (deal_buff[PKT_PARA] != 0xF0)) //һѯĻظ 2024-04-01 һDzѯظDIʹDI @@ -494,10 +485,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Data_Processing(uin Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"IO VERSION:%d", C5IO_Info.C5IO_Version); Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"DI_Control_Flag:%X", C5IO_Info.DI_Control_Flag); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); return 0x00; } @@ -753,10 +741,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5IO_Data_Processing(uin LOG_Device_COMM_ASK_TO_Reply_Record2(dev_addr+Dev_port,dev_addr+Dev_baud,(SysTick_1ms - C5IO_Info.inquire_tick),deal_buff,deal_len); } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); return 0x00; } @@ -1219,7 +1204,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Control_Relay(uint32_t dev Device_Public_Information_G BUS_Public; BUS_C5IO_INFO C5IO_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s",__func__); @@ -1247,10 +1232,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Control_Relay(uint32_t dev } } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } /******************************************************************************* @@ -1269,7 +1251,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Control_Do(uint32_t dev_ad Device_Public_Information_G BUS_Public; BUS_C5IO_INFO C5IO_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); if(temp1 < C5IO_DO_CH_MAX) @@ -1289,10 +1271,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Control_Do(uint32_t dev_ad } } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } /******************************************************************************* @@ -1311,7 +1290,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Control_Relay_Inching(uint Device_Public_Information_G BUS_Public; BUS_C5IO_INFO C5IO_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); if(temp1 < C5IO_Relay_CH_MAX) @@ -1334,10 +1313,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Control_Relay_Inching(uint } } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } /******************************************************************************* @@ -1355,7 +1331,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5IO_Group_Control_Relay(uint32 Device_Public_Information_G BUS_Public; BUS_C5IO_INFO C5IO_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); for(uint8_t i=0;i>= 1; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } /******************************************************************************* @@ -1397,16 +1370,13 @@ __attribute__((section(".non_0_wait"))) void BUS_CSIO_Set_RTC_Time(uint32_t dev_ Device_Public_Information_G BUS_Public; BUS_C5IO_INFO C5IO_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); /*ʱһ*/ C5IO_Info.rtc_set_flag = 0x01; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5IO_Info, sizeof(BUS_C5IO_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO)); } /******************************************************************************* diff --git a/BLV_485_Driver/blv_bus_dev_c5music.c b/BLV_485_Driver/blv_bus_dev_c5music.c index 31043fb..50b84ac 100644 --- a/BLV_485_Driver/blv_bus_dev_c5music.c +++ b/BLV_485_Driver/blv_bus_dev_c5music.c @@ -113,7 +113,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5MUSIC_Cycle_Call(uint3 // temp = SRAM_Read_Byte(dev_addr+Dev_Type); //ж豸 // if(temp != DEV_C5MUSIC_Type) return 0x01; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),dev_addr+Dev_Privately); if((BUS_Public.port == Bus_port) && (BUS485_Info.BUS_Start == Baud_Wait)) { @@ -122,10 +122,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5MUSIC_Cycle_Call(uint3 BUS_C5MUSIC_Playback_Status_Datasend(dev_addr,&C5Music_Info); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); return RS485OCCUPYTIME; } @@ -227,10 +224,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5MUSIC_Cycle_Call(uint3 C5Music_Info.DevSendCnt++; //ʹۼ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); return RS485OCCUPYTIME; } @@ -253,7 +247,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5MUSIC_Data_Processing( Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),dev_addr+Dev_Privately); uint16_t deal_len = len; @@ -487,10 +481,8 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_BUS_C5MUSIC_Data_Processing( C5Music_Info.DevOfflineLast = C5Music_Info.DevOffline; //һ״̬ Write_Device_Fault_State(BUS_Public.type,BUS_Public.addr,In_ErrFun_LineState,DEV_IS_ONLINE); //豸״̬SRAM } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),dev_addr+Dev_Privately); + + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); return 0x00; } @@ -1201,16 +1193,13 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Playback_Mode(uint3 if(devaddr == 0x00) return; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); C5Music_Info.playback_mode = play_mode; C5Music_Info.control_flag |= C5MUSIC_Set_Loop_Mode_Flag; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } @@ -1230,7 +1219,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Playback(uint32_t devad Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); C5Music_Info.playback_fun = playback; @@ -1239,12 +1228,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Playback(uint32_t devad C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1260,7 +1244,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Doorbell_Dir(uint32_t d if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); C5Music_Info.assign_dir = BLV_C5MUSIC_Doorbell_Dir; @@ -1268,11 +1252,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Doorbell_Dir(uint32_t d C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } @@ -1290,7 +1270,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Warning_Dir(uint32_t de if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); C5Music_Info.playback_fun = start; @@ -1299,11 +1279,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Warning_Dir(uint32_t de C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } @@ -1321,23 +1297,17 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Greet_Dir(uint32_t deva if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - C5Music_Info.playback_fun = start; - C5Music_Info.assign_dir = BLV_C5MUSIC_Greet_Dir; C5Music_Info.assign_playback_idx = id; // C5Music_Info.set_playback_volume = 20; //ӭΪ15 C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } @@ -1355,7 +1325,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Helpsleep_Dir(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); /*ģʽ*/ @@ -1385,12 +1355,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Helpsleep_Dir(uint32_t C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1408,7 +1373,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Helpsleep_Dir(uint if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); /*ģʽ*/ @@ -1437,11 +1402,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Helpsleep_Dir(uint C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1458,7 +1419,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Helpsleep_Dir_Just(uint if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); /*ģʽ*/ @@ -1487,12 +1448,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Helpsleep_Dir_Just(uint C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1507,7 +1463,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Stop_Playback(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1517,11 +1473,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Stop_Playback(uint32_t C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } @@ -1537,7 +1489,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Playback(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1559,14 +1511,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Playback(uint32_t C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; -// C5Music_Info.playback_mode = BLV_C5MUSIC_Folder_Loop; -// C5Music_Info.control_flag |= C5MUSIC_Set_Loop_Mode_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1581,7 +1526,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Playback_Next(uint if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1600,11 +1545,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Playback_Next(uint C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s %d",__func__,C5Music_Info.assign_playback_idx); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1619,7 +1560,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Playback_Last(uint if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1640,11 +1581,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Play_Playback_Last(uint C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1659,7 +1596,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Pause_Playback(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1669,12 +1606,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Pause_Playback(uint32_t C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1691,7 +1623,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Playback_Next(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1701,12 +1633,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Playback_Next(uint32_t C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1723,7 +1650,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Playback_Prev(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1733,12 +1660,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Playback_Prev(uint32_t C5Music_Info.control_flag |= C5MUSIC_Specify_Play_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1753,7 +1675,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_Plus(ui if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); //Ե - һ @@ -1766,12 +1688,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_Plus(ui C5Music_Info.adjust_volume_loop = 0x03; //·1·2 C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1786,7 +1703,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_Subtrac if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s",__func__); @@ -1800,11 +1717,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_Subtrac C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1819,7 +1732,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_PlusVal if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); //Ե - value @@ -1839,11 +1752,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_PlusVal C5Music_Info.adjust_volume_type |= 0x10; C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1858,7 +1767,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_Subtrac if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); //Ե - value @@ -1878,12 +1787,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Relative_Volume_Subtrac C5Music_Info.adjust_volume_type |= 0x10; C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1898,7 +1802,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Quiet_Mode(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); /*״̬ȡ*/ @@ -1920,11 +1824,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Quiet_Mode(uint32_t C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1942,7 +1842,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Quiet_Mode2(uint32_ if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1962,11 +1862,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Quiet_Mode2(uint32_ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -1983,7 +1879,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Global_Volume(uint3 if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); @@ -1999,11 +1895,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_Global_Volume(uint3 C5Music_Info.quiet_mode = 0x00; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -2024,7 +1916,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_LoopVolume(uint32_t if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); switch(loop) @@ -2046,11 +1938,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_LoopVolume(uint32_t break; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } /******************************************************************************* @@ -2071,7 +1959,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_LoopVolume_2(uint32 if(devaddr == 0x00) return; Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); if((loop & 0x01)) // @@ -2096,11 +1984,7 @@ __attribute__((section(".non_0_wait"))) void BUS_C5MUSIC_Set_LoopVolume_2(uint32 C5Music_Info.adjust_volume_type |= 0x10; C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); } } @@ -2125,7 +2009,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Get_BUS_C5MUSIC_Loop_Volume(uint Device_Public_Information_G BUS_Public; BUS_C5MUSIC_INFO C5Music_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),devaddr+Dev_Privately); switch(loop) @@ -2197,7 +2081,7 @@ __attribute__((section(".non_0_wait"))) void Logic_Music_Ctrl( return ; } - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),DevAddrOut+Dev_Privately); if(DevOutputLoop >= MUSICLOOPMAX) @@ -2410,11 +2294,7 @@ __attribute__((section(".non_0_wait"))) void Logic_Music_Ctrl( C5Music_Info.control_flag |= C5MUSIC_Set_Volume_Flag; } - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&C5Music_Info, sizeof(BUS_C5MUSIC_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAddrOut);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO),DevAddrOut+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(DevAddrOut,&BUS_Public,(uint8_t *)&C5Music_Info,sizeof(BUS_C5MUSIC_INFO)); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"BLV: %d", C5Music_Info.BackMusicState[0].CtrlCont.CtrlVoice); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"BLVʾ: %d", C5Music_Info.BackMusicState[1].CtrlCont.CtrlVoice); diff --git a/BLV_485_Driver/blv_nor_dev_c5relay.c b/BLV_485_Driver/blv_nor_dev_c5relay.c new file mode 100644 index 0000000..2462487 --- /dev/null +++ b/BLV_485_Driver/blv_nor_dev_c5relay.c @@ -0,0 +1,197 @@ +/* + * blv_nor_dev_c5relay.c + * + * Created on: Jan 5, 2026 + * Author: cc + */ + +#include "blv_nor_dev_c5relay.h" +#include "blv_bus_dev_c5iofun.h" + + +#include "blv_dev_action.h" +#include "spi_sram.h" +#include "check_fun.h" +#include "debug.h" + +#define REPEATSENDTIMEMAX 0x03 //ط +#define C5EXPANDTYPE 0xF1 //C5RELAY +#define C5RelayAddrDefault 0x01 //ĬΪ1ַ ͨѶȻĬϵַ + +#define C5RELAYSnMin 0x00 //СSn +#define C5RELAYSnMax 0x0F //Sn + + +/******************************************************************************* +* Function Name : BLW_RS485_C5RELAY_Data_Init +* Description : 豸 - ѯ豸 +* Input : + type : ӵ豸 + addr : ӵ豸ַ + polling_cf 豸ѯݷͻص + processing_cf 豸ݴص +* Return : None +*******************************************************************************/ +void BLW_RS485_C5RELAY_Data_Init(Device_Public_Information_G *BUS_Public, NOR_HVOUT_INFO *DevHVoutInfo) +{ + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"%s",__func__); + + BUS_Public->polling_cf = (uint32_t)&BLW_C5RELAYCycleCtrl; + BUS_Public->processing_cf = (uint32_t)&BLW_Rs485_C5RELAY_Check; + + /* ̵Ҫ֪CSIO豸ַܿƼ̵ + ڽȡCSIOַŵ豸ȫʼɺȥCSIO豸ַ浽ü̵豸С + ҺDev_Coord_Get*/ + +} + +#define C5EXPANDCTRLLEN 13 //չƱ +/** + * @name BLW չƺ + * @para + * dev_addr 豸ʼַ + * @return + * @attention ѭãѾж + */ +void BLW_Rs485_C5RELAY_Ctrl(Device_Public_Information_G *BUS_Public, NOR_HVOUT_INFO* DevHVoutInfo, BUS_C5IO_INFO *C5IO_Info) +{ + /*ݿCSIO*/ + if( DevHVoutInfo->HVoutLoopValidNum >= HVoutNumMAX ) DevHVoutInfo->HVoutLoopValidNum = HVoutNumMAX; //ֹ + + for(uint8_t i = 0; i < DevHVoutInfo->HVoutLoopValidNum; i++) + { + if( (DevHVoutInfo->DevChangeFlag & (0x01 << i)) != 0x00 ) + { + switch(DevHVoutInfo->DevHVoutState[i]) + { + case 0x01: + C5IO_Info->Relay_Control[i] = BUS_C5IO_OUT_HIGH; + C5IO_Info->Relay_Control_Flag |= 0x00000001<Relay_Control[i] = BUS_C5IO_OUT_LOW; + C5IO_Info->Relay_Control_Flag |= 0x00000001<DevChangeFlag &= ~(0x01< /*ָ궨*/ typedef void (*DevFunP)(Device_Public_Information_G *BUS_Public, NOR_HVOUT_INFO *DevHVoutInfo); //ݹָ ˽ָ /*豸궨忪ʼ*/ -#define RS485_DEV_PRO_FUN_01 ((DevFunP)NULL) //DevExistJudgge(RS485_HVout_C5RELAY_Flag, BLW_RS485_C5RELAY_Data_Init) //((DevFunP)NULL) // C5C12Դ̵ +#define RS485_DEV_PRO_FUN_01 DevExistJudgge(RS485_HVout_C5RELAY_Flag, BLW_RS485_C5RELAY_Data_Init) // C5C12Դ̵ #define RS485_DEV_PRO_FUN_02 ((DevFunP)NULL) //DevExistJudgge(RS485_HVout_A9RELAY_Flag, BLW_RS485_A9RELAY_Data_Init) //((DevFunP)NULL) //A9IO̵ #define RS485_DEV_PRO_FUN_03 ((DevFunP)NULL) //DevExistJudgge(RS485_HVout_SwiRELAY_Flag, BLW_RS485_SwiRELAY_Data_Init) //((DevFunP)NULL) //ǿ翪ؼ̵ #define RS485_DEV_PRO_FUN_04 ((DevFunP)NULL) // @@ -46,6 +48,7 @@ __attribute__((section(".non_0_wait"))) void BLV_Nor_Dev_HVout_For_Logic_Init( if(ENUM_RS485_DEV_PRO_01 == dev_info->version) { + BUS_Public.retry_num = C5IO_REPEATSENDTIMEMAX; //豸ط BUS_Public.wait_time = C5IO_SEND_WAIT_TIME; //豸ݷ͵ȴظʱ - 100ms }else{ @@ -68,6 +71,8 @@ __attribute__((section(".non_0_wait"))) void BLV_Nor_Dev_HVout_For_Logic_Init( DevHVoutInfo.HVoutLoopValidNum = dev_info->output_num; } + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"HVOUT loop:%d",DevHVoutInfo.HVoutLoopValidNum); + switch(BUS_Public.Protocol) { case ENUM_RS485_DEV_PRO_01: if(NULL!=RS485_DEV_PRO_FUN_01) RS485_DEV_PRO_FUN_01(&BUS_Public, &DevHVoutInfo);break; // @@ -91,6 +96,7 @@ __attribute__((section(".non_0_wait"))) void BLV_Nor_Dev_HVout_For_Logic_Init( Poll485_Info.device_num += 1; break; case Bus_port: //߶˿ + BUS_Public.baud = 115200; BUS_Public.port = Bus_port; //豸Ͷ˿ Add_BUS_Device_To_List(&BUS_Public,(uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO)); BUS485_Info.device_num += 1; @@ -152,7 +158,7 @@ __attribute__((section(".non_0_wait"))) void BLW_HVout_Control_State( if(devaddr == 0x00) return; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); //й + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); //й SRAM_DMA_Read_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),devaddr+Dev_Privately); switch(start) @@ -191,10 +197,8 @@ __attribute__((section(".non_0_wait"))) void BLW_HVout_Control_State( { BLV_Active_Set_List_Addr(devaddr); //ΨŻȴ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&DevHVoutInfo, sizeof(NOR_HVOUT_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),devaddr+Dev_Privately); + + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO)); } } @@ -224,7 +228,7 @@ __attribute__((section(".non_0_wait"))) void BLW_HVout_Group_Ctrl( if(devaddr == 0x00) return; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); //й + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); //й SRAM_DMA_Read_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),devaddr+Dev_Privately); if(CtrlNum >= DevHVoutInfo.HVoutLoopValidNum) @@ -270,10 +274,8 @@ __attribute__((section(".non_0_wait"))) void BLW_HVout_Group_Ctrl( { BLV_Active_Set_List_Addr(devaddr); } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&DevHVoutInfo, sizeof(NOR_HVOUT_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),devaddr+Dev_Privately); + + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO)); } } diff --git a/BLV_485_Driver/blv_nor_dev_lvoutput.c b/BLV_485_Driver/blv_nor_dev_lvoutput.c new file mode 100644 index 0000000..284a552 --- /dev/null +++ b/BLV_485_Driver/blv_nor_dev_lvoutput.c @@ -0,0 +1,210 @@ +/* + * blv_nor_dev_lvoutput.c + * + * Created on: Dec 31, 2025 + * Author: cc + */ +#include "includes.h" + +/*Ϣͨ豸*/ +void BLV_Nor_Dev_LVoutput_Init(uint8_t devaddr) +{ + Device_Public_Information_G BUS_Public; + NOR_LVOUTPUT_INFO DevLVoutputInfo; //Ϣֲ + + memset(&BUS_Public,0,sizeof(Device_Public_Information_G)); + memset(&DevLVoutputInfo,0,sizeof(NOR_LVOUTPUT_INFO)); + + BUS_Public.addr = devaddr; //豸ַ + BUS_Public.type = Dev_Host_LVoutput; //豸 +// BUS_Public.port = Active_Port; //豸Ͷ˿ +// BUS_Public.baud = 9600; //豸Ͳ +// BUS_Public.retry_num = 0x03; //豸ط +// BUS_Public.wait_time = 0x0064; //豸ݷ͵ȴظʱ +// BUS_Public.polling_cf = (uint32_t)&BLW_Touch_SwitchCycleDis; +// BUS_Public.processing_cf = (uint32_t)&BLW_Rs485_Touch_Swi_Check; + + BUS_Public.DevFunInfo.Dev_Data_Process = Dev_LVoutput_Dis; // + BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLW_LVoutput_Control_State; // + BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = LVoutput_Loop_State; // + + DevLVoutputInfo.LVoutputLoopValidNum = C1_LVOUTPUTNUMMAX; + DevLVoutputInfo.DevC5IOAddr = Find_AllDevice_List_Information(DEV_C5IO_Type, 0x00); + + Add_Nor_Device_To_List(&BUS_Public,(uint8_t *)&DevLVoutputInfo,sizeof(NOR_LVOUTPUT_INFO)); +} + +/******************************************************************************* +* Function Name : LVoutput_Loop_State +* Description : - ״̬ȡ +* Input : + devaddr : 豸Ϣַ + loop · ·Ǵ0 +* Return : ״̬ 0x01 0x02 +*******************************************************************************/ +uint16_t LVoutput_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop) +{ + NOR_LVOUTPUT_INFO DevLVoutputInfo; //Ϣֲ + + if(devaddr == 0x00) return 0x00; + + SRAM_DMA_Read_Buff((uint8_t *)&DevLVoutputInfo,sizeof(NOR_LVOUTPUT_INFO),devaddr+Dev_Privately); + + if(DevOutputLoop >= DevLVoutputInfo.LVoutputLoopValidNum) return 0x00; + + if(DevLVoutputInfo.DevLVoutputState[DevOutputLoop] == 0x01) + { + return 0x01; + }else{ + return 0x02; + } + +} + +/******************************************************************************* +* Function Name : BLW_LVoutput_Control_State +* Description : BLWϢ״̬ƺ +* Input : + devaddr : 豸Ϣַ + loop · ·Ǵ0 + start ״̬ 0x01 0x02 +* Return : +* attention : temp10Żб +*******************************************************************************/ +void BLW_LVoutput_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t DevOutputLoop,uint16_t DevOutputType) +{ + uint8_t temp1 = 0; + uint8_t state; //0 1 + uint8_t CtrlWay; + Device_Public_Information_G BUS_Public; // + NOR_LVOUTPUT_INFO DevLVoutputInfo; //ֲ + + if(devaddr == 0x00) return; + + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); + SRAM_DMA_Read_Buff((uint8_t *)&DevLVoutputInfo,sizeof(NOR_LVOUTPUT_INFO),devaddr+Dev_Privately); + + if(DevOutputLoop >= DevLVoutputInfo.LVoutputLoopValidNum) return ; + + CtrlWay = DevOutputType&0x00ff; //ȡֽ + + switch(CtrlWay) + { + case 0x01:state = 0x01;break; // + case 0x02:state = 0x00;break; //ر + case 0x04: //˸ + if(0x01 == DevLVoutputInfo.DevLVoutputState[DevOutputLoop]) + { + state = 0x00; + }else{ + state = 0x01; + } + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"˸ֵ,start:%d",state); + break; + default:return; + } + + + if( DevLVoutputInfo.DevLVoutputState[DevOutputLoop] != state ) + { + switch(state) + { + case 0x00: //ָλ0 + DevLVoutputInfo.DevLVoutputState[DevOutputLoop] = 0x00; + break; + case 0x01: //ָλһ + DevLVoutputInfo.DevLVoutputState[DevOutputLoop] = 0x01; + break; + } + + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"LVoutput loop:%d,state:%d",DevOutputLoop,state); + temp1++; + } + + if(temp1 != 0x00) + { + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&DevLVoutputInfo,sizeof(NOR_LVOUTPUT_INFO)); + } +} + +void Dev_LVoutput_Dis(uint32_t DevAddr) +{ + Device_Public_Information_G BUS_PublicLVoutput; // + NOR_LVOUTPUT_INFO DevLVoutputInfo; //̵ֲ + Device_Public_Information_G BUS_PublicC5IO; // + BUS_C5IO_INFO C5IO_Info; + + uint8_t KeepFlag = 0x00; + + if(DevAddr == 0x00) return ; + + BLV_Device_PublicInfo_Read_To_Struct(DevAddr,&BUS_PublicLVoutput); + SRAM_DMA_Read_Buff((uint8_t *)&DevLVoutputInfo,sizeof(NOR_LVOUTPUT_INFO),DevAddr+Dev_Privately); + + if(DevLVoutputInfo.DevC5IOAddr == 0x00) return ; + + BLV_Device_PublicInfo_Read_To_Struct(DevLVoutputInfo.DevC5IOAddr,&BUS_PublicC5IO); + SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),DevLVoutputInfo.DevC5IOAddr+Dev_Privately); + + if( (DevLVoutputInfo.init_flag == 0x00) && (C5IO_Info.DI_Init_flag == 0x01) ){ + /*DIʼ - ȡ̵״̬Ϊʼ״̬*/ + DevLVoutputInfo.init_flag = 0x01; + + for(uint32_t i = 0; i < DevLVoutputInfo.LVoutputLoopValidNum; i++) + { + if( (C5IO_Info.Relay_Level_Actual_Start & (0x01<addr; //豸ַ + BUS_Public.type = Dev_Host_Service; //豸 + BUS_Public.port = dev_info->type; //豸Ͷ˿ + BUS_Public.baud = dev_info->baud; //豸Ͳ + BUS_Public.retry_num = dev_info->retry; //豸ط + BUS_Public.wait_time = dev_info->writ_time; //豸ݷ͵ȴظʱ + BUS_Public.polling_cf = (uint32_t)&BLW_Touch_SwitchCycleDis; + BUS_Public.processing_cf = (uint32_t)&BLW_Rs485_Touch_Swi_Check; + + BUS_Public.DevFunInfo.Dev_Data_Process = Dev_Service_Dis; + BUS_Public.DevFunInfo.Dev_Input_Type_Get = Dev_Service_InType_Get; + BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLW_Service_Control_State; + BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = Service_Loop_State; + + DevServiceInfo.ServiceLoopValidNum = ServiceNumMAX; + DevServiceInfo.Loop_State[Service_Warning] = 0x01; //ĬϿʾ + + DevServiceInfo.Loop_State[Service_Dnd] = 0x02; //ĬΪ + DevServiceInfo.Loop_State[Service_Clean] = 0x02; //Ĭ + DevServiceInfo.Loop_State[Service_Luggage] = 0x02; //Ĭ + DevServiceInfo.Loop_State[Service_Meals] = 0x02; //ر9ŷ + DevServiceInfo.Loop_State[Service_CheckOut] = 0x02; //ر˷ + DevServiceInfo.Loop_State[Service_Strong] = 0x02; //رձ + DevServiceInfo.Loop_State[Service_Wait] = 0x02; //رԺ + DevServiceInfo.Loop_State[Service_Sos] = 0x02; //ĬϹرSOS + + DevServiceInfo.Loop_State[Service_Call] = 0x02; //رպ + DevServiceInfo.Loop_State[Service_22] = 0x02; //ӿط״̬ + + DevServiceInfo.Loop_State_Last[Service_Call] = 0x02; //رպ + DevServiceInfo.Loop_State_Last[Service_22] = 0x02; //ӿط״̬ + + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"һϢ˽ݳ:%d",sizeof(NOR_SERVICE_INFO)); + + /*RCUMCUλ״̬豸ʼ - + ־λ£ǿŹλλⲿֶλ֮ǰ״̬豸ʼ + Ĭ״̬ʼ(Ĭ״̬ͨRCU_POWER_Deivce_State_Init 궨 ޸Ĭϳʼ״̬) + */ + if( (DevActionGlobal.sram_save_flag == 0xA8) && ((SRAM_Read_DW(SRAM_LOG_RCU_Reboot_Reason) == 0x01) || (SRAM_Read_DW(SRAM_LOG_RCU_Reboot_Reason) == 0x03) || (SRAM_Read_DW(SRAM_LOG_RCU_Reboot_Reason) == 0x05)) ) + { + DevServiceInfo.Loop_State[Service_Ele] = DevActionGlobal.Last_EleState; + DevServiceInfo.Loop_State_Last[Service_Ele] = DevActionGlobal.Last_EleState; + }else { + +#if RCU_POWER_Deivce_State_Init + DevServiceInfo.Loop_State[Service_Ele] = 0x01; //ĬϿס - + DevServiceInfo.Loop_State_Last[Service_Ele] = 0x01; //ĬϿס - +#else + DevServiceInfo.Loop_State[Service_Ele] = 0x02; //ĬϿס - + DevServiceInfo.Loop_State_Last[Service_Ele] = 0x02; //ĬϿס - +#endif + } + + SRAM_Write_Byte(DevServiceInfo.Loop_State[Service_Ele],SRAM_UDP_ELEReport_EleState); //UDP ϱȡ״̬ʹ + SRAM_Write_Byte(DevServiceInfo.Loop_State[Service_Ele],SRAM_UDP_ELEReport_EleState_Last); //UDP ϱȡ״̬ʹ + + DevServiceInfo.is_first_power_on = 0x00; //ϵĬ ״ȡ־λ + + Add_Nor_Device_To_List(&BUS_Public,(uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO)); + +} + +/******************************************************************************* +* Function Name : Service_Loop_State +* Description : ȡϢĻ·״̬ +*******************************************************************************/ +uint16_t Service_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop) +{ + NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ + + if(devaddr == 0x00) return 0x00; + + SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),devaddr+Dev_Privately); + + if(DevOutputLoop >= DevServiceInfo.ServiceLoopValidNum) + { + return 0x00; + } + + return DevServiceInfo.Loop_State[DevOutputLoop]; +} + +/******************************************************************************* +* Function Name : BLW_Service_Control_State +* Description : BLWϢ״̬ƺ +* Input : + devaddr : 豸Ϣַ + loop · ·Ǵ0 + start ״̬ 0x01 0x02 0x04״α־λ 0x04 +* Return : +* attention : temp10Żб +*******************************************************************************/ +void BLW_Service_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t DevOutputLoop,uint16_t start) +{ +// uint16_t DataLen = 0; + uint8_t temp1 = 0; //crc_val = 0, + Device_Public_Information_G BUS_Public; // + NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ + + if(devaddr == 0x00) return; + + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); + SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),devaddr+Dev_Privately); + + if(DevOutputLoop >= DevServiceInfo.ServiceLoopValidNum) + { + return ; + } + + switch(start) + { + case 0x01: + case 0x02: + if( DevServiceInfo.Loop_State[DevOutputLoop] != start ) + { + if((DevOutputLoop == Service_16) && (start == 0x01)) // + { + if(0x01 == DevActionGlobal.DevActionU64Cond.NeightFlag) //ҹƴ + { + if(NightModeStart != DevActionGlobal.DevActionU64Cond.NeightState) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ƣг˯ߣҹ"); //г + DevActionGlobal.DevActionU64Cond.NeightState = NightModeStart; //ҹ + } + } + } + + if((DevOutputLoop == Service_Dnd)&& (start == 0x01)) //2023-10-31 ŷ + { + DevServiceInfo.Loop_State[DevOutputLoop+1] = 0x02; + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"SERVICE loop:%d,start:%d",(DevOutputLoop+1),0x02); + } + else if((DevOutputLoop == Service_Clean)&& (start == 0x01)) + { + DevServiceInfo.Loop_State[DevOutputLoop-1] = 0x02; + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"SERVICE loop:%d,start:%d",(DevOutputLoop-1),0x02); + } + else if((DevOutputLoop == Service_24) && (start == 0x01)) //2023-12-05 -- ʵ㣺ΪɶϢ24Ϣ14 + { + DevServiceInfo.Loop_State[Service_Warning] = 0x02; + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"SERVICE "); + } + else if((DevOutputLoop == Service_24) && (start == 0x02)) //2023-12-05 + { + DevServiceInfo.Loop_State[Service_Warning] = 0x01; + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"SERVICE "); + } + else if((DevOutputLoop == Service_Ele)&& (start == 0x01)) //2024-04-29 + { + DevActionGlobal.CardInFlag = 0x01; + } + + if(DevOutputLoop == Service_Ele){ + /*ȡϢ - ־¼ 2025-02-19*/ + + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"SERVICE loop:%d,start:%d\r\n",DevOutputLoop,start); + LOG_LogicInfo_DebugRecord("DevService:loop:%d,start:%d",DevOutputLoop,start); + } + + DevServiceInfo.Loop_State[DevOutputLoop] = start;//ǰ0 + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"SERVICE loop:%d,start:%d",DevOutputLoop,start); + temp1++; + } + break; + case 0x03: //״ȡ־λ λ Ŀǰֻȡ + if( (DevOutputLoop == Service_Ele) && (DevServiceInfo.is_first_power_on == 0x00) ) + { + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"Service_Ele Set first_power_on"); + DevServiceInfo.is_first_power_on = 0x01; + temp1++; + } + break; + case 0x04: //ȡ + /* + 1ǰ״ȡ־λڣ㴥״ȡ¼ + 2ǰ״ȡ־λڣ޸ȡ״̬ȡ¼Ҵȡ硱¼ + */ + + if( (DevOutputLoop == Service_Ele) && (DevServiceInfo.is_first_power_on == 0x01) ) + { + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"ȡ ״ȡ"); + DevActionGlobal.CardInFlag = 0x01; + DevServiceInfo.Loop_State[DevOutputLoop] = 0x01; + temp1++; + }else if( DevOutputLoop == Service_Ele ){ + Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"ȡ ״ȡ"); + DevActionGlobal.CardInFlag = 0x01; + DevServiceInfo.Loop_State[DevOutputLoop] = 0x01; + DevServiceInfo.Loop_State_Last[DevOutputLoop] = 0x01; + DevServiceInfo.DevChangeFlag[DevOutputLoop] = 0x04; //ȡ¼ + temp1++; + } + + break; + } + + if(temp1 != 0x00) + { + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO)); + } +} + +/******************************************************************************* +* Function Name : Dev_Service_InType_Get +* Description : Ϣ⺯ +* Input : + devaddr : 豸ַ + DevInputLoop ·ַ Χ0~ServiceLoopValidNum + DevInputType +* Return : +*******************************************************************************/ +uint8_t Dev_Service_InType_Get(uint32_t DevAddr, uint16_t DevInputLoop, uint16_t DevInputType) +{ + Device_Public_Information_G BUS_Public; // + NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ + uint8_t Ret = CtrlInvalid; //Ч + + BLV_Device_PublicInfo_Read_To_Struct(DevAddr,&BUS_Public); + SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),DevAddr+Dev_Privately); /*豸˽Ϣ*/ + + if(DevInputLoop >= DevServiceInfo.ServiceLoopValidNum) + { + return Ret; + } + + if(DevInputType == DevServiceInfo.DevChangeFlag[DevInputLoop]) //ͶԵ 1 2 + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Ϣ %d - %d ",DevInputLoop,DevInputType); + + DevServiceInfo.DevChangeFlag[DevInputLoop] = 0x00; //ǰ0 + Ret = CtrlValid; + } + + if(CtrlValid == Ret) + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Ϣ"); + + BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_Public,(uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO)); + } + + return Ret; +} + +/*ͬ*/ +void Dev_Action_CondService_Get(NOR_SERVICE_INFO *DevServiceInfo) +{ + DevActionGlobal.DevActionU64Cond.EleState = DevServiceInfo->Loop_State[Service_Ele]; + DevActionGlobal.DevActionU64Cond.DndState = DevServiceInfo->Loop_State[Service_Dnd]; + DevActionGlobal.DevActionU64Cond.CleanState = DevServiceInfo->Loop_State[Service_Clean]; + DevActionGlobal.DevActionU64Cond.CallState = DevServiceInfo->Loop_State[Service_Call]; + DevActionGlobal.DevActionU64Cond.WashState = DevServiceInfo->Loop_State[Service_Wash]; + DevActionGlobal.DevActionU64Cond.CheckOutState = DevServiceInfo->Loop_State[Service_CheckOut]; + DevActionGlobal.DevActionU64Cond.WaitState = DevServiceInfo->Loop_State[Service_Wait]; + DevActionGlobal.DevActionU64Cond.SosState = DevServiceInfo->Loop_State[Service_Sos]; + DevActionGlobal.DevActionU64Cond.RentState = DevServiceInfo->Loop_State[Service_Meals]; + DevActionGlobal.DevActionU64Cond.LockState = DevServiceInfo->Loop_State[Service_Food_Plate]; + DevActionGlobal.DevActionU64Cond.LuggageState = DevServiceInfo->Loop_State[Service_Luggage]; + DevActionGlobal.DevActionU64Cond.StrongState = DevServiceInfo->Loop_State[Service_Strong]; + DevActionGlobal.DevActionU64Cond.DoorState = DevServiceInfo->Loop_State[Service_Door]; + DevActionGlobal.DevActionU64Cond.WarningState = DevServiceInfo->Loop_State[Service_Warning]; + DevActionGlobal.Service_16 = DevServiceInfo->Loop_State[Service_16]; + + SRAM_Write_Byte(DevActionGlobal.DevActionU64Cond.EleState,SRAM_UDP_ELEReport_EleState); //UDP ϱȡ״̬ʹ +} + +/******************************************************************************* +* Function Name : Dev_Service_Dis +* Description : Ϣɨ躯 õϢ״̬תΪ +* Input : + devaddr : 豸ַ +* Return : +*******************************************************************************/ +void Dev_Service_Dis(uint32_t DevAddr) +{ + Device_Public_Information_G BUS_Public; // + NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ + uint8_t KeepFlag = 0x00; + + if(DevAddr == 0x00) return ; + + BLV_Device_PublicInfo_Read_To_Struct(DevAddr,&BUS_Public); + SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),DevAddr+Dev_Privately); + + if( DevActionGlobal.SleepMode_State != 0x01 ) //2024-10-21 ҹرҹƿ⣬ͬʱ16ŷͣ + { + DevServiceInfo.Loop_State[Service_16] = 0x02; + KeepFlag = 0x01; + } + + for(uint16_t i = 0; i < DevServiceInfo.ServiceLoopValidNum; i++) + { + if(DevServiceInfo.Loop_State_Last[i] != DevServiceInfo.Loop_State[i]) + { + KeepFlag = 0x01; + DevServiceInfo.Loop_State_Last[i] = DevServiceInfo.Loop_State[i]; + + if( (i == Service_Ele) && ( DevServiceInfo.Loop_State[i] == 0x01 ) && (DevServiceInfo.is_first_power_on == 0x01) ) + { + DevServiceInfo.is_first_power_on = 0x00; + DevServiceInfo.DevChangeFlag[i] = 0x03; //״ȡ¼ + }else { + DevServiceInfo.DevChangeFlag[i] = DevServiceInfo.Loop_State[i]; + } + + Udp_Addtion_Roomstate(Dev_Host_Service,0x00, i+1, DevServiceInfo.Loop_State[i]); //ϱϢ + + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"׼ͬϢ״̬·:%d ״̬:%d", i, DevServiceInfo.DevChangeFlag[i]); + } + } + + if(0x01 == KeepFlag) + { + Dev_Action_CondService_Get(&DevServiceInfo); //Ϣб仯״̬ͬ + + BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_Public,(uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO)); + } +} + +/******************************************************************************* +* Function Name : ServiceInfo_Set_first_power_on +* Description : Ϣ - ״ȡ־λ +* Input : + state : ״ȡ״̬ +* Return : +*******************************************************************************/ +uint8_t ServiceInfo_Set_first_power_on(uint8_t state) +{ + uint32_t dev_addr = Find_AllDevice_List_Information(Dev_Host_Service,0x00); + Device_Public_Information_G BUS_Public; // + NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ + + if(dev_addr == 0x00) return 0x01; //δҵ豸 + + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); + SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),dev_addr+Dev_Privately); + + if(DevServiceInfo.is_first_power_on != state) + { + DevServiceInfo.is_first_power_on = state; + + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO)); + } + + return 0x00; +} + +/******************************************************************************* +* Function Name : ServiceInfo_Get_ALL_Loop_State +* Description : Ϣ - ȡȫ·Ŀ״̬ +* Input : + read_buff : ȡ״̬ŵ +* Return : +*******************************************************************************/ +uint8_t ServiceInfo_Get_ALL_Loop_State(uint8_t *read_buff) +{ + uint32_t dev_addr = Find_AllDevice_List_Information(Dev_Host_Service,0x00); + Device_Public_Information_G BUS_Public; // + NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ + uint8_t loop_offset = 0; + uint8_t loop_ide = 0; + + if(dev_addr == 0x00) return 0x01; //δҵ豸 + + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); + SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),dev_addr+Dev_Privately); + + if( DevServiceInfo.ServiceLoopValidNum >= ServiceNumMAX ) DevServiceInfo.ServiceLoopValidNum = ServiceNumMAX; + + for(uint8_t i=0;i= DevLVinputInfo.LVinputValidNum) @@ -85,11 +85,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Dev_LVinput_InType_Get(uint32_t if(CtrlValid == Ret) { Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s %d: %d ",__func__,DevInputLoop, DevInputType); - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&DevLVinputInfo, sizeof(NOR_LVINPUT_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&DevLVinputInfo,sizeof(NOR_LVINPUT_INFO),DevAddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_Public,(uint8_t *)&DevLVinputInfo,sizeof(NOR_LVINPUT_INFO)); } return Ret; @@ -113,7 +109,7 @@ __attribute__((section(".non_0_wait"))) void Dev_LVinput_Dis(uint32_t DevAddr) { return ; } - SRAM_DMA_Read_Buff((uint8_t *)&BUS_PublicLVinput,sizeof(Device_Public_Information_G),DevAddr); //й + BLV_Device_PublicInfo_Read_To_Struct(DevAddr,&BUS_PublicLVinput); SRAM_DMA_Read_Buff((uint8_t *)&DevLVinputInfo,sizeof(NOR_LVINPUT_INFO),DevAddr+Dev_Privately); if( (0x00000000 == DevLVinputInfo.DevC5IOAddr) || (0xFFFFFFFF == DevAddr) ) @@ -121,7 +117,7 @@ __attribute__((section(".non_0_wait"))) void Dev_LVinput_Dis(uint32_t DevAddr) return ; } - SRAM_DMA_Read_Buff((uint8_t *)&BUS_PublicC5IO,sizeof(Device_Public_Information_G),DevLVinputInfo.DevC5IOAddr); //й + BLV_Device_PublicInfo_Read_To_Struct(DevLVinputInfo.DevC5IOAddr,&BUS_PublicC5IO); SRAM_DMA_Read_Buff((uint8_t *)&C5IO_Info,sizeof(BUS_C5IO_INFO),DevLVinputInfo.DevC5IOAddr+Dev_Privately); for(uint8_t i = 0;i= Rs485LED.LEDLoopValidNum) //Ч· @@ -216,10 +216,7 @@ __attribute__((section(".non_0_wait"))) void BLW_LED_Control_State(uint32_t CfgD { Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"DevSendBuf loop:%d,start:%d",loop,start); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485LED, sizeof(RS485_LED_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485LED,sizeof(RS485_LED_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&Rs485LED,sizeof(RS485_LED_INFO)); } } @@ -292,7 +289,7 @@ __attribute__((section(".non_0_wait"))) void BLW_LED_Group_Ctrl(uint32_t CfgDevA // Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"LED״̬Ⱥؿƿʼǰ·־%04X ·%d ", CtrlFlag, CtrlNum); - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485LEDInfo,sizeof(RS485_LED_INFO),devaddr+Dev_Privately); if(CtrlNum >= Rs485LEDInfo.LEDLoopValidNum) @@ -426,10 +423,7 @@ __attribute__((section(".non_0_wait"))) void BLW_LED_Group_Ctrl(uint32_t CfgDevA } } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485LEDInfo, sizeof(RS485_LED_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485LEDInfo,sizeof(RS485_LED_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&Rs485LEDInfo,sizeof(RS485_LED_INFO)); } /******************************************************************************* @@ -455,7 +449,7 @@ __attribute__((section(".non_0_wait"))) uint16_t BLW_LED_Group_Read(uint32_t dev Device_Public_Information_G BUS_Public; RS485_LED_INFO Rs485LEDInfo; //̵ֲ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr); + BLV_Device_PublicInfo_Read_To_Struct(devaddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485LEDInfo,sizeof(RS485_LED_INFO),devaddr+Dev_Privately); if(ReadNum >= Rs485LEDInfo.LEDLoopValidNum) @@ -549,10 +543,7 @@ __attribute__((section(".non_0_wait"))) uint16_t BLW_LED_Group_Read(uint32_t dev if(tempflag!=0) { - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485LEDInfo, sizeof(RS485_LED_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485LEDInfo,sizeof(RS485_LED_INFO),devaddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(devaddr,&BUS_Public,(uint8_t *)&Rs485LEDInfo,sizeof(RS485_LED_INFO)); } return Ret; diff --git a/BLV_485_Driver/blv_rs485_dev_switchctrl.c b/BLV_485_Driver/blv_rs485_dev_switchctrl.c index fcf2850..d808282 100644 --- a/BLV_485_Driver/blv_rs485_dev_switchctrl.c +++ b/BLV_485_Driver/blv_rs485_dev_switchctrl.c @@ -133,7 +133,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Dev_Swi_InType_Get(uint32_t DevA RS485_SWI_INFO Rs485SwiInfo; //ؾֲ uint8_t Ret = CtrlInvalid; //Ч - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddr); //й + BLV_Device_PublicInfo_Read_To_Struct(DevAddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAddr+Dev_Privately);/*豸˽Ϣ*/ if(DevInputLoop >= RS_SWITCH_CH_MAX) @@ -164,10 +164,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Dev_Swi_InType_Get(uint32_t DevA Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"ضգ%d",Ret); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485SwiInfo, sizeof(RS485_SWI_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAddr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_Public,(uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO)); } return Ret; @@ -198,7 +195,7 @@ __attribute__((section(".non_0_wait"))) void Dev_Swi_Output_Ctrl(uint32_t CfgDev return ; } - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddr); //й + BLV_Device_PublicInfo_Read_To_Struct(DevAddr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAddr+Dev_Privately);/*豸˽Ϣ*/ if(DevOutputLoop >= Rs485SwiInfo.SwtOutputValidNum) @@ -254,10 +251,8 @@ __attribute__((section(".non_0_wait"))) void Dev_Swi_Output_Ctrl(uint32_t CfgDev { BLV_Active_Set_List_Addr(DevAddr); //Ψ豸ȴ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485SwiInfo, sizeof(RS485_SWI_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAddr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAddr+Dev_Privately); + + BLV_Device_Info_Write_To_SRAM(DevAddr,&BUS_Public,(uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO)); } // BLW_Touch_Switch_Feedback(DevAddr, DevOutputLoop, State); diff --git a/BLV_485_Driver/blv_rs485_dev_tempctrl.c b/BLV_485_Driver/blv_rs485_dev_tempctrl.c index 4c62817..778fe7e 100644 --- a/BLV_485_Driver/blv_rs485_dev_tempctrl.c +++ b/BLV_485_Driver/blv_rs485_dev_tempctrl.c @@ -160,7 +160,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Dev_TEMPCTRL_InType_Get(uint32_t return 0; //ͷ } - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),CfgDevAddIn); + BLV_Device_PublicInfo_Read_To_Struct(CfgDevAddIn,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO),CfgDevAddIn+Dev_Privately); Rs485Tem.TemCondCfg.IndoorFlag = DevInputType & 0x0001; @@ -303,10 +303,7 @@ __attribute__((section(".non_0_wait"))) uint8_t Dev_TEMPCTRL_InType_Get(uint32_t if(CtrlValid == Ret) { - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485Tem, sizeof(RS485_TEMP_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),CfgDevAddIn);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO),CfgDevAddIn+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(CfgDevAddIn,&BUS_Public,(uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO)); } return Ret; @@ -347,9 +344,9 @@ __attribute__((section(".non_0_wait"))) void Dev_TEMPCTRL_Ctrl(uint32_t CfgDevAd } /*豸˽Ϣ*/ SRAM_DMA_Read_Buff((uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO),CfgDevAddOut+Dev_Privately); - SRAM_DMA_Read_Buff((uint8_t *)&BUS_PublicIn,sizeof(Device_Public_Information_G),CfgDevAddIn); + BLV_Device_PublicInfo_Read_To_Struct(CfgDevAddIn,&BUS_PublicIn); SRAM_DMA_Read_Buff((uint8_t *)&Rs485TemIn,sizeof(RS485_TEMP_INFO),CfgDevAddIn+Dev_Privately); - SRAM_DMA_Read_Buff((uint8_t *)&BUS_PublicOut,sizeof(Device_Public_Information_G),CfgDevAddOut); + BLV_Device_PublicInfo_Read_To_Struct(CfgDevAddOut,&BUS_PublicOut); // Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"¿״̬ͬ485ַ:%d״̬:%4xƲ:%4x,״̬:%d",BUS_PublicOut.addr, TEMSTATECONVER(Rs485Tem.TemStateCtrl), DevOutputType, Rs485Tem.DevOffline); Dev_Temp_State_Sync(&Rs485TemLoc,&Rs485Tem.TemStateCtrl); @@ -601,10 +598,7 @@ __attribute__((section(".non_0_wait"))) void Dev_TEMPCTRL_Ctrl(uint32_t CfgDevAd if(0x01 == KeepFlag) { - BUS_PublicOut.check = 0x00; - BUS_PublicOut.check = DoubleData_CheckSum((uint8_t *)&BUS_PublicOut, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485Tem, sizeof(RS485_TEMP_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_PublicOut, sizeof(Device_Public_Information_G),CfgDevAddOut);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO),CfgDevAddOut+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(CfgDevAddIn,&BUS_PublicOut,(uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO)); } } @@ -667,7 +661,7 @@ __attribute__((section(".non_0_wait"))) uint8_t TemSingleJudge(uint32_t CfgDevAd Device_Public_Information_G BUS_Public; RS485_TEMP_INFO Rs485TempT1; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),CfgDevAdd); + BLV_Device_PublicInfo_Read_To_Struct(CfgDevAdd,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485TempT1,sizeof(RS485_TEMP_INFO),CfgDevAdd+Dev_Privately);/*豸˽Ϣ*/ if(Rs485TempT1.TemStateCtrlLast.on_off != Rs485TempT1.TemStateCtrl.on_off) //ػ @@ -799,10 +793,7 @@ __attribute__((section(".non_0_wait"))) uint8_t TemSingleJudge(uint32_t CfgDevAd Rs485TempT1.DevSendCnt++; //ʹۼ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485TempT1, sizeof(RS485_TEMP_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),CfgDevAdd);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485TempT1,sizeof(RS485_TEMP_INFO),CfgDevAdd+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(CfgDevAdd,&BUS_Public,(uint8_t *)&Rs485TempT1,sizeof(RS485_TEMP_INFO)); } return Ret; @@ -826,7 +817,7 @@ __attribute__((section(".non_0_wait"))) uint8_t TemGlobalJudge(uint32_t CfgDevAd Device_Public_Information_G BUS_Public; RS485_TEMP_INFO Rs485Tem; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),CfgDevAdd); + BLV_Device_PublicInfo_Read_To_Struct(CfgDevAdd,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO),CfgDevAdd+Dev_Privately);/*豸˽Ϣ*/ if(Dev_Temp_State_Data(Rs485Tem.TemStateCtrlLast) != Dev_Temp_State_Data(Rs485Tem.TemStateCtrl)) //״̬ı @@ -895,10 +886,7 @@ __attribute__((section(".non_0_wait"))) uint8_t TemGlobalJudge(uint32_t CfgDevAd Rs485Tem.DevSendCnt++; //ʹۼ } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485Tem, sizeof(RS485_TEMP_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),CfgDevAdd);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO),CfgDevAdd+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(CfgDevAdd,&BUS_Public,(uint8_t *)&Rs485Tem,sizeof(RS485_TEMP_INFO)); } return Ret; diff --git a/BLV_485_Driver/blv_rs485_dev_touchswitch.c b/BLV_485_Driver/blv_rs485_dev_touchswitch.c index c2ebcc6..9ac104b 100644 --- a/BLV_485_Driver/blv_rs485_dev_touchswitch.c +++ b/BLV_485_Driver/blv_rs485_dev_touchswitch.c @@ -63,7 +63,7 @@ __attribute__((section(".non_0_wait"))) void BlwRelaySwtRecAsk(uint8_t *data) Device_Public_Information_G BUS_Public; // NOR_HVOUT_INFO DevHVoutInfo; //̵ֲ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),device_addr); //й + BLV_Device_PublicInfo_Read_To_Struct(device_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO),device_addr+Dev_Privately); if(DevHVoutInfo.HVSwitchFlag==0x01) @@ -221,14 +221,14 @@ __attribute__((section(".non_0_wait"))) uint8_t BLW_Rs485_Touch_Swi_Check(uint32 if(data[0] == SRAM_Read_Byte(DevAdd+Dev_Addr)) //ַպƥBUS_Public.addr { Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"صַƥ DevAdd:%d,len:%d",data[0],DataLen); - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAdd); + BLV_Device_PublicInfo_Read_To_Struct(DevAdd,&BUS_Public); } else //ַûƥ { DevAdd = Find_AllDevice_List_Information2(Active_Port, 0x06, data[0]); //ַ¸ֵ if( (0x00000000 != DevAdd) || (0xFFFFFFFF != DevAdd) ) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAdd); + BLV_Device_PublicInfo_Read_To_Struct(DevAdd,&BUS_Public); }else{ return ret; } @@ -250,10 +250,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLW_Rs485_Touch_Swi_Check(uint32 /*־¼*/ LOG_Device_COMM_Control_Reply_Record(BUS_Public.port,BUS_Public.baud,data,DataLen); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485SwiInfo, sizeof(RS485_SWI_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAdd);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAdd+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(DevAdd,&BUS_Public,(uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO)); return ret; } @@ -333,7 +330,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLW_Touch_SwitchCycleDis(uint32_ uint8_t i; uint8_t Ret = RS485OCCUPYNOTIME; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAdd); + BLV_Device_PublicInfo_Read_To_Struct(DevAdd,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAdd+Dev_Privately);/*豸˽Ϣ*/ if(DevActionGlobal.DevActionU64Cond.EleState==0x01) @@ -385,10 +382,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLW_Touch_SwitchCycleDis(uint32_ /*ͨѶͳƼ¼*/ BLV_Communication_Record(&Rs485SwiInfo.comm_record,0x01,0x00); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485SwiInfo, sizeof(RS485_SWI_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAdd);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAdd+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(DevAdd,&BUS_Public,(uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO)); } return Ret; diff --git a/BLV_485_Driver/blv_rs485_dev_touchtempt1.c b/BLV_485_Driver/blv_rs485_dev_touchtempt1.c index 5759c66..80b9625 100644 --- a/BLV_485_Driver/blv_rs485_dev_touchtempt1.c +++ b/BLV_485_Driver/blv_rs485_dev_touchtempt1.c @@ -412,7 +412,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLWOut_Rs485_TempT1_Check(uint32 return rev; // } SRAM_DMA_Read_Buff(data,len,data_addr); //482 - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485TempT1,sizeof(RS485_TEMP_INFO),dev_addr+Dev_Privately); if(len < 6) return rev; @@ -490,10 +490,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLWOut_Rs485_TempT1_Check(uint32 break; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485TempT1, sizeof(RS485_TEMP_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&Rs485TempT1,sizeof(RS485_TEMP_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&Rs485TempT1,sizeof(RS485_TEMP_INFO)); } return rev; diff --git a/BLV_485_Driver/inc/blv_nor_dev_c5relay.h b/BLV_485_Driver/inc/blv_nor_dev_c5relay.h new file mode 100644 index 0000000..7411e9e --- /dev/null +++ b/BLV_485_Driver/inc/blv_nor_dev_c5relay.h @@ -0,0 +1,20 @@ +/* + * blv_nor_dev_c5relay.h + * + * Created on: Jan 5, 2026 + * Author: cc + */ + +#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEV_C5RELAY_H_ +#define BLV_485_DRIVER_INC_BLV_NOR_DEV_C5RELAY_H_ + +#include +#include "blv_rs485_protocol.h" +#include "logic_file_function.h" +#include "blv_nor_dev_hvoutfun.h" + +void BLW_RS485_C5RELAY_Data_Init(Device_Public_Information_G *BUS_Public, NOR_HVOUT_INFO *DevHVoutInfo); +uint8_t BLW_C5RELAYCycleCtrl(uint32_t dev_addr); +uint8_t BLW_Rs485_C5RELAY_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len); + +#endif /* BLV_485_DRIVER_INC_BLV_NOR_DEV_C5RELAY_H_ */ diff --git a/BLV_485_Driver/inc/blv_nor_dev_lvoutput.h b/BLV_485_Driver/inc/blv_nor_dev_lvoutput.h new file mode 100644 index 0000000..1078e5f --- /dev/null +++ b/BLV_485_Driver/inc/blv_nor_dev_lvoutput.h @@ -0,0 +1,32 @@ +/* + * blv_nor_dev_lvoutput.h + * + * Created on: Dec 31, 2025 + * Author: cc + */ + +#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEV_LVOUTPUT_H_ +#define BLV_485_DRIVER_INC_BLV_NOR_DEV_LVOUTPUT_H_ + +#define LVoutputNumMAX 32 //ǿ̵ +#define C1_LVOUTPUTNUMMAX 0x14 //C1Ϊ20· + +typedef struct +{ + + uint8_t DevLVoutputState[LVoutputNumMAX]; //ǰǿ̵״̬ 豸״̬仯־жϵǰǿ̵Ǵ򿪻ǹر + uint8_t DevLVoutputStateLast[LVoutputNumMAX]; //ǰǿ̵һ״̬ + + uint8_t LVoutputLoopValidNum; //ǿ̵Ч· + + uint8_t init_flag; //ʼ־λ + uint32_t DevC5IOAddr; //C5IOĵַ + +}NOR_LVOUTPUT_INFO; + +void BLV_Nor_Dev_LVoutput_Init(uint8_t devaddr); +uint16_t LVoutput_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop); +void BLW_LVoutput_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t DevOutputLoop,uint16_t DevOutputType); +void Dev_LVoutput_Dis(uint32_t DevAddr); + +#endif /* BLV_485_DRIVER_INC_BLV_NOR_DEV_LVOUTPUT_H_ */ diff --git a/BLV_485_Driver/inc/blv_nor_dev_serviceinfo.h b/BLV_485_Driver/inc/blv_nor_dev_serviceinfo.h index e7072b6..e29424f 100644 --- a/BLV_485_Driver/inc/blv_nor_dev_serviceinfo.h +++ b/BLV_485_Driver/inc/blv_nor_dev_serviceinfo.h @@ -90,13 +90,20 @@ typedef enum // typedef struct { uint8_t DevChangeFlag[ServiceNumMAX]; //豸仯־ 1 2ر ־Ҫ - uint8_t DevServiceState[ServiceNumMAX]; //ǰϢ״̬ 豸״̬仯־жϵǰϢǴ򿪻ǹر - uint8_t DevServiceStateLast[ServiceNumMAX]; //ǰϢһ״̬ + uint8_t Loop_State[ServiceNumMAX]; //ǰϢ״̬ 豸״̬仯־жϵǰϢǴ򿪻ǹر + uint8_t Loop_State_Last[ServiceNumMAX]; //ǰϢһ״̬ uint8_t ServiceLoopValidNum; //ϢЧ· uint8_t is_first_power_on; //״ȡ־λ }NOR_SERVICE_INFO; //ϢĽṹ - - +void BLV_Nor_Dev_Service_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len); +uint16_t Service_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop); +void BLW_Service_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t DevOutputLoop,uint16_t start); +uint8_t Dev_Service_InType_Get(uint32_t DevAddr, uint16_t DevInputLoop, uint16_t DevInputType); +void Dev_Action_CondService_Get(NOR_SERVICE_INFO *DevServiceInfo); +void Dev_Service_Dis(uint32_t DevAddr); +uint8_t ServiceInfo_Set_first_power_on(uint8_t state); +uint8_t ServiceInfo_Get_ALL_Loop_State(uint8_t *read_buff); +uint8_t ServiceInfo_Set_RoomState(uint8_t state); #endif /* BLV_485_DRIVER_INC_BLV_NOR_DEV_SERVICEINFO_H_ */ diff --git a/BLV_485_Driver/inc/blv_nor_dec_virtualcard.h b/BLV_485_Driver/inc/blv_nor_dev_virtualcard.h similarity index 96% rename from BLV_485_Driver/inc/blv_nor_dec_virtualcard.h rename to BLV_485_Driver/inc/blv_nor_dev_virtualcard.h index ca4c8b9..217a928 100644 --- a/BLV_485_Driver/inc/blv_nor_dec_virtualcard.h +++ b/BLV_485_Driver/inc/blv_nor_dev_virtualcard.h @@ -5,8 +5,12 @@ * Author: cc */ -#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEC_VIRTUALCARD_H_ -#define BLV_485_DRIVER_INC_BLV_NOR_DEC_VIRTUALCARD_H_ +#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEV_VIRTUALCARD_H_ +#define BLV_485_DRIVER_INC_BLV_NOR_DEV_VIRTUALCARD_H_ + +#include +#include "blv_rs485_protocol.h" +#include "logic_file_function.h" #define VC_CONDGROUP_MAX 10 //֧ #define VC_CONDSUB_MAX 10 //ÿ֧ @@ -47,8 +51,6 @@ #define VC_Event_BrieflyLeaving_Flag 0x40 //¼߼ж->Уж #define VC_Event_LongTermLeaving_Flag 0x80 //¼߼ж->Уʱж - - typedef struct { uint8_t HPort_Type; //ӳ˿ @@ -141,4 +143,4 @@ typedef struct void BLV_Nor_Dev_VirtualCard_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len); -#endif /* BLV_485_DRIVER_INC_BLV_NOR_DEC_VIRTUALCARD_H_ */ +#endif /* BLV_485_DRIVER_INC_BLV_NOR_DEV_VIRTUALCARD_H_ */ diff --git a/BLV_485_Driver/pc_devicetest_fun.c b/BLV_485_Driver/pc_devicetest_fun.c index ad6a5a9..db1aa90 100644 --- a/BLV_485_Driver/pc_devicetest_fun.c +++ b/BLV_485_Driver/pc_devicetest_fun.c @@ -54,7 +54,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_PC_DEVICE_TEST_Cycle_Call(ui Device_Public_Information_G BUS_Public; PC_TEST_DEVICE_INFO PC_Test_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); if((PC_Test_Info.test_flag == 0x01) || (PC_Test_Info.test_flag == 0x02) || (PC_Test_Info.test_flag == 0x11) || (PC_Test_Info.test_flag == 0x12)) //Խж @@ -66,11 +66,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_PC_DEVICE_TEST_Cycle_Call(ui Dbg_Println(DBG_OPT_DEVICE_STATUS,"PC Test - The Input Test END"); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&PC_Test_Info, sizeof(PC_TEST_DEVICE_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); - + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO)); } }else if((PC_Test_Info.test_flag == 0x03) || (PC_Test_Info.test_flag == 0x13)) //Ѳزԣرն˿1񣬿ʼʱ { @@ -103,10 +99,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_PC_DEVICE_TEST_Cycle_Call(ui g_pc_test.test_flag = PC_Test_Info.test_flag; Dbg_Println(DBG_OPT_DEVICE_STATUS,"PC Test TOUR DATAS END%d num:%d SUCC:%d",PC_Test_Info.test_flag,g_pc_test.tour_num,g_pc_test.tour_succ); - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&PC_Test_Info, sizeof(PC_TEST_DEVICE_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO)); }else { g_pc_test.tour_num++; @@ -267,10 +260,9 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_PC_DEVICE_TEST_Data_Processi Device_Public_Information_G BUS_Public; PC_TEST_DEVICE_INFO PC_Test_Info; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); + BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); - /*УѲ*/ if(BLV_PC_TEST_TOUR_DATACheck(data_addr,len) == 0x00) { @@ -518,10 +510,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_PC_DEVICE_TEST_Data_Processi default: break; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&PC_Test_Info, sizeof(PC_TEST_DEVICE_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO)); return 0; } diff --git a/MCU_Driver/blv_dev_action.c b/MCU_Driver/blv_dev_action.c index 6a2e8a0..3acbf6c 100644 --- a/MCU_Driver/blv_dev_action.c +++ b/MCU_Driver/blv_dev_action.c @@ -10,6 +10,209 @@ BLV_DevAction_Manage_G DevActionGlobal; // #define Action_Group_Ctrl_Num 30 //е Ⱥظ + +/******************************************************************************* +* Function Name : Add_DevAction_To_List +* Description : 豸Ϣӵ浽ⲿSRAM +* DevAction_Info ṹ +*******************************************************************************/ +__attribute__((section(".non_0_wait"))) void Add_DevAction_To_List(DEV_ACTION_INFO *DevAction_Info) +{ + uint32_t list_addr = SRAM_DevAction_List_Start_Addr + DevActionGlobal.DevActionNum*SRAM_DevAction_List_Size; //ȡ豸Ϣַ + + if(DevActionGlobal.DevActionNum >= SRAM_DevAction_List_Num) //豸Χͷ + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ӳΧ : %d", SRAM_DevAction_List_Num); + return ; + } + DevActionGlobal.DevActionNum++; + + 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); //д +} + +__attribute__((section(".non_0_wait"))) void Logic_Action_Output_DataGet(DEV_ACTION_INFO *DevAction_Info, uint8_t *DevCtrlBuf) +{ + uint8_t i = 0; + uint8_t NeightLight = 0x00; + + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:%d", DevAction_Info->DevCtrlNum); + + for(i = 0; i < DevAction_Info->DevCtrlNum; i++) + { + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType = DevCtrlBuf[i*DEVACTIONOUTCFGLEN]; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevAddr = DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 1]; + + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop = DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 3]; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop |= DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 2]; + + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState = DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 5]; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState <<= 8; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState |= DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 4]; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont = DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 6]; + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight = DevCtrlBuf[i*DEVACTIONOUTCFGLEN + 7]; + + if(DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Host_Invalid) //ͲΪ + { + if(DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop != 0x00) //һ·Ϊ0 + { + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevOutputLoop--; + } + } + + if( ( (DEV_CTRLWAY_RELATESCENE == (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0x00ff)) //ӦĿǰ غʹ + ||(CFG_Dev_CtrlWay_Is_RelateBlink == (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0x00ff))) //Ӧ˸ Ŀǰ + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != DEV_RS485_HEATER) + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != DEV_Virtual_ColorTemp) + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != Dev_485_BLE_Music) + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != DEV_Carbon_Saved) + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Scene_Restore) + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Energy_Monitor) + && (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Host_Service) ) //ҶͲǵů + { + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState &= 0x00ff; //ֽ0 + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState |= 0x6400; //ֽڸֵ + } + + if(DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont == 0x00) + { + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont = 0x00; //ݺ͵λ0 + DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayWeight = 0x00; //ݺ͵λ0 + } + + Dbg_Print_Buff(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:",&DevCtrlBuf[i*DEVACTIONOUTCFGLEN], DEVACTIONOUTCFGLEN); + + Logic_Device_Action_Data_Analysis(&DevCtrlBuf[i*DEVACTIONOUTCFGLEN]); // + + if( (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00ff) == DEV_CTRLWAY_OPEN ) + { + switch(DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType) //ǰ豸 + { + case Dev_Host_HVout: + 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: + NeightLight = 0x01; + break; + } + } + + if( (DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0x00ff) == 0x12 ) //ֻ + { + switch(DevAction_Info->DevActionOutput[i].DevActionOutCfg.DevType) //ǰ豸 + { + case Dev_Rs485_PB20: + case Dev_Rs485_PB20_LD: + case Dev_Rs485_PB20_LS: + NeightLight = 0x01; + break; + } + } + } + + if( (ACTION_SCENE_SLEEP == DevAction_Info->DevActionCond.SceneExcute) && (0x01 == NeightLight) ) // + { + DevActionGlobal.DevActionU64Cond.NeightFlag = 0x01; //ҹ Ϊ1 + } + +} + +/******************************************************************************* +* Function Name : BLV_DevAction_Add +* Description : 豸1 ĽṹȻ󱣴浽ⲿSRAM +* data +* len +*******************************************************************************/ +__attribute__((section(".non_0_wait"))) void Logic_DevAction_Add(uint8_t *data,uint16_t len) +{ + DEV_ACTION_INFO DevAction_Info; + + memset(&DevAction_Info,0,sizeof(DEV_ACTION_INFO)); //ȫ + + memcpy((uint8_t *)&DevAction_Info.DevActionCore.ActionNo, &data[81], 2); // + memcpy((uint8_t *)&DevAction_Info.DevActionCore.DevActionName, &data[49], 32); // + + 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.inAddr--; //ת + } + DevAction_Info.DevActionInput.inType = 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); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:̬ RoomState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.RoomState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ȡ EleCtrlFlag: %d", DevAction_Info.DevActionCond.DevActionU64Cond.EleCtrlFlag); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ȡ״̬ EleState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.EleState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ DndState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.DndState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ CleanState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.CleanState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ CallState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.CallState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ϴ״̬ WashState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.WashState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:˷״̬ CheckOutState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.CheckOutState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:Ժ״̬ WaitState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.WaitState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:SOS״̬ SosState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.SosState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ԤԼ״̬ RentState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.RentState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ LockState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.LockState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ LuggageState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.LuggageState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ StrongState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.StrongState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:Ŵ״̬ DoorState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.DoorState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ʾ״̬ WarningState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.WarningState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:״̬ BacklightState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.BacklightState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ: SeasonState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.SeasonState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ʱ TimeState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.TimeState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ҹй NeightFlag: %d", DevAction_Info.DevActionCond.DevActionU64Cond.NeightFlag); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:ҹ״̬ NeightState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.NeightState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:RCU RcuLockState: %d", DevAction_Info.DevActionCond.DevActionU64Cond.RcuLockState); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ:2λ Reserve1: %d", DevAction_Info.DevActionCond.DevActionU64Cond.Reserve1); + + DevAction_Info.DevActionCond.SceneExcute = data[48]; //ִзʽ + if((ACTION_SCENE_SLEEP == DevAction_Info.DevActionCond.SceneExcute) && (0x00 == DevActionGlobal.SleepActionNo)) //ִзʽΪ˯ģʽ δ˯߱ + { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"˯߶:%d", DevAction_Info.DevActionCore.ActionNo); + DevActionGlobal.SleepActionNo = DevAction_Info.DevActionCore.ActionNo; //˯߳ + } + + if(data[115] > DevCtrlNumMax) + { + DevAction_Info.DevCtrlNum = DevCtrlNumMax; // + }else{ + DevAction_Info.DevCtrlNum = data[115]; // + } + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:%d豸:%d豸ַ:%d,豸洢ַ:%x,豸¼:%X ִзʽ:%d", \ + DevAction_Info.DevCtrlNum, \ + DevAction_Info.DevActionInput.DevType, \ + DevAction_Info.DevActionInput.DevAddr, \ + 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); + +} + /******************************************************************************* * Function Name : Expand_And_Dimm_Action_Get * Description : ɨ趯еļ̵͵ĶӵȺ @@ -250,7 +453,7 @@ __attribute__((section(".non_0_wait"))) uint8_t BLV_DevAction_Cond_Judge(DEV_ACT __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *DevActionInfo) { uint8_t i = 0x00,j = 0x00; - uint32_t DevAddrOut = 0x00; //豸ֲַ + //uint32_t DevAddrOut = 0x00; //豸ֲַ uint8_t DevCtrlWay = 0x00; //ִзʽ uint8_t DevCtrlCont = 0x00; //ִ uint8_t SceneState = DEV_STATE_OPEN; @@ -280,7 +483,7 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D { if(expand_type[j].ExpandReadFlag != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr); //й + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); 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)) @@ -302,7 +505,7 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D { if(0x00!=dimm_type[j].DimmReadFlag) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr); //й + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); 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)) @@ -335,13 +538,13 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D 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); //ȡ豸Ϣ + 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; @@ -352,13 +555,13 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D 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); + 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; @@ -371,7 +574,7 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D case DEV_RS485_CURTAIN: //RS485豸 - if(DevActionInfo->DevActionCond.SceneExcute != ACTION_SCENE_SLEEP) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + 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; @@ -381,14 +584,14 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D || (DevCtrlWay == 0x15) \ || (DevCtrlWay == 0x16) ) { - 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; } }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) + if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != DEV_CTRLWAY_STOP) { SceneState = DEV_STATE_CLOSE; break; @@ -399,7 +602,7 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D break; #if Dev_Nor_ColorTemp case Dev_Nor_ColorTemp: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + 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; @@ -408,14 +611,14 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D if(DevCtrlWay == DEV_CTRLWAY_OPEN) { DevCtrlCont |= 0x80; - 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; } }else if(DevCtrlWay == DEV_CTRLWAY_CLOSE) { - if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != (DevCtrlCont & 0x80) ) + if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop) != (DevCtrlCont & 0x80) ) { SceneState = DEV_STATE_CLOSE; break; @@ -427,7 +630,7 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D 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); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00) { DEV_MUSIC_CTRLSTATE DevMusicCtrlState; @@ -438,7 +641,7 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D 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)) + if(DevCtrlWay != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop)) { SceneState = DEV_STATE_CLOSE; break; @@ -450,14 +653,14 @@ __attribute__((section(".non_0_wait"))) void Expand_State_Get(DEV_ACTION_INFO *D break; #if Dev_Nor_Carbon_Flag case DEV_Carbon_Saved: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); //й + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); if(NULL != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get) //ǿ { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; //ֽ DevCtrlCont = ((DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)>>8)&0x00ff; //ֽ if(0x01 == DevCtrlWay) //ҿƽ״̬ ͹ { - if(DevCtrlCont != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevAddrOut, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop)) + if(DevCtrlCont != BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get(DevActionInfo->DevActionOutput[i].DevActionOutAddr, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevOutputLoop)) { SceneState = DEV_STATE_CLOSE; //ֻҪһ״̬ ʱ״̬Ϊ break; //switchѭ @@ -508,7 +711,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De switch(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType) { case Dev_Host_HVout: //̵ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&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) @@ -520,7 +723,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De break; #if RS485_LED_Flag case DEV_RS485_PWM: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&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) @@ -543,7 +746,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; @@ -561,7 +764,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: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 ) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState & 0x00ff); @@ -572,7 +775,7 @@ __attribute__((section(".non_0_wait"))) void Sleep_State_Get(DEV_ACTION_INFO *De } break; case DEV_Virtual_ColorTemp: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; @@ -634,7 +837,7 @@ __attribute__((section(".non_0_wait"))) void MainSwitch_Expand_State_Get(DEV_ACT { if(expand_type[j].ExpandReadFlag != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); 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) @@ -656,7 +859,7 @@ __attribute__((section(".non_0_wait"))) void MainSwitch_Expand_State_Get(DEV_ACT { if( dimm_type[j].DimmReadFlag != 0x00 ) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); 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 ) @@ -686,7 +889,7 @@ __attribute__((section(".non_0_wait"))) void MainSwitch_Expand_State_Get(DEV_ACT 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 ) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; @@ -703,7 +906,7 @@ __attribute__((section(".non_0_wait"))) void MainSwitch_Expand_State_Get(DEV_ACT } break; case Dev_Scene_Restore: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get != 0x00 ) { DevCtrlWay = (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState)&0x00ff; @@ -965,11 +1168,51 @@ __attribute__((section(".non_0_wait"))) uint8_t DevAddrCtr(DEV_ACTION_INFO *DevA memset((uint8_t *)&DevActionOutput, 0x00, sizeof(Dev_Action_Output)); + Dbg_Print_Buff(DBG_BIT_LOGIC_STATUS_bit,"DevAddrCtr : ",p,DataLen); + switch(DataLen) { case DevCtrlLen: case DevCtrlDlyLenAddr: - memcpy((uint8_t *)&DevActionOutput, p, DataLen); + + if(DataLen >= 6){ + DevActionOutput.DevActionOutCfg.DevType = p[0]; + DevActionOutput.DevActionOutCfg.DevAddr = p[1]; + DevActionOutput.DevActionOutCfg.DevOutputLoop = p[3]; + DevActionOutput.DevActionOutCfg.DevOutputLoop <<= 8; + DevActionOutput.DevActionOutCfg.DevOutputLoop |= p[2]; + + DevActionOutput.DevActionOutCfg.DevCtrlState = p[5]; + DevActionOutput.DevActionOutCfg.DevCtrlState <<= 8; + DevActionOutput.DevActionOutCfg.DevCtrlState |= p[4]; + + if(DataLen >= 8) + { + DevActionOutput.DevActionOutCfg.DevDlyValue.DelayCont = p[6]; + DevActionOutput.DevActionOutCfg.DevDlyValue.DelayWeight = p[7]; + + if(DataLen == 0x10) + { + DevActionOutput.DevActionOutAddr = p[11]; + DevActionOutput.DevActionOutAddr <<= 8; + DevActionOutput.DevActionOutAddr |= p[10]; + DevActionOutput.DevActionOutAddr <<= 8; + DevActionOutput.DevActionOutAddr |= p[9]; + DevActionOutput.DevActionOutAddr <<= 8; + DevActionOutput.DevActionOutAddr |= p[8]; + + DevActionOutput.DevDlyAddr = p[15]; + DevActionOutput.DevDlyAddr <<= 8; + DevActionOutput.DevDlyAddr |= p[14]; + DevActionOutput.DevDlyAddr <<= 8; + DevActionOutput.DevDlyAddr |= p[13]; + DevActionOutput.DevDlyAddr <<= 8; + DevActionOutput.DevDlyAddr |= p[12]; + + } + } + } + break; default: return Ret; @@ -978,6 +1221,7 @@ __attribute__((section(".non_0_wait"))) uint8_t DevAddrCtr(DEV_ACTION_INFO *DevA { case DevCtrlLen: //6ֽ ҪԼ豸 DevAddrOut = Find_AllDevice_List_Information(DevActionOutput.DevActionOutCfg.DevType, DevActionOutput.DevActionOutCfg.DevAddr); + break; case DevCtrlDlyLenAddr: //ʱַƣʱ豸ַ DevAddrOut = DevActionOutput.DevActionOutAddr; @@ -997,8 +1241,8 @@ __attribute__((section(".non_0_wait"))) uint8_t DevAddrCtr(DEV_ACTION_INFO *DevA DevActionOutput.DevActionOutCfg.DevCtrlState, DevActionOutput.DevActionOutCfg.DevDlyValue, 0x00); - - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸Ƶַ%x",DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); switch(DevActionOutput.DevActionOutCfg.DevType) { case DEV_RS485_SWT: @@ -1183,7 +1427,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF { if( expand_type[j].ExpandReadFlag != 0x00 ) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != 0x00 ) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1213,7 +1457,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF { if( dimm_type[j].DimmReadFlag != 0x00 ) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != 0x00 ) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1276,7 +1520,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( (DevActionInfo != NULL) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1307,7 +1551,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { @@ -1337,7 +1581,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandCtrl(DEV_ACTION_INF } break; case DEV_RS485_MUSIC: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( ( DevActionInfo != NULL ) @@ -1426,7 +1670,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO { if( expand_type[j].ExpandReadFlag != 0x00 ) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL ) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1456,7 +1700,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO { if( dimm_type[j].DimmReadFlag != 0x00 ) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1497,7 +1741,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: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1528,7 +1772,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightOpen(DEV_ACTIO 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1618,7 +1862,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI { if(expand_type[j].ExpandReadFlag != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1646,7 +1890,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI { if(dimm_type[j].DimmReadFlag != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1693,7 +1937,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandLightClose(DEV_ACTI 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1724,7 +1968,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: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1801,7 +2045,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN { if(expand_type[j].ExpandReadFlag != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1830,7 +2074,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN { if(dimm_type[j].DimmReadFlag != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl != NULL) { BUS_Public.DevFunInfo.Dev_Output_Group_Ctrl( @@ -1877,7 +2121,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN 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); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { if( (DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00) ) @@ -1908,7 +2152,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: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) //ǿ { if((DevActionInfo != 0x00) && (DevActionInfo->DevActionState.DevAddrIn != 0x00)) // @@ -1937,7 +2181,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN } break; case Dev_NodeCurtain: //ȡΪͣ ȡΪͣ ͣȡΪ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); //й + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { switch(ModeCtrl) @@ -1980,7 +2224,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN } break; case DEV_RS485_CURTAIN: - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if( BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL ) { switch(ModeCtrl) @@ -2017,7 +2261,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandClose(DEV_ACTION_IN } break; case Dev_Host_Service: //˯߿ƷϢ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); if(BUS_Public.DevFunInfo.Dev_Output_Ctrl != NULL) { switch(ModeCtrl) @@ -2089,7 +2333,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ExpandDlyClear(DEV_ACTION { if(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevType != Dev_Host_Invalid) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAddrOut); + BLV_Device_PublicInfo_Read_To_Struct(DevAddrOut,&BUS_Public); } if( (DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevDlyValue.DelayCont != 0x00) && (DevActionInfo->DevActionOutput[i].DevDlyAddr != 0x00) ) @@ -2567,7 +2811,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_IndicateCtrl(DEV_ACTION_I { 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); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ƿ˳ʱִ,豸: %d ַ:%d·:%d״̬:%d", BUS_Public.type, @@ -2600,7 +2844,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_IndicateCtrl(DEV_ACTION_I switch(DevActionInfo->DevActionState.SceneState) { case DEV_STATE_OPEN: //˸ Ӧȿָʾ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"˸,״̬:%04X",CFG_Dev_CtrlWay_Is_TOGGLE |(DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevCtrlState&0xff00)); DevDly_InfoSet( DevActionInfo->DevActionOutput[i].DevDlyAddr, @@ -2643,7 +2887,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_IndicateCtrl(DEV_ACTION_I case DEV_CTRLWAY_OPEN: // case DEV_CTRLWAY_CLOSE: // case DEV_CTRLWAY_STOP: //ͣ - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevActionInfo->DevActionOutput[i].DevActionOutAddr); + BLV_Device_PublicInfo_Read_To_Struct(DevActionInfo->DevActionOutput[i].DevActionOutAddr,&BUS_Public); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ƿ˳ʱִ,豸: %d ַ:%d·:%d״̬:%d", BUS_Public.type, DevActionInfo->DevActionOutput[i].DevActionOutCfg.DevAddr, @@ -2684,6 +2928,8 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr uint16_t j = 0x00; //ڱ uint8_t BreakFlag = 0x00; //ѭ־ 豸ִ + //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s",__func__ ); + for(j = BUS_Public->ActionCoord; j < DevActionGlobal.DevActionNum; j++) //ΪɶҪѭ - ʵ { DevActionAddr = SRAM_DevAction_List_Start_Addr + j*SRAM_DevAction_List_Size; @@ -2695,8 +2941,10 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Cycle(uint32_t Dev_pr if( Data_CheckSum((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO)) != 0x00 ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%d"); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уδͨ:%x",DevActionAddr); continue; + }else { + //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Уͨ:%x 봥ڵ:%x",DevActionAddr,Dev_processing_addr); } RcuLockState_Scan(); @@ -2869,6 +3117,8 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Task(void) { Dev_processing_addr = SRAM_Device_List_Start_Addr + DevActionGlobal.Devi*SRAM_Device_List_Size; + //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s:%x %d %d",__func__,Dev_processing_addr,DevActionGlobal.Devi,DevActionGlobal.DevNum); + switch(SRAM_Read_Byte(Dev_processing_addr+Dev_Type)) { case Dev_Host_LVinput: //豸 - @@ -2885,8 +3135,14 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_Task(void) case DEV_Carbon_Saved: //豸 - ̼ case Dev_Scene_Restore: //豸 - ԭ BreakFlag = 0x01; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), Dev_processing_addr); //й - BLV_DevAction_Cycle(Dev_processing_addr, &BUS_Public); //ҵڵ㣬ѵַȫԴȥ + if(BLV_Device_PublicInfo_Read_To_Struct(Dev_processing_addr,&BUS_Public) == 0x00) + { + //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s:%x %d Check Succ",__func__,Dev_processing_addr,SRAM_Read_Byte(Dev_processing_addr+Dev_Type) ); + BLV_DevAction_Cycle(Dev_processing_addr, &BUS_Public); //ҵڵ㣬ѵַȫԴȥ + }else { + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s:%x %d Check error",__func__,Dev_processing_addr,SRAM_Read_Byte(Dev_processing_addr+Dev_Type) ); + + } break; } @@ -2916,12 +3172,12 @@ __attribute__((section(".non_0_wait"))) void DevAction_DevAddr_Ctrl( if( (DevActionAddr < SRAM_DevAction_List_Start_Addr) || (DevActionAddr >= SRAM_DevAction_List_End_Addr) ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ַЧ:%08X",DevActionAddr); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ַЧ:%X",DevActionAddr); return ; } SRAM_DMA_Read_Buff((uint8_t *)&DevActionInfo, sizeof(DEV_ACTION_INFO), DevActionAddr); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ƣַЧ:%08X:%d",DevActionAddr, DevActionInfo.DevActionCore.ActionNo); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ƣַЧ:%X:%d",DevActionAddr, DevActionInfo.DevActionCore.ActionNo); if( DevActionInfo.DevActionCore.ActionNo == ACTION_SCENE_SLEEP ) { @@ -2985,7 +3241,7 @@ __attribute__((section(".non_0_wait"))) void BLV_DevDly_Process(uint32_t dly_pro case Dev_485_BLE_Music: case DEV_Carbon_Saved: case Dev_Energy_Monitor: - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʱ豸ִ:%d %d· : %04X",DevDlyInfo.DevDlyCore.DevType, DevDlyInfo.DevDlyCore.DevOutputLoop ,DevDlyInfo.DevOutputType); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʱ豸ִ:%d %d· : %X",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) { @@ -2993,7 +3249,7 @@ __attribute__((section(".non_0_wait"))) void BLV_DevDly_Process(uint32_t dly_pro } break; case Dev_Host_Invalid: - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʱִеʱ䣬ַ:%08X ״̬: %04X",DevDlyInfo.DevDlyCore.DevDlyAddr, DevDlyInfo.DevOutputType); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʱִеʱ䣬ַ:%X ״̬: %X",DevDlyInfo.DevDlyCore.DevDlyAddr, DevDlyInfo.DevOutputType); DevAction_DevAddr_Ctrl(DevDlyInfo.DevDlyCore.DevDlyAddr, 0x01, NOR_MODE_CTRL, DevDlyInfo.DevOutputType); break; } @@ -3005,7 +3261,7 @@ __attribute__((section(".non_0_wait"))) void BLV_DevDly_Process(uint32_t dly_pro if( DevDlyInfo.DlyBlinkFlag == 0x01 ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱʱ˸ִ:%d %d· : %04X",DevDlyInfo.DevDlyCore.DevType, DevDlyInfo.DevDlyCore.DevOutputLoop ,DevDlyInfo.DevOutputType); //̵״ֵ̬ + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱʱ˸ִ:%d %d· : %X",DevDlyInfo.DevDlyCore.DevType, DevDlyInfo.DevDlyCore.DevOutputLoop ,DevDlyInfo.DevOutputType); //̵״ֵ̬ DevDly_InfoSet(dly_processing_addr, 0x01, DevDlyInfo.DevOutputType, DevDlyInfo.DlyBlinkTime, 0x01); }else if( DevDlyInfo.DlyBlinkFlag == 0x02 ) { diff --git a/MCU_Driver/blv_netcomm_function.c b/MCU_Driver/blv_netcomm_function.c index 36787e7..4c0c793 100644 --- a/MCU_Driver/blv_netcomm_function.c +++ b/MCU_Driver/blv_netcomm_function.c @@ -941,7 +941,7 @@ __attribute__((section(".non_0_wait"))) uint32_t Find_TempDevice_List_Informatio { if(Device_Data_Check(read_addr) == 0) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),read_addr); + BLV_Device_PublicInfo_Read_To_Struct(read_addr,&BUS_Public); SRAM_DMA_Read_Buff((uint8_t *)&Rs485Temp,sizeof(RS485_TEMP_INFO),read_addr+Dev_Privately); Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s Type:%d Addr:%d",__func__,BUS_Public.type,BUS_Public.addr); @@ -1359,57 +1359,55 @@ __attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_BLVPCTestDevice_Pro Device_Public_Information_G BUS_Public; PC_TEST_DEVICE_INFO PC_Test_Info; - - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); - SRAM_DMA_Read_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); - - /**/ - temp1 = data[BLV_UDP_HEAD_LEN]; - if(temp1 == 0x01) // - ͬʱʱ + if(BLV_Device_PublicInfo_Read_To_Struct(dev_addr,&BUS_Public) == 0x00) { - g_pc_test.test_flag = 0x11; + SRAM_DMA_Read_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); - g_pc_test.test_dev = data[BLV_UDP_HEAD_LEN + 1]; //豸 - g_pc_test.test_addr = data[BLV_UDP_HEAD_LEN + 2]; //豸ַ - PC_Test_Info.test_time = data[BLV_UDP_HEAD_LEN + 3]; //ʱ䣬λ + /**/ + temp1 = data[BLV_UDP_HEAD_LEN]; + if(temp1 == 0x01) // - ͬʱʱ + { + g_pc_test.test_flag = 0x11; - PC_Test_Info.test_flag = g_pc_test.test_flag; - PC_Test_Info.test_tick = SysTick_1ms; - PC_Test_Info.test_time *= 60000; + g_pc_test.test_dev = data[BLV_UDP_HEAD_LEN + 1]; //豸 + g_pc_test.test_addr = data[BLV_UDP_HEAD_LEN + 2]; //豸ַ + PC_Test_Info.test_time = data[BLV_UDP_HEAD_LEN + 3]; //ʱ䣬λ - g_pc_test.pc_ip[0] = ip[0]; //2022-07-12 - g_pc_test.pc_ip[1] = ip[1]; - g_pc_test.pc_ip[2] = ip[2]; - g_pc_test.pc_ip[3] = ip[3]; - g_pc_test.pc_port = port; + PC_Test_Info.test_flag = g_pc_test.test_flag; + PC_Test_Info.test_tick = SysTick_1ms; + PC_Test_Info.test_time *= 60000; + + g_pc_test.pc_ip[0] = ip[0]; //2022-07-12 + g_pc_test.pc_ip[1] = ip[1]; + g_pc_test.pc_ip[2] = ip[2]; + g_pc_test.pc_ip[3] = ip[3]; + g_pc_test.pc_port = port; + } + else if(temp1 == 0x02) // + { + g_pc_test.test_flag = 0x12; + PC_Test_Info.test_flag = g_pc_test.test_flag; + PC_Test_Info.test_tick = SysTick_1ms; + PC_Test_Info.test_time = 120000; + + Udp_Internal_PC_Testing_DataDeal(data,DataLen,ip,port); + }else if(temp1 == 0x03) //Ѳز - 485˿ + { + g_pc_test.test_flag = 0x13; + PC_Test_Info.test_flag = g_pc_test.test_flag; + g_pc_test.tour_num = 0; + g_pc_test.tour_succ = 0; + + + g_pc_test.pc_ip[0] = ip[0]; + g_pc_test.pc_ip[1] = ip[1]; + g_pc_test.pc_ip[2] = ip[2]; + g_pc_test.pc_ip[3] = ip[3]; + g_pc_test.pc_port = port; + } + + BLV_Device_Info_Write_To_SRAM(dev_addr,&BUS_Public,(uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO)); } - else if(temp1 == 0x02) // - { - g_pc_test.test_flag = 0x12; - PC_Test_Info.test_flag = g_pc_test.test_flag; - PC_Test_Info.test_tick = SysTick_1ms; - PC_Test_Info.test_time = 120000; - - Udp_Internal_PC_Testing_DataDeal(data,DataLen,ip,port); - }else if(temp1 == 0x03) //Ѳز - 485˿ - { - g_pc_test.test_flag = 0x13; - PC_Test_Info.test_flag = g_pc_test.test_flag; - g_pc_test.tour_num = 0; - g_pc_test.tour_succ = 0; - - - g_pc_test.pc_ip[0] = ip[0]; - g_pc_test.pc_ip[1] = ip[1]; - g_pc_test.pc_ip[2] = ip[2]; - g_pc_test.pc_ip[3] = ip[3]; - g_pc_test.pc_port = port; - } - - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&PC_Test_Info, sizeof(PC_TEST_DEVICE_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*ݱ*/ - SRAM_DMA_Write_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately); return 0x00; } @@ -2066,37 +2064,6 @@ uint8_t Udp_Internal_RoomState_Process(uint8_t *data, uint16_t DataLen, uint8_t return 0x00; } -/******************************************************************************* -* Function Name : ServiceInfo_Get_ALL_Loop_State -* Description : Ϣ - ȡȫ·Ŀ״̬ -*******************************************************************************/ -uint8_t ServiceInfo_Get_ALL_Loop_State(uint8_t *read_buff) -{ - uint32_t dev_addr = Find_AllDevice_List_Information(Dev_Host_Service,0x00); - Device_Public_Information_G BUS_Public; // - NOR_SERVICE_INFO DevServiceInfo; //Ϣֲ - uint8_t loop_offset = 0; - uint8_t loop_ide = 0; - - if(dev_addr == 0x00) return 0x01; //δҵ豸 - - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr); //й - SRAM_DMA_Read_Buff((uint8_t *)&DevServiceInfo,sizeof(NOR_SERVICE_INFO),dev_addr+Dev_Privately); - - if( DevServiceInfo.ServiceLoopValidNum >= ServiceNumMAX ) DevServiceInfo.ServiceLoopValidNum = ServiceNumMAX; - - for(uint8_t i=0;i SRAM_Device_List_Size ) return 2; + + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s :%x",__func__,dev_addr); + + memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); + + //BLV_Device_Public_Info_Printf(dev_info); + + rs485_temp_buff[Dev_Type] = dev_info->type; + rs485_temp_buff[Dev_Addr] = dev_info->addr; + rs485_temp_buff[Dev_port] = dev_info->port; + + rs485_temp_buff[Dev_baud] = dev_info->baud & 0xFF; + rs485_temp_buff[Dev_baud_8] = ( dev_info->baud >> 8 ) & 0xFF; + rs485_temp_buff[Dev_baud_16] = ( dev_info->baud >> 16 ) & 0xFF; + rs485_temp_buff[Dev_baud_24] = ( dev_info->baud >> 24 ) & 0xFF; + + rs485_temp_buff[Dev_Retrynum] = dev_info->retry_num; + + rs485_temp_buff[Dev_WaitTime] = dev_info->wait_time & 0xFF; + rs485_temp_buff[Dev_WaitTime_8] = ( dev_info->wait_time >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_Protocol] = dev_info->Protocol; + + rs485_temp_buff[Dev_Coord] = dev_info->DevCoord & 0xFF; + rs485_temp_buff[Dev_Coord_8] = ( dev_info->DevCoord >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_ActionCoord] = dev_info->ActionCoord & 0xFF; + rs485_temp_buff[Dev_ActionCoord_8] = ( dev_info->ActionCoord >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_Polling_CF] = dev_info->polling_cf & 0xFF; + rs485_temp_buff[Dev_Polling_CF_8] = ( dev_info->polling_cf >> 8 ) & 0xFF; + rs485_temp_buff[Dev_Polling_CF_16] = ( dev_info->polling_cf >> 16 ) & 0xFF; + rs485_temp_buff[Dev_Polling_CF_24] = ( dev_info->polling_cf >> 24 ) & 0xFF; + + rs485_temp_buff[Dev_Processing_CF] = dev_info->processing_cf & 0xFF; + rs485_temp_buff[Dev_Processing_CF_8] = ( dev_info->processing_cf >> 8 ) & 0xFF; + rs485_temp_buff[Dev_Processing_CF_16] = ( dev_info->processing_cf >> 16 ) & 0xFF; + rs485_temp_buff[Dev_Processing_CF_24] = ( dev_info->processing_cf >> 24 ) & 0xFF; + + memcpy(&rs485_temp_buff[Dev_Data_Process_0],(uint8_t *)&(dev_info->DevFunInfo),Dev_Fun_Ptr_Len); + memcpy(&rs485_temp_buff[Dev_Privately],(uint8_t *)dev_data,data_len); + + dev_info->data_len = Dev_Privately + data_len; + rs485_temp_buff[Dev_DataLen] = dev_info->data_len & 0xFF; + rs485_temp_buff[Dev_DataLen_H] = ( dev_info->data_len >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_Check] = 0x00; + rs485_temp_buff[Dev_Check] = Data_CheckSum(rs485_temp_buff,dev_info->data_len); + + //Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"W BLV_Device_Info : ",rs485_temp_buff,dev_info->data_len); + + SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,dev_addr); + return 0x00; +} + +/******************************************************************************* +* Function Name : BLV_Device_PublicInfo_Read_To_Struct +* Description : 豸ݶȡSRAM +*******************************************************************************/ +__attribute__((section(".non_0_wait"))) uint8_t BLV_Device_PublicInfo_Read_To_Struct( + uint32_t dev_addr, + Device_Public_Information_G *dev_info) +{ + if( (dev_info == NULL) || (dev_addr == 0x00) ) { + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s %x ptr_null",__func__,dev_addr); + return 1; + } + + //ⲿSRAMжȡݣֵ豸Ϣ + memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); + + dev_info->data_len = SRAM_Read_Word(dev_addr + Dev_DataLen); + SRAM_DMA_Read_Buff(rs485_temp_buff,dev_info->data_len,dev_addr); + + if( dev_info->data_len > SRAM_Device_List_Size ) { + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s %x data_len error",__func__,dev_addr); + return 1; //ݳȲԣֱ˳ + } + + if( Data_CheckSum(rs485_temp_buff,dev_info->data_len) != 0x00 ) { + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s %x Check error",__func__,dev_addr); + return 2; //Уʧܣֱ˳ + } + + //Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"R BLV_Device_Info : ",rs485_temp_buff,dev_info->data_len); + + dev_info->type = rs485_temp_buff[Dev_Type]; + dev_info->addr = rs485_temp_buff[Dev_Addr]; + dev_info->port = rs485_temp_buff[Dev_port]; + + dev_info->baud = rs485_temp_buff[Dev_baud_24]; + dev_info->baud <<= 8; + dev_info->baud |= rs485_temp_buff[Dev_baud_16]; + dev_info->baud <<= 8; + dev_info->baud |= rs485_temp_buff[Dev_baud_8]; + dev_info->baud <<= 8; + dev_info->baud |= rs485_temp_buff[Dev_baud]; + + dev_info->retry_num = rs485_temp_buff[Dev_Retrynum]; + + dev_info->wait_time = rs485_temp_buff[Dev_WaitTime_8]; + dev_info->wait_time <<= 8; + dev_info->wait_time |= rs485_temp_buff[Dev_WaitTime]; + + dev_info->Protocol = rs485_temp_buff[Dev_Protocol]; + + dev_info->DevCoord = rs485_temp_buff[Dev_Coord_8]; + dev_info->DevCoord <<= 8; + dev_info->DevCoord |= rs485_temp_buff[Dev_Coord]; + + dev_info->ActionCoord = rs485_temp_buff[Dev_ActionCoord_8]; + dev_info->ActionCoord <<= 8; + dev_info->ActionCoord |= rs485_temp_buff[Dev_ActionCoord]; + + dev_info->polling_cf = rs485_temp_buff[Dev_Polling_CF_24]; + dev_info->polling_cf <<= 8; + dev_info->polling_cf |= rs485_temp_buff[Dev_Polling_CF_16]; + dev_info->polling_cf <<= 8; + dev_info->polling_cf |= rs485_temp_buff[Dev_Polling_CF_8]; + dev_info->polling_cf <<= 8; + dev_info->polling_cf |= rs485_temp_buff[Dev_Polling_CF]; + + dev_info->processing_cf = rs485_temp_buff[Dev_Processing_CF_24]; + dev_info->processing_cf <<= 8; + dev_info->processing_cf |= rs485_temp_buff[Dev_Processing_CF_16]; + dev_info->processing_cf <<= 8; + dev_info->processing_cf |= rs485_temp_buff[Dev_Processing_CF_8]; + dev_info->processing_cf <<= 8; + dev_info->processing_cf |= rs485_temp_buff[Dev_Processing_CF]; + + memcpy((uint8_t *)&(dev_info->DevFunInfo),&rs485_temp_buff[Dev_Data_Process_0],Dev_Fun_Ptr_Len); + + //BLV_Device_Public_Info_Printf(dev_info); + + return 0x00; +} + +/******************************************************************************* +* Function Name : BLV_Device_PublicInfo_Update_To_Struct +* Description : 豸ݶȡSRAM +*******************************************************************************/ +__attribute__((section(".non_0_wait"))) uint8_t BLV_Device_PublicInfo_Update_To_Struct( + uint32_t dev_addr, + Device_Public_Information_G *dev_info) +{ + if( (dev_info == NULL) || (dev_addr == 0x00) ) return 1; + + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s :%x",__func__,dev_addr); + + memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); + + dev_info->data_len = SRAM_Read_Word(dev_addr + Dev_DataLen); + SRAM_DMA_Read_Buff(rs485_temp_buff,dev_info->data_len,dev_addr); + + rs485_temp_buff[Dev_Type] = dev_info->type; + rs485_temp_buff[Dev_Addr] = dev_info->addr; + rs485_temp_buff[Dev_port] = dev_info->port; + + rs485_temp_buff[Dev_baud] = dev_info->baud & 0xFF; + rs485_temp_buff[Dev_baud_8] = ( dev_info->baud >> 8 ) & 0xFF; + rs485_temp_buff[Dev_baud_16] = ( dev_info->baud >> 16 ) & 0xFF; + rs485_temp_buff[Dev_baud_24] = ( dev_info->baud >> 24 ) & 0xFF; + + rs485_temp_buff[Dev_Retrynum] = dev_info->retry_num; + + rs485_temp_buff[Dev_WaitTime] = dev_info->wait_time & 0xFF; + rs485_temp_buff[Dev_WaitTime_8] = ( dev_info->wait_time >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_Protocol] = dev_info->Protocol; + + rs485_temp_buff[Dev_Coord] = dev_info->DevCoord & 0xFF; + rs485_temp_buff[Dev_Coord_8] = ( dev_info->DevCoord >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_ActionCoord] = dev_info->ActionCoord & 0xFF; + rs485_temp_buff[Dev_ActionCoord_8] = ( dev_info->ActionCoord >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_Polling_CF] = dev_info->polling_cf & 0xFF; + rs485_temp_buff[Dev_Polling_CF_8] = ( dev_info->polling_cf >> 8 ) & 0xFF; + rs485_temp_buff[Dev_Polling_CF_16] = ( dev_info->polling_cf >> 16 ) & 0xFF; + rs485_temp_buff[Dev_Polling_CF_24] = ( dev_info->polling_cf >> 24 ) & 0xFF; + + rs485_temp_buff[Dev_Processing_CF] = dev_info->processing_cf & 0xFF; + rs485_temp_buff[Dev_Processing_CF_8] = ( dev_info->processing_cf >> 8 ) & 0xFF; + rs485_temp_buff[Dev_Processing_CF_16] = ( dev_info->processing_cf >> 16 ) & 0xFF; + rs485_temp_buff[Dev_Processing_CF_24] = ( dev_info->processing_cf >> 24 ) & 0xFF; + + memcpy(&rs485_temp_buff[Dev_Data_Process_0],(uint8_t *)&(dev_info->DevFunInfo),Dev_Fun_Ptr_Len); + + rs485_temp_buff[Dev_DataLen] = dev_info->data_len & 0xFF; + rs485_temp_buff[Dev_DataLen_H] = ( dev_info->data_len >> 8 ) & 0xFF; + + rs485_temp_buff[Dev_Check] = 0x00; + rs485_temp_buff[Dev_Check] = Data_CheckSum(rs485_temp_buff,dev_info->data_len); + + //Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"W BLV_Device_Info : ",rs485_temp_buff,dev_info->data_len); + + SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,dev_addr); + + return 0x00; +} + +/******************************************************************************* +* Function Name : BLV_Device_Public_Info_Printf +* Description : ӡ豸ĹϢ +* Input : + dev_info : 豸 +* Return : None +*******************************************************************************/ +void BLV_Device_Public_Info_Printf(Device_Public_Information_G *dev_info) +{ + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info type : %d",dev_info->type); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info addr : %d",dev_info->addr); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info port : %d",dev_info->port); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info baud : %d",dev_info->baud); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info retry_num : %d",dev_info->retry_num); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info wait_time : %d",dev_info->wait_time); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Protocol : %d",dev_info->Protocol); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info DevCoord : %d",dev_info->DevCoord); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info ActionCoord : %d",dev_info->ActionCoord); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info polling_cf : %x",dev_info->polling_cf); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info processing_cf : %x",dev_info->processing_cf); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Dev_Data_Process : %x",dev_info->DevFunInfo.Dev_Data_Process); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Dev_Input_Type_Get : %x",dev_info->DevFunInfo.Dev_Input_Type_Get); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Dev_Output_Ctrl : %x",dev_info->DevFunInfo.Dev_Output_Ctrl); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Dev_Output_Loop_State_Get : %x",dev_info->DevFunInfo.Dev_Output_Loop_State_Get); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Dev_Output_Group_Ctrl : %x",dev_info->DevFunInfo.Dev_Output_Group_Ctrl); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Dev Info Dev_Output_Loop_Group_State_Get_ptr : %x",dev_info->DevFunInfo.Dev_Output_Loop_Group_State_Get_ptr); +} + /******************************************************************************* * Function Name : Add_BUS_Device_To_List * Description : BUS豸 @@ -33,31 +275,9 @@ __attribute__((section(".non_0_wait"))) void Add_BUS_Device_To_List( uint32_t list_addr = SRAM_Read_DW(SRAM_BUS_Device_List_Addr); //ȡ豸Ϣַ if((list_addr < SRAM_Device_List_Start_Addr) || (list_addr > SRAM_Device_List_End_Addr)) list_addr = SRAM_Device_List_Start_Addr; - memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); + BLV_Device_Info_Write_To_SRAM(list_addr,dev_info,dev_data,data_len); - memcpy(rs485_temp_buff,(uint8_t *)dev_info,Dev_Privately); - memcpy(&rs485_temp_buff[Dev_Privately],(uint8_t *)dev_data,data_len); - - dev_info->check = 0x00; - dev_info->check = Data_CheckSum(rs485_temp_buff,dev_info->data_len); - SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,list_addr); - -// /*ӹ*/ -// SRAM_DMA_Write_Buff(rs485_temp_buff,Dev_Privately,list_addr); -// -// /*豸˽б*/ -// SRAM_DMA_Write_Buff(dev_data,data_len,list_addr+Dev_Privately); -// -// /*Уֵ*/ -// check_val = Dev_CheckSum(list_addr,dev_info->data_len); -// SRAM_Write_Byte(check_val,list_addr+Dev_Check); //Уֵд - -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"data_len :%d ,dev Buffer:" , write_len); -// for(uint16_t i = 0;i < write_len;i++) -// { -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%02X " , SRAM_Read_Byte(list_addr + i)); -// } -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"\r\n"); + BLV_Device_Public_Info_Printf(dev_info); /*豸,豸ַƫ*/ list_addr += SRAM_Device_List_Size; @@ -91,42 +311,7 @@ __attribute__((section(".non_0_wait"))) void Add_POLL_Device_To_List( } if( (list_addr < Start_addr) || (list_addr > SRAM_Device_List_End_Addr)) list_addr = Start_addr; - memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); - - memcpy(rs485_temp_buff,(uint8_t *)dev_info,Dev_Privately); - memcpy(&rs485_temp_buff[Dev_Privately],(uint8_t *)dev_data,data_len); - - dev_info->check = 0x00; - dev_info->check = Data_CheckSum(rs485_temp_buff,dev_info->data_len); - SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,list_addr); - -// /**/ -// for(uint16_t i = 0;ipolling_cf,list_addr+Dev_Polling_CF); -// -// SRAM_Write_DW(dev_info->processing_cf,list_addr+Dev_Processing_CF); -// -// /*豸˽б*/ -// SRAM_DMA_Write_Buff(dev_data,data_len,list_addr+Dev_Privately); -// -// /*Уֵ*/ -// dev_info->check = Dev_CheckSum(list_addr,dev_info->data_len); -// SRAM_Write_Byte(dev_info->check,list_addr+Dev_Check); //Уֵд - -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"data_len :%d ,dev Buffer:" , write_len); -// for(uint16_t i = 0;i < write_len;i++) -// { -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%02X " , SRAM_Read_Byte(list_addr + i)); -// } -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"\r\n"); + BLV_Device_Info_Write_To_SRAM(list_addr,dev_info,dev_data,data_len); /*豸,豸ַƫ*/ list_addr += SRAM_Device_List_Size; @@ -161,41 +346,7 @@ __attribute__((section(".non_0_wait"))) void Add_ACT_Device_To_List( } if((list_addr < Start_addr) || (list_addr > SRAM_Device_List_End_Addr)) list_addr = Start_addr; - memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); - - memcpy(rs485_temp_buff,(uint8_t *)dev_info,Dev_Privately); - memcpy(&rs485_temp_buff[Dev_Privately],(uint8_t *)dev_data,data_len); - - dev_info->check = 0x00; - dev_info->check = Data_CheckSum(rs485_temp_buff,dev_info->data_len); - SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,list_addr); - -// /**/ -// for(uint16_t i = 0;ipolling_cf,list_addr+Dev_Polling_CF); -// -// SRAM_Write_DW(dev_info->processing_cf,list_addr+Dev_Processing_CF); -// -// /*豸˽б*/ -// SRAM_DMA_Write_Buff(dev_data,data_len,list_addr+Dev_Privately); -// -// /*Уֵ*/ -// dev_info->check = Dev_CheckSum(list_addr,dev_info->data_len); -// SRAM_Write_Byte(dev_info->check,list_addr+Dev_Check); //Уֵд - -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"data_len :%d ,dev Buffer:" , write_len); -// for(uint16_t i = 0;i < write_len;i++) -// { -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%02X " , SRAM_Read_Byte(list_addr + i)); -// } -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"\r\n"); + BLV_Device_Info_Write_To_SRAM(list_addr,dev_info,dev_data,data_len); /*豸,豸ַƫ*/ list_addr += SRAM_Device_List_Size; @@ -231,66 +382,13 @@ __attribute__((section(".non_0_wait"))) void Add_Nor_Device_To_List( } if((list_addr < Start_addr) || (list_addr > SRAM_Device_List_End_Addr)) list_addr = Start_addr; - memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); - - memcpy(rs485_temp_buff,(uint8_t *)dev_info,Dev_Privately); - memcpy(&rs485_temp_buff[Dev_Privately],(uint8_t *)dev_data,data_len); - - dev_info->check = 0x00; - dev_info->check = Data_CheckSum(rs485_temp_buff,dev_info->data_len); - SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,list_addr); - -// /**/ -// for(uint16_t i = 0;icheck = Dev_CheckSum(list_addr,dev_info->data_len); -// SRAM_Write_Byte(dev_info->check,list_addr+Dev_Check); //Уֵд - -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"data_len :%d ,dev Buffer:" , write_len); -// for(uint16_t i = 0;i < write_len;i++) -// { -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%02X " , SRAM_Read_Byte(list_addr + i)); -// } -// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"\r\n"); + BLV_Device_Info_Write_To_SRAM(list_addr,dev_info,dev_data,data_len); /*豸,豸ַƫ*/ list_addr += SRAM_Device_List_Size; SRAM_Write_DW(list_addr,SRAM_NORMAL_Device_List_Addr); } -/******************************************************************************* -* Function Name : BLV_Device_Info_Write_To_SRAM -* Description : 豸д뵽SRAM -*******************************************************************************/ -__attribute__((section(".non_0_wait"))) uint8_t BLV_Device_Info_Write_To_SRAM( - uint32_t dev_addr, - Device_Public_Information_G *dev_info, - uint8_t *dev_data, - uint16_t data_len) -{ - if(dev_info == NULL) return 1; - - memset(rs485_temp_buff,0,sizeof(rs485_temp_buff)); - - memcpy(rs485_temp_buff,(uint8_t *)dev_info,Dev_Privately); - memcpy(&rs485_temp_buff[Dev_Privately],(uint8_t *)dev_data,data_len); - - dev_info->check = 0x00; - dev_info->check = Data_CheckSum(rs485_temp_buff,dev_info->data_len); - SRAM_DMA_Write_Buff(rs485_temp_buff,dev_info->data_len,dev_addr); - return 0x00; -} - /******************************************************************************* * Function Name : Device_Data_Check * Description : 豸У @@ -319,11 +417,11 @@ __attribute__((section(".non_0_wait"))) uint8_t Device_Data_Check(uint32_t sram_ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) { static uint32_t BLV_BUS_Wait = 0; - + Device_Public_Information_G dev_info; uint16_t data_len = 0; uint8_t rev = 0; - if(BUS485_Info.device_num == 0x00) return ; + if(BUS485_Info.device_num == 0x00) return ; switch(BUS485_Info.BUS_Start) { @@ -341,8 +439,8 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) BUS485_Info.n_list_read_addr = BUS485_Info.Last_list_addr; /*ȡ豸Ϣ*/ - Device_Public_Information_G dev_info; - SRAM_DMA_Read_Buff((uint8_t *)&dev_info,sizeof(Device_Public_Information_G),BUS485_Info.n_list_read_addr); + BLV_Device_PublicInfo_Read_To_Struct(BUS485_Info.n_list_read_addr,&dev_info); + BUS485_Info.n_dev_type = dev_info.type; BUS485_Info.n_dev_addr = dev_info.addr; BUS485_Info.n_dev_datalen = dev_info.data_len; @@ -354,12 +452,11 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) BUS485_Info.Retry_Flag = 0x01; /*豸ѯͺ*/ - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS_dev Polling"); - + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS_dev Polling %x %x",BUS485_Info.n_polling_cf,BUS485_Info.n_processing_cf); if(BUS485_Info.baud != dev_info.baud) //豸뵱ǰͨѶʲ { /*л*/ - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS_Port Baud:%ld,Change Baud:%ld\r\n",BUS485_Info.baud,dev_info.baud); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS_Port Baud:%d,Change Baud:%d\r\n",BUS485_Info.baud,dev_info.baud); BUS485_Info.baud = dev_info.baud; if(BUS485_Info.BaudRateCfg != NULL) BUS485_Info.BaudRateCfg(BUS485_Info.baud); @@ -374,7 +471,6 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) if(rev == RS485OCCUPYNOTIME) //лһ豸 { BUS485_Info.BUS_Start = Change_Dev; - /*BUS485вҪѯݵ豸Ҫȴظ׶ֱл豸ط־λҪλ - 2022-05-04*/ BUS485_Info.Retry_Flag = 0x00; BUS485_Info.n_retry_num = 0x00; }else { //ݷͳɹȴظ @@ -383,11 +479,11 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) } } }else { - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"[BLV_BUS_Polling_Task2]BLV_BUS_dev Check Fail:%08X",BUS485_Info.Last_list_addr); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS_dev Check Fail:%08X",BUS485_Info.Last_list_addr); BUS485_Info.BUS_Start = Change_Dev; } }else { - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS_dev Type Fail"); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS_dev Type Fail"); BUS485_Info.BUS_Start = Change_Dev; } @@ -395,15 +491,14 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) case Change_Dev: BUS485_Info.Last_list_addr += SRAM_Device_List_Size; //һ豸 if(BUS485_Info.Last_list_addr >= SRAM_Read_DW(SRAM_BUS_Device_List_Addr)) BUS485_Info.Last_list_addr = SRAM_Device_List_Start_Addr; - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS Change_Dev"); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS Change_Dev %x %x",BUS485_Info.Last_list_addr,SRAM_Read_DW(SRAM_BUS_Device_List_Addr)); BUS485_Info.BUS_Start = B_Polling; break; case B_Retry: if((BUS485_Info.Retry_Flag == 0x01) && (BUS485_Info.n_retry_num != 0x00)) //ط־δ㣬ʾûͳɹ { - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS Retransmitting Data:%d-%d-%08X...",BUS485_Info.n_dev_type,BUS485_Info.n_dev_addr,BUS485_Info.n_list_read_addr); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS Retransmitting Data:%d-%d-%08X...",BUS485_Info.n_dev_type,BUS485_Info.n_dev_addr,BUS485_Info.n_list_read_addr); - //޸ʱ:2022-07-12 if((BUS485_Info.n_polling_cf!=0x00000000) && (BUS485_Info.n_polling_cf!=0xFFFFFFFF)) rev = ((fun4_prt)BUS485_Info.n_polling_cf)(BUS485_Info.n_list_read_addr); //豸ͺ if(rev == RS485OCCUPYNOTIME) //лһ豸 @@ -431,19 +526,21 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) { data_len = SRAM_Read_Word(g_uart[UART_3].RX_Buffer_ReadAddr); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Reply Len:%d",data_len); + if((BUS485_Info.n_processing_cf!=0x00000000) && (BUS485_Info.n_processing_cf!=0xFFFFFFFF)) { BUS485_Info.Retry_Flag = ((fun2_prt)BUS485_Info.n_processing_cf)(BUS485_Info.n_list_read_addr,g_uart[UART_3].RX_Buffer_ReadAddr + 2,data_len); } if(BUS485_Info.Retry_Flag == 0x00) { - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Reply SUCC\r\n"); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Reply SUCC 1\r\n"); BUS485_Info.send_wait = SysTick_1ms; BUS485_Info.BUS_Start = B_Wait; //ظɹȴ߿УлΪһ豸 } if(BUS485_Info.port_mode == Port_Monitoring_mode) //ǰڼģʽ,ݷPC { - Udp_Internal_SeriaNet_Uploading(Bus_port,BUS485_Info.baud,g_uart[UART_3].RX_Buffer_ReadAddr); //ϱ + Udp_Internal_SeriaNet_Uploading(Bus_port,BUS485_Info.baud,g_uart[UART_3].RX_Buffer_ReadAddr); } g_uart[UART_3].RX_Buffer_ReadAddr += SRAM_Uart_Buffer_Size; @@ -462,21 +559,19 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) } //BUS485_Info.BUS_Start = Change_Dev; break; - /*2021-11-24 : C5IOʲ׼ǰݵǰ豸ͨѶʣлͲʣл겨ʺ󣬵ȴ10msڽз - 2022-07-19 : лʱͨѶһΣջݲֱӶ - */ - case Baud_Wait: //лʵȴʱ if(SysTick_1ms - BUS485_Info.change_tick > BLV_BUS485_ChangeBaudWaitTime) { - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- Baud_Wait"); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- Baud_Wait %x",BUS485_Info.n_polling_cf); - if((BUS485_Info.n_polling_cf!=0x00000000) && (BUS485_Info.n_polling_cf!=0xFFFFFFFF)) rev = ((fun4_prt)BUS485_Info.n_polling_cf)(BUS485_Info.n_list_read_addr); //豸ͺ + if((BUS485_Info.n_polling_cf != 0x00000000) && (BUS485_Info.n_polling_cf != 0xFFFFFFFF)) { + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS Baud_Wait -- n_polling_cf %x",BUS485_Info.n_polling_cf); + rev = ((fun4_prt)BUS485_Info.n_polling_cf)(BUS485_Info.n_list_read_addr); //豸ͺ + } BUS485_Info.change_tick = SysTick_1ms; BUS485_Info.BUS_Start = Baud_Comm; } - break; case Baud_Comm: /*մ*/ @@ -491,12 +586,11 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) } if(BUS485_Info.Retry_Flag == 0x00) //ظɹʼһͨѶ { - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- Baud_Comm3"); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- Baud_Comm3"); BUS485_Info.BUS_Start = Baud_SendWait; BUS485_Info.change_tick = SysTick_1ms; } - if(BUS485_Info.port_mode == Port_Monitoring_mode) //ǰڼģʽ,ݷPC { Udp_Internal_SeriaNet_Uploading(Bus_port,BUS485_Info.baud,g_uart[UART_3].RX_Buffer_ReadAddr); //ϱ @@ -516,7 +610,7 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) break; case Baud_SendWait: if(SysTick_1ms - BUS485_Info.change_tick > BLV_BUS485_ChangeBaudSendWaitTime) { - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- Baud_Comm2"); + //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- Baud_Comm1"); BUS485_Info.change_tick = SysTick_1ms; BUS485_Info.BUS_Start = B_Send; } @@ -524,10 +618,9 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) case B_Send: //ͺ //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_BUS State -- send"); - //if((BUS485_Info.n_polling_cf!=0x00000000) && (BUS485_Info.n_polling_cf!=0xFFFFFFFF)) Convert_To_Fun_Prt(BUS485_Info.n_polling_cf,BUS485_Info.n_list_read_addr); - - //޸ʱ:2022-07-12 - if((BUS485_Info.n_polling_cf!=0x00000000) && (BUS485_Info.n_polling_cf!=0xFFFFFFFF)) rev = ((fun4_prt)BUS485_Info.n_polling_cf)(BUS485_Info.n_list_read_addr); //豸ͺ + if( (BUS485_Info.n_polling_cf!=0x00000000) && (BUS485_Info.n_polling_cf!=0xFFFFFFFF) ) { + rev = ((fun4_prt)BUS485_Info.n_polling_cf)(BUS485_Info.n_list_read_addr); + } if(rev == RS485OCCUPYNOTIME) //лһ豸 { @@ -552,7 +645,7 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS_Polling_Task(void) { if(SysTick_1s - BUS485_Info.mode_tick > BUS485_Info.mode_outtime) { - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Reply SUCC"); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS485 Mode:%d Outtime %d",BUS485_Info.port_mode,BUS485_Info.device_num); BUS485_Info.mode_tick = SysTick_1s; BUS485_Info.port_mode = Port_Normal_Mode; //ģʽ } @@ -649,9 +742,7 @@ __attribute__((section(".non_0_wait"))) void BLV_BUS485Port_ModeTask(void) break; case Port_Normal_Mode: case Port_Monitoring_mode: - BLV_BUS_Polling_Task(); //ģʽ Լģʽ¼ģʽ - break; } } @@ -691,7 +782,7 @@ __attribute__((section(".non_0_wait"))) void BLV_PollPort_Task(void) }else { /*ȡ豸Ϣ*/ Device_Public_Information_G dev_info; - SRAM_DMA_Read_Buff((uint8_t *)&dev_info,sizeof(Device_Public_Information_G),Poll485_Info.n_list_read_addr); + BLV_Device_PublicInfo_Read_To_Struct(Poll485_Info.n_list_read_addr,&dev_info); Poll485_Info.n_dev_type = dev_info.type; Poll485_Info.n_dev_addr = dev_info.addr; @@ -731,7 +822,7 @@ __attribute__((section(".non_0_wait"))) void BLV_PollPort_Task(void) /*ȡ豸Ϣ*/ Device_Public_Information_G dev_info; - SRAM_DMA_Read_Buff((uint8_t *)&dev_info,sizeof(Device_Public_Information_G),Poll485_Info.n_list_read_addr); + BLV_Device_PublicInfo_Read_To_Struct(Poll485_Info.n_list_read_addr,&dev_info); Poll485_Info.n_dev_type = dev_info.type; Poll485_Info.n_dev_addr = dev_info.addr; @@ -795,7 +886,6 @@ __attribute__((section(".non_0_wait"))) void BLV_PollPort_Task(void) } if(Poll485_Info.Retry_Flag == 0x00) { - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Reply SUCC\r\n"); Poll485_Info.send_wait = SysTick_1ms; Poll485_Info.POLL_Start = B_Wait; //ظɹȴ߿УлΪһ豸 } @@ -1100,7 +1190,7 @@ __attribute__((section(".non_0_wait"))) void BLV_ActivePort_Task(void) /*ȡ豸Ϣ*/ Device_Public_Information_G dev_info; - SRAM_DMA_Read_Buff((uint8_t *)&dev_info,sizeof(Device_Public_Information_G),Act485_Info.Last_list_addr); + BLV_Device_PublicInfo_Read_To_Struct(Act485_Info.Last_list_addr,&dev_info); Act485_Info.n_polling_cf = dev_info.polling_cf; Act485_Info.n_processing_cf = dev_info.processing_cf; @@ -1119,7 +1209,7 @@ __attribute__((section(".non_0_wait"))) void BLV_ActivePort_Task(void) { /*ȡ豸Ϣ*/ Device_Public_Information_G dev_info; - SRAM_DMA_Read_Buff((uint8_t *)&dev_info,sizeof(Device_Public_Information_G),Act485_Info.n_list_read_addr); + BLV_Device_PublicInfo_Read_To_Struct(Act485_Info.n_list_read_addr,&dev_info); Act485_Info.n_polling_cf = dev_info.polling_cf; Act485_Info.n_processing_cf = dev_info.processing_cf; diff --git a/MCU_Driver/debug.c b/MCU_Driver/debug.c index 8e9bf56..d2f40bc 100644 --- a/MCU_Driver/debug.c +++ b/MCU_Driver/debug.c @@ -221,7 +221,7 @@ __attribute__((section(".non_0_wait"))) void Dbg_NoTick_Print(int DbgOptBit ,con fmt++; } va_end(ap); - printf("\r\n"); + //printf("\r\n"); } } diff --git a/MCU_Driver/inc/blv_dev_action.h b/MCU_Driver/inc/blv_dev_action.h index de7393b..f67c22b 100644 --- a/MCU_Driver/inc/blv_dev_action.h +++ b/MCU_Driver/inc/blv_dev_action.h @@ -101,8 +101,8 @@ typedef struct }Dev_Action_U64Cond; //ijִ һ9ֽ typedef struct{ - Dev_Action_U64Cond DevActionU64Cond; //64λ uint8_t SceneExcute; //ִзʽ ɹر ɹر + Dev_Action_U64Cond DevActionU64Cond; //64λ }Dev_Action_Cond; //ijִ һ9ֽ typedef struct @@ -114,15 +114,15 @@ typedef struct typedef struct { /*豸Ϣʼ*/ - uint8_t DevType; //豸 - uint8_t DevAddr; //豸ַ - uint16_t DevOutputLoop; //豸ַ - uint16_t DevCtrlState; //豸״̬ - Dev_Dly_Value DevDlyValue; //豸ʱϢ + uint8_t DevType; //豸 - 1Byte + uint8_t DevAddr; //豸ַ - 1Byte + uint16_t DevOutputLoop; //豸ַ - 2Byte + uint16_t DevCtrlState; //豸״̬ - 2Byte + Dev_Dly_Value DevDlyValue; //豸ʱϢ - 2Byte /*豸Ϣ*/ }Dev_Action_OutCfg; //豸 8ֽ -#define DEVACTIONOUTCFGLEN sizeof(Dev_Action_OutCfg) //̶8ֽ +#define DEVACTIONOUTCFGLEN 0x08 //̶8ֽ Dev_Action_OutCfgṹ峤 typedef struct { @@ -159,68 +159,38 @@ typedef struct CFG_Action_Add }DEV_ACTION_INFO; //豸ýṹ 豸 ܳ49+11+4+448 = 512ֽ typedef struct{ - uint16_t DevActionNum; //豸 Χ0~(DevActionNumMax-1) - uint16_t DevActioni; //ڱжȫֲ Χ0~(DevActionNumMax-1) - uint16_t DevDlyNum; //ʱ豸 - uint16_t DevDlyi; //ڱеʱ豸 - uint16_t BlwMapDevNum; //ӳ豸 2024-08-28 uint8_t uint16_t - uint8_t BlwMapDevi; //ڱӳ豸 - - uint8_t DevNum; //豸 - uint8_t DevBusNum; //Bus豸 - uint8_t DevPollNum; //ѯ豸 - uint8_t DevActiveNum; //豸 - uint8_t DevNorNum; //ͨ豸 - - uint8_t Devi; //ڱ豸 - -/*ʱʼ*/ - uint8_t TimeGetFlag; //ʱȡ־ ÿõʱ䣬ͼ ӷȡʱ -/*ʱ*/ - - Dev_Action_U64Cond DevActionU64Cond; //64λο - uint16_t SleepActionNo; //˯߳ Ϊ0Ч - uint32_t DevLockAddr; //΢豸ַ - uint8_t Lock485Addr; //΢485ַ - uint32_t pc_addr; //豸ַ - - uint16_t CheckMapDevNum; //2023-11-27 Ѳ - uint8_t CheckTypeNum; //Ѳ豸 - uint8_t CheckMapList[4]; //Ѳ豸б - - uint8_t OffLineDevType; //豸 2023-10-08 - uint8_t OffLineDevAddr; //豸ַ 2023-10-08 - uint8_t InputType; //豸 2023-10-08 - uint8_t InputAddr; //豸ַ 2023-10-08 - uint8_t InputLoop; //豸· 2023-10-08 - - uint8_t People_Flag; //˱ 2024-03-01 - uint8_t ServerCtrl; // - uint8_t CardInFlag; //סʱ˯߱ 2024-04-29 - - uint16_t DimGlobalValue; //ȫ - - uint8_t TimeSyncFlag; //ʱͬ - uint8_t DayStart; //쿪ʼʱ - uint8_t DayEnd; //ʱ - - uint8_t VC_ConNToSGruop; //޿ȡ - uint8_t VC_ConNToSSubset; //޿ȡ - - uint8_t VC_ConSToNGruop; //޿ȡ - uint8_t VC_ConSToNSubset; //޿ȡ - - uint8_t VC_PortNum; //޿ȡ˿ - - uint16_t CCTValue; //ɫֵ + uint8_t BlwMapDevi; //ڱӳ豸 + uint8_t DevNum; //豸 + uint8_t DevBusNum; //Bus豸 + uint8_t DevPollNum; //ѯ豸 + uint8_t DevActiveNum; //豸 + uint8_t DevNorNum; //ͨ豸 + uint8_t Devi; //ڱ豸 + uint8_t TimeGetFlag; //ʱȡ־ ÿõʱ䣬ͼ ӷȡʱ + uint8_t Lock485Addr; //΢485ַ + uint8_t CheckTypeNum; //Ѳ豸 + uint8_t CheckMapList[4]; //Ѳ豸б + uint8_t OffLineDevType; //豸 2023-10-08 + uint8_t OffLineDevAddr; //豸ַ 2023-10-08 + uint8_t InputType; //豸 2023-10-08 + uint8_t InputAddr; //豸ַ 2023-10-08 + uint8_t InputLoop; //豸· 2023-10-08 + uint8_t People_Flag; //˱ 2024-03-01 + uint8_t ServerCtrl; // + uint8_t CardInFlag; //סʱ˯߱ 2024-04-29 + uint8_t TimeSyncFlag; //ʱͬ + uint8_t DayStart; //쿪ʼʱ + uint8_t DayEnd; //ʱ + uint8_t VC_ConNToSGruop; //޿ȡ + uint8_t VC_ConNToSSubset; //޿ȡ + uint8_t VC_ConSToNGruop; //޿ȡ + uint8_t VC_ConSToNSubset; //޿ȡ + uint8_t VC_PortNum; //޿ȡ˿ uint8_t Dim_Lower_limit; // uint8_t Dim_Upper_limit; // - uint8_t Service_16; //16״̬ - uint8_t sram_save_flag; //ⲿSRAM־λ - uint8_t Last_EleState; //һȡ״̬ uint8_t SleepMode_State; uint8_t Last_SleepMode_State; @@ -229,9 +199,6 @@ typedef struct{ uint8_t Person_Detected; //ȡе ˻״̬ 忨ȡ硢״ӦҲ㣩 uint8_t Last_Person_Detected; - uint16_t Last_DimGlobalValue; //ϴαĵֵ - uint16_t Last_CCTValue; //ϴαĵɫֵ - uint8_t CardState; //忨״̬ uint8_t Last_CardState; @@ -239,6 +206,23 @@ typedef struct{ uint8_t Last_Rs485CardType; uint8_t Last_NeightState; + uint16_t SleepActionNo; //˯߳ Ϊ0Ч + uint16_t CheckMapDevNum; //2023-11-27 Ѳ + uint16_t DimGlobalValue; //ȫ + uint16_t CCTValue; //ɫֵ + uint16_t Last_DimGlobalValue; //ϴαĵֵ + uint16_t Last_CCTValue; //ϴαĵɫֵ + uint16_t DevActionNum; //豸 Χ0~(DevActionNumMax-1) + uint16_t DevActioni; //ڱжȫֲ Χ0~(DevActionNumMax-1) + uint16_t DevDlyNum; //ʱ豸 + uint16_t DevDlyi; //ڱеʱ豸 + uint16_t BlwMapDevNum; //ӳ豸 2024-08-28 uint8_t uint16_t + + uint32_t DevLockAddr; //΢豸ַ + uint32_t pc_addr; //豸ַ + + Dev_Action_U64Cond DevActionU64Cond; //64λο + }BLV_DevAction_Manage_G; #define DevDlyStructLen sizeof(Struct_Dev_Dly) //ʱṹ峤 @@ -273,14 +257,14 @@ typedef struct typedef struct{ uint8_t Addr; - uint32_t ExpandReadFlag; uint16_t ExpandReadState[32]; + uint32_t ExpandReadFlag; }EXPAND_TYPE_G; //̵Ⱥ״̬ṹ typedef struct{ uint8_t Addr; - uint32_t DimmReadFlag; uint16_t DimmReadState[32]; + uint32_t DimmReadFlag; }DIMM_TYPE_G; //Ⱥ״̬ṹ @@ -294,11 +278,14 @@ typedef struct{ extern BLV_DevAction_Manage_G DevActionGlobal; +void Logic_DevAction_Add(uint8_t *data,uint16_t len); + uint32_t DevAction_No_Get(uint16_t DevActionNo); uint32_t Add_DevDly_To_List(uint8_t DevType, uint32_t DevDlyAddr, uint16_t DevOutputLoop); uint32_t DevDlyAddr_Get(uint32_t DevDlyAddr, uint16_t DevOutputLoop); 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); #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 985ffb8..21b8b3a 100644 --- a/MCU_Driver/inc/blv_rs485_protocol.h +++ b/MCU_Driver/inc/blv_rs485_protocol.h @@ -172,7 +172,8 @@ typedef void (*Dev_Output_Group_Ctrl_ptr)(uint32_t CfgDevAddIn, uint16_t DevInpu typedef uint16_t (*Dev_Output_Loop_Group_State_Get_ptr)(uint32_t devaddr, uint8_t SceneType, uint32_t ReadFlag, uint8_t ReadNum,uint16_t *start); /*ָͶ*/ -#define Dev_Fun_Ptr_Len sizeof(Struct_Dev_Fun_Info) //Ŀǰÿ豸ĸָ һ16ֽ +#define Dev_Fun_Ptr_Len 24 //Ŀǰÿ豸6ָ һ24ֽ + typedef struct { @@ -226,30 +227,35 @@ typedef struct{ typedef struct{ uint8_t port_mode; //˿ģʽ - 0x01:ģʽ 0x02:͸ģʽ 0x03:ģʽ uint8_t pass_state; //͸״̬ + + uint8_t BUS_Start; //BUS״̬ + uint8_t device_num; //豸 + + uint8_t Process_Flag; //־ + uint8_t Retry_Flag; //طǣ֮ǰ,յظǺ㣬 + + uint8_t n_dev_type; //ǰ豸 + uint8_t n_dev_addr; //ǰ豸ַ + + uint8_t n_retry_num; //ǰ豸ط + uint16_t n_dev_datalen; //ǰ豸ݳ + + uint32_t send_wait; //͵ȴʱ + uint32_t n_dev_waittime; //ǰ豸͵ȴʱ + uint32_t n_list_read_addr; //ǰȡ豸ַ + uint32_t Last_list_addr; //һ豸ַ + + uint32_t change_tick; //лʱ uint32_t mode_tick; //ģʽǰʱ uint32_t mode_outtime; //ģʽʱʱ uint32_t pass_tick; //͸ǰʱ uint32_t pass_outtime; //͸ʱʱ uint32_t baud; //ǰ - fun4_prt BaudRateCfg; //л - uint8_t BUS_Start; //BUS״̬ - uint8_t device_num; //豸 - uint32_t n_list_read_addr; //ǰȡ豸ַ - uint32_t Last_list_addr; //һ豸ַ - uint32_t send_wait; //͵ȴʱ - uint8_t Process_Flag; //־ - uint8_t Retry_Flag; //طǣ֮ǰ,յظǺ㣬 - uint32_t change_tick; //лʱ - - uint8_t n_dev_type; //ǰ豸 - uint8_t n_dev_addr; //ǰ豸ַ - uint16_t n_dev_datalen; //ǰ豸ݳ - uint32_t n_dev_waittime; //ǰ豸͵ȴʱ - uint8_t n_retry_num; //ǰ豸ط uint32_t n_polling_cf; //ǰ豸ѯͻصָ uint32_t n_processing_cf; //ǰ豸ݻصָ + fun4_prt BaudRateCfg; //л }BLV_BUS_Manage_G; typedef struct{ @@ -320,10 +326,16 @@ extern BLV_POLL_Manage_G Poll485_Info; extern BLV_ACTIVE_Manage_G Act485_Info; extern BLV_NORDEV_Manage_G NorDevInfoGlobal; +uint8_t BLV_Device_Info_Write_To_SRAM( uint32_t dev_addr, Device_Public_Information_G *dev_info, uint8_t *dev_data, uint16_t data_len); +uint8_t BLV_Device_PublicInfo_Read_To_Struct( uint32_t dev_addr, Device_Public_Information_G *dev_info); +void BLV_Device_Public_Info_Printf(Device_Public_Information_G *dev_info); +uint8_t BLV_Device_PublicInfo_Update_To_Struct( uint32_t dev_addr, Device_Public_Information_G *dev_info); + void Add_BUS_Device_To_List(Device_Public_Information_G *dev_info,uint8_t *dev_data,uint16_t data_len); void Add_POLL_Device_To_List(Device_Public_Information_G *dev_info,uint8_t *dev_data,uint16_t data_len); void Add_ACT_Device_To_List(Device_Public_Information_G *dev_info,uint8_t *dev_data,uint16_t data_len); void Add_Nor_Device_To_List(Device_Public_Information_G *dev_info,uint8_t *dev_data,uint16_t data_len); + uint8_t Device_Data_Check(uint32_t sram_addr); void BLV_BUS_Polling_Task(void); void BUS485Port_Passthrough_Task(void); diff --git a/MCU_Driver/inc/logic_file_function.h b/MCU_Driver/inc/logic_file_function.h index 2800ee2..0061dfb 100644 --- a/MCU_Driver/inc/logic_file_function.h +++ b/MCU_Driver/inc/logic_file_function.h @@ -73,10 +73,8 @@ typedef struct { uint8_t type; //豸 uint8_t addr; //豸ַ uint8_t port; //豸˿ - uint32_t baud; //豸 uint8_t version; //豸Э汾 uint8_t retry; //ͨѶط - uint16_t writ_time; //ͨѶȴʱ uint8_t ipaddr[4]; //п豸 uint8_t parent_type; //豸 uint8_t parent_addr; //豸ַ @@ -86,7 +84,9 @@ typedef struct { uint8_t remain[42]; //ֽ uint16_t input_num; //· uint16_t output_num; //· -}LOGICFILE_DEVICE_INFO; //߼ļ - 豸Ϣṹ + uint16_t writ_time; //ͨѶȴʱ + uint32_t baud; //豸 +}LOGICFILE_DEVICE_INFO; //߼ļ - 豸Ϣṹ(עⱣFlashбݽṹ붨IJͬ) typedef struct{ uint64_t DevActionOutFlag:1; //ʹ @@ -114,14 +114,15 @@ typedef struct{ uint64_t Reserve1:2; //2λ }LOGIC_ACTIVE_CONDITION_G; //߼ļ - 豸ṹ + typedef struct { uint8_t type; //豸 uint8_t addr; //豸ַ - uint16_t loop; //豸· uint8_t execute; //豸ִзʽ uint8_t content; //豸ִ uint8_t delay_time; //ִʱʱ uint8_t delay_unit; //ִʱʱ䵥λ + uint16_t loop; //豸· }LOGIC_DEVICE_ACTIVE_G; //߼ݽṹ #if C8_TYPE @@ -163,6 +164,7 @@ typedef struct { void BLV_DevAction_AllData_Init(void); uint8_t Read_LogicFile_Information(uint8_t select,uint8_t *buff); +void Logic_Device_Action_Data_Analysis(uint8_t *data); uint8_t LOGIC_FILE_Check(void); diff --git a/MCU_Driver/inc/sram_mem_addr.h b/MCU_Driver/inc/sram_mem_addr.h index 1acc5aa..78d726c 100644 --- a/MCU_Driver/inc/sram_mem_addr.h +++ b/MCU_Driver/inc/sram_mem_addr.h @@ -234,6 +234,7 @@ /**********SRAMļ· ض - **********/ #define SRAM_DevAction_List_Size 0x0400 //ÿ豸ڵ洢ռС - ǰ豸ڵ +#define SRAM_DevAction_List_Num 950 #define SRAM_DevAction_List_Start_Addr 0x00100000 //豸ʼַ һ960K #define SRAM_DevAction_List_End_Addr 0x001EFFFF //豸ַ diff --git a/MCU_Driver/logic_file_function.c b/MCU_Driver/logic_file_function.c index 38ee9d5..fbbef54 100644 --- a/MCU_Driver/logic_file_function.c +++ b/MCU_Driver/logic_file_function.c @@ -9,6 +9,8 @@ #include #include +#define LOGIC_DEBUG_INFO_EN 1 + /******************************************************************************* * Function Name : DevAction_CondData_Init * Description : ݳʼ @@ -44,7 +46,7 @@ __attribute__((section(".non_0_wait"))) void Action_Coord_Get(uint32_t Dev_proce /******************************************************************************* * Function Name : Action_Coord_Get -* Description : 豸±õ +* Description : 豸±õ - ʵ㣺ʲôʹãģ * Input : Dev_processing_addr :豸ڵַ BUS_Public : @@ -58,33 +60,34 @@ __attribute__((section(".non_0_wait"))) void Dev_Coord_Get(void) for(i = 0; i < DevActionGlobal.DevNum; i++) { Dev_processing_addr = SRAM_Device_List_Start_Addr + i*SRAM_Device_List_Size; - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), Dev_processing_addr); //й + BLV_Device_PublicInfo_Read_To_Struct(Dev_processing_addr,&BUS_Public); BUS_Public.DevCoord = i; //õ豸± Action_Coord_Get(Dev_processing_addr, &BUS_Public); //õ± - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸׼±,ַ:%08X豸:%d豸ַ:%d豸±:%d±:%d", Dev_processing_addr, BUS_Public.type, BUS_Public.addr, BUS_Public.DevCoord, BUS_Public.ActionCoord); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸׼±,ַ:%X豸:%d豸ַ:%d豸±:%d±:%d", Dev_processing_addr, BUS_Public.type, BUS_Public.addr, BUS_Public.DevCoord, BUS_Public.ActionCoord); switch(BUS_Public.type) { case Dev_Host_HVout: //Ϊ̵ if((ENUM_RS485_DEV_PRO_01 == BUS_Public.Protocol)&&(0x00 == BUS_Public.addr)) //1Э ַΪ0 { -// NOR_HVOUT_INFO DevHVoutInfo; //̵ֲ -// 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); //̵˽д + NOR_HVOUT_INFO DevHVoutInfo; //̵ֲ + 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); //̵˽д + + BLV_Device_Info_Write_To_SRAM(Dev_processing_addr, &BUS_Public, (uint8_t *)&DevHVoutInfo,sizeof(NOR_HVOUT_INFO)); + }else { + + BLV_Device_PublicInfo_Update_To_Struct(Dev_processing_addr,&BUS_Public); } break; + default: + /*±浱ǰ豸*/ + BLV_Device_PublicInfo_Update_To_Struct(Dev_processing_addr,&BUS_Public); + break; } - /*±浱ǰ豸*/ - BUS_Public.check = 0x00; - SRAM_Write_Byte(BUS_Public.check, Dev_processing_addr+Dev_Check); //У - SRAM_Write_Word(BUS_Public.DevCoord, Dev_processing_addr+Dev_Coord); //д豸± - SRAM_Write_Word(BUS_Public.ActionCoord, Dev_processing_addr+Dev_ActionCoord); //д붯± - - BUS_Public.check = Log_CheckSum(Dev_processing_addr,BUS_Public.data_len); //¼У DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485SwiInfo, sizeof(RS485_SWI_INFO)); - SRAM_Write_Byte(BUS_Public.check, Dev_processing_addr+Dev_Check); //дУ } } @@ -105,7 +108,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) 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); DevActionInfoi.DevActionState.DevAddrIn = Find_AllDevice_List_Information(DevActionInfoi.DevActionInput.DevType, DevActionInfoi.DevActionInput.DevAddr); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:%d豸:%d豸ַ:%d,豸ַ:%04x", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ豸:%d豸:%d豸ַ:%d,豸ַ:%x", DevActionInfoi.DevCtrlNum, DevActionInfoi.DevActionInput.DevType, DevActionInfoi.DevActionInput.DevAddr, @@ -126,7 +129,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) && ( DevActionInfoi.DevActionInput.inAddr == DevActionInfoj.DevActionInput.inAddr ) && ( DevActionInfoi.DevActionInput.inType == DevActionInfoj.DevActionInput.inType ) ) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰַ:%08X֮ǰַ:%08X", list_addri, list_addrj); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰַ:%X֮ǰַ:%X", list_addri, list_addrj); DevActionInfoi.DevActionState.SceneReuseFlag = 0x01; if( (DevActionInfoi.DevActionInput.DevType == DEV_RS485_SWT) && (DevActionInfoi.DevActionCond.SceneExcute == ACTION_SCENE_MULTI) @@ -141,7 +144,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) DevActionInfoi.DevActionState.MultiSetFlag = 0x01; DevActionInfoi.DevActionState.MultiNumber = 0x01; DevActionInfoi.DevActionState.MultiValidNo++; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ·:%d ʼַ:%08X ±:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ·:%d ʼַ:%X ±:%d", DevActionInfoi.DevActionInput.DevAddr, DevActionInfoi.DevActionInput.inAddr, list_addri, @@ -158,7 +161,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) DevActionInfoj.DevActionState.MultiNumber = DevActionInfoi.DevActionState.MultiValidNo; DevActionInfoj.DevActionState.MultiSetFlag = 0x01; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ·:%d ǰַ:%08X ±:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%d ·:%d ǰַ:%X ±:%d", DevActionInfoj.DevActionInput.DevAddr, DevActionInfoj.DevActionInput.inAddr, list_addrj, @@ -169,7 +172,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) { SRAM_Write_Byte(0x00,list_addrj+k); } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Ϊ±λ׼±,ַ:%08X", list_addrj); + 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); @@ -178,17 +181,14 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) DevAdd = Find_AllDevice_List_Information2(Active_Port, DevActionInfoi.DevActionInput.DevType, DevActionInfoi.DevActionInput.DevAddr); if(DevAdd != 0x00) { - SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),DevAdd); + BLV_Device_PublicInfo_Read_To_Struct(DevAdd,&BUS_Public); 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; } - BUS_Public.check = 0x00; - BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485SwiInfo, sizeof(RS485_SWI_INFO)); - SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),DevAdd); - SRAM_DMA_Write_Buff((uint8_t *)&Rs485SwiInfo,sizeof(RS485_SWI_INFO),DevAdd+Dev_Privately); + 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, @@ -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,"ǰ,ַ:%08X ַ:%08X ±:%d ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ,ַ:%X ַ:%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,չ豸洢ַ:%04x", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"չ豸:%dչ豸ַ:%d,չ豸·ַ:%d,չ豸洢ַ:%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,"ǰʱ豸׼±,ַ:%08X ±:%d,ʱڵ:%08X 漰ʱ豸ַ:%08X, ·:%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,"ǰʱ׼±,ַ:%08X ±:%d,ʱڵ:%08X 漰ʱ豸ַ:%08X, ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰʱ׼±,ַ:%X ±:%d,ʱڵ:%X 漰ʱ豸ַ:%X, ·:%d", list_addri, i, DevActionInfoi.DevActionOutput[k].DevDlyAddr, @@ -261,7 +261,7 @@ __attribute__((section(".non_0_wait"))) void DevAction_ReuseFlag_Get(void) { SRAM_Write_Byte(0x00,list_addri+k); } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰΪñ־λ׼±,ַ:%08X", list_addri); + 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); //д @@ -297,7 +297,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,"ǰ׼±,ַ:%08X ַ:%08X ±:%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); @@ -345,7 +345,7 @@ __attribute__((section(".non_0_wait"))) void Expand_Scene_Get(void) { SRAM_Write_Byte(0x00,list_addr+k); } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%08X", list_addr); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%X", list_addr); DevActionInfo.CheckVal = 0x00; SRAM_DMA_Write_Buff((uint8_t *)&DevActionInfo, DevActionInfo.data_len, list_addr); //д @@ -368,7 +368,7 @@ __attribute__((section(".non_0_wait"))) void Expand_DevDly_Get(void) uint32_t list_addr = 0; DEV_ACTION_INFO DevActionInfo; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʼеĶ :%d, ʼַ:%08X",DevActionGlobal.DevActionNum, SRAM_DevAction_List_Start_Addr); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ʼеĶ :%d, ʼַ:%X",DevActionGlobal.DevActionNum, SRAM_DevAction_List_Start_Addr); for(i = 0; i < DevActionGlobal.DevActionNum; i++) { @@ -383,7 +383,7 @@ __attribute__((section(".non_0_wait"))) void Expand_DevDly_Get(void) if(DevActionInfo.DevActionOutput[j].DevDlyAddr != 0x00) { KeepFlag = 0x01; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%08X ±:%d,ʱڵ:%08X 漰ʱ豸ַ:%08X, ·:%d", + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%X ±:%d,ʱڵ:%X 漰ʱ豸ַ:%X, ·:%d", list_addr, i, DevActionInfo.DevActionOutput[j].DevDlyAddr, @@ -399,7 +399,7 @@ __attribute__((section(".non_0_wait"))) void Expand_DevDly_Get(void) { SRAM_Write_Byte(0x00,list_addr+k); } - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%08X", list_addr); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ǰ׼±,ַ:%X", list_addr); DevActionInfo.CheckVal = 0x00; //У0д SRAM_DMA_Write_Buff((uint8_t *)&DevActionInfo, DevActionInfo.data_len, list_addr); //д @@ -422,6 +422,8 @@ __attribute__((section(".non_0_wait"))) void BLV_DevAction_AllData_Init(void) memset((void *)&NorDevInfoGlobal,0,sizeof(BLV_NORDEV_Manage_G)); memset((void *)&DevActionGlobal,0,sizeof(BLV_DevAction_Manage_G)); //ȫֲȫ0 + BUS485_Info.port_mode = Port_Normal_Mode; + //SRAM_PowerOn_Restore_ParaInfo(); DevAction_CondData_Init(); //ݳʼ @@ -1041,7 +1043,7 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_LogicInfo_TempProce strncpy(temp_str,(const char *)&data[temp_len],7); temp_data = temp_str[0]*256+temp_str[1]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"߼ʱ: %04d-%02d-%02d %02d:%02d:%02d \r\n",temp_data,temp_str[2],temp_str[3],temp_str[4],temp_str[5],temp_str[6]); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"߼ʱ: %d-%d-%d %d:%d:%d \r\n",temp_data,temp_str[2],temp_str[3],temp_str[4],temp_str[5],temp_str[6]); temp_len += 7; strncpy(temp_str,(const char *)&data[temp_len],32); @@ -1258,10 +1260,10 @@ __attribute__((section(".non_0_wait"))) uint8_t Read_LogicFile_Information(uint8 Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"CRCУʧ!"); } }else{ - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ȡݳȲڷΧ:%08X - %d",temp_len); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ȡݳȲڷΧ:%X - %d",temp_len); } }else { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"߼ļݰͷ!%02X %02X",Flash_read_Byte(SPIFLASH_LOGIC_DataStart_ADDRESS+Logic_D_Hear_L) , Flash_read_Byte(SPIFLASH_LOGIC_DataStart_ADDRESS+Logic_D_Hear_H)); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"߼ļݰͷ!%X %X",Flash_read_Byte(SPIFLASH_LOGIC_DataStart_ADDRESS+Logic_D_Hear_L) , Flash_read_Byte(SPIFLASH_LOGIC_DataStart_ADDRESS+Logic_D_Hear_H)); } return rev; @@ -1492,6 +1494,67 @@ __attribute__((section(".non_0_wait"))) uint8_t Logic_DeviceType_Legal_Judgment( return rev; } +/******************************************************************************* +* Function Name : LogicFile_Device_Info_Struct_Assignment +* Description : ߼ļ - 豸Ϣṹ帳ֵ + - *豸 - 1Byte + - *豸ַ - 1Byte + - *豸˿ - 1Byte + - *豸 - 4Byte + - *豸Э汾 - 1Byte + - *豸ͨѶط - 1Byte + - *豸ͨѶȴʱ - 2Byte + - *п豸 - 4Byte + - *豸 - 1Byte + - *豸ַ - 1Byte + - *豸˿ - 1Byte + - *޿ϵ· - 5Byte + - *˽ - 10Byte + - *ֽ - 42Byte + - *豸· - 1Byte + - *豸· - 1Byte +* Return : +*******************************************************************************/ +uint8_t LogicFile_Device_Info_Struct_Assignment(uint8_t *data,LOGICFILE_DEVICE_INFO *dev_info) +{ + dev_info->type = data[0]; + dev_info->addr = data[1]; + dev_info->port = data[2]; + + dev_info->baud = data[6]; + dev_info->baud <<= 8; + dev_info->baud |= data[5]; + dev_info->baud <<= 8; + dev_info->baud |= data[4]; + dev_info->baud <<= 8; + dev_info->baud |= data[3]; + + dev_info->version = data[7]; + dev_info->retry = data[8]; + dev_info->writ_time = data[10]; + dev_info->writ_time <<= 8; + dev_info->writ_time |= data[9]; + + memcpy(dev_info->ipaddr,&data[11],4); + + dev_info->parent_type = data[15]; + dev_info->parent_addr = data[16]; + dev_info->parent_port = data[17]; + + memcpy(dev_info->lin,&data[18],5); + memcpy(dev_info->priproperty,&data[23],10); + memcpy(dev_info->remain,&data[33],42); + dev_info->input_num = data[76]; + dev_info->input_num <<= 8; + dev_info->input_num |= data[75]; + + dev_info->output_num = data[78]; + dev_info->output_num <<= 8; + dev_info->output_num |= data[77]; + + return 0x00; +} + /******************************************************************************* * Function Name : Logic_FrameType_DeviceExist_TempProcessing * Description : ߼ļ - 豸 ʱ @@ -1505,11 +1568,13 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_DeviceExist_TempPro uint16_t len) { uint32_t temp_len = 0; - char temp_str[38] = {0}; + //char temp_str[38] = {0}; LOGICFILE_DEVICE_INFO temp_dev_info; Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s",__func__); - memcpy(&temp_dev_info,data,sizeof(LOGICFILE_DEVICE_INFO)); + if(len < LogicFile_DeviceInfo_InputSet) return; + + LogicFile_Device_Info_Struct_Assignment(data,&temp_dev_info); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸:%d - %s",temp_dev_info.type,Logic_Info_DeviceType_To_String(temp_dev_info.type)); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%d",temp_dev_info.addr); @@ -1535,12 +1600,12 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_DeviceExist_TempPro temp_len += temp_dev_info.input_num*4; /*· - ·*32Byte 2022-06-07 ȸΪ32Byte*/ - for(uint16_t i=0;idevice_num += 1; @@ -1731,6 +1796,17 @@ __attribute__((section(".non_0_wait"))) void Logic_Device_Action_Data_Analysis(u LOGIC_DEVICE_ACTIVE_G temp_active; memcpy(&temp_active,data,sizeof(LOGIC_DEVICE_ACTIVE_G)); + + temp_active.type = data[0]; + temp_active.addr = data[1]; + temp_active.loop = data[3]; + temp_active.loop <<= 8; + temp_active.loop |= data[2]; + temp_active.execute = data[4]; + temp_active.content = data[5]; + temp_active.delay_time = data[6]; + temp_active.delay_unit = data[7]; + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"****************************"); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸:%d - %s",temp_active.type,Logic_Info_DeviceType_To_String(temp_active.type)); Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"豸ַ:%d",temp_active.addr); @@ -2426,7 +2502,7 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_DeviceAction_TempPr char temp_str[38] = {0}; uint32_t temp_len = 0; uint32_t temp_data = 0; - uint8_t temp_num = 0; + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"%s",__func__); Lfile_info->active_num += 1; @@ -2448,46 +2524,46 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_DeviceAction_TempPr temp_len += 2; temp_data = Data_Uint8_Convert_To_Uint16(&data[temp_len]); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"¼:0x%04x",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"¼:0x%x",temp_data); temp_len += 2; temp_data = data[temp_len]; Logic_Info_DeviceAction_Condition_To_String(&data[temp_len]); // - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ1:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ1:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ2:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ2:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ3:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ3:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ4:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ4:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ5:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ5:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ6:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ6:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ7:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ7:%X",temp_data); temp_len += 1; temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ8:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִ8:%X",temp_data); temp_len += 1; temp_len += 32; //2022-05-29 32Byte temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִзʽ:%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ִзʽ:%X",temp_data); temp_len += 1; strncpy(temp_str,(const char *)&data[temp_len],32); @@ -2502,7 +2578,7 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_DeviceAction_TempPr temp_len += 32; //2022-05-29 temp_data = data[temp_len]; - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%02X",temp_data); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,":%X",temp_data); temp_len += 1; if((temp_len + temp_data*8) > len) @@ -2510,18 +2586,8 @@ __attribute__((section(".non_0_wait"))) void Logic_FrameType_DeviceAction_TempPr Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"Ȳ:%d - %d",temp_len + temp_data*8,len); return ; } - temp_num = temp_data; - // - for(uint16_t i=0;i= 0x70000)) { - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"߼ļȲ:%08X",file_len); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"߼ļȲ:%X",file_len); return 0x01; } @@ -3658,10 +3729,10 @@ __attribute__((section(".non_0_wait"))) uint8_t LOGIC_FILE_Check(void) /*BLV_BUS˿ڳʼ*/ UARTx_Init(UART_3,BUS485_Info.baud); - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS485 Device Info Endaddr:%08X ---",SRAM_Read_DW(SRAM_BUS_Device_List_Addr)); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BUS485 Device Info Endaddr:%X ---",SRAM_Read_DW(SRAM_BUS_Device_List_Addr)); Poll485_Info.Last_list_addr = SRAM_Read_DW(SRAM_BUS_Device_List_Addr); - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Poll485_Info addr:%08X ----",Poll485_Info.Last_list_addr); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Poll485_Info addr:%X ----",Poll485_Info.Last_list_addr); SRAM_Write_DW(Poll485_Info.Last_list_addr,SRAM_POLL_Device_List_Addr); //ʼPollingʼַ @@ -3716,7 +3787,7 @@ __attribute__((section(".non_0_wait"))) uint8_t LOGIC_FILE_Check(void) Dbg_Println(DBG_BIT_SYS_STATUS_bit,"ѯ豸:%d", Poll485_Info.device_num); - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_POLL_dev END:%08X",SRAM_Read_DW(SRAM_POLL_Device_List_Addr)); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_POLL_dev END:%X",SRAM_Read_DW(SRAM_POLL_Device_List_Addr)); /*˿ڳʼ*/ Poll485_Info.port_mode = Port_Normal_Mode; @@ -3733,7 +3804,7 @@ __attribute__((section(".non_0_wait"))) uint8_t LOGIC_FILE_Check(void) Act485_Info.Last_list_addr = SRAM_Read_DW(SRAM_POLL_Device_List_Addr); //豸ʼַ - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Act485_Info addr:%08X ----",Act485_Info.Last_list_addr); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Act485_Info addr:%X ----",Act485_Info.Last_list_addr); SRAM_Write_DW(Act485_Info.Last_list_addr,SRAM_ACTIVE_Device_List_Addr); //ʼ豸Ϣʼַ Act485_Info.device_num = 0; //豸 @@ -3781,15 +3852,15 @@ __attribute__((section(".non_0_wait"))) uint8_t LOGIC_FILE_Check(void) } } /*ӲԽӿ*/ - //Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ĬPCԽӿ "); - //BLV_PC_DEVICE_TEST_Init(); - //Act485_Info.device_num += 1; + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ĬPCԽӿ "); + BLV_PC_DEVICE_TEST_Init(); + Act485_Info.device_num += 1; //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Ĭ忨״̬ͬ豸"); //BLW_RS485_CardState_AddTo_ActivePort(); //2023-10-31 Dbg_Println(DBG_BIT_SYS_STATUS_bit,"豸:%d", Act485_Info.device_num); - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Active Device End List:%08X" , SRAM_Read_DW(SRAM_ACTIVE_Device_List_Addr)); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Active Device End List:%X" , SRAM_Read_DW(SRAM_ACTIVE_Device_List_Addr)); Act485_Info.Act_Start = B_IDLE; Act485_Info.baud = 9600; @@ -3798,12 +3869,11 @@ __attribute__((section(".non_0_wait"))) uint8_t LOGIC_FILE_Check(void) /*ʼ˿*/ UARTx_Init(UART_2,Act485_Info.baud); - temp = SRAM_Read_DW(SRAM_ACTIVE_Device_List_Addr); - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Act485 Device Info Endaddr:%08X ----",temp); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Act485 Device Info Endaddr:%X ----",temp); SRAM_Write_DW(temp,SRAM_NORMAL_Device_List_Addr); - Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ͨ豸:%08X",temp); + Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ͨ豸:%X",temp); //ͨ豸 for(uint8_t i=0;i> 8) & 0xFF),g_uart[UART_0].RX_Buffer_WriteAddr+1); + SRAM_DMA_Write_Buff(g_uart[UART_0].RecvBuffer,g_uart[UART_0].RecvLen,g_uart[UART_0].RX_Buffer_WriteAddr+2); + + g_uart[UART_0].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size; + if( g_uart[UART_0].RX_Buffer_WriteAddr > SRAM_UART0_RecvBuffer_End_Addr ) g_uart[UART_0].RX_Buffer_WriteAddr = SRAM_UART0_RecvBuffer_Start_Addr; g_uart[UART_0].RecvLen = 0; - g_uart[UART_0].Receiving = 0; } } } @@ -270,7 +294,10 @@ __attribute__((section(".non_0_wait"))) void UART1_RECEIVE(void) Dbg_Println(DBG_BIT_SYS_STATUS_bit,"UART_1 Len %d ",g_uart[UART_1].RecvLen); Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"UART_1 Buff:", g_uart[UART_1].RecvBuffer,g_uart[UART_1].RecvLen); + g_uart[UART_1].Receiving = 0; + //ݴSRAMݴ - ݽͷдݳ + if( g_uart[UART_1].RX_Buffer_WriteAddr < SRAM_UART1_RecvBuffer_Start_Addr) g_uart[UART_1].RX_Buffer_WriteAddr = SRAM_UART1_RecvBuffer_Start_Addr; SRAM_Write_Byte((uint8_t)(g_uart[UART_1].RecvLen & 0xFF),g_uart[UART_1].RX_Buffer_WriteAddr); SRAM_Write_Byte((uint8_t)((g_uart[UART_1].RecvLen >> 8) & 0xFF),g_uart[UART_1].RX_Buffer_WriteAddr+1); SRAM_DMA_Write_Buff(g_uart[UART_1].RecvBuffer,g_uart[UART_1].RecvLen,g_uart[UART_1].RX_Buffer_WriteAddr+2); @@ -279,7 +306,6 @@ __attribute__((section(".non_0_wait"))) void UART1_RECEIVE(void) if(g_uart[UART_1].RX_Buffer_WriteAddr > SRAM_UART1_RecvBuffer_End_Addr) g_uart[UART_1].RX_Buffer_WriteAddr = SRAM_UART1_RecvBuffer_Start_Addr; g_uart[UART_1].RecvLen = 0; - g_uart[UART_1].Receiving = 0; } } } @@ -304,10 +330,19 @@ __attribute__((section(".non_0_wait"))) void UART2_RECEIVE(void) Dbg_Println(DBG_BIT_SYS_STATUS_bit,"UART_2 Len %d ",g_uart[UART_2].RecvLen); Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"UART_2 Buff:", g_uart[UART_2].RecvBuffer,g_uart[UART_2].RecvLen); + g_uart[UART_2].Receiving = 0; + //ݴSRAMݴ - ݽͷдݳ + if( g_uart[UART_2].RX_Buffer_WriteAddr < SRAM_UART2_RecvBuffer_Start_Addr) g_uart[UART_2].RX_Buffer_WriteAddr = SRAM_UART2_RecvBuffer_Start_Addr; + SRAM_Write_Byte((uint8_t)(g_uart[UART_2].RecvLen & 0xFF),g_uart[UART_2].RX_Buffer_WriteAddr); + SRAM_Write_Byte((uint8_t)((g_uart[UART_2].RecvLen >> 8) & 0xFF),g_uart[UART_2].RX_Buffer_WriteAddr+1); + SRAM_DMA_Write_Buff(g_uart[UART_2].RecvBuffer,g_uart[UART_2].RecvLen,g_uart[UART_2].RX_Buffer_WriteAddr+2); + + g_uart[UART_2].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size; + if(g_uart[UART_2].RX_Buffer_WriteAddr > SRAM_UART2_RecvBuffer_End_Addr) g_uart[UART_2].RX_Buffer_WriteAddr = SRAM_UART2_RecvBuffer_Start_Addr; g_uart[UART_2].RecvLen = 0; - g_uart[UART_2].Receiving = 0; + } } } @@ -329,13 +364,21 @@ __attribute__((section(".non_0_wait"))) void UART3_RECEIVE(void) { g_uart[UART_3].RecvIdleTiming = SysTick_1ms; - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"UART_3 Len %d ",g_uart[UART_3].RecvLen); - Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"UART_3 Buff:", g_uart[UART_3].RecvBuffer,g_uart[UART_3].RecvLen); +// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"UART_3 Len %d ",g_uart[UART_3].RecvLen); +// Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"UART_3 Buff:", g_uart[UART_3].RecvBuffer,g_uart[UART_3].RecvLen); + g_uart[UART_3].Receiving = 0; + //ݴSRAMݴ - ݽͷдݳ + if( g_uart[UART_3].RX_Buffer_WriteAddr < SRAM_UART3_RecvBuffer_Start_Addr) g_uart[UART_3].RX_Buffer_WriteAddr = SRAM_UART3_RecvBuffer_Start_Addr; + SRAM_Write_Byte((uint8_t)(g_uart[UART_3].RecvLen & 0xFF),g_uart[UART_3].RX_Buffer_WriteAddr); + SRAM_Write_Byte((uint8_t)((g_uart[UART_3].RecvLen >> 8) & 0xFF),g_uart[UART_3].RX_Buffer_WriteAddr+1); + SRAM_DMA_Write_Buff(g_uart[UART_3].RecvBuffer,g_uart[UART_3].RecvLen,g_uart[UART_3].RX_Buffer_WriteAddr+2); + + g_uart[UART_3].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size; + if(g_uart[UART_3].RX_Buffer_WriteAddr > SRAM_UART3_RecvBuffer_End_Addr) g_uart[UART_3].RX_Buffer_WriteAddr = SRAM_UART3_RecvBuffer_Start_Addr; g_uart[UART_3].RecvLen = 0; - g_uart[UART_3].Receiving = 0; } } } diff --git a/Readme.md b/Readme.md index 96e5761..de61477 100644 --- a/Readme.md +++ b/Readme.md @@ -1,3 +1,15 @@ +#### 2026-01-05 + +​ 1、CSIO 继电器单独一个设备存放在BUS设备列表中,应该将这个设备存放到虚拟设备上 - 不合理的地方,待修改 + +​ 2、调试BUS总线通讯 - OK + +​ 3、动作执行 - 网络控制继电器 OK + +​ 4、增加C5继电器设备 + + + #### 2025-12-25 ​ 1、TFTP升级 - 配置文件初步测试没问题 diff --git a/User/includes.h b/User/includes.h index 3530c12..fd37f32 100644 --- a/User/includes.h +++ b/User/includes.h @@ -8,6 +8,7 @@ #ifndef USER_INCLUDES_H_ #define USER_INCLUDES_H_ +#include #include "ch564.h" #include "system_ch564.h" @@ -46,9 +47,10 @@ #include "blv_rs485_dev_c12dimming.h" #include "blv_rs485_dev_touchswitch.h" #include "blv_rs485_dev_touchtempt1.h" -#include "blv_nor_dec_virtualcard.h" #include "blv_nor_dev_hvoutfun.h" +#include "blv_nor_dev_c5relay.h" #include "blv_nor_dev_lvinput.h" +#include "blv_nor_dev_lvoutput.h" #include "blv_nor_dev_serviceinfo.h" #include "blv_rs485_dev_energymonitor.h" diff --git a/User/main.c b/User/main.c index a6cd346..64cec61 100644 --- a/User/main.c +++ b/User/main.c @@ -43,9 +43,11 @@ int main(void) WCHNET_LIB_Init(); - Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU Start!! 2025-11-03-10:42\r\n"); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU Start!! \r\n"); Dbg_Println(DBG_BIT_SYS_STATUS_bit,"SystemClk:%d\r\n", SystemCoreClock); + Dbg_Println(DBG_BIT_SYS_STATUS_bit,"DEV_ACTION_INFO Size:%d \r\n",sizeof(DEV_ACTION_INFO)); + BLV_DevAction_AllData_Init(); while (1) @@ -57,12 +59,15 @@ int main(void) UART2_RECEIVE(); UART3_RECEIVE(); - if(SysTick_1ms - test_tick >= 10000){ - test_tick = SysTick_1ms; + BLV_BUS485Port_ModeTask(); - //Dbg_Println(DBG_BIT_SYS_STATUS_bit,"RUN PYH:%x...\r\n",ETH_ReadPHYRegister(PHY_ADDRESS, PHY_BSR)); + BLV_PollPort_ModeTask(); - } + BLV_ActivePort_ModeTask(); + + //BLV_Nor_Dev_ModeTask(); + + BLV_DevAction_Task(); NetWork_Task();