Skip to content

Commit cde65f0

Browse files
Dr. Maxie Dion SchmidtDr. Maxie Dion Schmidt
authored andcommitted
Fixing compile-time errors when enabling DESFire Gallagher support II - Kludgy hack: restrict the Chameleon terminal commands to only essential functionality (tweak as needed) - it works again
1 parent 2e550aa commit cde65f0

10 files changed

Lines changed: 3748 additions & 3941 deletions
0 Bytes
Binary file not shown.

Firmware/Chameleon-Mini/Chameleon-Mini-CustomBuild_DESFire.eep

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:1000000000005E2A07070808000004014100900173
1+
:100000000000622907070808000004014100900170
22
:1000100000000000000000000000000000000000E0
33
:1000200000000000000000000000000000000000D0
44
:1000300000000000000000000000000000000000C0
-6.38 KB
Binary file not shown.

Firmware/Chameleon-Mini/Chameleon-Mini-CustomBuild_DESFire.hex

Lines changed: 3708 additions & 3937 deletions
Large diffs are not rendered by default.

Firmware/Chameleon-Mini/Log.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
#include "Common.h"
55

66
#if defined(ENABLE_DESFIRE_GALLAGHER)
7-
#define LOG_SIZE 256
7+
#define LOG_SIZE 4
88
#elif defined(ENABLE_DESFIRE_AES_EXTENDED)
9-
#define LOG_SIZE 128
9+
#define LOG_SIZE 64
1010
#elif defined(MEMORY_LIMITED_TESTING)
1111
#define LOG_SIZE 1284
1212
#else

Firmware/Chameleon-Mini/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ SETTINGS += -DENABLE_DESFIRE_AES_EXTENDED
9797

9898
## Enable DESFire Gallagher app emulation (takes up extra buffer space)
9999
## WARNING: Enabling this flag results in a compilation error (too large a binary section)
100-
#SETTINGS += -DENABLE_DESFIRE_GALLAGHER -UENABLE_DESFIRE_AES_EXTENDED
100+
#SETTINGS += -DENABLE_DESFIRE_GALLAGHER -UENABLE_DESFIRE_AES_EXTENDED -DRESTRICT_CHAMELEON_TERMINAL
101101

102102
## Set a default DESFire PICC master key loaded when the config is initialized:
103103
#SETTINGS += -DDESFIRE_DEFAULT_PICC_MASTER_KEY='"My key string..."'
36 KB
Binary file not shown.

Firmware/Chameleon-Mini/Terminal/CommandLine.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@
4040
#include "Commands.h"
4141

4242
const PROGMEM CommandEntryType CommandTable[] = {
43+
#ifndef RESTRICT_CHAMELEON_TERMINAL
4344
{
4445
.Command = COMMAND_VERSION,
4546
.ExecFunc = NO_FUNCTION,
4647
.ExecParamFunc = NO_FUNCTION,
4748
.SetFunc = NO_FUNCTION,
4849
.GetFunc = CommandGetVersion,
4950
},
51+
#endif
5052
{
5153
.Command = COMMAND_CONFIG,
5254
.ExecFunc = NO_FUNCTION,
@@ -61,6 +63,7 @@ const PROGMEM CommandEntryType CommandTable[] = {
6163
.SetFunc = CommandSetUid,
6264
.GetFunc = CommandGetUid
6365
},
66+
#ifndef RESTRICT_CHAMELEON_TERMINAL
6467
{
6568
.Command = COMMAND_READONLY,
6669
.ExecFunc = NO_FUNCTION,
@@ -69,6 +72,7 @@ const PROGMEM CommandEntryType CommandTable[] = {
6972
.SetFunc = CommandSetReadOnly
7073

7174
},
75+
#endif
7276
{
7377
.Command = COMMAND_UPLOAD,
7478
.ExecFunc = CommandExecUpload,
@@ -99,6 +103,7 @@ const PROGMEM CommandEntryType CommandTable[] = {
99103
.GetFunc = NO_FUNCTION
100104
},
101105
#endif
106+
#ifndef RESTRICT_CHAMELEON_TERMINAL
102107
{
103108
.Command = COMMAND_MEMSIZE,
104109
.ExecFunc = NO_FUNCTION,
@@ -162,6 +167,7 @@ const PROGMEM CommandEntryType CommandTable[] = {
162167
.SetFunc = CommandSetPin,
163168
.GetFunc = CommandGetPin
164169
},
170+
#endif
165171
{
166172
.Command = COMMAND_LOGMODE,
167173
.ExecFunc = NO_FUNCTION,
@@ -197,13 +203,15 @@ const PROGMEM CommandEntryType CommandTable[] = {
197203
.SetFunc = NO_FUNCTION,
198204
.GetFunc = NO_FUNCTION
199205
},
206+
#ifndef RESTRICT_CHAMELEON_TERMINAL
200207
{
201208
.Command = COMMAND_SETTING,
202209
.ExecFunc = NO_FUNCTION,
203210
.ExecParamFunc = NO_FUNCTION,
204211
.SetFunc = CommandSetSetting,
205212
.GetFunc = CommandGetSetting
206213
},
214+
#endif
207215
{
208216
.Command = COMMAND_CLEAR,
209217
.ExecFunc = CommandExecClear,
@@ -225,20 +233,23 @@ const PROGMEM CommandEntryType CommandTable[] = {
225233
.SetFunc = NO_FUNCTION,
226234
.GetFunc = NO_FUNCTION
227235
},
236+
#ifndef RESTRICT_CHAMELEON_TERMINAL
228237
{
229238
.Command = COMMAND_CHARGING,
230239
.ExecFunc = NO_FUNCTION,
231240
.ExecParamFunc = NO_FUNCTION,
232241
.SetFunc = NO_FUNCTION,
233242
.GetFunc = CommandGetCharging
234243
},
244+
#endif
235245
{
236246
.Command = COMMAND_HELP,
237247
.ExecFunc = CommandExecHelp,
238248
.ExecParamFunc = NO_FUNCTION,
239249
.SetFunc = NO_FUNCTION,
240250
.GetFunc = NO_FUNCTION
241251
},
252+
#ifndef RESTRICT_CHAMELEON_TERMINAL
242253
{
243254
.Command = COMMAND_RSSI,
244255
.ExecFunc = NO_FUNCTION,
@@ -343,6 +354,7 @@ const PROGMEM CommandEntryType CommandTable[] = {
343354
.GetFunc = CommandGetAutoThreshold
344355
},
345356
#endif
357+
#endif
346358
#ifdef ENABLE_RUNTESTS_TERMINAL_COMMAND
347359
#include "../Tests/ChameleonTerminalInclude.c"
348360
#endif

Firmware/Chameleon-Mini/Terminal/Commands.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ extern Sniff14443Command Sniff14443CurrentCommand;
2727

2828
extern const PROGMEM CommandEntryType CommandTable[];
2929

30+
#ifndef RESTRICT_CHAMELEON_TERMINAL
3031
CommandStatusIdType CommandGetVersion(char *OutParam) {
3132
snprintf_P(OutParam, TERMINAL_BUFFER_SIZE,
3233
PSTR(
@@ -38,6 +39,7 @@ CommandStatusIdType CommandGetVersion(char *OutParam) {
3839

3940
return COMMAND_INFO_OK_WITH_TEXT_ID;
4041
}
42+
#endif
4143

4244
CommandStatusIdType CommandGetConfig(char *OutParam) {
4345
ConfigurationGetByName(OutParam, TERMINAL_BUFFER_SIZE);
@@ -102,6 +104,7 @@ CommandStatusIdType CommandSetUid(char *OutMessage, const char *InParam) {
102104
return COMMAND_INFO_OK_ID;
103105
}
104106

107+
#ifndef RESTRICT_CHAMELEON_TERMINAL
105108
CommandStatusIdType CommandGetReadOnly(char *OutParam) {
106109
if (ActiveConfiguration.ReadOnly) {
107110
OutParam[0] = COMMAND_CHAR_TRUE;
@@ -130,6 +133,7 @@ CommandStatusIdType CommandSetReadOnly(char *OutMessage, const char *InParam) {
130133

131134
return COMMAND_ERR_INVALID_PARAM_ID;
132135
}
136+
#endif
133137

134138
CommandStatusIdType CommandExecUpload(char *OutMessage) {
135139
XModemReceive(MemoryUploadBlock);
@@ -161,6 +165,7 @@ CommandStatusIdType CommandExecUpgrade(char *OutMessage) {
161165
}
162166
#endif
163167

168+
#ifndef RESTRICT_CHAMELEON_TERMINAL
164169
CommandStatusIdType CommandGetMemSize(char *OutParam) {
165170
snprintf_P(OutParam, TERMINAL_BUFFER_SIZE, PSTR("%u"), ActiveConfiguration.MemorySize);
166171

@@ -305,6 +310,7 @@ CommandStatusIdType CommandSetPin(char *OutMessage, const char *InParam) {
305310
return COMMAND_ERR_INVALID_PARAM_ID;
306311
}
307312
}
313+
#endif
308314

309315
CommandStatusIdType CommandGetLogMode(char *OutParam) {
310316
/* Get Logmode */
@@ -350,6 +356,7 @@ CommandStatusIdType CommandExecLogClear(char *OutMessage) {
350356
return COMMAND_INFO_OK_ID;
351357
}
352358

359+
#ifndef RESTRICT_CHAMELEON_TERMINAL
353360
CommandStatusIdType CommandGetSetting(char *OutParam) {
354361
SettingsGetActiveByName(OutParam, TERMINAL_BUFFER_SIZE);
355362
return COMMAND_INFO_OK_WITH_TEXT_ID;
@@ -362,6 +369,7 @@ CommandStatusIdType CommandSetSetting(char *OutMessage, const char *InParam) {
362369
return COMMAND_ERR_INVALID_PARAM_ID;
363370
}
364371
}
372+
#endif
365373

366374
CommandStatusIdType CommandExecClear(char *OutMessage) {
367375
MemoryClear();
@@ -378,13 +386,15 @@ CommandStatusIdType CommandExecRecall(char *OutMessage) {
378386
return COMMAND_INFO_OK_ID;
379387
}
380388

389+
#ifndef RESTRICT_CHAMELEON_TERMINAL
381390
CommandStatusIdType CommandGetCharging(char *OutMessage) {
382391
if (BatteryIsCharging()) {
383392
return COMMAND_INFO_TRUE_ID;
384393
} else {
385394
return COMMAND_INFO_FALSE_ID;
386395
}
387396
}
397+
#endif
388398

389399
CommandStatusIdType CommandExecHelp(char *OutMessage) {
390400
const CommandEntryType *EntryPtr = CommandTable;
@@ -411,6 +421,7 @@ CommandStatusIdType CommandExecHelp(char *OutMessage) {
411421
return COMMAND_INFO_OK_WITH_TEXT_ID;
412422
}
413423

424+
#ifndef RESTRICT_CHAMELEON_TERMINAL
414425
CommandStatusIdType CommandGetRssi(char *OutParam) {
415426
snprintf_P(OutParam, TERMINAL_BUFFER_SIZE,
416427
PSTR("%5u mV"), AntennaLevelGet());
@@ -743,3 +754,4 @@ CommandStatusIdType CommandSetAutoThreshold(char *OutMessage, const char *InPara
743754
}
744755
}
745756
#endif /*#ifdef CONFIG_ISO15693_SNIFF_SUPPORT*/
757+
#endif

Firmware/Chameleon-Mini/Terminal/Commands.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,10 @@ typedef struct {
5656
CommandGetFuncType GetFunc;
5757
} CommandEntryType;
5858

59+
#ifndef RESTRICT_CHAMELEON_TERMINAL
5960
#define COMMAND_VERSION "VERSION"
6061
CommandStatusIdType CommandGetVersion(char *OutParam);
62+
#endif
6163

6264
#define COMMAND_CONFIG "CONFIG"
6365
CommandStatusIdType CommandGetConfig(char *OutParam);
@@ -68,9 +70,11 @@ CommandStatusIdType CommandSetConfig(char *OutMessage, const char *InParam);
6870
CommandStatusIdType CommandGetUid(char *OutParam);
6971
CommandStatusIdType CommandSetUid(char *OutMessage, const char *InParam);
7072

73+
#ifndef RESTRICT_CHAMELEON_TERMINAL
7174
#define COMMAND_READONLY "READONLY"
7275
CommandStatusIdType CommandGetReadOnly(char *OutParam);
7376
CommandStatusIdType CommandSetReadOnly(char *OutMessage, const char *InParam);
77+
#endif
7478

7579
#define COMMAND_UPLOAD "UPLOAD"
7680
CommandStatusIdType CommandExecUpload(char *OutMessage);
@@ -84,6 +88,7 @@ CommandStatusIdType CommandExecReset(char *OutMessage);
8488
#define COMMAND_UPGRADE "UPGRADE"
8589
CommandStatusIdType CommandExecUpgrade(char *OutMessage);
8690

91+
#ifndef RESTRICT_CHAMELEON_TERMINAL
8792
#define COMMAND_MEMSIZE "MEMSIZE"
8893
CommandStatusIdType CommandGetMemSize(char *OutParam);
8994

@@ -118,6 +123,7 @@ CommandStatusIdType CommandSetLedRed(char *OutMessage, const char *InParam);
118123
#define COMMAND_PIN "PIN"
119124
CommandStatusIdType CommandGetPin(char *OutParam);
120125
CommandStatusIdType CommandSetPin(char *OutMessage, const char *InParam);
126+
#endif
121127

122128
#define COMMAND_LOGMODE "LOGMODE"
123129
CommandStatusIdType CommandGetLogMode(char *OutParam);
@@ -135,9 +141,11 @@ CommandStatusIdType CommandExecStoreLog(char *OutMessage);
135141
#define COMMAND_LOGCLEAR "LOGCLEAR"
136142
CommandStatusIdType CommandExecLogClear(char *OutMessage);
137143

144+
#ifndef RESTRICT_CHAMELEON_TERMINAL
138145
#define COMMAND_SETTING "SETTING"
139146
CommandStatusIdType CommandGetSetting(char *OutParam);
140147
CommandStatusIdType CommandSetSetting(char *OutMessage, const char *InParam);
148+
#endif
141149

142150
#define COMMAND_CLEAR "CLEAR"
143151
CommandStatusIdType CommandExecClear(char *OutMessage);
@@ -148,12 +156,15 @@ CommandStatusIdType CommandExecStore(char *OutMessage);
148156
#define COMMAND_RECALL "RECALL"
149157
CommandStatusIdType CommandExecRecall(char *OutMessage);
150158

159+
#ifndef RESTRICT_CHAMELEON_TERMINAL
151160
#define COMMAND_CHARGING "CHARGING"
152161
CommandStatusIdType CommandGetCharging(char *OutParam);
162+
#endif
153163

154164
#define COMMAND_HELP "HELP"
155165
CommandStatusIdType CommandExecHelp(char *OutMessage);
156166

167+
#ifndef RESTRICT_CHAMELEON_TERMINAL
157168
#define COMMAND_RSSI "RSSI"
158169
CommandStatusIdType CommandGetRssi(char *OutParam);
159170

@@ -201,6 +212,7 @@ CommandStatusIdType CommandExecClone(char *OutMessage);
201212
CommandStatusIdType CommandGetAutoThreshold(char *OutParam);
202213
CommandStatusIdType CommandSetAutoThreshold(char *OutMessage, const char *InParam);
203214
#endif /*#ifdef CONFIG_ISO15693_SNIFF_SUPPORT*/
215+
#endif
204216

205217
#ifdef ENABLE_RUNTESTS_TERMINAL_COMMAND
206218
#include "../Tests/ChameleonTerminal.h"

0 commit comments

Comments
 (0)