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

📄 evalos.c

📁 一个rc531代码
💻 C
字号:
#include <string.h>
#include <stdio.h>
#include <m500a.h>

extern unsigned char FWI;
extern unsigned char BLK;

char EvalOS_GetRomInfo(unsigned char CID, unsigned char *Buf)
{
	unsigned char len;

	Buf[0]=0x0A|BLK;// I-block PCB with CID
	BLK ^= 1;	// Toggle block number
	Buf[1]=CID;  	// CID
	Buf[2]=0xb8;	// INF:CLA
	Buf[3]=0x00;	// INF:INS
	Buf[4]=0x03;	// INF:P1
	Buf[5]=0x00;	// INF:P2
	Buf[6]=0x00;	// INF:Le
	if((M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI))!=MI_OK) return(!MI_OK);
	if(Buf[len-4]==0x90) return(MI_OK);
	else return(!MI_OK);	  
}

char EvalOS_GetUID(unsigned char CID, unsigned char *Buf)
{
	unsigned char len;

	Buf[0]=0x0A|BLK;// I-block PCB with CID
	BLK ^= 1;	// Toggle block number
	Buf[1]=CID;  	// CID
	Buf[2]=0xb8;	// INF:CLA
	Buf[3]=0x00;	// INF:INS
	Buf[4]=0x01;	// INF:P1
	Buf[5]=0x00;	// INF:P2
	Buf[6]=0x00;	// INF:Le
	if(M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI)!=MI_OK) return(!MI_OK);
	if(Buf[len-4]==0x90) return(MI_OK);
	else return(!MI_OK);	  
}

char EvalOS_GetChipInfo(unsigned char CID, unsigned char *Buf)
{
	unsigned char len;

	Buf[0]=0x0A|BLK;// I-block PCB with CID
	BLK ^= 1;	// Toggle block number
	Buf[1]=CID;  	// CID
	Buf[2]=0xb8;	// INF:CLA
	Buf[3]=0x00;	// INF:INS
	Buf[4]=0x02;	// INF:P1
	Buf[5]=0x00;	// INF:P2
	Buf[6]=0x00;	// INF:Le
	if(M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI)!=MI_OK) return(!MI_OK);
	if(Buf[len-4]==0x90) return(MI_OK);
	else return(!MI_OK);	  
}

char EvalOS_RSAEncpDecp(unsigned char CID, 
			unsigned char *Buf,
			unsigned char Encrypt,
			unsigned char datalen)
{
	unsigned char len,mm,nn;
	static unsigned char regvalue5;

	for(len=(datalen-1); len>0; len--)
	{
		Buf[len+7]=Buf[len];
	}
	Buf[7]=Buf[0];
	Buf[0]=0x0A|BLK;// I-block PCB with CID
	BLK ^= 1;	// Toggle block number
	Buf[1]=CID;  	// CID
	Buf[2]=0xb8;	// INF:CLA
	Buf[3]=0xb0;	// INF:INS
	if(Encrypt)
		Buf[4]=0x78;	// INF:P1
	else
		Buf[4]=0x68;	// INF:P1
	if(datalen == 64) Buf[5]=0x02;
	else if(datalen == 96) Buf[5]=0x05;
	else if(datalen == 128) Buf[5]=0x08;
	else if(datalen == 192) Buf[5]=0x0b;
	Buf[6]=datalen;	// INF:Lc
	Buf[datalen+7]=datalen;	// INF:Le
	
	if(M500PiccExchangeBlock(Buf,datalen+10,Buf,&len,1,FWI) != MI_OK) return(!MI_OK);

	if(Buf[len-4]==0x90) return(MI_OK);
	else if((Buf[0]&0xf0) == 0xf0)
	{
M500PcdWriteRegister(0x1b,regvalue5); // For testing purpose
	  
	  if(nn=M500PiccExchangeBlock(Buf,5,Buf,&len,1,Buf[2]&0x0f) != MI_OK) return(!MI_OK);
mm=len;
	  if(Buf[len-4]==0x90) return(MI_OK);
	}
	else return(!MI_OK);	  
}

char EvalOS_EnableTestQ(unsigned char CID, unsigned char *Buf)
{
	unsigned char len;

	Buf[0]=0x0A|BLK;// I-block PCB with CID
	BLK ^= 1;	// Toggle block number
	Buf[1]=CID;  	// CID
	Buf[2]=0xb8;	// INF:CLA
	Buf[3]=0x24;	// INF:INS
	Buf[4]=0x03;	// INF:P1
	Buf[5]=0x00;	// INF:P2
	Buf[6]=0x00;	// INF:Le
	if(M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI)!=MI_OK) return(!MI_OK);
	if(Buf[len-4]==0x90) return(MI_OK);
	else return(!MI_OK);	  
}

char ISO14443_4_ExchangeData(unsigned char *send_data,
                             unsigned char send_bytelen,
                             unsigned char *rec_data,  
                             unsigned char *rec_bytelen,
                             unsigned char append_crc, 
                             unsigned char timeout )
{

}

⌨️ 快捷键说明

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