Compare commits

..
Author SHA1 Message Date
Willok a00caff9a4 Commit new README.md 2019-12-26 20:29:23 +08:00
Georg Land 05fa61c7db Merge pull request #115 from tned73/MFClassic_fix2
MFClassic_patch fix for 4K card
2017-06-14 12:13:10 +02:00
TNEd 2b127e4d32 remove partial auth all2 2017-06-06 13:18:31 +02:00
TNEd e579bfb469 remove partial auth all 2017-06-06 13:15:12 +02:00
TNEd fc519b713d remove partial auth 2017-06-06 12:59:59 +02:00
TNEd 136920bcdd 4K fixes for authentication 2017-06-06 12:02:17 +02:00
Georg 82ce8f0dbf added MiFare Classic and Crypto1 patch -- thanks to jsrFDED 2017-01-17 10:53:21 +01:00
Georg Land 55fdc8dd48 Merge pull request #71 from doegox/fixdoc
SEND->SEND_RAW in Reader.txt
2016-11-21 12:45:30 +01:00
Georg Land 0d71dbf47d Merge pull request #74 from dev-zzo/pr-fix-chamlog2
chamlog: ensure it works on Python 2 and 3; take 2
2016-11-21 12:38:46 +01:00
Timo Kasper 45f5f9c28e webshop 2016-11-11 23:51:54 +01:00
dev-zzo 944a22cb37 chamlog: ensure it works on Python 2 and 3; take 2 2016-11-02 22:33:35 +01:00
Philippe Teuwen f65656ca34 SEND->SEND_RAW in Reader.txt 2016-10-29 15:58:45 +02:00
Georg Land 0d2f79dec2 Merge pull request #57 from doegox/move-fw
Move latest firmware images in a subdirectory
2016-10-28 16:55:26 +02:00
Georg fee143ffe5 doxygen update + Driver directory rename 2016-10-28 16:54:19 +02:00
Georg Land 0fffe429f0 Merge pull request #61 from 0x715C/master
Added link to udev rule in /Doc/DoxygenPages/GettingStarted.txt
2016-10-28 16:43:50 +02:00
Georg Land 4ca7c6e2b4 Update README.md 2016-10-28 16:38:19 +02:00
Georg Land 4ff5b61d01 Merge pull request #66 from dev-zzo/pr-arraycount
employ a macro to compute element counts in arrays
2016-10-28 16:35:24 +02:00
Georg Land 62d2157819 Merge pull request #59 from doegox/disable-mm
udev rules: tell Modem Manager to ignore ChameleonMini
2016-10-28 16:30:54 +02:00
dev_zzo ab3b4f21ea employ a macro to compute element counts in arrays 2016-10-28 10:55:46 +02:00
Georg Land e3369d5d6a Merge pull request #54 from doegox/pad-xmodem
chamtool xmodem: pad small dumps
2016-10-26 12:58:21 +02:00
Karl Lensson 27dc2bb411 Added link to udev rule in /Doc/DoxygenPages/GettingStarted.txt 2016-10-26 21:26:56 +11:00
Philippe Teuwen 884740705b udev rules: tell Modem Manager to ignore ChameleonMini 2016-10-26 11:46:36 +02:00
Philippe Teuwen e000833a3c Add makefile target to program directly the latest official firmware 2016-10-26 10:43:15 +02:00
Philippe Teuwen 21eba2b5bb Move latest firmware images is a subdirectory 2016-10-26 10:28:59 +02:00
Philippe Teuwen a5561e665f Fix pad type, thanks @ptu 2016-10-25 13:56:59 +02:00
Georg Land 9b159ee64a Merge pull request #53 from doegox/python-shebang
Fix python #! and exec rights
2016-10-25 09:14:54 +02:00
Philippe Teuwen 116c19d1c4 chamtool xmodem: pad small dumps 2016-10-25 08:29:03 +02:00
Philippe Teuwen c2cfe591ee Fix python #! and exec rights 2016-10-25 08:00:15 +02:00
Georg Land 046e289dc1 Merge pull request #40 from dev-zzo/master
fix build on Windows
2016-10-24 15:55:21 +02:00
dev_zzo f245b0ed2e fix build on Windows #3 2016-10-24 15:24:37 +02:00
Georg a636b63447 doxygen update 2016-10-24 14:44:06 +02:00
Georg eed02120e2 added new precompiled files with fixes 2016-10-24 13:58:06 +02:00
Georg Land 2005f469e0 Merge pull request #35 from dev-zzo/pr-const-crca
make CRCA checking const-correct
2016-10-24 13:55:40 +02:00
Georg Land 70587bc67a Merge pull request #49 from 0x715C/master
Added linux udev info to Doc/DoxygenPages/GettingStarted.txt
2016-10-24 13:35:25 +02:00
Georg Land 90c755972a Merge pull request #28 from leandre84/master
Fix wrong variable name in LEDSetFuncById() if LED_SETTING_GLOBAL disabled
2016-10-24 13:10:32 +02:00
Georg Land 8c3d2c3db2 Merge pull request #25 from mbaschnitzi/bugfix/version-oneline
Remove newlines from VERSION command. Fix for #16
2016-10-24 13:06:14 +02:00
Georg 2df383b9fa added anticollision 2016-10-24 12:57:25 +02:00
Georg 28db2471eb better handling of application reset in emulation 2016-10-24 12:54:42 +02:00
Georg 4c7b09962b improved the ISO14443A select protocol concerning HALT state 2016-10-24 11:19:46 +02:00
Georg Land 73d952717d Merge pull request #50 from doegox/Fix16
Handle HALT properly
2016-10-24 11:01:53 +02:00
Karl Lensson 369ecff322 Added linux udev info to Doc/DoxygenPages/GettingStarted.txt
Info on how to install Drivers/98-ChameleonMini.rules under linux.
2016-10-21 13:49:16 +11:00
Karl Lensson 642bf1b389 Merged branch master into master 2016-10-21 13:44:27 +11:00
Philippe Teuwen f56f270b82 Handle HALT properly 2016-10-20 17:35:58 +02:00
dev_zzo f591d03715 Merge remote-tracking branch 'upstream/master' 2016-10-20 15:59:07 +02:00
Georg c586b3dcd0 updated documentation: added note for Ubuntu 14.04 users 2016-10-19 12:36:40 +02:00
David Oswald 51178acaf6 Merge pull request #38 from cons0l3/issue18
added requirements.txt
2016-10-19 11:17:16 +01:00
David Oswald 09f8a00071 Merge pull request #48 from 0x715C/master
Added udev rule in Drivers/
2016-10-19 11:16:31 +01:00
Karl Lensson 3fad85d72b Added udev rule in Drivers/
Added udev rule, allowing non root users on a linux system(assuming udev is used) to open the serial port and talk with the chameleon.
Also included symlink in rule, so the interface always shows as /dev/chameleon.
2016-10-19 21:07:27 +11:00
Georg c3ef26bb46 updated Getting Started page (links to the files now do not result in text/plain pages) 2016-10-17 12:23:14 +02:00
dev_zzo 0ce5a6682b fix build on Windows #2 2016-10-17 12:20:48 +02:00
dev_zzo cf9d56dcc5 fix build on Windows 2016-10-17 11:50:22 +02:00
Georg 7599d6a680 doxygen update, recompiled after GettingStarted change 2016-10-17 11:29:35 +02:00
Carsten Steckel 452b47954f added requirements.txt with pyserial (most receent and not version pinned) 2016-10-17 09:01:20 +00:00
dev-zzo 3c99fefb6b make CRCA checking const-correct 2016-10-16 13:40:50 +02:00
Leandros 3789987425 Fix wrong parameter name in LEDSetFuncById() if LED_SETTING_GLOBAL disabled 2016-10-12 09:21:36 +02:00
Micha Ahrweiler e0529dde03 Remove newlines from VERSION command
The newlines from the VERSION command response are removed, as they differ from the specification of "101:OK WITH TEXT"
2016-10-11 13:11:01 +02:00
David Oswald bca913ca91 Update GettingStarted.txt
typos fixed
2016-10-08 13:29:25 +01:00
David Oswald eac7994070 Merge pull request #15 from uhei/patch-1
GettingStarted.txt: Add information for Mac OS
2016-10-08 13:28:12 +01:00
uhei 7fe88b4166 GettingStarted.txt: Add information for Mac OS 2016-10-08 13:19:11 +02:00
Chair for Embedded Security 79490e28f5 Update README.md 2016-10-08 00:08:59 +02:00
Georg ad2cbd5c7a doxygen update 2016-10-08 00:02:07 +02:00
Georg dcfb0b76ca added precompiled hex files 2016-10-07 23:53:00 +02:00
Georg f46f5b4fbf update to RevG 2016-10-07 23:44:50 +02:00
Georg 31c43c5bfa updated readme for RevE 2016-10-07 18:24:44 +02:00
Georg 5ac1cc7ed7 moved discontinued RevE files to own directory 2016-10-07 18:18:13 +02:00
Chair for Embedded Security 34ff98d571 Update README.md 2016-10-05 15:51:00 +02:00
Timo Kasper e038ae5f4d updated license to refer to emsec github 2015-07-30 17:32:10 +02:00
david-oswald b3f7afd335 Delete Chameleon-Mini.sym 2015-03-05 11:49:20 +01:00
david-oswald 70dd25f193 Delete Chameleon-Mini.map 2015-03-05 11:49:07 +01:00
david-oswald 67303530dc Delete Chameleon-Mini.lss
Removed unnecessary file
2015-03-05 11:49:01 +01:00
Chair for Embedded Security ca5606ca45 Update and rename Drivers to Drivers/ChameleonDriver.inf
Created driver .inf for new USB PID
2015-03-03 21:09:42 +01:00
Timo Kasper 36902b2487 Unique VID/PID, granted by Alexander Simonov, Thanks for supporting the project! 2015-03-04 02:17:14 +08:00
Timo Kasper 6ad9436a1e fix for AVR Toolchain 3.4.5 (WDT_PER_500CLK_gc) 2015-03-04 01:40:02 +08:00
Timo Kasper 49b2a19364 Major improvements (amongst others Mifare Ultralight and 7-Byte UID MF Plus support) and major bug fixes. Thanks to Simon KĂĽppers and Julius Schmalz. 2015-03-04 01:28:25 +08:00
Simon KĂĽppers d2acde526d Fixed a problem with the WDT_PER_500CLK_gc define in new Versions of the AVR Toolchain 2015-02-22 17:56:53 +01:00
Simon KĂĽppers 810fdeeded Corrected Typo in Makefile.
Thanks to Yves Fischer <yvesf-git@xapek.org>
2014-10-31 15:41:53 +01:00
Simon KĂĽppers c3c97f781a Update README.md 2014-10-03 16:04:45 +02:00
Simon KĂĽppers 6de7b9e757 Merge branch 'master' of https://github.com/emsec/ChameleonMini 2014-10-03 16:03:27 +02:00
Simon KĂĽppers 9ee7066015 Added pycham Tool by Chema GarcĂ­a to official repository thus making it an official tool for the Chameleon 2014-10-03 16:03:06 +02:00
Simon KĂĽppers 13fc6740b4 Merge branch 'master' of https://github.com/emsec/ChameleonMini 2014-10-03 16:01:58 +02:00
Simon KĂĽppers d11cc8e025 Merge branch 'master' of https://github.com/emsec/ChameleonMini 2014-10-03 15:58:40 +02:00
Simon KĂĽppers a06a457c08 Added pycham Tool by Chema GarcĂ­a to official repository thus making it an official tool for the Chameleon 2014-10-03 15:57:34 +02:00
Simon KĂĽppers 8f789654b4 This removes the warning of implicit declarations in Settings.c 2014-09-24 19:51:49 +02:00
Simon KĂĽppers 7b5573ef0f It looks like Atmel changed the naming of some defines in the avr-libc 2014-09-24 19:47:47 +02:00
Simon KĂĽppers b6b005c74a Due to some readers and/or card standards there might be problems with
the comparatively large write times of the external flash memory.
This is why we are looking for a better solution on this problem in the
next hardware revision.
Having the memory concept of future revisions in mind, we changed the
firmware from it's current memory concept, which is using the external
flash as a direct memory for reading/writing of card (or application)
memory contents to a different one.
With this new version, the memory that is directly accessed by the
application (through MemoryWrite and MemoryRead) now resides within the
local RAM of the microcontroller, thus limiting the maximum card size to
1KB.
However, the flash is still used to store multiple other card dumps,
that are now recalled and stored upon
  1) Changing the current setting to another card. This applies also to
using the CYCLE_SETTINGS button action.
  2) The newly introduced button actions MEM_RECALL and MEM_STORE

Consider this new concept as a feature, since it is now easily possible
to, for example emulate a payment card and recall the original contents
(stored in flash) upon button press. However, note that the modified
card contents are lost, if they are not written back to flash before
powering the Chameleon off.

For the future we are thinking about using external non-volatile RAM to
store the current card to prevent this from happening. That way, we can
have a very consistent memory concept and are still able to recall or
store the memory from flash.

Note that the previous Firmware version that uses the flash in a direct fashion is still available for those that don't care about the write times and need the full unlimited memory size.
2014-05-11 14:23:53 +02:00
1452 changed files with 250561 additions and 99767 deletions

No files matched your search

+6 -6
View File
@@ -121,7 +121,7 @@ INLINE_INHERITED_MEMB = NO
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
FULL_PATH_NAMES = YES
FULL_PATH_NAMES = NO
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
@@ -366,7 +366,7 @@ EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = NO
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
@@ -461,7 +461,7 @@ INLINE_INFO = YES
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
SORT_MEMBER_DOCS = YES
SORT_MEMBER_DOCS = NO
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
# brief documentation of file, namespace and class members alphabetically
@@ -549,7 +549,7 @@ MAX_INITIALIZER_LINES = 30
# at the bottom of the documentation of classes and structs. If set to YES the
# list will mention the files that were used to generate the documentation.
SHOW_USED_FILES = YES
SHOW_USED_FILES = NO
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
@@ -562,7 +562,7 @@ SHOW_FILES = YES
# This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES
SHOW_NAMESPACES = NO
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
@@ -1300,7 +1300,7 @@ EXTRA_SEARCH_MAPPINGS =
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
GENERATE_LATEX = YES
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+168
View File
@@ -0,0 +1,168 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: ISO14443A Reader Functionality</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ISO14443A Reader Functionality </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The ChameleonMini is able to act as an ISO 14443A reader. This page describes how to use this configuration (See <a class="el" href="Page_Configurations.html">Configurations</a>) correctly.</p>
<h1>Supported Commands </h1>
<p>Using the ISO 14443A reader configuration enables the usage of some commands that are only available within this configuration.</p>
<dl class="section note"><dt>Note</dt><dd>Technically, the <code>SEND</code> and <code>SEND_RAW</code> commands are also <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">timeout commands</a>, but they end successfully (either with <code>NO DATA</code> or the response) nearly immediately on every call.</dd>
<dd>
Each of the following commands returns <code>INVALID COMMAND USAGE</code> on a non-reader <a class="el" href="Page_Configurations.html">configuration</a>.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>The reader field is only turned on if this is necessary. Some commands deactivate the reader field after they are done, some do not deactivate the reader field after finishing. Please be aware, that the reader field takes a massive amount of energy and thus the voltage of the battery can drop to a critical level fastly. If not mentioned differently, all of the commands below deactivate the reader field after work.</dd></dl>
<h2><code>SEND &lt;BYTEVALUE&gt;</code> </h2>
<p>There are two cases what is done, depending on the parameter:</p><ol type="1">
<li>If the parameter is one byte, no parity bits are added, since this must be a short frame command. In this case the seven least significant bits are sent.</li>
<li>If the parameter consists of more than one byte, parity bits are added and afterwards the whole sequence is sent.</li>
</ol>
<p>After sending, the ChameleonMini waits for an answer and returns either</p><ul>
<li><code>NO DATA</code> if no answer could be detected or</li>
<li>the received data with removed parity bits, a 2-byte big-endian value indicating the bit count and either the string <code>PARITY OK</code> or <code>PARITY ERR</code> indicating whether the parity check failed or not.</li>
</ul>
<p>In each case, the ChameleonMini code <code>101:OK WITH TEXT</code> is returned.</p>
<h3>Examples</h3>
<ul>
<li><code>SEND 52</code> sends the <code>WUPA</code> command</li>
<li><code>SEND 9320</code> sends the <code>ANTICOLLISION</code> command</li>
<li><code>SEND AB2</code> returns <code>INVALID PARAMETER</code> since the parameter is no byte sequence</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>This command does not deactivate the reader field after finishing in order to make it possible to keep up the conversation with the card.</dd></dl>
<h2><code>SEND &lt;2-BYTEVALUE&gt; &lt;BYTEVALUE&gt;</code> </h2>
<p>Does the same like the command with only one parameter, but the first parameter indicates the to-be-sent bit count.</p>
<dl class="section warning"><dt>Warning</dt><dd>If the bit count parameter is neither 7 or a multiple of 8, no parity bits will be appended, but the remaining functionality is the exact same!</dd></dl>
<h3>Examples</h3>
<ul>
<li><code>SEND 0007 26</code> sends the <code>REQA</code> command</li>
<li><code>SEND 0010 9320</code> sends the <code>ANTICOLLISION</code> command</li>
<li><code>SEND 0012 13DE4A</code> sends (on bit-processing-layer) SOC - 1100 1000 0111 1011 01 - EOC. The remaining bits are discarded. Note that the byte sequence is interpreted as little-endian and the bits are sent in reverse-order, just like defined in the ISO. Note also, that no parity bits are added, since <code>0x12</code> is neither 7 nor a multiple of 8.</li>
<li><code>SEND 0300 52</code> returns <code>INVALID PARAMETER</code> since the second parameter does not contain 768 bits.</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>This command does not deactivate the reader field after finishing in order to make it possible to keep up the conversation with the card.</dd></dl>
<h2><code>SEND_RAW &lt;BYTEVALUE&gt;</code> </h2>
<p>Sends the given byte sequence. The ChameleonMini assumes that the parameter has the parity bits already appended and thus calculates the bit count itself:</p><ul>
<li>If the parameter is one byte, the bit count is set to 7, since this seems to be a short frame.</li>
<li>If the parameter is <em>n</em> bytes long, the ChameleonMini sends <code>floor(n * 16 / 9)</code> bits.</li>
</ul>
<p>After sending, the ChameleonMini waits for an answer and returns either</p><ul>
<li><code>NO DATA</code> if no answer could be detected or</li>
<li>the raw received data (including parity bits) and a 2-byte big-endian value indicating the bit count</li>
</ul>
<h3>Examples</h3>
<ul>
<li><code>SEND_RAW 52</code> sends the <code>WUPA</code> command.</li>
<li><code>SEND_RAW 934100</code> sends the <code>ANTICOLLISION</code> command as the bit sequence SOC - 1100 1001 1 0000 0100 0 - EOC is sent, which is the same as <code>0x9320</code> with parity bits.</li>
<li><code>SEND_RAW AB2</code> returns <code>INVALID PARAMETER</code> since the parameter is no byte sequence</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>This command does not deactivate the reader field after finishing in order to make it possible to keep up the conversation with the card.</dd></dl>
<h2><code>SEND &lt;2-BYTEVALUE&gt; &lt;BYTEVALUE&gt;</code> </h2>
<p>Does the same like the command with only one parameter, but the first parameter indicates the to-be-sent bit count.</p>
<h3>Examples</h3>
<ul>
<li><code>SEND_RAW 0007 26</code> sends the <code>REQA</code> command</li>
<li><code>SEND_RAW 0012 934100</code> sends the <code>ANTICOLLISION</code> command</li>
<li><code>SEND_RAW 0012 934100AB</code> also sends the <code>ANTICOLLISION</code> command, since remaining bits are discarded</li>
<li><code>SEND_RAW 0300 52</code> returns <code>INVALID PARAMETER</code> since the second parameter does not contain 768 bits.</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>This command does not deactivate the reader field after finishing in order to make it possible to keep up the conversation with the card.</dd></dl>
<h2><code>GETUID</code> </h2>
<p>This is a <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">timeout command</a>. It tries to obtain the UID from a card that is in reader range and returns it.</p>
<p>If this command is called within the reader configuration, it either ends up returning <code>101:OK WITH TEXT</code> and the UID or with a timeout (no matter if on setting/configuration change or on real timeout).</p>
<h2><code>DUMP_MFU</code> </h2>
<p>This is a <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">timeout command</a>. It tries to read the whole content of a MiFare Ultralight card that is in reader range and returns the content.</p>
<p>If this command is called within the reader configuration, it either ends up returning <code>101:OK WITH TEXT</code> and the card content in 4 lines (each line contains 16 bytes) or with a timeout (no matter if on setting/configuration change or on real timeout).</p>
<h2><code>IDENTIFY</code> </h2>
<p>This is a <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">timeout command</a>. Tries to identify the type of a card in reader range and returns the type.</p>
<p>If this command is called within the reader configuration, it ends in one of three ways:</p><ol type="1">
<li>Return code <code>101:OK WITH TEXT</code>, the card type and ATQA value, UID value and SAK value of the highest cascade level.</li>
<li>Return code <code>101:OK WITH TEXT</code>, the information that this card type is unknown to the ChameleonMini ("Unknown card.") and ATQA value, UID value and SAK value of the highest cascade level.</li>
<li>Timeout (no matter if on setting/configuration change or on real timeout). </li>
</ol>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+133
View File
@@ -0,0 +1,133 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Buttons</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Buttons </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>For user interaction, ChameleonMini provides two configurable push buttons, i.e., LBUTTON on the left side and RBUTTON on the right side of Chameleon. Chameleon distinguishes between</p><ol type="1">
<li>a short (&lt; ~1.28 s) press of the button and</li>
<li>a long (&ge; ~1.28 s) press of the button.</li>
</ol>
<p>Thus, there are four different commands for configuring the buttons:</p><ol type="1">
<li><code>LBUTTON</code></li>
<li><code>RBUTTON</code></li>
<li><code>LBUTTON_LONG</code></li>
<li><code>RBUTTON_LONG</code></li>
</ol>
<p>Each of these commands can be used in the getting ("?"), setting ("=") and suggesting ("=?") version.</p>
<h1>Supported Configurations </h1>
<p>The following table describes all currently implemented options for the button configuration. </p><table class="doxtable">
<tr>
<th>Configuration name </th><th>Description </th></tr>
<tr>
<td><code>NONE</code> </td><td>No function, the button is disabled </td></tr>
<tr>
<td><code>UID_RANDOM</code> </td><td>Sets a random UID for the current card slot. </td></tr>
<tr>
<td><code>UID_LEFT_INCREMENT</code> </td><td>Increments the UID for the current card slot. The UID is interpreted as little-endian. </td></tr>
<tr>
<td><code>UID_RIGHT_INCREMENT</code></td><td>Increments the UID for the current card slot. The UID is interpreted as big-endian. </td></tr>
<tr>
<td><code>UID_LEFT_DECREMENT</code> </td><td>Decrements the UID for the current card slot. The UID is interpreted as little-endian. </td></tr>
<tr>
<td><code>UID_RIGHT_DECREMENT</code></td><td>Decrements the UID for the current card slot. The UID is interpreted as big-endian. </td></tr>
<tr>
<td><code>CYCLE_SETTINGS</code> </td><td>Cycles through the slots/settings. If the configuration of a slot is set to <code>NONE</code>, this slot is skipped. When the last slot is reached, the next button press selects the first slot, again. </td></tr>
<tr>
<td><code>STORE_MEM</code> </td><td>Stores the current setting into the permanent Flash memory. Equivalent to the <code>STORE</code> command. </td></tr>
<tr>
<td><code>RECALL_MEM</code> </td><td>Recalls a setting from the permanent Flash memory. Equivalent to the <code>RECALL</code> command. </td></tr>
<tr>
<td><code>TOGGLE_FIELD</code> </td><td>Activates the reader field if it was deactivated, deactivates the reader field if it was activated. </td></tr>
<tr>
<td><code>STORE_LOG</code> </td><td>Writes the current log from SRAM to FRAM and clears the SRAM log. Equivalent to the <code>STORE_LOG</code> command. </td></tr>
</table>
<p>Note the UID commands have no effect when the slot is configured as reader. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+292
View File
@@ -0,0 +1,292 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: The Chameleon Command Structure</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">The Chameleon Command Structure </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>After plugging in a USB cable, the ChameleonMini enumerates as a virtual serial interface. The settings of the serial interface, e.g. baudrate, stop and parity bits, are ignored by the Chameleon. For a high level of compatibility towards both humans and computers, Chameleon can be set up and controlled by means of a text-based command line interface, which can be accessed by using simple terminal software like hyper-terminal or teraterm. The command line is optimized to cooperate with script languages such as Python or TCL.</p>
<h1>Chameleon Command Structure </h1>
<p>For communicating with the Chameleon via USB, there exist four different syntax types:</p><ul>
<li><code>&lt;COMMAND&gt;=&lt;VALUE&gt;</code> sets a parameter of the Chameleon ('set')</li>
<li><code>&lt;COMMAND&gt;=?</code> lists all possible values for the parameter ('suggest')</li>
<li><code>&lt;COMMAND&gt;?</code> returns the current value of a parameter ('get')</li>
<li><code>&lt;COMMAND&gt;</code> Executes a function with an optional response ('execute')</li>
</ul>
<p>For example, <code>CONFIG=?</code> lists the available types of virtualized cards and other options to configure a slot, while <code>CONFIG=MF_CLASSIC_1K</code> sets the current slot to Mifare Classic 1k emulation. In consequence, <code>CONFIG?</code> will return MF_CLASSIC_1K. Examples for commands executing a function are CLEAR, RESET or UPLOAD.</p>
<p>The responses of Chameleon indicate whether an action was successful or whether (and why) an error occurred. Examples: In case of an invalid command, the Chameleon replies with <code>200:UNKNOWN COMMAND</code>. In case of a known command, but a wrong syntax, the Chameleon replies with <code>201:INVALID COMMAND USAGE</code>.</p>
<p>Note: Each command has to be followed by a carriage return (CR, 0D hexadecimal). The backspace (08 hexadecimal) and escape (1B hexadecimal) keys are supported. All other control characters of the ASCII character set are ignored. The Chameleon commands are not case-sensitive. There is no echo of entered characters by the Chameleon, thus remember to switch on the 'local echo' in your terminal program.</p>
<h2>Responses </h2>
<p>Subsequent to any command sent, the Chameleon responds with a status number and a corresponding status message, separated by a colon and terminated with a carriage return and line feed (CR+LF, 0D+0A hexadecimal). Status numbers are of a three-digit decimal format with the first digit showing the severity of the answer. Status numbers beginning with a '1' denote an informational item and those beginning with a '2' denote an error. </p><table class="doxtable">
<tr>
<th>Response </th><th>Description </th></tr>
<tr>
<td><code>100:OK</code> </td><td>The command has been successfully executed </td></tr>
<tr>
<td><code>101:OK WITH TEXT</code> </td><td>The command has been successfully executed and this response is appended with an additional line of information, terminated with CR+LF </td></tr>
<tr>
<td><code>110:WAITING FOR XMODEM</code> </td><td>The Chameleon is waiting for an XMODEM connection to be established </td></tr>
<tr>
<td><code>120:FALSE</code> </td><td>The request is answered with false </td></tr>
<tr>
<td><code>121:TRUE</code> </td><td>The request is answered with true </td></tr>
<tr>
<td><code>200:UNKNOWN COMMAND</code> </td><td>This command is unknown to the Chameleon </td></tr>
<tr>
<td><code>201:INVALID COMMAND USAGE</code> </td><td>This action is not supported by this command </td></tr>
<tr>
<td><code>202:INVALID PARAMETER</code> </td><td>The format or value of the given parameter value is invalid </td></tr>
<tr>
<td><code>203:TIMEOUT</code> </td><td>The timeout of the currently active command has expired </td></tr>
</table>
<h1>Chameleon Command Set </h1>
<p>The current firmware supports the following global commands. </p><table class="doxtable">
<tr>
<th>Command </th><th>Description </th></tr>
<tr>
<td><code>CHARGING?</code> </td><td>Returns if the battery is currently being charged (TRUE) or not (FALSE) </td></tr>
<tr>
<td><code>HELP</code> </td><td>Returns a comma-separated list of all commands supported by the current firmware </td></tr>
<tr>
<td><code>RESET</code> </td><td>Reboots the Chameleon, i.e., power down and subsequent power-up. Note: A reset usually requires a new Terminal session. </td></tr>
<tr>
<td><code>RSSI?</code> </td><td>Returns the voltage measured at the antenna of the Chameleon, e.g., to detect the presence of an RF field or compare the field strength of different RFID readers. </td></tr>
<tr>
<td><code>SYSTICK?</code> </td><td>Returns the system tick value in ms. Note: An overflow occurs every 65,536 ms. </td></tr>
<tr>
<td><code>UPGRADE</code> </td><td>Sets the Chameleon into firmware upgrade mode (DFU). This command can be used instead of holding the RBUTTON while power-on to trigger the bootloader. </td></tr>
<tr>
<td><code>VERSION?</code> </td><td>Requests version information of the current firmware </td></tr>
<tr>
<td><b>Button Commands</b></td><td>See also <a class="el" href="Page_Buttons.html">Buttons</a> </td></tr>
<tr>
<td><code>RBUTTON=?</code> </td><td>Returns a comma-separated list of supported actions for pressing the right button shortly. </td></tr>
<tr>
<td><code>RBUTTON?</code> </td><td>Returns the currently set action for pressing the right button shortly. DEFAULT: <code>SETTING_CHANGE</code> </td></tr>
<tr>
<td><code>RBUTTON=&lt;NAME&gt;</code> </td><td>Sets the action for pressing the right button shortly. </td></tr>
<tr>
<td><code>LBUTTON=?</code> </td><td>Returns a comma-separated list of supported actions for pressing the left button shortly. </td></tr>
<tr>
<td><code>LBUTTON?</code> </td><td>Returns the currently set action for pressing the left button shortly. DEFAULT: <code>RECALL_MEM</code> </td></tr>
<tr>
<td><code>LBUTTON=&lt;NAME&gt;</code> </td><td>Sets the action for pressing the left button shortly. </td></tr>
<tr>
<td><code>RBUTTON_LONG=?</code> </td><td>Returns a comma-separated list of supported actions for pressing the right button a long time. </td></tr>
<tr>
<td><code>RBUTTON_LONG?</code> </td><td>Returns the currently set action for pressing the right button a long time. DEFAULT: <code>SETTING_CHANGE</code> </td></tr>
<tr>
<td><code>RBUTTON_LONG=&lt;NAME&gt;</code> </td><td>Sets the action for pressing the right button a long time. </td></tr>
<tr>
<td><code>LBUTTON_LONG=?</code> </td><td>Returns a comma-separated list of supported actions for pressing the left button a long time. </td></tr>
<tr>
<td><code>LBUTTON_LONG?</code> </td><td>Returns the currently set action for pressing the left button a long time. DEFAULT: <code>RECALL_MEM</code> </td></tr>
<tr>
<td><code>LBUTTON_LONG=&lt;NAME&gt;</code> </td><td>Sets the action for pressing the left button a long time. </td></tr>
<tr>
<td><b>LED Commands</b> </td><td>See also <a class="el" href="Page_LED.html">LED functionality</a> </td></tr>
<tr>
<td><code>LEDGREEN=?</code> </td><td>Returns a comma-separated list of supported events for illuminating the green LED </td></tr>
<tr>
<td><code>LEDGREEN?</code> </td><td>Returns the currently set event for lighting the green LED </td></tr>
<tr>
<td><code>LEDGREEN=&lt;NAME&gt;</code> </td><td>Sets the event for which the green LED is lit. DEFAULT: <code>POWERED</code> </td></tr>
<tr>
<td><code>LEDRED=?</code> </td><td>Returns a comma-separated list of supported events for illuminating the red LED </td></tr>
<tr>
<td><code>LEDRED?</code> </td><td>Returns the currently set event for lighting the red LED </td></tr>
<tr>
<td><code>LEDRED=&lt;NAME&gt;</code> </td><td>Sets the event for which the green LED is lit. DEFAULT: <code>SETTING_CHANGE</code> </td></tr>
<tr>
<td><b>Log Commands</b> </td><td>See also <a class="el" href="Page_Log.html">Log functionality</a><a class="anchor" id="Anchor_LogFunctions"></a></td></tr>
<tr>
<td><code>LOGMODE=?</code> </td><td>Returns a comma-separated list of supported log modes </td></tr>
<tr>
<td><code>LOGMODE?</code> </td><td>Returns the current state of the log mode </td></tr>
<tr>
<td><code>LOGMODE=&lt;NAME&gt;</code> </td><td>Sets the current log mode. DEFAULT = <code>OFF</code> </td></tr>
<tr>
<td><code>LOGMEM?</code> </td><td>Returns the remaining free space for logging data to the SRAM (max. 2048 byte) </td></tr>
<tr>
<td><code>LOGDOWNLOAD</code> </td><td>Waits for an XModem connection and then downloads the binary log - including any log data in FRAM. </td></tr>
<tr>
<td><code>LOGCLEAR</code> </td><td>Clears the log memory (SRAM and FRAM) </td></tr>
<tr>
<td><code>LOGSTORE</code> </td><td>Writes the current log from SRAM to FRAM and clears the SRAM log. <dl class="section warning"><dt>Warning</dt><dd>If the FRAM is full, currently no error message is shown. If calling <code>LOGMEM?</code> after executing this command returns any other value than the maximum SRAM log size, there was not sufficient space in the FRAM and nothing has been done. </dd></dl>
</td></tr>
</table>
<p>ChameleonMini provides eight 'slots' that can be configured to store different virtualized cards, or as active NFC reader, or as completely passive device for sniffing purposes. Each slot stores its configuration and, if applicable, card content. To select a particular slot, use the following command (or configure a button accordingly): </p><table class="doxtable">
<tr>
<th>Command </th><th>Description </th></tr>
<tr>
<td><code>SETTING?</code> </td><td>Returns the currently activated slot </td></tr>
<tr>
<td><code>SETTING=&lt;NUMBER&gt;</code> </td><td>Sets the active slot, where &lt;NUMBER&gt; is a number between 1 and 8 (see <a class="el" href="Page_Settings.html">Settings</a>) </td></tr>
</table>
<p>The following commands have an effect on the currently selected slot only: </p><table class="doxtable">
<tr>
<th>Command </th><th>Description </th></tr>
<tr>
<td><code>CONFIG=?</code> </td><td>Returns a comma-separated list of all supported configurations </td></tr>
<tr>
<td><code>CONFIG?</code> </td><td>Returns the configuration of the current slot </td></tr>
<tr>
<td><code>CONFIG=&lt;NAME&gt;</code> </td><td>Sets the configuration of the surrent slot to <code>&lt;NAME&gt;</code> (See <a class="el" href="Page_Configurations.html">Configurations</a>) </td></tr>
<tr>
<td><code>UIDSIZE?</code> </td><td>Returns the UID size of the currently selected card type in Byte </td></tr>
<tr>
<td><code>UID?</code> </td><td>Returns the UID of a card in the current slot </td></tr>
<tr>
<td><code>UID=&lt;UID&gt;</code> </td><td>Sets a new UID, passed in hexadecimal notation. </td></tr>
<tr>
<td><code>READONLY?</code> </td><td>Returns the current state of the read-only mode </td></tr>
<tr>
<td><code>READONLY=[0;1]</code> </td><td>Activates (1) or deactivates (0) the read-only mode (Any writing to the memory is silently ignored) </td></tr>
<tr>
<td><code>MEMSIZE?</code> </td><td>Returns the memory size occupied by the current configuration in Byte </td></tr>
<tr>
<td><code>UPLOAD</code> </td><td>Waits for an XModem connection in order to upload a new virtualized card into the currently selected slot, with a size up to the current memory size </td></tr>
<tr>
<td><code>DOWNLOAD</code> </td><td>Waits for an XModem connection in order to download a virtualized card with the current memory size </td></tr>
<tr>
<td><code>CLEAR</code> </td><td>Clears the content of the current slot </td></tr>
<tr>
<td><code>STORE</code> </td><td>Stores the content of the current slot from FRAM into the Flash memory </td></tr>
<tr>
<td><code>RECALL</code> </td><td>Recalls/restores the content of the current slot from the Flash memory into the FRAM </td></tr>
<tr>
<td><code>TIMEOUT=?</code> </td><td>Returns the possible number range for timeouts. See also <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">Timeout commands</a>. </td></tr>
<tr>
<td><code>TIMEOUT=&lt;NUMBER&gt;</code> </td><td>Sets the timeout for the current slot in multiples of 128 ms. If set to zero, there is no timeout. See also <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">Timeout commands</a>. </td></tr>
<tr>
<td><code>TIMEOUT?</code> </td><td>Returns the timeout for the current slot. See also <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">Timeout commands</a>. </td></tr>
<tr>
<td><b>Reader Commands</b></td><td>Using these commands only makes sense, if the slot is configured as reader. See also <a class="el" href="Page_14443AReader.html">ISO14443A Reader Functionality</a> </td></tr>
<tr>
<td><code>SEND &lt;BYTEVALUE&gt;</code> </td><td>Adds parity bits, sends the given byte string &lt;BYTEVALUE&gt;, and returns the cards answer </td></tr>
<tr>
<td><code>SEND_RAW &lt;BYTEVALUE&gt;</code></td><td>Does NOT add parity bits, sends the given byte string &lt;BYTEVALUE&gt; and returns the cards answer </td></tr>
<tr>
<td><code>GETUID</code> </td><td>Obtains the UID of a card that is in the range of the antenna and returns it. This command is a <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">Timeout command</a>. </td></tr>
<tr>
<td><code>DUMP_MFU</code> </td><td>Reads the whole content of a Mifare Ultralight card that is in the range of the antenna and returns it. This command is a <a class="el" href="Page_CommandLine.html#Anchor_TimeoutCommands">Timeout command</a>. </td></tr>
<tr>
<td><code>IDENTIFY</code> </td><td>Identifies the type of a card in the range of the antenna and returns it. </td></tr>
<tr>
<td><code>THRESHOLD=?</code> </td><td>Returns the possible number range for the reader threshold. </td></tr>
<tr>
<td><code>THRESHOLD=&lt;NUMBER&gt;</code> </td><td>Globally sets the reader threshold. The &lt;NUMBER&gt; influences the reader function and range. Setting a wrong value may result in malfunctioning of the reader. DEFAULT: 400 </td></tr>
<tr>
<td><code>THRESHOLD?</code> </td><td>Returns the current reader threshold. </td></tr>
<tr>
<td><code>FIELD?</code> </td><td>Returns whether (1) or not (0) the reader field is active. </td></tr>
<tr>
<td><code>FIELD=[0;1]</code> </td><td>Enables/disables the reader field. </td></tr>
</table>
<h2>Timeout Commands<a class="anchor" id="Anchor_TimeoutCommands"></a></h2>
<p>Some commands start a process with an unpredictable termination time. In these cases, ChameleonMini waits with its response, until the result of this process is obtained. In order to prevent an infinite waiting time, an individual timeout value can be set for each slot, in multiples of roughly 100 ms up to 60,000 ms. When a timeout occurs or if a respective command is aborted by means of a setting change, the return code <code>203:TIMEOUT</code> is sent and a command-specific shutdown function is called, which terminates the timeout process gracefully.</p>
<dl class="section warning"><dt>Warning</dt><dd>Any terminal input is completely ignored during the waiting period.</dd>
<dd>
When setting the timeout to zero, there is no timeout and thus a process may continue forever. Such a process can only be terminated by changing the setting, if a button is configured accordingly, or by restarting the ChameleonMini (power off, power on).</dd></dl>
<h1>Accessing the command-line using a terminal software </h1>
<p>In order to have quick access to the Chameleon's command-line without using any complicated software, we suggest using the <a href="https://ttssh2.osdn.jp/index.html.en">TeraTerm</a> terminal emulation software available for windows based operating systems.</p>
<h2>Connecting and setting up </h2>
<p>For establishing a connection to the Chameleon's command line, select File -&gt; New Connection, choose the virtual serial port of the Chameleon and hit the "OK" button. TeraTerm now tries to open the serial port and should succeed without any error.</p>
<p>For easier use of the command-line using a terminal software the local-echo functionality should be activated, to be able to see what is typed into the chameleon. When using TeraTerm, this can be achieved by selecting Setup -&gt; Terminal and check "Local Echo".</p>
<h2>Uploading and Downloading dump files </h2>
<p>In some configurations of the Chameleon, it is necessary to upload a card dump before it can be accessed by a reader. For doing so, the relatively simple and widely known XMODEM protocol is used.</p>
<p>To upload a dump file using TeraTerm, follow these steps.</p><ol type="1">
<li>Enter <code>UPLOAD</code> and wait for the <code>110:WAITING FOR XMODEM</code> response</li>
<li>Select File -&gt; Transfer -&gt; XMODEM -&gt; Send</li>
<li>In the dialog choose the binary dumpfile to be uploaded and make sure the option "Checksum" is checked in the lower left corner</li>
<li>Hitting the "Open" button will start the transfer. If no error is given to the user, the file has been uploaded sucessfully.</li>
</ol>
<p>To download the Chameleon's memory again, follow the instructions above except for using <code>DOWNLOAD</code> instead of <code>UPLOAD</code> and the Receive function of TeraTerm</p>
<p>Note that there is a 10 second timeout after entering <code>UPLOAD</code> respectively <code>DOWNLOAD</code> after which the standard command-line is activated again. So try again if the timeout is already over when the XMODEM transfer is about to start. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+129
View File
@@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Configurations</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Configurations </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Each setting of the Chameleon-Mini has an active configuration, which defines the behavior of the Chameleon-Mini. A detailed description of what defines a configuration can be found at <a class="el" href="struct_configuration_type.html">ConfigurationType</a>.</p>
<h1>Supported Codecs </h1>
<p>A Configuration basically is defined by the codec it uses and by the application functions that use this codec. Currently there are two different codecs implemented:</p><ol type="1">
<li>The ISO14443A codec for emulation.</li>
<li>The ISO14443A codec for the reader function.</li>
</ol>
<h1>Supported Configurations </h1>
<p>The following table shows which configurations are available currently. </p><table class="doxtable">
<tr>
<th>Configuration name </th><th>Codec </th><th>Description </th></tr>
<tr>
<td><code>NONE</code> </td><td>None </td><td>No functionality, Chameleon-Mini does nothing, the current setting is skipped when cycling through the settings </td></tr>
<tr>
<td><code>MF_ULTRALIGHT</code> </td><td>ISO14443A emulation </td><td>Emulates a MiFare Ultralight card </td></tr>
<tr>
<td><code>MF_CLASSIC_1K</code> </td><td>ISO14443A emulation </td><td>Emulates a MiFare Classic 1k card </td></tr>
<tr>
<td><code>MF_CLASSIC_4K</code> </td><td>ISO14443A emulation </td><td>Emulates a MiFare Classic 4k card </td></tr>
<tr>
<td><code>MF_CLASSIC_1K_7B</code> </td><td>ISO14443A emulation </td><td>Emulates a MiFare Classic 1k card with 7-byte UID. </td></tr>
<tr>
<td><code>MF_CLASSIC_4K_7B</code> </td><td>ISO14443A emulation </td><td>Emulates a MiFare Classic 4k card with 7-byte UID. </td></tr>
<tr>
<td><code>ISO14443A_SNIFF</code> </td><td>ISO14443A emulation </td><td><b>Currently incomplete</b>. Sniffs ISO14443A communication between a reader and a card. </td></tr>
<tr>
<td><code>ISO14443A_READER</code> </td><td>ISO14443A reader </td><td>The Chameleon-Mini works as a reader and can process different procedures in order to obtain a cards UID etc. </td></tr>
</table>
<h1>Configuration Changing procedure<a class="anchor" id="Anchor_ConfigurationChange"></a></h1>
<p>When the configuration is changed, no matter whether by command line or during a setting change, the following steps are done:</p><ol type="1">
<li>The codec deinitialization function of the currently active configuration is called.</li>
<li>Possibly pending timeout commands are aborted.</li>
<li>The configuration struct (<a class="el" href="struct_configuration_type.html">ConfigurationType</a>) for the currently active configuration is overwritten with the new configuration struct.</li>
<li>The codec initialization function of the new configuration is called.</li>
<li>The application initialization function of the new configuration is called. </li>
</ol>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+121
View File
@@ -0,0 +1,121 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Getting Started</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Getting Started </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Finally, you hold your brand-new ChameleonMini RevG in your hands! What to do now?! In the factory, a test firmware including a USB bootloader has been programmed into the microcontroller of the Chameleon. This page describes the next steps in order to upload the current firmware, as developed in this project, via the USB bootloader.</p>
<h1>Step 1: Trigger the USB Bootloader </h1>
<p>The bootloader can be executed in two different ways:</p><ol type="1">
<li>Make sure the Chameleon is switched off (power switch on the side is in the position <code>OFF</code>). Now, hold down the right button (RBUTTON) and keep it pressed while connecting the Chameleon to a PC via a USB cable.</li>
<li>OR: Plug your Chameleon via USB to a PC and use your favorite terminal application to connect with the test firmware of the ChameleonMini. Type <code>upgrade</code> and hit Enter.</li>
</ol>
<p>In either way, the ChameleonMini now jumps to the bootloader and waits patiently for a firmware upgrade.</p>
<h1>Step 2: Upgrade the Firmware </h1>
<p>Once the ChameleonMini is in the bootloader, you can flash a new firmware, i.e., the files <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Latest/Chameleon-Mini.hex">Chameleon-Mini.hex</a> and the <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Latest/Chameleon-Mini.eep">Chameleon-Mini.eep</a>, 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:</p>
<h2>Upgrade Procedure for Linux Users</h2>
<p>In order to upgrade the firmware under Linux you first have to install <code>avrdude</code>, e.g. under Ubuntu with the command <code>sudo apt-get install avra avrdude</code>. Then change to the directory where you have saved the hex and eep files and run <code>sudo avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i</code>.</p>
<p>You also can use <code>sudo make program</code> in the source code directory, which basically does the same.</p>
<p>After running this command you need to restart your Chameleon, e.g. by reattaching the Chameleon to the PC.</p>
<dl class="section note"><dt>Note</dt><dd>If you are using Ubuntu 14.04, avrdude may not support flip2. In this case, you can run <code>add-apt-repository ppa:pmjdebruijn/avrdude-release</code>, then <code>apt-get update</code> and finally <code>apt-get install avrdude</code> to upgrade to a version of avrdude that supports flip2.</dd></dl>
<p>Optionally copy <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Drivers/98-ChameleonMini.rules">Drivers/98-ChameleonMini.rules</a> to /etc/udev/rules.d/, to allow non-root users to open the chameleon serial port at /dev/chameleon. <code>sudo cp (Path to Chameleon Repo)/Drivers/98-ChameleonMini.rules /etc/udev/rules.d/</code> Remember to restart the udev daemon, or reboot to activate the rule. 'sudo udevadm control &ndash;reload'</p>
<h2>Upgrade Procedure for Mac OS Users</h2>
<p>When running <a href="https://brew.sh">Homebrew</a> you can install avrdude with <code>brew install avrdude</code>. After this, change to the directory where you have saved the hex and eep files and run <code>sudo avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i</code>.</p>
<h2>Upgrade Procedure for Windows Users</h2>
<p>For upgrading the firmware under Windows please</p><ol type="1">
<li>download <a href="https://sourceforge.net/projects/dfu-programmer/files/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip/download">https://sourceforge.net/projects/dfu-programmer/files/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip/download</a> and extract to an arbitrary directory. Make sure to use the DFU programmer Version 0.7.2!</li>
<li>Go to the extraction directory and then open the folder <code>dfu-prog-usb-1.2.2</code>. Install the <code>atmel_usb_dfu.inf</code> driver (right click -&gt; install).</li>
<li>Copy <code>dfu-programmer.exe</code> from the extraction directory to the directory where you have saved the hex and eep files.</li>
<li>Save the <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/ChameleonFirmwareUpgrade.bat">ChameleonFirmwareUpgrade.bat</a> in the same directory as the hex and eep files.</li>
<li>Run the <code>ChameleonFirmwareUpgrade.bat</code> as Administrator (right click -&gt; run as Administrator) and wait for the firmware upgrade to terminate. Upon success, the green LED of the ChameleonMini should light up.</li>
</ol>
<p>Finally, install the driver for Chameleon: Download both <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Drivers/ChameleonDriver.inf">ChameleonDriver.inf</a> and <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Drivers/ChameleonDriver.cat">ChameleonDriver.cat</a> from the Drivers directory and install the INF file (right click -&gt; install).</p>
<p>Now, Chameleon should appear in the Windows device manager and you should be able to open a terminal program such as TeraTerm and connect to the Chameleon-Mini via the COM port shown in the device manager. On Mac or Linux you can use screen (<code>screen /dev/tty.usbmodem1421</code>, please replace your device path with the appropriate one) to communicate with your Chameleon. Further information about how to "talk" to the Chameleon can be found here: <a class="el" href="Page_CommandLine.html">The Chameleon Command Structure</a>. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+117
View File
@@ -0,0 +1,117 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: LED functionality</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LED functionality </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The Chameleon-Mini has two fully configurable LEDs: one red LED and one green LED. The configuration is done with the commands <code>LEDRED</code> and <code>LEDGREEN</code>, which both can be called as the getting ("?"), setting ("=") and suggesting ("=?") version.</p>
<p>The following table shows which LED functions are currently available. </p><table class="doxtable">
<tr>
<th>Function name </th><th>Description </th></tr>
<tr>
<td><code>NONE</code> </td><td>No function, the LED is deactivated. </td></tr>
<tr>
<td><code>POWERED</code> </td><td>The LED lights up if the Chameleon-Mini is powered, regardless whether powered by USB or by battery. </td></tr>
<tr>
<td><code>TERMINAL_CONN</code> </td><td>The LED is turned on when the Chameleon-Mini is connected via USB and is turned off when no USB connection is established. </td></tr>
<tr>
<td><code>TERMINAL_RXTX</code> </td><td>The according LED blinks shortly when sending or receiving data via the USB interface. </td></tr>
<tr>
<td><code>SETTING_CHANGE</code> </td><td>The LED blinks one time if the new setting is setting 1, two times for setting 2, ..., eight times for setting 8. </td></tr>
<tr>
<td><code>MEMORY_STORED</code> </td><td>The LED flashes everytime when a setting is stored to the permanent flash. This is currently the case when calling the command <code>STORE</code>, the button event <code>STORE_MEM</code> occurs or the setting is changed. </td></tr>
<tr>
<td><code>MEMORY_CHANGED</code> </td><td>The LED turns on when the FRAM is changed and is turned off when the currently active setting is written to the permanent flash. Thus, this function indicates when the current setting is changed. </td></tr>
<tr>
<td><code>CODEC_RX</code> </td><td>The LED flashes when the currently active codec (e.g. ISO14443A emulation) receives data. Note that this is implemented on codec layer and the flashing is triggered before the received data are interpreted by the application. </td></tr>
<tr>
<td><code>CODEC_TX</code> </td><td>The LED flashes when the currently active codec sends data. This function also is implemented on codec layer. </td></tr>
<tr>
<td><code>FIELD_DETECTED</code> </td><td>The LED is turned on if and only if a reader field is detected, which is recognized by the RSSI module (when the RSSI value hits a hardcoded threshold, it is assumed that there is a reader field). It is irrelevant whether the field comes from another reader or from the Chameleon-Mini itself. </td></tr>
<tr>
<td><code>LOGMEM_FULL</code> </td><td>Lights up the LED, if the SRAM log memory is full. </td></tr>
</table>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+121
View File
@@ -0,0 +1,121 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: LED functionality</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LED functionality </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>For giving user feedback, ChameleonMini provides two LEDs that can be configured to indicate various conditions, events, or internal state changes of ChameleonMini: a red LED and a green LED. Their individual configuration is controlled with the commands <code>LEDRED</code> and <code>LEDGREEN</code>, which can be called in the getting ("?"), setting ("=") and suggesting ("=?") variants.</p>
<p>The following table shows the currently supported LED functions. </p><table class="doxtable">
<tr>
<th>Condition/Event </th><th>Description </th></tr>
<tr>
<td><code>NONE</code> </td><td>Nothing happens, the LED remains dark. </td></tr>
<tr>
<td><code>POWERED</code> </td><td>The LED lights up, if the ChameleonMini is powered by USB or by battery. </td></tr>
<tr>
<td><code>TERMINAL_CONN</code> </td><td>The LED is turned on when the ChameleonMini is connected via USB and is turned off when no USB connection is established. </td></tr>
<tr>
<td><code>TERMINAL_RXTX</code> </td><td>The LED blinks shortly when sending or receiving data via the USB interface. </td></tr>
<tr>
<td><code>SETTING_CHANGE</code> </td><td>The LED blinks one time if the new setting is setting 1, two times for setting 2, ..., eight times for setting 8. </td></tr>
<tr>
<td><code>MEMORY_STORED</code> </td><td>The LED flashes everytime when a setting is stored to the permanent flash. This is currently the case when calling the command <code>STORE</code>, the button event <code>STORE_MEM</code> occurs or the setting is changed. </td></tr>
<tr>
<td><code>MEMORY_CHANGED</code> </td><td>The LED turns on when the content of the FRAM has been modified and is turned off when the currently active setting is written to the permanent Flash memory. Thus, this function indicates when the current content has been changed. </td></tr>
<tr>
<td><code>CODEC_RX</code> </td><td>The LED flashes when the currently active codec (e.g. ISO14443A emulation) receives data via the RFID interface. Note that this is implemented on the codec layer and the flashing is triggered before the received data is interpreted by the application. </td></tr>
<tr>
<td><code>CODEC_TX</code> </td><td>The LED flashes when the currently active codec sends data via the RFID interface. This function is also implemented on the codec layer. </td></tr>
<tr>
<td><code>FIELD_DETECTED</code> </td><td>The LED is turned on, if a reader field is detected via the RSSI module (when the RSSI value hits a hardcoded threshold, it is assumed that there is a reader field). It is irrelevant whether the field comes from another reader or from the ChameleonMini itself. </td></tr>
<tr>
<td><code>LOGMEM_FULL</code> </td><td>Lights up the LED, if the SRAM log memory is full. </td></tr>
</table>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+120
View File
@@ -0,0 +1,120 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Log functionality</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Log functionality </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The ChameleonMini provides a configurable log functionality. This page describes how to use it.</p>
<h1>Log Entry Format </h1>
<p>The log entries use a TLV (Type Length Value)-like format: </p><table class="doxtable">
<tr>
<th>Name </th><th>Size </th><th>Description </th></tr>
<tr>
<td>Entry type </td><td>1 byte </td><td>See <a class="el" href="_log_8h.html#a34112fbd78128ae58dc7801690dfa6e0">LogEntryEnum</a> </td></tr>
<tr>
<td>Data length </td><td>1 byte </td><td>This is the length of the appended data. </td></tr>
<tr>
<td>Timestamp </td><td>2 bytes </td><td>This is the current systick value. </td></tr>
<tr>
<td>Data </td><td><em>Data length</em> bytes </td><td>It is also possible that no data is appended, then the <code>Data length</code> field is zero. </td></tr>
</table>
<h1>Entry Types </h1>
<p>See <a class="el" href="_log_8h.html#a34112fbd78128ae58dc7801690dfa6e0">LogEntryEnum</a>.</p>
<h1>Log Modes </h1>
<p>Currently there exist three log modes:</p><ul>
<li><code>OFF</code>, which means that nothing is logged.</li>
<li><code>LIVE</code>, which means that log events are written directly to the terminal (untested).</li>
<li><code>MEMORY</code>, where the log events are written to SRAM.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>If there is not enough log memory, the log mode is automatically set to <code>OFF</code>.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Since the <code>MEMORY</code> log mode writes to SRAM, the log memory is cleared by power off or restarting the Chameleon.</dd></dl>
<h1>Related Commands, Button event and LED functions </h1>
<p>There are various commands to configure the log functionality. See <a class="el" href="Page_CommandLine.html#Anchor_LogFunctions">Page Command Line</a>. Equivalently to the <code>LOGSTORE</code> command, the buttons are configurable to <code>STORE_LOG</code>, which does the same. Also, there exists a <code>LOGMEM_FULL</code> function for the LEDs, which lights up the LED if the SRAM log memory is full. See also the Pages <a class="el" href="Page_Buttons.html">Buttons</a> and <a class="el" href="Page_LED.html">LED functionality</a>. The 'chamlog' Python script in the project (Software folder) automatizes the process of downloading the binary log data, e.g., sending the following command under Windows with a ChameleonMini connected on port COM6 results in downloading the binary log file, clearing the log memory, and setting the log mode to <code>MEMORY</code>: <code>chamlog -p COM6 -c -m MEMORY -v</code>. Repeatedly executing this command always outputs the recently logged commands in user-readable form. Make sure that no other program, e.g., terminal software, is blocking the serial port. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+108
View File
@@ -0,0 +1,108 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Settings</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Settings </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The ChameleonMini can act in different ways, the behavior is defined by <a class="el" href="Page_Configurations.html">configurations</a>. But also, the ChameleonMini has slots, which are a layer above the configurations. With the slots, it is possible to switch between different configurations and respective content, e.g., a card dump together with the configuration as Mifare Classic 1k card.</p>
<h1>Properties </h1>
<p>A slot is defined by settings: <a class="el" href="struct_settings_entry_type.html">SettingsEntryType</a>.</p>
<h1>Slot Changing Procedure </h1>
<p>When the current slot is changed, the following procedure is applied:</p><ol type="1">
<li>Break potentially pending timeout commands.</li>
<li>Store the memory of the setting to the Flash.</li>
<li>Set the slot number of the currently active slot to the number of the new slot.</li>
<li>Set the slot pointer of the currently active slot to the pointer of the new slot.</li>
<li>Since the slot also contains the configuration, apply the <a class="el" href="Page_Configurations.html#Anchor_ConfigurationChange">configuration changing procedure</a> with the new configuration for the new slot.</li>
<li>Log the slot change.</li>
<li>Recall the new content of the slot from the permanent Flash.</li>
<li>Signalize the slot change with an <a class="el" href="Page_LED.html">LED</a>, if an LED is configured to <code>SETTING_CHANGE</code>. </li>
</ol>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
@@ -0,0 +1,99 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Uploading and Downloading Memory dumps</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Uploading and Downloading Memory dumps </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>In order to be able to emulate different cards, one can upload or download the content used for the emulation.</p>
<p>The layout of the memory dump depends on the chosen configuration and is usually the same as the memory layout of the currently chosen card emulation. The size of the memory dump also depends on the currently chosen configuration and can be requested with a specific command on the command-line.</p>
<p>In order to upload or download a memory dump, the user has to send the corresponding command on the command-line first and the Chameleon responds with a status message indicating that it is waiting for an X-MODEM connection. Depending on whether upload or download is chosen, the Chameleon then waits for 10 seconds to initiate an X-MODEM receive or send connection.</p>
<p>When waiting for a receiving X-MODEM connection, the X-MODEM NAK byte is sent upto 20 times with a delay of 500ms in order to establish a standard 128 byte frame-size X-MODEM connection with the simple checksum scheme. Within this time, the user has to get his X-MODEM client ready and choose the binary file to be uploaded into the memory.</p>
<p>In case of waiting for an X-MODEM send connection to establish, a wait time of 10 seconds is performed to receive the X-MODEM NAK byte. Within this time, the user has to start the X-MODEM receiver and set it to the standard 128 byte frame using the simple checksum scheme in order to receive the binary memory dump. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+10 -108
View File
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: C:/Dokumente und Einstellungen/skuser/Eigene Dateien/Chameleon-Mini-GitHub/Chameleon-Mini-OpenSource/Firmware/Chameleon-Mini/AntennaLevel.h Source File</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: AntennaLevel.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,111 +89,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">AntennaLevel.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright 2013 Timo Kasper, Simon KĂĽppers, David Oswald (&quot;ORIGINAL</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AUTHORS&quot;). All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * DEFINITIONS:</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * &quot;WORK&quot;: The material covered by this license includes the schematic</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * diagrams, designs, circuit or circuit board layouts, mechanical</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * drawings, documentation (in electronic or printed form), source code,</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * binary software, data files, assembled devices, and any additional</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * material provided by the ORIGINAL AUTHORS in the ChameleonMini project</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * (https://github.com/skuep/ChameleonMini).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * LICENSE TERMS:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * of substantial portions of this WORK are permitted provided that the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * following conditions are met:</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of substantial portions of this WORK must include the above copyright</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the following</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * attribution:</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * &quot;Based on ChameleonMini an open-source RFID emulator:</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * https://github.com/skuep/ChameleonMini&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * The attribution must be clearly visible to a user, for example, by being</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * printed on the circuit board and an enclosure, and by being displayed by</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * software (both in binary and source code form).</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * At any time, the majority of the ORIGINAL AUTHORS may decide to give</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * written permission to an entity to use or redistribute the WORK (with or</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * without modification) WITHOUT having to include the above copyright</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the above</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * attribution.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * DISCLAIMER:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * THIS PRODUCT IS PROVIDED BY THE ORIGINAL AUTHORS &quot;AS IS&quot; AND ANY EXPRESS</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * DISCLAIMED. IN NO EVENT SHALL THE ORIGINAL AUTHORS OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS PRODUCT, EVEN IF ADVISED OF</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * The views and conclusions contained in the hardware, software, and</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * documentation should not be interpreted as representing official</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * policies, either expressed or implied, of the ORIGINAL AUTHORS.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef ANTENNALEVEL_H_</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNALEVEL_H_</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#define ANTENNA_LEVEL_R1 10E3</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_R2 220E0</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_VREF 1.0</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_RES 4096</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_OFFSET 190 </span><span class="comment">/* LSB */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#define ANTENNA_LEVEL_MILLIVOLT 1E3</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_FACTOR (ANTENNA_LEVEL_VREF * (ANTENNA_LEVEL_R1 + ANTENNA_LEVEL_R2) / (ANTENNA_LEVEL_RES * ANTENNA_LEVEL_R2) )</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_SCALE ((uint32_t) 1&lt;&lt;16)</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_NUMERATOR ((uint32_t) (ANTENNA_LEVEL_MILLIVOLT * ANTENNA_LEVEL_FACTOR * ANTENNA_LEVEL_SCALE + .5))</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ANTENNA_LEVEL_DENOMINATOR (ANTENNA_LEVEL_SCALE)</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keywordtype">void</span> AntennaLevelInit(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; ADCA.CTRLA = ADC_ENABLE_bm;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ADCA.REFCTRL = ADC_REFSEL_INT1V_gc | ADC_BANDGAP_bm;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; ADCA.PRESCALER = ADC_PRESCALER_DIV32_gc;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN7_gc;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;uint16_t AntennaLevelGet(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; ADCA.CH0.CTRL |= ADC_CH_START_bm;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">while</span>( !(ADCA.CH0.INTFLAGS &amp; ADC_CH_CHIF_bm) );</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; ADCA.CH0.INTFLAGS = ADC_CH_CHIF_bm;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; int16_t Result = ADCA.CH0RES - ANTENNA_LEVEL_OFFSET;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (Result &lt; 0) Result = 0;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> (uint16_t) (((uint32_t) Result * ANTENNA_LEVEL_NUMERATOR) / ANTENNA_LEVEL_DENOMINATOR);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* ANTENNALEVEL_H_ */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AntennaLevel.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 24.11.2013</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: skuser</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef ANTENNALEVEL_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define ANTENNALEVEL_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;Common.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define ANTENNA_LEVEL_R1 47E3</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#define ANTENNA_LEVEL_R2 1E3</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define ANTENNA_LEVEL_VREF 1.0</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocLine truncated
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
+18 -98
View File
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: C:/Dokumente und Einstellungen/skuser/Eigene Dateien/Chameleon-Mini-GitHub/Chameleon-Mini-OpenSource/Firmware/Chameleon-Mini/Application/Application.h Source File</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Application.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,102 +89,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">Application.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright 2013 Timo Kasper, Simon KĂĽppers, David Oswald (&quot;ORIGINAL</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AUTHORS&quot;). All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * DEFINITIONS:</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * &quot;WORK&quot;: The material covered by this license includes the schematic</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * diagrams, designs, circuit or circuit board layouts, mechanical</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * drawings, documentation (in electronic or printed form), source code,</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * binary software, data files, assembled devices, and any additional</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * material provided by the ORIGINAL AUTHORS in the ChameleonMini project</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * (https://github.com/skuep/ChameleonMini).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * LICENSE TERMS:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * of substantial portions of this WORK are permitted provided that the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * following conditions are met:</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of substantial portions of this WORK must include the above copyright</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the following</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * attribution:</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * &quot;Based on ChameleonMini an open-source RFID emulator:</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * https://github.com/skuep/ChameleonMini&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * The attribution must be clearly visible to a user, for example, by being</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * printed on the circuit board and an enclosure, and by being displayed by</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * software (both in binary and source code form).</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * At any time, the majority of the ORIGINAL AUTHORS may decide to give</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * written permission to an entity to use or redistribute the WORK (with or</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * without modification) WITHOUT having to include the above copyright</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the above</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * attribution.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * DISCLAIMER:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * THIS PRODUCT IS PROVIDED BY THE ORIGINAL AUTHORS &quot;AS IS&quot; AND ANY EXPRESS</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * DISCLAIMED. IN NO EVENT SHALL THE ORIGINAL AUTHORS OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS PRODUCT, EVEN IF ADVISED OF</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * The views and conclusions contained in the hardware, software, and</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * documentation should not be interpreted as representing official</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * policies, either expressed or implied, of the ORIGINAL AUTHORS.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef APPLICATION_H_</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define APPLICATION_H_</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;../Common.h&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;../Configuration.h&quot;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">/* Applications */</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;MifareClassic.h&quot;</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">/* Function wrappers */</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;INLINE <span class="keywordtype">void</span> ApplicationInit(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; ActiveConfiguration.ApplicationInitFunc();</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;INLINE <span class="keywordtype">void</span> ApplicationTask(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; ActiveConfiguration.ApplicationTaskFunc();</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;INLINE uint16_t ApplicationProcess(uint8_t* ByteBuffer, uint16_t ByteCount) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> ActiveConfiguration.ApplicationProcessFunc(ByteBuffer, ByteCount);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;INLINE <span class="keywordtype">void</span> ApplicationReset(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; ActiveConfiguration.ApplicationResetFunc();</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;INLINE <span class="keywordtype">void</span> ApplicationGetUid(ConfigurationUidType Uid) {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; ActiveConfiguration.ApplicationGetUidFunc(Uid);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;INLINE <span class="keywordtype">void</span> ApplicationSetUid(ConfigurationUidType Uid) {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ActiveConfiguration.ApplicationSetUidFunc(Uid);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* APPLICATION_H_ */</span><span class="preprocessor"></span></div>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Application.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 18.02.2013</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: skuser</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef APPLICATION_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define APPLICATION_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;../Common.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;../Configuration.h&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;../Log.h&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">/* Applications */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#incluLine truncated
<div class="ttc" id="struct_configuration_type_html_a12036017f3f9e7a0c6a168539e262571"><div class="ttname"><a href="struct_configuration_type.html#a12036017f3f9e7a0c6a168539e262571">ConfigurationType::ApplicationProcessFunc</a></div><div class="ttdeci">uint16_t(* ApplicationProcessFunc)(uint8_t *ByteBuffer, uint16_t BitCount)</div><div class="ttdef"><b>Definition:</b> Configuration.h:93</div></div>
<div class="ttc" id="struct_configuration_type_html_abcb24589b62d04a8aa3e7d129e87e239"><div class="ttname"><a href="struct_configuration_type.html#abcb24589b62d04a8aa3e7d129e87e239">ConfigurationType::ApplicationResetFunc</a></div><div class="ttdeci">void(* ApplicationResetFunc)(void)</div><div class="ttdef"><b>Definition:</b> Configuration.h:77</div></div>
<div class="ttc" id="_log_8h_html_a34112fbd78128ae58dc7801690dfa6e0a54d679e676c487407959422049e43956"><div class="ttname"><a href="_log_8h.html#a34112fbd78128ae58dc7801690dfa6e0a54d679e676c487407959422049e43956">LOG_INFO_UID_SET</a></div><div class="ttdoc">UID change. </div><div class="ttdef"><b>Definition:</b> Log.h:16</div></div>
<div class="ttc" id="struct_configuration_type_html_a9d31886f03ebf75d59611b7dbe81aeca"><div class="ttname"><a href="struct_configuration_type.html#a9d31886f03ebf75d59611b7dbe81aeca">ConfigurationType::ApplicationGetUidFunc</a></div><div class="ttdeci">void(* ApplicationGetUidFunc)(ConfigurationUidType Uid)</div><div class="ttdef"><b>Definition:</b> Configuration.h:98</div></div>
<div class="ttc" id="struct_configuration_type_html_a902e157e8657cd7bb2ef5211c1a6bc58"><div class="ttname"><a href="struct_configuration_type.html#a902e157e8657cd7bb2ef5211c1a6bc58">ConfigurationType::ApplicationTickFunc</a></div><div class="ttdeci">void(* ApplicationTickFunc)(void)</div><div class="ttdef"><b>Definition:</b> Configuration.h:81</div></div>
<div class="ttc" id="struct_configuration_type_html_a9e695aaf0fd0bb6e5165b23c654e9346"><div class="ttname"><a href="struct_configuration_type.html#a9e695aaf0fd0bb6e5165b23c654e9346">ConfigurationType::ApplicationTaskFunc</a></div><div class="ttdeci">void(* ApplicationTaskFunc)(void)</div><div class="ttdef"><b>Definition:</b> Configuration.h:79</div></div>
<div class="ttc" id="struct_configuration_type_html_a835db40b131727b32d732585e8984d4a"><div class="ttname"><a href="struct_configuration_type.html#a835db40b131727b32d732585e8984d4a">ConfigurationType::ApplicationInitFunc</a></div><div class="ttdeci">void(* ApplicationInitFunc)(void)</div><div class="ttdef"><b>Definition:</b> Configuration.h:75</div></div>
<div class="ttc" id="struct_configuration_type_html_ac730d8b9dc9e728bb10069ea1917d99f"><div class="ttname"><a href="struct_configuration_type.html#ac730d8b9dc9e728bb10069ea1917d99f">ConfigurationType::UidSize</a></div><div class="ttdeci">uint8_t UidSize</div><div class="ttdef"><b>Definition:</b> Configuration.h:120</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
+100
View File
@@ -0,0 +1,100 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Battery.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_74b6a3b63f61c160c0f14b7a283a4c9b.html">Firmware</a></li><li class="navelem"><a class="el" href="dir_8465ec698d237f801ae9966d4551fcfa.html">Chameleon-Mini</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Battery.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Battery.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 20.08.2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: sk</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BATTERY_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BATTERY_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;Common.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define BATTERY_PORT PORTD</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#define BATTERY_STAT_PIN PIN0_bm</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define BATTERY_STAT_PINCTRL PIN0CTRL</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="prepLine truncated
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
+10 -97
View File
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: C:/Dokumente und Einstellungen/skuser/Eigene Dateien/Chameleon-Mini-GitHub/Chameleon-Mini-OpenSource/Firmware/Chameleon-Mini/Button.h Source File</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Button.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,100 +89,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">Button.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright 2013 Timo Kasper, Simon KĂĽppers, David Oswald (&quot;ORIGINAL</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AUTHORS&quot;). All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * DEFINITIONS:</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * &quot;WORK&quot;: The material covered by this license includes the schematic</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * diagrams, designs, circuit or circuit board layouts, mechanical</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * drawings, documentation (in electronic or printed form), source code,</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * binary software, data files, assembled devices, and any additional</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * material provided by the ORIGINAL AUTHORS in the ChameleonMini project</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * (https://github.com/skuep/ChameleonMini).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * LICENSE TERMS:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * of substantial portions of this WORK are permitted provided that the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * following conditions are met:</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of substantial portions of this WORK must include the above copyright</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the following</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * attribution:</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * &quot;Based on ChameleonMini an open-source RFID emulator:</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * https://github.com/skuep/ChameleonMini&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * The attribution must be clearly visible to a user, for example, by being</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * printed on the circuit board and an enclosure, and by being displayed by</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * software (both in binary and source code form).</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * At any time, the majority of the ORIGINAL AUTHORS may decide to give</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * written permission to an entity to use or redistribute the WORK (with or</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * without modification) WITHOUT having to include the above copyright</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the above</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * attribution.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * DISCLAIMER:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * THIS PRODUCT IS PROVIDED BY THE ORIGINAL AUTHORS &quot;AS IS&quot; AND ANY EXPRESS</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * DISCLAIMED. IN NO EVENT SHALL THE ORIGINAL AUTHORS OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS PRODUCT, EVEN IF ADVISED OF</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * The views and conclusions contained in the hardware, software, and</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * documentation should not be interpreted as representing official</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * policies, either expressed or implied, of the ORIGINAL AUTHORS.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef BUTTON_H_</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BUTTON_H_</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;Application/Application.h&quot;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#define BUTTON_PORT PORTA</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BUTTON_MASK PIN6_bm</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BUTTON_PINCTRL PIN6CTRL</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; BUTTON_ACTION_NONE,</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; BUTTON_ACTION_UID_RANDOM,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BUTTON_ACTION_UID_LEFT_INCREMENT,</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; BUTTON_ACTION_UID_RIGHT_INCREMENT,</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; BUTTON_ACTION_UID_LEFT_DECREMENT,</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; BUTTON_ACTION_UID_RIGHT_DECREMENT,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; BUTTON_ACTION_CYCLE_SETTINGS,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">/* This has to be last element */</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; BUTTON_ACTION_COUNT</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;} ButtonActionEnum;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keywordtype">void</span> ButtonInit(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keywordtype">void</span> ButtonTick(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keywordtype">void</span> ButtonGetActionList(<span class="keywordtype">char</span>* ListOut, uint16_t BufferSize);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keywordtype">void</span> ButtonSetActionById(ButtonActionEnum Action);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keywordtype">void</span> ButtonGetActionByName(<span class="keywordtype">char</span>* ActionOut, uint16_t BufferSize);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keywordtype">bool</span> ButtonSetActionByName(<span class="keyword">const</span> <span class="keywordtype">char</span>* Action);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* BUTTON_H_ */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Button.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 13.05.2013</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: skuser</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BUTTON_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BUTTON_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;Common.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; BUTTON_R_PRESS_SHORT = 0,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; BUTTON_R_PRESS_LONG,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BUTTON_L_PRESS_SHORT,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;Line truncated
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
+96
View File
@@ -0,0 +1,96 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Buttons.txt File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Buttons.txt File Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: C:/Dokumente und Einstellungen/skuser/Eigene Dateien/Chameleon-Mini-GitHub/Chameleon-Mini-OpenSource/Firmware/Chameleon-Mini/Chameleon-Mini.h Source File</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Chameleon-Mini.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,91 +89,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">Chameleon-Mini.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright 2013 Timo Kasper, Simon KĂĽppers, David Oswald (&quot;ORIGINAL</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AUTHORS&quot;). All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * DEFINITIONS:</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * &quot;WORK&quot;: The material covered by this license includes the schematic</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * diagrams, designs, circuit or circuit board layouts, mechanical</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * drawings, documentation (in electronic or printed form), source code,</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * binary software, data files, assembled devices, and any additional</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * material provided by the ORIGINAL AUTHORS in the ChameleonMini project</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * (https://github.com/skuep/ChameleonMini).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * LICENSE TERMS:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * of substantial portions of this WORK are permitted provided that the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * following conditions are met:</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of substantial portions of this WORK must include the above copyright</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the following</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * attribution:</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * &quot;Based on ChameleonMini an open-source RFID emulator:</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * https://github.com/skuep/ChameleonMini&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * The attribution must be clearly visible to a user, for example, by being</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * printed on the circuit board and an enclosure, and by being displayed by</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * software (both in binary and source code form).</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * At any time, the majority of the ORIGINAL AUTHORS may decide to give</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * written permission to an entity to use or redistribute the WORK (with or</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * without modification) WITHOUT having to include the above copyright</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the above</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * attribution.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * DISCLAIMER:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * THIS PRODUCT IS PROVIDED BY THE ORIGINAL AUTHORS &quot;AS IS&quot; AND ANY EXPRESS</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * DISCLAIMED. IN NO EVENT SHALL THE ORIGINAL AUTHORS OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS PRODUCT, EVEN IF ADVISED OF</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * The views and conclusions contained in the hardware, software, and</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * documentation should not be interpreted as representing official</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * policies, either expressed or implied, of the ORIGINAL AUTHORS.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef CHAMELEON_MINI_H</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CHAMELEON_MINI_H</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;avr/wdt.h&gt;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &lt;avr/power.h&gt;</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &quot;System.h&quot;</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &quot;Memory.h&quot;</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#include &quot;LED.h&quot;</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#include &quot;Terminal/Terminal.h&quot;</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &quot;Codec/Codec.h&quot;</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#include &quot;Application/Application.h&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#include &quot;Configuration.h&quot;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &quot;Random.h&quot;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#include &quot;Button.h&quot;</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#include &quot;AntennaLevel.h&quot;</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#include &quot;Settings.h&quot;</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#define CHAMELEON_MINI_VERSION_STRING BUILD_DATE</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif //CHAMELEON_MINI_H</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span></div>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef CHAMELEON_MINI_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define CHAMELEON_MINI_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;avr/wdt.h&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;avr/power.h&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;System.h&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;Memory.h&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;LED.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;LEDHook.h&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;Terminal/Terminal.h&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;Codec/Codec.h&quot;</span></div><div class="line"><a name="l00015"></a><span cLine truncated
<div class="ttc" id="_log_8h_html"><div class="ttname"><a href="_log_8h.html">Log.h</a></div></div>
<div class="ttc" id="_configuration_8h_html"><div class="ttname"><a href="_configuration_8h.html">Configuration.h</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
+12 -130
View File
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: C:/Dokumente und Einstellungen/skuser/Eigene Dateien/Chameleon-Mini-GitHub/Chameleon-Mini-OpenSource/Firmware/Chameleon-Mini/Codec/Codec.h Source File</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: Codec.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,134 +89,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">Codec.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright 2013 Timo Kasper, Simon KĂĽppers, David Oswald (&quot;ORIGINAL</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AUTHORS&quot;). All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * DEFINITIONS:</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * &quot;WORK&quot;: The material covered by this license includes the schematic</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * diagrams, designs, circuit or circuit board layouts, mechanical</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * drawings, documentation (in electronic or printed form), source code,</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * binary software, data files, assembled devices, and any additional</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * material provided by the ORIGINAL AUTHORS in the ChameleonMini project</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * (https://github.com/skuep/ChameleonMini).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * LICENSE TERMS:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * of substantial portions of this WORK are permitted provided that the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * following conditions are met:</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of substantial portions of this WORK must include the above copyright</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the following</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * attribution:</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * &quot;Based on ChameleonMini an open-source RFID emulator:</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * https://github.com/skuep/ChameleonMini&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * The attribution must be clearly visible to a user, for example, by being</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * printed on the circuit board and an enclosure, and by being displayed by</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * software (both in binary and source code form).</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * At any time, the majority of the ORIGINAL AUTHORS may decide to give</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * written permission to an entity to use or redistribute the WORK (with or</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * without modification) WITHOUT having to include the above copyright</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the above</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * attribution.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * DISCLAIMER:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * THIS PRODUCT IS PROVIDED BY THE ORIGINAL AUTHORS &quot;AS IS&quot; AND ANY EXPRESS</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * DISCLAIMED. IN NO EVENT SHALL THE ORIGINAL AUTHORS OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS PRODUCT, EVEN IF ADVISED OF</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * The views and conclusions contained in the hardware, software, and</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * documentation should not be interpreted as representing official</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * policies, either expressed or implied, of the ORIGINAL AUTHORS.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef CODEC_H_</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_H_</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;../Common.h&quot;</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;../Configuration.h&quot;</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &quot;ISO14443-2A.h&quot;</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#define CODEC_DEMOD_POWER_PORT PORTB</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_POWER_MASK PIN1_bm</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_PORT PORTB</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_MASK (CODEC_DEMOD_IN_MASK0 | CODEC_DEMOD_IN_MASK1)</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_MASK0 PIN0_bm</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_MASK1 PIN2_bm</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_PINCTRL0 PIN0CTRL</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_PINCTRL1 PIN2CTRL</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_EVMUX0 EVSYS_CHMUX_PORTB_PIN0_gc</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_EVMUX1 EVSYS_CHMUX_PORTB_PIN2_gc</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_DEMOD_IN_INT0_VECT PORTB_INT0_vect</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_LOADMOD_PORT PORTC</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_LOADMOD_MASK PIN6_bm</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_CARRIER_IN_PORT PORTC</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_CARRIER_IN_MASK PIN2_bm</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_CARRIER_IN_PINCTRL PIN2CTRL</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_CARRIER_IN_EVMUX EVSYS_CHMUX_PORTC_PIN2_gc</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_PORT PORTC</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_MASK_PSK PIN0_bm</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_MASK_OOK PIN1_bm</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_MASK (CODEC_SUBCARRIER_MASK_PSK | CODEC_SUBCARRIER_MASK_OOK)</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_TIMER TCC0</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_CC_PSK CCA</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_CC_OOK CCB</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_CCEN_PSK TC0_CCAEN_bm</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_SUBCARRIER_CCEN_OOK TC0_CCBEN_bm</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_TIMER_SAMPLING TCC1</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_TIMER_SAMPLING_CCA_VECT TCC1_CCA_vect</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_TIMER_LOADMOD TCD1</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CODEC_TIMER_OVF_VECT TCD1_OVF_vect</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#define CODEC_BUFFER_SIZE 256 </span><span class="comment">/* Byte */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor">#define CODEC_CARRIER_FREQ 13560000</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">extern</span> uint8_t CodecBuffer[CODEC_BUFFER_SIZE];</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;INLINE <span class="keywordtype">void</span> CodecInit(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ActiveConfiguration.CodecInitFunc();</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;INLINE <span class="keywordtype">void</span> CodecTask(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; ActiveConfiguration.CodecTaskFunc();</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;INLINE <span class="keywordtype">void</span> CodecSetDemodPower(<span class="keywordtype">bool</span> bOnOff) {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; CODEC_DEMOD_POWER_PORT.DIRSET = CODEC_DEMOD_POWER_MASK;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (bOnOff) {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; CODEC_DEMOD_POWER_PORT.OUTSET = CODEC_DEMOD_POWER_MASK;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; CODEC_DEMOD_POWER_PORT.OUTCLR = CODEC_DEMOD_POWER_MASK;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CODEC_H_ */</span><span class="preprocessor"></span></div>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * CODEC.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 18.02.2013</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: skuser</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef CODEC_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define CODEC_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;../Common.h&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;../Configuration.h&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> Line truncated
<div class="ttc" id="struct_configuration_type_html_afcabcce06f07798a43b95d0cf4d05db2"><div class="ttname"><a href="struct_configuration_type.html#afcabcce06f07798a43b95d0cf4d05db2">ConfigurationType::CodecTaskFunc</a></div><div class="ttdeci">void(* CodecTaskFunc)(void)</div><div class="ttdef"><b>Definition:</b> Configuration.h:63</div></div>
<div class="ttc" id="struct_configuration_type_html_a2b3fe0c8c0643102a8f07157fa0265f7"><div class="ttname"><a href="struct_configuration_type.html#a2b3fe0c8c0643102a8f07157fa0265f7">ConfigurationType::CodecDeInitFunc</a></div><div class="ttdeci">void(* CodecDeInitFunc)(void)</div><div class="ttdef"><b>Definition:</b> Configuration.h:59</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
+10 -75
View File
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: C:/Dokumente und Einstellungen/skuser/Eigene Dateien/Chameleon-Mini-GitHub/Chameleon-Mini-OpenSource/Firmware/Chameleon-Mini/Terminal/CommandLine.h Source File</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: CommandLine.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,78 +89,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">CommandLine.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright 2013 Timo Kasper, Simon KĂĽppers, David Oswald (&quot;ORIGINAL</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * AUTHORS&quot;). All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * DEFINITIONS:</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * &quot;WORK&quot;: The material covered by this license includes the schematic</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * diagrams, designs, circuit or circuit board layouts, mechanical</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * drawings, documentation (in electronic or printed form), source code,</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * binary software, data files, assembled devices, and any additional</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * material provided by the ORIGINAL AUTHORS in the ChameleonMini project</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * (https://github.com/skuep/ChameleonMini).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * LICENSE TERMS:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * of substantial portions of this WORK are permitted provided that the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * following conditions are met:</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Redistributions and use of this WORK, with or without modification, or</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of substantial portions of this WORK must include the above copyright</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the following</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * attribution:</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * &quot;Based on ChameleonMini an open-source RFID emulator:</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * https://github.com/skuep/ChameleonMini&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * The attribution must be clearly visible to a user, for example, by being</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * printed on the circuit board and an enclosure, and by being displayed by</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * software (both in binary and source code form).</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * At any time, the majority of the ORIGINAL AUTHORS may decide to give</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * written permission to an entity to use or redistribute the WORK (with or</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * without modification) WITHOUT having to include the above copyright</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * notice, this list of conditions, the below disclaimer, and the above</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * attribution.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * DISCLAIMER:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * THIS PRODUCT IS PROVIDED BY THE ORIGINAL AUTHORS &quot;AS IS&quot; AND ANY EXPRESS</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * DISCLAIMED. IN NO EVENT SHALL THE ORIGINAL AUTHORS OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS PRODUCT, EVEN IF ADVISED OF</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * The views and conclusions contained in the hardware, software, and</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * documentation should not be interpreted as representing official</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * policies, either expressed or implied, of the ORIGINAL AUTHORS.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef COMMANDLINE_H_</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define COMMANDLINE_H_</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;Terminal.h&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keywordtype">void</span> CommandLineInit(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">bool</span> CommandLineProcessByte(uint8_t Byte);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> CommandLineTick(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* COMMANDLINE_H_ */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * CommandLine.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 04.05.2013</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: skuser</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef COMMANDLINE_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define COMMANDLINE_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;Terminal.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;Commands.h&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keywordtype">void</span> CommandLineInit(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keywordtype">bool</span> CommandLineProcessByte(uint8_t Byte);</div><div class="line"><a name="l00016"></a><span class="lineno"> Line truncated
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
+10 -9
View File
@@ -3,15 +3,16 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Chameleon-Mini: DoxygenPages/CommandLine.txt File Reference</title>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: CommandLine.txt File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -21,7 +22,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Chameleon-Mini
</div>
</td>
@@ -30,7 +31,7 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -69,7 +70,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -81,15 +82,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DoxygenPages/CommandLine.txt File Reference</div> </div>
<div class="title">CommandLine.txt File Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 2 2014 10:08:11 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Oct 28 2016 16:53:26 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</a> 1.8.11
</small></address>
</body>
</html>
Loaded 20 of 1452 files, more files were not shown because too many files have changed in this diff. Show more