⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modem_iodrv.h

📁 modem数据通信源码
💻 H
字号:
#ifndef		__MODEM_DRV_H__
#define		__MODEM_DRV_H__

#include	"MacroDef.h"

#ifdef __cplusplus
extern "C" {
#endif

/**********************************************************************
                                宏定义
**********************************************************************/
#define		EM_modem_DTMFMODE 		(uchar)0x54		//音频
#define		EM_modem_PLUSMODE 		(uchar)0x50		//脉冲
#define 	EM_modem_SdlcAd			(uchar)0x30
#define		EM_modem_Sst			(uchar)0x05

#define		EM_modem_NONEBPS		(uchar)(0x00)
#define		EM_modem_1200BPS		(uchar)0x01
#define		EM_modem_2400BPS		(uchar)0x02
#define		EM_modem_9600BPS		(uchar)0x03
#define		EM_modem_14400BPS		(uchar)0x04
#define		EM_modem_19200BPS		(uchar)0x05
#define		EM_modem_28800BPS		(uchar)0x06
#define		EM_modem_33600BPS		(uchar)0x07
#define		EM_modem_300BPS			(uchar)(0x08)
#define		EM_modem_24000BPS		(uchar)(0x09)
#define		EM_modem_26400BPS		(uchar)(0x0A)
#define		EM_modem_56000BPS		(uchar)(0x0B)
#define		EM_modem_NOPAR			(uchar)'N'
#define		EM_modem_EVENPAR		(uchar)'E'
#define		EM_modem_ODDPAR			(uchar)'O'
#define		EM_modem_7DBS			(uchar)0x07
#define		EM_modem_8DBS			(uchar)0x08

#define		EM_modem_V22FC		(uchar)0x01
#define		EM_modem_V22		(uchar)0x02
#define		EM_modem_V22BIS		(uchar)0x03
#define		EM_modem_V29FC		(uchar)0x04
#define		EM_modem_Bell212	(uchar)0x05
// 输出
#define		EM_modem_SUCCESS		EM_SUCCESS
#define		EM_modem_ERROR			EM_ERROR
#define		EM_modem_FAIL			(uchar)'F'
#define		EM_modem_NODIALTONE		(uchar)'6'
#define		EM_modem_PHONEINUSE		(uchar)'P'
#define		EM_modem_NOCARRIER		(uchar)'3'
#define		EM_modem_LINEBUSY		(uchar)'7'
#define		EM_modem_HANGUP			(uchar)'O'
#define		EM_modem_INDIAL			(uchar)'D'
#define		EM_modem_RECVNOACK		(uchar)'G'
#define		EM_modem_ATCOMRIGHT		(uchar)'0'
#define		EM_modem_ATCOMERROR		(uchar)'E'
#define		EM_modem_INPROCESS		(uchar)'C'
#define		EM_modem_TIMEOUT		(uchar)'V'
#define     EM_modem_NOPATCH        (uchar)'Z'

#define 	EM_modem_CNT300V21		(uchar)(0xA0)
#define 	EM_modem_HDLC300V21		(uchar)(0xA1)

#define		EM_modem_CNT1200V22		(uchar)(0xA2)
#define 	EM_modem_HDLC1200V22	(uchar)(0xA3)
#define 	EM_modem_CNT1200V22V42BIS	(uchar)(0xA4)

#define 	EM_modem_CNT2400V22B		(uchar)(0xA5)
#define		EM_modem_HDLC2400V22B	    (uchar)(0xA6)
#define 	EM_modem_CNT2400V22BV42BIS  (uchar)(0xA7)
#define		EM_modem_CNT2400V34		(uchar)(0xA8)

#define		EM_modem_CNT4800V34		(uchar)(0xA9)

#define		EM_modem_CNT9600V32		(uchar)(0xAA)
#define 	EM_modem_CNT9600V32V42BIS	(uchar)(0xAB)
#define		EM_modem_CNT9600V34		(uchar)(0xAC)


#define 	EM_modem_CNT14400V32B		(uchar)(0xAD)
#define 	EM_modem_CNT14400V32BV42BIS (uchar)(0xAE)
#define		EM_modem_CNT14400V34		(uchar)(0xAF)

#define		EM_modem_CNT19200V34		(uchar)(0xB1)
#define 	EM_modem_CNT19200V34V42BIS	(uchar)(0xB2)

#define 	EM_modem_CNT24000V34		(uchar)(0xB3)
#define 	EM_modem_CNT24000V34V42BIS	(uchar)(0xB4)

#define 	EM_modem_CNT26400V34		(uchar)(0xB5)
#define 	EM_modem_CNT26400V34V42BIS	(uchar)(0xB6)

#define		EM_modem_CNT28800V34		(uchar)(0xB7)
#define 	EM_modem_CNT28800V34V42BIS	(uchar)(0xB8)

#define		EM_modem_CNT33600V34		(uchar)(0xB9)
#define		EM_modem_CNT28800V8		(uchar)(0xBA)
#define		EM_modem_CNT33600V34V42BIS	(uchar)(0xBB)

#define     EM_modem_CMD_RESET_MODEM    (uchar)(0x01)
#define     EM_modem_CMD_DEBUG_ON       (uchar)(0x02)
#define     EM_modem_CMD_DEBUG_OFF      (uchar)(0x03)
#define     EM_modem_CMD_TEST_LINE      (uchar)(0x04)
#define     EM_modem_CMD_CONNECT_TIME   (uchar)(0x05)
#define     EM_modem_CMD_SNRM_TIME      (uchar)(0x06)

typedef struct
{
	//基本函数
	uchar 	(*EA_ucInitDial)(DevHandle hDevHandle , uchar ucBPS , uchar ucPAR , uchar ucDBS);
	uchar 	(*EA_ucInitSdlc)(DevHandle hDevHandle , uchar ucBPS , uchar ucSdlcAD , uchar ucSST);
	uchar	(*EA_ucIfExistDialTone)(DevHandle hDevHandle);
	uchar	(*EA_ucDial)(DevHandle hDevHandle , const char *pcBuf);
	uchar	(*EA_ucGetLineStatus)(DevHandle hDevHandle,uchar *pucRet);
	uchar	(*EA_ucInitRingDetect)(DevHandle hDevHandle);
	uchar	(*EA_ucRingDetect)(DevHandle hDevHandle);
	uchar	(*EA_ucAnswerModem)(DevHandle hDevHandle , uchar ucBPS , uchar *pucRet);
	uchar	(*EA_ucDialOff)(DevHandle hDevHandle);
	uchar 	(*EA_ucClrModemRecBuf)(DevHandle hDevHandle);
	uchar 	(*EA_ucIfModemRecBufEmpty)(DevHandle hDevHandle,uchar *pucBufStatus);		

	// 供IO模块使用
	uchar	(*EA_ucSendAsys)(DevHandle hDevHandle , uint uiLen , const char *pcBuf);
	uchar	(*EA_ucReadAsys)(DevHandle hDevHandle , uint uiSecond , uint uiReadLen , void *pvBuf , uint *puiRealLen );
	uchar	(*EA_ucSendSdlc)(DevHandle hDevHandle , uint uiLen , const char *pcBuf);
	uchar	(*EA_ucReadSdlc)(DevHandle hDevHandle , uint uiSecond , void *pvBuf , uint *puiRealLen );
	
	uchar	(*EA_MODEM_ucDrvOpen)(void);
	uchar	(*EA_MODEM_ucDrvClose)(DevHandle hDevHandle) ;
    uchar	(*EA_MODEM_ucInitPpp)( DevHandle hDev );
	uchar	(*EA_MODEM_ucCallPpp)(DevHandle hDevHandle , void *ptPppPara);
	uchar	(*EA_MODEM_ucDialOffPpp)(DevHandle hDevHandle);
	uchar	(*EA_MODEM_ucGetState)( DevHandle hDev,void *ptEventState );
	
	uchar   (*EA_ucIfPhoneUsed)(DevHandle hDevHandle);
	void 	(*EA_ucModemInit)(void);
	uchar   (*EA_ucModemIoctl)(DevHandle hDev,ulong cmd,void *argu);
	
	void    *Reserved;
}ET_MODEM_BASE_EXPORT;

typedef struct 
{
	//供生产测试使用
	void	(*EI_vInitMnwk)(void);
	void	(*EI_vUnMnwk)(void);
	uchar	(*EI_ucMnwkSendSdlc)(uint uiLen , char *pcBuf);
	void	(*EI_vOffHook)(void);
	void	(*EI_vOnHook)(void);
	void	(*EI_vLineToModem)(void);
	void	(*EI_vLineToPhone)(void);
	
	uchar   (*EA_MODEM_ucDrvOpen)(void);
	uchar   (*EA_MODEM_ucDrvClose)(DevHandle hDevHandle);
	void    *Reserved;
}ET_MODEM_FACTORY_EXPORT;

// 本模块提供的函数出口表结构定义
typedef struct
{
	ET_MODEM_BASE_EXPORT		*ptBase;
	ET_MODEM_FACTORY_EXPORT		*ptFactory;

	//扩展保留接口
	void    *Reserved;
}ET_MODEM_EXPORT_TABLE;

#ifdef PLATFORM_IN_PC
    extern ET_MODEM_EXPORT_TABLE **EG_PC_ptModemExportTable;
    #define EG_ptModemExportTable (*EG_PC_ptModemExportTable)
#else
    extern ET_MODEM_EXPORT_TABLE    *EG_ptModemExportTable;
#endif

/**********************************************************************
                             常量定义
**********************************************************************/



/**********************************************************************
                             全局变量
**********************************************************************/



/**********************************************************************
                            全局函数声明
**********************************************************************/

#ifndef IN_DRV

#define	EA_ucInitDial			EG_ptModemExportTable->ptBase->EA_ucInitDial
#define	EA_ucInitSdlc			EG_ptModemExportTable->ptBase->EA_ucInitSdlc
#define	EA_ucIfExistDialTone	EG_ptModemExportTable->ptBase->EA_ucIfExistDialTone
#define	EA_ucDial				EG_ptModemExportTable->ptBase->EA_ucDial
#define	EA_ucGetLineStatus		EG_ptModemExportTable->ptBase->EA_ucGetLineStatus
#define	EA_ucInitRingDetect		EG_ptModemExportTable->ptBase->EA_ucInitRingDetect
#define	EA_ucRingDetect			EG_ptModemExportTable->ptBase->EA_ucRingDetect
#define	EA_ucAnswerModem		EG_ptModemExportTable->ptBase->EA_ucAnswerModem
#define	EA_ucDialOff			EG_ptModemExportTable->ptBase->EA_ucDialOff
#define	EA_ucClrModemRecBuf		EG_ptModemExportTable->ptBase->EA_ucClrModemRecBuf

#define	EA_ucSendAsys			EG_ptModemExportTable->ptBase->EA_ucSendAsys
#define	EA_ucReadAsys			EG_ptModemExportTable->ptBase->EA_ucReadAsys
#define	EA_ucSendSdlc			EG_ptModemExportTable->ptBase->EA_ucSendSdlc
#define	EA_ucReadSdlc			EG_ptModemExportTable->ptBase->EA_ucReadSdlc
#define EA_ucIfModemRecBufEmpty EG_ptModemExportTable->ptBase->EA_ucIfModemRecBufEmpty
#define EA_ucModemInit          EG_ptModemExportTable->ptBase->EA_ucModemInit
#define EA_ucModemIoctl         EG_ptModemExportTable->ptBase->EA_ucModemIoctl

//供IO模块使用
#define EA_MODEM_ucDrvOpen      EG_ptModemExportTable->ptBase->EA_MODEM_ucDrvOpen
#define EA_MODEM_ucDrvClose     EG_ptModemExportTable->ptBase->EA_MODEM_ucDrvClose
#define	EA_MODEM_ucInitPpp		EG_ptModemExportTable->ptBase->EA_MODEM_ucInitPpp
#define	EA_MODEM_ucCallPpp		EG_ptModemExportTable->ptBase->EA_MODEM_ucCallPpp
#define	EA_MODEM_ucDialOffPpp	EG_ptModemExportTable->ptBase->EA_MODEM_ucDialOffPpp
#define	EA_MODEM_ucGetState		EG_ptModemExportTable->ptBase->EA_MODEM_ucGetState


//供生产测试使用
#define	EI_vInitMnwk			EG_ptModemExportTable->ptFactory->EI_vInitMnwk
#define	EI_vUnMnwk				EG_ptModemExportTable->ptFactory->EI_vUnMnwk
#define	EI_ucMnwkSendSdlc		EG_ptModemExportTable->ptFactory->EI_ucMnwkSendSdlc
#define	EI_vOffHook				EG_ptModemExportTable->ptFactory->EI_vOffHook
#define	EI_vOnHook				EG_ptModemExportTable->ptFactory->EI_vOnHook
#define	EI_vLineToModem			EG_ptModemExportTable->ptFactory->EI_vLineToModem
#define	EI_vLineToPhone			EG_ptModemExportTable->ptFactory->EI_vLineToPhone

#define	EA_ucIfPhoneUsed	    EG_ptModemExportTable->ptBase->EA_ucIfPhoneUsed

#endif

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -