File syn_rfid.c¶
File List > drivers > syn_rfid.c
Go to the documentation of this file
#include "syn_rfid.h"
#include "../util/syn_assert.h"
#include <string.h>
SYN_Status syn_rfid_init(SYN_RFID *rfid, SYN_GPIO_Pin ss_pin, SYN_GPIO_Pin rst_pin,
SYN_RFIDType type)
{
SYN_ASSERT(rfid != NULL);
memset(rfid, 0, sizeof(*rfid));
rfid->type = type;
rfid->ss_pin = ss_pin;
rfid->rst_pin = rst_pin;
return SYN_OK;
}
void syn_rfid_feed_card(SYN_RFID *rfid, const uint8_t *uid, uint8_t len)
{
if (rfid == NULL || uid == NULL || len == 0)
return;
if (len > sizeof(rfid->uid))
len = sizeof(rfid->uid);
memcpy(rfid->uid, uid, len);
rfid->uid_len = len;
rfid->card_present = true;
}
void syn_rfid_clear_card(SYN_RFID *rfid)
{
if (rfid == NULL)
return;
rfid->card_present = false;
rfid->uid_len = 0;
}
bool syn_rfid_is_card_present(const SYN_RFID *rfid)
{
if (rfid == NULL)
return false;
return rfid->card_present;
}
const uint8_t *syn_rfid_get_uid(const SYN_RFID *rfid, uint8_t *len)
{
if (rfid == NULL || !rfid->card_present) {
if (len)
*len = 0;
return NULL;
}
if (len)
*len = rfid->uid_len;
return rfid->uid;
}