From f2646b051b0d2661fb354dd442e82f9c303512d1 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 2 Jul 2024 12:46:23 +0800 Subject: [PATCH] update --- errorcode.c | 53 +++++++++++++++++++++++++++++++++ errorcode.cpp | 57 ----------------------------------- errorcode.h | 55 ++++++++++++++++++++++++++++++++++ errorcode.hpp | 54 --------------------------------- protocol.h | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ protocol.hpp | 3 -- 6 files changed, 203 insertions(+), 114 deletions(-) create mode 100644 errorcode.c delete mode 100644 errorcode.cpp create mode 100644 errorcode.h delete mode 100644 errorcode.hpp create mode 100644 protocol.h delete mode 100644 protocol.hpp diff --git a/errorcode.c b/errorcode.c new file mode 100644 index 0000000..db148c2 --- /dev/null +++ b/errorcode.c @@ -0,0 +1,53 @@ +#include "errorcode.h" + +#define ERR2STR(code) \ + case code: \ + return #code; + + +#define ERR_ITERM(enum) \ + { enum, #enum } + +static ecode_table_item_t table[] = { + + ERR_ITERM(ksucc), + ERR_ITERM(kfail), + ERR_ITERM(kparam_out_of_range), + ERR_ITERM(kcmd_not_support), + ERR_ITERM(kdevice_is_busy), + ERR_ITERM(kdevice_is_offline), + ERR_ITERM(kovertime), + ERR_ITERM(knoack), + ERR_ITERM(kerrorack), + ERR_ITERM(kdevice_offline), + ERR_ITERM(ksubdevice_overtime), + ERR_ITERM(kbuffer_not_enough), + ERR_ITERM(kcmd_param_num_error), + ERR_ITERM(kcheckcode_is_error), + ERR_ITERM(killegal_operation), + + ERR_ITERM(kstep_motor_not_found_zero_point), + ERR_ITERM(kstep_motor_not_go_zero), + ERR_ITERM(kstep_motor_over_temperature), + ERR_ITERM(kstep_motor_over_voltage), + ERR_ITERM(kstep_motor_run_overtime), + ERR_ITERM(kstep_motor_not_enable), + ERR_ITERM(kstep_motor_ioindex_out_of_range), + ERR_ITERM(kstep_motor_subic_reset), + ERR_ITERM(kstep_motor_drv_err), + ERR_ITERM(kstep_motor_uv_cp), + ERR_ITERM(kstep_motor_not_found_point_edge), +}; + +const char* error2str(int32_t code) { + for (int i = 0; i < sizeof(table) / sizeof(table[0]); i++) { + if (table[i].index == code) { + return table[i].info; + } + } + return "unknown error"; +} + +ecode_table_item_t* error_get_table() { return table; } +int error_get_table_size() { return sizeof(table) / sizeof(table[0]); } + diff --git a/errorcode.cpp b/errorcode.cpp deleted file mode 100644 index 1151b67..0000000 --- a/errorcode.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "errorcode.hpp" - -#define ERR2STR(code) \ - case code: \ - return #code; - -namespace iflytop { -namespace err { - -#define ERR_ITERM(enum) \ - { enum, #enum } - -static ecode_table_item_t table[] = { - - ERR_ITERM(ksucc), - ERR_ITERM(kfail), - ERR_ITERM(kparam_out_of_range), - ERR_ITERM(kcmd_not_support), - ERR_ITERM(kdevice_is_busy), - ERR_ITERM(kdevice_is_offline), - ERR_ITERM(kovertime), - ERR_ITERM(knoack), - ERR_ITERM(kerrorack), - ERR_ITERM(kdevice_offline), - ERR_ITERM(ksubdevice_overtime), - ERR_ITERM(kbuffer_not_enough), - ERR_ITERM(kcmd_param_num_error), - ERR_ITERM(kcheckcode_is_error), - ERR_ITERM(killegal_operation), - - ERR_ITERM(kstep_motor_not_found_zero_point), - ERR_ITERM(kstep_motor_not_go_zero), - ERR_ITERM(kstep_motor_over_temperature), - ERR_ITERM(kstep_motor_over_voltage), - ERR_ITERM(kstep_motor_run_overtime), - ERR_ITERM(kstep_motor_not_enable), - ERR_ITERM(kstep_motor_ioindex_out_of_range), - ERR_ITERM(kstep_motor_subic_reset), - ERR_ITERM(kstep_motor_drv_err), - ERR_ITERM(kstep_motor_uv_cp), - ERR_ITERM(kstep_motor_not_found_point_edge), -}; - -const char* error2str(int32_t code) { - for (int i = 0; i < sizeof(table) / sizeof(table[0]); i++) { - if (table[i].index == code) { - return table[i].info; - } - } - return "unknown error"; -} - -ecode_table_item_t* error_get_table() { return table; } -int error_get_table_size() { return sizeof(table) / sizeof(table[0]); } - -} // namespace err -} // namespace iflytop diff --git a/errorcode.h b/errorcode.h new file mode 100644 index 0000000..b5f8d4a --- /dev/null +++ b/errorcode.h @@ -0,0 +1,55 @@ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define ERROR_CODE(errortype, suberrorcode) (errortype + suberrorcode) + +typedef enum { + + ksucc = ERROR_CODE(0, 0), + kfail = ERROR_CODE(0, 1), + + kparam_out_of_range = ERROR_CODE(100, 2), // 参数超出范围 + kcmd_not_support = ERROR_CODE(100, 3), // 操作不支持 + kdevice_is_busy = ERROR_CODE(100, 4), // 设备忙 + kdevice_is_offline = ERROR_CODE(100, 5), // 设备离线 + kovertime = ERROR_CODE(100, 6), + knoack = ERROR_CODE(100, 7), + kerrorack = ERROR_CODE(100, 8), + kdevice_offline = ERROR_CODE(100, 9), + ksubdevice_overtime = ERROR_CODE(100, 11), + kbuffer_not_enough = ERROR_CODE(100, 12), + kcmd_param_num_error = ERROR_CODE(100, 14), + kcheckcode_is_error = ERROR_CODE(100, 15), + killegal_operation = ERROR_CODE(100, 16), + + kstep_motor_not_found_zero_point = ERROR_CODE(600, 0), // 未找到零点 + kstep_motor_not_go_zero = ERROR_CODE(600, 1), // 设备未归零 + kstep_motor_over_temperature = ERROR_CODE(600, 2), // 过温 + kstep_motor_over_voltage = ERROR_CODE(600, 3), // 过压 + kstep_motor_run_overtime = ERROR_CODE(600, 4), // 运行超时 + kstep_motor_not_enable = ERROR_CODE(600, 5), // 电机未使能 + kstep_motor_ioindex_out_of_range = ERROR_CODE(600, 6), // IO超出范围 + kstep_motor_subic_reset = ERROR_CODE(600, 7), // 子IC复位 + kstep_motor_drv_err = ERROR_CODE(600, 8), // 驱动器异常 + kstep_motor_uv_cp = ERROR_CODE(600, 9), // 驱动器异常 + kstep_motor_not_found_point_edge = ERROR_CODE(600, 10), // 未找到零点 + +} error_t; + +typedef struct { + int index; + const char* info; +} ecode_table_item_t; + +const char* error2str(int32_t code); + +ecode_table_item_t* error_get_table(); +int error_get_table_size(); + +#ifdef __cplusplus +} +#endif diff --git a/errorcode.hpp b/errorcode.hpp deleted file mode 100644 index 4cd217a..0000000 --- a/errorcode.hpp +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once -#include - -namespace iflytop { -namespace err { -using namespace std; - -#define ERROR_CODE(errortype, suberrorcode) (errortype + suberrorcode) - -typedef enum { - - ksucc = ERROR_CODE(0, 0), - kfail = ERROR_CODE(0, 1), - - kparam_out_of_range = ERROR_CODE(100, 2), // 参数超出范围 - kcmd_not_support = ERROR_CODE(100, 3), // 操作不支持 - kdevice_is_busy = ERROR_CODE(100, 4), // 设备忙 - kdevice_is_offline = ERROR_CODE(100, 5), // 设备离线 - kovertime = ERROR_CODE(100, 6), - knoack = ERROR_CODE(100, 7), - kerrorack = ERROR_CODE(100, 8), - kdevice_offline = ERROR_CODE(100, 9), - ksubdevice_overtime = ERROR_CODE(100, 11), - kbuffer_not_enough = ERROR_CODE(100, 12), - kcmd_param_num_error = ERROR_CODE(100, 14), - kcheckcode_is_error = ERROR_CODE(100, 15), - killegal_operation = ERROR_CODE(100, 16), - - kstep_motor_not_found_zero_point = ERROR_CODE(600, 0), // 未找到零点 - kstep_motor_not_go_zero = ERROR_CODE(600, 1), // 设备未归零 - kstep_motor_over_temperature = ERROR_CODE(600, 2), // 过温 - kstep_motor_over_voltage = ERROR_CODE(600, 3), // 过压 - kstep_motor_run_overtime = ERROR_CODE(600, 4), // 运行超时 - kstep_motor_not_enable = ERROR_CODE(600, 5), // 电机未使能 - kstep_motor_ioindex_out_of_range = ERROR_CODE(600, 6), // IO超出范围 - kstep_motor_subic_reset = ERROR_CODE(600, 7), // 子IC复位 - kstep_motor_drv_err = ERROR_CODE(600, 8), // 驱动器异常 - kstep_motor_uv_cp = ERROR_CODE(600, 9), // 驱动器异常 - kstep_motor_not_found_point_edge = ERROR_CODE(600, 10), // 未找到零点 - -} error_t; - -typedef struct { - int index; - const char* info; -} ecode_table_item_t; - -const char* error2str(int32_t code); - -ecode_table_item_t* error_get_table(); -int error_get_table_size(); - -} // namespace err -} // namespace iflytop \ No newline at end of file diff --git a/protocol.h b/protocol.h new file mode 100644 index 0000000..ab47f7b --- /dev/null +++ b/protocol.h @@ -0,0 +1,95 @@ +#pragma once +#include + +#include "errorcode.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define HAND_ACID_BLE_BASE_SIZE 3 +typedef enum { + kproto_cmd = 1, + kproto_cmd_receipt = 2, + kproto_report = 3, + kproto_error_receipt = 4, +} hand_acid_ble_proto_packet_type_t; + +typedef enum { + kproto_cmd_set_state = 1, // set_state + kproto_cmd_reset = 2, // + kproto_cmd_setlong_key_delayms = 3, // + + kproto_cmd_ble_master_start_scan = 50, // process by ble master ble_master_start_scan + kproto_cmd_ble_master_enter_dfu = 51, // process by ble master ble_master_enter_dfu + kproto_cmd_ble_master_reset = 52, // process by ble master + + kproto_report_key_event = 101, // key_event + kproto_report_connected_event = 102, // generater by ble master and slave + kproto_report_heart = 104, // +} hand_acid_ble_proto_cmd_t; + +typedef enum { + khand_acid_m_unset_mode = 0, // unset_mode + khand_acid_m_jog_mode = 1, // jog_mode + khand_acid_m_continuous_mode = 2, // continuous_mode +} hand_acid_mode_t; + +typedef enum { + khand_acid_pump_is_idle = 0, // + khand_acid_pump_is_working = 1, // +} hand_pump_working_state_t; + +typedef enum { + kkey_short_press_event = 0, // + kkey_long_press_event = 1, // +} key_event_t; + +typedef enum { + kkey_id_mode_and_action_butt, + kkey_id_liquid_reflux_butt, +} key_id_t; + +#pragma pack(1) +typedef struct { + uint8_t frame_type; + uint8_t frame_index; + uint8_t cmd; + union { + struct { + uint8_t hand_acid_mode; // hand_acid_mode_t + uint8_t hand_pump_working_state; // hand_pump_working_state_t + } set_state; + // + struct { + uint8_t scanid[20]; // scan id + } ble_master_start_scan; + + struct { + uint8_t keyid; // key_id_t + uint8_t keyevent; // key_event_t + } key_event; + + struct { + uint8_t connected; + uint8_t from_ble_master; + } connected_event; + + struct { + uint8_t powerlevel; + } heart; + + struct { + uint32_t longkeydelay; + } setlong_key_delayms; + + struct { + int32_t ecode; + } errreceipt; + } data; +} hand_acid_ble_proto_t; +#pragma pack() + +#ifdef __cplusplus +} +#endif diff --git a/protocol.hpp b/protocol.hpp deleted file mode 100644 index 819c9b6..0000000 --- a/protocol.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "errorcode.hpp"