Added tag family configuration

This commit is contained in:
MrMoDDoM
2018-11-28 18:40:51 +01:00
parent 119096971e
commit b83b4f80e7
4 changed files with 89 additions and 54 deletions
+5
View File
@@ -4,6 +4,7 @@
#include "Settings.h"
#include "Memory.h"
#include "Map.h"
#include "Configuration.h"
#include "Terminal/CommandLine.h"
#include "Application/Application.h"
@@ -42,6 +43,10 @@ static void ExecuteButtonAction(ButtonActionEnum ButtonAction)
for (uint8_t i=0; i<ActiveConfiguration.UidSize; i++) {
UidBuffer[i] = RandomGetByte();
}
/* If we are using an ISO15 tag, the first byte needs to be E0 by standard */
if (ActiveConfiguration.TagFamily == TAG_FAMILY_ISO15693) {
UidBuffer[0] = 0xE0;
}
ApplicationSetUid(UidBuffer);
break;
+68 -54
View File
@@ -82,7 +82,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = ApplicationSetUidDummy,
.UidSize = 0,
.MemorySize = 0,
.ReadOnly = true
.ReadOnly = true,
.TagFamily = TAG_FAMILY_NONE
},
#ifdef CONFIG_MF_ULTRALIGHT_SUPPORT
[CONFIG_MF_ULTRALIGHT] = {
@@ -98,7 +99,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareUltralightSetUid,
.UidSize = MIFARE_ULTRALIGHT_UID_SIZE,
.MemorySize = MIFARE_ULTRALIGHT_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
[CONFIG_MF_ULTRALIGHT_EV1_80B] = {
.CodecInitFunc = ISO14443ACodecInit,
@@ -113,7 +115,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareUltralightSetUid,
.UidSize = MIFARE_ULTRALIGHT_UID_SIZE,
.MemorySize = MIFARE_ULTRALIGHT_EV11_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
[CONFIG_MF_ULTRALIGHT_EV1_164B] = {
.CodecInitFunc = ISO14443ACodecInit,
@@ -128,7 +131,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareUltralightSetUid,
.UidSize = MIFARE_ULTRALIGHT_UID_SIZE,
.MemorySize = MIFARE_ULTRALIGHT_EV12_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
#endif
#ifdef CONFIG_MF_CLASSIC_1K_SUPPORT
@@ -145,7 +149,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareClassicSetUid,
.UidSize = MIFARE_CLASSIC_UID_SIZE,
.MemorySize = MIFARE_CLASSIC_1K_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
#endif
#ifdef CONFIG_MF_CLASSIC_1K_7B_SUPPORT
@@ -162,7 +167,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareClassicSetUid,
.UidSize = ISO14443A_UID_SIZE_DOUBLE,
.MemorySize = MIFARE_CLASSIC_1K_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
#endif
#ifdef CONFIG_MF_CLASSIC_4K_SUPPORT
@@ -179,7 +185,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareClassicSetUid,
.UidSize = MIFARE_CLASSIC_UID_SIZE,
.MemorySize = MIFARE_CLASSIC_4K_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
#endif
#ifdef CONFIG_MF_CLASSIC_4K_7B_SUPPORT
@@ -196,7 +203,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = MifareClassicSetUid,
.UidSize = ISO14443A_UID_SIZE_DOUBLE,
.MemorySize = MIFARE_CLASSIC_4K_MEM_SIZE,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO14443A
},
#endif
#ifdef CONFIG_ISO14443A_SNIFF_SUPPORT
@@ -213,7 +221,8 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = ApplicationSetUidDummy,
.UidSize = 0,
.MemorySize = 0,
.ReadOnly = true
.ReadOnly = true,
.TagFamily = TAG_FAMILY_NONE
},
#endif
#ifdef CONFIG_ISO14443A_READER_SUPPORT
@@ -230,58 +239,62 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
.ApplicationSetUidFunc = ApplicationSetUidDummy,
.UidSize = 0,
.MemorySize = 0,
.ReadOnly = false
.ReadOnly = false,
.TagFamily = TAG_FAMILY_NONE
},
#endif
#ifdef CONFIG_VICINITY_SUPPORT
[CONFIG_VICINITY] = {
.CodecInitFunc = ISO15693CodecInit,
.CodecDeInitFunc = ISO15693CodecDeInit,
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = VicinityAppInit,
.ApplicationResetFunc = VicinityAppReset,
.ApplicationTaskFunc = VicinityAppTask,
.ApplicationTickFunc = VicinityAppTick,
.ApplicationProcessFunc = VicinityAppProcess,
.ApplicationGetUidFunc = VicinityGetUid,
.ApplicationSetUidFunc = VicinitySetUid,
.UidSize = ISO15693_GENERIC_UID_SIZE,
.MemorySize = ISO15693_GENERIC_MEM_SIZE,
.ReadOnly = false
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = VicinityAppInit,
.ApplicationResetFunc = VicinityAppReset,
.ApplicationTaskFunc = VicinityAppTask,
.ApplicationTickFunc = VicinityAppTick,
.ApplicationProcessFunc = VicinityAppProcess,
.ApplicationGetUidFunc = VicinityGetUid,
.ApplicationSetUidFunc = VicinitySetUid,
.UidSize = ISO15693_GENERIC_UID_SIZE,
.MemorySize = ISO15693_GENERIC_MEM_SIZE,
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO15693
},
#endif
#ifdef CONFIG_ISO15693_SNIFF_SUPPORT
[CONFIG_ISO15693_SNIFF] = {
.CodecInitFunc = ISO15693CodecInit,
.CodecDeInitFunc = ISO15693CodecDeInit,
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = ApplicationInitDummy,
.ApplicationResetFunc = ApplicationResetDummy,
.ApplicationTaskFunc = ApplicationTaskDummy,
.ApplicationTickFunc = ApplicationTickDummy,
.ApplicationProcessFunc = ApplicationProcessDummy,
.ApplicationGetUidFunc = ApplicationGetUidDummy,
.ApplicationSetUidFunc = ApplicationSetUidDummy,
.UidSize = 0,
.MemorySize = 0,
.ReadOnly = true
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = ApplicationInitDummy,
.ApplicationResetFunc = ApplicationResetDummy,
.ApplicationTaskFunc = ApplicationTaskDummy,
.ApplicationTickFunc = ApplicationTickDummy,
.ApplicationProcessFunc = ApplicationProcessDummy,
.ApplicationGetUidFunc = ApplicationGetUidDummy,
.ApplicationSetUidFunc = ApplicationSetUidDummy,
.UidSize = 0,
.MemorySize = 0,
.ReadOnly = true,
.TagFamily = TAG_FAMILY_NONE
},
#endif
#ifdef CONFIG_SL2S2002_SUPPORT
[CONFIG_SL2S2002] = {
.CodecInitFunc = ISO15693CodecInit,
.CodecDeInitFunc = ISO15693CodecDeInit,
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = Sl2s2002AppInit,
.ApplicationResetFunc = Sl2s2002AppReset,
.ApplicationTaskFunc = Sl2s2002AppTask,
.ApplicationTickFunc = Sl2s2002AppTick,
.ApplicationProcessFunc = Sl2s2002AppProcess,
.ApplicationGetUidFunc = Sl2s2002GetUid,
.ApplicationSetUidFunc = Sl2s2002SetUid,
.UidSize = ISO15693_GENERIC_UID_SIZE,
.MemorySize = ISO15693_GENERIC_MEM_SIZE,
.ReadOnly = false
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = Sl2s2002AppInit,
.ApplicationResetFunc = Sl2s2002AppReset,
.ApplicationTaskFunc = Sl2s2002AppTask,
.ApplicationTickFunc = Sl2s2002AppTick,
.ApplicationProcessFunc = Sl2s2002AppProcess,
.ApplicationGetUidFunc = Sl2s2002GetUid,
.ApplicationSetUidFunc = Sl2s2002SetUid,
.UidSize = ISO15693_GENERIC_UID_SIZE,
.MemorySize = ISO15693_GENERIC_MEM_SIZE,
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO15693
},
#endif
@@ -289,17 +302,18 @@ static const PROGMEM ConfigurationType ConfigurationTable[] = {
[CONFIG_TITAGITSTANDARD] = {
.CodecInitFunc = ISO15693CodecInit,
.CodecDeInitFunc = ISO15693CodecDeInit,
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = TITagitstandardAppInit,
.ApplicationResetFunc = TITagitstandardAppReset,
.ApplicationTaskFunc = TITagitstandardAppTask,
.ApplicationTickFunc = TITagitstandardAppTick,
.ApplicationProcessFunc = TITagitstandardAppProcess,
.ApplicationGetUidFunc = TITagitstandardGetUid,
.ApplicationSetUidFunc = TITagitstandardSetUid,
.UidSize = TITAGIT_STD_UID_SIZE,
.MemorySize = TITAGIT_STD_MEM_SIZE,
.ReadOnly = false
.CodecTaskFunc = ISO15693CodecTask,
.ApplicationInitFunc = TITagitstandardAppInit,
.ApplicationResetFunc = TITagitstandardAppReset,
.ApplicationTaskFunc = TITagitstandardAppTask,
.ApplicationTickFunc = TITagitstandardAppTick,
.ApplicationProcessFunc = TITagitstandardAppProcess,
.ApplicationGetUidFunc = TITagitstandardGetUid,
.ApplicationSetUidFunc = TITagitstandardSetUid,
.UidSize = TITAGIT_STD_UID_SIZE,
.MemorySize = TITAGIT_STD_MEM_SIZE,
.ReadOnly = false,
.TagFamily = TAG_FAMILY_ISO15693
},
#endif
};
+11
View File
@@ -59,6 +59,13 @@ typedef enum {
CONFIG_COUNT
} ConfigurationEnum;
/** Tag Family definitions **/
#define TAG_FAMILY_NONE 0
#define TAG_FAMILY_ISO14443A 1
#define TAG_FAMILY_ISO14443B 2
#define TAG_FAMILY_ISO15693 5
/** With this `struct` the behavior of a configuration is defined. */
typedef struct {
/**
@@ -136,6 +143,10 @@ typedef struct {
* Implies whether the Memory can be changed.
*/
bool ReadOnly;
/**
* Specify tag family - see the defines above.
*/
uint8_t TagFamily;
} ConfigurationType;
@@ -80,6 +80,11 @@ CommandStatusIdType CommandSetUid(char* OutMessage, const char* InParam)
for (uint8_t i=0; i<UidSize; i++) {
UidBuffer[i] = RandomGetByte();
}
/* If we are using an ISO15 tag, the first byte needs to be E0 by standard */
if (ActiveConfiguration.TagFamily == TAG_FAMILY_ISO15693) {
UidBuffer[0] = 0xE0;
}
} else {
/* Convert to Bytes */
if (HexStringToBuffer(UidBuffer, sizeof(UidBuffer), InParam) != UidSize) {