/// <summary>
        /// When the menu to display all cards is selected
        /// </summary>
        private void DisplayCards()
        {
            switch (_displayCardsState)
            {
            case DISPLAY_CARDS_STATE.listIsEmpty:
                LCD.GetInstance().Clear();
                if (ListOfCards.GetInstance().IsEmpty())
                {
                    _displayCardsState = DISPLAY_CARDS_STATE.errorMSG;
                }
                else
                {
                    _displayCardsState = DISPLAY_CARDS_STATE.displayAllCards;
                }
                break;

            case DISPLAY_CARDS_STATE.errorMSG:
                LCD.GetInstance().DisplayText(GT.Color.Red, "/!\\ Aucun badge n'est enregistre /!\\", 10, LCD.GetInstance().LcdHeight / 2);
                Thread.Sleep(2000);
                RestoreInitialState();
                break;

            case DISPLAY_CARDS_STATE.displayAllCards:
                int positionY = 10;     // The Y position on the LCD
                LCD.GetInstance().DisplayText(GT.Color.Gray, "Pour quitter, appuyer sur le joystick", 10, LCD.GetInstance().LcdHeight - 20);

                foreach (Card card in ListOfCards.GetInstance().CardsList)
                {
                    LCD.GetInstance().DisplayText(GT.Color.Black, card.Name, 10, positionY);
                    positionY += 15;     // Increment the Y position
                }

                if (!_joystickButton.Read())     // If joystick button is press
                {
                    RestoreInitialState();
                }
                break;

            default:
                _displayCardsState = DISPLAY_CARDS_STATE.listIsEmpty;
                break;
            }
        }
        /// <summary>
        /// This method restore to initial state (main menu)
        /// </summary>
        private void RestoreInitialState()
        {
            _menu              = 0;
            _menuState         = MENU_STATE.initial;
            _servoState        = SERVO_STATE.close;
            _secretState       = SECRET_CODE.up1;
            _scanCardState     = SCAN_CARD_STATE.waitRFID;
            _addCardState      = ADD_CARD_STATE.waitRFID;
            _displayCardsState = DISPLAY_CARDS_STATE.listIsEmpty;
            _deleteCardState   = DELETE_CARD_STATE.listIsEmpty;

            // Refresh the LCD text fields
            LCDTextFields.Content         = Card.DEFAULT_NAME;
            LCDTextFields.CursorPosition  = 0;
            LCDTextFields.ShouldBeRefresh = true;

            DeleteCurrentBadgescan();
            LCD.GetInstance().Clear();
            DisplayMainMenu(_menu);
        }