ensure USB config numbers always start from 1

Depending on which features (and thus USB configurations) are included
in the firmware, we need to re-define the ordering of the configuration
numbers, as the Atmel USBD driver simply assumes that configurations are
numbered 1..N without any gaps in the sequence.
diff --git a/firmware/include_board/board_common.h b/firmware/include_board/board_common.h
index b8f21f4..cac0ef8 100644
--- a/firmware/include_board/board_common.h
+++ b/firmware/include_board/board_common.h
@@ -25,8 +25,6 @@
 #include "string.h"
 #include "inttypes.h"
 
-#include "simtrace.h"
-
 #define MIN(a, b)       ((a < b) ? a : b)
 
 #ifdef __GNUC__ 
diff --git a/firmware/src_board/cciddriver.c b/firmware/src_board/cciddriver.c
index 02ab63e..7379dc5 100644
--- a/firmware/src_board/cciddriver.c
+++ b/firmware/src_board/cciddriver.c
@@ -44,6 +44,10 @@
 //------------------------------------------------------------------------------
 
 #include "board.h"
+#include "simtrace.h"
+
+#ifdef HAVE_CCID
+
 #include <USBDDriver.h>
 #include <USBRequests.h>
 #include <USBDescriptors.h>
@@ -1029,4 +1033,4 @@
     return USBD_Write( CCID_EPT_NOTIFICATION, ccidDriver.BufferINT, 4, 0, 0 );
 }
 
-
+#endif /* HAVE_CCID */
diff --git a/firmware/src_simtrace/main.c b/firmware/src_simtrace/main.c
index 9686949..852b2f4 100644
--- a/firmware/src_simtrace/main.c
+++ b/firmware/src_simtrace/main.c
@@ -6,6 +6,7 @@
 #define TRACE_LEVEL 5
 
 #include "board.h"
+#include "simtrace.h"
 #include "utils.h"
 #include "req_ctx.h"
 
diff --git a/firmware/src_simtrace/mode_cardemu.c b/firmware/src_simtrace/mode_cardemu.c
index 96ecca6..3b0c3d2 100644
--- a/firmware/src_simtrace/mode_cardemu.c
+++ b/firmware/src_simtrace/mode_cardemu.c
@@ -1,4 +1,6 @@
 #include "board.h"
+#include "simtrace.h"
+#include "ringbuffer.h"
 #include "card_emu.h"
 #include "iso7816_fidi.h"
 #include "utils.h"
diff --git a/firmware/src_simtrace/simtrace.h b/firmware/src_simtrace/simtrace.h
index df5f01b..725ef41 100644
--- a/firmware/src_simtrace/simtrace.h
+++ b/firmware/src_simtrace/simtrace.h
@@ -2,6 +2,7 @@
 #define SIMTRACE_H
 
 #include "ringbuffer.h"
+#include "board.h"
 
 /* Endpoint numbers */
 #define DATAOUT     1
@@ -37,7 +38,20 @@
 extern const Pin pinPhoneRST;
 
 enum confNum {
-    CFG_NUM_SNIFF = 1, CFG_NUM_CCID, CFG_NUM_PHONE, CFG_NUM_MITM, NUM_CONF
+	CFG_NUM_NONE	= 0,
+#ifdef HAVE_SNIFFER
+	CFG_NUM_SNIFF,
+#endif
+#ifdef HAVE_CCID
+	CFG_NUM_CCID,
+#endif
+#ifdef HAVE_CARDEM
+	CFG_NUM_PHONE,
+#endif
+#ifdef HAVE_MITM
+	CFG_NUM_MITM,
+#endif
+	NUM_CONF
 };
 
 /// CCIDDriverConfiguration Descriptors
diff --git a/firmware/src_simtrace/simtrace_iso7816.c b/firmware/src_simtrace/simtrace_iso7816.c
index 0c4a096..c24ac0a 100644
--- a/firmware/src_simtrace/simtrace_iso7816.c
+++ b/firmware/src_simtrace/simtrace_iso7816.c
@@ -32,6 +32,8 @@
  *------------------------------------------------------------------------------*/
 
 #include "board.h"
+#include "simtrace.h"
+#include "ringbuffer.h"
 #include "iso7816_fidi.h"
 
 #include <string.h>
diff --git a/firmware/src_simtrace/usb.c b/firmware/src_simtrace/usb.c
index 6b57b1b..3d69780 100644
--- a/firmware/src_simtrace/usb.c
+++ b/firmware/src_simtrace/usb.c
@@ -32,6 +32,7 @@
  *----------------------------------------------------------------------------*/
 
 #include "board.h"
+#include "simtrace.h"
 #include "utils.h"
 
 #include <cciddriverdescriptors.h>