• 大小: 230KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: rfid  rc522  linux驱动  spi  

资源简介

rfid rc522 linux驱动,功能齐全;可以读写,修改密码

资源截图

代码片段和文件信息

#include 
#include 
#include “card_number_buffer.h“

static unsigned char readwrite_buf[CARD_NUMBER_BUF_LEN][CARD_NUMBER_LEN];
static atomic_t read_buf  = ATOMIC_INIT(0); //定义原子变量并初始化为0
static atomic_t write_buf = ATOMIC_INIT(0); //定义原子变量并初始化为0

int isEmpty(void)
{
if (atomic_read(&read_buf) == atomic_read(&write_buf))
return 1;
else
return 0;
}

int isFull(void)
{
int w = atomic_read(&write_buf);
int r = atomic_read(&read_buf);

if ((w + 1) % CARD_NUMBER_BUF_LEN == r)
return 1;
else
return 0;
}

void putVal(unsigned char *val)
{
int w = atomic_read(&write_buf);
int r = atomic_read(&read_buf);

//printk(“putVal: r = %d w = %d val = 0x%x\n“ r w val);

if (isFull())
{
r = (r + 1) % CARD_NUMBER_BUF_LEN;
atomic_set(&read_buf  r);
}

//readwrite_buf[w] = val;
    memcpy(&readwrite_buf[w][0] val CARD_NUMBER_LEN);

w = (w + 1) % CARD_NUMBER_BUF_LEN;
atomic_set(&write_buf  w);
}

unsigned char *getVal(unsigned char *val)
{
int r = atomic_read(&read_buf);

if (isEmpty())
return 0;
else
{
//val = readwrite_buf[r];
        memcpy(val &readwrite_buf[r][0] CARD_NUMBER_LEN);

r = (r + 1) % CARD_NUMBER_BUF_LEN;
atomic_set(&read_buf  r);
}
return val;
}


EXPORT_SYMBOL(isEmpty);
EXPORT_SYMBOL(isFull);
EXPORT_SYMBOL(putVal);
EXPORT_SYMBOL(getVal);


评论

共有 条评论