diff --git a/APP/main.c b/APP/main.c index 8d75589..ec42415 100644 --- a/APP/main.c +++ b/APP/main.c @@ -5,6 +5,7 @@ #include "key.h" #include "port.h" #include "systicket.h" +#include "this_device.h" static key_t s_keys[] = { s_key_init("powerkey", port_gpio_get_power_key_state), @@ -13,6 +14,8 @@ static key_t s_keys[] = { s_key_init("intervalkey", port_gpio_get_interval_key_state), }; +static ThisDevice_t this_device = {.power = false}; + static void mf_init_all_subdevice_state() { port_debug_set(false); port_fan_set(false); @@ -25,19 +28,51 @@ static void mf_init_all_subdevice_state() { port_led_b_set(false); } +static void poweron() { + this_device.power = true; + port_fan_set(true); + return; +} +static void powerdown() { + this_device.power = false; + port_fan_set(false); + return; +} + +// 各个按键处理逻辑 +static void mf_process_poweron_key(key_t *key) { + printf("key name:%s\n", key->name); + + if (!this_device.power) { + poweron(); + } else { + powerdown(); + } + + return; +} +static void mf_process_level_key(key_t *key) { + printf("key name:%s\n", key->name); + return; +} +static void mf_process_timer_key(key_t *key) { + printf("key name:%s\n", key->name); + return; +} +static void mf_process_interval_key(key_t *key) { + printf("key name:%s\n", key->name); + return; +} + static void onkey(key_t *key, key_state_t key_state) { if /* */ (strcmp(key->name, "powerkey") == 0 && zks_rising_edge == key_state) { - printf("powerkey\n"); - // mf_process_poweron_key(key); + mf_process_poweron_key(key); } else if (strcmp(key->name, "levelkey") == 0 && zks_rising_edge == key_state) { - printf("levelkey\n"); - // mf_process_level_key(key); + mf_process_level_key(key); } else if (strcmp(key->name, "timerkey") == 0 && zks_rising_edge == key_state) { - printf("timerkey\n"); - // mf_process_timer_key(key); + mf_process_timer_key(key); } else if (strcmp(key->name, "intervalkey") == 0 && zks_rising_edge == key_state) { - printf("intervalkey\n"); - // mf_process_interval_key(key); + mf_process_interval_key(key); } } diff --git a/APP/this_device.c b/APP/this_device.c new file mode 100644 index 0000000..6231b8a --- /dev/null +++ b/APP/this_device.c @@ -0,0 +1,2 @@ +#include "this_device.h" + diff --git a/APP/this_device.h b/APP/this_device.h new file mode 100644 index 0000000..cb4a9b4 --- /dev/null +++ b/APP/this_device.h @@ -0,0 +1,8 @@ +#pragma once +#include +#include + +typedef struct { + /* data */ + bool power; +} ThisDevice_t;