
#include "inout.h"
#include "funcs.h"


//-------------ST 调试灯-------------------------

OUTPUT_FUNCS(Led, LED);

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

OUTPUT_FUNCS(Spi1Nss, SPI1_NSS);
OUTPUT_FUNCS(Spi2Nss, SPI2_NSS);
OUTPUT_FUNCS(Spi3Nss, SPI3_NSS);

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

OUTPUT_FUNCS(WNetRst, W5500_RST);

OUTPUT_FUNCS(En485Out, USART6_EN);

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

#define	GETOUTVAL(num)	\
u8 Output##num##Sta(void)\
{\
	return GetOutputVal(num);\
}

GETOUTVAL(1);
GETOUTVAL(2);
GETOUTVAL(3);
GETOUTVAL(4);
GETOUTVAL(5);
GETOUTVAL(6);
GETOUTVAL(7);
GETOUTVAL(8);

#define GETECDSIGNALVAL(Name, LABEL)	\
u8 Get##Name##Status(void)	\
{\
	return (((GetEcdStatus() & LABEL##_STA) != 0) ? Bit_SET : Bit_RESET);\
}

GETECDSIGNALVAL(AP1, AP1);
GETECDSIGNALVAL(BP1, BP1);
GETECDSIGNALVAL(ZP1, ZP1);
GETECDSIGNALVAL(AP2, AP2);
GETECDSIGNALVAL(BP2, BP2);
GETECDSIGNALVAL(ZP2, ZP2);

#define GETINPUTVAL(Name, LABEL)	\
u8 Get##Name##Status(void)	\
{\
	return (((GetInputStatus() & LABEL##_STA) != 0) ? Bit_SET : Bit_RESET);\
}

GETINPUTVAL(Input1, INPUT1);
GETINPUTVAL(Input2, INPUT2);
GETINPUTVAL(Input3, INPUT3);
GETINPUTVAL(Input4, INPUT4);
GETINPUTVAL(Input5, INPUT5);
GETINPUTVAL(Input6, INPUT6);
GETINPUTVAL(Input7, INPUT7);
GETINPUTVAL(Input8, INPUT8);
GETINPUTVAL(Input9, INPUT9);
GETINPUTVAL(Input10, INPUT10);
GETINPUTVAL(Input11, INPUT11);
GETINPUTVAL(Input12, INPUT12);
GETINPUTVAL(Input13, INPUT13);
GETINPUTVAL(Input14, INPUT14);
GETINPUTVAL(Input15, INPUT15);
GETINPUTVAL(Input16, INPUT16);

//-------------电机1-------------------------
void SetMoto1SignOn(void)		// 电机1方向
{
	SetAxisConfig(AXIS_ID1, MOUT_SIGN_CCW);
}
void SetMoto1SignOff(void)
{
	SetAxisConfig(AXIS_ID1, MOUT_SIGN_CW);
}

void SetMoto1PulseOn(void)	// 电机1脉冲
{
	SetAxisConfig(AXIS_ID1, MOUT_PLUS_ON);
}
void SetMoto1PulseOff(void)
{
	SetAxisConfig(AXIS_ID1, MOUT_PLUS_OFF);
}

void SetMoto1SelAOn(void)
{
	SetAxisConfig(AXIS_ID1, MOUT_SEL_HIGH);
}

void SetMoto1SelAOff(void)
{
	SetAxisConfig(AXIS_ID1, MOUT_SEL_LOW);
}

void SetMoto1SelBOn(void)
{
	SetAxisConfig(AXIS_ID1, MOUT_EN_HIGH);
}

void SetMoto1SelBOff(void)
{
	SetAxisConfig(AXIS_ID1, MOUT_EN_LOW);
}

u8 GetM1AlmStatus(void)		// 电机1报警
{
	if ((GetAlarmValue() & AXIS1_ALM) != 0)
	{
		return SENSOR_ON;
	}
	else
	{
		return SENSOR_OFF;
	}
}

//-------------电机2-------------------------
void SetMoto2SignOn(void)		// 电机2方向
{
	SetAxisConfig(AXIS_ID2, MOUT_SIGN_CCW);
}
void SetMoto2SignOff(void)
{
	SetAxisConfig(AXIS_ID2, MOUT_SIGN_CW);
}

void SetMoto2PulseOn(void)		// 电机2脉冲
{
	SetAxisConfig(AXIS_ID2, MOUT_PLUS_ON);
}
void SetMoto2PulseOff(void)
{
	SetAxisConfig(AXIS_ID2, MOUT_PLUS_OFF);
}

void SetMoto2SelAOn(void)
{
	SetAxisConfig(AXIS_ID2, MOUT_SEL_HIGH);
}

void SetMoto2SelAOff(void)
{
	SetAxisConfig(AXIS_ID2, MOUT_SEL_LOW);
}

void SetMoto2SelBOn(void)
{
	SetAxisConfig(AXIS_ID2, MOUT_EN_HIGH);
}

void SetMoto2SelBOff(void)
{
	SetAxisConfig(AXIS_ID2, MOUT_EN_LOW);
}

u8 GetM2AlmStatus(void)		// 电机2报警
{
	if ((GetAlarmValue() & AXIS2_ALM) != 0)
	{
		return SENSOR_ON;
	}
	else
	{
		return SENSOR_OFF;
	}
}

//-------------电机3-------------------------
void SetMoto3SignOn(void)		// 电机3方向
{
	SetAxisConfig(AXIS_ID3, MOUT_SIGN_CCW);
}
void SetMoto3SignOff(void)
{
	SetAxisConfig(AXIS_ID3, MOUT_SIGN_CW);
}

void SetMoto3PulseOn(void)		// 电机3脉冲
{
	SetAxisConfig(AXIS_ID3, MOUT_PLUS_ON);
}
void SetMoto3PulseOff(void)
{
	SetAxisConfig(AXIS_ID3, MOUT_PLUS_OFF);
}

void SetMoto3SelAOn(void)
{
	SetAxisConfig(AXIS_ID3, MOUT_SEL_HIGH);
}

void SetMoto3SelAOff(void)
{
	SetAxisConfig(AXIS_ID3, MOUT_SEL_LOW);
}

void SetMoto3SelBOn(void)
{
	SetAxisConfig(AXIS_ID3, MOUT_EN_HIGH);
}

void SetMoto3SelBOff(void)
{
	SetAxisConfig(AXIS_ID3, MOUT_EN_LOW);
}

u8 GetM3AlmStatus(void)		// 电机3报警
{
	if ((GetAlarmValue() & AXIS3_ALM) != 0)
	{
		return SENSOR_ON;
	}
	else
	{
		return SENSOR_OFF;
	}
}

//-------------电机4-------------------------
void SetMoto4SignOn(void)		// 电机4方向
{
	SetAxisConfig(AXIS_ID4, MOUT_SIGN_CCW);
}
void SetMoto4SignOff(void)
{
	SetAxisConfig(AXIS_ID4, MOUT_SIGN_CW);
}

void SetMoto4PulseOn(void)		// 电机4脉冲
{
	SetAxisConfig(AXIS_ID4, MOUT_PLUS_ON);
}
void SetMoto4PulseOff(void)
{
	SetAxisConfig(AXIS_ID4, MOUT_PLUS_OFF);
}

void SetMoto4SelAOn(void)
{
	SetAxisConfig(AXIS_ID4, MOUT_SEL_HIGH);
}

void SetMoto4SelAOff(void)
{
	SetAxisConfig(AXIS_ID4, MOUT_SEL_LOW);
}

void SetMoto4SelBOn(void)
{
	SetAxisConfig(AXIS_ID4, MOUT_EN_HIGH);
}

void SetMoto4SelBOff(void)
{
	SetAxisConfig(AXIS_ID4, MOUT_EN_LOW);
}

u8 GetM4AlmStatus(void)		// 电机4报警
{
	if ((GetAlarmValue() & AXIS4_ALM) != 0)
	{
		return SENSOR_ON;
	}
	else
	{
		return SENSOR_OFF;
	}
}

//-------------电机5-------------------------
void SetMoto5SignOn(void)		// 电机5方向
{
	SetAxisConfig(AXIS_ID5, MOUT_SIGN_CCW);
}
void SetMoto5SignOff(void)
{
	SetAxisConfig(AXIS_ID5, MOUT_SIGN_CW);
}

void SetMoto5PulseOn(void)		// 电机5脉冲
{
	SetAxisConfig(AXIS_ID5, MOUT_PLUS_ON);
}
void SetMoto5PulseOff(void)
{
	SetAxisConfig(AXIS_ID5, MOUT_PLUS_OFF);
}

void SetMoto5SelAOn(void)
{
	SetAxisConfig(AXIS_ID5, MOUT_SEL_HIGH);
}

void SetMoto5SelAOff(void)
{
	SetAxisConfig(AXIS_ID5, MOUT_SEL_LOW);
}

void SetMoto5SelBOn(void)
{
	SetAxisConfig(AXIS_ID5, MOUT_EN_HIGH);
}

void SetMoto5SelBOff(void)
{
	SetAxisConfig(AXIS_ID5, MOUT_EN_LOW);
}

u8 GetM5AlmStatus(void)		// 电机5报警
{
	if ((GetAlarmValue() & AXIS5_ALM) != 0)
	{
		return SENSOR_ON;
	}
	else
	{
		return SENSOR_OFF;
	}
}

//-------------电机6-------------------------
void SetMoto6SignOn(void)		// 电机6方向
{
	SetAxisConfig(AXIS_ID6, MOUT_SIGN_CCW);
}
void SetMoto6SignOff(void)
{
	SetAxisConfig(AXIS_ID6, MOUT_SIGN_CW);
}

void SetMoto6PulseOn(void)		// 电机6脉冲
{
	SetAxisConfig(AXIS_ID6, MOUT_PLUS_ON);
}
void SetMoto6PulseOff(void)
{
	SetAxisConfig(AXIS_ID6, MOUT_PLUS_OFF);
}

void SetMoto6SelAOn(void)
{
	SetAxisConfig(AXIS_ID6, MOUT_SEL_HIGH);
}

void SetMoto6SelAOff(void)
{
	SetAxisConfig(AXIS_ID6, MOUT_SEL_LOW);
}

void SetMoto6SelBOn(void)
{
	SetAxisConfig(AXIS_ID6, MOUT_EN_HIGH);
}

void SetMoto6SelBOff(void)
{
	SetAxisConfig(AXIS_ID6, MOUT_EN_LOW);
}

u8 GetM6AlmStatus(void)		// 电机6报警
{
	if ((GetAlarmValue() & AXIS6_ALM) != 0)
	{
		return SENSOR_ON;
	}
	else
	{
		return SENSOR_OFF;
	}
}

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

u8 GetInputNullOn(void)
{
	//输入空操作
	return Bit_RESET;
}

u8 GetInputNullOff(void)
{
	//输入空操作
	return Bit_SET;
}

void SetOutputNull(void)
{
	//输出空操作
}

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

void SetDefaultOut(void)
{
	USART6_485OutDis();
}

