
#ifndef __IN_OUT_H__
#define __IN_OUT_H__

#include "config.h"
#include "embfpga.h"
#include "spirw.h"

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

void SetLedOn(void);
void SetLedOff(void);
void SetLedToggle(void);
u8 GetLedStatus(void);

//-------------ST 调试输出-------------------------

#define SetDebugOn		SetOutputNull
#define SetDebugOff		SetOutputNull

//---------------- SPI1 ------------------------

// SPI1 NSS
void SetSpi1NssOn(void);
void SetSpi1NssOff(void);
void SetSpi1NssToggle(void);
u8 GetSpi1NssStatus(void);

//---------------- SPI2 ------------------------

// SPI2 NSS
void SetSpi2NssOn(void);
void SetSpi2NssOff(void);
void SetSpi2NssToggle(void);
u8 GetSpi2NssStatus(void);

//---------------- SPI3 ------------------------

// SPI3 NSS
void SetSpi3NssOn(void);
void SetSpi3NssOff(void);
void SetSpi3NssToggle(void);
u8 GetSpi3NssStatus(void);

//-----------------访问 w5500 ------------------

#define	InitWNetSpi			InitSpi1
#define	WNetNceOn			SetSpi1NssOn
#define	WNetNceOff			SetSpi1NssOff
#define	WNetSpiReadByte		Spi1ReadByte
#define	WNetSpiWriteByte	Spi1WriteByte


void SetWNetRstOn(void);
void SeWNetRstOff(void);
void SetWNetRstToggle(void);
u8 GetWNetRstStatus(void);

//-----------------访问 norflash ------------------

#define	InitNorSpi			InitSpi2
#define	SetNorSpiNssOn		SetSpi2NssOn
#define	SetNorSpiNssOff		SetSpi2NssOff
#define	NorSpiReadByte		Spi2ReadByte
#define	NorSpiWriteByte		Spi2WriteByte

//-----------------访问 fram ------------------

// 铁电片选

#define	InitFramSpi		InitSpi3

#define FramNceOn		SetSpi3NssOn
#define FramNceOff		SetSpi3NssOff
#define	FramReadByte	Spi3ReadByte
#define	FramWriteByte	Spi3WriteByte

//-----------------------------------
// 485输出允许,串口6
void SetEn485OutOn(void);
void SetEn485OutOff(void);
void SetEn485OutToggle(void);
u8 GetEn485OutStatus(void);

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

#define OutputNull			SetOutputNull

#define SerIdOutOn			SetZpOutOff
#define SerIdOutOff			SetZpOutOn

#define SetMpOutOn			SetOpOutOff
#define SetMpOutOff			SetOpOutOn

u8 Output1Sta(void);
u8 Output2Sta(void);
u8 Output3Sta(void);
u8 Output4Sta(void);
u8 Output5Sta(void);
u8 Output6Sta(void);
u8 Output7Sta(void);
u8 Output8Sta(void);

u8 GetAP1Status(void);
u8 GetBP1Status(void);
u8 GetZP1Status(void);
u8 GetAP2Status(void);
u8 GetBP2Status(void);
u8 GetZP2Status(void);

u8 GetInput1Status(void);
u8 GetInput2Status(void);
u8 GetInput3Status(void);
u8 GetInput4Status(void);
u8 GetInput5Status(void);
u8 GetInput6Status(void);
u8 GetInput7Status(void);
u8 GetInput8Status(void);
u8 GetInput9Status(void);
u8 GetInput10Status(void);
u8 GetInput11Status(void);
u8 GetInput12Status(void);
u8 GetInput13Status(void);
u8 GetInput14Status(void);
u8 GetInput15Status(void);
u8 GetInput16Status(void);

//-------------电机1-------------------------
void SetMoto1SignOn(void);		// 电机1方向
void SetMoto1SignOff(void);

void SetMoto1PulseOn(void);		// 电机1脉冲
void SetMoto1PulseOff(void);

void SetMoto1SelAOn(void);
void SetMoto1SelAOff(void);

void SetMoto1SelBOn(void);
void SetMoto1SelBOff(void);

u8 GetM1AlmStatus(void);		// 电机1报警

//-------------电机2-------------------------
void SetMoto2SignOn(void);		// 电机2方向
void SetMoto2SignOff(void);

void SetMoto2PulseOn(void);		// 电机2脉冲
void SetMoto2PulseOff(void);

void SetMoto2SelAOn(void);
void SetMoto2SelAOff(void);

void SetMoto2SelBOn(void);
void SetMoto2SelBOff(void);

u8 GetM2AlmStatus(void);		// 电机2报警

//-------------电机3-------------------------
void SetMoto3SignOn(void);		// 电机3方向
void SetMoto3SignOff(void);

void SetMoto3PulseOn(void);		// 电机3脉冲
void SetMoto3PulseOff(void);

void SetMoto3SelAOn(void);
void SetMoto3SelAOff(void);

void SetMoto3SelBOn(void);
void SetMoto3SelBOff(void);

u8 GetM3AlmStatus(void);		// 电机3报警

//-------------电机4-------------------------
void SetMoto4SignOn(void);		// 电机4方向
void SetMoto4SignOff(void);

void SetMoto4PulseOn(void);		// 电机4脉冲
void SetMoto4PulseOff(void);

void SetMoto4SelAOn(void);
void SetMoto4SelAOff(void);

void SetMoto4SelBOn(void);
void SetMoto4SelBOff(void);

u8 GetM4AlmStatus(void);		// 电机4报警

//-------------电机5-------------------------
void SetMoto5SignOn(void);		// 电机5方向
void SetMoto5SignOff(void);

void SetMoto5PulseOn(void);		// 电机5脉冲
void SetMoto5PulseOff(void);

void SetMoto5SelAOn(void);
void SetMoto5SelAOff(void);

void SetMoto5SelBOn(void);
void SetMoto5SelBOff(void);

u8 GetM5AlmStatus(void);		// 电机5报警

//-------------电机6-------------------------
void SetMoto6SignOn(void);		// 电机6方向
void SetMoto6SignOff(void);

void SetMoto6PulseOn(void);		// 电机6脉冲
void SetMoto6PulseOff(void);

void SetMoto6SelAOn(void);
void SetMoto6SelAOff(void);

void SetMoto6SelBOn(void);
void SetMoto6SelBOff(void);

u8 GetM6AlmStatus(void);		// 电机6报警

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

u8 GetInputNullOn(void);
u8 GetInputNullOff(void);
void SetOutputNull(void);

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

void SetDefaultOut(void);

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

#endif

