/** @file */

/** @page Page_Configurations Configurations
 * 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 \ref ConfigurationType.
 * 
 * Supported Codecs
 * ================
 * 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:
 * -# The ISO14443A codec for emulation.
 * -# The ISO14443A codec for the reader function.
 * 
 * Supported Configurations
 * ========================
 * The following table shows which configurations are available currently.
 * Configuration name   | Codec                 | Description
 * ------------------   | -----                 | -----------
 * `NONE`               | None                  | No functionality, Chameleon-Mini does nothing, the current setting is skipped when cycling through the settings
 * `MF_ULTRALIGHT`      | ISO14443A emulation   | Emulates a MiFare Ultralight card
 * `MF_CLASSIC_1K`      | ISO14443A emulation   | Emulates a MiFare Classic 1k card
 * `MF_CLASSIC_4K`      | ISO14443A emulation   | Emulates a MiFare Classic 4k card
 * `MF_CLASSIC_1K_7B`   | ISO14443A emulation   | Emulates a MiFare Classic 1k card with 7-byte UID.
 * `MF_CLASSIC_4K_7B`   | ISO14443A emulation   | Emulates a MiFare Classic 4k card with 7-byte UID.
 * `ISO14443A_SNIFF`    | ISO14443A emulation   | <B>Currently incomplete</B>. Sniffs ISO14443A communication between a reader and a card.
 * `ISO14443A_READER`   | ISO14443A reader      | The Chameleon-Mini works as a reader and can process different procedures in order to obtain a cards UID etc. 
 * 
 * Configuration Changing procedure \anchor Anchor_ConfigurationChange
 * ================================
 * When the configuration is changed, no matter whether by command line or during a setting change, the following steps are done:
 * -# The codec deinitialization function of the currently active configuration is called.
 * -# Possibly pending timeout commands are aborted.
 * -# The configuration struct (\ref ConfigurationType) for the currently active configuration is overwritten with the new configuration struct.
 * -# The codec initialization function of the new configuration is called.
 * -# The application initialization function of the new configuration is called.
 */