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

📄 zjmdmfuc.h

📁 这个程序是我们公司自己开发的modem卡的驱动程序
💻 H
字号:
//************************************************
//	FileName : zjmdmfuc.h
//	description:public function for access zj-modem driver
//	author:XieHongwei
//	date:2002-04-26
//***********************************************/
#ifndef ZJMDMFUC_H
#define ZJMDMFUC_H

/************ define the ioctl cmd **********/
#define IOCTL_CMD_SHUTCH			0x6b00
#define IOCTL_CMD_OPENCH			0x6b01
#define IOCTL_CMD_DISCONN			0x6b02
#define IOCTL_CMD_MAKECALL			0x6b03
#define IOCTL_CMD_GETSTAT			0x6b04
#define IOCTL_CMD_IsWriteOver		0x6b05
#define IOCTL_CMD_CmdSendOver		0x6b06
#define IOCTL_CMD_GetRdableCH		0x6b07
#define IOCTL_CMD_CORRECTTIME		0x6b08	//纠正系统时间
#define IOCTL_CMD_RESETCH			0x6b09
#define IOCTL_CMD_CARD_USABLE		0x6b0a
#define IOCTL_CMD_QUERY_STATE		0x6b0b
#define IOCTL_CMD_GetQueryResult	0x6b0c	//得到查询结果
#define IOCTL_CMD_RecoverHead		0x6b0d

#define	CMD_CONN_SUCCESS		0xc4	//连接成功
#define	CMD_CONN_BUSY			0xc5	//占线
#define	CMD_CONN_FAIL			0xc6	//连接失败
#define	CMD_HANGUP_BACK		0xd0	//返回查询的状态:挂机
#define	CMD_BRINGUP_BACK		0xd1	//返回查询的状态:摘机

#define MAX_CLEAN_BUF_TIME	10
#define MAX_CLEAN_TIMES		20
#define DEF_SEND_TIMEOUT		60	//秒
#define MAX_QUERY_TIME			100	//毫秒
#define ZJMDM_NAME 				"/dev/zjmdmdrv"
#define INVALID_MDMNO			0x22	/*无效的modem号*/
#define INVALID_CHLNO			INVALID_MDMNO
#define INVALID_STATE			0x33	/*无效的连接状态*/
#define MDM_NUM				8
#define CHL_NUM					4

//=========================================
//============= ioctl macro difine ================
//=========================================

/******************************************************
*打开modem指定的通道
******************************************************/
#define	zj_OpenCH(fd,chl_id)																 \
	ioctl((fd),IOCTL_CMD_OPENCH | ((chl_id)<<4))

/******************************************************
*通过modem指定的通道呼出
******************************************************/
#define	zj_CallOut(fd,chl_id,phone) 														\
	ioctl((fd),IOCTL_CMD_MAKECALL | ((chl_id)<<4),phone)

/******************************************************
*关闭modem指定的通道
******************************************************/
#define	zj_ShutCH(fd,chl_id) 																\
	ioctl((fd),IOCTL_CMD_SHUTCH | ((chl_id)<<4))

/******************************************************
*取得modem指定的通道的当前连接状态
*返回CMD_CONN_SUCCESS表示连接成功
******************************************************/
#define	zj_GetCHState(fd,chl_id) 															\
	ioctl((fd),IOCTL_CMD_GETSTAT | ((chl_id)<<4))

/******************************************************
*查看modem指定的通道的数据是否已发完
******************************************************/
#define	zj_WriteIsOver(fd,chl_id) 														\
	ioctl((fd),IOCTL_CMD_IsWriteOver | ((chl_id)<<4))

/******************************************************
*查看modem指定的通道的命令数据是否已发完
******************************************************/
#define	zj_CmdSendOver(fd,chl_id) 														\
	ioctl((fd),IOCTL_CMD_CmdSendOver | ((chl_id)<<4))

/******************************************************
*查看modem指定的通道是否有数据可读
******************************************************/
#define	zj_GetReadableOfCH(fd,chl_id) 													\
	ioctl((fd),IOCTL_CMD_GetRdableCH | ((chl_id)<<4))
/******************************************************
*校对linux的系统时间
******************************************************/
#define	zj_CorrectSysTime(fd) 															\
	ioctl((fd),IOCTL_CMD_CORRECTTIME | 0x0)

/******************************************************
*modem卡指定的通道的资源被重置
******************************************************/
#define	zj_ResetCH(fd,chl_id) 															\
	ioctl((fd),IOCTL_CMD_RESETCH | ((chl_id)<<4))

/******************************************************
*modem卡是否能用
******************************************************/
#define	zj_CardUsable(fd) 																\
	ioctl((fd),IOCTL_CMD_CARD_USABLE | 0x0)

/******************************************************
*发送查看modem指定的通道的挂机状态的命令
******************************************************/
#define	zj_QueryState(fd,chl_id) 														\
	ioctl((fd),IOCTL_CMD_QUERY_STATE | ((chl_id)<<4))

/******************************************************
*获得modem指定的通道的挂机状态值
******************************************************/
#define	zj_GetQueryResult(fd,chl_id) 														\
	ioctl((fd),IOCTL_CMD_GetQueryResult | ((chl_id)<<4))	

/******************************************************
*恢复错误的数据头
******************************************************/
#define	zj_RecoverHead(fd,chl_id) 														\
	ioctl((fd),IOCTL_CMD_RecoverHead | ((chl_id)<<4))

/******************************************************
* 启动系统
*******************************************************/
void zj_SystemStart();

/*******************************************************
* 系统终止
*******************************************************/
void zj_SystemExit();

/******************************************************
*将数据写到modem指定的通道(阻塞/非阻塞)
******************************************************/
inline ssize_t zj_write(int fd,char *Write_buf,unsigned long size,
	unsigned char chl_id,time_t timeout);

/******************************************************
*从modem指定的通道读取数据(阻塞/非阻塞)
******************************************************/
inline ssize_t zj_read(int fd,char *Read_buf,unsigned long size,
	unsigned char chl_id);

/******************************************************
*将modem卡指定的通道的"读缓冲"清空
******************************************************/
int zj_clean_read_buffer(int fd,unsigned char chl_id);

/******************************************************
*挂断modem指定的通道的连接
******************************************************/
int zj_DisconnCH(int fd,unsigned char chl_id);

/******************************************************
*得到通道的挂机状态
******************************************************/
int zj_GetHangupState(int fd,unsigned char chl_id);

/******************************************************
全局变量
*******************************************************/
pthread_mutex_t mutex_comd;

#endif

⌨️ 快捷键说明

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