|
@@ -18,21 +18,6 @@ FreeFareTag::~FreeFareTag()
|
18
|
18
|
freefare_free_tag(_tag);
|
19
|
19
|
}
|
20
|
20
|
|
21
|
|
-const freefare_tag *FreeFareTag::getTag() const
|
22
|
|
-{
|
23
|
|
- return _tag;
|
24
|
|
-}
|
25
|
|
-
|
26
|
|
-freefare_tag_type FreeFareTag::getType() const
|
27
|
|
-{
|
28
|
|
- return _type;
|
29
|
|
-}
|
30
|
|
-
|
31
|
|
-const std::string &FreeFareTag::getUid() const
|
32
|
|
-{
|
33
|
|
- return _uid;
|
34
|
|
-}
|
35
|
|
-
|
36
|
21
|
ResultBool FreeFareTag::authenticate(int sector, int block, std::string key, int keyType)
|
37
|
22
|
{
|
38
|
23
|
if (mifare_classic_connect(_tag) != 0) {
|
|
@@ -54,7 +39,7 @@ ResultString FreeFareTag::readBlock(int sector, int block, std::string key, int
|
54
|
39
|
return ResultString::error("Failed to connect to MIFARE tag");
|
55
|
40
|
}
|
56
|
41
|
|
57
|
|
- block = mifare_classic_sector_last_block((MifareClassicBlockNumber)sector) + block;
|
|
42
|
+ block = mifare_classic_sector_first_block((MifareClassicBlockNumber)sector) + block;
|
58
|
43
|
if (mifare_classic_authenticate(_tag, (MifareClassicBlockNumber)block, (const unsigned char*)key.c_str(),
|
59
|
44
|
(MifareClassicKeyType)keyType) != 0) {
|
60
|
45
|
return ResultString::error("Failed to authenticate to MIFARE tag");
|
|
@@ -68,3 +53,33 @@ ResultString FreeFareTag::readBlock(int sector, int block, std::string key, int
|
68
|
53
|
mifare_classic_disconnect(_tag);
|
69
|
54
|
return ResultString::ok(std::string((const char*)data, sizeof(data)));
|
70
|
55
|
}
|
|
56
|
+
|
|
57
|
+const freefare_tag *FreeFareTag::getTag() const
|
|
58
|
+{
|
|
59
|
+ return _tag;
|
|
60
|
+}
|
|
61
|
+
|
|
62
|
+int FreeFareTag::getFirstBlock(int sector) const
|
|
63
|
+{
|
|
64
|
+ return mifare_classic_sector_first_block(sector);
|
|
65
|
+}
|
|
66
|
+
|
|
67
|
+int FreeFareTag::getLastBlock(int sector) const
|
|
68
|
+{
|
|
69
|
+ return mifare_classic_sector_last_block(sector);
|
|
70
|
+}
|
|
71
|
+
|
|
72
|
+int FreeFareTag::getSectorBlockCount(int sector)
|
|
73
|
+{
|
|
74
|
+ return mifare_classic_sector_block_count(sector);
|
|
75
|
+}
|
|
76
|
+
|
|
77
|
+freefare_tag_type FreeFareTag::getType() const
|
|
78
|
+{
|
|
79
|
+ return _type;
|
|
80
|
+}
|
|
81
|
+
|
|
82
|
+const std::string &FreeFareTag::getUid() const
|
|
83
|
+{
|
|
84
|
+ return _uid;
|
|
85
|
+}
|