Esempio n. 1
0
static void call_cmd_from_index( BaseSequentialStream *chp, int argc, char *argv[], uint8_t cmd_index){
    switch (cmd_index){
    case CMD_ACCEL:
        cmd_accel(chp, argc, argv);
        break;
    case CMD_COLOR:
        cmd_color(chp, argc, argv);
        break;
    case CMD_LED:
        cmd_led(chp, argc, argv);
        break;
    case CMD_LOOP:
        cmd_loop(chp, argc, argv);
        break;
    }
}
Esempio n. 2
0
static void cmd_test_all(BaseSequentialStream *chp, int argc, char *argv[]){
	
	chprintf(chp, " \n\nRunning thread function \n \n");
    chThdSleepMilliseconds(1000);
	cmd_threads(chp, argc, argv);

	chprintf(chp, "\n\nRunning runtime test \n \n");
    chThdSleepMilliseconds(1000);
	cmd_rt(chp, argc, argv);

	chprintf(chp, "\n\nRunning beep test");
    chThdSleepMilliseconds(1000);
	cmd_beep(chp, argc, argv);

	chprintf(chp, "\n\nRunning memory test \n \n");
    chThdSleepMilliseconds(1000);
	cmd_mem(chp, argc, argv);

	chprintf(chp, "\n\nRunning LED test \n \n");
    chThdSleepMilliseconds(1000);
	cmd_led(chp, argc, argv);

	chprintf(chp, "\n\nRunning accelerometer test \n \n");
    chThdSleepMilliseconds(1000);
	cmd_accel(chp, argc, argv);

	chprintf(chp, "\n\nRunning barometer test \n \n");
    chThdSleepMilliseconds(1000);
	cmd_barotest(chp, argc, argv);

	chprintf(chp, "\n\nRunning pyro channel test \n \n");
    chThdSleepMilliseconds(1000);
    cmd_pyro(chp, argc, argv);

	return;
}
Esempio n. 3
0
File: main.c Progetto: 12019/atmos
int main( void )
#endif
{
	iu8 i, len, b;

	/* TODO: On error? */
	hal_init();

	/* Send ATR */
	/* TODO: Possible from EEPROM? */
	hal_io_sendByteT0( 0x3B );

#if CONF_WITH_LOGGING==1
	log_init();
#endif

	resplen = 0;

#if CONF_WITH_TRANSACTIONS==1
	/* Commit transactions not yet done. */
	/* TODO: On error? */
	ta_commit();
#endif /* CONF_WITH_TRANSACTIONS */

	/* Initialize FS state in RAM. */
	/* TODO: On error? */
	fs_init();

#if CONF_WITH_PINAUTH==1
	/* Initialize authentication state. */
	/* TODO: On error? */
	auth_init();
#endif /* CONF_WITH_PINAUTH==1 */

	if( !(hal_eeprom_read( &len, ATR_LEN_ADDR, 1 ) && (len<=ATR_MAXLEN)) )
		for(;;) {} /* XXX good loop mechanism? what is it anyway */

	for( i=1; i<len; i++ ) {
		if( !hal_eeprom_read( &b, ATR_ADDR+i, 1 ) ) for(;;) {}
		hal_io_sendByteT0( b );
	}

	/* Command loop */
	for(;;) {
		for( i=0; i<5; i++ ) {
			header[i] = hal_io_recByteT0();
		}

#if CONF_WITH_KEYAUTH==1
		if( challvalidity ) challvalidity--;
#endif /* CONF_WITH_KEYAUTH==1 */

#if CONF_WITH_TRNG==1
		hal_rnd_addEntropy();
#endif /* CONF_WITH_TRNG==1 */

		if( (header[0]&0xFC)==CLA_PROP ) {
			switch( header[1]&0xFE ) {
#if CONF_WITH_TESTCMDS==1
			case INS_WRITE:
				cmd_write();
				break;
			case INS_READ:
				cmd_read();
				break;
#endif /* CONF_WITH_TESTCMDS==1 */
#if CONF_WITH_FUNNY==1
			case INS_LED:
				cmd_led();
				break;
#endif /* CONF_WITH_FUNNY==1 */
#if CONF_WITH_PINCMDS==1
			case INS_CHANGE_PIN:
				cmd_changeUnblockPIN();
				break;
#endif /* CONF_WITH_PINCMDS==1 */
#if CONF_WITH_CREATECMD==1
			case INS_CREATE:
				cmd_create();
				break;
#endif /* CONF_WITH_CREATECMD==1 */
#if CONF_WITH_DELETECMD==1
			case INS_DELETE:
				cmd_delete();
				break;
#endif /* CONF_WITH_DELETECMD==1 */
#if CONF_WITH_KEYCMDS==1
			case INS_EXTERNAL_AUTH:
				cmd_extAuth();
				break;
#endif /* CONF_WITH_KEYCMDS==1 */
#if CONF_WITH_KEYCMDS==1
			case INS_GET_CHALLENGE:
				cmd_getChallenge();
				break;
#endif /* CONF_WITH_KEYCMDS==1 */
			case INS_GET_RESPONSE:
				cmd_getResponse();
				break;
#if CONF_WITH_KEYCMDS==1
			case INS_INTERNAL_AUTH:
				cmd_intAuth();
				break;
#endif /* CONF_WITH_KEYCMDS==1 */
			case INS_READ_BINARY:
				cmd_readBinary();
				break;
			case INS_SELECT:
				cmd_select();
				break;
#if CONF_WITH_PINCMDS==1
			case INS_UNBLOCK_PIN:
				cmd_changeUnblockPIN();
				break;
#endif /* CONF_WITH_PINCMDS==1 */
			case INS_UPDATE_BINARY:
				cmd_updateBinary();
				break;
#if CONF_WITH_KEYCMDS==1
			case INS_VERIFY_KEY:
				cmd_verifyKeyPIN();
				break;
#endif /* CONF_WITH_KEYCMDS==1 */
#if CONF_WITH_PINCMDS==1
			case INS_VERIFY_PIN:
				cmd_verifyKeyPIN();
				break;
#endif /* CONF_WITH_PINCMDS==1 */
			default:
				t0_sendWord( SW_WRONG_INS );
			}
		} else {
			t0_sendWord( SW_WRONG_CLA );
		}

#if CONF_WITH_TRNG==1
		hal_rnd_addEntropy();
#endif

		/* Return the SW in sw */
		t0_sendSw();
	}
}