changeset 38:f7e1c9883d50

Small macro update for debugging the Sony NEWS
author Jacob Alexander <triplehaata@gmail.com>
date Tue, 06 Dec 2011 23:49:56 -0800
parents 7f65034538ea
children 8e11cdc1aee4
files CMakeLists.txt Macro/buffer/macro.c Scan/SonyNEWS/scan_loop.c
diffstat 3 files changed, 73 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Sun Dec 04 19:55:32 2011 -0800
+++ b/CMakeLists.txt	Tue Dec 06 23:49:56 2011 -0800
@@ -64,7 +64,8 @@
 #| "atmega32u4"       # Teensy   2.0
 #| "at90usb646"       # Teensy++ 1.0
 #| "at90usb1286"      # Teensy++ 2.0
-set( MCU "at90usb1286" )
+set( MCU "atmega32u4" )
+#set( MCU "at90usb1286" )
 
 
 #| Compiler flag to set the C Standard level.
--- a/Macro/buffer/macro.c	Sun Dec 04 19:55:32 2011 -0800
+++ b/Macro/buffer/macro.c	Tue Dec 06 23:49:56 2011 -0800
@@ -174,6 +174,61 @@
 }
 */
 
+// Scancode Macro Detection
+int scancodeMacro( uint8_t scanCode )
+{
+	/*
+	if ( scanCode == 0x7A )
+	{
+		scan_resetKeyboard();
+	}
+	else
+	{
+		scan_sendData( scanCode );
+		_delay_ms( 200 );
+		scan_sendData( 0x80 | scanCode );
+	}
+	return 1;
+	*/
+	return 0;
+}
+
+uint8_t sendCode = 0;
+
+// USBCode Macro Detection
+int usbcodeMacro( uint8_t usbCode )
+{
+	// Keyboard Input Test Macro
+	switch ( usbCode )
+	{
+	case KEY_F1:
+		sendCode--;
+		scan_sendData( 0x90 );
+		scan_sendData( sendCode );
+		_delay_ms( 200 );
+		break;
+
+	case KEY_F2:
+		scan_sendData( 0x90 );
+		scan_sendData( sendCode );
+		_delay_ms( 200 );
+		break;
+
+	case KEY_F3:
+		sendCode++;
+		scan_sendData( 0x90 );
+		scan_sendData( sendCode );
+		_delay_ms( 200 );
+		break;
+
+	default:
+		return 0;
+	}
+	
+	return 1;
+}
+
+
 // Given a list of keypresses, translate into the USB key codes
 // The buffer is cleared after running
 // If the buffer doesn't fit into the USB send array, the extra keys are dropped
@@ -185,6 +240,16 @@
 		// Get the keycode from the buffer
 		uint8_t key = KeyIndex_Buffer[index];
 
+		// Check key for special usages using the scancode
+		// If non-zero return, ignore normal processing of the scancode
+		if ( scancodeMacro( key ) )
+			continue;
+
+		// Check key for special usages using the usbcode
+		// If non-zero return, ignore normal processing of the usbcode
+		if ( usbcodeMacro( map[key] ) )
+			continue;
+
 		// Determine if the key is a modifier
 		uint8_t modFound = 0;
 		for ( uint8_t mod = 0; mod < numberOfModifiers; mod++ ) {
--- a/Scan/SonyNEWS/scan_loop.c	Sun Dec 04 19:55:32 2011 -0800
+++ b/Scan/SonyNEWS/scan_loop.c	Tue Dec 06 23:49:56 2011 -0800
@@ -177,6 +177,7 @@
 	dPrintStrs( tmpStr, " " );
 
 	// Process the scancode
+	if ( keyValue != 0x00 )
 	processKeyValue( keyValue );
 
 	sei(); // Re-enable Interrupts
@@ -193,6 +194,11 @@
 // 0x8C Acks the keyboard and gets 0x70 sent back (delayed)
 uint8_t scan_sendData( uint8_t dataPayload )
 {
+	// Debug
+	char tmpStr[6];
+	hexToStr( dataPayload, tmpStr );
+	info_dPrint( tmpStr, " " );
+
 	UDR1 = dataPayload;
 	return 0;
 }