暂存2.45V
This commit is contained in:
parent
63fb71a9de
commit
9eb7a8affd
|
@ -5,7 +5,7 @@
|
||||||
"type": "mrs-debugger",
|
"type": "mrs-debugger",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "BLE_TYQ_CH584M",
|
"name": "BLE_TYQ_CH584M",
|
||||||
"cwd": "f:\\BaiduSyncdisk\\SXDT\\BLE_TYQ\\Firmware\\BLE_TYQ_CH584M",
|
"cwd": "c:\\Users\\16586\\Desktop\\BLE_TYQ_CH584M",
|
||||||
"openOCDCfg": {
|
"openOCDCfg": {
|
||||||
"useLocalOpenOCD": true,
|
"useLocalOpenOCD": true,
|
||||||
"executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe",
|
"executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe",
|
||||||
|
@ -39,8 +39,8 @@
|
||||||
"additionalCommands": []
|
"additionalCommands": []
|
||||||
},
|
},
|
||||||
"loadedFiles": {
|
"loadedFiles": {
|
||||||
"executableFile": "f:\\BaiduSyncdisk\\SXDT\\BLE_TYQ\\Firmware\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
|
"executableFile": "c:\\Users\\16586\\Desktop\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
|
||||||
"symbolFile": "f:\\BaiduSyncdisk\\SXDT\\BLE_TYQ\\Firmware\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
|
"symbolFile": "c:\\Users\\16586\\Desktop\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
|
||||||
"executableFileOffset": 0,
|
"executableFileOffset": 0,
|
||||||
"symbolFileOffset": 0
|
"symbolFileOffset": 0
|
||||||
},
|
},
|
||||||
|
|
100
APP/peripheral.c
100
APP/peripheral.c
|
@ -3,8 +3,8 @@
|
||||||
* Author : WCH
|
* Author : WCH
|
||||||
* Version : V1.0
|
* Version : V1.0
|
||||||
* Date : 2018/12/10
|
* Date : 2018/12/10
|
||||||
* Description : 外设从机多连接应用程序,初始化广播连接参数,然后广播,连接主机后,
|
* Description : 外设从机多连接应用程序,初始化广播连接参数,然后广播,连接主机后,
|
||||||
* 请求更新连接参数,通过自定义服务传输数据
|
* 请求更新连接参数,通过自定义服务传输数据
|
||||||
*********************************************************************************
|
*********************************************************************************
|
||||||
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
||||||
* Attention: This software (modified or not) and binary are used for
|
* Attention: This software (modified or not) and binary are used for
|
||||||
|
@ -91,8 +91,8 @@ void BSP_NoNeeedReplyCMd(void)
|
||||||
|
|
||||||
uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing
|
uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing
|
||||||
|
|
||||||
// 蓝牙广播包的最大长度是37个字节,其中设备地址占用了6个字节,只有31个字节是可用的。
|
// 蓝牙广播包的最大长度是37个字节,其中设备地址占用了6个字节,只有31个字节是可用的。
|
||||||
// TODO:响应体,名称加上MAC地址
|
// TODO:响应体,名称加上MAC地址
|
||||||
// GAP - SCAN RSP data (max size = 31 bytes)
|
// GAP - SCAN RSP data (max size = 31 bytes)
|
||||||
static uint8_t scanRspData[] = {
|
static uint8_t scanRspData[] = {
|
||||||
// complete name
|
// complete name
|
||||||
|
@ -217,11 +217,11 @@ void Peripheral_Init()
|
||||||
|
|
||||||
// Setup the GAP Peripheral Role Profile
|
// Setup the GAP Peripheral Role Profile
|
||||||
{
|
{
|
||||||
// 开启广播使能
|
// 开启广播使能
|
||||||
uint8_t initial_advertising_enable = TRUE;
|
uint8_t initial_advertising_enable = TRUE;
|
||||||
// 最小连接间隔
|
// 最小连接间隔
|
||||||
uint16_t desired_min_interval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
|
uint16_t desired_min_interval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
|
||||||
// 最大连接间隔
|
// 最大连接间隔
|
||||||
uint16_t desired_max_interval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
|
uint16_t desired_max_interval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
|
||||||
|
|
||||||
// Set the GAP Role Parameters
|
// Set the GAP Role Parameters
|
||||||
|
@ -241,8 +241,8 @@ void Peripheral_Init()
|
||||||
GAP_SetParamValue(TGAP_DISC_ADV_INT_MAX, advInt);
|
GAP_SetParamValue(TGAP_DISC_ADV_INT_MAX, advInt);
|
||||||
|
|
||||||
// https://www.cnblogs.com/debugdabiaoge/p/17871551.html
|
// https://www.cnblogs.com/debugdabiaoge/p/17871551.html
|
||||||
// 默认从机在回复扫描请求后,会结束广播事件(默认广播应该是 37 38 39 在 3 个信道轮发)
|
// 默认从机在回复扫描请求后,会结束广播事件(默认广播应该是 37 38 39 在 3 个信道轮发)
|
||||||
// 如下使能后,可以保证广播包不受扫描请求的影响
|
// 如下使能后,可以保证广播包不受扫描请求的影响
|
||||||
// uint16_t adv_event_contnue=1<<1;
|
// uint16_t adv_event_contnue=1<<1;
|
||||||
// GAP_SetParamValue(TGAP_ADV_SCAN_REQ_NOTIFY, adv_event_contnue);
|
// GAP_SetParamValue(TGAP_ADV_SCAN_REQ_NOTIFY, adv_event_contnue);
|
||||||
|
|
||||||
|
@ -370,7 +370,7 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
}
|
}
|
||||||
if (events & SBP_PERIODIC_EVT)
|
if (events & SBP_PERIODIC_EVT)
|
||||||
{
|
{
|
||||||
// 防止主机下发指令,从机回复响应的时候,先传的是状态数据
|
// 防止主机下发指令,从机回复响应的时候,先传的是状态数据
|
||||||
if (periodic_upload_block_flag == false && mtu_flag == 1)
|
if (periodic_upload_block_flag == false && mtu_flag == 1)
|
||||||
{
|
{
|
||||||
// Perform periodic application task
|
// Perform periodic application task
|
||||||
|
@ -380,7 +380,7 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 需要等先回复了下发的指令,1s 之后再尝试回复状态数据
|
// 需要等先回复了下发的指令,1s 之后再尝试回复状态数据
|
||||||
tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, MS1_TO_SYSTEM_TIME(1000));
|
tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, MS1_TO_SYSTEM_TIME(1000));
|
||||||
}
|
}
|
||||||
return (events ^ SBP_PERIODIC_EVT);
|
return (events ^ SBP_PERIODIC_EVT);
|
||||||
|
@ -480,9 +480,11 @@ static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg)
|
||||||
peripheralMTU = pMsgEvent->msg.exchangeMTUReq.clientRxMTU;
|
peripheralMTU = pMsgEvent->msg.exchangeMTUReq.clientRxMTU;
|
||||||
mtu_flag = 1;
|
mtu_flag = 1;
|
||||||
logDebug("****mtu exchange: %d****", pMsgEvent->msg.exchangeMTUReq.clientRxMTU);
|
logDebug("****mtu exchange: %d****", pMsgEvent->msg.exchangeMTUReq.clientRxMTU);
|
||||||
// TODO:连上之后先给个状态回应
|
// TODO:连上之后先给个状态回应
|
||||||
// tmos_set_event(vavle_task_id, VAVLE_UPDATE_EVT);
|
// tmos_set_event(vavle_task_id, VAVLE_UPDATE_EVT);
|
||||||
performPeriodicTask();
|
performPeriodicTask();
|
||||||
|
// gValveData.bat = BSP_ReadVbat();
|
||||||
|
|
||||||
tmos_set_event(led_task_id, CONNECT_BEEP_START_EVT);
|
tmos_set_event(led_task_id, CONNECT_BEEP_START_EVT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -530,7 +532,7 @@ static void Peripheral_LinkEstablished(gapRoleEvent_t *pEvent)
|
||||||
tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD);
|
tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD);
|
||||||
|
|
||||||
// https://www.cnblogs.com/ZYL-FS/p/17759138.html
|
// https://www.cnblogs.com/ZYL-FS/p/17759138.html
|
||||||
// 使能通知
|
// 使能通知
|
||||||
enable_notify(peripheralConnList.connHandle, ENABLE);
|
enable_notify(peripheralConnList.connHandle, ENABLE);
|
||||||
|
|
||||||
logDebug("Conn %x - Int %x= %.1fms", event->connectionHandle, event->connInterval, event->connInterval * 1.25);
|
logDebug("Conn %x - Int %x= %.1fms", event->connectionHandle, event->connInterval, event->connInterval * 1.25);
|
||||||
|
@ -561,7 +563,7 @@ static void Peripheral_LinkTerminated(gapRoleEvent_t *pEvent)
|
||||||
|
|
||||||
// Restart advertising
|
// Restart advertising
|
||||||
{
|
{
|
||||||
// 三个广播通道全部打开
|
// 三个广播通道全部打开
|
||||||
// uint8_t init_adv_channel_map = GAP_ADVCHAN_ALL ;
|
// uint8_t init_adv_channel_map = GAP_ADVCHAN_ALL ;
|
||||||
// GAPRole_SetParameter( GAPROLE_ADV_CHANNEL_MAP, sizeof( uint8_t ), &init_adv_channel_map);
|
// GAPRole_SetParameter( GAPROLE_ADV_CHANNEL_MAP, sizeof( uint8_t ), &init_adv_channel_map);
|
||||||
|
|
||||||
|
@ -658,7 +660,7 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven
|
||||||
Peripheral_LinkEstablished(pEvent);
|
Peripheral_LinkEstablished(pEvent);
|
||||||
logDebug("Connected..");
|
logDebug("Connected..");
|
||||||
|
|
||||||
// 在蓝牙建立连接之后,调用 GATT ExchangeMTU 来修改 MTU 的值
|
// 在蓝牙建立连接之后,调用 GATT ExchangeMTU 来修改 MTU 的值
|
||||||
// Update MTU
|
// Update MTU
|
||||||
attExchangeMTUReq_t req = {
|
attExchangeMTUReq_t req = {
|
||||||
.clientRxMTU = BLE_BUFF_MAX_LEN - 4,
|
.clientRxMTU = BLE_BUFF_MAX_LEN - 4,
|
||||||
|
@ -748,22 +750,32 @@ static void performPeriodicTask(void)
|
||||||
BSP_NoNeedBoost();
|
BSP_NoNeedBoost();
|
||||||
BSP_RequestSleep();
|
BSP_RequestSleep();
|
||||||
#endif
|
#endif
|
||||||
// 电压过低就关阀
|
// // 如果电压低就都不亮灯、蜂鸣器
|
||||||
if (gValveData.bat <= LOW_VABAT_CLOSE_VALUE)
|
// if (bat_mv <= LOW_VABAT_CLOSE_MV)
|
||||||
{
|
// {
|
||||||
gValveData.switch_status = kClosed;
|
// logDebug("低压关阀");
|
||||||
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
// tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||||
}
|
// }
|
||||||
else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
// if (gValveData.bat <= LOW_VABAT_CLOSE_VALUE)
|
||||||
{
|
// {
|
||||||
tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
|
// gValveData.switch_status = kClosed;
|
||||||
}
|
// tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||||
|
// }
|
||||||
|
// else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
||||||
|
// {
|
||||||
|
// tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
|
||||||
|
// }
|
||||||
|
|
||||||
float _humi, _temp;
|
float _humi, _temp;
|
||||||
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
|
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
|
||||||
{
|
{
|
||||||
gValveData.temp = (int8_t)_temp;
|
gValveData.temp = (int8_t)_temp;
|
||||||
gValveData.humi = (uint8_t)_humi;
|
gValveData.humi = (uint8_t)_humi;
|
||||||
|
if (gValveData.temp >= HIGN_TEMP_CLOSE_C)
|
||||||
|
{
|
||||||
|
logDebug("高温关阀");
|
||||||
|
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -864,7 +876,7 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
|
||||||
// tmos_memcpy(newValue, pValue, len);
|
// tmos_memcpy(newValue, pValue, len);
|
||||||
logDebug("CHAR3 Start");
|
logDebug("CHAR3 Start");
|
||||||
// logHexDumpAll(newValue, len);
|
// logHexDumpAll(newValue, len);
|
||||||
// TODO:发送rev数据
|
// TODO:发送rev数据
|
||||||
uint8_t *p_rev_msg;
|
uint8_t *p_rev_msg;
|
||||||
// TsValveMsg *ValveMsg;
|
// TsValveMsg *ValveMsg;
|
||||||
// ValveMsg = tmos_msg_allocate(len);
|
// ValveMsg = tmos_msg_allocate(len);
|
||||||
|
@ -886,13 +898,13 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logError("内存不足");
|
logError("内存不足");
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
TsFrameData *HostFrameData = BSP_VAVLE_GetFrameData(newValue, len);
|
TsFrameData *HostFrameData = BSP_VAVLE_GetFrameData(newValue, len);
|
||||||
if (HostFrameData != NULL)
|
if (HostFrameData != NULL)
|
||||||
{
|
{
|
||||||
// logHexDumpAll(&HostFrameData->data[0], HostFrameData->len); // 数据段
|
// logHexDumpAll(&HostFrameData->data[0], HostFrameData->len); // 数据段
|
||||||
// BSP_UART1_TxLoop();
|
// BSP_UART1_TxLoop();
|
||||||
// HR_ProcessData(HostFrameData);
|
// HR_ProcessData(HostFrameData);
|
||||||
switch (HostFrameData->cmd)
|
switch (HostFrameData->cmd)
|
||||||
|
@ -900,25 +912,25 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
|
||||||
case kCmdCfg:
|
case kCmdCfg:
|
||||||
// uint8_t data_buf[64] = {0};
|
// uint8_t data_buf[64] = {0};
|
||||||
// tmos_memset(data_buf, 0, sizeof(data_buf));
|
// tmos_memset(data_buf, 0, sizeof(data_buf));
|
||||||
// 处理数据帧
|
// 处理数据帧
|
||||||
logDebug("kCmdCfg");
|
logDebug("kCmdCfg");
|
||||||
break;
|
break;
|
||||||
case kCmdCloseVavle:
|
case kCmdCloseVavle:
|
||||||
logDebug("kCmdCloseVavle");
|
logDebug("kCmdCloseVavle");
|
||||||
|
|
||||||
// TODO:注意这里
|
// TODO:注意这里
|
||||||
BSP_NeeedReplyCMdFirst();
|
BSP_NeeedReplyCMdFirst();
|
||||||
|
|
||||||
// EMV_CHARGE
|
// EMV_CHARGE
|
||||||
EMV_CHARGE_EN;
|
EMV_CHARGE_EN;
|
||||||
logDebug("EMV_CHARGE_EN");
|
logDebug("EMV_CHARGE_EN");
|
||||||
|
|
||||||
// 开始一个定时event,1s后产生,当前语句只会产生一次event
|
// 开始一个定时event,1s后产生,当前语句只会产生一次event
|
||||||
// 可以在event产生后去开启event,可以是别的task的,也可以是当前task的event
|
// 可以在event产生后去开启event,可以是别的task的,也可以是当前task的event
|
||||||
tmos_start_task(vavle_task_id, VAVLE_CLOSE_ACTION_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS));
|
tmos_start_task(vavle_task_id, VAVLE_CLOSE_ACTION_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS));
|
||||||
|
|
||||||
// BSP_VALVE_Generate_ValveResponse(&RawData, kCmdCloseVavle, 1);
|
// BSP_VALVE_Generate_ValveResponse(&RawData, kCmdCloseVavle, 1);
|
||||||
// // TODO: 关阀动作
|
// // TODO: 关阀动作
|
||||||
// peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len);
|
// peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -929,14 +941,14 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
|
||||||
// BSP_UART1_TxLoop();
|
// BSP_UART1_TxLoop();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
logError("无效的命令");
|
logError("无效的命令");
|
||||||
// logHexDumpAll(data, len);
|
// logHexDumpAll(data, len);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logError("数据帧解析失败");
|
logError("数据帧解析失败");
|
||||||
}
|
}
|
||||||
tmos_msg_deallocate((uint8_t *)HostFrameData);
|
tmos_msg_deallocate((uint8_t *)HostFrameData);
|
||||||
HostFrameData = NULL;
|
HostFrameData = NULL;
|
||||||
|
@ -954,12 +966,12 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
|
|
||||||
// TODO:应用加入广播数据更新部分状态数据
|
// TODO:应用加入广播数据更新部分状态数据
|
||||||
// 动态更新广播数据
|
// 动态更新广播数据
|
||||||
// taskID: 请求更改广播任务的 ID
|
// taskID: 请求更改广播任务的 ID
|
||||||
// adType:TRUE 更改广播数据,FALSE 更改扫描回复数据
|
// adType:TRUE 更改广播数据,FALSE 更改扫描回复数据
|
||||||
// datalen:数据长度
|
// datalen:数据长度
|
||||||
// *pAdvertData:数据指针
|
// *pAdvertData:数据指针
|
||||||
void Peripheral_UpdateAdvertData(uint8_t adType, uint8_t dataLen, uint8_t *pAdvertData)
|
void Peripheral_UpdateAdvertData(uint8_t adType, uint8_t dataLen, uint8_t *pAdvertData)
|
||||||
{
|
{
|
||||||
GAP_UpdateAdvertisingData(Peripheral_TaskID, adType, dataLen, pAdvertData);
|
GAP_UpdateAdvertisingData(Peripheral_TaskID, adType, dataLen, pAdvertData);
|
||||||
|
@ -968,12 +980,12 @@ void Peripheral_UpdateAdvertData(uint8_t adType, uint8_t dataLen, uint8_t *pAdve
|
||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
#include "stdarg.h"
|
#include "stdarg.h"
|
||||||
|
|
||||||
// TODO:先不弄,后面改广播名,应用加入广播数据更新部分状态数据
|
// TODO:先不弄,后面改广播名,应用加入广播数据更新部分状态数据
|
||||||
void Peripheral_SetMacName(void)
|
void Peripheral_SetMacName(void)
|
||||||
{
|
{
|
||||||
uint8_t mac_addr[6];
|
uint8_t mac_addr[6];
|
||||||
GetMACAddress(mac_addr);
|
GetMACAddress(mac_addr);
|
||||||
// 手机APP显示是倒序的[5-0],不是[0-5]
|
// 手机APP显示是倒序的[5-0],不是[0-5]
|
||||||
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", mac_addr[0], mac_addr[1]
|
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", mac_addr[0], mac_addr[1]
|
||||||
, mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
|
, mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
|
||||||
|
|
||||||
|
@ -1005,7 +1017,7 @@ void Peripheral_SetMacName(void)
|
||||||
// logDebug("scan_rsp_data:");
|
// logDebug("scan_rsp_data:");
|
||||||
logHexDumpAll(scan_rsp_data, len);
|
logHexDumpAll(scan_rsp_data, len);
|
||||||
|
|
||||||
// // 更新扫描响应体
|
// // 更新扫描响应体
|
||||||
GAP_UpdateAdvertisingData(Peripheral_TaskID, FALSE, scan_rsp_data, len);
|
GAP_UpdateAdvertisingData(Peripheral_TaskID, FALSE, scan_rsp_data, len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,12 +36,13 @@ void app_task_handler(TeAppEvtType app_evt_type)
|
||||||
{
|
{
|
||||||
// FEED_IWDG();
|
// FEED_IWDG();
|
||||||
gValveData.bat = BSP_ReadVbat();
|
gValveData.bat = BSP_ReadVbat();
|
||||||
BSP_RequestBoost();
|
DelayMs(5);
|
||||||
|
// BSP_RequestBoost();
|
||||||
|
|
||||||
BSP_BlockSleep();
|
BSP_BlockSleep();
|
||||||
BSP_RequestBoost();
|
BSP_RequestBoost();
|
||||||
logDebug("BSP_RequestBoost");
|
logDebug("BSP_RequestBoost");
|
||||||
DelayMs(5);
|
// DelayMs(5);
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
switch (app_evt_type)
|
switch (app_evt_type)
|
||||||
|
@ -62,16 +63,19 @@ void app_task_handler(TeAppEvtType app_evt_type)
|
||||||
{
|
{
|
||||||
logDebug("LED显示状态");
|
logDebug("LED显示状态");
|
||||||
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
|
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
|
||||||
BSP_BlockSleep();
|
// BSP_BlockSleep();
|
||||||
// BSP_RequestBoost();
|
// BSP_RequestBoost();
|
||||||
DelayMs(5);
|
// DelayMs(5);
|
||||||
// ShowLed();
|
// ShowLed();
|
||||||
// 电压过低就关阀
|
// 电压过低就关阀
|
||||||
// if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
// if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
||||||
if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
if (bat_mv <= LOW_VABAT_CLOSE_MV)
|
||||||
|
// if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
||||||
{
|
{
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
LED_Y_ON;
|
LED_Y_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
// BEEP_ON;
|
// BEEP_ON;
|
||||||
logDebug("LED_Y_ON");
|
logDebug("LED_Y_ON");
|
||||||
|
@ -80,14 +84,17 @@ void app_task_handler(TeAppEvtType app_evt_type)
|
||||||
{
|
{
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
LED_R_ON;
|
LED_R_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
logDebug("LED_R_ON");
|
logDebug("LED_R_ON");
|
||||||
}
|
}
|
||||||
else if (gValveData.switch_status == kOpened)
|
else if (gValveData.switch_status == kOpened)
|
||||||
{
|
{
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
LED_G_ON;
|
LED_G_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
logDebug("LED_G_ON");
|
logDebug("LED_G_ON");
|
||||||
}
|
}
|
||||||
|
@ -103,20 +110,23 @@ void app_task_handler(TeAppEvtType app_evt_type)
|
||||||
gValveData.switch_status = kOpened;
|
gValveData.switch_status = kOpened;
|
||||||
BSP_BlockSleep();
|
BSP_BlockSleep();
|
||||||
// BSP_RequestBoost();
|
// BSP_RequestBoost();
|
||||||
DelayMs(5);
|
// DelayMs(5);
|
||||||
// ShowLed();
|
// ShowLed();
|
||||||
if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
|
if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
|
||||||
{
|
{
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
LED_R_ON;
|
LED_R_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
logDebug("LED_R_ON");
|
logDebug("LED_R_ON");
|
||||||
}
|
}
|
||||||
else if (gValveData.switch_status == kOpened)
|
else if (gValveData.switch_status == kOpened)
|
||||||
{
|
{
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
LED_G_ON;
|
LED_G_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
logDebug("LED_G_ON");
|
logDebug("LED_G_ON");
|
||||||
}
|
}
|
||||||
|
@ -132,12 +142,14 @@ void app_task_handler(TeAppEvtType app_evt_type)
|
||||||
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
|
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
|
||||||
BSP_BlockSleep();
|
BSP_BlockSleep();
|
||||||
// BSP_RequestBoost();
|
// BSP_RequestBoost();
|
||||||
DelayMs(5);
|
// DelayMs(5);
|
||||||
// ShowLed();
|
// ShowLed();
|
||||||
if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
|
if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
|
||||||
{
|
{
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
LED_R_ON;
|
LED_R_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
logDebug("LED_R_ON");
|
logDebug("LED_R_ON");
|
||||||
}
|
}
|
||||||
|
@ -146,6 +158,8 @@ void app_task_handler(TeAppEvtType app_evt_type)
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
LED_G_ON;
|
LED_G_ON;
|
||||||
|
// DelayMs(50);
|
||||||
|
// LED_ALL_OFF_DEINIT;
|
||||||
|
|
||||||
logDebug("LED_G_ON");
|
logDebug("LED_G_ON");
|
||||||
}
|
}
|
||||||
|
@ -232,9 +246,9 @@ int main(void)
|
||||||
PWR_DCDCCfg(ENABLE);
|
PWR_DCDCCfg(ENABLE);
|
||||||
#endif
|
#endif
|
||||||
// 32Mhz/10ppm/10pF
|
// 32Mhz/10ppm/10pF
|
||||||
HSECFG_Capacitance(HSECap_18p);
|
// HSECFG_Capacitance(HSECap_18p);
|
||||||
// USE 32Mhz/10ppm/12pF
|
// USE 32Mhz/10ppm/12pF
|
||||||
// HSECFG_Capacitance(HSECap_20p);
|
HSECFG_Capacitance(HSECap_20p);
|
||||||
SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
|
SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
|
||||||
|
|
||||||
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
|
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
|
||||||
|
@ -259,7 +273,8 @@ int main(void)
|
||||||
uint8_t MacAddr[6];
|
uint8_t MacAddr[6];
|
||||||
GetMACAddress(MacAddr);
|
GetMACAddress(MacAddr);
|
||||||
// 手机APP显示是倒序的[5-0],不是[0-5]
|
// 手机APP显示是倒序的[5-0],不是[0-5]
|
||||||
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", MacAddr[0], MacAddr[1], MacAddr[2], MacAddr[3], MacAddr[4], MacAddr[5]);
|
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", MacAddr[5], MacAddr[4]
|
||||||
|
, MacAddr[3], MacAddr[2], MacAddr[1], MacAddr[0]);
|
||||||
|
|
||||||
CH58x_BLEInit();
|
CH58x_BLEInit();
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
@ -276,9 +291,6 @@ int main(void)
|
||||||
BSP_VAVLE_Init();
|
BSP_VAVLE_Init();
|
||||||
|
|
||||||
// DelayMs(2000 * 1);
|
// DelayMs(2000 * 1);
|
||||||
BSP_BlockSleep();
|
|
||||||
BSP_RequestBoost();
|
|
||||||
DelayMs(100);
|
|
||||||
|
|
||||||
// 如果电压低就都不亮灯、蜂鸣器
|
// 如果电压低就都不亮灯、蜂鸣器
|
||||||
if (bat_mv <= LOW_VABAT_CLOSE_MV)
|
if (bat_mv <= LOW_VABAT_CLOSE_MV)
|
||||||
|
@ -287,20 +299,25 @@ int main(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
BSP_BlockSleep();
|
||||||
|
BSP_RequestBoost();
|
||||||
|
DelayMs(1);
|
||||||
ShowLed();
|
ShowLed();
|
||||||
BEEP_ON;
|
BEEP_ON;
|
||||||
DelayMs(500);
|
DelayMs(30);
|
||||||
|
LED_ALL_OFF_DEINIT;
|
||||||
|
BEEP_OFF_DEINIT;
|
||||||
|
BSP_NoNeedBoost();
|
||||||
|
BSP_RequestSleep();
|
||||||
}
|
}
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
BEEP_OFF_DEINIT;
|
BEEP_OFF_DEINIT;
|
||||||
BSP_NoNeedBoost();
|
|
||||||
BSP_RequestSleep();
|
|
||||||
|
|
||||||
IWDG_Init(IWDG_TIMEOUT_MS);
|
IWDG_Init(IWDG_TIMEOUT_MS);
|
||||||
|
|
||||||
logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick());
|
// logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick());
|
||||||
DelayMs(1000);
|
// DelayMs(1000);
|
||||||
logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick());
|
// logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick());
|
||||||
|
|
||||||
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
|
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
|
||||||
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
|
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#define RB_WR_PROTECT 0x40000000 // RO, write protect
|
#define RB_WR_PROTECT 0x40000000 // RO, write protect
|
||||||
#define RB_IWDG_EN 0x80000000 // RO, watch-dog enable
|
#define RB_IWDG_EN 0x80000000 // RO, watch-dog enable
|
||||||
|
|
||||||
#define IWDG_TIMEOUT_MS (4000)
|
#define IWDG_TIMEOUT_MS (10000)
|
||||||
#define IWDG_FEED_MS (3000)
|
#define IWDG_FEED_MS (3000)
|
||||||
|
|
||||||
#define IWIG_FEED_EVENT (0x01 << 0)
|
#define IWIG_FEED_EVENT (0x01 << 0)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author : stark1898y 1658608470@qq.com
|
* @Author : stark1898y 1658608470@qq.com
|
||||||
* @Date : 2024-12-12 15:55:38
|
* @Date : 2024-12-12 15:55:38
|
||||||
* @LastEditors : stark1898y 1658608470@qq.com
|
* @LastEditors : stark1898y 1658608470@qq.com
|
||||||
* @LastEditTime : 2025-05-28 13:38:08
|
* @LastEditTime : 2025-05-28 18:00:21
|
||||||
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_valve.h
|
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_valve.h
|
||||||
* @Description :
|
* @Description :
|
||||||
*
|
*
|
||||||
|
@ -23,14 +23,14 @@ extern tmosTaskID vavle_task_id;
|
||||||
#define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作
|
#define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作
|
||||||
#define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 关阀结束
|
#define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 关阀结束
|
||||||
|
|
||||||
#define VAVLE_DECT_SWITCH_START_EVT (0x0001 << 5) // 检测电磁铁
|
#define VAVLE_DECT_SWITCH_START_EVT (0x0001 << 5) // 检测电磁铁
|
||||||
#define VAVLE_DECT_SWITCH_END_EVT (0x0001 << 6) // 检测电磁铁
|
#define VAVLE_DECT_SWITCH_END_EVT (0x0001 << 6) // 检测电磁铁
|
||||||
|
|
||||||
#define VAVLE_LOW_VBAT_ALARM_EVT (0x0001 << 7) // 低电压提醒
|
#define VAVLE_LOW_VBAT_ALARM_EVT (0x0001 << 7) // 低电压提醒
|
||||||
|
|
||||||
#define VAVLE_LOOP_DECT_EVT (0x0001 << 8) // 循环检测
|
#define VAVLE_LOOP_DECT_EVT (0x0001 << 8) // 循环检测
|
||||||
|
|
||||||
#define VAVLE_DECT_SWITCH_CALIB_EVT (0x0001 << 9) // 标定电磁铁
|
#define VAVLE_DECT_SWITCH_CALIB_EVT (0x0001 << 9) // 标定电磁铁
|
||||||
|
|
||||||
#define VAVLE_UPDATE_EVT (0x0001 << 10) // 上传更行阀门状态
|
#define VAVLE_UPDATE_EVT (0x0001 << 10) // 上传更行阀门状态
|
||||||
|
|
||||||
|
@ -48,9 +48,10 @@ extern tmosTaskID vavle_task_id;
|
||||||
|
|
||||||
#define LOW_VABAT_CLOSE_VALUE 23
|
#define LOW_VABAT_CLOSE_VALUE 23
|
||||||
|
|
||||||
#define LOW_VABAT_CLOSE_MV 2350
|
#define LOW_VABAT_CLOSE_MV 2450
|
||||||
|
|
||||||
|
|
||||||
|
#define HIGN_TEMP_CLOSE_C 60
|
||||||
|
|
||||||
#define FRAME_HEADER 0xAA
|
#define FRAME_HEADER 0xAA
|
||||||
#define FRAME_TAIL 0x55
|
#define FRAME_TAIL 0x55
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
#include "bsp_uart.h"
|
#include "bsp_uart.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
#include "SLEEP.h"
|
||||||
|
|
||||||
#include "bsp_valve.h"
|
#include "bsp_valve.h"
|
||||||
|
|
||||||
#undef LOG_ENABLE
|
#undef LOG_ENABLE
|
||||||
|
@ -31,6 +33,10 @@ double voltage = 0;
|
||||||
uint8_t BSP_ReadVbat(void)
|
uint8_t BSP_ReadVbat(void)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
|
BSP_NoNeedBoost();
|
||||||
|
DelayMs(1);
|
||||||
|
|
||||||
// VBAT
|
// VBAT
|
||||||
uint32_t CountBat = 0;
|
uint32_t CountBat = 0;
|
||||||
|
|
||||||
|
|
|
@ -102,12 +102,12 @@ static tmosEvents LED_Task_ProcessEvent(tmosTaskID taskID, tmosEvents event)
|
||||||
if (event & CONNECT_BEEP_START_EVT)
|
if (event & CONNECT_BEEP_START_EVT)
|
||||||
{
|
{
|
||||||
logDebug("CONNECT_BEEP_START_EVT");
|
logDebug("CONNECT_BEEP_START_EVT");
|
||||||
LED_G_ON;
|
// LED_G_ON;
|
||||||
BSP_BlockSleep();
|
BSP_BlockSleep();
|
||||||
BSP_RequestBoost();
|
BSP_RequestBoost();
|
||||||
BEEP_ON;
|
BEEP_ON;
|
||||||
|
|
||||||
tmos_start_task(led_task_id, CONNECT_BEEP_END_EVT, MS1_TO_SYSTEM_TIME(300));
|
tmos_start_task(led_task_id, CONNECT_BEEP_END_EVT, MS1_TO_SYSTEM_TIME(20));
|
||||||
|
|
||||||
return (event ^ CONNECT_BEEP_START_EVT);
|
return (event ^ CONNECT_BEEP_START_EVT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
// logDebug("IWDG feed");
|
// logDebug("IWDG feed");
|
||||||
// 获取tmos系统堆的剩余内存大小
|
// 获取tmos系统堆的剩余内存大小
|
||||||
// uint8_t* a = tmos_msg_allocate(1);
|
// uint8_t* a = tmos_msg_allocate(1);
|
||||||
|
uint32_t tmos_memory_getlen(void);
|
||||||
logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen());
|
logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen());
|
||||||
// tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
|
// tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
|
||||||
return (events ^ IWIG_FEED_EVENT);
|
return (events ^ IWIG_FEED_EVENT);
|
||||||
|
|
|
@ -36,7 +36,7 @@ static void KEY_Task_ProcessTmosMsg(tmos_event_hdr_t *pMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// __HIGH_CODE
|
__HIGH_CODE
|
||||||
static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
|
static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
{
|
{
|
||||||
if (events & SYS_EVENT_MSG)
|
if (events & SYS_EVENT_MSG)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author : stark1898y 1658608470@qq.com
|
* @Author : stark1898y 1658608470@qq.com
|
||||||
* @Date : 2024-12-15 15:01:15
|
* @Date : 2024-12-15 15:01:15
|
||||||
* @LastEditors : stark1898y 1658608470@qq.com
|
* @LastEditors : stark1898y 1658608470@qq.com
|
||||||
* @LastEditTime : 2025-05-28 09:03:24
|
* @LastEditTime : 2025-05-28 18:05:13
|
||||||
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c
|
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c
|
||||||
* @Description :
|
* @Description :
|
||||||
*
|
*
|
||||||
|
@ -11,6 +11,8 @@
|
||||||
#include "bsp_valve.h"
|
#include "bsp_valve.h"
|
||||||
#include "bsp_flash.h"
|
#include "bsp_flash.h"
|
||||||
|
|
||||||
|
#include "bsp_i2c.h"
|
||||||
|
|
||||||
#include "bsp_beep_led_emv.h"
|
#include "bsp_beep_led_emv.h"
|
||||||
// 0xAA CMD/DATA/ DATA_LEN (DATA) checksum 0x55
|
// 0xAA CMD/DATA/ DATA_LEN (DATA) checksum 0x55
|
||||||
|
|
||||||
|
@ -390,20 +392,10 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
if (events & VAVLE_CLOSE_START_EVT)
|
if (events & VAVLE_CLOSE_START_EVT)
|
||||||
{
|
{
|
||||||
logDebug("VAVLE_CLOSE_START_EVT");
|
logDebug("VAVLE_CLOSE_START_EVT");
|
||||||
|
DelayMs(1);
|
||||||
BSP_BlockSleep();
|
BSP_BlockSleep();
|
||||||
BSP_RequestBoost();
|
BSP_RequestBoost();
|
||||||
DelayUs(200);
|
DelayMs(10);
|
||||||
|
|
||||||
// EMV_CHARGE
|
|
||||||
// EMV_CHARGE_EN;
|
|
||||||
// DelayUs(500);
|
|
||||||
// EMV_CHARGE_OFF_DEINIT;
|
|
||||||
// DelayUs(200);
|
|
||||||
|
|
||||||
// DelayUs(500);
|
|
||||||
// EMV_CHARGE_OFF_DEINIT;
|
|
||||||
// DelayUs(200);
|
|
||||||
|
|
||||||
EMV_CHARGE_EN;
|
EMV_CHARGE_EN;
|
||||||
|
|
||||||
|
@ -421,7 +413,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
BSP_RequestBoost();
|
BSP_RequestBoost();
|
||||||
logDebug("VAVLE_CLOSE_ACTION_EVT");
|
logDebug("VAVLE_CLOSE_ACTION_EVT");
|
||||||
|
|
||||||
BOOST_EN;
|
// BOOST_EN;
|
||||||
// EMV_CHARGE_EN;
|
// EMV_CHARGE_EN;
|
||||||
// 关阀动作,一定要先关充电的,防止其他12V用电
|
// 关阀动作,一定要先关充电的,防止其他12V用电
|
||||||
EMV_CHARGE_OFF_DEINIT;
|
EMV_CHARGE_OFF_DEINIT;
|
||||||
|
@ -553,6 +545,21 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
// {
|
// {
|
||||||
// tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
|
// tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
|
||||||
// }
|
// }
|
||||||
|
float _humi, _temp;
|
||||||
|
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
|
||||||
|
{
|
||||||
|
gValveData.temp = (int8_t)_temp;
|
||||||
|
gValveData.humi = (uint8_t)_humi;
|
||||||
|
if (gValveData.temp >= HIGN_TEMP_CLOSE_C)
|
||||||
|
{
|
||||||
|
logDebug("高温关阀");
|
||||||
|
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logError("Read TempHumi Err");
|
||||||
|
}
|
||||||
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
|
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
|
||||||
|
|
||||||
return (events ^ VAVLE_LOOP_DECT_EVT);
|
return (events ^ VAVLE_LOOP_DECT_EVT);
|
||||||
|
|
Loading…
Reference in New Issue