You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.8 KiB
110 lines
3.8 KiB
#pragma once
|
|
#include <stdint.h>
|
|
|
|
#include <functional>
|
|
|
|
#include "basic_type.hpp"
|
|
//
|
|
|
|
namespace iflytop {
|
|
using namespace std;
|
|
class I_StepMotorCtrlModule {
|
|
public:
|
|
typedef enum { hbot, corexy } RobotType_t;
|
|
typedef enum { kNormalStop, kBreakStop } StopType_t;
|
|
|
|
/*******************************************************************************
|
|
* ACTION *
|
|
*******************************************************************************/
|
|
|
|
typedef struct {
|
|
int32_t exec_status;
|
|
int32_t tox;
|
|
} move_to_cb_status_t;
|
|
|
|
typedef struct {
|
|
int32_t exec_status;
|
|
int32_t dx;
|
|
} move_by_cb_status_t;
|
|
|
|
typedef struct {
|
|
int32_t exec_status;
|
|
} move_to_zero_cb_status_t;
|
|
|
|
typedef struct {
|
|
int32_t exec_status;
|
|
int32_t zero_shift_x;
|
|
} move_to_zero_with_calibrate_cb_status_t;
|
|
|
|
typedef struct {
|
|
int32_t exec_status;
|
|
int32_t lastforms;
|
|
} rotate_cb_status_t;
|
|
|
|
/*******************************************************************************
|
|
* READ *
|
|
*******************************************************************************/
|
|
typedef struct {
|
|
int32_t version;
|
|
} version_t;
|
|
|
|
typedef struct {
|
|
uint8_t status;
|
|
uint8_t io_state; // x_zero_io x_end_io
|
|
int32_t x;
|
|
} status_t;
|
|
|
|
typedef struct {
|
|
uint8_t status;
|
|
uint8_t io_state; // x_zero_io x_end_io
|
|
int32_t x;
|
|
} debug_info_t;
|
|
|
|
/*******************************************************************************
|
|
* CFG *
|
|
*******************************************************************************/
|
|
|
|
typedef struct {
|
|
u8 x_shaft;
|
|
u8 ihold;
|
|
u8 irun;
|
|
u16 iholddelay;
|
|
s32 distance_scale; // 0.001
|
|
s32 shift_x;
|
|
s32 acc;
|
|
s32 dec;
|
|
s32 maxspeed;
|
|
s32 min_x;
|
|
s32 max_x;
|
|
} run_param_t;
|
|
|
|
typedef struct {
|
|
uint8_t pad;
|
|
} warning_limit_param_t;
|
|
|
|
typedef struct {
|
|
u32 move_to_zero_max_d;
|
|
u32 leave_from_zero_max_d;
|
|
u32 speed;
|
|
u32 dec;
|
|
} run_to_zero_param_t;
|
|
|
|
public:
|
|
virtual int32_t move_to(int32_t x, function<void(move_to_cb_status_t& status)> status_cb) = 0;
|
|
virtual int32_t move_by(int32_t dx, function<void(move_by_cb_status_t& status)> status_cb) = 0;
|
|
virtual int32_t move_to_zero(function<void(move_to_zero_cb_status_t& status)> status_cb) = 0;
|
|
virtual int32_t move_to_zero_with_calibrate(int32_t x, function<void(move_to_zero_with_calibrate_cb_status_t& status)> status_cb) = 0;
|
|
virtual int32_t enable(bool venable) = 0;
|
|
virtual int32_t stop(uint8_t stopType) = 0;
|
|
virtual int32_t force_change_current_pos(int32_t x) = 0;
|
|
virtual int32_t rotate(int32_t speed, int32_t lastforms, function<void(rotate_cb_status_t& status)> status_cb) = 0;
|
|
|
|
virtual int32_t read_version(version_t& version) = 0;
|
|
virtual int32_t read_status(status_t& status) = 0;
|
|
virtual int32_t read_debug_info(debug_info_t& debug_info) = 0;
|
|
|
|
virtual int32_t set_run_param(uint8_t operation, const run_param_t& param, run_param_t& ack) = 0;
|
|
virtual int32_t set_run_to_zero_param(uint8_t operation, const run_to_zero_param_t& param, run_to_zero_param_t& ack) = 0;
|
|
virtual int32_t set_warning_limit_param(uint8_t operation, const warning_limit_param_t& param, warning_limit_param_t& ack) = 0;
|
|
};
|
|
} // namespace iflytop
|