#ifndef __USER_NFC_H_ #define __USER_NFC_H_ #ifdef __cplusplus extern "C" { #endif #include #include #include "define.h" #include "fm175xx.h" #define USER_NFC_INTERVAL 10 #define USER_NFC_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE); #define LEFT_CS_GPIO GPIOB #define LEFT_CS_PIN GPIO_Pin_4 #define LEFT_CS_ON GPIO_WriteBit(LEFT_CS_GPIO, LEFT_CS_PIN, Bit_RESET); #define LEFT_CS_OFF GPIO_WriteBit(LEFT_CS_GPIO, LEFT_CS_PIN, Bit_SET); #define RIGHT_CS_GPIO GPIOB #define RIGHT_CS_PIN GPIO_Pin_0 #define RIGHT_CS_ON GPIO_WriteBit(RIGHT_CS_GPIO, RIGHT_CS_PIN, Bit_RESET); #define RIGHT_CS_OFF GPIO_WriteBit(RIGHT_CS_GPIO, RIGHT_CS_PIN, Bit_SET); #define LEFT_RST_GPIO GPIOB #define LEFT_RST_PIN GPIO_Pin_6 #define LEFT_RST_DISABLE GPIO_WriteBit(LEFT_RST_GPIO, LEFT_RST_PIN, Bit_SET); #define LEFT_RST_ENABLE GPIO_WriteBit(LEFT_RST_GPIO, LEFT_RST_PIN, Bit_RESET); #define RIGHT_RST_GPIO GPIOC #define RIGHT_RST_PIN GPIO_Pin_4 #define RIGHT_RST_DISABLE GPIO_WriteBit(RIGHT_RST_GPIO, RIGHT_RST_PIN, Bit_SET); #define RIGHT_RST_ENABLE GPIO_WriteBit(RIGHT_RST_GPIO, RIGHT_RST_PIN, Bit_RESET); #define LEFT_IRQ_GPIO GPIOB #define LEFT_IRQ_PIN GPIO_Pin_5 #define LEFT_IRQ_IN GPIO_ReadInputDataBit(LEFT_IRQ_GPIO, LEFT_IRQ_PIN) #define RIGHT_IRQ_GPIO GPIOC #define RIGHT_IRQ_PIN GPIO_Pin_5 #define RIGHT_IRQ_IN GPIO_ReadInputDataBit(RIGHT_IRQ_GPIO, RIGHT_IRQ_PIN) #define ID_LOSE_DELAY_COUNT 2 typedef enum{ NFC_TYPE_RST_START, NFC_TYPE_RST_END, LEFT_TYPE_INIT, RIGHT_TYPE_INIT, LEFT_TYPE_CARD_CHECK, RIGHT_TYPE_CARD_CHECK, NFC_CARD_CHECK_DELAY, }nfc_work_type_e; typedef enum{ NFC_CARD_NULL, NFC_CARD_IN, NFC_CARD_NO, }nfc_card_stat_e; typedef struct{ nfc_work_type_e work_type; uint32_t nfc_delay_count; bool left_init_stat; bool right_init_stat; uint8_t left_loss_delay; uint8_t right_loss_delay; uint8_t left_ver; uint32_t left_ID; uint8_t right_ver; uint32_t right_ID; nfc_card_stat_e left_card_stat; nfc_card_stat_e right_card_stat; unsigned char left_idA[8]; unsigned char right_idA[8]; unsigned char left_idB[10]; unsigned char right_idB[10]; bool left_charge_stat; bool right_charge_stat; }nfc_work_s; typedef enum { NFC_QUEUE_TIME = 0, }USER_NFC_QUEUE_TYPE; unsigned char ReadRawRC(unsigned char Address); void WriteRawRC(unsigned char Address, unsigned char value); void SetBitMask(unsigned char reg,unsigned char mask); void ClearBitMask(unsigned char reg,unsigned char mask); void NFC_HardReset(void); void NFC_HardPowerdown(uint8_t mode); typedef void (*vUser_nfc_upload_card_stat_func)(uint8_t idx, bool stat, unsigned char *card); void vUser_nfc_init(void); void vUser_nfc_task_start(void); void vUser_nfc_set_upload_key_stat_func(vUser_nfc_upload_card_stat_func func); void vUser_nfc_set_charge_stat(uint8_t idx, bool stat); #ifdef __cplusplus } #endif #endif /* __USER_NFC_H_ */