This commit is contained in:
commit
f659d45597
|
@ -91,6 +91,7 @@
|
|||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createlisting.1983282875" name="Create extended listing" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createlisting" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize.1000761142" name="Print size" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnumcueclipse.managedbuild.cross.riscv.targetPlatform.1944008784" isAbstract="false" osList="all" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.targetPlatform"/>
|
||||
<<<<<<< HEAD
|
||||
<builder buildPath="${workspace_loc:/BLE_TYQ_BJQ_CH584M/obj" id="ilg.gnumcueclipse.managedbuild.cross.riscv.builder.1421508906" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.builder"/>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1244756189" name="GNU RISC-V Cross Assembler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor.1692176068" name="Use preprocessor" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
|
@ -380,6 +381,9 @@
|
|||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize.1000761142" name="Print size" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnumcueclipse.managedbuild.cross.riscv.targetPlatform.1944008784" isAbstract="false" osList="all" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.targetPlatform"/>
|
||||
<builder buildPath="${workspace_loc:/BLE_TYQ_BJQ_CH584M/dbg" id="ilg.gnumcueclipse.managedbuild.cross.riscv.builder.1421508906" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.builder"/>
|
||||
=======
|
||||
<builder buildPath="${workspace_loc:/ZBF_Master_ch584m/obj" id="ilg.gnumcueclipse.managedbuild.cross.riscv.builder.1421508906" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.builder"/>
|
||||
>>>>>>> b359ca31ba23eac16a4689edfc57bbc833547ae2
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1244756189" name="GNU RISC-V Cross Assembler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor.1692176068" name="Use preprocessor" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.nostdinc.821897907" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.nostdinc" useByScannerDiscovery="true" value="false" valueType="boolean"/>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"path": "."
|
||||
},
|
||||
{
|
||||
"name": "BLE_TYQ_BJQ_CH584M",
|
||||
"name": "ZBF_Master_ch584m",
|
||||
"path": "../"
|
||||
}
|
||||
],
|
|
@ -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
|
||||
},
|
||||
|
|
4
.project
4
.project
|
@ -1,6 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<projectDescription>
|
||||
<<<<<<< HEAD
|
||||
<name>BLE_TYQ_BJQ_CH584M</name>
|
||||
=======
|
||||
<name>ZBF_Master_ch584m</name>
|
||||
>>>>>>> b359ca31ba23eac16a4689edfc57bbc833547ae2
|
||||
<comment/>
|
||||
<projects/>
|
||||
<buildSpec>
|
||||
|
|
11
.template
11
.template
|
@ -1,5 +1,6 @@
|
|||
Vendor=WCH
|
||||
Toolchain=RISC-V
|
||||
<<<<<<< HEAD
|
||||
Series=CH58X
|
||||
RTOS=NoneOS
|
||||
MCU=CH583M
|
||||
|
@ -8,6 +9,16 @@ PeripheralVersion=1.0
|
|||
Description=
|
||||
Mcu Type=CH58x
|
||||
Address=0x00000000
|
||||
=======
|
||||
Series=CH32L103
|
||||
RTOS=NoneOS
|
||||
MCU=CH32L103C8T6
|
||||
Link=WCH-Link
|
||||
PeripheralVersion=1.0
|
||||
Description=
|
||||
Mcu Type=
|
||||
Address=
|
||||
>>>>>>> b359ca31ba23eac16a4689edfc57bbc833547ae2
|
||||
Target Path=
|
||||
Exe Path=
|
||||
Exe Arguments=
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -1253,12 +1253,14 @@ 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] == 0x02) // 0x02 代表了其是控制阀门响应
|
||||
{
|
||||
// logDebug("BT 控制阀门响应包");
|
||||
logDebug("BT 控制阀门响应包");
|
||||
logHexDumpAll(data, len);
|
||||
if (data[index + datalength + 2] == 1) // 响应数据位
|
||||
{
|
||||
logInfo("BT 控制阀门成功");
|
||||
|
@ -1273,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)
|
||||
{
|
||||
|
@ -1339,7 +1347,11 @@ uint16_t Master_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
{
|
||||
logDebug("有设备,尝试连接\r\n");
|
||||
bt_conncet_cnt++;
|
||||
<<<<<<< HEAD
|
||||
if (bt_conncet_cnt > 60)//如果多次重试都不行,直接重启设备
|
||||
=======
|
||||
if (bt_conncet_cnt > 180)
|
||||
>>>>>>> b359ca31ba23eac16a4689edfc57bbc833547ae2
|
||||
{
|
||||
bt_conncet_cnt = 0;
|
||||
PFIC_SystemReset();
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<launchConfiguration type="com.mounriver.debug.gdbjtag.openocd.launchConfigurationType">
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doStartGdbServer" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doFirstReset" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.enableSemihosting" value="false"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.enableSemihostingNew" value="false"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doContinue" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doSecondReset" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doStartGdbCLient" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerExecutable" value="${eclipse_home}toolchain/OpenOCD/bin/${openocd_executable}"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerOther" value="-f "${eclipse_home}toolchain/OpenOCD/bin/wch-riscv.cfg""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
|
||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${eclipse_home}toolchain/RISC-V Embedded GCC12/bin/riscv-none-elf-gdb.exe"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbClientOtherOptions" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off
set architecture riscv:rv32
set remotetimeout unlimited
set disassembler-options xw"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.firstResetType" value="init"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.otherInitCommands" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.secondResetType" value="halt"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.otherRunCommands" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="handle_reset"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.svdPath"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="obj/ZBF_Master_ch584m.elf"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="ZBF_Master_ch584m"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerConnectionAddress" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerLog" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r\n<memoryBlockExpressionList context="Context string"/>\r\n"/>
|
||||
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333"/>
|
||||
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444"/>
|
||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
|
||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="ZBF_Master_ch584m"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
</launchConfiguration>
|
|
@ -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 11:01:23
|
||||
* @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,
|
||||
|
@ -54,9 +65,19 @@ typedef enum
|
|||
typedef enum
|
||||
{
|
||||
kCmdCfg = 0X01,
|
||||
kCmdCloseVavle,
|
||||
kCmdOpenVavle,
|
||||
kCmdData,
|
||||
kCmdCloseVavle, //关阀
|
||||
kCmdOpenVavle,//开阀
|
||||
kCmdData,//命令数据(心跳数据)
|
||||
kRespOverPressure, // 超压关阀
|
||||
kRespUnderPressure, // 欠压关阀
|
||||
kRespOverCurrent, // 过流关阀
|
||||
kRespMicroLeak, // 微漏关阀
|
||||
kRespTimer, // 定时关阀
|
||||
kRespOpenWithStove, // 开灶开阀
|
||||
kRespCloseWithStove, // 关灶关阀
|
||||
kRespOverTemperature, // 超温关阀
|
||||
kRespDelayClose, // 延时关阀
|
||||
kRespManualClose, // 手动关阀
|
||||
} 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;
|
||||
|
@ -97,6 +121,6 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len);
|
|||
int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len);
|
||||
void BSP_Bt_Valve_Updata(void);
|
||||
int BSP_Bt_Remove_All_Valve(void);
|
||||
int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state);
|
||||
int BSP_Bt_Valve_Resp(ValveCmdType cmd, uint8_t id, uint8_t *mac_addr, uint8_t state);
|
||||
|
||||
#endif // ! __BSP_VALVE_H__
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-06 16:52:30
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2025-04-22 15:16:57
|
||||
* @LastEditTime: 2025-05-23 18:07:59
|
||||
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_uart.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -30,7 +30,7 @@
|
|||
#define UART3_TX_BUFFER_LENGTH 2048U
|
||||
|
||||
uint8_t bt_recv_start_flag = 0;
|
||||
uint8_t bt_recv_end_flag = 0;
|
||||
uint8_t bt_recv_end_flag = 0;
|
||||
lwrb_t uart1_rx_t;
|
||||
lwrb_t uart1_tx_t;
|
||||
uint8_t uart1_tx_buf[UART1_TX_BUFFER_LENGTH] = {0};
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -183,7 +183,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
}
|
||||
break;
|
||||
case kValveCmdRem:
|
||||
logDebug("recv cmd: 0x03, 执行的动作是移除阀门");
|
||||
logDebug("recv cmd: 0x03, 移除阀门");
|
||||
ret = BSP_Bt_Remove_Valve(&data_buf[0], datalength);
|
||||
if (ret == 0)
|
||||
{
|
||||
|
@ -195,7 +195,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
}
|
||||
break;
|
||||
case kValveCmdRep:
|
||||
logDebug("recv cmd: 0x04, 执行的动作是更换阀门");
|
||||
logDebug("recv cmd: 0x04, 更换阀门");
|
||||
ret = BSP_Bt_Replace_Valve(&data_buf[0], datalength);
|
||||
if (ret == 0)
|
||||
{
|
||||
|
@ -207,7 +207,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
}
|
||||
break;
|
||||
case kValveCmdRemAll:
|
||||
logDebug("recv cmd: 0x04, 执行的动作是移除所有阀门信息");
|
||||
logDebug("recv cmd: 0x04, 移除所有阀门信息");
|
||||
ret = BSP_Bt_Remove_All_Valve();
|
||||
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);
|
||||
|
@ -258,7 +257,7 @@ uint8_t BT_GenerateRawFrame(BTFrameData *pRawData, const uint8_t *p_src, uint8_t
|
|||
uint16_t BSP_Send_Process(uint8_t *pdata)
|
||||
{
|
||||
int8_t ret = 0;
|
||||
__attribute__((aligned(4))) uint8_t master_rx_buf[64] = {0};
|
||||
uint8_t master_rx_buf[64] = {0};
|
||||
|
||||
uint8_t found_frame_start = 0;
|
||||
uint8_t *frame_start = NULL;
|
||||
|
@ -308,28 +307,71 @@ 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;
|
||||
tmos_memcpy(&valve_list.valve_data[0].valve_switch_status, &master_rx_buf[3], master_rx_buf[2]);
|
||||
|
||||
|
||||
if ((bt_connect_flag != 1) && (valve_list.valve_data[0].valve_connct_status == 1))
|
||||
{
|
||||
bt_connect_flag = 1;
|
||||
logDebug("阀门连接成功");
|
||||
BSP_Bt_Valve_Resp(kValveConncetStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE);//表示连接成功
|
||||
BSP_Bt_Valve_Resp(kValveConncetStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE); // 表示连接成功
|
||||
}
|
||||
else
|
||||
{
|
||||
BSP_Bt_Valve_Resp(kValveEventStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE);
|
||||
}
|
||||
break;
|
||||
// TODO:待完成从机的一些主动上报信息解析
|
||||
case kRespOverPressure:
|
||||
logDebug("阀门超压关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOverPressure, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespUnderPressure:
|
||||
logDebug("阀门欠压关阀");
|
||||
|
||||
BSP_Bt_Valve_Resp(kValveCmdUnderPressure, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespOverCurrent:
|
||||
logDebug("阀门过流关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOverCurrent, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespMicroLeak:
|
||||
logDebug("阀门微漏关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdMicroLeak, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespTimer:
|
||||
logDebug("阀门定时关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdTimer, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespOpenWithStove:
|
||||
logDebug("开灶关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOpenWithStove, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespCloseWithStove:
|
||||
logDebug("关灶关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdCloseWithStove, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespOverTemperature:
|
||||
logDebug("阀门超温关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOverTemperature, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespDelayClose:
|
||||
logDebug("阀门延时关闭");
|
||||
BSP_Bt_Valve_Resp(kValveCmdDelayClose, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespManualClose:
|
||||
logDebug("阀门手动关闭");
|
||||
BSP_Bt_Valve_Resp(kValveCmdManualClose, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
default:
|
||||
logError("不支持的命令: %d", master_rx_buf[1]);
|
||||
logError("不支持的从机命令: %d", master_rx_buf[1]);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t BT_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||
|
@ -361,7 +403,7 @@ uint16_t BT_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
if (bt_recv_start_flag)
|
||||
{
|
||||
bt_recv_start_flag = 0;
|
||||
bt_recv_end_flag = 1;
|
||||
bt_recv_end_flag = 1;
|
||||
tmos_start_task(task_id, BT_REC_EVT, 100);
|
||||
}
|
||||
tmos_start_task(task_id, BT_REC_EVT_FINISH, 50);
|
||||
|
@ -373,7 +415,7 @@ uint16_t BT_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
if (bt_recv_end_flag)
|
||||
{
|
||||
bt_recv_end_flag = 0;
|
||||
int len = lwrb_get_full(&uart1_rx_t);
|
||||
int len = lwrb_get_full(&uart1_rx_t);
|
||||
if (len > 0)
|
||||
{
|
||||
__attribute__((aligned(4))) uint8_t buf[256] = {0};
|
||||
|
@ -460,10 +502,10 @@ void UART1_IRQHandler(void)
|
|||
break;
|
||||
}
|
||||
case UART_II_RECV_RDY:
|
||||
case UART_II_RECV_TOUT: // 接收数据
|
||||
if ((bt_recv_start_flag == 0)&&(bt_recv_end_flag == 0))//用于检测是否是开始接收数据
|
||||
case UART_II_RECV_TOUT: // 接收数据
|
||||
if ((bt_recv_start_flag == 0) && (bt_recv_end_flag == 0)) // 用于检测是否是开始接收数据
|
||||
{
|
||||
bt_recv_start_flag = 1;
|
||||
bt_recv_start_flag = 1;
|
||||
}
|
||||
while (R8_UART1_RFC)
|
||||
{
|
||||
|
@ -575,7 +617,7 @@ int reboot(void)
|
|||
{
|
||||
PFIC_SystemReset();
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC),
|
||||
reboot, reboot, "reboot");
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-09 11:40:10
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2025-04-22 15:15:24
|
||||
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c
|
||||
* @LastEditTime: 2025-05-23 11:08:46
|
||||
* @FilePath: \zbf_master_ch584m\bsp\src\bsp_valve.c
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
|
||||
|
@ -14,7 +14,6 @@
|
|||
#include "bsp_uart.h"
|
||||
#include "multiCentral.h"
|
||||
|
||||
|
||||
/*
|
||||
接收的蓝牙从机info:
|
||||
接收数据帧格式: 帧头 + 命令 + 数据长度 + 心跳数据包 + 校验码 + 帧尾
|
||||
|
@ -29,7 +28,6 @@
|
|||
valve_data_list_t valve_list = {0};
|
||||
BTFrameData valve_frame_data = {0};
|
||||
|
||||
|
||||
uint8_t Valve_GenerateRawFrame(BTFrameData *pRawData, const uint8_t cmd, const uint8_t *p_src, uint8_t src_len)
|
||||
{
|
||||
pRawData->len = src_len + 5;
|
||||
|
@ -51,10 +49,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");
|
||||
|
@ -62,14 +60,19 @@ int BSP_Valve_Close(uint8_t valve_id)
|
|||
return -1;
|
||||
}
|
||||
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 +98,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))
|
||||
|
@ -137,8 +152,8 @@ int BSP_Bt_Register_Valve(uint8_t *data, uint8_t len)
|
|||
return 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
{
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
Flash_Set_Valve_Num(num + 1);
|
||||
BSP_Bt_Valve_Updata(); // 更新阀门信息
|
||||
}
|
||||
|
@ -157,7 +172,7 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
|
|||
{
|
||||
size_t i = 0;
|
||||
uint8_t mac_addr[FLASH_MAC_INFO_LEN + 2] = {0};
|
||||
if ((data[0] >= 1) && (data[0] <= 8))// 判断是否是正确的ID
|
||||
if ((data[0] >= 1) && (data[0] <= 8)) // 判断是否是正确的ID
|
||||
{
|
||||
Flash_Get_Mac_Addr(mac_addr, data[0]);
|
||||
}
|
||||
|
@ -167,10 +182,10 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
|
|||
logHexDumpAll(data, len);
|
||||
return -1;
|
||||
}
|
||||
if (tmos_memcmp(&data[1], mac_addr, FLASH_MAC_INFO_LEN) != TRUE)// 判断是否是相同的MAC地址
|
||||
if (tmos_memcmp(&data[1], mac_addr, FLASH_MAC_INFO_LEN) != TRUE) // 判断是否是相同的MAC地址
|
||||
{
|
||||
logError("mac addr error");
|
||||
logHexDumpAll(data, len);
|
||||
logHexDumpAll(data, len);
|
||||
return -2;
|
||||
}
|
||||
else
|
||||
|
@ -179,10 +194,10 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
|
|||
if (Flash_Set_Mac_Addr(mac_addr, data[0]) != 0) // 清空掉对应位置MAC数据
|
||||
{
|
||||
logError("移除阀门信息失败");
|
||||
logHexDumpAll(data, len);
|
||||
logHexDumpAll(data, len);
|
||||
return -2;
|
||||
}
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
if (Flash_Set_Valve_Num(num - 1) != 0) // 移除一个阀门
|
||||
{
|
||||
logError("移除阀门信息失败");
|
||||
|
@ -200,8 +215,8 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
|
|||
int BSP_Bt_Remove_All_Valve(void)
|
||||
{
|
||||
uint8_t mac_addr[FLASH_MAC_INFO_LEN + 2] = {0};
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
if(num == 0)
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
if (num == 0)
|
||||
{
|
||||
logError("没有找到任何阀门信息");
|
||||
return 0;
|
||||
|
@ -229,7 +244,7 @@ int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len)
|
|||
uint8_t mac_addr[FLASH_MAC_INFO_LEN] = {0};
|
||||
logDebug("更换阀门信息:");
|
||||
logHexDumpAll(data, len);
|
||||
if ((len == 0) || (len < 13))//新旧MAC地址长度加id 6 + 6 + 1 = 13至少要大于12
|
||||
if ((len == 0) || (len < 13)) // 新旧MAC地址长度加id 6 + 6 + 1 = 13至少要大于12
|
||||
{
|
||||
logError("data len error");
|
||||
return -1;
|
||||
|
@ -250,14 +265,14 @@ int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len)
|
|||
}
|
||||
else
|
||||
{
|
||||
//新阀门数据在前
|
||||
// 新阀门数据在前
|
||||
if (Flash_Set_Mac_Addr(&data[1], data[0]) != 0)
|
||||
{
|
||||
logError("阀门注册写入flash 错误");
|
||||
return 3;
|
||||
}
|
||||
BSP_Bt_Valve_Updata(); // 更新阀门信息
|
||||
Master_DisConnect();//更新后先断联接
|
||||
Master_DisConnect(); // 更新后先断联接
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -266,17 +281,16 @@ 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 num = Flash_Get_Valve_Num();
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
logInfo("BSP_Bt_Valve_Updata num: %d ", num);
|
||||
if (num == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
tmos_memset(&valve_list, 0, sizeof(valve_data_list_t));
|
||||
|
||||
|
||||
for (int i = 1; i < MAX_VALVE_NUM; i++) // 这个循环是为了将数据拷贝到valve_list中, 并且保证id号和flash对应起来
|
||||
{
|
||||
if (Flash_Get_Mac_Addr(valve_list.valve_data[cnt].valve_mac, i) == 0) // 说明有MAC数据
|
||||
|
@ -301,14 +315,13 @@ void BSP_Bt_Valve_Updata(void)
|
|||
}
|
||||
}
|
||||
Flash_Set_Valve_Num(valve_list.valve_num);
|
||||
|
||||
}
|
||||
|
||||
//蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态吗,具体参考对应的case
|
||||
int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
||||
// 蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态码,具体参考对应的case
|
||||
int BSP_Bt_Valve_Resp(ValveCmdType 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)
|
||||
{
|
||||
|
@ -316,26 +329,37 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
|||
case kValveCmdReg:
|
||||
case kValveCmdRem:
|
||||
case kValveCmdRep:
|
||||
// TODO:待完成从机的一些主动上报信息解析
|
||||
case kValveCmdOverPressure:
|
||||
case kValveCmdUnderPressure:
|
||||
case kValveCmdOverCurrent:
|
||||
case kValveCmdMicroLeak:
|
||||
case kValveCmdTimer:
|
||||
case kValveCmdOpenWithStove:
|
||||
case kValveCmdCloseWithStove:
|
||||
case kValveCmdOverTemperature:
|
||||
case kValveCmdDelayClose:
|
||||
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;
|
||||
tmos_memcpy(&ptr->buf[1], mac_addr, 6);
|
||||
ptr->buf[7] = state; //0表示断开,1表示连接
|
||||
logDebug("连接状态:%d", ptr->buf[7]);
|
||||
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 9);
|
||||
ptr->buf[7] = state; // 0表示断开,1表示连接
|
||||
logDebug("连接状态:%d", ptr->buf[7]);
|
||||
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 9);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -349,7 +373,7 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
|||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
void BSP_Valve_Init(void)
|
||||
{
|
||||
logDebug("BSP_Valve_Init");
|
||||
|
|
Loading…
Reference in New Issue