Exemple #1
0
void log_printf(const char* text, ...)
{
	char tmp[500];
	va_list args;
	va_start(args,text);
	vsnprintf(tmp,500,text,args);
	va_end(args);
		
	if(sd_card_available == 0)
	{
		return;
	}
	
	char line[500];

	uint32_t millis = get_systick() / 10;
	uint32_t seconds = millis / 1000;
	uint32_t fract = millis-(seconds*1000);

	snprintf(line,500,"[%5lu.%03lu] %s",seconds,fract,tmp);
	unsigned int len = strlen(line);
	
	unsigned int bw=0;
			
	unsigned int result = f_write(&file, line, len, &bw);	

	if(result != 0)
	{
		led_fastBlink(LED_SDCARD);
		sd_card_available = 0;
		return;
	}
	if(bw != len)
	{
		led_fastBlink(LED_SDCARD);
		sd_card_available = 0;
		return;
	}
	
/*	result = f_sync(&file);
	
	if(result != 0)
	{
		led_fastBlink(LED_SDCARD);
		sd_card_available = 0;
		return;
	}
*/
}
Exemple #2
0
void app_bitman() {
	char data[16];
	decode_left2right("0098e41f1fe49800", data);
	decode_left2right("0884e43e3ee48408", data + 8);

	const struct Frame fr[BITMAN_MAX_PTN] = {
		  { { 0x08, 0x84, 0xE4, 0x1E, 0x1E, 0xE4, 0x84, 0x08 }, 400 }
		, { { 0x00, 0x98, 0xE4, 0x1F, 0x1F, 0xE4, 0x98, 0x00 }, 600 }
		, { { 0x08, 0x84, 0xE4, 0x1E, 0x1E, 0xE4, 0x84, 0x08 }, 600 }
		, { { 0x00, 0x98, 0xE4, 0x1F, 0x1F, 0xE4, 0x98, 0x00 }, 600 }
		, { { 0x00, 0x84, 0xE4, 0x14, 0x1E, 0xEE, 0x84, 0x08 }, 400 }
		, { { 0x00, 0x42, 0x72, 0x14, 0x1E, 0xFE, 0x84, 0x18 }, 200 }
		, { { 0x06, 0x04, 0x04, 0x09, 0x1E, 0xEC, 0x8E, 0x36 }, 200 }
		, { { 0x06, 0x64, 0x24, 0x3D, 0x0D, 0x7E, 0x0C, 0x0C }, 200 }

		, { { 0x66, 0x24, 0x24, 0x18, 0x99, 0x7E, 0x18, 0x00 }, 400 }
		, { { 0x66, 0x24, 0x24, 0x5A, 0x5A, 0x3C, 0x18, 0x18 }, 600 }
		, { { 0x66, 0x24, 0x24, 0x18, 0x99, 0x7E, 0x18, 0x00 }, 600 }
		, { { 0x66, 0x24, 0x24, 0x5A, 0x5A, 0x3C, 0x18, 0x18 }, 600 }
		, { { 0x66, 0x24, 0x24, 0x18, 0xB0, 0x7E, 0x30, 0x00 }, 400 }
		, { { 0x60, 0x26, 0x24, 0xBC, 0xB0, 0x78, 0x36, 0x00 }, 200 }
		, { { 0x60, 0x20, 0xA0, 0x90, 0x78, 0xF7, 0xD1, 0x08 }, 200 }
		, { { 0x00, 0x22, 0x2E, 0x28, 0xF8, 0xFF, 0x21, 0x18 }, 200 }

		, { { 0x10, 0x21, 0x27, 0x78, 0x78, 0x27, 0x21, 0x10 }, 400 }
		, { { 0x00, 0x19, 0x27, 0xF8, 0xF8, 0x27, 0x19, 0x00 }, 600 }
		, { { 0x10, 0x21, 0x27, 0x78, 0x78, 0x27, 0x21, 0x10 }, 600 }
		, { { 0x00, 0x19, 0x27, 0xF8, 0xF8, 0x27, 0x19, 0x00 }, 600 }
		, { { 0x10, 0x21, 0x77, 0x78, 0x28, 0x27, 0x21, 0x00 }, 400 }
		, { { 0x18, 0x21, 0x7F, 0x78, 0x28, 0x4E, 0x42, 0x00 }, 200 }
		, { { 0x6C, 0x71, 0x37, 0x78, 0x90, 0x20, 0x20, 0x60 }, 200 }
		, { { 0x30, 0x30, 0x7E, 0xB0, 0xBC, 0x24, 0x26, 0x60 }, 200 }

		, { { 0x00, 0x18, 0x7E, 0x99, 0x18, 0x24, 0x24, 0x66 }, 400 }
		, { { 0x18, 0x18, 0x3C, 0x5A, 0x5A, 0x24, 0x24, 0x66 }, 600 }
		, { { 0x00, 0x18, 0x7E, 0x99, 0x18, 0x24, 0x24, 0x66 }, 600 }
		, { { 0x18, 0x18, 0x3C, 0x5A, 0x5A, 0x24, 0x24, 0x66 }, 600 }
		, { { 0x00, 0x0C, 0x7E, 0x0D, 0x18, 0x24, 0x24, 0x66 }, 400 }
		, { { 0x00, 0x6C, 0x1E, 0x0D, 0x3D, 0x24, 0x64, 0x06 }, 200 }
		, { { 0x10, 0x8B, 0xEF, 0x1E, 0x09, 0x05, 0x04, 0x06 }, 200 }
		, { { 0x18, 0x84, 0xFF, 0x1F, 0x14, 0x74, 0x44, 0x00 }, 200 }
	};

//	int ptn = 0;
	int exit_triger = 0;
	int exit_count = 0;
	int	nframe = 0;		// 実行中のフレーム番号
	int	cnt = 0;		// RUN時のwaitカウンタ

	set_matrix(data);
	playMML("CDE2CDE2");

	// Bitman_Title added by 後田浩さん Thanks !
	for (;;) {
		FILL("191A3C5898242466"); // title
		FLUSH();
		if (ux_btn()) break;
	}
	set_systick(0);
	for (;;) {
		WAIT(10);
		if (!ux_state()) break;
		if (get_systick() > 10000) return;
	}
	// end_of_Bitman_Title

	playMML("C16");
	set_systick(0);
	set_matrix(fr[nframe].frame);
	for (;;) {
		WAIT(1);
		cnt++;
		if (cnt >= fr[nframe].waitms) { // 待ち時間を過ぎたら
			cnt = 0;
			playMML("<C16");

			// 次に接続されているマトリクスに送るデータ
			xprintf("MATLED SHOW ");
			for (int j = 0 ; j < 8 ; j++) xprintf("%02X", fr[nframe].frame[j]);
			xprintf("\n");

			// 次のフレームに切り替え
			nframe++;
			if (nframe == BITMAN_MAX_PTN || fr[nframe].waitms == 0) nframe = 0;	// ループして最初から
			set_matrix(fr[nframe].frame);
		}

		if (ux_state()) {	// ボタンが押されていたら
			if (exit_count == 1) return;
			if (exit_triger == get_systick()) exit_count++;
			if (exit_triger == 0) {
				playMML("C16");
				exit_triger = get_systick();
				no_sleep();
			}
		}
		if (!ux_state()) {	// ボタンが離されていたら
			exit_triger = 0;
		}
		if (get_systick() > 10000) set_systick(0);
	}
}