

#ifndef __DRIVERSCTRL_H__
#define	__DRIVERSCTRL_H__

#include "config.h"

#ifndef DRIVERS_NUM
#define DRIVERS_NUM		0
#endif

// 最多支持4路电机
#if (DRIVERS_NUM > 4)
#undef DRIVERS_NUM
#define DRIVERS_NUM		4
#endif


#define DRIVER1_IDX		0
#define DRIVER2_IDX		1
#define DRIVER3_IDX		2
#define DRIVER4_IDX		3
//--------------------------------------------
// 错误代码定义
#define	DR_ERR_POS		0x01	// 位置误差过大

// 状态定义
#define DR_ERR_ZERO		0x101	// 电机找零
#define DR_STA_DIS		0x102	// 电机失能

//--------------------------------------------

void InitDriversCtrl(void);

void DriversCtrlIntProc(void);

void CPURateIntProc(int section);

u32 GetDrvErrorCode(int driverIdx);
void CleanDrvErrorCode(int driverIdx);
void SetDrvErrorCode(int driverIdx, int code);

void DriverRunTask(void);

void SetOpenRunCircle(int driverIdx, int circle);
void SetOpenLockCircle(int driverIdx, int circle);
void SetOpenMaxOffset(int driverIdx, int maxofst);
s32 GetClosePositionFromEcd(int driverIdx);
void SetCloseCircle(int driverIdx, int circle);

void ResetDriverPos(int driverIdx, s32 pos);

void SetDriverTargetPos(int driverIdx, s32 tpos);
void SetDriverOffset(int driverIdx, s32 ofst);

void SetDriverCtrlMode(int driverIdx, int mode);

void SetEnableCtrl(int driverIdx, int enbit);

//--------------------------------------------

#endif
