diff --git a/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp b/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp index 21b1a70..9fffb86 100644 --- a/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp +++ b/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp @@ -7,8 +7,8 @@ #include "sdk\components\flash\znvs.hpp" using namespace iflytop; #define TAG "SMCM" -void StepMotorCtrlModule::initialize(int id, IStepperMotor* stepM, ZGPIO iotable[], int nio, const char* flashmark) { - m_id = id; +void StepMotorCtrlModule::initialize(int moduleid, IStepperMotor* stepM, ZGPIO iotable[], int nio, const char* flashmark, flash_config_t* defaultcfg) { + m_id = moduleid; m_stepM1 = stepM; m_iotable = iotable; m_nio = nio; @@ -22,9 +22,14 @@ void StepMotorCtrlModule::initialize(int id, IStepperMotor* stepM, ZGPIO iotable m_flashmark = flashmark; if (m_flashmark) { - ZASSERT(ZNVS::ins().get_config(m_flashmark, (uint8_t*)&m_flash_config, sizeof(m_flash_config))); + ZASSERT(ZNVS::ins().get_config(m_flashmark, (uint8_t*)&m_cfg, sizeof(m_cfg))); + if (!m_cfg.configInited) { + m_cfg.configInited = true; + m_cfg = m_factory_config; + flush(); + } } else { - create_default_cfg(m_flash_config); + m_cfg = m_factory_config; } active_cfg(); @@ -47,28 +52,28 @@ bool StepMotorCtrlModule::isbusy() { return m_thread.isworking(); } int32_t StepMotorCtrlModule::move_to_logic_point(int32_t logic_point_num, action_cb_status_t status_cb) { ZLOGI(TAG, "move_to_logic_point %d", logic_point_num); - if (logic_point_num >= ZARRAY_SIZE(m_flash_config.logic_point)) { + if (logic_point_num >= ZARRAY_SIZE(m_cfg.logic_point)) { return err::kparam_out_of_range; } - logic_point_t logic_point = m_flash_config.logic_point[logic_point_num]; + logic_point_t logic_point = m_cfg.logic_point[logic_point_num]; return move_to(logic_point.x, logic_point.velocity, status_cb); } int32_t StepMotorCtrlModule::set_logic_point(int logic_point_num, int32_t x, int32_t vel, s32 acc, s32 dec) { ZLOGI(TAG, "set_logic_point %d %d %d %d %d", logic_point_num, x, vel, acc, dec); - if (logic_point_num >= ZARRAY_SIZE(m_flash_config.logic_point)) return err::kparam_out_of_range; + if (logic_point_num >= ZARRAY_SIZE(m_cfg.logic_point)) return err::kparam_out_of_range; if (logic_point_num < 0) logic_point_num = 0; - // memset(&m_flash_config, 0, sizeof(m_flash_config)); - m_flash_config.logic_point[logic_point_num].x = x; - m_flash_config.logic_point[logic_point_num].velocity = vel; - m_flash_config.logic_point[logic_point_num].acc = acc; - m_flash_config.logic_point[logic_point_num].dec = dec; + // memset(&m_cfg, 0, sizeof(m_cfg)); + m_cfg.logic_point[logic_point_num].x = x; + m_cfg.logic_point[logic_point_num].velocity = vel; + m_cfg.logic_point[logic_point_num].acc = acc; + m_cfg.logic_point[logic_point_num].dec = dec; return 0; } int32_t StepMotorCtrlModule::get_logic_point(int logic_point_num, logic_point_t& logic_point) { - if (logic_point_num >= ZARRAY_SIZE(m_flash_config.logic_point)) { + if (logic_point_num >= ZARRAY_SIZE(m_cfg.logic_point)) { return err::kparam_out_of_range; } - logic_point = m_flash_config.logic_point[logic_point_num]; + logic_point = m_cfg.logic_point[logic_point_num]; return 0; } @@ -591,7 +596,7 @@ void StepMotorCtrlModule::create_default_cfg(flash_config_t& cfg) { int32_t StepMotorCtrlModule::flush() { ZLOGI(TAG, "flush"); if (m_flashmark) { - ZNVS::ins().set_config(m_flashmark, (uint8_t*)&m_flash_config, sizeof(m_flash_config)); + ZNVS::ins().set_config(m_flashmark, (uint8_t*)&m_cfg, sizeof(m_cfg)); ZNVS::ins().flush(); } return 0; @@ -599,9 +604,9 @@ int32_t StepMotorCtrlModule::flush() { int32_t StepMotorCtrlModule::factory_reset() { // ZLOGI(TAG, "factory_reset"); - create_default_cfg(m_flash_config); + m_cfg = m_factory_config; if (m_flashmark) { - ZNVS::ins().set_config(m_flashmark, (uint8_t*)&m_flash_config, sizeof(m_flash_config)); + ZNVS::ins().set_config(m_flashmark, (uint8_t*)&m_cfg, sizeof(m_cfg)); ZNVS::ins().flush(); } active_cfg(); diff --git a/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp b/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp index d355dd0..8c8eb3d 100644 --- a/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp +++ b/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp @@ -21,11 +21,10 @@ class StepMotorCtrlModule : public I_StepMotorCtrlModule, public ZIModule, publi zmutex m_lock; zmutex m_statu_lock; - flash_config_t m_flash_config; - base_param_t& m_param = m_flash_config.base_param; - // bool m_x_shaft = false; - // int32_t m_lastexecstatus = 0; - int32_t m_default_speed = 0; + flash_config_t m_cfg; + flash_config_t m_factory_config; + base_param_t& m_param = m_cfg.base_param; + int32_t m_default_speed = 0; ZGPIO* m_iotable; int m_nio; @@ -37,8 +36,9 @@ class StepMotorCtrlModule : public I_StepMotorCtrlModule, public ZIModule, publi // int32_t m_enable = 0; public: - void initialize(int moduleid, IStepperMotor* stepM, ZGPIO iotable[], int nio, const char* flashmark); - static void create_default_cfg(flash_config_t& cfg); + void initialize(int moduleid, IStepperMotor* stepM, ZGPIO iotable[], int nio, const char* flashmark, flash_config_t* defaultcfg); + static void create_default_cfg(flash_config_t& cfg); + static uint32_t get_flash_cfg_size() { return sizeof(flash_config_t); } virtual bool isbusy() override; virtual int32_t get_last_exec_status() override { return m_com_reg.module_last_cmd_exec_status; }; diff --git a/components/zprotocols/zcancmder b/components/zprotocols/zcancmder index 6652d15..6ae11da 160000 --- a/components/zprotocols/zcancmder +++ b/components/zprotocols/zcancmder @@ -1 +1 @@ -Subproject commit 6652d159d875cc4645ec045d05f0f9f8e906bcd1 +Subproject commit 6ae11da71aeb4cb0e959b9dabb66c50043d20d03