/** \file debug.c:
 * Due to the missing debugging capabilities of the hardware
 * we had to write our own debugging functions that output the variable 
 * over MIDI. For every data type there is a different debug function. 
 */

void debug(char *string) {
	MIOS_MIDI_BeginStream;
	MIOS_MIDI_TxBufferPut(0xF0);							//SYSEX START
	MIOS_MIDI_TxBufferPut(0x55);							//MANUFACTUR CODE 0x55
	MIOS_MIDI_TxBufferPut(0x44);							//"D"
	MIOS_MIDI_TxBufferPut(0x42);							//"B"
	MIOS_MIDI_TxBufferPut(0x47);							//"G"
	MIOS_MIDI_TxBufferPut(0x00);							//"0"
	while(*string)
		MIOS_MIDI_TxBufferPut(*(string++));
	MIOS_MIDI_TxBufferPut(0xF7);							//SYSEX STOP
	MIOS_MIDI_EndStream;
}

void debugb(unsigned char b) {
	unsigned long mod;
	MIOS_MIDI_BeginStream;
	MIOS_MIDI_TxBufferPut(0xF0);							//SYSEX START
	MIOS_MIDI_TxBufferPut(0x55);							//MANUFACTUR CODE 0x55
	MIOS_MIDI_TxBufferPut(0x44);							//"D"
	MIOS_MIDI_TxBufferPut(0x42);							//"B"
	MIOS_MIDI_TxBufferPut(0x47);							//"G"
	MIOS_MIDI_TxBufferPut(0x00);							//"0"
	MIOS_MIDI_TxBufferPut(b&0x7F);							//CHAR VALUES
	MIOS_MIDI_TxBufferPut(0xF7);							//SYSEX STOP
	MIOS_MIDI_EndStream;
}

void debugc(unsigned char c) {
	unsigned long mod;
	MIOS_MIDI_BeginStream;
	MIOS_MIDI_TxBufferPut(0xF0);							//SYSEX START
	MIOS_MIDI_TxBufferPut(0x55);							//MANUFACTUR CODE 0x55
	MIOS_MIDI_TxBufferPut(0x44);							//"D"
	MIOS_MIDI_TxBufferPut(0x42);							//"B"
	MIOS_MIDI_TxBufferPut(0x47);							//"G"
	MIOS_MIDI_TxBufferPut(0x00);							//"0"
	for (mod=1000; mod>1; mod/=10)
		MIOS_MIDI_TxBufferPut(/*0x30+*/(c%mod)/(mod/10));	//CHAR VALUES
	MIOS_MIDI_TxBufferPut(0xF7);							//SYSEX STOP
	MIOS_MIDI_EndStream;
}

void debugi(unsigned int i) {
	unsigned long mod;
	MIOS_MIDI_BeginStream;
	MIOS_MIDI_TxBufferPut(0xF0);							//SYSEX START
	MIOS_MIDI_TxBufferPut(0x55);							//MANUFACTUR CODE 0x55
	MIOS_MIDI_TxBufferPut(0x44);							//"D"
	MIOS_MIDI_TxBufferPut(0x42);							//"B"
	MIOS_MIDI_TxBufferPut(0x47);							//"G"
	MIOS_MIDI_TxBufferPut(0x00);							//"0"
	for (mod=100000; mod>1; mod/=10)
		MIOS_MIDI_TxBufferPut(/*0x30+*/(i%mod)/(mod/10));	//CHAR VALUES
	MIOS_MIDI_TxBufferPut(0xF7);							//SYSEX STOP
	MIOS_MIDI_EndStream;
}

void debugl(unsigned long l) {
	unsigned long mod;
	unsigned char c,i;
	MIOS_MIDI_BeginStream;
	MIOS_MIDI_TxBufferPut(0xF0);							//SYSEX START
	MIOS_MIDI_TxBufferPut(0x55);							//MANUFACTUR CODE 0x55
	MIOS_MIDI_TxBufferPut(0x44);							//"D"
	MIOS_MIDI_TxBufferPut(0x42);							//"B"
	MIOS_MIDI_TxBufferPut(0x47);							//"G"
	MIOS_MIDI_TxBufferPut(0x00);							//"0"
	for (mod=1000000000; mod>1; mod/=10)
		MIOS_MIDI_TxBufferPut(/*0x30+*/(l%mod)/(mod/10));	//CHAR VALUES
	MIOS_MIDI_TxBufferPut(0xF7);							//SYSEX STOP
	MIOS_MIDI_EndStream;
}
