user_nfc.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #ifndef __USER_NFC_H_
  2. #define __USER_NFC_H_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include "define.h"
  9. #include "fm175xx.h"
  10. #define USER_NFC_INTERVAL 10
  11. #define USER_NFC_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
  12. #define LEFT_CS_GPIO GPIOB
  13. #define LEFT_CS_PIN GPIO_Pin_4
  14. #define LEFT_CS_ON GPIO_WriteBit(LEFT_CS_GPIO, LEFT_CS_PIN, Bit_RESET);
  15. #define LEFT_CS_OFF GPIO_WriteBit(LEFT_CS_GPIO, LEFT_CS_PIN, Bit_SET);
  16. #define RIGHT_CS_GPIO GPIOB
  17. #define RIGHT_CS_PIN GPIO_Pin_0
  18. #define RIGHT_CS_ON GPIO_WriteBit(RIGHT_CS_GPIO, RIGHT_CS_PIN, Bit_RESET);
  19. #define RIGHT_CS_OFF GPIO_WriteBit(RIGHT_CS_GPIO, RIGHT_CS_PIN, Bit_SET);
  20. #define LEFT_RST_GPIO GPIOB
  21. #define LEFT_RST_PIN GPIO_Pin_6
  22. #define LEFT_RST_DISABLE GPIO_WriteBit(LEFT_RST_GPIO, LEFT_RST_PIN, Bit_SET);
  23. #define LEFT_RST_ENABLE GPIO_WriteBit(LEFT_RST_GPIO, LEFT_RST_PIN, Bit_RESET);
  24. #define RIGHT_RST_GPIO GPIOC
  25. #define RIGHT_RST_PIN GPIO_Pin_4
  26. #define RIGHT_RST_DISABLE GPIO_WriteBit(RIGHT_RST_GPIO, RIGHT_RST_PIN, Bit_SET);
  27. #define RIGHT_RST_ENABLE GPIO_WriteBit(RIGHT_RST_GPIO, RIGHT_RST_PIN, Bit_RESET);
  28. #define LEFT_IRQ_GPIO GPIOB
  29. #define LEFT_IRQ_PIN GPIO_Pin_5
  30. #define LEFT_IRQ_IN GPIO_ReadInputDataBit(LEFT_IRQ_GPIO, LEFT_IRQ_PIN)
  31. #define RIGHT_IRQ_GPIO GPIOC
  32. #define RIGHT_IRQ_PIN GPIO_Pin_5
  33. #define RIGHT_IRQ_IN GPIO_ReadInputDataBit(RIGHT_IRQ_GPIO, RIGHT_IRQ_PIN)
  34. #define ID_LOSE_DELAY_COUNT 2
  35. typedef enum{
  36. NFC_TYPE_RST_START,
  37. NFC_TYPE_RST_END,
  38. LEFT_TYPE_INIT,
  39. RIGHT_TYPE_INIT,
  40. LEFT_TYPE_CARD_CHECK,
  41. RIGHT_TYPE_CARD_CHECK,
  42. NFC_CARD_CHECK_DELAY,
  43. }nfc_work_type_e;
  44. typedef enum{
  45. NFC_CARD_NULL,
  46. NFC_CARD_IN,
  47. NFC_CARD_NO,
  48. }nfc_card_stat_e;
  49. typedef struct{
  50. nfc_work_type_e work_type;
  51. uint32_t nfc_delay_count;
  52. bool left_init_stat;
  53. bool right_init_stat;
  54. uint8_t left_loss_delay;
  55. uint8_t right_loss_delay;
  56. uint8_t left_ver;
  57. uint32_t left_ID;
  58. uint8_t right_ver;
  59. uint32_t right_ID;
  60. nfc_card_stat_e left_card_stat;
  61. nfc_card_stat_e right_card_stat;
  62. unsigned char left_idA[8];
  63. unsigned char right_idA[8];
  64. unsigned char left_idB[10];
  65. unsigned char right_idB[10];
  66. bool left_charge_stat;
  67. bool right_charge_stat;
  68. }nfc_work_s;
  69. typedef enum
  70. {
  71. NFC_QUEUE_TIME = 0,
  72. }USER_NFC_QUEUE_TYPE;
  73. unsigned char ReadRawRC(unsigned char Address);
  74. void WriteRawRC(unsigned char Address, unsigned char value);
  75. void SetBitMask(unsigned char reg,unsigned char mask);
  76. void ClearBitMask(unsigned char reg,unsigned char mask);
  77. void NFC_HardReset(void);
  78. void NFC_HardPowerdown(uint8_t mode);
  79. typedef void (*vUser_nfc_upload_card_stat_func)(uint8_t idx, bool stat, unsigned char *card);
  80. void vUser_nfc_init(void);
  81. void vUser_nfc_task_start(void);
  82. void vUser_nfc_set_upload_key_stat_func(vUser_nfc_upload_card_stat_func func);
  83. void vUser_nfc_set_charge_stat(uint8_t idx, bool stat);
  84. #ifdef __cplusplus
  85. }
  86. #endif
  87. #endif /* __USER_NFC_H_ */