diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3b9ab74..8f9e6e8 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -228,7 +228,9 @@
"hand_acid_val_protocol.h": "c",
"zscanprotocol.h": "c",
"hand_acid_remoter_key_event.h": "c",
- "ble_proto_utils.h": "c"
+ "ble_proto_utils.h": "c",
+ "light_ctrl.h": "c",
+ "zkey_driver.h": "c"
},
"files.encoding": "gbk"
}
\ No newline at end of file
diff --git a/README.md b/README.md
index 0bd3231..e1a01b0 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,48 @@
```
-build_app.bat 编译应用程序
-build_bootloader.bat 编译bootloader
-flash_with_id.bat 烧录程序携带ID
+build_app.bat Ӧó
+build_bootloader.bat bootloader
+flash_with_id.bat ¼ЯID
+
+#############################################################################
+
+//
+//
+//״̬
+ ״̬
+
+
+
+static bool sleep;
+static bool work;
+static int mode;
+static bool pumpworkstate;
+static connected;
+active ble;
+
+һ״̬
+ updateState();
+״̬
+ ػ㲥
+
+߹㲥״̬
+ °ƣ㲥
+
+״̬
+ ͵¼
+
+
+ ǹ
+ ģʽ1
+ ģʽ2
+ δ״̬
+
+״̬
+ صƣع㲥
+
+###############################################################################
```
+
diff --git a/app/app.uvoptx b/app/app.uvoptx
index 5a31816..e96c29b 100644
--- a/app/app.uvoptx
+++ b/app/app.uvoptx
@@ -456,6 +456,42 @@
0
0
+
+ 1
+ 7
+ 1
+ 0
+ 0
+ 0
+ .\src\app_basic_service\zapp_ebus.c
+ zapp_ebus.c
+ 0
+ 0
+
+
+ 1
+ 8
+ 1
+ 0
+ 0
+ 0
+ .\src\app_basic_service\zapp_gstate.c
+ zapp_gstate.c
+ 0
+ 0
+
+
+ 1
+ 9
+ 1
+ 0
+ 0
+ 0
+ .\src\app_service\zkey_driver.c
+ zkey_driver.c
+ 0
+ 0
+
@@ -466,7 +502,7 @@
0
2
- 7
+ 10
1
0
0
@@ -486,7 +522,7 @@
0
3
- 8
+ 11
1
0
0
@@ -498,7 +534,7 @@
3
- 9
+ 12
1
0
0
@@ -518,7 +554,7 @@
0
4
- 10
+ 13
1
0
0
@@ -538,7 +574,7 @@
0
5
- 11
+ 14
1
0
0
@@ -550,7 +586,7 @@
5
- 12
+ 15
1
0
0
@@ -562,7 +598,7 @@
5
- 13
+ 16
1
0
0
@@ -574,7 +610,7 @@
5
- 14
+ 17
1
0
0
@@ -586,7 +622,7 @@
5
- 15
+ 18
1
0
0
@@ -598,7 +634,7 @@
5
- 16
+ 19
1
0
0
@@ -610,7 +646,7 @@
5
- 17
+ 20
1
0
0
@@ -622,7 +658,7 @@
5
- 18
+ 21
1
0
0
@@ -642,7 +678,7 @@
0
6
- 19
+ 22
1
0
0
@@ -662,7 +698,7 @@
0
7
- 20
+ 23
1
0
0
@@ -674,7 +710,7 @@
7
- 21
+ 24
1
0
0
@@ -686,7 +722,7 @@
7
- 22
+ 25
1
0
0
@@ -698,7 +734,7 @@
7
- 23
+ 26
1
0
0
@@ -710,7 +746,7 @@
7
- 24
+ 27
1
0
0
@@ -722,7 +758,7 @@
7
- 25
+ 28
1
0
0
@@ -734,7 +770,7 @@
7
- 26
+ 29
1
0
0
@@ -746,7 +782,7 @@
7
- 27
+ 30
1
0
0
@@ -758,7 +794,7 @@
7
- 28
+ 31
1
0
0
@@ -770,7 +806,7 @@
7
- 29
+ 32
1
0
0
@@ -782,7 +818,7 @@
7
- 30
+ 33
1
0
0
@@ -794,7 +830,7 @@
7
- 31
+ 34
1
0
0
@@ -806,7 +842,7 @@
7
- 32
+ 35
1
0
0
@@ -818,7 +854,7 @@
7
- 33
+ 36
1
0
0
@@ -830,7 +866,7 @@
7
- 34
+ 37
1
0
0
@@ -842,7 +878,7 @@
7
- 35
+ 38
1
0
0
@@ -854,7 +890,7 @@
7
- 36
+ 39
1
0
0
@@ -866,7 +902,7 @@
7
- 37
+ 40
1
0
0
@@ -878,7 +914,7 @@
7
- 38
+ 41
1
0
0
@@ -890,7 +926,7 @@
7
- 39
+ 42
1
0
0
@@ -902,7 +938,7 @@
7
- 40
+ 43
1
0
0
@@ -922,7 +958,7 @@
0
8
- 41
+ 44
1
0
0
@@ -934,7 +970,7 @@
8
- 42
+ 45
1
0
0
@@ -946,7 +982,7 @@
8
- 43
+ 46
1
0
0
@@ -958,7 +994,7 @@
8
- 44
+ 47
1
0
0
@@ -970,7 +1006,7 @@
8
- 45
+ 48
1
0
0
@@ -982,7 +1018,7 @@
8
- 46
+ 49
1
0
0
@@ -994,7 +1030,7 @@
8
- 47
+ 50
1
0
0
@@ -1006,7 +1042,7 @@
8
- 48
+ 51
1
0
0
@@ -1018,7 +1054,7 @@
8
- 49
+ 52
1
0
0
@@ -1030,7 +1066,7 @@
8
- 50
+ 53
1
0
0
@@ -1042,7 +1078,7 @@
8
- 51
+ 54
1
0
0
@@ -1054,7 +1090,7 @@
8
- 52
+ 55
1
0
0
@@ -1066,7 +1102,7 @@
8
- 53
+ 56
1
0
0
@@ -1078,7 +1114,7 @@
8
- 54
+ 57
1
0
0
@@ -1090,7 +1126,7 @@
8
- 55
+ 58
1
0
0
@@ -1102,7 +1138,7 @@
8
- 56
+ 59
1
0
0
@@ -1114,7 +1150,7 @@
8
- 57
+ 60
1
0
0
@@ -1126,7 +1162,7 @@
8
- 58
+ 61
1
0
0
@@ -1138,7 +1174,7 @@
8
- 59
+ 62
1
0
0
@@ -1150,7 +1186,7 @@
8
- 60
+ 63
1
0
0
@@ -1162,7 +1198,7 @@
8
- 61
+ 64
1
0
0
@@ -1174,7 +1210,7 @@
8
- 62
+ 65
1
0
0
@@ -1186,7 +1222,7 @@
8
- 63
+ 66
1
0
0
@@ -1198,7 +1234,7 @@
8
- 64
+ 67
1
0
0
@@ -1210,7 +1246,7 @@
8
- 65
+ 68
1
0
0
@@ -1222,7 +1258,7 @@
8
- 66
+ 69
1
0
0
@@ -1234,7 +1270,7 @@
8
- 67
+ 70
1
0
0
@@ -1254,7 +1290,7 @@
0
9
- 68
+ 71
1
0
0
@@ -1266,7 +1302,7 @@
9
- 69
+ 72
1
0
0
@@ -1278,7 +1314,7 @@
9
- 70
+ 73
1
0
0
@@ -1290,7 +1326,7 @@
9
- 71
+ 74
1
0
0
@@ -1302,7 +1338,7 @@
9
- 72
+ 75
1
0
0
@@ -1314,7 +1350,7 @@
9
- 73
+ 76
1
0
0
@@ -1334,7 +1370,7 @@
0
10
- 74
+ 77
1
0
0
@@ -1346,7 +1382,7 @@
10
- 75
+ 78
1
0
0
@@ -1358,7 +1394,7 @@
10
- 76
+ 79
1
0
0
@@ -1378,7 +1414,7 @@
0
11
- 77
+ 80
1
0
0
@@ -1390,7 +1426,7 @@
11
- 78
+ 81
1
0
0
@@ -1402,7 +1438,7 @@
11
- 79
+ 82
1
0
0
@@ -1422,7 +1458,7 @@
0
12
- 80
+ 83
1
0
0
@@ -1434,7 +1470,7 @@
12
- 81
+ 84
1
0
0
@@ -1446,7 +1482,7 @@
12
- 82
+ 85
1
0
0
@@ -1466,7 +1502,7 @@
0
13
- 83
+ 86
1
0
0
@@ -1478,7 +1514,7 @@
13
- 84
+ 87
1
0
0
@@ -1490,7 +1526,7 @@
13
- 85
+ 88
1
0
0
@@ -1502,7 +1538,7 @@
13
- 86
+ 89
1
0
0
@@ -1514,7 +1550,7 @@
13
- 87
+ 90
1
0
0
@@ -1534,7 +1570,7 @@
0
14
- 88
+ 91
1
0
0
@@ -1546,7 +1582,7 @@
14
- 89
+ 92
1
0
0
@@ -1558,7 +1594,7 @@
14
- 90
+ 93
1
0
0
@@ -1570,7 +1606,7 @@
14
- 91
+ 94
1
0
0
@@ -1590,7 +1626,7 @@
0
15
- 92
+ 95
1
0
0
@@ -1602,7 +1638,7 @@
15
- 93
+ 96
1
0
0
diff --git a/app/app.uvprojx b/app/app.uvprojx
index 9656879..41bb3c7 100644
--- a/app/app.uvprojx
+++ b/app/app.uvprojx
@@ -413,6 +413,21 @@
1
.\src\ble_data_processer_utils.c
+
+ zapp_ebus.c
+ 1
+ .\src\app_basic_service\zapp_ebus.c
+
+
+ zapp_gstate.c
+ 1
+ .\src\app_basic_service\zapp_gstate.c
+
+
+ zkey_driver.c
+ 1
+ .\src\app_service\zkey_driver.c
+
@@ -4242,6 +4257,21 @@
1
.\src\ble_data_processer_utils.c
+
+ zapp_ebus.c
+ 1
+ .\src\app_basic_service\zapp_ebus.c
+
+
+ zapp_gstate.c
+ 1
+ .\src\app_basic_service\zapp_gstate.c
+
+
+ zkey_driver.c
+ 1
+ .\src\app_service\zkey_driver.c
+
diff --git a/app/src/acid_dispenser_ble_slave_main.c b/app/src/acid_dispenser_ble_slave_main.c
index 5017220..c35d5a6 100644
--- a/app/src/acid_dispenser_ble_slave_main.c
+++ b/app/src/acid_dispenser_ble_slave_main.c
@@ -1,19 +1,24 @@
#include
#include
+// pconfig
#include "aproject_config/config.h"
-// #include "ify_hrs_protocol/heart_rate_sensor_protocol.h"
-#include "app_protocols/app_protocols.h"
+#include "board/board.h"
+// ble
+#include "zble_module.h"
#include "zdatachannel_service.h"
-//
+// protocol
+#include "app_protocols/app_protocols.h"
+// app_basic_service
+#include "app_basic_service/basic/state.h"
#include "app_basic_service/device_version_info_mgr.h"
#include "app_basic_service/zapp.h"
+// app_service
#include "app_service/battery_mgr_service.h"
#include "app_service/light_ctrl.h"
-#include "zble_module.h"
-//
+#include "app_service/zkey_driver.h"
+// others
#include "ble_data_processer_utils.h"
-#include "board/board.h"
#include "nrf_fstorage.h"
#include "nrf_fstorage_sd.h"
@@ -152,31 +157,68 @@ static void update_light_state() {
*
*/
- if (zapp_state_machine_now_state() == kstate_standby) {
- // ģʽ
+ // if (zapp_state_machine_now_state() == kstate_standby) {
+ // // ģʽ
+ // nrf_gpio_set_rgb(0, 0, 0);
+ // } else {
+ // if (g_connected) { // ״̬
+ // if (g_hand_acid_mode == khand_acid_m_jog_mode) {
+ // nrf_gpio_set_rgb(0, 0, 1); // 㶯ģʽ
+ // } else if (g_hand_acid_mode == khand_acid_m_continuous_mode) {
+ // nrf_gpio_set_rgb(0, 1, 0); // ֶģʽ
+ // } else if (g_hand_acid_mode == khand_acid_m_unset_mode) {
+ // nrf_gpio_set_rgb(1, 1, 1); // ״̬δͬ
+ // }
+ // } else {
+ // nrf_gpio_set_rgb(1, 0, 0);
+ // }
+ // }
+}
+void process_offline_standby(app_event_t* event, uint16_t event_size) { //
+ app_event_type_t eventType = event->eventType;
+
+ if (eventType == kappevent_state_machine_state_enter) {
+ ZLOGI("enter standby");
nrf_gpio_set_rgb(0, 0, 0);
+ } else if (eventType == kappevent_state_machine_state_exit) {
+ ZLOGI("exit standby");
} else {
- if (g_connected) { // ״̬
- if (g_hand_acid_mode == khand_acid_m_jog_mode) {
- nrf_gpio_set_rgb(0, 0, 1); // 㶯ģʽ
- } else if (g_hand_acid_mode == khand_acid_m_continuous_mode) {
- nrf_gpio_set_rgb(0, 1, 0); // ֶģʽ
- } else if (g_hand_acid_mode == khand_acid_m_unset_mode) {
- nrf_gpio_set_rgb(1, 1, 1); // ״̬δͬ
- }
- } else {
- nrf_gpio_set_rgb(1, 0, 0);
- }
}
}
+void process_offline_broadcast(app_event_t* event, uint16_t event_size) { //
+ app_event_type_t eventType = event->eventType;
+}
+void process_online_workstate(app_event_t* event, uint16_t event_size) { //
+ app_event_type_t eventType = event->eventType;
+}
+void process_online_standy(app_event_t* event, uint16_t event_size) { //
+ app_event_type_t eventType = event->eventType;
+}
void on_zapp_ebus_event(void* p_event_data, uint16_t event_size) {
if (!p_event_data) return;
- app_event_t* p_event = (app_event_t*)p_event_data;
- app_event_type_t event = p_event->eventType;
-
- // ZLOGI("event:%d add_acid_key:%d reverse_key:%d", p_event->eventType, nrf_gpio_pin_read(ADD_ACID_KEY), nrf_gpio_pin_read(REVERSE_KEY));
+ app_event_t* p_event = (app_event_t*)p_event_data;
+
+ device_state_t state = zapp_state_machine_now_state();
+ switch (state) {
+ case kstate_offline_standby:
+ process_offline_standby(p_event, event_size);
+ break;
+ case kstate_offline_broadcast:
+ process_offline_broadcast(p_event, event_size);
+ break;
+ case kstate_online_workstate:
+ process_online_workstate(p_event, event_size);
+ break;
+ case kstate_online_standy:
+ process_online_standy(p_event, event_size);
+ break;
+ default:
+ break;
+ }
+ // ZLOGI("event:%d add_acid_key:%d reverse_key:%d", p_event->eventType, nrf_gpio_pin_read(ADD_ACID_KEY), nrf_gpio_pin_read(REVERSE_KEY));
+#if 0
if (zapp_state_machine_now_state() == kstate_standby) {
if (event == kappevent_state_machine_state_enter) {
ZLOGI("enter standby");
@@ -263,92 +305,9 @@ void on_zapp_ebus_event(void* p_event_data, uint16_t event_size) {
// }
}
}
+#endif
}
-/***********************************************************************************************************************
- * *
- ***********************************************************************************************************************/
-APP_TIMER_DEF(m_key_monitor_tmr); // ״̬ʱ
-bool key_read_acid_state() {
- uint32_t val = nrf_gpio_pin_read(ADD_ACID_KEY);
- if (val == 0) {
- return true;
- } else {
- return false;
- }
-}
-
-bool key_liquid_reflux_butt_read_state() {
- uint32_t val = nrf_gpio_pin_read(REVERSE_KEY);
- if (val == 0) {
- return true;
- } else {
- return false;
- }
-}
-
-typedef struct {
- bool keystate;
- bool longPress;
- bool pressing;
- uint32_t pressTicket;
- uint32_t keid;
- bool (*read_key_state)();
-} key_t;
-
-static void process_key(key_t* key) {
- static app_event_t event;
- bool nowState = key->read_key_state(); //
-
- if (nowState != key->keystate) {
- // ¼
- m_last_usr_operation_time = znordic_getpower_on_ms();
- if (nowState) {
- key->longPress = false;
- key->pressing = true;
- key->pressTicket = znordic_getpower_on_ms();
- }
- // ɿ¼
- if (!nowState) {
- if (!key->longPress) {
- event.eventType = kappevent_key_pressed;
- event.val.keyid = key->keid; //
- zapp_ebus_push_event(&event);
- }
- key->pressing = false;
- }
- }
-
- if (key->pressing && !key->longPress) {
- if (znordic_haspassed_ms(key->pressTicket) > m_longpress_trigger_time) {
- key->longPress = true;
- event.eventType = kappevent_key_long_pressed;
- event.val.keyid = key->keid; //
- zapp_ebus_push_event(&event);
- }
- }
-
- key->keystate = nowState;
-}
-
-static void state_machine_driver_tmr_cb(void* p_context) { //
- static key_t mode_and_action_butt = {
- .keid = 1,
- .read_key_state = key_read_acid_state,
- };
- static key_t liquid_reflux_butt = {
- .keid = 2,
- .read_key_state = key_liquid_reflux_butt_read_state,
- };
-
- process_key(&mode_and_action_butt);
- process_key(&liquid_reflux_butt);
-}
-
-/***********************************************************************************************************************
- * *
- ***********************************************************************************************************************/
-
static void board_init() {
nrf_gpio_cfg_input(ADD_ACID_KEY, NRF_GPIO_PIN_NOPULL);
nrf_gpio_cfg_input(REVERSE_KEY, NRF_GPIO_PIN_NOPULL);
@@ -371,11 +330,9 @@ void acid_dispenser_ble_slave_main() {
zapp_ebus_reg_event_listener(on_zapp_ebus_event);
zble_module_reglistener(on_zble_event);
- zapp_state_machine_change_state(kstate_working_state);
+ zapp_state_machine_change_state(kstate_offline_standby);
- zble_module_start_adv();
+ // zble_module_start_adv();
zapp_start_schedule();
-
- ZERROR_CHECK(app_timer_create(&m_key_monitor_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb));
- ZERROR_CHECK(app_timer_start(m_key_monitor_tmr, APP_TIMER_TICKS(100), NULL));
+ zkey_driver_init();
}
diff --git a/app/src/app_basic_service/basic/keyid.h b/app/src/app_basic_service/basic/keyid.h
new file mode 100644
index 0000000..da6ac03
--- /dev/null
+++ b/app/src/app_basic_service/basic/keyid.h
@@ -0,0 +1,5 @@
+#pragma once
+typedef enum {
+ keyid_reflux,
+ keyid_addliquid,
+} keyid_t;
diff --git a/app/src/app_basic_service/basic/state.h b/app/src/app_basic_service/basic/state.h
index 281df06..8d38bed 100644
--- a/app/src/app_basic_service/basic/state.h
+++ b/app/src/app_basic_service/basic/state.h
@@ -4,17 +4,24 @@
#include "aproject_config/config.h"
typedef enum {
- kstate_standby,
- kstate_working_state,
+ kstate_offline_standby,
+ kstate_offline_broadcast,
+ kstate_online_workstate,
+ kstate_online_standy,
} device_state_t;
static const char* device_state_to_str(device_state_t ds) {
switch (ds) {
- case kstate_standby:
- return "kstate_standby";
- case kstate_working_state:
- return "kstate_working_state";
+ case kstate_offline_standby:
+ return "offline_standby";
+ case kstate_offline_broadcast:
+ return "offline_broadcast";
+ case kstate_online_workstate:
+ return "online_workstate";
+ case kstate_online_standy:
+ return "online_standy";
default:
- return "unknown";
+ return "unkown_state";
}
+ return "";
}
diff --git a/app/src/app_basic_service/zapp.c b/app/src/app_basic_service/zapp.c
index 4480e51..1712618 100644
--- a/app/src/app_basic_service/zapp.c
+++ b/app/src/app_basic_service/zapp.c
@@ -6,13 +6,13 @@ typedef struct {
app_event_listener_t cbfunc;
} AppEventListener;
-static device_state_t m_device_state = kstate_standby; // 设备状态
-static uint32_t m_change_to_cur_state_tp = 0; // 切换到当前状态的时间戳
+static device_state_t m_device_state = kstate_offline_standby; // 豸״̬
+static uint32_t m_change_to_cur_state_tp = 0; // лǰ״̬ʱ
static on_state_change_t m_onstate_change;
static AppEventListener m_listener[10];
static int m_listener_num = 0;
-APP_TIMER_DEF(m_state_machine_driver_tmr); // 状态机驱动定时器
+APP_TIMER_DEF(m_state_machine_driver_tmr); // ״̬ʱ
#define SCHED_MAX_EVENT_DATA_SIZE MAX(sizeof(app_event_t), APP_TIMER_SCHED_EVENT_DATA_SIZE)
APP_TIMER_DEF(m_delay_event_preset_tmr0); //
@@ -235,8 +235,8 @@ uint32_t zapp_exec_in_main_context(uint8_t* hang_up_flag, void (*handler)(void*)
/**
* @brief
- * 1. 如果hang_up_flag为空,则无论事件队列中是否已经存在事件,都会推入事件队列
- * 2. 如果hang_up_flag不为空,则只有当事件队列中没有该事件时,才会推入事件队列(应用于定时器周期调度事件)
+ * 1. hang_up_flagΪգ¼ǷѾ¼¼
+ * 2. hang_up_flagΪգֻе¼ûи¼ʱݼ(Ӧڶʱڵ¼)
*/
if (hang_up_flag) {
diff --git a/app/src/app_basic_service/zapp_ebus.c b/app/src/app_basic_service/zapp_ebus.c
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/app_basic_service/zapp_ebus.h b/app/src/app_basic_service/zapp_ebus.h
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/app_basic_service/zapp_gstate.c b/app/src/app_basic_service/zapp_gstate.c
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/app_basic_service/zapp_gstate.h b/app/src/app_basic_service/zapp_gstate.h
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/app_service/zkey_driver.c b/app/src/app_service/zkey_driver.c
new file mode 100644
index 0000000..ad65351
--- /dev/null
+++ b/app/src/app_service/zkey_driver.c
@@ -0,0 +1,102 @@
+#include
+#include
+
+// pconfig
+#include "aproject_config/config.h"
+#include "board/board.h"
+// ble
+#include "zble_module.h"
+#include "zdatachannel_service.h"
+#include "znordic.h"
+// protocol
+#include "app_protocols/app_protocols.h"
+// app_timer
+#include "sdk/components/libraries/timer/app_timer.h"
+//
+#include "app_basic_service\basic\event.h"
+
+/***********************************************************************************************************************
+ * *
+ ***********************************************************************************************************************/
+#define LONGPRESS_TRIGGER_TIME 1500
+
+typedef struct {
+ bool keystate;
+ bool longPress;
+ bool pressing;
+ uint32_t pressTicket;
+ uint32_t keid;
+ bool (*read_key_state)();
+} key_t;
+
+APP_TIMER_DEF(m_key_monitor_tmr); // ״̬ʱ
+static bool key_read_acid_state() {
+ uint32_t val = nrf_gpio_pin_read(ADD_ACID_KEY);
+ if (val == 0) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static bool key_liquid_reflux_butt_read_state() {
+ uint32_t val = nrf_gpio_pin_read(REVERSE_KEY);
+ if (val == 0) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static void process_key(key_t* key) {
+ static app_event_t event;
+ bool nowState = key->read_key_state(); //
+
+ if (nowState != key->keystate) {
+ // ¼
+ if (nowState) {
+ key->longPress = false;
+ key->pressing = true;
+ key->pressTicket = znordic_getpower_on_ms();
+ }
+ // ɿ¼
+ if (!nowState) {
+ if (!key->longPress) {
+ event.eventType = kappevent_key_pressed;
+ event.val.keyid = key->keid; //
+ zapp_ebus_push_event(&event);
+ }
+ key->pressing = false;
+ }
+ }
+
+ if (key->pressing && !key->longPress) {
+ if (znordic_haspassed_ms(key->pressTicket) > LONGPRESS_TRIGGER_TIME) {
+ key->longPress = true;
+ event.eventType = kappevent_key_long_pressed;
+ event.val.keyid = key->keid; //
+ zapp_ebus_push_event(&event);
+ }
+ }
+
+ key->keystate = nowState;
+}
+
+static void key_driver_tmr_cb(void* p_context) { //
+ static key_t mode_and_action_butt = {
+ .keid = 1,
+ .read_key_state = key_read_acid_state,
+ };
+ static key_t liquid_reflux_butt = {
+ .keid = 2,
+ .read_key_state = key_liquid_reflux_butt_read_state,
+ };
+
+ process_key(&mode_and_action_butt);
+ process_key(&liquid_reflux_butt);
+}
+
+void zkey_driver_init() {
+ ZERROR_CHECK(app_timer_create(&m_key_monitor_tmr, APP_TIMER_MODE_REPEATED, key_driver_tmr_cb));
+ ZERROR_CHECK(app_timer_start(m_key_monitor_tmr, APP_TIMER_TICKS(100), NULL));
+}
diff --git a/app/src/app_service/zkey_driver.h b/app/src/app_service/zkey_driver.h
new file mode 100644
index 0000000..049fd81
--- /dev/null
+++ b/app/src/app_service/zkey_driver.h
@@ -0,0 +1,5 @@
+#pragma once
+#include
+#include
+
+void zkey_driver_init();
\ No newline at end of file
diff --git a/app/src/main.c b/app/src/main.c
index e6cf3c4..a269fe0 100644
--- a/app/src/main.c
+++ b/app/src/main.c
@@ -12,9 +12,9 @@
#include "zdatachannel_service.h"
#include "acid_dispenser_ble_slave_main.h"
//
-ZDATACHANNEL_DEF(m_zhrs, 2 /*优先级*/, 1 /*client num*/); // 蓝牙服务
+ZDATACHANNEL_DEF(m_zhrs, 2 /*ȼ*/, 1 /*client num*/); //
/**
- * @brief 蓝牙消息解析
+ * @brief Ϣ
*/
void zdatachannel_data_handler(zdatachannel_evt_t *p_evt) {
if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) {
@@ -68,14 +68,14 @@ int main() {
zapp_init();
/*******************************************************************************
- * 蓝牙服务初始化 *
+ * ʼ *
*******************************************************************************/
static zble_module_cfg_t cfg;
cfg.deviceName = device_info_read_sn_str();
cfg.on_service_init = on_service_init;
zble_module_init(&cfg);
/*******************************************************************************
- * 设备控制服务初始化 *
+ * 豸Ʒʼ *
*******************************************************************************/
acid_dispenser_ble_slave_main();
/*******************************************************************************