fix:修改UDP通讯中,取电变化上报机制

1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。
2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
This commit is contained in:
caocong
2026-01-23 09:23:12 +08:00
commit 95916b9995
622 changed files with 1336094 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,168 @@
#ifndef _PC_DEVICE_TEST_FUN_H_
#define _PC_DEVICE_TEST_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 enum
{
PRODUCTKEY_CMD = 1, //0x01: productKey //<2F><>Ʒ<EFBFBD><C6B7>Կ
DEVICE_NAME_CMD, // 0x02: deviceName //<2F><EFBFBD><E8B1B8>
DEVICE_SECRET_CMD, // 0x03: deviceSecret //<2F><EFBFBD><E8B1B8>Կ
ALIYUN_PUBLISH_CMD, //0x04: aLiYun_publish //<2F><><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
ALIYUN_SUBLISH_CMD, //0x05: aLiYun_sublish //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ĻỰ
KEEPALIVE_CMD, // 0x06: keepAlive //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
PUBLISH_CMD, // 0x07: publish //<2F><><EFBFBD><EFBFBD><EFBFBD>
SUBLISH_CMD, // 0x08: sublish //<2F><><EFBFBD>ĻỰ
DOMAINNAME_CMD, // 0x09: domainName //<2F><><EFBFBD><EFBFBD>
CLIENT_ID_CMD, // 0x0A: clientId //<2F>ͻ<EFBFBD><CDBB><EFBFBD>ID
USERNAME_CMD, // 0x0B: userName //<2F>û<EFBFBD><C3BB><EFBFBD>
PASSWORD_CMD, // 0x0C: password //<2F><><EFBFBD><EFBFBD>
CMD_END, //<2F><><EFBFBD><EFBFBD>
}MQTT_CMD;
/*
Flash<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
<09><>Ҫ<EFBFBD><D2AA><EFBFBD>ܣ<EFBFBD>PC<50><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEX<45>ļ<EFBFBD><C4BC>ͺŽ<CDBA><C5BD>жԱȣ<D4B1>ֻ<EFBFBD><D6BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>UDPֻ<50>ܲ<EFBFBD>ѯ
*/
#define FLASH_MCU_Model_Revision_ADDRESS 0x8A000 //MCU<43><EFBFBD>ͺ<EFBFBD> 64Byte
#define FLASH_MCU_Control_Revision_ADDRESS 0x8A040 //MCU<43>пذ汾<D8B0>ͺ<EFBFBD> 64Byte
#define FLASH_MCU_MQTT_START_ADDRESS 0x8A080 //MCU<43><55>MQTT<54><54><EFBFBD><EFBFBD> 12+65+33+65+65+2+65+65+65+65+65+65=632
//#define FLASH_MCU_BLE_START_ADDRESS 0x8A2C0 //MCU<43><55>BLE<4C><45><EFBFBD><EFBFBD>
/*MQTT Flash<73>д洢ƫ<E6B4A2>Ƶ<EFBFBD>ַ*/
#define FLASH_MQTTINFO_ProductKey_OFFSET 0x0000 //<2F><><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD>Ʒ<EFBFBD><C6B7>Կ - 12Byte
#define FLASH_MQTTINFO_DeviceName_OFFSET 0x000C //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8> - 65Byte
#define FLASH_MQTTINFO_DeviceSecret_OFFSET 0x004D //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>Կ - 33Byte
#define FLASH_MQTTINFO_ALiYunPublish_OFFSET 0x006E //<2F><><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>Ự - 65Byte
#define FLASH_MQTTINFO_ALiYunSublish_OFFSET 0x00AF //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ĻỰ - 65Byte
#define FLASH_MQTTINFO_KeepAlive_OFFSET 0x00F0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> - 2Byte
#define FLASH_MQTTINFO_Publish_OFFSET 0x00F2 //<2F><><EFBFBD><EFBFBD><EFBFBD>Ự - 65Byte
#define FLASH_MQTTINFO_Sublish_OFFSET 0x0133 //<2F><><EFBFBD>ĻỰ - 65Byte
#define FLASH_MQTTINFO_DomainName_OFFSET 0x0174 //<2F><><EFBFBD><EFBFBD> - 65Byte
#define FLASH_MQTTINFO_ClientId_OFFSET 0x01B5 //<2F>ͻ<EFBFBD><CDBB><EFBFBD>ID - 65Byte
#define FLASH_MQTTINFO_UserName_OFFSET 0x01F6 //<2F>û<EFBFBD><C3BB><EFBFBD> - 65Byte
#define FLASH_MQTTINFO_PassWord_OFFSET 0x0237 //<2F><><EFBFBD><EFBFBD> - 65Byte
#define FLASH_MQTTINFO_END_OFFSET 0x0280 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define FLASH_MCU_ProductKey_ADDRESS 0x8A300 //MCU<43>в<EFBFBD>Ʒ<EFBFBD><C6B7>Կ - 64Byte UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øò<C3B8><C3B2><EFBFBD> 2022/04/06
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>
}__attribute__ ((packed)) 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 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>
uint8_t send_flag;
}__attribute__ ((packed)) 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_CORE_TEST_Data_Reported(void);
uint8_t BLV_PC_READ_RCU_Data_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_SET_MQTT_Reported(uint32_t data_addr,uint8_t data_len);
uint8_t BLV_PC_READ_MQTT_Reported(uint32_t data_addr,uint8_t data_len);
void BLV_CORE_TEST_Process(void);
uint8_t BLV_C1_TestData_Process(void);
uint8_t BLV_C1F_TestData_Process(void);
uint8_t BLV_C1_TEST_DATA_Processing(uint32_t data_addr,uint16_t 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_DATA_Processing(uint32_t data_addr,uint16_t data_len);
uint8_t TEST_GPIO_Relay_Fail(void);
//uint8_t TEST_C12Dimming_Relay(uint8_t state, uint8_t reason);
void Test_GPIO_Init(void);
uint8_t Test_Gpio_Control(uint8_t pin,uint8_t status);
uint8_t C1F_Test_Gpio_Control(uint8_t pin,uint8_t status);
uint8_t BLV_PC_READ_Device_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);
#endif