mirror of
https://github.com/RfidResearchGroup/ChameleonMini.git
synced 2026-05-12 11:20:37 -07:00
Added tag family configuration
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user