feat:新建项目文件

BLV主机C1P模块
This commit is contained in:
caocong
2025-12-06 13:49:01 +08:00
commit d2d8800788
118 changed files with 47572 additions and 0 deletions

View File

@@ -0,0 +1,192 @@
/*
* blv_bus_dev_c5iofun.h
*
* Created on: Nov 11, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_BUS_DEV_C5IOFUN_H_
#define BLV_485_DRIVER_INC_BLV_BUS_DEV_C5IOFUN_H_
#include <stdint.h>
#include "ch564.h"
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define C5IOTYPE 0xF1 //C5IO<49><EFBFBD><E8B1B8><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>BLV_BUSЭ<53><D0AD>ͨѶʹ<D1B6><CAB9>
#define DEV_C5IO_Type 0xF1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
#define C5IO_REPEATSENDTIMEMAX 0x02 //<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
#define C5IO_SEND_WAIT_TIME 0x28 //<2F>ȴ<EFBFBD>ʱ<EFBFBD><CAB1> 2024-02-23
#define C5IO_RecvData_Len_MAX 0x28 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>Ŀǰ<C4BF>30Byte
#define BLV_C5IO_Inquire_CMD 0x20
#define BLV_C5IO_Set_Relay_CMD 0x21
#define BLV_C5IO_Set_Relay_Inching_CMD 0x22
#define BLV_C5IO_Set_Do_CMD 0x23
#define BLV_C5IO_Set_Do_Inching_CMD 0x24
#define BLV_C5IO_Set_Di_CMD 0x25
#define BLV_C5IO_SetRTC_CMD 0x27
#define BLV_C5IO_Reply_CMD 0xA0
#define BLV_C5IO_Reply_Result 0x00
#define BLV_C5IO_Relay_Result 0x01
#define BLV_C5IO_Relay_Inching_Result 0x02
#define BLV_C5IO_Do_Result 0x03
#define BLV_C5IO_Do_Inching_Result 0x04
#define BLV_C5IO_Di_Result 0x05
#define BLV_C5IO_Error_Result 0xF0
#define BUS_C5IO_DI_Key_Type 0x01 //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BUS_C5IO_DI_Pir_Type 0x02 //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - PIR<49><52><EFBFBD><EFBFBD>
#define BUS_C5IO_DI_Dry_Type 0x03 //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ɽӵ<C9BD>
#define BUS_C5IO_DI_Level_HIGH 0x20 //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define BUS_C5IO_DI_Level_LOW 0x10 //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define BUS_C5IO_DO_Common_Mode 0x00 //DO<44><4F><EFBFBD><EFBFBD>ģʽ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
#define BUS_C5IO_DO_Inching_Mode 0x01 //DO<44><4F><EFBFBD><EFBFBD>ģʽ - <20><EFBFBD><E3B6AF><EFBFBD><EFBFBD>ģʽ
#define BUS_C5IO_OUT_LOW 0x01
#define BUS_C5IO_OUT_HIGH 0x02
#define BUS_C5IO_OUT_TOGGLE 0x03
#define BUS_C5IO_Right_Inching 0x01
#define BUS_C5IO_Reverse_Inching 0x02
#define BUS_C5IO_Toggle_Inching 0x03
typedef enum{
C5IO_Relay_CH1,
C5IO_Relay_CH2,
C5IO_Relay_CH3,
C5IO_Relay_CH4,
C5IO_Relay_CH5,
C5IO_Relay_CH6,
C5IO_Relay_CH7,
C5IO_Relay_CH8,
C5IO_Relay_CH9,
C5IO_Relay_CH10,
C5IO_Relay_CH11,
C5IO_Relay_CH12,
C5IO_Relay_CH13,
C5IO_Relay_CH14,
C5IO_Relay_CH15,
C5IO_Relay_CH16,
C5IO_Relay_CH17,
C5IO_Relay_CH18,
C5IO_Relay_CH19,
C5IO_Relay_CH20,
C5IO_Relay_CH21,
C5IO_Relay_CH22,
C5IO_Relay_CH23,
C5IO_Relay_CH24,
C5IO_Relay_CH_MAX,
}BUS_C5IO_RELAY_NUM_E;
typedef enum{
C5IO_DO_CH1,
C5IO_DO_CH2,
C5IO_DO_CH3,
C5IO_DO_CH4,
C5IO_DO_CH5,
C5IO_DO_CH_MAX,
}BUS_C5IO_DO_NUM_E;
typedef enum{
C5IO_DI_CH1,
C5IO_DI_CH2,
C5IO_DI_CH3,
C5IO_DI_CH4,
C5IO_DI_CH5,
C5IO_DI_CH6,
C5IO_DI_CH7,
C5IO_DI_CH8,
C5IO_DI_CH9,
C5IO_DI_CH10,
C5IO_DI_CH11,
C5IO_DI_CH12,
C5IO_DI_CH13,
C5IO_DI_CH_MAX,
}BUS_C5IO_DI_NUM_E;
typedef struct{
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
uint8_t DO_Mode[C5IO_DO_CH_MAX]; //DO<44><4F><EFBFBD><EFBFBD>ģʽ
uint8_t DO_Control[C5IO_DO_CH_MAX]; //Do<44><6F><EFBFBD><EFBFBD>
uint16_t Last_DO_Level_Start; //֮ǰDOʵ<4F>ʵ<EFBFBD>ƽ״̬
uint16_t DO_Level_Actual_Start; //DOʵ<4F>ʵ<EFBFBD>ƽ״̬
uint16_t DO_Level_Perfect_Start; //DO<44><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ״̬
uint16_t DO_Inching_Tick[C5IO_DO_CH_MAX]; //DO<44>㶯ʱ<E3B6AF><CAB1><EFBFBD><EFBFBD>
uint16_t DO_Inching_Time[C5IO_DO_CH_MAX]; //DO<44>㶯ʱ<E3B6AF><CAB1>
uint8_t Relay_Mode[C5IO_Relay_CH_MAX]; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
uint8_t Relay_Control[C5IO_Relay_CH_MAX]; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t Last_Relay_Level_Start; //֮ǰ<D6AE>̵<EFBFBD><CCB5><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>ƽ״̬
uint32_t Relay_Level_Actual_Start; //<2F>̵<EFBFBD><CCB5><EFBFBD>ʵ<EFBFBD><CAB5>״̬
uint32_t Relay_Level_Perfect_Start; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
uint16_t Relay_Inching_Tick[C5IO_Relay_CH_MAX]; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>㶯ʱ<E3B6AF><CAB1><EFBFBD><EFBFBD>
uint16_t Relay_Inching_Time[C5IO_Relay_CH_MAX]; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>㶯ʱ<E3B6AF><CAB1>
uint8_t Relay_feedback; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
uint8_t DI_Type[C5IO_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0~3:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4~7:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ
uint16_t DI_Level_Actual_Start;
uint32_t DI_Actual_State;
uint32_t DI_Perfect_State;
uint8_t DI_Start[C5IO_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD>״̬
uint8_t DI_LastStart[C5IO_DI_CH_MAX];
uint8_t DI_Detection_Time[C5IO_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevSendSN; //<2F><><EFBFBD><EFBFBD>SN<53><4E>
uint8_t Send_Type; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t DI_Control_Flag; //DI<44><49><EFBFBD>Ʊ<EFBFBD>־λ
uint16_t Last_DI_Control_Flag; //DI<44>ϴο<CFB4><CEBF>Ʊ<EFBFBD>־λ
uint8_t DO_Control_Flag; //DO<44><4F><EFBFBD>Ʊ<EFBFBD>־λ
uint8_t Last_DO_Control_Flag; //DO<44>ϴο<CFB4><CEBF>Ʊ<EFBFBD>־λ
uint8_t DO_Inching_Control_Flag; //DO<44><EFBFBD><E3B6AF><EFBFBD>Ʊ<EFBFBD>־
uint8_t Last_DO_Inching_Control_Flag; //DO<44><EFBFBD>ϴο<CFB4><CEBF>Ʊ<EFBFBD>־
uint32_t Relay_Control_Flag; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
uint32_t Last_Relay_Control_Flag; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>ϴο<CFB4><CEBF>Ʊ<EFBFBD>־
uint32_t Relay_Inching_Control_Flag; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><E3B6AF><EFBFBD>Ʊ<EFBFBD>־λ
uint32_t Last_Relay_Inching_Control_Flag; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ϴο<CFB4><CEBF>Ʊ<EFBFBD>־λ
uint8_t C5IO_Version; //IO<49><4F><EFBFBD><EFBFBD><EFBFBD>汾 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C5 C12 CSIO
uint8_t comm_version; //CSIOͨѶЭ<D1B6><D0AD><EFBFBD><EFBFBD> - <20>Դ<EFBFBD><D4B4>İ汾<C4B0><E6B1BE>
uint32_t inquire_tick; //ѯ<><D1AF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint16_t CxIO_DI_Control_Flag; //<2F><>¼<EFBFBD><C2BC>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD>DI<44><49>·
uint8_t DI_Reset_Flag; //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t DI_Reset_Tick; //DI<44><49><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint8_t Relay_Reset_Flag; //<2F>̵<EFBFBD><CCB5><EFBFBD>״̬<D7B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
uint8_t rtc_set_flag;
uint8_t DI_Init_flag; //DI<44><49>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ 2025-08-07 <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>󣬲<EFBFBD><F3A3ACB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}BUS_C5IO_INFO;
void BLV_BUS_CSIO_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
void BLV_BUS_CSIO_DI_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
uint8_t BLV_BUS_C5IO_Cycle_Call(uint32_t dev_addr);
uint8_t BLV_CSIO_RTC_TimeValid(uint8_t *date);
uint8_t BLV_BUS_C5IO_Data_Processing(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
void BUS_C5IO_DI_Control_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_C5IO_DO_Control_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_C5IO_DO_Inching_Control_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_C5IO_Relay_Control_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_C5IO_Relay_Inching_Control_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_CSIO_SetRTCTime_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_C5IO_Inquire_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info);
void BUS_C5IO_Control_Relay(uint32_t dev_addr,uint8_t loop,uint8_t start);
void BUS_C5IO_Control_Do(uint32_t dev_addr,uint8_t loop,uint8_t start);
void BUS_C5IO_Control_Relay_Inching(uint32_t dev_addr,uint8_t loop,uint8_t start,uint16_t d_time);
void BUS_C5IO_Group_Control_Relay(uint32_t dev_addr,uint32_t loop,uint32_t start);
void BUS_CSIO_Set_RTC_Time(uint32_t dev_addr);
uint32_t Get_BUS_C5IO_Realy_Status(uint32_t devaddr);
uint8_t Get_BUS_C5IO_Online_Status(uint32_t devaddr);
uint8_t Get_Bus_C5IO_COMM_State(uint32_t devaddr);
uint8_t Get_Bus_CSIO_COMM_Version(uint32_t devaddr);
#endif /* BLV_485_DRIVER_INC_BLV_BUS_DEV_C5IOFUN_H_ */

View File

@@ -0,0 +1,250 @@
/*
* blv_bus_dev_c5music.h
*
* Created on: Nov 11, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_BUS_DEV_C5MUSIC_H_
#define BLV_485_DRIVER_INC_BLV_BUS_DEV_C5MUSIC_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define C5MUSICTYPE 0x01 //C5IO<49><EFBFBD><E8B1B8><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>BLV_BUSЭ<53><D0AD>ͨѶʹ<D1B6><CAB9>
#define DEV_C5MUSIC_Type 0x15 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
#define C5MUSIC_REPEATSENDTIMEMAX 0x04 //<2F><><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define C5MUSIC_SEND_WAIT_TIME 0x0020 //C5MUSIC<49><43><EFBFBD>͵ȴ<CDB5>ʱ<EFBFBD><CAB1> - 32ms
#define BLV_C5MUSIC_Playback_Status_CMD 0x20 //<2F><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Set_Default_Volume_CMD 0x21 //<2F><EFBFBD><E8B6A8><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Specify_Play_CMD 0x22 //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Set_Volume_CMD 0x23 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Query_Default_Volume_CMD 0x24 //<2F><>ѯĬ<D1AF><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Query_Volume_CMD 0x26 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Set_Loop_Mode_CMD 0x29 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Query_Loop_Mode_CMD 0x2A //<2F><>ѯѭ<D1AF><D1AD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Query_Filenum_CMD 0x2B //<2F><>ѯ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Query_Versions_CMD 0x2C //<2F><>ѯ<EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Write_FILEHEAD_CMD 0x2D //д<>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Write_FILEData_CMD 0x2E //д<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Read_FILEHEAD_CMD 0x2F //<2F><><EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Read_FILEData_CMD 0x40 //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Playback_Status_Reply 0x30 //<2F><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬<D7B4>ظ<EFBFBD>
#define BLV_C5MUSIC_Set_Default_Volume_Reply 0x31 //<2F><EFBFBD><E8B6A8><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ظ<EFBFBD>
#define BLV_C5MUSIC_Specify_Play_Reply 0x32 //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4>ظ<EFBFBD>
#define BLV_C5MUSIC_Set_Volume_Reply 0x33 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
#define BLV_C5MUSIC_Query_Default_Volume_Reply 0x34 //<2F><>ѯĬ<D1AF><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
#define BLV_C5MUSIC_Query_Volume_Reply 0x36 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
#define BLV_C5MUSIC_Set_Loop_Mode_Reply 0x39 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ<C4A3>ظ<EFBFBD>
#define BLV_C5MUSIC_Query_Loop_Mode_Reply 0x3A //<2F><>ѯѭ<D1AF><D1AD>ģʽ<C4A3>ظ<EFBFBD>
#define BLV_C5MUSIC_Query_Filenum_Reply 0x3B //<2F><>ѯ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>ظ<EFBFBD>
#define BLV_C5MUSIC_Query_Versions_Reply 0x3C //<2F><>ѯ<EFBFBD><EFBFBD>Żظ<C5BB>
#define BLV_C5MUSIC_Write_FILEHEAD_Reply 0x3D //д<>ļ<EFBFBD>ͷ<EFBFBD>ظ<EFBFBD>
#define BLV_C5MUSIC_Write_FILEData_Reply 0x3E //д<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݻظ<DDBB>
#define BLV_C5MUSIC_Read_FILEHEAD_Reply 0x3F //<2F><><EFBFBD>ļ<EFBFBD>ͷ<EFBFBD>ظ<EFBFBD>
#define BLV_C5MUSIC_Read_FILEData_Reply 0x50 //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݻظ<DDBB>
#define C5MUSIC_Control_Num 13 //13<31>ֿ<EFBFBD><D6BF><EFBFBD>
#define C5MUSIC_Set_Default_Volume_Flag 0x0001 //<2F><EFBFBD><E8B6A8><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Set_Volume_Flag 0x0002 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Set_Loop_Mode_Flag 0x0004 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ<C4A3><CABD><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Specify_Play_Flag 0x0008 //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Query_Default_Volume_Flag 0x0010 //<2F><>ѯĬ<D1AF><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Query_Volume_Flag 0x0020 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Query_Loop_Mode_Flag 0x0040 //<2F><>ѯѭ<D1AF><D1AD>ģʽ<C4A3><CABD><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Query_Filenum_Flag 0x0080 //<2F><>ѯ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Query_Versions_Flag 0x0100 //<2F><>ѯ<EFBFBD><EFBFBD>ſ<EFBFBD><C5BF>Ʊ<EFBFBD>־λ
#define C5MUSIC_Write_FILEHEAD_Flag 0x0200 //д<>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Write_FILEData_Flag 0x0400 //д<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>Ʊ<EFBFBD>־λ
#define C5MUSIC_Read_FILEHEAD_Flag 0x0800 //<2F><><EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>Ʊ<EFBFBD>־λ
#define C5MUSIC_Read_FILEData_Flag 0x1000 //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݻظ<DDBB><D8B8><EFBFBD>־λ
#define BLV_C5MUSIC_Relay_SUCC 0xE0 //<2F>޴<EFBFBD><DEB4><EFBFBD>
#define BLV_C5MUSIC_Relay_Check_Error 0xE1 //CRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Relay_CMD_Error 0xE2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Relay_Para_Error 0xE3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Relay_Other_Error 0xE4 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Music_Dir 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#define BLV_C5MUSIC_Warning_Dir 0x01 //<2F><>ʾ<EFBFBD><CABE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#define BLV_C5MUSIC_Helpsleep_Dir 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#define BLV_C5MUSIC_Doorbell_Dir 0x03 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#define BLV_C5MUSIC_Greet_Dir 0x04 //<2F><>ӭ<EFBFBD><D3AD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#define BLV_C5MUSIC_Helpsleep1_Dir 0x05 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>_1_ڤ<5F><DAA4>
#define BLV_C5MUSIC_Helpsleep2_Dir 0x06 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>_2_<32><5F><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Helpsleep3_Dir 0x07 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>_3_ɭ<5F><C9AD>
#define BLV_C5MUSIC_Full_Loop 0x00 //ȫ<><C8AB>ѭ<EFBFBD><D1AD>
#define BLV_C5MUSIC_Single_Cycle 0x01 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
#define BLV_C5MUSIC_Folder_Loop 0x02 //<2F>ļ<EFBFBD><C4BC><EFBFBD>ѭ<EFBFBD><D1AD>
#define BLV_C5MUSIC_Random_Cycle 0x03 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
#define BLV_C5MUSIC_Order_CyCle 0x05 //˳<><CBB3>ѭ<EFBFBD><D1AD>
#define BLV_C5MUSIC_Playing 0x00 //<2F><><EFBFBD><EFBFBD>״̬
#define BLV_C5MUSIC_Halted 0x01 //<2F><>ͣ״̬
#define BLV_C5MUSIC_Stopped 0x02 //ֹͣ״̬
#define BLV_C5MUSIC_Next_Song 0x03 //<2F><>һ<EFBFBD><D2BB>
#define BLV_C5MUSIC_Prev_Song 0x04 //<2F><>һ<EFBFBD><D2BB>
#define BLV_C5MUSIC_Fast_Forward 0x05 //<2F><><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Rewind 0x06 //<2F><><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Single_Play 0x07 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Forestall 0x08 //<2F><><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>
#define BLV_C5MUSIC_Volume_MAX 30 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Volume_MIN 0 //<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_Default_Volume 25 //Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_C5MUSIC_HelpSleep_Start_Volume 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֺ궨<D6BA>ʼ*/
#define MUSICLOOPMAX 0x05 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
#define CtrlDirectOpen 0x01 //<2F><>
#define CtrlDirectClose 0x02 //<2F><>
typedef struct{
uint8_t CtrlDirect; //<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>:0x00<30><30><EFBFBD><EFBFBD> 0x01<30><31><EFBFBD><EFBFBD> 0x02<30>ػ<EFBFBD> 0x03<30><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0x04<30>ز<EFBFBD><D8B2><EFBFBD>
uint8_t CtrlDir; //<2F><><EFBFBD><EFBFBD>Ŀ¼ <20><>CtrlDirectΪ0x03ʱ CtrlDir<69><72>ʾ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> CtrlCont<6E><74>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><>CtrlDirectΪ0x00ʱ CtrlDirΪ1<CEAA><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> CtrlDirΪ2<CEAA><32>ʾ<EFBFBD><CABE>ͣ
}DEV_MUSIC_CTRLWAY; //<2F><><EFBFBD>Ʒ<EFBFBD>ʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ػ<EFBFBD>
typedef struct{
uint8_t CtrlMode; //<2F><><EFBFBD><EFBFBD>ģʽ
uint8_t CtrlVoice; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}DEV_MUSIC_CTRLCONT; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct{
DEV_MUSIC_CTRLWAY DevMusicCtrlWay; //<2F><><EFBFBD>Ʒ<EFBFBD>ʽ
DEV_MUSIC_CTRLCONT CtrlCont; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}DEV_MUSIC_CTRLSTATE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֺ궨<D6BA><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef struct{
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevOfflineLast; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevSendSN; //<2F><><EFBFBD><EFBFBD>SN<53><4E>
uint8_t now_playback_status_num; //<2F><><EFBFBD><EFBFBD>״̬<D7B4>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ״̬<D7B4><CCAC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD>ֵ״̬
uint8_t now_playback_type; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 0x01:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>0x02:ϴ<>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD>֡<EFBFBD>0x03:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>֡<EFBFBD>0x04:<3A><><EFBFBD>塢0x05<30><35><EFBFBD>Ż<EFBFBD>ӭ<EFBFBD><D3AD>
uint8_t now_playback_status; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬ - <20><><EFBFBD>ţ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
uint8_t last_playback_status;
uint8_t now_playback_volume; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t last_playback_volume;
uint8_t now_mute_status; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬
uint8_t now_global_volume; //<2F><>ǰȫ<C7B0>ְٷֱ<D9B7><D6B1><EFBFBD><EFBFBD><EFBFBD>
uint8_t now_music_volume; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t now_tone_volume; //<2F><>ǰ<EFBFBD><C7B0>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t now_door_volume; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t now_helpsleep_volume; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2022-12-16
uint8_t now_playback_mode; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ - 0x00:ȫ<><C8AB>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>0x01:<3A><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>0x02:<3A>ļ<EFBFBD><C4BC><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>0x03:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>0x05:˳<>򲥷<EFBFBD>
uint8_t now_playback_dir; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
uint8_t last_playback_dir;
uint16_t now_playback_idx; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t last_playback_idx;
uint8_t assign_dir; //0x00:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> 0x01:<3A><>ʾ<EFBFBD><CABE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> 0x02:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> 0x03:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> 0x04:<3A><>ӭ<EFBFBD><D3AD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
uint16_t assign_playback_path; //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
uint16_t assign_playback_idx; //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
uint8_t adjust_volume_type; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0x01:<3A><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> 0x02:<3A><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
uint8_t adjust_volume_operate; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x01 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>0x02 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
uint8_t adjust_volume_loop; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
uint8_t set_playback_volume; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t set_music_volume; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t set_tone_volume; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t set_door_volume; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t set_helpsleep_volume;
uint8_t set_global_volume; //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD>ְٷֱ<D9B7><D6B1><EFBFBD><EFBFBD><EFBFBD>
uint16_t fade_time; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> - <20><>λ<EFBFBD><CEBB>100ms
uint16_t helpsleep_time; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> - <20><>λ<EFBFBD><CEBB>1S
uint32_t helpsleep_tick; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint8_t playback_type; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 0x01:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>0x02:ϴ<>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD>֡<EFBFBD>0x03:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>֡<EFBFBD>0x04:<3A><><EFBFBD>塢0x05<30><35><EFBFBD>Ż<EFBFBD>ӭ<EFBFBD><D3AD>
uint8_t playback_fun; //<2F><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD> - 0x00:<3A><><EFBFBD>š<EFBFBD>0x01:<3A><>ͣ<EFBFBD><CDA3>0x02:ֹͣ<CDA3><D6B9>0x03:<3A><>һ<EFBFBD>ס<EFBFBD>0x04:<3A><>һ<EFBFBD>ס<EFBFBD>0x05:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x06:<3A><><EFBFBD>ˡ<EFBFBD>0x07:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t playback_mode; //<2F><><EFBFBD><EFBFBD>ģʽ - 0x00:ȫ<><C8AB>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>0x01:<3A><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>0x02:<3A>ļ<EFBFBD><C4BC><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>0x03:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>0x05:˳<>򲥷<EFBFBD>
uint8_t quiet_mode; //<2F><><EFBFBD><EFBFBD>ģʽ - 0x00:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x01:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t set_quiet_status; //<2F><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD>״̬ - 0x00:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x01:<3A>رվ<D8B1><D5BE><EFBFBD>
uint8_t quite_flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>Ʊ<EFBFBD>־λ
uint8_t global_volume; //ȫ<>ְٷֱ<D9B7><D6B1><EFBFBD><EFBFBD><EFBFBD>
uint8_t default_volume; //Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t helpsleep_volume; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t playback_volume_max; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t playback_volume_min; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ʼ*/
DEV_MUSIC_CTRLSTATE BackMusicState[MUSICLOOPMAX]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǰ״̬
DEV_MUSIC_CTRLSTATE BackMusicStateLast[MUSICLOOPMAX]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint16_t file_block; //<2F>ļ<EFBFBD><C4BC><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
uint16_t file_block_num; //<2F>ļ<EFBFBD><C4BC>ܿ<EFBFBD><DCBF><EFBFBD>
uint16_t file_size; //<2F>ļ<EFBFBD><C4BC><EFBFBD>С
uint32_t file_start_addr; //<2F>ļ<EFBFBD><C4BC><EFBFBD>ʼ<EFBFBD><CABC>ַ
uint32_t file_end_addr; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
uint16_t playback_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t dev_versions; //<2F><EFBFBD><EFBFBD><E6B1BE>
uint32_t control_flag; //<2F><><EFBFBD>Ʊ<EFBFBD>־λ
uint32_t inquire_tick; //ѯ<><D1AF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}BUS_C5MUSIC_INFO;
void BLV_BUS_C5MUSIC_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
uint8_t BLV_BUS_C5MUSIC_Cycle_Call(uint32_t dev_addr);
uint8_t BLV_BUS_C5MUSIC_Data_Processing(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
void BUS_C5MUSIC_Playback_Status_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Set_Default_Volume_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Specify_Play_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Set_Volume_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Query_Default_Volume_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Query_Volume_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Set_Loop_Mode_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Query_Loop_Mode_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Query_Filenum_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Query_Versions_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Write_FILEHEAD_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Write_FILEData_Datasend(uint32_t dev_addr,BUS_C5MUSIC_INFO *Dev_Info);
void BUS_C5MUSIC_Set_Playback_Mode(uint32_t devaddr,uint8_t play_mode);
void BUS_C5MUSIC_Playback(uint32_t devaddr,uint8_t play_dir,uint8_t playback,uint8_t play_id);
void BUS_C5MUSIC_Doorbell_Dir(uint32_t devaddr,uint8_t id);
void BUS_C5MUSIC_Warning_Dir(uint32_t devaddr,uint8_t id,uint8_t start);
void BUS_C5MUSIC_Greet_Dir(uint32_t devaddr,uint8_t id,uint8_t start);
void BUS_C5MUSIC_Helpsleep_Dir(uint32_t devaddr,uint8_t dir,uint8_t id);
void BUS_C5MUSIC_Play_Helpsleep_Dir(uint32_t devaddr,uint8_t dir,uint8_t id, uint16_t time);
void BUS_C5MUSIC_Helpsleep_Dir_Just(uint32_t devaddr,uint8_t dir,uint8_t id);
void BUS_C5MUSIC_Stop_Playback(uint32_t devaddr);
void BUS_C5MUSIC_Play_Playback(uint32_t devaddr);
void BUS_C5MUSIC_Play_Playback_Next(uint32_t devaddr);
void BUS_C5MUSIC_Play_Playback_Last(uint32_t devaddr);
void BUS_C5MUSIC_Pause_Playback(uint32_t devaddr);
void BUS_C5MUSIC_Playback_Next(uint32_t devaddr, uint8_t dir);
void BUS_C5MUSIC_Playback_Prev(uint32_t devaddr, uint8_t dir);
void BUS_C5MUSIC_Relative_Volume_Plus(uint32_t devaddr);
void BUS_C5MUSIC_Relative_Volume_Subtraction(uint32_t devaddr);
void BUS_C5MUSIC_Relative_Volume_PlusValue(uint32_t devaddr, uint8_t value);
void BUS_C5MUSIC_Relative_Volume_SubtractionValue(uint32_t devaddr, uint8_t value);
void BUS_C5MUSIC_Set_Quiet_Mode(uint32_t devaddr);
void BUS_C5MUSIC_Set_Quiet_Mode2(uint32_t devaddr,uint8_t status);
void BUS_C5MUSIC_Set_Global_Volume(uint32_t devaddr,uint8_t vel);
void BUS_C5MUSIC_Set_LoopVolume(uint32_t devaddr,uint8_t loop,uint8_t vel);
void BUS_C5MUSIC_Set_LoopVolume_2(uint32_t devaddr,uint8_t loop,uint8_t vel);
uint8_t Get_BUS_C5MUSIC_Loop_Volume(uint32_t devaddr,uint8_t loop);
uint8_t Get_BUS_C5MUSIC_Online_Status(uint32_t devaddr);
void BLV_Music_CtrlState_Get(DEV_MUSIC_CTRLSTATE *music_state,uint16_t Output_state );
void Logic_Music_Ctrl(uint32_t DevAddrIn, uint16_t DevInputLoop, uint32_t DevAddrOut, uint16_t DevOutputLoop, uint16_t DevOutputType);
uint16_t Dev_Music_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop);
#endif /* BLV_485_DRIVER_INC_BLV_BUS_DEV_C5MUSIC_H_ */

View File

@@ -0,0 +1,133 @@
/*
* blv_device_option.h
*
* Created on: Nov 13, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_DEVICE_OPTION_H_
#define BLV_485_DRIVER_INC_BLV_DEVICE_OPTION_H_
#define ProCode NULL //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> - uint32_t
#define HouseType NULL //<2F><><EFBFBD><EFBFBD>
#define ProName "ͨ<><CDA8>APP<50>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>MQTT,֧<><D6A7>Luancher<65><72>V04<30><34>" //<2F><>Ŀ˵<C4BF><CBB5> -64Bytes
#define C8_TYPE 0x00 //C8<43><38><EFBFBD><EFBFBD>
#define FLash_Fix_Data 0x00 //Flashij<68><C4B3><EFBFBD>ڴ<EFBFBD><DAB4>̶<EFBFBD>FF
#define UDPServer_Internal_Flag 0x00 //<2F><>UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶʹ<D1B6>ܱ<EFBFBD>־λ
//#define LOGIC_FILE_EN 0x01 //ʹ<><CAB9><EFBFBD>߼<EFBFBD><DFBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
#define Restart_Address_EN 0x01 //APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ - 0x00:Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַΪ0x8000,0x01:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַΪ0x5000
#define NET_DHCP_Optimized_INIT_EN 0x00 //<2F><><EFBFBD><EFBFBD>DHCP<43><50><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>DHCP<43><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>Ϊ0.0.0.0 2022-07-19
#define DevExistJudgge(Flag, FunName) ((0x01 == Flag)?FunName:NULL) //<2F><>־λΪ1<CEAA>ͷ<EFBFBD><CDB7>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>򷵻ؿ<F2B7B5BB>
/*<2A>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
#define RS485_HVout_C5RELAY_Flag 0x01 //C5<43>̵<EFBFBD><CCB5><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_HVout_A9RELAY_Flag 0x00 //A9<41>̵<EFBFBD><CCB5><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_HVout_SwiRELAY_Flag 0x01 //ǿ<><EFBFBD>ؼ̵<D8BC><CCB5><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
/*<2A>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
/*485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
#define RS485_Switch_Touch_Flag 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_Switch_A9IO_Flag 0x00 //A9IO<49><4F><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_Switch_Rotary_Flag 0x00 //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_Switch_Rotary_P1_Flag 0x00 //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>1
#define RS485_Switch_Rotary_P2_Flag 0x00 //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>2
/*485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
/*485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
#define RS485_Temp_T1_Flag 0x01 //T1<54>¿<EFBFBD><C2BF><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_Temp_T1_Flag_Si 0x01 //T1<54>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺܣ<C4B9>
#define RS485_Temp_T1_Active_Flag 0x01 //T1<54>¿<EFBFBD><C2BF><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ĺ<EFBFBD>
#define RS485_Temp_C7T_Flag 0x00 //C7T<37>¿<EFBFBD><C2BF><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
/*485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
/*485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
#define RS485_LED_Flag 0x01 //485PWM<57><4D><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>
#define RS485_LED_PWM_Flag 0x00 //PWM0~10V<30><56><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_LED_A9LD_Flag 0x00 //A9LD<4C><44><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_LED_Slider_Flag 0x00 //Slider<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_LED_A8PB_Flag 0x00 //A8PB<50><42><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_LED_C12Dim_Flag 0x01 //C12Dim<69><6D><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_LED_RGB_Flag 0x00 //RGB<47><42><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
/*485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
/*485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
#define RS485_MUSIC_BLW_Flag 0x00 //С<><D0A1><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_MUSIC_HES_Flag 0x00 //485<38><35><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
/*485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
#define RS485_RFGatewayHost_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>BLW΢<57><CEA2><EFBFBD><EFBFBD>
/*485΢<35><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
#define RS485_WxLock_Flag 0x00 //΢<><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_WxLock_BLW_Flag 0x00 //BLW΢<57><CEA2><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_WxLock_FreeGo_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD><CEA2><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_WxLock_CJia_Flag 0x00 //<2F><><EFBFBD><EFBFBD>΢<EFBFBD><CEA2><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
/*485΢<35><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
#define RS485_AirDetect_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
#define RS485_AirReveal_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>־
#define RS485_TimeCtrl_Flag 0x00 //ʱ<><CAB1><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
#define RS485_Curtain_Flag 0x01 //485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_DOOYA_Curtain_Flag 0x00 //<2F><><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_BinShen_Curtain_Flag 0x01 //<2F><><EFBFBD><EFBFBD><EAB4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_CardState_Flag 0x01 //<2F>忨״̬ͬ<CCAC><CDAC>
#define RS485_FreshAir_Flag 0x00 //<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_FloorHeat_Flag 0x00 //<2F><>ů<EFBFBD><C5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RS485_BLW_FreshAir_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_BLW_FloorHeat_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ů 1Ϊ<31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_CLED_FreshAir_Flag 0x00 //CLED<45>·<EFBFBD><31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#define RS485_CLED_FloorHeat_Flag 0x00 //CLED<45><44>ů 1Ϊ<31><CEAA><EFBFBD><EFBFBD><30>ر<EFBFBD>
#if C8_TYPE
#define RS485_PB20Fun_Flag 0x01 //PB20
#define RS485_PB20_LD_Flag 0x00 //PB20-LD
#define RS485_PB20_LS_Flag 0x01 //PB20-LS
#define RS485_PB20_Relay_Flag 0x01 //PB20-Relay
#define RS485_LCD_1602_Flag 0x01 //LCD
#else
#define RS485_PB20Fun_Flag 0x00 //PB20
#define RS485_PB20_LD_Flag 0x00 //PB20-LD
#define RS485_PB20_LS_Flag 0x00 //PB20-LS
#define RS485_PB20_Relay_Flag 0x00 //PB20-Relay
#define RS485_LCD_1602_Flag 0x00 //LCD
#endif
#define Dev_Nor_NoCard_Flag 0x00 //<2F>޿<EFBFBD><DEBF>ϵ<EFBFBD><CFB5>
#define Dev_Nor_VirtualCard_Flag 0x01 //<2F>޿<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>
#define RS485_Dev_IN_CH6 0x00 //<2F><><EFBFBD><EFBFBD><36><C2B7><EFBFBD><EFBFBD>
#define Dev_485_Pir_Flag 0x00 //485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
#define Dev_Nor_ColorTemp 0x01 //ɫ<><C9AB>ģ<EFBFBD><C4A3>
#define Dev_485_Card_Polling_Flag 0x01 //<2F><>ѵ<EFBFBD>˿<EFBFBD>485<38>忨ȡ<E5BFA8><C8A1>
#define Dev_485_Card_Active_Flag 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>485<38>忨ȡ<E5BFA8><C8A1>
#define Dev_485_IrSend_Polling_Flag 0x01 //<2F><>ѵ<EFBFBD>˿ں<CBBF><DABA><EFBFBD>ת<EFBFBD><D7AA>
#define Dev_485_IrSend_Active_Flag 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF><DABA><EFBFBD>ת<EFBFBD><D7AA>
#define Dev_485_BLE_Music_Flag 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
#define Dev_Nor_Carbon_Flag 0x01 //̼<><CCBC><EFBFBD><EFBFBD>
#define Dev_Nor_Scene_Restore_Flag 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滹ԭ
#define Dev_Nor_GlobalSet_Flag 0x01 //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,2025-07-14,YYW
#endif /* BLV_485_DRIVER_INC_BLV_DEVICE_OPTION_H_ */

View File

@@ -0,0 +1,92 @@
/*
* blv_device_type.h
*
* Created on: Nov 13, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_DEVICE_TYPE_H_
#define BLV_485_DRIVER_INC_BLV_DEVICE_TYPE_H_
typedef enum
{
Dev_Host_Invalid = 0, //0 - <20><>Ч<EFBFBD>豸 Ҳ<><D2B2><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD>
Dev_Host_HVout, //1 - ǿ<><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
Dev_Host_LVinput, //2 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
Dev_Host_LVoutput, //3 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
Dev_Host_Service, //4 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
Dev_NodeCurtain, //5 - <20>ɽڵ㴰<DAB5><E3B4B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
/*485<38><EFBFBD><E8B1B8><EFBFBD>Ϳ<EFBFBD>ʼ*/
DEV_RS485_SWT, //6 - <20><><EFBFBD><EFBFBD>ָʾ<D6B8><CABE> <20><><EFBFBD><EFBFBD>״̬ <20><><EFBFBD><EFBFBD>״̬ 485<38><EFBFBD>׵<EFBFBD>ַ
DEV_RS485_TEMP, //7 - <20>յ<EFBFBD>1 <20>յ<EFBFBD>״̬
DEV_RS485_INFRARED, //8 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ <20><><EFBFBD><EFBFBD>
DEV_RS485_AirDetect, //9 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
DEV_RS485_CARD, //10 - <20>忨ȡ<E5BFA8><C8A1> ȡ<><C8A1>״̬
DEV_RS485_HEATER, //11 - <20><>ů <20><>ů״̬
Dev_RCU_NET, //12 - RCU<43><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
DEV_RS485_CURTAIN, //13 - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
DEV_RS485_RELAY, //14 - <20>̵<EFBFBD><CCB5><EFBFBD> <20>̵<EFBFBD><CCB5><EFBFBD>״̬
DEV_RS485_IR_SEND, //15 - <20><><EFBFBD><EFBFBD><E2B7A2> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>״̬
DEV_RS485_DIMMING, //16 - ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬
DEV_RS485_TRAIC, //17 - <20>ɿع<C9BF><D8B9><EFBFBD><EFBFBD><EFBFBD> <20>ɿع<C9BF>״̬
DEV_RS485_STRIP, //18 - <20>ƴ<EFBFBD> <20>ƴ<EFBFBD>״̬ --2025-11-24 ȡ<><C8A1>
DEV_RS485_CoreCtrl, //19 - <20>п<EFBFBD>
DEV_RS485_WxLock, //20 - ΢<><CEA2><EFBFBD><EFBFBD> ΢<><CEA2><EFBFBD><EFBFBD>״̬ <20><><EFBFBD>𹷵<EFBFBD><F0B9B7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>0<EFBFBD><30>ַ
DEV_RS485_MUSIC, //21 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
/*485<38><EFBFBD><E8B1B8><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>*/
DEV_NET_ROOMSTATE, //22 - <20><>̬<EFBFBD>·<EFBFBD>
Dev_Host_PWMLight, //23 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>
DEV_RS485_PWM, //24 - 485PWM<57><4D><EFBFBD><EFBFBD> PWM<57><4D><EFBFBD><EFBFBD>״̬
DEV_PB_LED, //25 - <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD> PBLED<45><44><EFBFBD><EFBFBD>״̬
DEV_RCU_POWER, //26 - RCU<43><55>Դ
DEV_RS485_A9_IO_SWT, //27 - A9IO<49><4F><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>û<EFBFBD><C3BB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DEV_RS485_A9_IO_EXP, //28 - A9IO<49><4F>չ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>û<EFBFBD><C3BB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DEV_RS485_A9_IO_POWER, //29 - A9IO<49><4F>Դ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>û<EFBFBD><C3BB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DEV_RS485_RFGatewayCycle, //30 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ú<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
DEV_RS485_RFGatewayHost, //31 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DEV_RS485_RFGatewayDoor, //32 - <20><><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
DEV_RS485_AirReveal, //33 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>
DEV_RS485_RFGatewayRelayPir, //34 - <20><><EFBFBD>߼̵<DFBC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ̵<DABC><CCB5><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dev_Host_TimeCtrl, //35 - ʱ<><CAB1>ͬ<EFBFBD><CDAC>
Dev_Rs458_MonitorCtrl, //36 - <20><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>
Dev_Rs458_RotaryCtrl, //37 - <20><>ť<EFBFBD><C5A5><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>
Dev_BUS_C5IO, //38 - C5IO - <20><><EFBFBD><EFBFBD>
Dev_RS485_CardState, //39 - <20>忨״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>
DEV_RS485_FreshAir, //40 - 485<38>·<EFBFBD><C2B7>
DEV_RS485_FaceMach, //41 - 485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DEV_Center_Control, //42 - <20>п<EFBFBD>
DEV_Domain_Control, //43 - <20><><EFBFBD><EFBFBD>
DEV_RS485_LCD, //44 - LCD
DEV_Virtual_NoCard, //45 - <20>޿<EFBFBD><DEBF>ϵ<EFBFBD> --2025-11-24 ȡ<><C8A1>
DEV_Virtual_Card, //46 - <20>޿<EFBFBD>ȡ<EFBFBD><C8A1>2
DEV_Virtual_Time, //47 - <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>
Dev_Rs485_PB20 = 0x30,
Dev_Rs485_PB20_LD = 0x31,
Dev_Rs485_PB20_LS = 0x32,
Dev_Rs485_PB20_Relay = 0x33,
DEV_Virtual_ColorTemp, //52 - ɫ<>µ<EFBFBD><C2B5>ڹ<EFBFBD><DAB9><EFBFBD>
Dev_485_BLE_Music, //53 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
DEV_Carbon_Saved, //54 - ̼<><CCBC><EFBFBD><EFBFBD>
Dev_Scene_Restore, //55 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ
Dev_Virtual_GlobalSet, //56 - ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dev_Energy_Monitor, //57 - <20>ܺļ<DCBA><C4BC><EFBFBD>
Dev_Num_MAX, //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}Enum_Dev_Type; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>
#endif /* BLV_485_DRIVER_INC_BLV_DEVICE_TYPE_H_ */

View File

@@ -0,0 +1,144 @@
/*
* blv_nor_dec_virtualcard.h
*
* Created on: Nov 11, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEC_VIRTUALCARD_H_
#define BLV_485_DRIVER_INC_BLV_NOR_DEC_VIRTUALCARD_H_
#define VC_CONDGROUP_MAX 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>
#define VC_CONDSUB_MAX 10 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>
#define VIRTUAL_PORT_MAX 11 //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>
#define SOMEONE 1 //<2F><><EFBFBD><EFBFBD>
#define NOONE 2 //<2F><><EFBFBD><EFBFBD>
#define VC_CONDGROUP_Default_StartGroup 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ĭ<><C4AC><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0x01
#define VC_CONDGROUP_SomeOne_Type 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define VC_CONDGROUP_NoOne_Type 0x02
#define VC_CONDGROUP_BrieflyLeaving_Type 0x03
#define VC_CONDGROUP_LongTermLeaving_Type 0x04
#define DETECTION_Window_Time_Max 43200 //<2F><>ʱ<EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>λ<EFBFBD><CEBB>S
//<2F>¼<EFBFBD>ID
#define VC_EventID_DoorSensor 0x01 //<2F><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
#define VC_EventID_CardedPersonLeft 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD>ˣ<EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define VC_EventID_UncardedPersonLeft 0x03 //<2F>޿<EFBFBD><DEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>޿<EFBFBD>
#define VC_EventID_RadarPersonDetected 0x04 //<2F>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
#define VC_EventID_RadarPersonLeft 0x05 //<2F>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define VC_EventID_RS485ButtonPress 0x06 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC>⵽RS485 <20><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
#define VC_EventID_BrieflyLeaving 0x07 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
#define VC_EventID_LongTermLeaving 0x08 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
//<2F><>־λ
#define VC_Event_DoorSensor_Flag 0x01 //<2F><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
#define VC_Event_CardedPersonLeft_Flag 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD>ˣ<EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define VC_Event_UncardedPersonLeft_Flag 0x04 //<2F>޿<EFBFBD><DEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>޿<EFBFBD>
#define VC_Event_RadarPersonDetected_Flag 0x08 //<2F>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
#define VC_Event_RadarPersonLeft_Flag 0x10 //<2F>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define VC_Event_RS485ButtonPress_Flag 0x20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC>⵽RS485 <20><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
#define VC_Event_BrieflyLeaving_Flag 0x40 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
#define VC_Event_LongTermLeaving_Flag 0x80 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
uint8_t HPort_Type; //ӳ<><D3B3><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
uint8_t HPort_Addr; //ӳ<><D3B3><EFBFBD>˿<EFBFBD>485<38><35>ַ
uint16_t HPort_Loop; //ӳ<><D3B3><EFBFBD>˿ڻ<CBBF>·
uint8_t PortIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
uint8_t PortEnFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·ͳ<C2B7><CDB3><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
}VPORT_STRUCT; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>Խṹ<D4BD><E1B9B9>
typedef struct
{
uint8_t HPort_Type; //ӳ<><D3B3><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
uint8_t HPort_Addr; //ӳ<><D3B3><EFBFBD>˿<EFBFBD>485<38><35>ַ
uint16_t HPort_Loop; //ӳ<><D3B3><EFBFBD>˿ڻ<CBBF>·
uint8_t Release_Thres; //<2F>ͷ<EFBFBD><CDB7><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
uint8_t PortIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
uint8_t PortEnFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
uint16_t Judgment_Time; //<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>ʱ<EFBFBD><CAB1>
uint8_t Judgment_Unit; //<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>ʱ<EFBFBD>䵥λ
uint8_t Trigger_Thres; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
}VPORT_INFO_STRUCT; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9> - <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>д洢<D0B4><E6B4A2><EFBFBD>ݽṹ
typedef struct
{
uint8_t Exist_Flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><CBB1><EFBFBD> 1:<3A><><EFBFBD><EFBFBD> 2:<3A><><EFBFBD><EFBFBD> 3:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4:<3A><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Condi_Gruop; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Condi_Subset; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t Judgment_Time; //<2F><><EFBFBD><EFBFBD> - <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint8_t Judgment_Unit; //<2F><><EFBFBD><EFBFBD> - <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵥λ
uint8_t Port_State[VIRTUAL_PORT_MAX]; //0:<3A><><EFBFBD>ж<EFBFBD> 1:<3A><><EFBFBD><EFBFBD> 2:<3A>ͷ<EFBFBD>
uint16_t Timeout_Time; //<2F><><EFBFBD><EFBFBD> - <20>ж<EFBFBD><D0B6><EFBFBD>ʱʱ<CAB1><CAB1>
uint8_t Timeout_Unit; //<2F><><EFBFBD><EFBFBD> - <20>ж<EFBFBD><D0B6><EFBFBD>ʱʱ<CAB1>䵥λ
uint8_t Trigger_Flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t Trigger_Tick; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}CONDITION_STRUCT; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
typedef struct
{
uint8_t Det1sTime; //1s<31><73><EFBFBD>⵱ǰ<E2B5B1><C7B0><EFBFBD><EFBFBD>
uint8_t Det30sTime; //30s дһ<D0B4><D2BB><EFBFBD><EFBFBD>־
uint8_t TriggerNum[VIRTUAL_PORT_MAX]; //1s<31>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t FullFlag[VIRTUAL_PORT_MAX]; //<2F><><EFBFBD><EFBFBD><E2B4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>־λ
uint8_t Trigger_Thres[VIRTUAL_PORT_MAX]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
uint8_t Release_Thres[VIRTUAL_PORT_MAX]; //<2F>ͷ<EFBFBD><CDB7><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
uint16_t DetWinTotalNum[VIRTUAL_PORT_MAX]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> Ĭ<><C4AC>12Сʱ(43200<30><30>) <20><>λ<EFBFBD><CEBB>S
uint16_t DetWinTrigger[VIRTUAL_PORT_MAX]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>)
uint16_t DetWinIdex[VIRTUAL_PORT_MAX]; //<2F><><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>
}DETECT_STRUCT; //89B
typedef struct
{
uint32_t PortTick; //<2F>˿ڼ<CBBF><DABC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> 4
uint8_t PortInit_Flag; //<2F>˿<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
VPORT_STRUCT Port_Info[VIRTUAL_PORT_MAX]; //ӳ<><D3B3><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD> 77
uint8_t PortState[VIRTUAL_PORT_MAX]; //<2F>˿<EFBFBD>״̬ 11
uint8_t PortStateLast[VIRTUAL_PORT_MAX]; //<2F><>һ<EFBFBD>ζ˿<CEB6>״̬ 11
uint8_t PortStateAct[VIRTUAL_PORT_MAX]; //<2F>˿ڶ<CBBF><DAB6><EFBFBD>״̬ 11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʹ<EFBFBD><CAB9>
uint32_t PortTiggleTick[VIRTUAL_PORT_MAX]; //<2F>˿ڼ<CBBF>¼<EFBFBD>㰴ʱ<E3B0B4><CAB1><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>A9IO<49><4F><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>״̬ 44
DETECT_STRUCT DetInfo; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ 102
float ActThreshold[VIRTUAL_PORT_MAX]; //ʵ<>ʴ<EFBFBD><CAB4><EFBFBD><EFBFBD><EFBFBD>ֵ 44
uint8_t ExistState; //<2F><><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>״̬
uint8_t ExistState_Last;
uint8_t ConGroupIndx; //<2F><>ǰ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>
uint8_t Action; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t CardState; //<2F>п<EFBFBD>״̬
uint8_t CardStateLast; //
uint8_t DetNum; //<2F><><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
uint8_t Last_ConGroupType; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA1A2>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>¼<EFBFBD>
uint32_t Condition_Trigger_Tick;
uint32_t Last_Trigger_Tick; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}VIRTUALCARD_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_ */

View File

@@ -0,0 +1,55 @@
/*
* blv_rs485_dev_hvoutfun.h
*
* Created on: Nov 13, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEV_HVOUTFUN_H_
#define BLV_485_DRIVER_INC_BLV_NOR_DEV_HVOUTFUN_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define HVoutNumMAX 32 //ǿ<><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define C1_HVOUTNUMMAX 0x18 //C1Ϊ20·
#define HVout_State_Open 0x01 //ǿ<><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>״̬ - <20><>
#define HVout_State_Close 0x00 //ǿ<><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>״̬ - <20><>
typedef struct
{
uint8_t DevHVoutState[HVoutNumMAX]; //<2F><>ǰǿ<C7B0><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>״̬ <20><><EFBFBD><EFBFBD><EFBFBD>豸״̬<D7B4><EFBFBD><E4BBAF>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6>ǰǿ<C7B0><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>Ǵ򿪻<C7B4><F2BFAABB>ǹر<C7B9>
uint8_t DevHVoutStateLast[HVoutNumMAX]; //<2F><>ǰǿ<C7B0><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
uint8_t DevHVoutSaveState[HVoutNumMAX]; //״̬<D7B4><CCAC><EFBFBD><EFBFBD>
uint8_t A9Relay_ReadFlag;
uint8_t HVoutLoopValidNum; //ǿ<><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>·<EFBFBD><C2B7>
uint8_t HVoutCtrlCnt; //<2F><><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
uint8_t HVSwitchFlag; //ǿ<><EFBFBD>ر<EFBFBD>־ 1<><31>ǿ<EFBFBD><EFBFBD><E7BFAA> 0<><30><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü̵<C3BC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ŀ<EFBFBD><C4BF>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><E7BFAA>
uint8_t HVSwitchCtrlFlag; //ǿ<><EFBFBD>ؿ<EFBFBD><D8BF>Ʊ<EFBFBD>־ <20><>ǿ<EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><EFBFBD><E4BBAF><EFBFBD>ô˱<C3B4>־
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t RELAYSn; //<2F><>չ<EFBFBD><D5B9>Sn<53><6E>
uint8_t init_flag; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ
uint32_t DevC5IOAddr; //C5IO<49><4F><EFBFBD><EFBFBD><E8B1B8>ַ
uint32_t DevChangeFlag; //<2F><EFBFBD><EFBFBD><E4BBAF>־ Ϊ1<CEAA><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
}NOR_HVOUT_INFO; //ǿ<><C7BF><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BLV_Nor_Dev_HVout_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
uint16_t HVout_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop);
void BLW_HVout_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t DevOutputLoop,uint16_t start);
void BLW_HVout_Group_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr,uint32_t devaddr, uint32_t CtrlFlag, uint8_t CtrlNum,uint16_t *start);
uint16_t BLW_HVout_Group_Read(uint32_t devaddr, uint8_t SceneType, uint32_t ReadFlag, uint8_t ReadNum,uint16_t *start);
uint8_t Get_BLV485_Expand_Online_Status(uint32_t devaddr);
#endif /* BLV_485_DRIVER_INC_BLV_NOR_DEV_HVOUTFUN_H_ */

View File

@@ -0,0 +1,102 @@
/*
* blv_nor_dev_lvinput.h
*
* Created on: Nov 17, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_NOR_DEV_LVINPUT_H_
#define BLV_485_DRIVER_INC_BLV_NOR_DEV_LVINPUT_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define LVINPUTNUMMAX 20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define C1_LVINPUTNUMMAX 0x07 //C1Ϊ7·
typedef struct{
uint64_t LVinputCH01:2; //1
uint64_t LVinputCH02:2; //2
uint64_t LVinputCH03:2; //3
uint64_t LVinputCH04:2; //4
uint64_t LVinputCH05:2; //5
uint64_t LVinputCH06:2; //6
uint64_t LVinputCH07:2; //7
uint64_t LVinputCH08:2; //8
uint64_t LVinputCH09:2; //9
uint64_t LVinputCH10:2; //10
uint64_t LVinputCH11:2; //11
uint64_t LVinputCH12:2; //12
uint64_t LVinputCH13:2; //13
uint64_t LVinputCH14:2; //14
uint64_t LVinputCH15:2; //15
uint64_t LVinputCH16:2; //16 //<2F><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint64_t LVinputCH17:2; //17
uint64_t LVinputCH18:2; //18
uint64_t LVinputCH19:2; //19
uint64_t LVinputCH20:2; //20
uint64_t LVinputCH21:2; //21
uint64_t LVinputCH22:2; //22
uint64_t LVinputCH23:2; //23
uint64_t LVinputCH24:2; //24
uint64_t LVinputCH25:2; //25
uint64_t LVinputCH26:2; //26
uint64_t LVinputCH27:2; //27
uint64_t LVinputCH28:2; //28
uint64_t LVinputCH29:2; //29
uint64_t LVinputCH30:2; //30
uint64_t LVinputCH31:2; //31
uint64_t LVinputCH32:2; //32
}DEV_LVINPUTDATA_TYPE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INCH6_DI_CH_MAX 0x06
typedef struct
{
uint8_t DevReadBuf[LVINPUTNUMMAX]; //ÿ<><C3BF>λ<EFBFBD><EFBFBD><E6B0B4><EFBFBD><EFBFBD>״̬ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t DevReadBufLast[LVINPUTNUMMAX]; //ÿ<><C3BF>λ<EFBFBD><EFBFBD><E6B0B4><EFBFBD><EFBFBD>״̬ <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD>
uint8_t LVinputValidNum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>·<EFBFBD><C2B7>
uint8_t DevSendCnt; //<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>
uint8_t DevOffline; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t DevSn; //<2F>豸Sn<53><6E>
uint8_t Dev_Init_Flag; //<2F><EFBFBD><E8B1B8>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ 2025-09-26
uint8_t Send_Type;
uint8_t DI_Type[INCH6_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0~3:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4~7:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ
uint8_t DI_Start[INCH6_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD>״̬
uint8_t DI_Report_En[INCH6_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʹ<EFBFBD><CAB9>
uint8_t DI_LastStart[INCH6_DI_CH_MAX];
uint8_t DI_Detection_Time[INCH6_DI_CH_MAX]; //DI<44><49><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint16_t Version; //IO<49><4F><EFBFBD><EFBFBD><EFBFBD>
uint16_t control_flag; //<2F><><EFBFBD>Ʊ<EFBFBD>־λ
uint16_t DI_set_flag; //DI<44><49><EFBFBD>ñ<EFBFBD>־λ
uint16_t Last_DI_set_flag;
uint16_t DI_Level_Actual_Start;
uint32_t DevC5IOAddr; //C5IO<49><4F><EFBFBD><EFBFBD><E8B1B8>ַ
uint32_t DI_Actual_State;
uint32_t DI_Perfect_State;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>֧<EFBFBD><D6A7>30<33><30><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
uint32_t inquire_tick; //ѯ<><D1AF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint32_t HoldTick[LVINPUTNUMMAX];
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
}NOR_LVINPUT_INFO; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BLV_Nor_Dev_LVinput_Init(uint8_t devaddr, uint16_t LoopMax);
uint8_t Dev_LVinput_InType_Get(uint32_t DevAddr, uint16_t DevInputLoop, uint16_t DevInputType);
void Dev_LVinput_Dis(uint32_t DevAddr);
#endif /* BLV_485_DRIVER_INC_BLV_NOR_DEV_LVINPUT_H_ */

View File

@@ -0,0 +1,29 @@
/*
* blv_rs485_dev_c12dimming.h
*
* Created on: Nov 17, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_C12DIMMING_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_C12DIMMING_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#include "blv_rs485_dev_ledcrtl.h"
#define C12DIM_OUT_CH_MAX 0x0C //C12Dim<69><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>12·
#define C12_SET_LIGHT_CMD 0x21 //<2F>ٷֱ<D9B7><D6B1><EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BLW_RS485_C12Dim_Data_Init(Device_Public_Information_G *BUS_Public, RS485_LED_INFO *Rs485LED, uint16_t LoopNum);
uint8_t BLW_C12DimCycleCtrl(uint32_t dev_addr);
uint8_t BLW_Rs485_C12Dim_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
void BLW_Rs485_C12Dim_Ctrl(Device_Public_Information_G *BUS_Public, RS485_LED_INFO* Rs485LEDInfo);
void BLW_Rs485_C12Dim_Way_Ctrl(Device_Public_Information_G *BUS_Public, RS485_LED_INFO* Rs485LEDInfo);
void BLW_Rs485_C12Dim_Read(Device_Public_Information_G *BUS_Public, RS485_LED_INFO* Rs485LEDInfo);
void BLW_C12_GlobalValue_Set(Device_Public_Information_G *BUS_Public, RS485_LED_INFO* Rs485LEDInfo);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_C12DIMMING_H_ */

View File

@@ -0,0 +1,56 @@
/*
* blv_rs485_dev_cardctrl.h
*
* Created on: Nov 14, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_CARDCTRL_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_CARDCTRL_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define CARD_Anonymous_Identity 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define CARD_Guest_Identity 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CARD_Staff_Identity 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
#define CARD_Identity_3 0x03 //<2F><><EFBFBD><EFBFBD>3
#define CARD_Identity_4 0x04 //<2F><><EFBFBD><EFBFBD>4
#define CARD_Identity_5 0x05 //<2F><><EFBFBD><EFBFBD>5
typedef struct
{
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t Rs485CardAction; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Rs485CardFlag; //<2F>忨ȡ<E5BFA8><C8A1><EFBFBD><EFBFBD>־<EFBFBD><D6BE> <20><><EFBFBD><EFBFBD>
uint8_t Rs485CardFlagLast; //<2F><>һ<EFBFBD>β忨ȡ<E5BFA8><C8A1><EFBFBD><EFBFBD>־λ
uint8_t Rs485CardTypeLast; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
uint8_t Rs485CardType; //<2F><>״̬ <20><><EFBFBD><EFBFBD>
uint8_t DevPort; //2024-11-05
uint8_t DevPort_Last; //2024-11-05
uint8_t DevPort_Flag; //2024-11-05
uint8_t DevInitFlag; //2025-08-04 <20>Ե<EFBFBD>һ<EFBFBD><D2BB>ͨѶ<CDA8>Ķ<EFBFBD>ȡ״̬<D7B4><CCAC>Ϊ<EFBFBD><CEAA>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>ִ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
uint32_t inquire_tick; //ѯ<><D1AF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
}RS485_CARD_INFO;
void BLV_RS485_Card_Active_Init(Device_Public_Information_G *BUS_Public, RS485_CARD_INFO *Rs485CardInfo);
void BLV_RS485_Card_Polling_Init(Device_Public_Information_G *BUS_Public, RS485_CARD_INFO *Rs485CardInfo);
void BLV_RS485_Card_Data_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
void BLV_RS485_Card_Polling_Send(Device_Public_Information_G *BUS_Public, RS485_CARD_INFO *Rs485CardInfo);
void BLV_RS485_Card_PortType_Send(Device_Public_Information_G *BUS_Public, RS485_CARD_INFO *Rs485CardInfo);
uint8_t BLV_RS485_Card_Cycle_Dis(uint32_t dev_addr);
uint8_t BLV_Rs485_Card_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
uint8_t Get_BLV485_CARD_Online_Status(uint32_t devaddr);
uint8_t Dev_Rs485_Card_InType_Get(uint32_t DevAddr, uint16_t DevInputLoop, uint16_t DevInputType);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_CARDCTRL_H_ */

View File

@@ -0,0 +1,158 @@
/*
* blv_rs485_dev_ledcrtl.h
*
* Created on: Nov 17, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_LEDCRTL_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_LEDCRTL_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define CFG_Dev_CtrlWay_Is_Open 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD>豸ִ<E8B1B8>з<EFBFBD>ʽΪ<CABD><CEAA>
#define CFG_Dev_CtrlWay_Is_Close 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD>豸ִ<E8B1B8>з<EFBFBD>ʽΪ<CABD><CEAA>
#define CFG_Dev_CtrlWay_Is_TOGGLE 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD>豸ִ<E8B1B8>з<EFBFBD>ʽΪȡ<CEAA><C8A1>
#define CFG_Dev_CtrlWay_Is_Dim_CycleUp 0x07 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
#define CFG_Dev_CtrlWay_Is_Dim_CycleDown 0x08 //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
#define CFG_Dev_CtrlWay_Is_Dim_Stop 0x09 //<2F><><EFBFBD><EFBFBD>ֹͣ
#define CFG_Dev_CtrlWay_Is_Dim_Up 0x0A //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
#define CFG_Dev_CtrlWay_Is_Dim_Down 0x0B //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD>
#define CFG_Dev_CtrlWay_Is_Dim_Open 0x0C //<2F><EFBFBD><E3B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CFG_Dev_CtrlWay_Is_Dim_Close 0x0D //<2F><EFBFBD><E3B0B4><EFBFBD>ر<EFBFBD>
#define CFG_Dev_CtrlWay_Is_RelateBlink 0x0E //<2F><><EFBFBD><EFBFBD><EFBFBD>豸ִ<E8B1B8>з<EFBFBD>ʽΪ<CABD><CEAA>Ӧ<EFBFBD><D3A6>˸ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD><D7A8><EFBFBD><EFBFBD><EFBFBD>ɽڵ<C9BD><DAB5><EFBFBD><EFBFBD><EFBFBD>485
#define CFG_Dev_CtrlWay_Is_Dim_Up_Step_Cycle 0x0F //<2F><><EFBFBD>ϵ㰴ѭ<E3B0B4><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CFG_Dev_CtrlWay_Is_OnlySwitch 0x11 //ֻ<><D6BB><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>
#define CFG_Dev_CtrlWay_Is_OnlyBright 0x12 //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CFG_Dev_CtrlWay_Is_Dim_Up_Limit 0x1A //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CFG_Dev_CtrlWay_Is_Dim_Down_Limit 0x1B //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CFG_Dev_CtrlWay_Is_Dim_Up_Step_Cycle_Limit 0x1F //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ㰴ѭ<E3B0B4><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CFG_Dev_CtrlWay_Is_PWM_Set_Time 0x20 //PWM<57><4D><EFBFBD><EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1>
#define CFG_Dev_CtrlWay_Is_A9LD_Set_Time 0x21 //A9LD<4C><44><EFBFBD><EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1>
#define CFG_Dev_CtrlWay_Is_A8PB_Set_Time 0x22 //A8PB<50><42><EFBFBD><EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1>
#define CFG_Dev_CtrlWay_Is_C12_Set_Time 0x23 //C12<31><32><EFBFBD><EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1>
#define CFG_Dev_CtrlWay_Is_RGB_Set_Time 0x24 //RGB<47><42><EFBFBD><EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1>
#define Dim_Global_Value_Cmd 0x30 //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define Dim_UpLimit_Value_Cmd 0x31 //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define Dim_DnLimit_Value_Cmd 0x32 //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef enum{
LED_OUT_CH01,
LED_OUT_CH02,
LED_OUT_CH03,
LED_OUT_CH04,
LED_OUT_CH05,
LED_OUT_CH06,
LED_OUT_CH07,
LED_OUT_CH08,
LED_OUT_CH09,
LED_OUT_CH10,
LED_OUT_CH11,
LED_OUT_CH12,
LED_OUT_CH13,
LED_OUT_CH14,
LED_OUT_CH15,
LED_OUT_CH16,
LED_OUT_CH17,
LED_OUT_CH18,
LED_OUT_CH19,
LED_OUT_CH20,
LED_OUT_CH21,
LED_OUT_CH22,
LED_OUT_CH23,
LED_OUT_CH24,
LED_OUT_CH25,
LED_OUT_CH26,
LED_OUT_CH27,
LED_OUT_CH28,
LED_OUT_CH29,
LED_OUT_CH30,
LED_OUT_CH31,
LED_OUT_CH32,
LED_OUT_CH_MAX,
}RS485_LED_OUT_NUM_E;
#define LED_BUFF_Size LED_OUT_CH_MAX //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
typedef struct
{
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
uint8_t DevSendBuf[LED_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD>л<EFBFBD>·<EFBFBD><C2B7>״̬
uint8_t DevSendBuf_last[LED_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD>л<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
uint8_t DevSendBufNext[LED_BUFF_Size]; //<2F>޸<EFBFBD>Ϊȫ<CEAA><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
uint8_t DevSaveBuf[LED_BUFF_Size];
uint8_t DevReadBuf[LED_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·״̬<D7B4><EFBFBD><E4BBAF><EFBFBD>Ʊ<EFBFBD>־
uint8_t DevRecBuf[LED_BUFF_Size]; //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
uint8_t DevRecBufLast[LED_BUFF_Size]; //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
uint8_t LEDSn; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾSn<53><6E>
uint8_t WayCtrli; //<2F><>ʽ<EFBFBD><CABD><EFBFBD>Ƶ<EFBFBD><C6B5>±<EFBFBD>
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t LEDUpLightLimit; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t LEDUpLightLimitLast; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t LEDDownLightLimit; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t LEDDownLightLimitLast; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Dim_Global_Value; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Dim_Global_Value_Last; //<2F>ϴ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Dim_GV_Flag; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
uint8_t PWM_Set_Time;
uint8_t A9LD_Set_Time;
uint8_t A8PB_Set_Time;
uint8_t C12_Set_Time;
uint8_t RGB_Set_Time;
uint8_t LEDCtrlCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF>Ƽ<EFBFBD><C6BC><EFBFBD>
uint8_t LEDLoopValidNum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>·<EFBFBD><C2B7>
uint8_t LEDLightRelease[LED_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>
uint8_t LedUpDown[LED_BUFF_Size]; //ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B7BD>
uint8_t LEDLightnessReadFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ȡ<EFBFBD><C8A1>־
uint8_t LEDLightnessReadCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ȡ<EFBFBD><C8A1>־
uint8_t LEDCycleStep; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
uint8_t DevCtrlWayBuf[LED_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
uint8_t DevCtrlWayBuf_last[LED_BUFF_Size]; //<2F><><EFBFBD>ʽ<E2B7BD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
uint8_t DevCtrlWayContect[LED_BUFF_Size]; //<2F><><EFBFBD>ʽ<E2B7BD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t LEDWayCtrlCnt; //<2F><><EFBFBD>ʽ<E2B7BD><CABD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
uint8_t init_flag; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ
uint16_t LEDCtrlFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD>־
uint16_t LEDWayCtrlFlag; //<2F><><EFBFBD>ʽ<E2B7BD><CABD><EFBFBD>Ʊ<EFBFBD>־
uint32_t inquire_tick; //ѯ<><D1AF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}RS485_LED_INFO; //485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBAAF>
void BLW_RS485_LED_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
void BLW_LED_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start);
uint16_t BLW_LED_Read_State(uint32_t devaddr,uint16_t loop);
uint8_t Get_BLV485_LED_Online_Status(uint32_t devaddr);
void BLW_LED_Group_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr,uint32_t devaddr, uint32_t CtrlFlag, uint8_t CtrlNum,uint16_t *start);
uint16_t BLW_LED_Group_Read(uint32_t devaddr, uint8_t SceneType, uint32_t ReadFlag, uint8_t ReadNum,uint16_t *start);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_LEDCRTL_H_ */

View File

@@ -0,0 +1,127 @@
/*
* blv_rs485_dev_switchctrl.h
*
* Created on: Nov 12, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_SWITCHCTRL_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_SWITCHCTRL_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define Key_BUFF_Size 32
#define KeyHoldJudgeTime 400
#define SWI_KEY_LONG_PERIOD 200
#define SWIOUTUPEXIST 0x00 //<2F><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־
typedef enum{
RS_SWITCH_CH1 = 0x00,
RS_SWITCH_CH2,
RS_SWITCH_CH3,
RS_SWITCH_CH4,
RS_SWITCH_CH5,
RS_SWITCH_CH6,
RS_SWITCH_CH7,
RS_SWITCH_CH8,
RS_SWITCH_CH9,
RS_SWITCH_CH10,
RS_SWITCH_CH11,
RS_SWITCH_CH12,
RS_SWITCH_CH13,
RS_SWITCH_CH14,
RS_SWITCH_CH15,
RS_SWITCH_CH16,
RS_SWITCH_CH17,
RS_SWITCH_CH18,
RS_SWITCH_CH19,
RS_SWITCH_CH20,
RS_SWITCH_CH21,
RS_SWITCH_CH22,
RS_SWITCH_CH23,
RS_SWITCH_CH24,
RS_SWITCH_CH25,
RS_SWITCH_CH26,
RS_SWITCH_CH27,
RS_SWITCH_CH28,
RS_SWITCH_CH29,
RS_SWITCH_CH30,
RS_SWITCH_CH_MAX,
}RS485_SWITCH_NUM_E;
typedef enum
{
KeyNoAction = 0x00, //<2F><><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6><EFBFBD>
KeyPress = 0x01, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̰<EFBFBD>
KeyRelease = 0x02, //<2F><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD> <20>ͷ<EFBFBD>
KeyHold = 0x03, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
RotaryLight = 0x04, //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RotaryVol = 0x05, //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RotaryTemp = 0x06, //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
RotaryCCT = 0x07, //<2F><>ת<EFBFBD><D7AA>ɫ<EFBFBD><C9AB>
RotaryOther = 0x08, //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}keyState_Typedef; //<2F><><EFBFBD><EFBFBD><EBB0B4>״̬ö<CCAC><C3B6>
typedef struct
{
uint8_t DevReadBuf[Key_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ÿ<E9A3AC><C3BF><EFBFBD>ֽڴ水<DAB4><E6B0B4><EFBFBD><EFBFBD>״̬
uint8_t DevReadBuf_last[Key_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ÿ<E9A3AC><C3BF><EFBFBD>ֽڴ水<DAB4><E6B0B4><EFBFBD><EFBFBD>״̬
uint8_t DevSendBuf[Key_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ÿ<E9A3AC><C3BF><EFBFBD>ֽڴ<D6BD>ָʾ<D6B8>Ƶ<EFBFBD>״̬
uint8_t DevSendBuf_last[Key_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ÿ<E9A3AC><C3BF><EFBFBD>ֽڴ<D6BD>ָʾ<D6B8>Ƶ<EFBFBD><C6B5><EFBFBD>һ<EFBFBD><D2BB>״̬
uint8_t A9IORepeatFlag; //A9IO<49>ط<EFBFBD><D8B7><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>û<EFBFBD>н<EFBFBD><D0BD>յ<EFBFBD><D5B5><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>־<EFBFBD><D6BE>һ<EFBFBD><D2BB>Sn<53>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>־<EFBFBD><D6BE>0<EFBFBD><30>Sn<53><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t SwtInputValidNum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t SwtOutputValidNum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t SwtRelayLedCtrlFlag; //<2F><><EFBFBD><EFBFBD>ָʾ<D6B8>ƿ<EFBFBD><C6BF>Ʊ<EFBFBD>־
uint8_t SwtRelayLedCtrlCnt; //ָʾ<D6B8>ƿ<EFBFBD><C6BF>Ƽ<EFBFBD><C6BC><EFBFBD>
uint8_t KeyCntChangFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD><EFBFBD>
uint8_t SwtCycleStep; //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ؿ<EFBFBD><D8BF>ƿ<EFBFBD><C6BF><EFBFBD>
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t SwitchSn; //<2F><><EFBFBD><EFBFBD>Sn<53><6E>
uint8_t MultiValidNo[Key_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD> 2024-05-23
uint8_t MultiNumber[Key_BUFF_Size]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰִ<C7B0><D6B4><EFBFBD>±<EFBFBD> 2024-05-23
uint8_t RotaryValue_Flag; //<2F><>ťֵ<C5A5><EFBFBD><E4BBAF><EFBFBD><EFBFBD>
uint8_t RotaryBL; //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>״̬
uint8_t RotaryBL_Last; //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>״̬
uint8_t RotaryBL_Flag; //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD><EFBFBD>
uint8_t RotaryCCTValue_Flag; //<2F><>ťɫ<C5A5><C9AB>ֵ<EFBFBD><EFBFBD><E4BBAF><EFBFBD><EFBFBD>,2025-07-10,YYW
uint8_t RL_Upper_limit; //<2F><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t RL_Upper_limit_Last; //<2F><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t RL_Lower_limit; //<2F><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t RL_Lower_limit_Last; //<2F><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t RL_Limit_Flag;
uint8_t Rotary_PageFlag; //<2F><>ťҳ<C5A5><D2B3><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ͱ<EFBFBD><CDB1><EFBFBD>
uint16_t RotaryValue[5]; //<2F><>ť<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ֵ
uint32_t Rotary_PageEn; //<2F><>ťҳ<C5A5><D2B3><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
uint32_t Rotary_PageEnLast;
uint32_t KeyBitValue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ֵ 32<33><32>λ<EFBFBD><CEBB><EFBFBD>Ա<EFBFBD>ʾ32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>λ<EFBFBD><CEBB>ʼ<EFBFBD>洢 OCY<43><59><EFBFBD>أ<EFBFBD>1<EFBFBD><31>ʾ<EFBFBD>г<EFBFBD><D0B3><EFBFBD> 0<><30>ʾ<EFBFBD>޳<EFBFBD><DEB3><EFBFBD>
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
}RS485_SWI_INFO; //485<38><35><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBAAF>
void BLW_RS485_Switch_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
uint8_t Get_Switch_Online_Status(uint32_t devaddr);
uint8_t Dev_Swi_InType_Get(uint32_t DevAddr, uint16_t DevInputLoop, uint16_t DevInputType);
void Dev_Swi_Output_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t DevAddr, uint16_t DevOutputLoop, uint16_t DevOutputType);
uint16_t Dev_Swi_Loop_State(uint32_t devaddr, uint16_t DevOutputLoop);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_SWITCHCTRL_H_ */

View File

@@ -0,0 +1,175 @@
/*
* blv_rs485_dev_tempfun.h
*
* Created on: Nov 13, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_TEMPCTRL_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_TEMPCTRL_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#define TMEP_TYPE_IR 0 //<2F><><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ̵<C6BC><CCB5><EFBFBD>
#define TEMP_TYPE_VALVE 1 //<2F><><EFBFBD>ŷ<EFBFBD><C5B7>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD>Ƽ̵<C6BC><CCB5><EFBFBD>
#define TEM_DecTem 15 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEM_AddTem 33 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEM_DecFan 14 //<2F><><EFBFBD>ٷ<EFBFBD><D9B7><EFBFBD>
#define TEM_AddFan 34 //<2F><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
#define TEM_MIN_SET 0x10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEM_MAX_SET 0x20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_ONOFF_CTRL_MAX 0x03 //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_VALVE_OPEN 0x01 //<2F><><EFBFBD><EFBFBD>
#define TEMP_VALVE_CLOSE 0x00 //<2F><><EFBFBD><EFBFBD>
#define TEMP_ON 0x01 //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_OFF 0x02 //<2F>յ<EFBFBD><D5B5>ػ<EFBFBD>
#define TEMP_STATE_ON 0x01 //<2F>յ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define TEMP_STATE_OFF 0x00 //<2F>յ<EFBFBD>״̬<D7B4>ػ<EFBFBD>
#define TEMP_HIGH 0x03 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_MID 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_LOW 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_FANAUTO 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>
#define TEMP_COLD 0x01 //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_HOT 0x02 //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
#define TEMP_WIND 0x03 //<2F>յ<EFBFBD><D5B5>ͷ<EFBFBD>
#define TEMP_MODEAUTO 0x00 //<2F>յ<EFBFBD>ģʽ<C4A3>Զ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>Ψ<EFBFBD><CEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>ƿյ<C6BF>ʱ <20>Ŵ<EFBFBD><C5B4><EFBFBD> <20>ϱ<EFBFBD><CFB1>յ<EFBFBD><D5B5><EFBFBD>״̬<D7B4><CCAC>û<EFBFBD><C3BB><EFBFBD>Զ<EFBFBD>
#define TEMTEMPCONVER(data) ((0x00 == data)?TEM_MAX_SET:data) //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32<33><32>
typedef struct
{
uint8_t indoor_t ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t set_t ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t valve ; // 1<><31><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>
uint8_t fan ; // 1<><31><EFBFBD><EFBFBD>,2<><32><EFBFBD><EFBFBD>,3<><33><EFBFBD><EFBFBD>,0ֹͣ,4<>Զ<EFBFBD>
uint8_t mode ; // 1<><31><EFBFBD><EFBFBD>,2<><32><EFBFBD><EFBFBD>,3<>ͷ<EFBFBD>,0<>Զ<EFBFBD>
uint8_t on_off ; // 1<><31>,2<><32>
}TemState_Struct;
typedef struct
{
uint8_t IndoorFlag:1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6>жϱ<D0B6>־
uint8_t SetTFlag:1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6>жϱ<D0B6>־
uint8_t ValveFlag:1; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
uint8_t FanFlag:1; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
uint8_t ModeFlag:1; //ģʽ<C4A3>жϱ<D0B6>־
uint8_t OnOffFlag:1; //<2F><><EFBFBD>ػ<EFBFBD><D8BB>жϱ<D0B6>־
uint8_t IndoorState:1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
uint8_t SetTState:1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
uint8_t HValveFlag:1; //<2F>ȷ<EFBFBD><C8B7>жϱ<D0B6>־
uint8_t HValveState:1; //<2F>ȷ<EFBFBD>״̬
uint8_t ValveState:1; //<2F><><EFBFBD><EFBFBD>״̬
uint8_t FanState:2; //<2F><><EFBFBD><EFBFBD>״̬
uint8_t ModeState:2; //ģʽ״̬
uint8_t OnOffState:1; //<2F><><EFBFBD>ػ<EFBFBD>״̬
}TemCond_Struct; //<2F><>һ<EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>״̬һ<CCAC><D2BB><EFBFBD>ж<EFBFBD> <20>ǵ<EFBFBD>һ<EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>ֻ<EFBFBD><D6BB><EFBFBD>жϱ<D0B6>־λ
typedef struct
{
uint8_t TemIndoorCtrlVar ; //<2F><><EFBFBD><EFBFBD><EFBFBD>¶ȿ<C2B6><C8BF>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t TemSetTCtrlVar ; //<2F><><EFBFBD><EFBFBD><EFBFBD>¶ȿ<C2B6><C8BF>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t TemValveCtrlVar ; //<2F><><EFBFBD>ſ<EFBFBD><C5BF>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t TemFanCtrlVar ; //<2F><><EFBFBD>ٿ<EFBFBD><D9BF>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t TemModeCtrlVar ; //ģʽ<C4A3><CABD><EFBFBD>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t TemOnOffCtrlVar ; //<2F><><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD>Ʊ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}TemStateCtrlVar_Struct;
typedef struct
{
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
TemState_Struct TemState;
TemState_Struct TemStateCtrl; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>Ƶ<EFBFBD>״̬
TemState_Struct TemStateCtrlLast; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>һ<EFBFBD><D2BB>״̬
TemStateCtrlVar_Struct TemStateCtrlFlag; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>־
TemStateCtrlVar_Struct TemStateCtrlCnt; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
TemCond_Struct TemCondCfg; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>һ<CEBB><D2BB>Ϊ1ʱ<31><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> <20><>6λ2<CEBB><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1ʱ<31><CAB1>Ϊ<EFBFBD>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TemCond_Struct TemCondRec; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>6λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD> <20><>10λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t FanAutoRelay; //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>״̬
uint8_t FanAutoFlag; //Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>٣<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
uint8_t relay_out; //0λ<30><CEBB><EFBFBD><EFBFBD><31><CEBB><EFBFBD><EFBFBD><32><CEBB><EFBFBD><EFBFBD><33>ȷ<EFBFBD><34>
uint8_t ValveSameFlag; //<2F><><EFBFBD>ȷ<EFBFBD>һ<EFBFBD><D2BB>Ϊ1 <20><>һ<EFBFBD><D2BB>Ϊ2 //2023-04-17
uint8_t control_start; //<2F><><EFBFBD>ؿ<EFBFBD><D8BF>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD>״̬
TemState_Struct TemStateVir; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD>״̬<D7B4><EFBFBD>Ƚ<EFBFBD> <20><>δ<EFBFBD><CEB4>
TemState_Struct TemStateLast; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬ <20><><EFBFBD><EFBFBD>״̬<D7B4><EFBFBD>ϱ<EFBFBD>
TemState_Struct TemKeepState;
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t DevOfflineLast; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ
uint8_t TemCycleCnt; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LF<4C>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ר<EFBFBD><D7A8>
uint8_t TemDataChangeFlag; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸı<DDB8><C4B1><EFBFBD>־
uint8_t TempType; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м̵<D0BC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5>ŷ<EFBFBD><C5B7>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><30><CEAA><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><31><CEAA><EFBFBD>ŷ<EFBFBD><C5B7>¿<EFBFBD><C2BF><EFBFBD>
uint8_t TempComSetFlag; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD>ñ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ϊ1<CEAA><31>C43<34><33><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>²
uint8_t TempComSetCnt; //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>
uint8_t CardEn; //2023-12-26 <20>忨״̬ͬ<CCAC><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
uint8_t CardFlag; //2023-12-26 <20>忨״̬ͬ<CCAC><CDAC><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
uint8_t CardCnt; //2023-12-26 <20>忨״̬ͬ<CCAC><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t ValveNoExist; //2024-06-27 ˮ<><CBAE><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>
uint8_t DevPort; //2024-11-05
uint8_t DevPort_Last; //2024-11-05
uint8_t DevPort_Flag; //2024-11-05
uint8_t inif_flag; //2025-08-21 <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ
uint8_t Carbon_Set_Temp; //2025-10-13 <20><>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
uint8_t udp_flag; //2025-10-13 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־λ
uint32_t udp_tick; //2025-10-13
uint32_t inquire_tick; //ѯ<><D1AF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}RS485_TEMP_INFO; //485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBAAF>
typedef struct
{
TemState_Struct TemState; //
uint8_t FanAutoRelay; //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>״̬
}RS485_TEMP_BASIC; //485<38>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef void (*RS485_Tem_CycleCtrl_ptr)(Device_Public_Information_G *BUS_Public); //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef void (*RS485_Tem_Ctrl_ptr)(Device_Public_Information_G *BUS_Public,RS485_TEMP_INFO *Rs485Tem, uint8_t CtrlWay); //<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BLW_RS485_TempFun_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
void Dev_Temp_State_Sync(TemState_Struct *temp,TemState_Struct *sync_temp);
uint16_t Dev_Temp_State_Data(TemState_Struct temp);
uint8_t Dev_TEMPCTRL_InType_Get(uint32_t CfgDevAddIn, uint16_t DevInputLoop, uint16_t DevInputType);
void Dev_TEMPCTRL_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t CfgDevAddOut, uint16_t DevOutputLoop, uint16_t DevOutputType);
uint8_t Get_BLV485_TEMP_Online_Status(uint32_t devaddr);
uint16_t Get_BLV485_TEMP_Status(uint32_t devaddr,uint16_t loop);
uint8_t TemSingleJudge(uint32_t CfgDevAdd, RS485_Tem_Ctrl_ptr Rs485TemCtrl, RS485_Tem_CycleCtrl_ptr Rs485TemCycle);
uint8_t TemGlobalJudge(uint32_t CfgDevAdd, RS485_Tem_Ctrl_ptr Rs485TemCtrl, RS485_Tem_CycleCtrl_ptr Rs485TemCycle);
void Temp_Action_Set(RS485_TEMP_BASIC *Rs485TemRecBuf, RS485_TEMP_INFO *Rs485Tem);
void Temp_Action_Set(RS485_TEMP_BASIC *Rs485TemRecBuf, RS485_TEMP_INFO *Rs485Tem);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_TEMPCTRL_H_ */

View File

@@ -0,0 +1,27 @@
/*
* blv_rs485_dev_touchswitch.h
*
* Created on: Nov 13, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_TOUCHSWITCH_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_TOUCHSWITCH_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "logic_file_function.h"
#include "blv_rs485_dev_switchctrl.h"
void BLV_485_Dev_Touch_Switch_Init(Device_Public_Information_G *BUS_Public, RS485_SWI_INFO *Rs485SwiInfo);
void BlwRelaySwtRecAsk(uint8_t *data);
void BlwTouchSwtRecAsk(uint32_t DevAdd, uint8_t *data, uint16_t DataLen);
void BLW_Touch_Rs485_Swi_Pro(Device_Public_Information_G* BUS_Public, uint8_t *data, RS485_SWI_INFO *Switch_Info, uint8_t lens);
uint8_t BLW_Rs485_Touch_Swi_Check(uint32_t DevAdd ,uint32_t Data_addr, uint16_t DataLen);
void BLW_Touch_Switch_ctrl(Device_Public_Information_G *BUS_Public, RS485_SWI_INFO *Rs485SwiInfo);
uint8_t BLW_Touch_SwitchCycleDis(uint32_t DevAdd);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_TOUCHSWITCH_H_ */

View File

@@ -0,0 +1,24 @@
/*
* blv_rs485_dev_touchtempt1.h
*
* Created on: Nov 14, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_BLV_RS485_DEV_TOUCHTEMPT1_H_
#define BLV_485_DRIVER_INC_BLV_RS485_DEV_TOUCHTEMPT1_H_
#include <stdint.h>
#include "blv_rs485_protocol.h"
#include "blv_rs485_dev_tempctrl.h"
void BLWOut_RS485_TempT1_Data_Init(Device_Public_Information_G *BUS_Public, RS485_TEMP_INFO *Rs485TempT1);
void BLWOut_RS485_TempT1D_Data_Init(Device_Public_Information_G *BUS_Public, RS485_TEMP_INFO *Rs485TempT1);
void BLWOut_RS485_TempT1_Activ_Init(Device_Public_Information_G *BUS_Public, RS485_TEMP_INFO *Rs485TempT1);
void BLWOut_tempT1CardCtrl(Device_Public_Information_G *BUS_Public, RS485_TEMP_INFO *Rs485Tem);
void BLV_T1Temp_PortSet_Send(Device_Public_Information_G *BUS_Public, RS485_TEMP_INFO *Rs485Tem);
#endif /* BLV_485_DRIVER_INC_BLV_RS485_DEV_TOUCHTEMPT1_H_ */

View File

@@ -0,0 +1,114 @@
/*
* pc_devicetest_fun.h
*
* Created on: Nov 10, 2025
* Author: cc
*/
#ifndef BLV_485_DRIVER_INC_PC_DEVICETEST_FUN_H_
#define BLV_485_DRIVER_INC_PC_DEVICETEST_FUN_H_
#include <stdint.h>
#define PCTESTTYPE 0xF2 //<2F>豸Э<E8B1B8><D0AD> - <20><><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ͨѶЭ<D1B6><D0AD>ʹ<EFBFBD><CAB9>
#define DEV_PCTEST_TYPE 0xF2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
#define DEV_PCTEST_Addr 0xFC //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><E8B1B8>ַ
#define BLV_PC_TEST_SearchMCU_CMD 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_TEST_SyncTime_CMD 0x02 //ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define BLV_PC_TEST_QueryTime_CMD 0x03 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define BLV_PC_TEST_ConfigInfo_CMD 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>·<EFBFBD> - <20>·<EFBFBD><C2B7><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define BLV_PC_TEST_ReadRegister_CMD 0x05 //<2F><>ȡӳ<C8A1><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_TEST_WriteRegister_CMD 0x06 //дӳ<D0B4><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_TEST_StartTesting_CMD 0x07 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
#define BLV_PC_TEST_SetBaud_CMD 0x08 //<2F><><EFBFBD><EFBFBD>PC<50>˿ڽ<CBBF><DABD><EFBFBD>
#define BLV_PC_SET_DEBUG_CMD 0x09 //<2F><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>0 - Debug<75><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define BLV_PC_TEST_GPIO_CMD 0x0A //<2F><><EFBFBD><EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD>
#define BLV_PC_SET_MCU_Revision_CMD 0x0B //<2F><><EFBFBD><EFBFBD>MCU<43><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>Flash<73><68>
#define BLV_PC_READ_MCU_Revision_CMD 0x0C //<2F><>ȡMCU<43><EFBFBD><E6B1BE>
#define BLV_PC_SET_MQTT_CMD 0x0D //<2F><><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD>
#define BLV_PC_READ_MQTT_CMD 0x0E //<2F><>ȡMQTT<54><54><EFBFBD><EFBFBD>
#define BLV_PC_CORE_TEST_CMD 0x0F //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_READ_RCU_Data_CMD 0x10 //<2F><>ȡRCU<43><55><EFBFBD><EFBFBD> - 2022-06-06 <20><><EFBFBD><EFBFBD>
#define BLV_PC_READ_Device_Data_CMD 0x21 //<2F><>ȡ<EFBFBD><EFBFBD><E8B1B8>Ϣ
#define BLV_PC_READ_RCU_VERSION_CMD 0x22 //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>Ϣ<EFBFBD><CFA2><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>laucher<65><72><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
#define BLV_PC_TEST_SearchMCU_Relay 0x11 //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_TEST_SyncTime_Relay 0x12 //<2F>ظ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define BLV_PC_TEST_QueryTime_Relay 0x13 //<2F>ظ<EFBFBD><D8B8><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define BLV_PC_TEST_ConfigInfo_Relay 0x14 //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>·<EFBFBD> - <20>·<EFBFBD><C2B7><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define BLV_PC_TEST_ReadRegister_Relay 0x15 //<2F>ظ<EFBFBD><D8B8><EFBFBD>ȡӳ<C8A1><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_TEST_WriteRegister_Relay 0x16 //<2F>ظ<EFBFBD>дӳ<D0B4><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLV_PC_TEST_StartTesting_Relay 0x17 //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
#define BLV_PC_TEST_SetBaud_Relay 0x18 //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>PC<50>˿ڲ<CBBF><DAB2><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ+
#define BLV_PC_SET_DEBUG_Relay 0x19 //<2F><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>0 - Debug<75><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define BLV_PC_TEST_GPIO_Relay 0x1A //<2F><><EFBFBD><EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD>
#define BLV_PC_SET_MCU_Revision_Relay 0x1B //<2F><><EFBFBD><EFBFBD>MCU<43><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>Flash<73><68>
#define BLV_PC_READ_MCU_Revision_Relay 0x1C //<2F><>ȡMCU<43><EFBFBD><E6B1BE>
#define BLV_PC_SET_MQTT_Relay 0x1D //<2F><><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
#define BLV_PC_READ_MQTT_Relay 0x1E //<2F><>ȡMQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
#define BLV_PC_CORE_TEST_Relay 0x1F //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Իظ<D4BB>
#define BLV_PC_READ_RCU_Data_Relay 0x20 //<2F><>ȡRCU<43><55><EFBFBD>ݻظ<DDBB> - 2022-06-06 <20><><EFBFBD><EFBFBD>
#define BLV_PC_READ_Device_Data_Relay 0x31 //<2F><>ȡ<EFBFBD><EFBFBD><E8B1B8>Ϣ<EFBFBD>ظ<EFBFBD> - 2024-05-22 <20><><EFBFBD><EFBFBD>
#define BLV_PC_READ_RCU_VERSION_Relay 0x32 //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>Ϣ<EFBFBD><CFA2><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>laucher<65><72><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD> - 2025-07-05 <20><><EFBFBD><EFBFBD>
typedef struct{
uint8_t DevSendSN; //<2F><><EFBFBD><EFBFBD>SN<53><4E>
uint8_t link_port; //PC <20><><EFBFBD>Ӷ˿<D3B6>
uint8_t link_flag; //PC <20><><EFBFBD>ӱ<EFBFBD>־λ
uint8_t test_flag; //PC <20><><EFBFBD>Ա<EFBFBD>־λ - 0x01<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>0x02<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0x03Ѳ<33>ز<EFBFBD><D8B2><EFBFBD>
uint8_t test_dev; //PC <20><><EFBFBD><EFBFBD><EFBFBD>
uint8_t test_addr; //PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַ
uint8_t tour_num; //Ѳ<>ش<EFBFBD><D8B4><EFBFBD>
uint8_t tour_succ; //Ѳ<>سɹ<D8B3><C9B9><EFBFBD><EFBFBD><EFBFBD>
uint8_t pc_ip[4]; //PC<50><43>IP<49><50>ַ
uint16_t pc_port; //PC<50>Ķ˿<C4B6>
uint32_t tour_tick; //Ѳ<>ز<EFBFBD><D8B2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint32_t core_tick; //ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint32_t link_baud; //PC ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}PC_TEST_FLAG_G;
typedef struct
{
uint8_t DevSendCnt; //<2F><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
uint8_t DevOffline; //<2F><EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t DevSendSN; //<2F><><EFBFBD><EFBFBD>SN<53><4E>
uint8_t send_flag;
uint8_t test_flag; //PC <20><><EFBFBD>Ա<EFBFBD>־λ - 0x01<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>0x02<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t test_time; //PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint32_t test_tick; //PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}PC_TEST_DEVICE_INFO;
extern PC_TEST_FLAG_G g_pc_test;
void BLV_PC_DEVICE_TEST_Init(void);
uint8_t BLV_PC_DEVICE_TEST_Cycle_Call(uint32_t dev_addr);
uint8_t BLV_PC_DEVICE_TEST_Data_Processing(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
uint8_t BLV_PC_ReadRegister_DataDeal(uint32_t data_addr,uint16_t len);
uint8_t BLV_PC_WriteRegister_DataDeal(uint32_t data_addr,uint16_t len);
uint8_t BLV_PC_Testing_DataDeal(uint32_t data_addr,uint16_t len);
uint8_t BLV_PC_Testing_Data_Reported(uint8_t type,uint8_t dev_type,uint8_t dev_addr,uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_Testing_Data_Reported2(uint8_t type,uint8_t dev_type,uint8_t dev_addr,uint8_t *data_buff,uint8_t data_len);
uint8_t BLV_PC_TEST_TOUR_DATASEND(void);
uint8_t BLV_PC_TEST_TOUR_DATASEND2(void);
uint8_t BLV_PC_TEST_TOUR_DATACheck(uint32_t data_addr,uint16_t len);
uint8_t BLV_PC_TEST_TOUR_ACKSend(uint8_t ack_data);
uint8_t BLV_PC_SET_MCU_Revision_Data_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_READ_MCU_Revision_Data_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_READ_RCU_Data_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_READ_RCU_VERSION_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_READ_Device_Data_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t SyncTime_DATA_Processing(uint32_t data_addr,uint16_t data_len);
uint16_t QueryTime_Relay_DATA_Packaging(uint32_t data_addr,uint16_t data_len);
uint8_t TEST_GPIO_Relay_Fail(void);
#endif /* BLV_485_DRIVER_INC_PC_DEVICETEST_FUN_H_ */