diff --git a/.cproject b/.cproject
index fca4c0a..0a88c5f 100644
--- a/.cproject
+++ b/.cproject
@@ -1,174 +1,307 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.mrs/BLE_TYQ_BJQ_CH584M.mrs-workspace b/.mrs/ZBF_Master_ch584m.mrs-workspace
similarity index 90%
rename from .mrs/BLE_TYQ_BJQ_CH584M.mrs-workspace
rename to .mrs/ZBF_Master_ch584m.mrs-workspace
index d15aa25..9198ead 100644
--- a/.mrs/BLE_TYQ_BJQ_CH584M.mrs-workspace
+++ b/.mrs/ZBF_Master_ch584m.mrs-workspace
@@ -4,7 +4,7 @@
"path": "."
},
{
- "name": "BLE_TYQ_BJQ_CH584M",
+ "name": "ZBF_Master_ch584m",
"path": "../"
}
],
diff --git a/.mrs/launch.json b/.mrs/launch.json
index f3acb26..0b07c05 100644
--- a/.mrs/launch.json
+++ b/.mrs/launch.json
@@ -4,8 +4,8 @@
{
"type": "mrs-debugger",
"request": "launch",
- "name": "BLE_TYQ_BJQ_CH584M",
- "cwd": "d:\\SXDT\\Project\\CH32\\ble_-tyq_-bjq_-ch584-m",
+ "name": "ZBF_Master_ch584m",
+ "cwd": "d:\\SXDT\\Project\\HED\\zbf_master_ch584m",
"openOCDCfg": {
"useLocalOpenOCD": true,
"executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe",
@@ -39,8 +39,8 @@
"additionalCommands": []
},
"loadedFiles": {
- "executableFile": "d:\\SXDT\\Project\\CH32\\ble_-tyq_-bjq_-ch584-m\\obj\\BLE_TYQ_BJQ_CH584M.elf",
- "symbolFile": "d:\\SXDT\\Project\\CH32\\ble_-tyq_-bjq_-ch584-m\\obj\\BLE_TYQ_BJQ_CH584M.elf",
+ "executableFile": "d:\\SXDT\\Project\\HED\\zbf_master_ch584m\\obj\\ZBF_Master_ch584m.elf",
+ "symbolFile": "d:\\SXDT\\Project\\HED\\zbf_master_ch584m\\obj\\ZBF_Master_ch584m.elf",
"executableFileOffset": 0,
"symbolFileOffset": 0
},
diff --git a/.project b/.project
index 2aa28b2..47824a0 100644
--- a/.project
+++ b/.project
@@ -1,37 +1,34 @@
- BLE_TYQ_BJQ_CH584M
-
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.genmakebuilder
- clean,full,incremental,
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
-
-
-
-
-
- org.eclipse.cdt.core.cnature
- org.eclipse.cdt.managedbuilder.core.managedBuildNature
- org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
-
-
-
- 1602468250279
-
- 22
-
- org.eclipse.ui.ide.multiFilter
- 1.0-name-matches-false-false-*.wvproj
-
-
-
-
+ ZBF_Master_ch584m
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+
+
+
+ 6
+
+ org.eclipse.ui.ide.multiFilter
+ 1.0-name-matches-false-false-*.wvproj
+
+
+
+
\ No newline at end of file
diff --git a/.template b/.template
index e69de29..da0444e 100644
--- a/.template
+++ b/.template
@@ -0,0 +1,23 @@
+Vendor=WCH
+Toolchain=RISC-V
+Series=CH32L103
+RTOS=NoneOS
+MCU=CH32L103C8T6
+Link=WCH-Link
+PeripheralVersion=1.0
+Description=
+Mcu Type=
+Address=
+Target Path=
+Exe Path=
+Exe Arguments=
+CLKSpeed=1
+DebugInterfaceMode=0
+Erase All=false
+Program=false
+Verify=false
+Reset=false
+SDIPrintf=false
+Disable Power Output=false
+Clear CodeFlash=false
+Disable Code-Protect=false
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 38c6d82..051a531 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -18,9 +18,9 @@
}
],
"files.associations": {
+ "*.dbclient-js": "javascript",
"*.sqlbook": "sql",
"*.ndjson": "jsonl",
- "*.dbclient-js": "javascript",
"config.h": "c",
"ch58xble_lib.h": "c",
"bsp_uart.h": "c",
@@ -37,6 +37,7 @@
"bsp_flash.h": "c",
"shell.h": "c",
"ch58x_uart.h": "c",
- "bsp_tim.h": "c"
+ "bsp_tim.h": "c",
+ "ch58x_common.h": "c"
}
}
\ No newline at end of file
diff --git a/APP/multiCentral.c b/APP/multiCentral.c
index 34a3d8c..30147a7 100644
--- a/APP/multiCentral.c
+++ b/APP/multiCentral.c
@@ -18,6 +18,7 @@
#define MASTER_DETECT_EVT (0X01 << 3)
uint8_t MasterCtrTaskId;
+uint8_t bt_conncet_cnt = 0;
/*********************************************************************
* MACROS
@@ -1252,15 +1253,17 @@ int BSP_Master_Receive_Data(uint8_t task_id, uint8_t *data, uint16_t len)
return -5;
}
+
// //有效数据长度
size_t data_len = (datalength + 5);
ret = data_len;
- if (data[index + 1] == kCmdCloseVavle) // 0x02 代表了其是控制阀门响应
+ if (data[index + 1] == 0x02) // 0x02 代表了其是控制阀门响应
{
- // logDebug("BT 控制阀门响应包");
+ logDebug("BT 控制阀门响应包");
+ logHexDumpAll(data, len);
if (data[index + datalength + 2] == 1) // 响应数据位
{
- logInfo("关闭阀门成功");
+ logInfo("BT 控制阀门成功");
}
else
{
@@ -1272,8 +1275,14 @@ int BSP_Master_Receive_Data(uint8_t task_id, uint8_t *data, uint16_t len)
logDebug("蓝牙从机心跳数据包:");
logHexDumpAll(data, data_len);
}
+ else
+ {
+ logDebug("蓝牙从机数据包:");
+ logHexDumpAll(data, len);
+ }
// 到这一步说明数据没问题,将接收到的数据通过中心任务发送出去
uint8_t *p_data;
+
p_data = tmos_msg_allocate(data_len);
if (p_data)
{
@@ -1337,6 +1346,12 @@ uint16_t Master_ProcessEvent(uint8_t task_id, uint16_t events)
if (Flash_Get_Valve_Num())
{
logDebug("有设备,尝试连接\r\n");
+ bt_conncet_cnt++;
+ if (bt_conncet_cnt > 180)
+ {
+ bt_conncet_cnt = 0;
+ PFIC_SystemReset();
+ }
tmos_start_task(task_id, MASTER_CONNECT_EVT, 1600);
}
}
diff --git a/APP/multiCentral_main.c b/APP/multiCentral_main.c
index 97925fa..0619bfe 100644
--- a/APP/multiCentral_main.c
+++ b/APP/multiCentral_main.c
@@ -96,15 +96,12 @@ int main(void)
logDebug("test log debug\n");
#endif
+
CH58x_BLEInit();
HAL_Init();
GAPRole_CentralInit();
Central_Init();
- logDebug("get_ticks %d", BSP_Get_Tick());
- DelayMs(2000);
- logDebug("get_ticks %d", BSP_Get_Tick());
-
BSP_FLASH_Init();
BSP_Valve_Init();
BSP_UART1_Init(); // BT UART
diff --git a/ZBF_Master_ch584m.launch b/ZBF_Master_ch584m.launch
new file mode 100644
index 0000000..22e6c4b
--- /dev/null
+++ b/ZBF_Master_ch584m.launch
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BLE_TYQ_BJQ_CH584M.wvproj b/ZBF_Master_ch584m.wvproj
similarity index 100%
rename from BLE_TYQ_BJQ_CH584M.wvproj
rename to ZBF_Master_ch584m.wvproj
diff --git a/bsp/inc/bsp_uart.h b/bsp/inc/bsp_uart.h
index 4ca0ade..a1cb70e 100644
--- a/bsp/inc/bsp_uart.h
+++ b/bsp/inc/bsp_uart.h
@@ -13,15 +13,25 @@
#include "CH58x_common.h"
+// #define DEVICE_TYPE_TYQ_LY
+#define DEVICE_TYPE_FXJB_LY
+
+
#define BT_START_EVT (0X01 << 0)
#define BT_REC_EVT (0X01 << 1)
#define BT_INFO_UPDATA_EVT (0X01 << 2)
#define BT_SEND_EVT (0X01 << 3)//
#define BT_REC_EVT_FINISH (0X01 << 4) //接收完成事件
+#ifdef DEVICE_TYPE_TYQ_LY
#define UART3_RX_PIN GPIO_Pin_20 //PB20
#define UART3_TX_PIN GPIO_Pin_21 // PB21
-
+#endif
+#ifdef DEVICE_TYPE_FXJB_LY
+/*方形将本是PA4 PA5*/
+#define UART3_RX_PIN GPIO_Pin_4 //PA4
+#define UART3_TX_PIN GPIO_Pin_5 // PA5
+#endif
#define BT_UART_TX_PIN GPIO_Pin_9 //PA9
#define BT_UART_RX_PIN GPIO_Pin_8 //PA8
diff --git a/bsp/inc/bsp_valve.h b/bsp/inc/bsp_valve.h
index 7f9896b..7526f79 100644
--- a/bsp/inc/bsp_valve.h
+++ b/bsp/inc/bsp_valve.h
@@ -2,8 +2,8 @@
* @Author: mbw
* @Date: 2024-12-09 11:40:04
* @LastEditors: mbw && 1600520629@qq.com
- * @LastEditTime: 2025-04-22 13:19:22
- * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\inc\bsp_valve.h
+ * @LastEditTime: 2025-05-23 10:34:57
+ * @FilePath: \zbf_master_ch584m\bsp\inc\bsp_valve.h
* @Description:
* @
* @Copyright (c) 2025 by ${git_name_email}, All Rights Reserved.
@@ -27,16 +27,27 @@
typedef enum
{
- kValveCmdCtr = 0X01,
- kValveCmdReg,
- kValveCmdRem,
- kValveCmdRep,
- kValveCmdRemAll,//移除所有的阀门地址
- kValveEventStatus,//阀门状态包
- kValveConncetStatus,//阀门状态包
- kValveCmdMax,
-} ValveCmdType;
+ kValveCmdCtr = 0X01, // 控制命令
+ kValveCmdReg, // 注册命令
+ kValveCmdRem, // 移除命令
+ kValveCmdRep, // 替换命令
+ kValveCmdRemAll, // 移除所有的阀门地址
+ kValveEventStatus, // 阀门状态包
+ kValveConncetStatus, // 阀门连接状态
+ kValveCmdOverPressure, // 超压关阀
+ kValveCmdUnderPressure, // 欠压关阀
+ kValveCmdOverCurrent, // 过流关阀
+ kValveCmdMicroLeak, // 微漏关阀
+ kValveCmdTimer, // 定时关阀
+ kValveCmdOpenWithStove, // 开灶开阀
+ kValveCmdCloseWithStove, // 关灶关阀
+ kValveCmdOverTemperature, // 超温关阀
+ kValveCmdDelayClose, // 延时关阀
+ kValveCmdManualClose, // 手动关阀
+
+ kValveCmdMax, // 枚举最大值
+} ValveCmdType;
typedef enum
{
WirelessValveClose = 0x01,
@@ -57,6 +68,16 @@ typedef enum
kCmdCloseVavle,
kCmdOpenVavle,
kCmdData,
+ kValveCmdOverPressure, // 超压关阀
+ kValveCmdUnderPressure, // 欠压关阀
+ kValveCmdOverCurrent, // 过流关阀
+ kValveCmdMicroLeak, // 微漏关阀
+ kValveCmdTimer, // 定时关阀
+ kValveCmdOpenWithStove, // 开灶开阀
+ kValveCmdCloseWithStove, // 关灶关阀
+ kValveCmdOverTemperature, // 超温关阀
+ kValveCmdDelayClose, // 延时关阀
+ kValveCmdManualClose, // 手动关阀
} TeFrameCmd;
/*
@@ -69,7 +90,7 @@ typedef enum
无线调压阀出口压力
无线调压阀大气压
*/
-struct __attribute__((packed)) valve_data
+typedef struct __attribute__((packed))
{
uint8_t valve_id;
uint8_t valve_mac[6];
@@ -80,12 +101,15 @@ struct __attribute__((packed)) valve_data
uint32_t valve_out_pressure;
uint32_t valve_atm_pressure;
uint8_t valve_type;
-};
+ uint8_t valve_bat;
+ uint8_t valve_hum;//阀门湿度
+ int8_t valve_rssi;//阀门rssi
+}valve_data;
typedef struct valve_data_list
{
uint8_t valve_num;
- struct valve_data valve_data[MAX_VALVE_NUM];
+ valve_data valve_data[MAX_VALVE_NUM];
} valve_data_list_t;
extern valve_data_list_t valve_list;
diff --git a/bsp/src/bsp_tim.c b/bsp/src/bsp_tim.c
index 3582b35..7c782bb 100644
--- a/bsp/src/bsp_tim.c
+++ b/bsp/src/bsp_tim.c
@@ -11,7 +11,7 @@
#include "bsp_tim.h"
#include "HAL.h"
-volatile uint32_t tick_1ms_cnt = 0;
+// volatile uint32_t tick_1ms_cnt = 0;
/**
* @description:
@@ -25,15 +25,15 @@ uint32_t BSP_Get_Tick(void)
}
-__INTERRUPT
-__HIGH_CODE
-void SysTick_Handler()
-{
- static uint8_t cnt_ms = 0;
+// __INTERRUPT
+// __HIGH_CODE
+// void SysTick_Handler()
+// {
+// static uint8_t cnt_ms = 0;
- SysTick->SR = 0;
- tick_1ms_cnt++;
+// SysTick->SR = 0;
+// tick_1ms_cnt++;
- cnt_ms++;
-}
+// cnt_ms++;
+// }
diff --git a/bsp/src/bsp_uart.c b/bsp/src/bsp_uart.c
index 2fd4294..5b1618f 100644
--- a/bsp/src/bsp_uart.c
+++ b/bsp/src/bsp_uart.c
@@ -2,8 +2,8 @@
* @Author: mbw
* @Date: 2024-12-06 16:52:30
* @LastEditors: mbw && 1600520629@qq.com
- * @LastEditTime: 2025-04-22 15:16:57
- * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_uart.c
+ * @LastEditTime: 2025-05-23 10:35:36
+ * @FilePath: \zbf_master_ch584m\bsp\src\bsp_uart.c
* @Description:
*
* Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
@@ -167,11 +167,11 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
switch (data[index + 2])
{
case kValveCmdCtr:
- logDebug("recv cmd: 0x01, 执行的动作是关闭阀门");
+
ret = BSP_Bt_Valve_Ctr(&data_buf[0], datalength);
break;
case kValveCmdReg:
- logDebug("recv cmd: 0x02, 执行的动作是注册阀门");
+
ret = BSP_Bt_Register_Valve(&data_buf[0], datalength);
if (ret == 0)
{
@@ -237,7 +237,6 @@ uint8_t BT_GenerateRawFrame(BTFrameData *pRawData, const uint8_t *p_src, uint8_t
pRawData->buf[1] = src_len;
tmos_memcpy(&pRawData->buf[2], p_src, src_len);
-
// 从帧起始符开始到校验码之前所有字节的和的模256
// ,即各字节不计超过255的溢出值的二进制算术和。
pRawData->buf[pRawData->len - 2] = _CheckSum(&pRawData->buf[0], pRawData->len - 2);
@@ -308,6 +307,7 @@ uint16_t BSP_Send_Process(uint8_t *pdata)
BSP_Bt_Valve_Resp(kValveCmdCtr, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
break;
case kCmdOpenVavle:
+ BSP_Bt_Valve_Resp(kValveCmdCtr, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
break;
case kCmdData:
valve_list.valve_data[0].valve_connct_status = 1;
@@ -324,8 +324,10 @@ uint16_t BSP_Send_Process(uint8_t *pdata)
BSP_Bt_Valve_Resp(kValveEventStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE);
}
break;
+ //TODO:待完成从机的一些主动上报信息解析
+ case
default:
- logError("不支持的命令: %d", master_rx_buf[1]);
+ logError("不支持的从机命令: %d", master_rx_buf[1]);
break;
}
@@ -369,7 +371,7 @@ uint16_t BT_ProcessEvent(uint8_t task_id, uint16_t events)
}
else if (events & BT_REC_EVT)
{
- logDebug("BT_REC_EVT");
+ // logDebug("BT_REC_EVT");
if (bt_recv_end_flag)
{
bt_recv_end_flag = 0;
@@ -420,12 +422,22 @@ void BSP_UART1_Init(void)
/*调试接口*/
void BSP_UART3_Init(void)
{
- GPIOPinRemap(ENABLE, RB_PIN_UART3);
+#ifdef DEVICE_TYPE_TYQ_LY
+ GPIOPinRemap(ENABLE, RB_PIN_UART3);
/* 配置串口3:先配置IO口模式,再配置串口 */
GPIOB_SetBits(UART3_TX_PIN);
GPIOB_ModeCfg(UART3_RX_PIN, GPIO_ModeIN_PU); // RXD-配置上拉输入
GPIOB_ModeCfg(UART3_TX_PIN, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
+#endif
+#ifdef DEVICE_TYPE_FXJB_LY
+ /* 配置串口3:先配置IO口模式,再配置串口 */
+ GPIOA_SetBits(UART3_TX_PIN);
+ GPIOA_ModeCfg(UART3_RX_PIN, GPIO_ModeIN_PU); // RXD-配置上拉输入
+ GPIOA_ModeCfg(UART3_TX_PIN, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
+#endif
+
UART3_DefInit();
+
UART3_BaudRateCfg(460800);
UART3_ByteTrigCfg(UART_1BYTE_TRIG);
// 中断方式接收数据
diff --git a/bsp/src/bsp_valve.c b/bsp/src/bsp_valve.c
index 648e8e6..08d74c1 100644
--- a/bsp/src/bsp_valve.c
+++ b/bsp/src/bsp_valve.c
@@ -51,10 +51,10 @@ uint8_t Valve_GenerateRawFrame(BTFrameData *pRawData, const uint8_t cmd, const u
return 0;
}
-int BSP_Valve_Close(uint8_t valve_id)
+int BSP_Valve_Ctr(uint8_t valve_id, const uint8_t cmd)
{
uint8_t num = Flash_Get_Valve_Num();
- uint8_t valve_ctr_valve = WirelessValveClose;
+ uint8_t valve_ctr_valve = cmd;
if ((valve_id > 8) && (num == 0))
{
logError("BSP_Valve_Close: valve id error");
@@ -63,13 +63,20 @@ int BSP_Valve_Close(uint8_t valve_id)
}
logDebug("BSP_Valve_Close: valve id: %d", valve_id);
// TODO:检查是否连接, 如果连接,则发送数据,将关闭阀门指令发送过去,然后等待数据接收响应,如果接收到响应是关闭状态0x01,则返回成功,否则失败
-
- Valve_GenerateRawFrame(&valve_frame_data, kCmdCloseVavle, &valve_ctr_valve, 1);
+ if (cmd == kCmdCloseVavle)
+ {
+ Valve_GenerateRawFrame(&valve_frame_data, kCmdCloseVavle, &valve_ctr_valve, 1);
+ }
+ else
+ {
+ Valve_GenerateRawFrame(&valve_frame_data, kCmdOpenVavle, &valve_ctr_valve, 1);
+ }
+
return BSP_Master_Send(centralConnList, CONNECT0_ITEM, &valve_frame_data.buf[0], valve_frame_data.len);
}
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC),
- BSP_Valve_Close, BSP_Valve_Close, "valve_id:CONNECT0_ITEM = 0");
+ BSP_Valve_Ctr, BSP_Valve_Ctr, "valve_id: 0, close: 0x01, open :0x02");
/*用于控制阀门的状态
* id: 1-8
@@ -95,13 +102,25 @@ int BSP_Bt_Valve_Ctr(uint8_t *data, uint8_t len)
return -2;
}
- /*如果到这里了,说明ID和MAC地址对应没问题,则关闭对应阀门*/
- return BSP_Valve_Close(data[0]);
+ /*如果到这里了,说明ID和MAC地址对应没问题,则控制对应阀门*/
+ if (data[7] == WirelessValveClose)
+ {
+ logDebug("recv cmd: 0x01, 执行的动作是关闭阀门");
+ return BSP_Valve_Ctr(data[0], kCmdCloseVavle);
+ }
+ else if (data[7] == WirelessValveOpen)
+ {
+ logDebug("recv cmd: 0x02, 执行的动作是打开阀门");
+ return BSP_Valve_Ctr(data[0], kCmdOpenVavle);
+ }
+ logDebug("data[7] = %#x", data[7]);
+ return -1;
}
/*注册阀门信息*/
int BSP_Bt_Register_Valve(uint8_t *data, uint8_t len)
{
+ logDebug("recv cmd: 0x02, 执行的动作是注册阀门");
uint8_t mac_addr[FLASH_MAC_INFO_LEN] = {0};
if ((data[0] >= 1) && (data[0] <= 8))
@@ -266,8 +285,7 @@ int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len)
void BSP_Bt_Valve_Updata(void)
{
uint8_t cnt = 0;
- __attribute__((aligned(4)))
- uint8_t mac[6] = {0};
+ uint8_t mac[6] = {0};
uint8_t num = Flash_Get_Valve_Num();
logInfo("BSP_Bt_Valve_Updata num: %d ", num);
@@ -275,7 +293,6 @@ void BSP_Bt_Valve_Updata(void)
{
return;
}
-
tmos_memset(&valve_list, 0, sizeof(valve_data_list_t));
for (int i = 1; i < MAX_VALVE_NUM; i++) // 这个循环是为了将数据拷贝到valve_list中, 并且保证id号和flash对应起来
@@ -305,11 +322,11 @@ void BSP_Bt_Valve_Updata(void)
}
-//蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态吗,具体参考对应的case
+//蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态码,具体参考对应的case
int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
{
uint8_t ret = 0;
- BtData_t *ptr = (BtData_t *)tmos_msg_allocate(sizeof(struct valve_data));
+ BtData_t *ptr = (BtData_t *)tmos_msg_allocate(sizeof(valve_data));
ptr->cmd = cmd;
switch (cmd)
{
@@ -319,16 +336,16 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
case kValveCmdRep:
ptr->buf[0] = id;
tmos_memcpy(&ptr->buf[1], mac_addr, 6);
- ptr->buf[7] = state;
- BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 9);
+ ptr->buf[26] = state;
+ BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 28);
break;
case kValveCmdRemAll:
ptr->buf[0] = state;
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 2);
break;
case kValveEventStatus:
- tmos_memcpy(&ptr->buf[0], &valve_list.valve_data[id - 1], sizeof(struct valve_data));
- BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, sizeof(struct valve_data));
+ tmos_memcpy(&ptr->buf[0], &valve_list.valve_data[id - 1], sizeof(valve_data));
+ BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, sizeof(valve_data));
break;
case kValveConncetStatus:
ptr->buf[0] = id;