コード例 #1
0
ファイル: Menu.c プロジェクト: Ernie99/128_test_hw
void MenuDisplayItem() // this method could blow up the stack! need to update
{
	TerminalSetCursorPosition(5,1);
	TerminalSendString(MenuItems[HWselection]);
/*	
	switch(selection){
		case MNU_PATTERN:
		TerminalSendString("pattern    ");
		break;
		case MNU_SPEED:
		TerminalSendString("speed      ");
		break;
		case MNU_HOURS:
		TerminalSendString("hours      ");
		break;
		case MNU_AMPM:
		TerminalSendString("AM or PM   ");
		break;
		case MNU_MINS:
		TerminalSendString("mins       ");
		break;
		case MNU_SECS:
		TerminalSendString("secs       ");
		break;
		case MNU_HRMODE:
		TerminalSendString("24 or 12 hr");
		break;
		case MNU_YEAR:
		TerminalSendString("year       ");
		break;
		case MNU_MONTH:
		TerminalSendString("month      ");
		break;
		case MNU_DAY:
		TerminalSendString("day of week");
		break;
		case MNU_DATE:
		TerminalSendString("date       ");
		break;
	}*/
}
コード例 #2
0
ファイル: Sniff14443A.c プロジェクト: emsec/ChameleonMini
uint16_t Sniff14443AAppProcess(uint8_t* Buffer, uint16_t BitCount){
    switch (Sniff14443CurrentCommand){
        case Sniff14443_Do_Nothing: {
            return 0;
        }
        case Sniff14443_Autocalibrate: {

            switch (SniffState) {
                case STATE_REQA:
                    LED_PORT.OUTCLR = LED_RED;
                    // If received Reader REQA or WUPA
                    if (TrafficSource == TRAFFIC_READER &&
                        (Buffer[0] == 0x26 || Buffer[0] == 0x52)) {
                        SniffState = STATE_ATQA;
                    } else {
                        // Stay in this state, do noting
                    }
                    break;
                case STATE_ATQA:
                    // ATQA: P RRRR XXXX  P XXRX XXXX
                    if (TrafficSource == TRAFFIC_CARD &&
                        BitCount == 2 * 9 &&
                        (Buffer[0] & 0x20) == 0x00 &&        // Bit6 RFU shall be 0
                        (Buffer[1] & 0xE0) == 0x00 &&      // bit13-16 RFU shall be 0
                        (Buffer[2] & 0x01) == 0x00 &&
                        checkParityBits(Buffer, BitCount)) {
                        // Assume this is a good ATQA
                        SniffState = STATE_ANTICOLLI;
                    } else {
                        // If not ATQA, but REQA, then stay on this state,
                        // Reset to REQA, save the counter and reset the counter
                        if (TrafficSource == TRAFFIC_READER &&
                            (Buffer[0] == 0x26 || Buffer[0] == 0x52)) {
                        } else {
                            // If not ATQA and not REQA then reset to REQA
                            reset2REQA();
                        }
                    }
                    break;
                case STATE_ANTICOLLI:
                    // SEL: 93/95/97
                    if (TrafficSource == TRAFFIC_READER &&
                        BitCount == 2 * 8 &&
                        (Buffer[0] & 0xf0) == 0x90 &&
                        (Buffer[0] & 0x09) == 0x01) {
                        SniffState = STATE_UID;

                    } else {
                        reset2REQA();
                    }
                    break;
                case STATE_UID:
                    if (TrafficSource == TRAFFIC_CARD &&
                        BitCount == 5 * 9 &&
                        checkParityBits(Buffer, BitCount)) {
                        SniffState = STATE_SELECT;
                    } else {
                        reset2REQA();
                    }
                    break;
                case STATE_SELECT:

                    // SELECT: 9 bytes, SEL = 93/95/97, NVB=70
                    if (TrafficSource == TRAFFIC_READER &&
                        BitCount == 9 * 8 &&
                        (Buffer[0] & 0xf0) == 0x90 &&
                        (Buffer[0] & 0x09) == 0x01 &&
                        Buffer[1] == 0x70) {
                        SniffState = STATE_SAK;
                    } else {
                        // Not valid, reset
                        reset2REQA();
                    }
                    break;
                case STATE_SAK:
                    // SAK: 1Byte SAK + CRC
                    if (TrafficSource == TRAFFIC_CARD &&
                        BitCount == 3 * 9 &&
                        checkParityBits(Buffer, BitCount)) {
                        if ((Buffer[0] & 0x04) == 0x00) {
                            // UID complete, success SELECTED,
                            // Mark the current threshold as ok and finish
                            // reset
                            SniffState = STATE_REQA;
                            LED_PORT.OUTSET = LED_RED;
                            Thresholds[(tmp_th - CODEC_THRESHOLD_CALIBRATE_MIN) / CODEC_THRESHOLD_CALIBRATE_STEPS] += 1;
                            CommandLinePendingTaskFinished(COMMAND_INFO_OK_WITH_TEXT_ID, NULL);
                            // Send this threshold to terminal
                            char tmpBuf[10];
                            snprintf(tmpBuf, 10, "%4" PRIu16 ": ", tmp_th);
                            TerminalSendString(tmpBuf);

                            // Save value to EEPROM
                            SETTING_UPDATE(GlobalSettings.ActiveSettingPtr->ReaderThreshold);

                            Sniff14443AAppReset();
                        } else {
                            // UID not complete, goto ANTICOLLI
                            SniffState = STATE_ANTICOLLI;
                        }
                    } else {
                        reset2REQA();
                    }
                    break;
                default:
                    break;
            }
            break;
        }
        default:
            return 0;
    }
    return 0;
}