74 lines
1.4 KiB
C
74 lines
1.4 KiB
C
|
|
/*
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>EF_AЭ<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef _EF_A_H_
|
|||
|
|
#define _EF_A_H_
|
|||
|
|
|
|||
|
|
#include "config.h"
|
|||
|
|
#include "serial.h"
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int idx;
|
|||
|
|
u8 addr;
|
|||
|
|
u16 wrdat;
|
|||
|
|
u16 rddat;
|
|||
|
|
}EFCmd;
|
|||
|
|
|
|||
|
|
#ifndef MAX_EF_CMD
|
|||
|
|
#define MAX_EF_CMD 50
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
typedef void (*ResvEFProc)(EFCmd * pcmd); // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
EFCmd cmdbuf[MAX_EF_CMD];
|
|||
|
|
|
|||
|
|
// <20>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int working; // <20><><EFBFBD>ڶ<EFBFBD>д<EFBFBD><D0B4>; = 1, <20><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int bufCmdNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; != 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int bufHead;
|
|||
|
|
int bufTail;
|
|||
|
|
|
|||
|
|
int steps;
|
|||
|
|
u32 stepTime;
|
|||
|
|
|
|||
|
|
ResvEFProc resvefproc; // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int efrsvTimout; // <20><>ȡ<EFBFBD><C8A1>ʱʱ<CAB1><CAB1>
|
|||
|
|
|
|||
|
|
}AsyncEFCtrl;
|
|||
|
|
|
|||
|
|
typedef void (*CommOutFunc)(void);
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
u32 efSendWait; // ͨѶ<CDA8><D1B6>ʱ, <20><>λus,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
// ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
UsartSendData EFCommSend; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UsartGetData EFCommReceive; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UsartCleanRsBuf EFCommCleanRsBuf; // <20><><EFBFBD>ս<EFBFBD><D5BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IsUsartSendOver IsEFCommSendOver; // <20>жϷ<D0B6><CFB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
|
|||
|
|
CommOutFunc CommOutEn; // <20><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CommOutFunc CommOutDis; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͽ<EFBFBD>ֹ
|
|||
|
|
|
|||
|
|
}EFCommCtrl;
|
|||
|
|
|
|||
|
|
void InitEF(int idx, int usart, BAUD_TypeDef baud, char dat, char parity, char stop);
|
|||
|
|
int EFTx(int idx, u8 addr, u16 data, int steps);
|
|||
|
|
int EFRx(int idx, u16 * pData, int steps);
|
|||
|
|
int EFComm(int idx, u8 addr, u16 wrDat, u16 * pRdBuf);
|
|||
|
|
|
|||
|
|
void InitAsyncEFCtrl(int idx, int rsvtimout);
|
|||
|
|
void RegEFCmdProc(int idx, ResvEFProc proc);
|
|||
|
|
int AddEFCmd(EFCmd * pCmd);
|
|||
|
|
int GetEFCmdBufLen(int idx);
|
|||
|
|
int AsyncEFTask(int idx);
|
|||
|
|
|
|||
|
|
#endif /* _EF_A_H_ */
|