|
@ -7,8 +7,8 @@ |
|
|
#include "sdk\components\flash\znvs.hpp"
|
|
|
#include "sdk\components\flash\znvs.hpp"
|
|
|
using namespace iflytop; |
|
|
using namespace iflytop; |
|
|
#define TAG "SMCM"
|
|
|
#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_stepM1 = stepM; |
|
|
m_iotable = iotable; |
|
|
m_iotable = iotable; |
|
|
m_nio = nio; |
|
|
m_nio = nio; |
|
@ -22,9 +22,14 @@ void StepMotorCtrlModule::initialize(int id, IStepperMotor* stepM, ZGPIO iotable |
|
|
m_flashmark = flashmark; |
|
|
m_flashmark = flashmark; |
|
|
|
|
|
|
|
|
if (m_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 { |
|
|
} else { |
|
|
create_default_cfg(m_flash_config); |
|
|
|
|
|
|
|
|
m_cfg = m_factory_config; |
|
|
} |
|
|
} |
|
|
active_cfg(); |
|
|
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) { |
|
|
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); |
|
|
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; |
|
|
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); |
|
|
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) { |
|
|
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); |
|
|
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; |
|
|
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; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
int32_t StepMotorCtrlModule::get_logic_point(int logic_point_num, logic_point_t& logic_point) { |
|
|
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; |
|
|
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; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -591,7 +596,7 @@ void StepMotorCtrlModule::create_default_cfg(flash_config_t& cfg) { |
|
|
int32_t StepMotorCtrlModule::flush() { |
|
|
int32_t StepMotorCtrlModule::flush() { |
|
|
ZLOGI(TAG, "flush"); |
|
|
ZLOGI(TAG, "flush"); |
|
|
if (m_flashmark) { |
|
|
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(); |
|
|
ZNVS::ins().flush(); |
|
|
} |
|
|
} |
|
|
return 0; |
|
|
return 0; |
|
@ -599,9 +604,9 @@ int32_t StepMotorCtrlModule::flush() { |
|
|
int32_t StepMotorCtrlModule::factory_reset() { |
|
|
int32_t StepMotorCtrlModule::factory_reset() { |
|
|
//
|
|
|
//
|
|
|
ZLOGI(TAG, "factory_reset"); |
|
|
ZLOGI(TAG, "factory_reset"); |
|
|
create_default_cfg(m_flash_config); |
|
|
|
|
|
|
|
|
m_cfg = m_factory_config; |
|
|
if (m_flashmark) { |
|
|
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(); |
|
|
ZNVS::ins().flush(); |
|
|
} |
|
|
} |
|
|
active_cfg(); |
|
|
active_cfg(); |
|
|