+
+#warning TODO:This is an example implentation, you must implement it!
+
+typedef uint8_t thermostatus_t;
+
+#define THERMO_OFF 0
+#define THERMO_HEATING BV(0)
+#define THERMO_FREEZING BV(1)
+#define THERMO_TGT_REACH BV(2)
+#define THERMOERRF_NTCSHORT BV(3)
+#define THERMOERRF_NTCOPEN BV(4)
+#define THERMOERRF_TIMEOUT BV(5)
+#define THERMO_ACTIVE BV(6)
+
+#define THERMO_ERRMASK (THERMOERRF_NTCSHORT | THERMOERRF_NTCOPEN | THERMOERRF_TIMEOUT)
+
+typedef enum ThermoDev
+{
+ THERMO_TEST,
+
+ /* Put here your thermo device */
+
+ THERMO_CNT,
+} ThermoDev;
+
+#endif /* THERMO_MAP_H */
diff --git a/boards/arduino-mega/templates/.spec b/boards/arduino-mega/templates/.spec
new file mode 100644
index 00000000..07fb8eed
--- /dev/null
+++ b/boards/arduino-mega/templates/.spec
@@ -0,0 +1,3 @@
+name = "Templates"
+ord = 0
+description = "Use these as a starting point for your BeRTOS project."
diff --git a/boards/arduino-mega/templates/empty/.spec b/boards/arduino-mega/templates/empty/.spec
new file mode 100644
index 00000000..f3edfbc2
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/.spec
@@ -0,0 +1,8 @@
+name = 'empty preset'
+advanced = True
+description="""
+
+This is a minimalist project, it just initializes the hardware of the
+supported board and proposes an empty main.
+<\p>
+"""
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_adc.h b/boards/arduino-mega/templates/empty/cfg/cfg_adc.h
new file mode 100644
index 00000000..dd65e134
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_adc.h
@@ -0,0 +1,110 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for the ADC module.
+ *
+ * \version $Id$
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_ADC_H
+#define CFG_ADC_H
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define ADC_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * Module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define ADC_LOG_FORMAT LOG_FMT_VERBOSE
+
+/**
+ * Clock Frequency for ADC conversion.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ supports = "at91"
+ */
+#define CONFIG_ADC_CLOCK 4800000UL
+
+/**
+ * Minimum time for starting up a conversion [us].
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 0
+ * $WIZ$ supports = "at91"
+ */
+#define CONFIG_ADC_STARTUP_TIME 20
+
+/**
+ * Minimum time for sample and hold [us].
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 0
+ * $WIZ$ supports = "at91"
+ */
+#define CONFIG_ADC_SHTIME 834
+
+/**
+ * ADC Voltage Reference.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "avr_adc_refs"
+ * $WIZ$ supports = "avr"
+ */
+#define CONFIG_ADC_AVR_REF ADC_AVR_AVCC
+
+/**
+ * ADC clock divisor from main crystal.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 2
+ * $WIZ$ max = 128
+ * $WIZ$ supports = "avr"
+ */
+#define CONFIG_ADC_AVR_DIVISOR 2
+
+/**
+ * Enable ADC strobe for debugging ADC ISR.
+ *
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_ADC_STROBE 0
+
+#endif /* CFG_ADC_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_afsk.h b/boards/arduino-mega/templates/empty/cfg/cfg_afsk.h
new file mode 100644
index 00000000..cce47c1f
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_afsk.h
@@ -0,0 +1,113 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for AFSK1200 modem.
+ *
+ * \author Francesco Sacchi
+ */
+
+#ifndef CFG_AFSK_H
+#define CFG_AFSK_H
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define AFSK_LOG_LEVEL LOG_LVL_WARN
+
+/**
+ * Module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define AFSK_LOG_FORMAT LOG_FMT_TERSE
+
+
+/**
+ * AFSK discriminator filter type.
+ *
+ * $WIZ$ type = "enum"; value_list = "afsk_filter_list"
+ */
+#define CONFIG_AFSK_FILTER AFSK_CHEBYSHEV
+
+
+/**
+ * AFSK receiver buffer length.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 2
+ */
+#define CONFIG_AFSK_RX_BUFLEN 32
+
+/**
+ * AFSK transimtter buffer length.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 2
+ */
+#define CONFIG_AFSK_TX_BUFLEN 32
+
+/**
+ * AFSK DAC sample rate for modem outout.
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 2400
+ */
+#define CONFIG_AFSK_DAC_SAMPLERATE 9600
+
+/**
+ * AFSK RX timeout in ms, set to -1 to disable.
+ * $WIZ$ type = "int"
+ * $WIZ$ min = -1
+ */
+#define CONFIG_AFSK_RXTIMEOUT 0
+
+
+/**
+ * AFSK Preamble length in [ms], before starting transmissions.
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 1
+ */
+#define CONFIG_AFSK_PREAMBLE_LEN 300UL
+
+
+
+/**
+ * AFSK Trailer length in [ms], before stopping transmissions.
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 1
+ */
+#define CONFIG_AFSK_TRAILER_LEN 50UL
+
+#endif /* CFG_AFSK_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_ax25.h b/boards/arduino-mega/templates/empty/cfg/cfg_ax25.h
new file mode 100644
index 00000000..64f862f1
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_ax25.h
@@ -0,0 +1,76 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for the AX25 protocol module.
+ *
+ * \version $Id$
+ * \author Francesco Sacchi
+ */
+
+#ifndef CFG_AX25_H
+#define CFG_AX25_H
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define AX25_LOG_LEVEL LOG_LVL_WARN
+
+/**
+ * Module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define AX25_LOG_FORMAT LOG_FMT_TERSE
+
+/**
+ * AX25 frame buffer lenght.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 18
+ */
+#define CONFIG_AX25_FRAME_BUF_LEN 330
+
+
+/**
+ * Enable repeaters listing in AX25 frames.
+ * If enabled use 56 addtional bytes of RAM
+ * for each message received.
+ *
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_AX25_RPT_LST 1
+
+#endif /* CFG_AX25_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_battfs.h b/boards/arduino-mega/templates/empty/cfg/cfg_battfs.h
new file mode 100644
index 00000000..fb438a08
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_battfs.h
@@ -0,0 +1,68 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for BattFS module.
+ *
+ * \version $Id$
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_BATTFS_H
+#define CFG_BATTFS_H
+
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define BATTFS_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define BATTFS_LOG_FORMAT LOG_FMT_VERBOSE
+
+/**
+ * Set to 1 to enable free page shuffling.
+ * This increase memories life but makes debugging
+ * more difficult due to its unrepeteable state.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_BATTFS_SHUFFLE_FREE_PAGES 0
+
+
+#endif /* BATTFS */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_context_switch.h b/boards/arduino-mega/templates/empty/cfg/cfg_context_switch.h
new file mode 100644
index 00000000..fe0b4f87
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_context_switch.h
@@ -0,0 +1,71 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for the context switch benchmark.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_CONTEXT_SWITCH_H
+#define CFG_CONTEXT_SWITCH_H
+
+/**
+ * Use hp timer for the bechmark.
+ *
+ * $WIZ$ type = "boolean"
+ * $WIZ$ module= "boolean"
+ * $WIZ$ conditional_deps = "ser"
+ */
+#define CONFIG_USE_HP_TIMER 1
+
+
+/**
+ * Use board led for benchmark.
+ *
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_USE_LED 1
+
+
+/**
+ * Debug console port.
+ * $WIZ$ type = "int"; min = 0
+ */
+#define CONFIG_CTX_DEBUG_PORT 0
+
+/**
+ * Baudrate for the debug console.
+ * $WIZ$ type = "int"; min = 300
+ */
+#define CONFIG_CTX_DEBUG_BAUDRATE 115200UL
+
+#endif /* CFG_CONTEXT_SWITCH_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_dataflash.h b/boards/arduino-mega/templates/empty/cfg/cfg_dataflash.h
new file mode 100644
index 00000000..8bd7828a
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_dataflash.h
@@ -0,0 +1,56 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for data flash memory module.
+ *
+ * \version $Id$
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_DATAFLASH_H
+#define CFG_DATAFLASH_H
+
+/**
+ * Module logging level.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define DATAFLASH_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * Module logging format.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define DATAFLASH_LOG_FORMAT LOG_FMT_TERSE
+
+#endif /* CFG_DATAFLASH_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_dc_motor.h b/boards/arduino-mega/templates/empty/cfg/cfg_dc_motor.h
new file mode 100644
index 00000000..fd9bac73
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_dc_motor.h
@@ -0,0 +1,111 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for DC motor module.
+ *
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_DC_MOTOR_H
+#define CFG_DC_MOTOR_H
+
+/**
+ * Number of the DC motors to manage.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 1
+ */
+#define CONFIG_NUM_DC_MOTOR 4
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define DC_MOTOR_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * Module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define DC_MOTOR_LOG_FORMAT LOG_FMT_VERBOSE
+
+
+/**
+ * Min value of DC motor speed.
+ * \note Generally this value is the min value of the ADC conversion,
+ * if you use it.
+ *
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_DC_MOTOR_MIN_SPEED 0
+
+
+/**
+ * Max value of DC motor speed.
+ * \note Generally this value is the max value of the ADC conversion,
+ * if you use it.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ max = 65535
+ */
+#define CONFIG_DC_MOTOR_MAX_SPEED 65535
+
+
+/**
+ * Sampling period in millisecond.
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_DC_MOTOR_SAMPLE_PERIOD 40
+
+/**
+ * Amount of millisecond before to read sample.
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_DC_MOTOR_SAMPLE_DELAY 2
+
+/**
+ * This control set which mode the driver use to lock share
+ * resources when we use the preempitive kernel.
+ * If we set to 1 we use the semaphore module otherwise the
+ * driver disable the switch context every time we need to access
+ * to shared sources.
+ *
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_DC_MOTOR_USE_SEM 1
+
+#endif /* CFG_DC_MOTOR_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_debug.h b/boards/arduino-mega/templates/empty/cfg/cfg_debug.h
new file mode 100644
index 00000000..f7596ca1
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_debug.h
@@ -0,0 +1,55 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for Debug module.
+ *
+ * \version $Id$
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_DEBUG_H
+#define CFG_DEBUG_H
+
+/**
+ * Debug console port.
+ * $WIZ$ type = "int"; min = 0
+ */
+#define CONFIG_KDEBUG_PORT 0
+
+/**
+ * Baudrate for the debug console.
+ * $WIZ$ type = "int"; min = 300
+ */
+#define CONFIG_KDEBUG_BAUDRATE 115200UL
+
+#endif /* CFG_DEBUG_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_fat.h b/boards/arduino-mega/templates/empty/cfg/cfg_fat.h
new file mode 100644
index 00000000..d418b783
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_fat.h
@@ -0,0 +1,140 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for Fat module.
+ *
+ * \version $Id$
+ *
+ * \author Luca Ottaviano
+ * \author Francesco Sacchi
+ */
+
+#ifndef CFG_FAT_H
+#define CFG_FAT_H
+
+/**
+ * Use word alignment to access FAT structure.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_FAT_WORD_ACCESS 0
+#define _WORD_ACCESS CONFIG_FAT_WORD_ACCESS
+
+/**
+ * Enable read functions only.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_FAT_FS_READONLY 0
+#define _FS_READONLY CONFIG_FAT_FS_READONLY
+
+/**
+ * Minimization level to remove some functions.
+ * $WIZ$ type = "int"; min = 0; max = 3
+ */
+#define CONFIG_FAT_FS_MINIMIZE 0
+#define _FS_MINIMIZE CONFIG_FAT_FS_MINIMIZE
+
+/**
+ * If enabled, this reduces memory consumption 512 bytes each file object by using a shared buffer.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_FAT_FS_TINY 1
+#define _FS_TINY CONFIG_FAT_FS_TINY
+
+/**
+ * To enable string functions, set _USE_STRFUNC to 1 or 2.
+ * $WIZ$ type = "int"
+ * $WIZ$ supports = "False"
+ */
+#define CONFIG_FAT_USE_STRFUNC 0
+#define _USE_STRFUNC CONFIG_FAT_USE_STRFUNC
+
+/**
+ * Enable f_mkfs function. Requires CONFIG_FAT_FS_READONLY = 0.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_FAT_USE_MKFS 0
+#define _USE_MKFS (CONFIG_FAT_USE_MKFS && !CONFIG_FAT_FS_READONLY)
+
+/**
+ * Enable f_forward function. Requires CONFIG_FAT_FS_TINY.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_FAT_USE_FORWARD 0
+#define _USE_FORWARD (CONFIG_FAT_USE_FORWARD && CONFIG_FAT_FS_TINY)
+
+/**
+ * Number of volumes (logical drives) to be used.
+ * $WIZ$ type = "int"; min = 1; max = 255
+ */
+#define CONFIG_FAT_DRIVES 1
+#define _DRIVES CONFIG_FAT_DRIVES
+
+/**
+ * Maximum sector size to be handled. (512/1024/2048/4096).
+ * 512 for memory card and hard disk, 1024 for floppy disk, 2048 for MO disk
+ * $WIZ$ type = "int"; min = 512; max = 4096
+ */
+#define CONFIG_FAT_MAX_SS 512
+#define _MAX_SS CONFIG_FAT_MAX_SS
+
+/**
+ * When _MULTI_PARTITION is set to 0, each volume is bound to the same physical
+ * drive number and can mount only first primaly partition. When it is set to 1,
+ * each volume is tied to the partitions listed in Drives[].
+ * $WIZ$ type = "boolean"
+ * $WIZ$ supports = "False"
+ */
+#define CONFIG_FAT_MULTI_PARTITION 0
+#define _MULTI_PARTITION CONFIG_FAT_MULTI_PARTITION
+
+/**
+ * Specifies the OEM code page to be used on the target system.
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_FAT_CODE_PAGE 850
+#define _CODE_PAGE CONFIG_FAT_CODE_PAGE
+
+/**
+ * Support for long filenames. Enable only if you have a valid Microsoft license.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_FAT_USE_LFN 0
+#define _USE_LFN CONFIG_FAT_USE_LFN
+
+/**
+ * Maximum Long File Name length to handle.
+ * $WIZ$ type = "int"; min = 8; max = 255
+ */
+#define CONFIG_FAT_MAX_LFN 255
+#define _MAX_LFN CONFIG_FAT_MAX_LFN
+
+#endif /* CFG_FAT_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_flash25.h b/boards/arduino-mega/templates/empty/cfg/cfg_flash25.h
new file mode 100644
index 00000000..f7ff219b
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_flash25.h
@@ -0,0 +1,52 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for flash25 module.
+ *
+ * \version $Id$
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_FLASH25_H
+#define CFG_FLASH25_H
+
+/**
+ * Eeprom memory type.
+ *
+ *$WIZ$ type = "enum"
+ *$WIZ$ value_list = "flash25_list"
+ */
+#define CONFIG_FLASH25 FLASH25_AT25F2048
+
+#endif /* CFG_FALSH25_H */
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_formatwr.h b/boards/arduino-mega/templates/empty/cfg/cfg_formatwr.h
new file mode 100644
index 00000000..bac8aca7
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_formatwr.h
@@ -0,0 +1,65 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for formatted write module.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_FORMATWR_H
+#define CFG_FORMATWR_H
+
+/**
+ * printf()-style formatter configuration.
+ * $WIZ$ type = "enum"; value_list = "printf_list"
+ *
+ * \sa PRINTF_DISABLED
+ * \sa PRINTF_NOMODIFIERS
+ * \sa PRINTF_REDUCED
+ * \sa PRINTF_NOFLOAT
+ * \sa PRINTF_FULL
+ */
+#define CONFIG_PRINTF PRINTF_FULL
+
+/**
+ * Size of buffer to format "%" sequences in printf.
+ *
+ * Warning: no check on buffer size is done when formatting, be careful especially
+ * with big numbers and %f formatting.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 4
+ */
+#define CONFIG_FRMWRI_BUFSIZE 134
+
+#endif /* CFG_FORMATWR_H */
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_gfx.h b/boards/arduino-mega/templates/empty/cfg/cfg_gfx.h
new file mode 100644
index 00000000..59dde04c
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_gfx.h
@@ -0,0 +1,67 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for GFX module.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_GFX_H
+#define CFG_GFX_H
+
+/**
+ * Enable line clipping algorithm.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_GFX_CLIPPING 1
+
+/**
+ * Enable text rendering in bitmaps.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_GFX_TEXT 1
+
+/**
+ * Enable virtual coordinate system.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_GFX_VCOORDS 1
+
+/**
+ * Select bitmap pixel format.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "bitmap_format"
+ */
+#define CONFIG_BITMAP_FMT BITMAP_FMT_PLANAR_V_LSB
+
+#endif /* CFG_GFX_H */
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_hashtable.h b/boards/arduino-mega/templates/empty/cfg/cfg_hashtable.h
new file mode 100644
index 00000000..e4645f33
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_hashtable.h
@@ -0,0 +1,51 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for hashtable module.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_HASHTABLE_H
+#define CFG_HASHTABLE_H
+
+/**
+ * Enable/disable support to declare special hash tables which maintain a copy of the key internally instead of relying on the hook to extract it from the data.
+ *
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_HT_OPTIONAL_INTERNAL_KEY 1
+
+#endif /* CFG_HASHTABLE_H */
+
+
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_heap.h b/boards/arduino-mega/templates/empty/cfg/cfg_heap.h
new file mode 100644
index 00000000..dc4b1fa3
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_heap.h
@@ -0,0 +1,51 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for heap module.
+ *
+ * \version $Id$
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_HEAP_H
+#define CFG_HEAP_H
+
+/**
+ * Enable malloc/free like API.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_HEAP_MALLOC 1
+
+#endif /* CFG_HEAP_H */
+
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_i2c.h b/boards/arduino-mega/templates/empty/cfg/cfg_i2c.h
new file mode 100644
index 00000000..7df0d097
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_i2c.h
@@ -0,0 +1,88 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for I2C module.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_I2C_H
+#define CFG_I2C_H
+
+/**
+*Comunication frequency.
+*
+* $WIZ$ type = "int"
+*/
+#define CONFIG_I2C_FREQ 100000UL
+
+/**
+ * I2C start timeout.
+ * For how many milliseconds the i2c_start
+ * should try to get an ACK before
+ * returning error.
+ *
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_I2C_START_TIMEOUT 100
+
+/**
+ * I2C backend the driver should use.
+ *
+ * I2C_BACKEND_BUILTIN: Use (if present) the builtin i2c hardware.
+ * I2C_BACKEND_BITBANG: Use the emulated bitbang driver.
+ * \see drv/i2c.h for more information.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "i2c_backend"
+ */
+#define CONFIG_I2C_BACKEND I2C_BACKEND_BUILTIN
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define I2C_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define I2C_LOG_FORMAT LOG_FMT_TERSE
+
+#endif /* CFG_I2C_H */
+
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_i2s.h b/boards/arduino-mega/templates/empty/cfg/cfg_i2s.h
new file mode 100644
index 00000000..52fa8848
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_i2s.h
@@ -0,0 +1,75 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for I2S module.
+ *
+ * \version $Id$
+ *
+ * \author Luca Ottaviano
+ */
+
+#ifndef CFG_I2S_H
+#define CFG_I2S_H
+
+/**
+ * Length of each play buffer.
+ *
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_PLAY_BUF_LEN 8192
+
+/**
+ * Sampling frequency of the audio file.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 32000
+ * $WIZ$ max = 192000
+ */
+#define CONFIG_SAMPLE_FREQ 44100UL
+
+/**
+ * Module logging level.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define I2S_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * Module logging format.
+ *
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define I2S_LOG_FORMAT LOG_FMT_TERSE
+
+#endif /* CFG_I2S_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_ini_reader.h b/boards/arduino-mega/templates/empty/cfg/cfg_ini_reader.h
new file mode 100644
index 00000000..702c78ee
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_ini_reader.h
@@ -0,0 +1,49 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for ini reader module.
+ *
+ * \version $Id$
+ *
+ * \author Luca Ottaviano
+ */
+
+#ifndef CFG_INI_READER_H
+#define CFG_INI_READER_H
+
+/**
+ * Maximum ini file line length (chars).
+ * $WIZ$ type = "int"; min = 1
+ */
+#define CONFIG_INI_MAX_LINE_LEN 64
+
+#endif /* CFG_INI_READER_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_kbd.h b/boards/arduino-mega/templates/empty/cfg/cfg_kbd.h
new file mode 100644
index 00000000..116f3318
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_kbd.h
@@ -0,0 +1,59 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for keyboard module.
+ *
+ * \version $Id$
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_KBD_H
+#define CFG_KBD_H
+
+/// Keyboard polling method. $WIZ$ supports = "False"
+#define CONFIG_KBD_POLL KBD_POLL_SOFTINT
+
+/// Enable keyboard event delivery to observers. $WIZ$ type = "boolean"
+#define CONFIG_KBD_OBSERVER 0
+
+/// Enable key beeps. $WIZ$ type = "boolean"
+#define CONFIG_KBD_BEEP 0
+
+/// Enable long pression handler for keys. $WIZ$ type = "boolean"
+#define CONFIG_KBD_LONGPRESS 0
+
+/// Enable calling poor man's scheduler to be called inside kbd_peek. $WIZ$ type = "boolean"
+#define CONFIG_KBD_SCHED 0
+
+#endif /* CFG_KBD_H */
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_keytag.h b/boards/arduino-mega/templates/empty/cfg/cfg_keytag.h
new file mode 100644
index 00000000..8bedadf6
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_keytag.h
@@ -0,0 +1,61 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for keytag module.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_KEYTAG_H
+#define CFG_KEYTAG_H
+
+/**
+ * Module logging level.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define CONFIG_KEYTAG_LOG_LEVEL LOG_LVL_ERR
+/**
+ * Module logging format.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define CONFIG_KEYTAG_LOG_FORMAT LOG_FMT_TERSE
+
+/**
+ * Max buffer lenght
+ * $WIZ$ type = "int"
+ */
+#define CONFIG_TAG_MAX_LEN 14U
+
+#endif /* CFG_KEYTAG_H */
+
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_kfile.h b/boards/arduino-mega/templates/empty/cfg/cfg_kfile.h
new file mode 100644
index 00000000..0ebed7b1
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_kfile.h
@@ -0,0 +1,61 @@
+/**
+ * \file
+ *
+ *
+ * \brief Configuration file for KFile interface module.
+ *
+ * \author Daniele Basile
+ */
+
+#ifndef CFG_KFILE_H
+#define CFG_KFILE_H
+
+/**
+ * Module logging level.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_level"
+ */
+#define KFILE_LOG_LEVEL LOG_LVL_INFO
+
+/**
+ * Module logging format.
+ * $WIZ$ type = "enum"
+ * $WIZ$ value_list = "log_format"
+ */
+#define KFILE_LOG_FORMAT LOG_FMT_TERSE
+
+/**
+ * Enable the gets function with echo.
+ * $WIZ$ type = "boolean"
+ */
+#define CONFIG_KFILE_GETS 0
+
+#endif /* CFG_KFILE_H */
diff --git a/boards/arduino-mega/templates/empty/cfg/cfg_lcd_32122a.h b/boards/arduino-mega/templates/empty/cfg/cfg_lcd_32122a.h
new file mode 100644
index 00000000..5a9b3ca7
--- /dev/null
+++ b/boards/arduino-mega/templates/empty/cfg/cfg_lcd_32122a.h
@@ -0,0 +1,63 @@
+/**
+ * \file
+ *
+ *
+ * \brief Displaytech 32122A LCD driver configuration file.
+ *
+ * \author Bernie Innocenti
+ * \author Stefano Fedrigo