www.pudn.com > 2minilib.rar > i2c-tomega8.h


#ifndef __I2C_TOMEGA8_H_ 
#define __I2C_TOMEGA8_H_ 
 
#define I2COWNER_ADDRESS		(0x10>>1) 
#define MEGA8_I2CADDRESS		(0x60) 
 
typedef __packed struct{ 
	unsigned char cmd;	//(command|(dev_type<<4)) 
	unsigned char ctrl; 
}I2C_control; 
 
#define	ICCARD_COUNT_TYPESEL_OFFSET	2 
 
typedef __packed struct{ 
	unsigned char cmd;	//(command|(dev_type<<4)) 
	unsigned char key; 
}I2C_kbd; 
 
typedef __packed struct{ 
	unsigned char cmd;	//(command|(dev_type<<4)) 
	unsigned char ps2data; 
}I2C_PS2; 
 
#define	ICCARD_COUNT_FAILED_OFFSET	2 
typedef	unsigned char ICCardErrorCode; 
 
#define ICCARD_COUNT_OFFSET	4	//ic card frame count offset 
#define MAX_ICCARD_RWBUFFER		128 
typedef __packed struct tagICCardRWBuffer{ 
	unsigned short address; 
	unsigned char cnt; 
	unsigned char buffer[MAX_ICCARD_RWBUFFER]; 
}ICCARD_data; 
 
#define	ICCARD_COUNT_PWD_OFFSET		2 
#define	MAX_ICCARD_PWDBUFFER		128 
 
typedef	__packed struct tagICCardPwdBuffer{ 
	unsigned char cnt; 
	unsigned char buffer[MAX_ICCARD_PWDBUFFER]; 
}ICCARD_PWDDATA; 
 
 
__packed union tagI2C_ICCard_unionBUF{ 
	ICCARD_data _ICCardRWBuffer; 
	ICCARD_PWDDATA _ICCardPwdBuffer; 
	ICCardErrorCode _errorcode; 
}; 
 
typedef __packed struct{ 
	unsigned char cmd;	//(command|(dev_type<<4)) 
	union tagI2C_ICCard_unionBUF _I2C_ICCard_unionBUF; 
}I2C_ICCard; 
#define	iccard_addr		_I2C_ICCard_unionBUF._ICCardRWBuffer.address 
#define	iccard_cnt		_I2C_ICCard_unionBUF._ICCardRWBuffer.cnt 
#define	iccard_buf		_I2C_ICCard_unionBUF._ICCardRWBuffer.buffer 
#define	iccard_pwdcnt		_I2C_ICCard_unionBUF._ICCardPwdBuffer.cnt 
#define	iccard_pwdbuf		_I2C_ICCard_unionBUF._ICCardPwdBuffer.buffer 
#define	iccard_errcode	_I2C_ICCard_unionBUF._errorcode 
 
typedef	union { 
	unsigned char m_cmd; 
 
	I2C_ICCard m_iccard; 
	I2C_kbd	m_kbd; 
	I2C_PS2 m_ps2; 
	unsigned char m_buffer[1]; 
}I2C_MEGA8_BUFFER; 
 
#define	BUFFER_TYPE_LEN	(sizeof(unsigned char)) 
 
 
#define GetI2CCmd(cmd)		(cmd&0xf) 
#define GetI2C_Devtype(cmd)	(cmd>>4) 
#define MakeCmd(type, cmd)	(cmd|(type<<4)) 
 
// Device type  
#define DTYPE_ALL			0	//оƬ¿ØÖÆÃüÁî 
#define DTYPE_SECURITY		1	//¼ÓÃÜÃüÁî 
#define DTYPE_ICCARD		2	//IC¿¨¶ÁдÃüÁî 
#define DTYPE_MKEYB			3	//¾ØÕó¼üÅÌɨÃèÃüÁî 
#define DTYPE_PS2_0			4	//PS2½Ó¿Ú0ÃüÁî 
#define DTYPE_PS2_1			5	//PS2½Ó¿Ú2ÃüÁî 
 
// Commands 
#define CMD_CTRL_BASE		0x0 
#define CMD_CTRL			(CMD_CTRL_BASE+0)	//¿ØÖÆ×Ö 
#define CMD_MST_ADDR		(CMD_CTRL_BASE+1)	//Ö÷¿Ø¶ËµØÖ· 
#define CMD_GET_MKEY		(CMD_CTRL_BASE+2)	//¶ÁȡɨÃè¼üÅÌÂë 
#define CMD_GET_TEST1		(CMD_CTRL_BASE+0xa)	//¶ÁÈ¡²âÊԼĴæÆ÷ 
 
#define CMD_SEC_BASE		0x10 
#define CMD_SEC_PASS		(CMD_SEC_BASE+0) 
#define CMD_SEC_PASSACK	(CMD_SEC_BASE+1) 
 
#define CMD_ICC_BASE		0x20 
#define CMD_ICC_TYPESEL		(CMD_ICC_BASE+0) 
#define CMD_ICC_READ		(CMD_ICC_BASE+1) 
#define CMD_ICC_WRITE		(CMD_ICC_BASE+2) 
#define CMD_ICC_VERIFY		(CMD_ICC_BASE+3) 
#define CMD_ICC_FAILED		(CMD_ICC_BASE+4) 
 
#define CMD_MKEYB		0x30 
#define CMD_PS2_0		0x40 
#define CMD_PS2_1		0x50 
 
#define ICC_FAILED_NULL			0	//ûÓдíÎó 
#define ICC_FAILED_NOCARD		1	//IC ¿¨Ã»ÓвåÈë 
#define ICC_FAILED_ERRTYPE		2	//´íÎóµÄIC ¿¨ÀàÐÍ 
#define ICC_FAILED_BUSY			3	//IC ¿¨Ã¦ 
#define ICC_FAILED_NOSEL		4	//δѡÔñIC¿¨ÀàÐÍ 
#define ICC_FAILED_READERR		5	//IC ¿¨¶ÁÈ¡´íÎó 
#define ICC_FAILED_WRITEERR		6	//IC ¿¨Ð´Èë´íÎó 
#define ICC_FAILED_VERIFYERR		7	//IC ¿¨Ð£Ñé´íÎó 
#define ICC_FAILED_WAITING		0xff	//IC ¿¨Í¨Ñ¶×´Ì¬µÈ´ý 
 
//ic card type define 
#define ICCARD_COMPTYPE_ATMEL		(1<<4) 
#define ICCARD_COMPTYPE_SIEMENS	(2<<4) 
 
//atmel 24cxx ic card 
#define ICCARD_TYPE_AT24C02		(ICCARD_COMPTYPE_ATMEL|1) 
#define ICCARD_TYPE_AT24C04		(ICCARD_COMPTYPE_ATMEL|2) 
#define ICCARD_TYPE_AT24C08		(ICCARD_COMPTYPE_ATMEL|3) 
#define ICCARD_TYPE_AT24C16		(ICCARD_COMPTYPE_ATMEL|4) 
#define ICCARD_TYPE_AT24C32		(ICCARD_COMPTYPE_ATMEL|5) 
#define ICCARD_TYPE_AT24C64		(ICCARD_COMPTYPE_ATMEL|6) 
#define ICCARD_TYPE_SLE4442		(ICCARD_COMPTYPE_SIEMENS|1) 
 
#define ICCARD_IOCTL_LASTERR		1 
#define ICCARD_IOCTL_SELCARD		2 
#define	ICCARD_IOCTL_4442VERIFY		3 
 
#define CTRL_MKEn		(1<<3)	//ɨÃè¼üÅÌ¿ªÆô 
#define CTRL_ICEn		(1<<2)	//ic card¿ØÖÆ¿ªÆô 
#define CTRL_PS1En		(1<<1)	//ps2 1½Ó¿Ú¿ªÆô 
#define CTRL_PS0En		(1)		//ps2 0½Ó¿Ú¿ªÆô 
 
#endif /*#ifndef __I2C_TOMEGA8_H_*/