]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - Scan/SonyNEWS/scan_loop.c
Completing the HP150 converter.
[kiibohd-controller.git] / Scan / SonyNEWS / scan_loop.c
index f2291ee923627df56dff3f95cf30b13f3ecd511c..ca4d0bbb33716c9974e5871b43247d9f94a678bb 100644 (file)
 // ----- Defines -----
 
 // Pinout Defines
-#define RESET_PORT PORTB
-#define RESET_DDR   DDRD
-#define RESET_PIN      0
+#define SPKR_PORT PORTD
+#define SPKR_DDR   DDRD
+#define SPKR_POS      1
+
+#define POWR_PORT PORTC
+#define POWR_DDR   DDRC
+#define POWR_POS      7
+
 
 
 // ----- Macros -----
@@ -50,9 +55,6 @@
                if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
                        KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte
 
-#define UNSET_RESET()   RESET_DDR &= ~(1 << RESET_PIN)
-#define   SET_RESET()   RESET_DDR |=  (1 << RESET_PIN)
-
 
 
 // ----- Variables -----
@@ -89,11 +91,20 @@ inline void scan_setup()
        // Asynchrounous USART mode
        UCSR1C = 0x06;
 
+       // Set Speaker Pin to Pull-Up gives a low-volume click (XXX no other setting does, why?)
+       SPKR_DDR  &= ~(1 << SPKR_POS);
+       SPKR_PORT |= (1 << SPKR_POS);
+
+       // Set Power Pin (I've traced this back to the "Power On" Switch, but I don't really know what it's for)
+       // Configured as a Pull-up Input - This pin "can" be read as well, it will go to GND when the "Power On" switch is pressed, and will read ~5V otherwise
+       // XXX Currently not used by the controller
+       POWR_DDR  &= ~(1 << POWR_POS);
+       POWR_PORT |= (1 << POWR_POS); 
+
        // Reset the keyboard before scanning, we might be in a wierd state
        scan_resetKeyboard();
 }
 
-
 // Main Detection Loop
 // Not needed for the Sony NEWS, this is just a busy loop
 inline uint8_t scan_loop()
@@ -140,7 +151,7 @@ void processKeyValue( uint8_t keyValue )
                        erro_dPrint( "Could not find key to release: ", tmpStr );
                }
        }
-       // Press or Repeat Rate
+       // Press or Repeated Key
        else
        {
                // Make sure the key isn't already in the buffer
@@ -177,22 +188,20 @@ ISR(USART1_RX_vect)
        dPrintStrs( tmpStr, " " );
 
        // Process the scancode
-       processKeyValue( keyValue );
+       if ( keyValue != 0x00 )
+               processKeyValue( keyValue );
 
        sei(); // Re-enable Interrupts
 }
 
-// Send data TODO
-//
-// Keyboard Input Guide for Micro Switch 8304
-// 0xBX is for LED F1,F2,Over Type,Lock
-// 0xAX is for LED F3,F8,F9,F10
-// 0x92 resets keyboard (LED off, echo scancode mode off)
-// 0x9E sets echo scancode mode from (0x81 to 0xFF; translates to 0x01 to 0x7F)
-// Other echos: 0x15~0x19 send 0x15~0x19, 0x40 sends 0x40 (as well as 0x44,0x45, 0x80)
-// 0x8C Acks the keyboard and gets 0x70 sent back (delayed)
+// Send data to keyboard
 uint8_t scan_sendData( uint8_t dataPayload )
 {
+       // Debug
+       char tmpStr[6];
+       hexToStr( dataPayload, tmpStr );
+       info_dPrint( tmpStr, " " );
+
        UDR1 = dataPayload;
        return 0;
 }
@@ -206,24 +215,23 @@ void scan_finishedWithBuffer( void )
 
 // Reset/Hold keyboard TODO
 // Warning! This will cause the keyboard to not send any data, so you can't disable with a keypress
-// The Micro Switch 8304 has a dedicated reset line
 void scan_lockKeyboard( void )
 {
-       //UNSET_RESET();
 }
 
 void scan_unlockKeyboard( void )
 {
-       //SET_RESET();
 }
 
-// Reset Keyboard TODO
+// Reset Keyboard
 void scan_resetKeyboard( void )
 {
-       // Reset command for the 8304
-       //scan_sendData( 0x92 );
-
        // Empty buffer, now that keyboard has been reset
        KeyIndex_BufferUsed = 0;
 }
 
+void scan_finishedWithUSBBuffer( void )
+{
+       return;
+}
+