200 lines
6.1 KiB
C
200 lines
6.1 KiB
C
/*
|
||
* uFR.c
|
||
*/
|
||
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <inttypes.h>
|
||
#include <stdbool.h>
|
||
#include <uFCoder.h>
|
||
#include "ini.h"
|
||
#include "uFR.h"
|
||
|
||
//------------------------------------------------------------------------------
|
||
bool CheckDependencies(void) {
|
||
#if defined(EXIT_ON_WRONG_FW_DEPENDENCY) || defined(EXIT_ON_WRONG_LIB_DEPENDENCY)
|
||
uint8_t version_major, version_minor, build;
|
||
bool wrong_version = false;
|
||
#endif
|
||
UFR_STATUS status;
|
||
|
||
#ifdef EXIT_ON_WRONG_LIB_DEPENDENCY
|
||
uint32_t dwDllVersion = 0;
|
||
|
||
dwDllVersion = GetDllVersion();
|
||
|
||
// "explode" the uFCoder library version:
|
||
version_major = (uint8_t)dwDllVersion;
|
||
version_minor = (uint8_t)(dwDllVersion >> 8);
|
||
|
||
// Get the uFCoder library build number.
|
||
build = (uint8_t)(dwDllVersion >> 16);
|
||
|
||
if (version_major < MIN_DEPEND_LIB_VER_MAJOR) {
|
||
wrong_version = true;
|
||
} else if (version_major == MIN_DEPEND_LIB_VER_MAJOR && version_minor < MIN_DEPEND_LIB_VER_MINOR) {
|
||
wrong_version = true;
|
||
} else if (version_major == MIN_DEPEND_LIB_VER_MAJOR && version_minor == MIN_DEPEND_LIB_VER_MINOR && build < MIN_DEPEND_LIB_VER_BUILD) {
|
||
wrong_version = true;
|
||
}
|
||
|
||
if (wrong_version) {
|
||
printf("uFCoder 函式庫版本錯誤 (%d.%d.%d)。\n"
|
||
"請更新 uFCoder 函式庫至至少 %d.%d.%d 版本。\n",
|
||
version_major, version_minor, build,
|
||
MIN_DEPEND_LIB_VER_MAJOR, MIN_DEPEND_LIB_VER_MINOR, MIN_DEPEND_LIB_VER_BUILD);
|
||
return false;
|
||
}
|
||
#endif
|
||
#ifdef EXIT_ON_WRONG_FW_DEPENDENCY
|
||
wrong_version = false;
|
||
status = GetReaderFirmwareVersion(&version_major, &version_minor);
|
||
if (status != UFR_OK) {
|
||
printf("檢查韌體版本時發生錯誤,狀態碼:0x%08X\n", status);
|
||
}
|
||
status = GetBuildNumber(&build);
|
||
|
||
if (status != UFR_OK) {
|
||
printf("取得韌體版本時發生錯誤,狀態碼:0x%08X\n", status);
|
||
}
|
||
if (version_major < MIN_DEPEND_FW_VER_MAJOR) {
|
||
wrong_version = true;
|
||
} else if (version_major == MIN_DEPEND_FW_VER_MAJOR && version_minor < MIN_DEPEND_FW_VER_MINOR) {
|
||
wrong_version = true;
|
||
} else if (version_major == MIN_DEPEND_FW_VER_MAJOR && version_minor == MIN_DEPEND_FW_VER_MINOR && build < MIN_DEPEND_FW_VER_BUILD) {
|
||
wrong_version = true;
|
||
}
|
||
|
||
if (wrong_version) {
|
||
printf("uFR NFC 讀卡機韌體版本錯誤 (%d.%d.%d)。\n"
|
||
"請更新 uFR 韌體至至少 %d.%d.%d 版本。\n",
|
||
version_major, version_minor, build,
|
||
MIN_DEPEND_FW_VER_MAJOR, MIN_DEPEND_FW_VER_MINOR, MIN_DEPEND_FW_VER_BUILD);
|
||
return false;
|
||
}
|
||
#endif
|
||
return true;
|
||
}
|
||
//------------------------------------------------------------------------------
|
||
sz_ptr GetDlTypeName(uint8_t dl_type_code) {
|
||
|
||
switch (dl_type_code) {
|
||
case DL_MIFARE_ULTRALIGHT:
|
||
return "DL_MIFARE_ULTRALIGHT";
|
||
case DL_MIFARE_ULTRALIGHT_EV1_11:
|
||
return "DL_MIFARE_ULTRALIGHT_EV1_11";
|
||
case DL_MIFARE_ULTRALIGHT_EV1_21:
|
||
return "DL_MIFARE_ULTRALIGHT_EV1_21";
|
||
case DL_MIFARE_ULTRALIGHT_C:
|
||
return "DL_MIFARE_ULTRALIGHT_C";
|
||
case DL_NTAG_203:
|
||
return "DL_NTAG_203";
|
||
case DL_NTAG_210:
|
||
return "DL_NTAG_210";
|
||
case DL_NTAG_212:
|
||
return "DL_NTAG_212";
|
||
case DL_NTAG_213:
|
||
return "DL_NTAG_213";
|
||
case DL_NTAG_215:
|
||
return "DL_NTAG_215";
|
||
case DL_NTAG_216:
|
||
return "DL_NTAG_216";
|
||
case DL_MIKRON_MIK640D:
|
||
return "DL_MIKRON_MIK640D";
|
||
case NFC_T2T_GENERIC:
|
||
return "NFC_T2T_GENERIC";
|
||
case DL_NT3H_1101:
|
||
return "DL_NT3H_1101";
|
||
case DL_NT3H_1201:
|
||
return "DL_NT3H_1201";
|
||
case DL_NT3H_2111:
|
||
return "DL_NT3H_2111";
|
||
case DL_NT3H_2211:
|
||
return "DL_NT3H_2211";
|
||
case DL_MIFARE_MINI:
|
||
return "DL_MIFARE_MINI";
|
||
case DL_NTAG_413_DNA:
|
||
return "DL_NTAG_413_DNA";
|
||
case DL_NTAG_424_DNA:
|
||
return "DL_NTAG_424_DNA";
|
||
case DL_NTAG_424_DNA_TT:
|
||
return "DL_NTAG_424_DNA_TT";
|
||
case DL_MIFARE_CLASSIC_1K:
|
||
return "DL_MIFARE_CLASSIC_1K";
|
||
case DL_MIFARE_CLASSIC_4K:
|
||
return "DL_MIFARE_CLASSIC_4K";
|
||
case DL_MIFARE_PLUS_S_2K_SL0:
|
||
return "DL_MIFARE_PLUS_S_2K_SL0";
|
||
case DL_MIFARE_PLUS_S_4K_SL0:
|
||
return "DL_MIFARE_PLUS_S_4K_SL0";
|
||
case DL_MIFARE_PLUS_X_2K_SL0:
|
||
return "DL_MIFARE_PLUS_X_2K_SL0";
|
||
case DL_MIFARE_PLUS_X_4K_SL0:
|
||
return "DL_MIFARE_PLUS_X_4K_SL0";
|
||
case DL_MIFARE_DESFIRE:
|
||
return "DL_MIFARE_DESFIRE";
|
||
case DL_MIFARE_DESFIRE_EV1_2K:
|
||
return "DL_MIFARE_DESFIRE_EV1_2K";
|
||
case DL_MIFARE_DESFIRE_EV1_4K:
|
||
return "DL_MIFARE_DESFIRE_EV1_4K";
|
||
case DL_MIFARE_DESFIRE_EV1_8K:
|
||
return "DL_MIFARE_DESFIRE_EV1_8K";
|
||
case DL_MIFARE_DESFIRE_EV2_2K:
|
||
return "DL_MIFARE_DESFIRE_EV2_2K";
|
||
case DL_MIFARE_DESFIRE_EV2_4K:
|
||
return "DL_MIFARE_DESFIRE_EV2_4K";
|
||
case DL_MIFARE_DESFIRE_EV2_8K:
|
||
return "DL_MIFARE_DESFIRE_EV2_8K";
|
||
case DL_MIFARE_PLUS_S_2K_SL1:
|
||
return "DL_MIFARE_PLUS_S_2K_SL1";
|
||
case DL_MIFARE_PLUS_X_2K_SL1:
|
||
return "DL_MIFARE_PLUS_X_2K_SL1";
|
||
case DL_MIFARE_PLUS_EV1_2K_SL1:
|
||
return "DL_MIFARE_PLUS_EV1_2K_SL1";
|
||
case DL_MIFARE_PLUS_X_2K_SL2:
|
||
return "DL_MIFARE_PLUS_X_2K_SL2";
|
||
case DL_MIFARE_PLUS_S_2K_SL3:
|
||
return "DL_MIFARE_PLUS_S_2K_SL3";
|
||
case DL_MIFARE_PLUS_X_2K_SL3:
|
||
return "DL_MIFARE_PLUS_X_2K_SL3";
|
||
case DL_MIFARE_PLUS_EV1_2K_SL3:
|
||
return "DL_MIFARE_PLUS_EV1_2K_SL3";
|
||
case DL_MIFARE_PLUS_S_4K_SL1:
|
||
return "DL_MIFARE_PLUS_S_4K_SL1";
|
||
case DL_MIFARE_PLUS_X_4K_SL1:
|
||
return "DL_MIFARE_PLUS_X_4K_SL1";
|
||
case DL_MIFARE_PLUS_EV1_4K_SL1:
|
||
return "DL_MIFARE_PLUS_EV1_4K_SL1";
|
||
case DL_MIFARE_PLUS_X_4K_SL2:
|
||
return "DL_MIFARE_PLUS_X_4K_SL2";
|
||
case DL_MIFARE_PLUS_S_4K_SL3:
|
||
return "DL_MIFARE_PLUS_S_4K_SL3";
|
||
case DL_MIFARE_PLUS_X_4K_SL3:
|
||
return "DL_MIFARE_PLUS_X_4K_SL3";
|
||
case DL_MIFARE_PLUS_EV1_4K_SL3:
|
||
return "DL_MIFARE_PLUS_EV1_4K_SL3";
|
||
case DL_GENERIC_ISO14443_4:
|
||
return "DL_GENERIC_ISO_14443_4";
|
||
case DL_MIFARE_PLUS_SE_SL0:
|
||
return "DL_MIFARE_PLUS_SE_SL0";
|
||
case DL_MIFARE_PLUS_SE_SL1:
|
||
return "DL_MIFARE_PLUS_SE_SL1";
|
||
case DL_MIFARE_PLUS_SE_SL3:
|
||
return "DL_MIFARE_PLUS_SE_SL3";
|
||
case DL_MIFARE_DESFIRE_LIGHT:
|
||
return "DL_MIFARE_DESFIRE_LIGHT";
|
||
case DL_GENERIC_ISO14443_4_TYPE_B:
|
||
return "DL_GENERIC_ISO14443_4_TYPE_B";
|
||
case DL_GENERIC_ISO14443_3_TYPE_B:
|
||
return "DL_GENERIC_ISO14443_3_TYPE_B";
|
||
case DL_MIFARE_PLUS_EV1_2K_SL0:
|
||
return " DL_MIFARE_PLUS_EV1_2K_SL0";
|
||
case DL_MIFARE_PLUS_EV1_4K_SL0:
|
||
return "DL_MIFARE_PLUS_EV1_4K_SL0";
|
||
case DL_IMEI_UID:
|
||
return "DL_IMEI_UID";
|
||
}
|
||
return "未知卡片";
|
||
}
|
||
//------------------------------------------------------------------------------
|