示例#1
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Initval(void)
** 函数功能:    初始化钱包
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Initval(void)
{
	char status;

	c_RecvBuf[16] = ~c_RecvBuf[12];		c_RecvBuf[17] = ~c_RecvBuf[13];
	c_RecvBuf[18] = ~c_RecvBuf[14];		c_RecvBuf[19] = ~c_RecvBuf[15];
	c_RecvBuf[20] = c_RecvBuf[12];		c_RecvBuf[21] = c_RecvBuf[13];
	c_RecvBuf[22] = c_RecvBuf[14];		c_RecvBuf[23] = c_RecvBuf[15];
	c_RecvBuf[24] = c_RecvBuf[5];		c_RecvBuf[25] = ~c_RecvBuf[5];
	c_RecvBuf[26] = c_RecvBuf[5];		c_RecvBuf[27] = ~c_RecvBuf[5]; 
		
	status = PcdAuthentication(c_RecvBuf[4], c_RecvBuf[5], &c_RecvBuf[6], c_CardSrlNum);

	if (MI_OK == status)										//验证密钥
	{			
		if (MI_OK == PcdWrite(c_RecvBuf[5],&c_RecvBuf[12]))	//写块数据
		{
			status = 0;
		}
		else
		{
			status = 0x04;
		}
	}
	else
	{
		status = 0x02;
	}
		
	COM_Send(0,0,status);
}
示例#2
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Transfer(void)
** 函数功能:    备份钱包
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Transfer(void)
{
	char status;

	status = PcdAuthentication(c_RecvBuf[4], c_RecvBuf[5], &c_RecvBuf[7], c_CardSrlNum);

	if (MI_OK == status)										//验证密钥
	{
		PcdRestore(c_RecvBuf[5]);							//块数据写入FIFO
		if (MI_OK == PcdTransfer(c_RecvBuf[6]))				//块数据转移
		{
			status = 0;
		}
		else
		{
			status = 0x03;
		}
	}
	else
	{
		status = 0x02;
	}

	COM_Send(0,0,status);
}
示例#3
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Identify(void)
** 函数功能:    卡片识别,包含寻卡、防冲突和选择卡
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Identify(void)
{
	char status;
	
	status = PcdRequest(PICC_REQIDL, c_CardType);
	if (status != MI_OK )
	{
		PcdRequest(PICC_REQIDL, c_CardType);
#ifdef DEBUG_UART
		printf("PcdRequest fail 0x%x, CardType 0x%x%x\r\n", status, c_CardType[1], c_CardType[0]);
#endif
	}

	PcdAnticoll(c_CardSrlNum);
	if (MI_OK == PcdSelect(c_CardSrlNum, sak1))
	{
#ifdef DEBUG_UART
		printf("PcdSelect success\r\n");
#endif
		status = 0;
	}
	else
	{
#ifdef DEBUG_UART
		printf("PcdSelect fail\r\n");
#endif
		status = 0x01;										//选卡失败
	}

	COM_Send(c_CardSrlNum,4,status);
}
示例#4
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Halt(void)
** 函数功能:    卡片休眠
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Halt(void)
{
	char status = MI_COM_ERR;

	PcdHalt();
	status = PcdHalt();
	if (status == MI_OK)
	{
		status = 0;
	}
	else
	{
		status = 0xf1;
	}

	COM_Send(0,0,status);
}
int RS232_Send(char *buffer, int size)
{
	int ret = -1;

	if (buffer==NULL || size<=0)
	{
		return -1;
	}
	if (g_rs232_com < 0)
	{
		return -1;
	}

	ret = COM_Send(g_rs232_com, buffer, size);
	if (ret < 0)
	{
		return -1;
	}
	
	return 0;
}
示例#6
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Increment(void)
** 函数功能:    钱包充值
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Increment(void)
{
	char status;

	status = PcdAuthentication(c_RecvBuf[4], c_RecvBuf[5], &c_RecvBuf[6], c_CardSrlNum);

	if (MI_OK == status)										//验证密钥
	{	
		if (MI_OK == PcdValue(PICC_INCREMENT,c_RecvBuf[5],&c_RecvBuf[12]))	//钱包充值
		{			
			status = 0;
		}
		else
		{
			status = 0x03;
		}
	}
	else
	{
		status = 0x02;
	}
		
	COM_Send(0,0,status);
}
示例#7
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1ReadVal(void)
** 函数功能:    读取钱包值
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1ReadVal(void)
{
	char status;

	status = PcdAuthentication(c_RecvBuf[4], c_RecvBuf[5], &c_RecvBuf[6], c_CardSrlNum);

	if (MI_OK == status)										//验证密钥
	{
		if (MI_OK == PcdRead(c_RecvBuf[5],&c_RecvBuf[14]))		//读块数据
		{
			status = 0;
		}
		else
		{
			status = 0x03;
		}
	}
	else
	{
		status = 0x02;
	}
		
	COM_Send(&c_RecvBuf[14],0x04,status);
}
示例#8
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Write(void)
** 函数功能:    写卡块值
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Write(void)
{
	char status;
	
	status = PcdAuthentication(c_RecvBuf[4], c_RecvBuf[5], &c_RecvBuf[6], c_CardSrlNum);
		
	if (MI_OK == status)
	{														//密钥验证成功
		if (MI_OK == PcdWrite(c_RecvBuf[5],&c_RecvBuf[12]))
		{	
			status = 0x0;									//写块数据成功
		}
		else
		{
			status = 0x04;									//写块数据失败
		}
	}
	else
	{
		status = 0x02;										//密钥验证失败
	}
		
	COM_Send(0,0,status);	
}
示例#9
0
文件: Blinky.c 项目: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void M1Read(void)
** 函数功能:    读卡块值
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void M1Read(void)
{
	char status;

	status = PcdAuthentication(c_RecvBuf[4], c_RecvBuf[5], &c_RecvBuf[6], c_CardSrlNum);
		
	if (status == MI_OK)
	{														//密钥验证成功
		if (MI_OK == PcdRead(c_RecvBuf[5],&c_RecvBuf[14]))
		{
			status = 0;										//读卡成功
		}
		else
		{
			status = 0x03;									//读卡失败
		}	
	}
	else
	{
		status = 0x02;										//密钥验证失败
	}

	COM_Send(&c_RecvBuf[14],0x10,status);
}