diff --git a/Doc/Doxygen/html/Page_14443AReader.html b/Doc/Doxygen/html/Page_14443AReader.html index 96804db..30915f6 100644 --- a/Doc/Doxygen/html/Page_14443AReader.html +++ b/Doc/Doxygen/html/Page_14443AReader.html @@ -160,7 +160,7 @@ Each of the following commands returns INVALID COMMAND USAGE on a n diff --git a/Doc/Doxygen/html/Page_Buttons.html b/Doc/Doxygen/html/Page_Buttons.html index cc33923..56615c9 100644 --- a/Doc/Doxygen/html/Page_Buttons.html +++ b/Doc/Doxygen/html/Page_Buttons.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_CommandLine.html b/Doc/Doxygen/html/Page_CommandLine.html index 98afee1..3aa0431 100644 --- a/Doc/Doxygen/html/Page_CommandLine.html +++ b/Doc/Doxygen/html/Page_CommandLine.html @@ -284,7 +284,7 @@ When setting the timeout to zero, there is no timeout and thus a process may con diff --git a/Doc/Doxygen/html/Page_Configurations.html b/Doc/Doxygen/html/Page_Configurations.html index a109330..c347b18 100644 --- a/Doc/Doxygen/html/Page_Configurations.html +++ b/Doc/Doxygen/html/Page_Configurations.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_GettingStarted.html b/Doc/Doxygen/html/Page_GettingStarted.html index 7754ff9..175d301 100644 --- a/Doc/Doxygen/html/Page_GettingStarted.html +++ b/Doc/Doxygen/html/Page_GettingStarted.html @@ -91,7 +91,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

In either way, the ChameleonMini now jumps to the bootloader and waits patiently for a firmware upgrade.

Step 2: Upgrade the Firmware

-

Once the ChameleonMini is in the bootloader, you can flash a new firmware, i.e., the files Chameleon-Mini.hex and the Chameleon-Mini.hex, into the microcontroller. The source code directory contains these files precompiled but you can of course also compile the code yourself. Create a new folder and copy the two files into it. The following depends on your operating system:

+

Once the ChameleonMini is in the bootloader, you can flash a new firmware, i.e., the files Chameleon-Mini.hex and the Chameleon-Mini.eep, into the microcontroller. The source code directory contains these files precompiled but you can of course also compile the code yourself. Create a new folder and copy the two files into it. The following depends on your operating system:

Upgrade Procedure for Linux Users

In order to upgrade the firmware under Linux you first have to install avrdude, e.g. under Ubuntu with the command sudo apt-get install avra avrdude. Then change to the directory where you have saved the hex and eep files and run sudo avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i.

You also can use sudo make program in the source code directory, which basically does the same.

@@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_LED.html b/Doc/Doxygen/html/Page_LED.html index 2b741dd..82ebc03 100644 --- a/Doc/Doxygen/html/Page_LED.html +++ b/Doc/Doxygen/html/Page_LED.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_LEDs.html b/Doc/Doxygen/html/Page_LEDs.html index 80f9ca3..b849adf 100644 --- a/Doc/Doxygen/html/Page_LEDs.html +++ b/Doc/Doxygen/html/Page_LEDs.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_Log.html b/Doc/Doxygen/html/Page_Log.html index 44e4eef..c78daa0 100644 --- a/Doc/Doxygen/html/Page_Log.html +++ b/Doc/Doxygen/html/Page_Log.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_Settings.html b/Doc/Doxygen/html/Page_Settings.html index 5520e8c..1437c46 100644 --- a/Doc/Doxygen/html/Page_Settings.html +++ b/Doc/Doxygen/html/Page_Settings.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/Page_UploadingDownloading.html b/Doc/Doxygen/html/Page_UploadingDownloading.html index 93d9e42..aee6649 100644 --- a/Doc/Doxygen/html/Page_UploadingDownloading.html +++ b/Doc/Doxygen/html/Page_UploadingDownloading.html @@ -91,7 +91,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_antenna_level_8h_source.html b/Doc/Doxygen/html/_antenna_level_8h_source.html index 639b4ee..da44422 100644 --- a/Doc/Doxygen/html/_antenna_level_8h_source.html +++ b/Doc/Doxygen/html/_antenna_level_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * AntennaLevel.h
3  *
4  * Created on: 24.11.2013
5  * Author: skuser
6  */
7 
8 #ifndef ANTENNALEVEL_H_
9 #define ANTENNALEVEL_H_
10 
11 #include "Common.h"
12 
13 #define ANTENNA_LEVEL_R1 47E3
14 #define ANTENNA_LEVEL_R2 1E3
15 #define ANTENNA_LEVEL_VREF 1.0
16 #define ANTENNA_LEVEL_RES 4096
17 #define ANTENNA_LEVEL_OFFSET 190 /* LSB */
18 
19 #define ANTENNA_LEVEL_MILLIVOLT 1E3
20 #define ANTENNA_LEVEL_FACTOR (ANTENNA_LEVEL_VREF * (ANTENNA_LEVEL_R1 + ANTENNA_LEVEL_R2) / (ANTENNA_LEVEL_RES * ANTENNA_LEVEL_R2) )
21 #define ANTENNA_LEVEL_SCALE ((uint32_t) 1<<16)
22 #define ANTENNA_LEVEL_NUMERATOR ((uint32_t) (ANTENNA_LEVEL_MILLIVOLT * ANTENNA_LEVEL_FACTOR * ANTENNA_LEVEL_SCALE + .5))
23 #define ANTENNA_LEVEL_DENOMINATOR (ANTENNA_LEVEL_SCALE)
24 
25 static inline
26 void AntennaLevelInit(void)
27 {
28  ADCA.CTRLA = ADC_ENABLE_bm;
29  ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc;
30  ADCA.REFCTRL = ADC_REFSEL_INT1V_gc | ADC_BANDGAP_bm;
31  ADCA.PRESCALER = ADC_PRESCALER_DIV32_gc;
32  ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
33  ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN1_gc;
34 
35 }
36 
37 static inline
38 uint16_t AntennaLevelGet(void)
39 {
40  ADCA.CH0.CTRL |= ADC_CH_START_bm;
41  while( !(ADCA.CH0.INTFLAGS & ADC_CH_CHIF_bm) );
42 
43  ADCA.CH0.INTFLAGS = ADC_CH_CHIF_bm;
44 
45  int16_t Result = ADCA.CH0RES - ANTENNA_LEVEL_OFFSET;
46  if (Result < 0) Result = 0;
47 
48  return (uint16_t) (((uint32_t) Result * ANTENNA_LEVEL_NUMERATOR) / ANTENNA_LEVEL_DENOMINATOR);
49 }
50 
51 void AntennaLevelTick(void);
52 void AntennaLevelResetMaxRssi(void);
53 
54 #endif /* ANTENNALEVEL_H_ */
diff --git a/Doc/Doxygen/html/_application_8h_source.html b/Doc/Doxygen/html/_application_8h_source.html index 984ad33..5d30513 100644 --- a/Doc/Doxygen/html/_application_8h_source.html +++ b/Doc/Doxygen/html/_application_8h_source.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_battery_8h_source.html b/Doc/Doxygen/html/_battery_8h_source.html index 7944b5e..0f26d8a 100644 --- a/Doc/Doxygen/html/_battery_8h_source.html +++ b/Doc/Doxygen/html/_battery_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Battery.h
3  *
4  * Created on: 20.08.2014
5  * Author: sk
6  */
7 
8 #ifndef BATTERY_H_
9 #define BATTERY_H_
10 
11 #include "Common.h"
12 
13 #define BATTERY_PORT PORTD
14 #define BATTERY_STAT_PIN PIN0_bm
15 #define BATTERY_STAT_PINCTRL PIN0CTRL
16 #define BATTERY_PORT_MASK (BATTERY_STAT_PIN)
17 
18 INLINE void BatteryInit(void) {
19  BATTERY_PORT.DIRCLR = BATTERY_PORT_MASK;
20  BATTERY_PORT.BATTERY_STAT_PINCTRL = PORT_OPC_PULLUP_gc;
21 }
22 
23 INLINE bool BatteryIsCharging(void) {
24  if (!(BATTERY_PORT.IN & BATTERY_STAT_PIN)) {
25  return true;
26  } else {
27  return false;
28  }
29 }
30 
31 #endif /* BATTERY_H_ */
diff --git a/Doc/Doxygen/html/_button_8h_source.html b/Doc/Doxygen/html/_button_8h_source.html index 5a246c0..4a30bf9 100644 --- a/Doc/Doxygen/html/_button_8h_source.html +++ b/Doc/Doxygen/html/_button_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Button.h
3  *
4  * Created on: 13.05.2013
5  * Author: skuser
6  */
7 
8 #ifndef BUTTON_H_
9 #define BUTTON_H_
10 
11 #include "Common.h"
12 
13 typedef enum {
14  BUTTON_R_PRESS_SHORT = 0,
15  BUTTON_R_PRESS_LONG,
16  BUTTON_L_PRESS_SHORT,
17  BUTTON_L_PRESS_LONG,
18 
19  /* Must be last element */
20  BUTTON_TYPE_COUNT
21 } ButtonTypeEnum;
22 
23 typedef enum {
24  BUTTON_ACTION_NONE,
25  BUTTON_ACTION_UID_RANDOM,
26  BUTTON_ACTION_UID_LEFT_INCREMENT,
27  BUTTON_ACTION_UID_RIGHT_INCREMENT,
28  BUTTON_ACTION_UID_LEFT_DECREMENT,
29  BUTTON_ACTION_UID_RIGHT_DECREMENT,
30  BUTTON_ACTION_CYCLE_SETTINGS,
31  BUTTON_ACTION_STORE_MEM,
32  BUTTON_ACTION_RECALL_MEM,
33  BUTTON_ACTION_TOGGLE_FIELD,
34  BUTTON_ACTION_STORE_LOG,
35 
36  /* This has to be last element */
37  BUTTON_ACTION_COUNT
38 } ButtonActionEnum;
39 
40 void ButtonInit(void);
41 void ButtonTick(void);
42 
43 void ButtonGetActionList(char* List, uint16_t BufferSize);
44 void ButtonSetActionById(ButtonTypeEnum Type, ButtonActionEnum Action);
45 void ButtonGetActionByName(ButtonTypeEnum Type, char* Action, uint16_t BufferSize);
46 bool ButtonSetActionByName(ButtonTypeEnum Type, const char* Action);
47 
48 #endif /* BUTTON_H_ */
diff --git a/Doc/Doxygen/html/_buttons_8txt.html b/Doc/Doxygen/html/_buttons_8txt.html index 49be2b2..fc87c0c 100644 --- a/Doc/Doxygen/html/_buttons_8txt.html +++ b/Doc/Doxygen/html/_buttons_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_chameleon-_mini_8h_source.html b/Doc/Doxygen/html/_chameleon-_mini_8h_source.html index 08b031b..6d545f1 100644 --- a/Doc/Doxygen/html/_chameleon-_mini_8h_source.html +++ b/Doc/Doxygen/html/_chameleon-_mini_8h_source.html @@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_codec_8h_source.html b/Doc/Doxygen/html/_codec_8h_source.html index bb9a36a..07f1d59 100644 --- a/Doc/Doxygen/html/_codec_8h_source.html +++ b/Doc/Doxygen/html/_codec_8h_source.html @@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_command_line_8h_source.html b/Doc/Doxygen/html/_command_line_8h_source.html index a4b2aab..5347462 100644 --- a/Doc/Doxygen/html/_command_line_8h_source.html +++ b/Doc/Doxygen/html/_command_line_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * CommandLine.h
3  *
4  * Created on: 04.05.2013
5  * Author: skuser
6  */
7 
8 #ifndef COMMANDLINE_H_
9 #define COMMANDLINE_H_
10 
11 #include "Terminal.h"
12 #include "Commands.h"
13 
14 void CommandLineInit(void);
15 bool CommandLineProcessByte(uint8_t Byte);
16 void CommandLineTick(void);
17 
18 void CommandLineAppendData(void const * const Buffer, uint16_t Bytes);
19 
20 /* Functions for timeout commands */
21 void CommandLinePendingTaskFinished(CommandStatusIdType ReturnStatusID, char const * const OutMessage); // must be called, when the intended task is finished
22 extern void (*CommandLinePendingTaskTimeout) (void); // gets called on timeout to end the pending task
23 void CommandLinePendingTaskBreak(void); // this manually triggers a timeout
24 
25 #endif /* COMMANDLINE_H_ */
diff --git a/Doc/Doxygen/html/_command_line_8txt.html b/Doc/Doxygen/html/_command_line_8txt.html index ec600b3..d7fc2ff 100644 --- a/Doc/Doxygen/html/_command_line_8txt.html +++ b/Doc/Doxygen/html/_command_line_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_commands_8h_source.html b/Doc/Doxygen/html/_commands_8h_source.html index 3f02d24..8a6047c 100644 --- a/Doc/Doxygen/html/_commands_8h_source.html +++ b/Doc/Doxygen/html/_commands_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 
2 
3 #ifndef COMMANDS_H_
4 #define COMMANDS_H_
5 
6 #include "../Common.h"
7 
8 #define MAX_COMMAND_LENGTH 16
9 #define MAX_STATUS_LENGTH 32
10 
11 
12 #define COMMAND_INFO_OK_ID 100
13 #define COMMAND_INFO_OK "OK"
14 #define COMMAND_INFO_OK_WITH_TEXT_ID 101
15 #define COMMAND_INFO_OK_WITH_TEXT "OK WITH TEXT"
16 #define COMMAND_INFO_XMODEM_WAIT_ID 110
17 #define COMMAND_INFO_XMODEM_WAIT "WAITING FOR XMODEM"
18 #define COMMAND_INFO_FALSE_ID 120
19 #define COMMAND_INFO_FALSE "FALSE"
20 #define COMMAND_INFO_TRUE_ID 121
21 #define COMMAND_INFO_TRUE "TRUE"
22 #define COMMAND_ERR_UNKNOWN_CMD_ID 200
23 #define COMMAND_ERR_UNKNOWN_CMD "UNKNOWN COMMAND"
24 #define COMMAND_ERR_INVALID_USAGE_ID 201
25 #define COMMAND_ERR_INVALID_USAGE "INVALID COMMAND USAGE"
26 #define COMMAND_ERR_INVALID_PARAM_ID 202
27 #define COMMAND_ERR_INVALID_PARAM "INVALID PARAMETER"
28 #define COMMAND_ERR_TIMEOUT_ID 203
29 #define COMMAND_ERR_TIMEOUT "TIMEOUT"
30 #define TIMEOUT_COMMAND 255 // this is just for the CommandLine module to know that this is a timeout command
31 
32 
33 #define COMMAND_CHAR_TRUE '1'
34 #define COMMAND_CHAR_FALSE '0'
35 #define COMMAND_CHAR_SUGGEST '?' /* <CMD>=? for help */
36 
37 #define COMMAND_UID_BUFSIZE 32
38 
39 #define COMMAND_IS_SUGGEST_STRING(x) ( ((x)[0] == COMMAND_CHAR_SUGGEST) && ((x)[1] == '\0') )
40 
41 typedef uint8_t CommandStatusIdType;
42 typedef const char CommandStatusMessageType[MAX_STATUS_LENGTH];
43 
44 typedef CommandStatusIdType (*CommandExecFuncType) (char* OutMessage);
45 typedef CommandStatusIdType (*CommandExecParamFuncType) (char* OutMessage, const char* InParams);
46 typedef CommandStatusIdType (*CommandSetFuncType) (char* OutMessage, const char* InParam);
47 typedef CommandStatusIdType (*CommandGetFuncType) (char* OutParam);
48 
49 typedef struct {
50  char Command[MAX_COMMAND_LENGTH];
51  CommandExecFuncType ExecFunc;
52  CommandExecParamFuncType ExecParamFunc;
53  CommandSetFuncType SetFunc;
54  CommandGetFuncType GetFunc;
55 } CommandEntryType;
56 
57 #define COMMAND_VERSION "VERSION"
58 CommandStatusIdType CommandGetVersion(char* OutParam);
59 
60 #define COMMAND_CONFIG "CONFIG"
61 CommandStatusIdType CommandGetConfig(char* OutParam);
62 CommandStatusIdType CommandSetConfig(char* OutMessage, const char* InParam);
63 
64 #define COMMAND_UID "UID"
65 #define COMMAND_UID_RANDOM "RANDOM"
66 CommandStatusIdType CommandGetUid(char* OutParam);
67 CommandStatusIdType CommandSetUid(char* OutMessage, const char* InParam);
68 
69 #define COMMAND_READONLY "READONLY"
70 CommandStatusIdType CommandGetReadOnly(char* OutParam);
71 CommandStatusIdType CommandSetReadOnly(char* OutMessage, const char* InParam);
72 
73 #define COMMAND_UPLOAD "UPLOAD"
74 CommandStatusIdType CommandExecUpload(char* OutMessage);
75 
76 #define COMMAND_DOWNLOAD "DOWNLOAD"
77 CommandStatusIdType CommandExecDownload(char* OutMessage);
78 
79 #define COMMAND_RESET "RESET"
80 CommandStatusIdType CommandExecReset(char* OutMessage);
81 
82 #define COMMAND_UPGRADE "UPGRADE"
83 CommandStatusIdType CommandExecUpgrade(char* OutMessage);
84 
85 #define COMMAND_MEMSIZE "MEMSIZE"
86 CommandStatusIdType CommandGetMemSize(char* OutParam);
87 
88 #define COMMAND_UIDSIZE "UIDSIZE"
89 CommandStatusIdType CommandGetUidSize(char* OutParam);
90 
91 #define COMMAND_RBUTTON "RBUTTON"
92 CommandStatusIdType CommandGetRButton(char* OutParam);
93 CommandStatusIdType CommandSetRButton(char* OutMessage, const char* InParam);
94 
95 #define COMMAND_RBUTTON_LONG "RBUTTON_LONG"
96 CommandStatusIdType CommandGetRButtonLong(char* OutParam);
97 CommandStatusIdType CommandSetRButtonLong(char* OutMessage, const char* InParam);
98 
99 #define COMMAND_LBUTTON "LBUTTON"
100 CommandStatusIdType CommandGetLButton(char* OutParam);
101 CommandStatusIdType CommandSetLButton(char* OutMessage, const char* InParam);
102 
103 #define COMMAND_LBUTTON_LONG "LBUTTON_LONG"
104 CommandStatusIdType CommandGetLButtonLong(char* OutParam);
105 CommandStatusIdType CommandSetLButtonLong(char* OutMessage, const char* InParam);
106 
107 
108 #define COMMAND_LEDGREEN "LEDGREEN"
109 CommandStatusIdType CommandGetLedGreen(char* OutParam);
110 CommandStatusIdType CommandSetLedGreen(char* OutMessage, const char* InParam);
111 
112 #define COMMAND_LEDRED "LEDRED"
113 CommandStatusIdType CommandGetLedRed(char* OutParam);
114 CommandStatusIdType CommandSetLedRed(char* OutMessage, const char* InParam);
115 
116 #define COMMAND_LOGMODE "LOGMODE"
117 CommandStatusIdType CommandGetLogMode(char* OutParam);
118 CommandStatusIdType CommandSetLogMode(char* OutMessage, const char* InParam);
119 
120 #define COMMAND_LOGMEM "LOGMEM"
121 CommandStatusIdType CommandGetLogMem(char* OutParam);
122 
123 #define COMMAND_LOGDOWNLOAD "LOGDOWNLOAD"
124 CommandStatusIdType CommandExecLogDownload(char* OutMessage);
125 
126 #define COMMAND_STORELOG "LOGSTORE"
127 CommandStatusIdType CommandExecStoreLog(char* OutMessage);
128 
129 #define COMMAND_LOGCLEAR "LOGCLEAR"
130 CommandStatusIdType CommandExecLogClear(char* OutMessage);
131 
132 #define COMMAND_SETTING "SETTING"
133 CommandStatusIdType CommandGetSetting(char* OutParam);
134 CommandStatusIdType CommandSetSetting(char* OutMessage, const char* InParam);
135 
136 #define COMMAND_CLEAR "CLEAR"
137 CommandStatusIdType CommandExecClear(char* OutMessage);
138 
139 #define COMMAND_STORE "STORE"
140 CommandStatusIdType CommandExecStore(char* OutMessage);
141 
142 #define COMMAND_RECALL "RECALL"
143 CommandStatusIdType CommandExecRecall(char* OutMessage);
144 
145 #define COMMAND_CHARGING "CHARGING"
146 CommandStatusIdType CommandGetCharging(char* OutParam);
147 
148 #define COMMAND_HELP "HELP"
149 CommandStatusIdType CommandExecHelp(char* OutMessage);
150 
151 #define COMMAND_RSSI "RSSI"
152 CommandStatusIdType CommandGetRssi(char* OutParam);
153 
154 #define COMMAND_SYSTICK "SYSTICK"
155 CommandStatusIdType CommandGetSysTick(char* OutParam);
156 
157 #define COMMAND_SEND_RAW "SEND_RAW"
158 CommandStatusIdType CommandExecParamSendRaw(char* OutMessage, const char* InParams);
159 
160 #define COMMAND_SEND "SEND"
161 CommandStatusIdType CommandExecParamSend(char* OutMessage, const char* InParams);
162 
163 #define COMMAND_GETUID "GETUID"
164 CommandStatusIdType CommandExecGetUid(char* OutMessage);
165 
166 #define COMMAND_DUMP_MFU "DUMP_MFU"
167 CommandStatusIdType CommandExecDumpMFU(char* OutMessage);
168 
169 #define COMMAND_IDENTIFY_CARD "IDENTIFY"
170 CommandStatusIdType CommandExecIdentifyCard(char* OutMessage);
171 
172 #define COMMAND_TIMEOUT "TIMEOUT"
173 CommandStatusIdType CommandGetTimeout(char* OutMessage);
174 CommandStatusIdType CommandSetTimeout(char* OutMessage, const char* InParam);
175 
176 #define COMMAND_THRESHOLD "THRESHOLD"
177 CommandStatusIdType CommandGetThreshold(char* OutParam);
178 CommandStatusIdType CommandSetThreshold(char* OutMessage, const char* InParam);
179 
180 #define COMMAND_FIELD "FIELD"
181 CommandStatusIdType CommandSetField(char* OutMessage, const char* InParam);
182 CommandStatusIdType CommandGetField(char* OutMessage);
183 
184 #define COMMAND_LIST_END ""
185 /* Defines the end of command list. This is no actual command */
186 
187 #endif /* COMMANDS_H_ */
diff --git a/Doc/Doxygen/html/_common_8h_source.html b/Doc/Doxygen/html/_common_8h_source.html index 283ba0e..dac4861 100644 --- a/Doc/Doxygen/html/_common_8h_source.html +++ b/Doc/Doxygen/html/_common_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Common.h
3  *
4  * Created on: 20.03.2013
5  * Author: skuser
6  */
7 
8 #ifndef COMMON_H_
9 #define COMMON_H_
10 
11 #include <stdio.h>
12 #include <stdbool.h>
13 #include <util/parity.h>
14 #include <util/delay.h>
15 #include <avr/pgmspace.h>
16 #include <avr/io.h>
17 
18 #define ODD_PARITY(Value) OddParityBit(Value)//(parity_even_bit(Value) ? 0 : 1)
19 
20 #define INLINE \
21  static inline __attribute__((always_inline))
22 
23 #define NIBBLE_TO_HEXCHAR(x) ( (x) < 0x0A ? (x) + '0' : (x) + 'A' - 0x0A )
24 #define HEXCHAR_TO_NIBBLE(x) ( (x) < 'A' ? (x) - '0' : (x) - 'A' + 0x0A )
25 #define VALID_HEXCHAR(x) ( ( (x) >= '0' && (x) <= '9' ) || ( (x) >= 'A' && (x) <= 'F' ) )
26 #define MIN(x,y) ( (x) < (y) ? (x) : (y) )
27 #define MAX(x,y) ( (x) > (y) ? (x) : (y) )
28 #define SYSTICK_DIFF(since) ((uint16_t) (SystemGetSysTick() - since))
29 #define SYSTICK_DIFF_100MS(since) (SYSTICK_DIFF(since) / 100)
30 
31 #define BITS_PER_BYTE 8
32 
33 uint16_t BufferToHexString(char* HexOut, uint16_t MaxChars, const void* Buffer, uint16_t ByteCount);
34 uint16_t HexStringToBuffer(void* Buffer, uint16_t MaxBytes, const char* HexIn);
35 
36 INLINE uint8_t BitReverseByte(uint8_t Byte)
37 {
38  extern const uint8_t PROGMEM BitReverseByteTable[];
39 
40  return pgm_read_byte(&BitReverseByteTable[Byte]);
41 }
42 
43 INLINE uint8_t OddParityBit(uint8_t Byte)
44 {
45  extern const uint8_t PROGMEM OddParityByteTable[];
46 
47  return pgm_read_byte(&OddParityByteTable[Byte]);
48 }
49 
50 INLINE uint8_t StringLength(const char* Str, uint8_t MaxLen)
51 {
52  uint8_t StrLen = 0;
53 
54  while(MaxLen > 0) {
55  if (*Str++ == '\0')
56  break;
57 
58  MaxLen--;
59  StrLen++;
60  }
61 
62  return StrLen;
63 }
64 
65 #endif /* COMMON_H_ */
diff --git a/Doc/Doxygen/html/_configuration_8h.html b/Doc/Doxygen/html/_configuration_8h.html index 7c10dd6..81c8a9a 100644 --- a/Doc/Doxygen/html/_configuration_8h.html +++ b/Doc/Doxygen/html/_configuration_8h.html @@ -104,7 +104,7 @@ Classes diff --git a/Doc/Doxygen/html/_configuration_8h_source.html b/Doc/Doxygen/html/_configuration_8h_source.html index e3dd132..3157971 100644 --- a/Doc/Doxygen/html/_configuration_8h_source.html +++ b/Doc/Doxygen/html/_configuration_8h_source.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_configurations_8txt.html b/Doc/Doxygen/html/_configurations_8txt.html index 92038b6..04d4df5 100644 --- a/Doc/Doxygen/html/_configurations_8txt.html +++ b/Doc/Doxygen/html/_configurations_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_crypto1_8h_source.html b/Doc/Doxygen/html/_crypto1_8h_source.html index b782c2a..2c8af7a 100644 --- a/Doc/Doxygen/html/_crypto1_8h_source.html +++ b/Doc/Doxygen/html/_crypto1_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef CRYPTO1_H
2 #define CRYPTO1_H
3 
4 #include <stdint.h>
5 #include <stdbool.h>
6 
7 /* Gets the current keystream-bit, without shifting the internal LFSR */
8 uint8_t Crypto1FilterOutput(void);
9 
10 /* Set up Crypto1 cipher using the given Key, Uid and CardNonce. Also encrypts
11  * the CardNonce in-place while in non-linear mode. */
12 void Crypto1Setup(uint8_t Key[6], uint8_t Uid[4], uint8_t CardNonce[4]);
13 
14 /* Set up Crypto1 cipher using the given Key, Uid and CardNonce. Nested indicates
15  * whether the CardNonce is encrypted (true) or not (false).
16  * If the CardNonce is encrypted, it will we decrypted in-place. If not, it will
17  * be fed into the LFSR, but remains unchanged. */
18 void Crypto1SetupReader(uint8_t Key[6], uint8_t Uid[4], uint8_t CardNonce[4], bool Nested);
19 
20 /* Load the decrypted ReaderNonce into the Crypto1 state LFSR */
21 void Crypto1Auth(uint8_t EncryptedReaderNonce[4]);
22 
23 /* Generate 8 Bits of key stream */
24 uint8_t Crypto1Byte(void);
25 
26 /* Generate 4 Bits of key stream */
27 uint8_t Crypto1Nibble(void);
28 
29 /* Execute 'ClockCount' cycles on the PRNG state 'State' */
30 void Crypto1PRNG(uint8_t State[4], uint16_t ClockCount);
31 
32 /* Encrypts buffer with consideration of parity bits */
33 void Crypto1EncryptWithParity(uint8_t * Buffer, uint16_t BitCount);
34 
35 /* Encrypts buffer with LFSR feedback within reader nonce and considers parity bits */
36 void Crypto1ReaderAuthWithParity(uint8_t PlainReaderAnswerWithParityBits[9]);
37 
38 #endif //CRYPTO1_H
diff --git a/Doc/Doxygen/html/_getting_started_8txt.html b/Doc/Doxygen/html/_getting_started_8txt.html index 37eaeea..a4301e2 100644 --- a/Doc/Doxygen/html/_getting_started_8txt.html +++ b/Doc/Doxygen/html/_getting_started_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_i_s_o14443-2_a_8h_source.html b/Doc/Doxygen/html/_i_s_o14443-2_a_8h_source.html index 08a979c..b9cfba2 100644 --- a/Doc/Doxygen/html/_i_s_o14443-2_a_8h_source.html +++ b/Doc/Doxygen/html/_i_s_o14443-2_a_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * ISO14443-2A.h
3  *
4  * Created on: 18.02.2013
5  * Author: skuser
6  */
7 
8 #ifndef ISO14443_2A_H_
9 #define ISO14443_2A_H_
10 
11 #include "Codec.h"
12 
13 #define ISO14443A_APP_NO_RESPONSE 0x0000
14 #define ISO14443A_APP_CUSTOM_PARITY 0x1000
15 
16 #define ISO14443A_BUFFER_PARITY_OFFSET (CODEC_BUFFER_SIZE/2)
17 
18 /* Codec Interface */
19 void ISO14443ACodecInit(void);
20 void ISO14443ACodecDeInit(void);
21 void ISO14443ACodecTask(void);
22 
23 
24 
25 #endif
diff --git a/Doc/Doxygen/html/_i_s_o14443-3_a_8h_source.html b/Doc/Doxygen/html/_i_s_o14443-3_a_8h_source.html index 1acea10..15dd227 100644 --- a/Doc/Doxygen/html/_i_s_o14443-3_a_8h_source.html +++ b/Doc/Doxygen/html/_i_s_o14443-3_a_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * ISO14443-2A.h
3  *
4  * Created on: 19.03.2013
5  * Author: skuser
6  */
7 
8 #ifndef ISO14443_3A_H_
9 #define ISO14443_3A_H_
10 
11 #include "../Common.h"
12 
13 #define ISO14443A_UID_SIZE_SINGLE 4 /* bytes */
14 #define ISO14443A_UID_SIZE_DOUBLE 7
15 #define ISO14443A_UID_SIZE_TRIPLE 10
16 
17 #define ISO14443A_CMD_REQA 0x26
18 #define ISO14443A_CMD_WUPA 0x52
19 #define ISO14443A_CMD_SELECT_CL1 0x93
20 #define ISO14443A_CMD_SELECT_CL2 0x95
21 #define ISO14443A_CMD_SELECT_CL3 0x97
22 #define ISO14443A_CMD_HLTA 0x50
23 
24 #define ISO14443A_NVB_AC_START 0x20
25 #define ISO14443A_NVB_AC_END 0x70
26 
27 #define ISO14443A_CL_UID_OFFSET 0
28 #define ISO14443A_CL_UID_SIZE 4
29 #define ISO14443A_CL_BCC_OFFSET 4
30 #define ISO14443A_CL_BCC_SIZE 1 /* Byte */
31 #define ISO14443A_CL_FRAME_SIZE ((ISO14443A_CL_UID_SIZE + ISO14443A_CL_BCC_SIZE) * 8) /* UID[N...N+3] || BCCN */
32 #define ISO14443A_SAK_INCOMPLETE 0x04
33 #define ISO14443A_SAK_COMPLETE_COMPLIANT 0x20
34 #define ISO14443A_SAK_COMPLETE_NOT_COMPLIANT 0x00
35 
36 #define ISO14443A_ATQA_FRAME_SIZE (2 * 8) /* Bit */
37 #define ISO14443A_SAK_FRAME_SIZE (3 * 8) /* Bit */
38 
39 #define ISO14443A_UID0_RANDOM 0x08
40 #define ISO14443A_UID0_CT 0x88
41 
42 #define ISO14443A_CRCA_SIZE 2
43 
44 #define ISO14443A_CALC_BCC(ByteBuffer) \
45  ( ByteBuffer[0] ^ ByteBuffer[1] ^ ByteBuffer[2] ^ ByteBuffer[3] )
46 
47 void ISO14443AAppendCRCA(void* Buffer, uint16_t ByteCount);
48 bool ISO14443ACheckCRCA(void* Buffer, uint16_t ByteCount);
49 
50 INLINE bool ISO14443ASelect(void* Buffer, uint16_t* BitCount, uint8_t* UidCL, uint8_t SAKValue);
51 INLINE bool ISO14443AWakeUp(void* Buffer, uint16_t* BitCount, uint16_t ATQAValue);
52 
53 INLINE
54 bool ISO14443ASelect(void* Buffer, uint16_t* BitCount, uint8_t* UidCL, uint8_t SAKValue)
55 {
56  uint8_t* DataPtr = (uint8_t*) Buffer;
57  uint8_t NVB = DataPtr[1];
58  //uint8_t CollisionByteCount = (NVB >> 4) & 0x0F;
59  //uint8_t CollisionBitCount = (NVB >> 0) & 0x0F;
60 
61  switch (NVB) {
62  case ISO14443A_NVB_AC_START:
63  /* Start of anticollision procedure.
64  * Send whole UID CLn + BCC */
65  DataPtr[0] = UidCL[0];
66  DataPtr[1] = UidCL[1];
67  DataPtr[2] = UidCL[2];
68  DataPtr[3] = UidCL[3];
69  DataPtr[4] = ISO14443A_CALC_BCC(DataPtr);
70 
71  *BitCount = ISO14443A_CL_FRAME_SIZE;
72 
73  return false;
74 
75  case ISO14443A_NVB_AC_END:
76  /* End of anticollision procedure.
77  * Send SAK CLn if we are selected. */
78  if ( (DataPtr[2] == UidCL[0]) &&
79  (DataPtr[3] == UidCL[1]) &&
80  (DataPtr[4] == UidCL[2]) &&
81  (DataPtr[5] == UidCL[3]) ) {
82 
83  DataPtr[0] = SAKValue;
84  ISO14443AAppendCRCA(Buffer, 1);
85 
86  *BitCount = ISO14443A_SAK_FRAME_SIZE;
87  return true;
88  } else {
89  /* We have not been selected. Don't send anything. */
90  *BitCount = 0;
91  return false;
92  }
93  default:
94  /* TODO: No anticollision supported */
95  *BitCount = 0;
96  return false;
97  }
98 }
99 
100 INLINE
101 bool ISO14443AWakeUp(void* Buffer, uint16_t* BitCount, uint16_t ATQAValue)
102 {
103  uint8_t* DataPtr = (uint8_t*) Buffer;
104 
105  if ( (DataPtr[0] == ISO14443A_CMD_REQA) || (DataPtr[0] == ISO14443A_CMD_WUPA) ){
106  DataPtr[0] = (ATQAValue >> 0) & 0x00FF;
107  DataPtr[1] = (ATQAValue >> 8) & 0x00FF;
108 
109  *BitCount = ISO14443A_ATQA_FRAME_SIZE;
110 
111  return true;
112  } else {
113  return false;
114  }
115 }
116 
117 #endif
diff --git a/Doc/Doxygen/html/_l_e_d_8h_source.html b/Doc/Doxygen/html/_l_e_d_8h_source.html index 0ffac75..f5dfdf1 100644 --- a/Doc/Doxygen/html/_l_e_d_8h_source.html +++ b/Doc/Doxygen/html/_l_e_d_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * LED.h
3  *
4  * Created on: 10.02.2013
5  * Author: skuser
6  */
7 
8 #ifndef LED_H
9 #define LED_H
10 
11 #include <avr/io.h>
12 #include "Common.h"
13 
14 #define LED_PORT PORTA
15 #define LED_GREEN PIN4_bm
16 #define LED_RED PIN3_bm
17 #define LED_MASK (LED_GREEN | LED_RED)
18 
19 typedef enum LEDFunctionEnum {
20  LED_NO_FUNC = 0, /* Don't light up the LED */
21  LED_POWERED, /* Light up the LED whenever the Chameleon is powered */
22 
23  LED_TERMINAL_CONN, /* A Terminal/USB connection has been established */
24  LED_TERMINAL_RXTX, /* There is traffic on the terminal */
25 
26  LED_SETTING_CHANGE, /* Outputs a blink code that shows the current setting */
27 
28  LED_MEMORY_STORED, /* Blink once when memory has been stored to flash */
29  LED_MEMORY_CHANGED, /* Switch LED on when card memory has changed compared to flash */
30 
31  LED_FIELD_DETECTED, /* Shows LED while a reader field is being detected or turned on by the chameleon itself */
32 
33  LED_CODEC_RX, /* Blink LED when receiving codec data */
34  LED_CODEC_TX, /* Blink LED when transmitting codec data */
35 
36  LED_LOG_MEM_FULL, /* Light up if log memory is full. */
37 
38  //TODO: LED_APP_SELECTED, /* Show LED while the correct UID has been selected and the application is active */
39  /* Has to be last element */
40  LED_FUNC_COUNT
41 } LEDHookEnum;
42 
43 typedef enum LEDActionEnum {
44  LED_NO_ACTION = 0x00,
45  LED_OFF = 0x10,
46  LED_ON = 0x11,
47  LED_TOGGLE = 0x12,
48  LED_PULSE = 0x13,
49  LED_BLINK = 0x20,
50  LED_BLINK_1X = 0x20,
51  LED_BLINK_2X, /* Have to be sequentially ordered */
52  LED_BLINK_3X,
53  LED_BLINK_4X,
54  LED_BLINK_5X,
55  LED_BLINK_6X,
56  LED_BLINK_7X,
57  LED_BLINK_8X,
58 } LEDActionEnum;
59 
60 
61 
62 void LEDInit(void);
63 void LEDTick(void);
64 
65 void LEDGetFuncList(char* List, uint16_t BufferSize);
66 void LEDSetFuncById(uint8_t Mask, LEDHookEnum Func);
67 void LEDGetFuncByName(uint8_t Mask, char* Function, uint16_t BufferSize);
68 bool LEDSetFuncByName(uint8_t Mask, const char* Function);
69 
70 #endif /* LED_H */
diff --git a/Doc/Doxygen/html/_l_e_d_8txt.html b/Doc/Doxygen/html/_l_e_d_8txt.html index daade40..9b6faf8 100644 --- a/Doc/Doxygen/html/_l_e_d_8txt.html +++ b/Doc/Doxygen/html/_l_e_d_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_l_e_d_hook_8h_source.html b/Doc/Doxygen/html/_l_e_d_hook_8h_source.html index 94471c5..073995d 100644 --- a/Doc/Doxygen/html/_l_e_d_hook_8h_source.html +++ b/Doc/Doxygen/html/_l_e_d_hook_8h_source.html @@ -93,7 +93,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_l_e_ds_8txt.html b/Doc/Doxygen/html/_l_e_ds_8txt.html index e2f029d..74c7bb5 100644 --- a/Doc/Doxygen/html/_l_e_ds_8txt.html +++ b/Doc/Doxygen/html/_l_e_ds_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_l_u_f_a_config_8h.html b/Doc/Doxygen/html/_l_u_f_a_config_8h.html index b007266..0c67084 100644 --- a/Doc/Doxygen/html/_l_u_f_a_config_8h.html +++ b/Doc/Doxygen/html/_l_u_f_a_config_8h.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_l_u_f_a_config_8h_source.html b/Doc/Doxygen/html/_l_u_f_a_config_8h_source.html index 65f59a7..b143438 100644 --- a/Doc/Doxygen/html/_l_u_f_a_config_8h_source.html +++ b/Doc/Doxygen/html/_l_u_f_a_config_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); Go to the documentation of this file.
1 /*
2  LUFA Library
3  Copyright (C) Dean Camera, 2012.
4 
5  dean [at] fourwalledcubicle [dot] com
6  www.lufa-lib.org
7 */
8 
9 /*
10  Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
11 
12  Permission to use, copy, modify, distribute, and sell this
13  software and its documentation for any purpose is hereby granted
14  without fee, provided that the above copyright notice appear in
15  all copies and that both that the copyright notice and this
16  permission notice and warranty disclaimer appear in supporting
17  documentation, and that the name of the author not be used in
18  advertising or publicity pertaining to distribution of the
19  software without specific, written prior permission.
20 
21  The author disclaim all warranties with regard to this
22  software, including all implied warranties of merchantability
23  and fitness. In no event shall the author be liable for any
24  special, indirect or consequential damages or any damages
25  whatsoever resulting from loss of use, data or profits, whether
26  in an action of contract, negligence or other tortious action,
27  arising out of or in connection with the use or performance of
28  this software.
29 */
30 
42 #ifndef _LUFA_CONFIG_H_
43 #define _LUFA_CONFIG_H_
44 
45  /* Non-USB Related Configuration Tokens: */
46 // #define DISABLE_TERMINAL_CODES
47 
48  /* USB Class Driver Related Tokens: */
49 // #define HID_HOST_BOOT_PROTOCOL_ONLY
50 // #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}
51 // #define HID_USAGE_STACK_DEPTH {Insert Value Here}
52 // #define HID_MAX_COLLECTIONS {Insert Value Here}
53 // #define HID_MAX_REPORTITEMS {Insert Value Here}
54 // #define HID_MAX_REPORT_IDS {Insert Value Here}
55 // #define NO_CLASS_DRIVER_AUTOFLUSH
56 
57  /* General USB Driver Related Tokens: */
58  #define USE_STATIC_OPTIONS \
59  (USB_OPT_BUSEVENT_PRIMED | USB_DEVICE_OPT_FULLSPEED | /*USB_OPT_PLLCLKSRC*/ USB_OPT_RC32MCLKSRC)
60  #define USB_DEVICE_ONLY
61 // #define USB_STREAM_TIMEOUT_MS {Insert Value Here}
62 // #define NO_LIMITED_CONTROLLER_CONNECT
63 // #define NO_SOF_EVENTS
64 
65  /* USB Device Mode Driver Related Tokens: */
66 // #define USE_RAM_DESCRIPTORS
67  #define USE_FLASH_DESCRIPTORS
68 // #define USE_EEPROM_DESCRIPTORS
69 // #define NO_INTERNAL_SERIAL
70  #define FIXED_CONTROL_ENDPOINT_SIZE 8
71 // #define DEVICE_STATE_AS_GPIOR {Insert Value Here}
72  #define FIXED_NUM_CONFIGURATIONS 1
73 // #define CONTROL_ONLY_DEVICE
74  #define MAX_ENDPOINT_INDEX 5
75 // #define NO_DEVICE_REMOTE_WAKEUP
76 // #define NO_DEVICE_SELF_POWER
77 
78 #endif
diff --git a/Doc/Doxygen/html/_l_u_f_a_descriptors_8c.html b/Doc/Doxygen/html/_l_u_f_a_descriptors_8c.html index 3bcb050..d1b1316 100644 --- a/Doc/Doxygen/html/_l_u_f_a_descriptors_8c.html +++ b/Doc/Doxygen/html/_l_u_f_a_descriptors_8c.html @@ -218,7 +218,7 @@ Variables diff --git a/Doc/Doxygen/html/_l_u_f_a_descriptors_8h.html b/Doc/Doxygen/html/_l_u_f_a_descriptors_8h.html index 16bb7ea..d3cdafc 100644 --- a/Doc/Doxygen/html/_l_u_f_a_descriptors_8h.html +++ b/Doc/Doxygen/html/_l_u_f_a_descriptors_8h.html @@ -226,7 +226,7 @@ Functions diff --git a/Doc/Doxygen/html/_l_u_f_a_descriptors_8h_source.html b/Doc/Doxygen/html/_l_u_f_a_descriptors_8h_source.html index 7d98772..f15e2ad 100644 --- a/Doc/Doxygen/html/_l_u_f_a_descriptors_8h_source.html +++ b/Doc/Doxygen/html/_l_u_f_a_descriptors_8h_source.html @@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_log_8h.html b/Doc/Doxygen/html/_log_8h.html index fdb1987..e28038b 100644 --- a/Doc/Doxygen/html/_log_8h.html +++ b/Doc/Doxygen/html/_log_8h.html @@ -183,7 +183,7 @@ Enumerations diff --git a/Doc/Doxygen/html/_log_8h_source.html b/Doc/Doxygen/html/_log_8h_source.html index e33f323..e1f08d5 100644 --- a/Doc/Doxygen/html/_log_8h_source.html +++ b/Doc/Doxygen/html/_log_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_log_8txt.html b/Doc/Doxygen/html/_log_8txt.html index d075585..b1a7631 100644 --- a/Doc/Doxygen/html/_log_8txt.html +++ b/Doc/Doxygen/html/_log_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_main_page_8txt.html b/Doc/Doxygen/html/_main_page_8txt.html index 4e79484..f35e48f 100644 --- a/Doc/Doxygen/html/_main_page_8txt.html +++ b/Doc/Doxygen/html/_main_page_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_map_8h_source.html b/Doc/Doxygen/html/_map_8h_source.html index 82ec57a..992e2fe 100644 --- a/Doc/Doxygen/html/_map_8h_source.html +++ b/Doc/Doxygen/html/_map_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Map.h
3  *
4  * Created on: 07.12.2014
5  * Author: sk
6  */
7 
8 #ifndef MAP_H_
9 #define MAP_H_
10 
11 #include <stdint.h>
12 #include <stdbool.h>
13 #include <avr/pgmspace.h>
14 
15 #define MAP_TEXT_BUF_SIZE 32
16 #define MAP_MAX_TEXT_SIZE (MAP_TEXT_BUF_SIZE - 1)
17 
18 typedef uint8_t MapIdType;
19 typedef const char* MapTextPtrType;
20 
21 const typedef struct {
22  MapIdType Id;
23  const char Text[MAP_TEXT_BUF_SIZE];
24 } MapEntryType;
25 
26 bool MapIdToText(const MapEntryType* MapPtr, uint8_t MapSize, MapIdType Id, char* Text, uint16_t MaxBufferSize);
27 bool MapTextToId(const MapEntryType* MapPtr, uint8_t MapSize, MapTextPtrType Text, MapIdType* IdPtr);
28 void MapToString(const MapEntryType* MapPtr, uint8_t MapSize, char* String, uint16_t MaxBufferSize);
29 
30 #endif /* MAP_H_ */
diff --git a/Doc/Doxygen/html/_memory_8h_source.html b/Doc/Doxygen/html/_memory_8h_source.html index da80ced..ad659fa 100644 --- a/Doc/Doxygen/html/_memory_8h_source.html +++ b/Doc/Doxygen/html/_memory_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Flash.h
3  *
4  * Created on: 20.03.2013
5  * Author: skuser
6  */
7 
8 #ifndef MEMORY_H_
9 #define MEMORY_H_
10 
11 #define MEMORY_SIZE (FLASH_DATA_SIZE) /* From makefile */
12 #define MEMORY_INIT_VALUE 0x00
13 #define MEMORY_SIZE_PER_SETTING 8192
14 
15 #ifndef __ASSEMBLER__
16 #include "Common.h"
17 
18 void MemoryInit(void);
19 void MemoryReadBlock(void* Buffer, uint16_t Address, uint16_t ByteCount);
20 void MemoryWriteBlock(const void* Buffer, uint16_t Address, uint16_t ByteCount);
21 void MemoryClear(void);
22 
23 
24 void MemoryRecall(void);
25 void MemoryStore(void);
26 
27 /* For use with XModem */
28 bool MemoryUploadBlock(void* Buffer, uint32_t BlockAddress, uint16_t ByteCount);
29 bool MemoryDownloadBlock(void* Buffer, uint32_t BlockAddress, uint16_t ByteCount);
30 
31 #endif /* __ASSEMBLER__ */
32 
33 #endif /* MEMORY_H_ */
diff --git a/Doc/Doxygen/html/_mifare_classic_8h_source.html b/Doc/Doxygen/html/_mifare_classic_8h_source.html index 9b7d1bd..2947268 100644 --- a/Doc/Doxygen/html/_mifare_classic_8h_source.html +++ b/Doc/Doxygen/html/_mifare_classic_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * MifareClassic.h
3  *
4  * Created on: 13.05.2013
5  * Author: skuser
6  */
7 
8 #ifndef MIFARECLASSIC_H_
9 #define MIFARECLASSIC_H_
10 
11 #include "Application.h"
12 #include "ISO14443-3A.h"
13 
14 #define MIFARE_CLASSIC_UID_SIZE ISO14443A_UID_SIZE_SINGLE
15 #define MIFARE_CLASSIC_1K_MEM_SIZE 1024
16 #define MIFARE_CLASSIC_4K_MEM_SIZE 4096
17 
18 void MifareClassicAppInit1K(void);
19 void MifareClassicAppInit4K(void);
20 void MifareClassicAppReset(void);
21 void MifareClassicAppTask(void);
22 
23 uint16_t MifareClassicAppProcess(uint8_t* Buffer, uint16_t BitCount);
24 
25 void MifareClassicGetUid(ConfigurationUidType Uid);
26 void MifareClassicSetUid(ConfigurationUidType Uid);
27 
28 
29 #endif /* MIFARECLASSIC_H_ */
diff --git a/Doc/Doxygen/html/_mifare_ultralight_8h_source.html b/Doc/Doxygen/html/_mifare_ultralight_8h_source.html index cf6631e..9a61486 100644 --- a/Doc/Doxygen/html/_mifare_ultralight_8h_source.html +++ b/Doc/Doxygen/html/_mifare_ultralight_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * MifareUltralight.h
3  *
4  * Created on: 20.03.2013
5  * Author: skuser
6  */
7 
8 #ifndef MIFAREULTRALIGHT_H_
9 #define MIFAREULTRALIGHT_H_
10 
11 #include "Application.h"
12 #include "ISO14443-3A.h"
13 
14 #define MIFARE_ULTRALIGHT_UID_SIZE ISO14443A_UID_SIZE_DOUBLE
15 #define MIFARE_ULTRALIGHT_MEM_SIZE 64
16 
17 void MifareUltralightAppInit(void);
18 void MifareUltralightAppReset(void);
19 void MifareUltralightAppTask(void);
20 
21 uint16_t MifareUltralightAppProcess(uint8_t* Buffer, uint16_t BitCount);
22 
23 void MifareUltralightGetUid(ConfigurationUidType Uid);
24 void MifareUltralightSetUid(ConfigurationUidType Uid);
25 
26 
27 
28 #endif /* MIFAREULTRALIGHT_H_ */
diff --git a/Doc/Doxygen/html/_random_8h_source.html b/Doc/Doxygen/html/_random_8h_source.html index 2335fae..ba497da 100644 --- a/Doc/Doxygen/html/_random_8h_source.html +++ b/Doc/Doxygen/html/_random_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Random.h
3  *
4  * Created on: 22.03.2013
5  * Author: skuser
6  */
7 
8 #ifndef RANDOM_H_
9 #define RANDOM_H_
10 
11 #include "Common.h"
12 
13 void RandomInit(void);
14 uint8_t RandomGetByte(void);
15 void RandomGetBuffer(void* Buffer, uint8_t ByteCount);
16 void RandomTick(void);
17 
18 #endif /* RANDOM_H_ */
diff --git a/Doc/Doxygen/html/_reader14443-2_a_8h_source.html b/Doc/Doxygen/html/_reader14443-2_a_8h_source.html index 42a2e95..79bb453 100644 --- a/Doc/Doxygen/html/_reader14443-2_a_8h_source.html +++ b/Doc/Doxygen/html/_reader14443-2_a_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * Reader14443-2A.h
3  *
4  * Created on: 26.08.2014
5  * Author: sk
6  */
7 
8 #ifndef READER14443_2A_H_
9 #define READER14443_2A_H_
10 
11 #include "Codec.h"
12 #include "Terminal/CommandLine.h"
13 
14 /* Codec Interface */
15 void Reader14443ACodecInit(void);
16 void Reader14443ACodecDeInit(void);
17 void Reader14443ACodecTask(void);
18 
19 /* Application Interface */
20 void Reader14443ACodecStart(void);
21 void Reader14443ACodecReset(void);
22 
23 #endif /* READER14443_2A_H_ */
diff --git a/Doc/Doxygen/html/_reader14443_a_8h_source.html b/Doc/Doxygen/html/_reader14443_a_8h_source.html index 5085f8d..8e559aa 100644 --- a/Doc/Doxygen/html/_reader14443_a_8h_source.html +++ b/Doc/Doxygen/html/_reader14443_a_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef READER14443A_H
2 #define READER14443A_H
3 
4 #include "Application.h"
5 #include "Codec/Codec.h"
6 
7 #define CRC_INIT 0x6363
8 
9 uint8_t ReaderSendBuffer[CODEC_BUFFER_SIZE];
10 uint16_t ReaderSendBitCount;
11 
12 void Reader14443AAppInit(void);
13 void Reader14443AAppReset(void);
14 void Reader14443AAppTask(void);
15 void Reader14443AAppTick(void);
16 void Reader14443AAppTimeout(void);
17 
18 uint16_t Reader14443AAppProcess(uint8_t* Buffer, uint16_t BitCount);
19 
20 uint16_t addParityBits(uint8_t * Buffer, uint16_t bits);
21 uint16_t removeParityBits(uint8_t * Buffer, uint16_t BitCount);
22 uint16_t removeSOC(uint8_t * Buffer, uint16_t BitCount);
23 bool checkParityBits(uint8_t * Buffer, uint16_t BitCount);
24 uint16_t ISO14443_CRCA(uint8_t * Buffer, uint8_t ByteCount);
25 
26 typedef enum {
27  Reader14443_Do_Nothing,
28  Reader14443_Send,
29  Reader14443_Send_Raw,
30  Reader14443_Get_UID,
31  Reader14443_Read_MF_Ultralight,
32  Reader14443_Indentify
33 } Reader14443Command;
34 
35 
36 #endif //READER14443A_H
diff --git a/Doc/Doxygen/html/_reader_8txt.html b/Doc/Doxygen/html/_reader_8txt.html index 1e24fd2..7379547 100644 --- a/Doc/Doxygen/html/_reader_8txt.html +++ b/Doc/Doxygen/html/_reader_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_settings_8h.html b/Doc/Doxygen/html/_settings_8h.html index f6918a3..8e208b2 100644 --- a/Doc/Doxygen/html/_settings_8h.html +++ b/Doc/Doxygen/html/_settings_8h.html @@ -107,7 +107,7 @@ Classes diff --git a/Doc/Doxygen/html/_settings_8h_source.html b/Doc/Doxygen/html/_settings_8h_source.html index d292ed7..0ed037a 100644 --- a/Doc/Doxygen/html/_settings_8h_source.html +++ b/Doc/Doxygen/html/_settings_8h_source.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_settings_8txt.html b/Doc/Doxygen/html/_settings_8txt.html index 1172c17..c1fd18a 100644 --- a/Doc/Doxygen/html/_settings_8txt.html +++ b/Doc/Doxygen/html/_settings_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_system_8h_source.html b/Doc/Doxygen/html/_system_8h_source.html index 7cfa735..f4e99d6 100644 --- a/Doc/Doxygen/html/_system_8h_source.html +++ b/Doc/Doxygen/html/_system_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * System.h
3  *
4  * Created on: 10.02.2013
5  * Author: skuser
6  */
7 
8 #ifndef SYSTEM_H
9 #define SYSTEM_H
10 
11 #include <avr/io.h>
12 #include <avr/pgmspace.h>
13 #include <avr/interrupt.h>
14 #include <stddef.h>
15 #include <stdbool.h>
16 #include "Common.h"
17 
18 #define F_RTC 1000
19 #define SYSTEM_MILLISECONDS_TO_RTC_CYCLES(x) \
20  ( (uint16_t) ( (double) F_RTC * x / 1E3 + 0.5) )
21 
22 #define SYSTEM_TICK_WIDTH 7 /* Bits */
23 #define SYSTEM_TICK_PERIOD (1<<7)
24 #define SYSTEM_TICK_MS (SYSTEM_TICK_PERIOD)
25 #define SYSTEM_TICK_FREQ (1000 / SYSTEM_TICK_PERIOD)
26 
27 #define SYSTEM_SMODE_PSAVE SLEEP_SMODE_PSAVE_gc
28 #define SYSTEM_SMODE_IDLE SLEEP_SMODE_IDLE_gc
29 
30 /* Use GPIORE and GPIORF as global tick register */
31 #define SYSTEM_TICK_REGISTER (*((volatile uint16_t*) &GPIORE))
32 
33 void SystemInit(void);
34 void SystemReset(void);
35 void SystemEnterBootloader(void);
36 void SystemStartUSBClock(void);
37 void SystemStopUSBClock(void);
38 void SystemInterruptInit(void);
39 INLINE bool SystemTick100ms(void);
40 
41 INLINE bool SystemTick100ms(void)
42 {
43  if (RTC.INTFLAGS & RTC_COMPIF_bm) {
44  while(RTC.STATUS & RTC_SYNCBUSY_bm)
45  ;
46 
47  RTC.INTFLAGS = RTC_COMPIF_bm;
48  return true;
49  }
50 
51  return false;
52 }
53 
54 INLINE uint16_t SystemGetSysTick(void) {
55  return SYSTEM_TICK_REGISTER | RTC.CNT;
56 }
57 
58 #endif /* SYSTEM_H */
diff --git a/Doc/Doxygen/html/_terminal_8h_source.html b/Doc/Doxygen/html/_terminal_8h_source.html index d0eac08..6a31cf8 100644 --- a/Doc/Doxygen/html/_terminal_8h_source.html +++ b/Doc/Doxygen/html/_terminal_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * CommandLine.h
3  *
4  * Created on: 10.02.2013
5  * Author: skuser
6  */
7 
8 #ifndef TERMINAL_H_
9 #define TERMINAL_H_
10 
11 #include "../Common.h"
12 #include "../LUFA/Drivers/USB/USB.h"
13 #include "XModem.h"
14 #include "CommandLine.h"
15 
16 #define TERMINAL_VBUS_PORT PORTD
17 #define TERMINAL_VBUS_MASK PIN5_bm
18 
19 #define TERMINAL_BUFFER_SIZE 512
20 
21 typedef enum {
22  TERMINAL_UNINITIALIZED,
23  TERMINAL_INITIALIZING,
24  TERMINAL_INITIALIZED,
25  TERMINAL_UNITIALIZING
26 } TerminalStateEnum;
27 
28 extern uint8_t TerminalBuffer[TERMINAL_BUFFER_SIZE];
29 extern USB_ClassInfo_CDC_Device_t TerminalHandle;
30 extern TerminalStateEnum TerminalState;
31 
32 void TerminalInit(void);
33 void TerminalTask(void);
34 void TerminalTick(void);
35 
36 /*void TerminalSendHex(void* Buffer, uint16_t ByteCount);*/
37 INLINE void TerminalSendByte(uint8_t Byte);
38 void TerminalSendBlock(const void* Buffer, uint16_t ByteCount);
39 
40 INLINE void TerminalSendChar(char c);
41 void TerminalSendString(const char* s);
42 void TerminalSendStringP(const char* s);
43 
44 void EVENT_USB_Device_Connect(void);
45 void EVENT_USB_Device_Disconnect(void);
46 void EVENT_USB_Device_ConfigurationChanged(void);
47 void EVENT_USB_Device_ControlRequest(void);
48 
49 INLINE void TerminalSendChar(char c) { CDC_Device_SendByte(&TerminalHandle, c); }
50 INLINE void TerminalSendByte(uint8_t Byte) { CDC_Device_SendByte(&TerminalHandle, Byte); }
51 
52 #endif /* TERMINAL_H_ */
diff --git a/Doc/Doxygen/html/_uploading_downloading_8txt.html b/Doc/Doxygen/html/_uploading_downloading_8txt.html index caa1ad0..46f3f53 100644 --- a/Doc/Doxygen/html/_uploading_downloading_8txt.html +++ b/Doc/Doxygen/html/_uploading_downloading_8txt.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/_x_modem_8h_source.html b/Doc/Doxygen/html/_x_modem_8h_source.html index 9d50af0..29d1610 100644 --- a/Doc/Doxygen/html/_x_modem_8h_source.html +++ b/Doc/Doxygen/html/_x_modem_8h_source.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 /*
2  * TerminalXModem.h
3  *
4  * Created on: 22.03.2013
5  * Author: skuser
6  */
7 
8 #ifndef XMODEM_H_
9 #define XMODEM_H_
10 
11 #include "../Common.h"
12 
13 typedef bool (*XModemCallbackType) (void* ByteBuffer, uint32_t BlockAddress, uint16_t ByteCount);
14 
15 void XModemReceive(XModemCallbackType CallbackFunc);
16 void XModemSend(XModemCallbackType CallbackFunc);
17 
18 bool XModemProcessByte(uint8_t Byte);
19 void XModemTick(void);
20 
21 #endif /* TERMINALXMODEM_H_ */
diff --git a/Doc/Doxygen/html/annotated.html b/Doc/Doxygen/html/annotated.html index f8e3253..8c1d5de 100644 --- a/Doc/Doxygen/html/annotated.html +++ b/Doc/Doxygen/html/annotated.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/classes.html b/Doc/Doxygen/html/classes.html index fe40ff4..31610da 100644 --- a/Doc/Doxygen/html/classes.html +++ b/Doc/Doxygen/html/classes.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/dir_5de29d499bb29a41092979d00d22c134.html b/Doc/Doxygen/html/dir_5de29d499bb29a41092979d00d22c134.html index d4b3384..a215da6 100644 --- a/Doc/Doxygen/html/dir_5de29d499bb29a41092979d00d22c134.html +++ b/Doc/Doxygen/html/dir_5de29d499bb29a41092979d00d22c134.html @@ -96,7 +96,7 @@ Files diff --git a/Doc/Doxygen/html/dir_74b6a3b63f61c160c0f14b7a283a4c9b.html b/Doc/Doxygen/html/dir_74b6a3b63f61c160c0f14b7a283a4c9b.html index e34bf7c..f228c8f 100644 --- a/Doc/Doxygen/html/dir_74b6a3b63f61c160c0f14b7a283a4c9b.html +++ b/Doc/Doxygen/html/dir_74b6a3b63f61c160c0f14b7a283a4c9b.html @@ -96,7 +96,7 @@ Directories diff --git a/Doc/Doxygen/html/dir_8465ec698d237f801ae9966d4551fcfa.html b/Doc/Doxygen/html/dir_8465ec698d237f801ae9966d4551fcfa.html index 06f8f17..05d5a67 100644 --- a/Doc/Doxygen/html/dir_8465ec698d237f801ae9966d4551fcfa.html +++ b/Doc/Doxygen/html/dir_8465ec698d237f801ae9966d4551fcfa.html @@ -112,7 +112,7 @@ Files diff --git a/Doc/Doxygen/html/dir_ddeffaa734f77525428b0dd4068da9cb.html b/Doc/Doxygen/html/dir_ddeffaa734f77525428b0dd4068da9cb.html index 6ac2d34..964c5ca 100644 --- a/Doc/Doxygen/html/dir_ddeffaa734f77525428b0dd4068da9cb.html +++ b/Doc/Doxygen/html/dir_ddeffaa734f77525428b0dd4068da9cb.html @@ -96,7 +96,7 @@ Files diff --git a/Doc/Doxygen/html/dir_f5aab302412c0352d69464400cc5ee44.html b/Doc/Doxygen/html/dir_f5aab302412c0352d69464400cc5ee44.html index 84faa44..c991bed 100644 --- a/Doc/Doxygen/html/dir_f5aab302412c0352d69464400cc5ee44.html +++ b/Doc/Doxygen/html/dir_f5aab302412c0352d69464400cc5ee44.html @@ -96,7 +96,7 @@ Files diff --git a/Doc/Doxygen/html/files.html b/Doc/Doxygen/html/files.html index 458e8b2..d4d1881 100644 --- a/Doc/Doxygen/html/files.html +++ b/Doc/Doxygen/html/files.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/functions.html b/Doc/Doxygen/html/functions.html index ce418ee..2655cd5 100644 --- a/Doc/Doxygen/html/functions.html +++ b/Doc/Doxygen/html/functions.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/functions_vars.html b/Doc/Doxygen/html/functions_vars.html index 912eab5..47b6e3c 100644 --- a/Doc/Doxygen/html/functions_vars.html +++ b/Doc/Doxygen/html/functions_vars.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/globals.html b/Doc/Doxygen/html/globals.html index 05f3083..3fe85cf 100644 --- a/Doc/Doxygen/html/globals.html +++ b/Doc/Doxygen/html/globals.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/globals_defs.html b/Doc/Doxygen/html/globals_defs.html index dfc8194..d2b9b28 100644 --- a/Doc/Doxygen/html/globals_defs.html +++ b/Doc/Doxygen/html/globals_defs.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/globals_enum.html b/Doc/Doxygen/html/globals_enum.html index d6557fc..363a2a1 100644 --- a/Doc/Doxygen/html/globals_enum.html +++ b/Doc/Doxygen/html/globals_enum.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/globals_eval.html b/Doc/Doxygen/html/globals_eval.html index 974f1c8..206fd66 100644 --- a/Doc/Doxygen/html/globals_eval.html +++ b/Doc/Doxygen/html/globals_eval.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/globals_func.html b/Doc/Doxygen/html/globals_func.html index 59c2c5f..abbbe29 100644 --- a/Doc/Doxygen/html/globals_func.html +++ b/Doc/Doxygen/html/globals_func.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/globals_vars.html b/Doc/Doxygen/html/globals_vars.html index 421f19a..e78450e 100644 --- a/Doc/Doxygen/html/globals_vars.html +++ b/Doc/Doxygen/html/globals_vars.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/index.html b/Doc/Doxygen/html/index.html index bfff61f..1d18ab8 100644 --- a/Doc/Doxygen/html/index.html +++ b/Doc/Doxygen/html/index.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/pages.html b/Doc/Doxygen/html/pages.html index 5c8715b..f4d512d 100644 --- a/Doc/Doxygen/html/pages.html +++ b/Doc/Doxygen/html/pages.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/struct_configuration_type-members.html b/Doc/Doxygen/html/struct_configuration_type-members.html index e552eed..a956f17 100644 --- a/Doc/Doxygen/html/struct_configuration_type-members.html +++ b/Doc/Doxygen/html/struct_configuration_type-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/struct_configuration_type.html b/Doc/Doxygen/html/struct_configuration_type.html index 010cacd..c55ccf8 100644 --- a/Doc/Doxygen/html/struct_configuration_type.html +++ b/Doc/Doxygen/html/struct_configuration_type.html @@ -322,7 +322,7 @@ Public Attributes diff --git a/Doc/Doxygen/html/struct_settings_entry_type-members.html b/Doc/Doxygen/html/struct_settings_entry_type-members.html index a70241e..096d918 100644 --- a/Doc/Doxygen/html/struct_settings_entry_type-members.html +++ b/Doc/Doxygen/html/struct_settings_entry_type-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/struct_settings_entry_type.html b/Doc/Doxygen/html/struct_settings_entry_type.html index b42ba8f..7b3fa08 100644 --- a/Doc/Doxygen/html/struct_settings_entry_type.html +++ b/Doc/Doxygen/html/struct_settings_entry_type.html @@ -121,7 +121,7 @@ uint16_t  diff --git a/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t-members.html b/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t-members.html index d48697c..0fe31a1 100644 --- a/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t-members.html +++ b/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t-members.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t.html b/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t.html index 2404b02..dc4981e 100644 --- a/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t.html +++ b/Doc/Doxygen/html/struct_u_s_b___descriptor___configuration__t.html @@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Doc/DoxygenPages/GettingStarted.txt b/Doc/DoxygenPages/GettingStarted.txt index 8ae1511..43c401f 100644 --- a/Doc/DoxygenPages/GettingStarted.txt +++ b/Doc/DoxygenPages/GettingStarted.txt @@ -17,7 +17,7 @@ * * Step 2: Upgrade the Firmware * =========================== - * Once the ChameleonMini is in the bootloader, you can flash a new firmware, i.e., the files [Chameleon-Mini.hex](https://raw.githubusercontent.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Chameleon-Mini.hex) and the [Chameleon-Mini.hex](https://raw.githubusercontent.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Chameleon-Mini.eep), into the microcontroller. The source code directory contains these files precompiled but you can of course also compile the code yourself. Create a new folder and copy the two files into it. The following depends on your operating system: + * Once the ChameleonMini is in the bootloader, you can flash a new firmware, i.e., the files [Chameleon-Mini.hex](https://raw.githubusercontent.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Chameleon-Mini.hex) and the [Chameleon-Mini.eep](https://raw.githubusercontent.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Chameleon-Mini.eep), into the microcontroller. The source code directory contains these files precompiled but you can of course also compile the code yourself. Create a new folder and copy the two files into it. The following depends on your operating system: * * ## Upgrade Procedure for Linux Users ## * In order to upgrade the firmware under Linux you first have to install `avrdude`, e.g. under Ubuntu with the command `sudo apt-get install avra avrdude`. Then change to the directory where you have saved the hex and eep files and run `sudo avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i`.