]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - Scan/Kaypro1/scan_loop.c
Merge branch 'master' of github.com:kiibohd/controller
[kiibohd-controller.git] / Scan / Kaypro1 / scan_loop.c
index 74485e675a3504e65e21c9ed2af4a0dc2cc828d6..be17c9e8de60be1f2c91af2710f372659da3a595 100644 (file)
@@ -1,15 +1,15 @@
-/* Copyright (C) 2011 by Jacob Alexander
- * 
+/* Copyright (C) 2011-2014 by Jacob Alexander
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -21,9 +21,8 @@
 
 // ----- Includes -----
 
-// AVR Includes
-#include <avr/interrupt.h>
-#include <avr/io.h>
+// Compiler Includes
+#include <Lib/ScanLib.h>
 
 // Project Includes
 #include <led.h>
 
 // ----- Macros -----
 
-// Make sure we haven't overflowed the buffer
-#define bufferAdd(byte) \
-               if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
-                       KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte
-
 
 
 // ----- Variables -----
@@ -67,14 +61,14 @@ static uint8_t cmd_ACK_AA    = 0x10; // Keyboard will send ack (0xAA) back to PC
 // ----- Functions -----
 
 // Setup
-inline void scan_setup()
+inline void Scan_setup()
 {
        // Setup the the USART interface for keyboard data input
-       
+
        // Setup baud rate
        // 16 MHz / ( 16 * Baud ) = UBRR
        // Baud <- 3.358 ms per bit, thus 1000 / 3.358 = 297.80
-       // Thus baud = 3357
+       // Thus USBRR = 3357
        uint16_t baud = 3357; // Max setting of 4095
        UBRR1H = (uint8_t)(baud >> 8);
        UBRR1L = (uint8_t)baud;
@@ -93,7 +87,7 @@ inline void scan_setup()
 // Nothing is needed here for the Kaypro, but the function is available as part of the api to be called in a polling fashion
 // TODO
 //  - Add songs :D
-inline uint8_t scan_loop()
+inline uint8_t Scan_loop()
 {
        // We *could* do extra offline processing here, but, it's not really needed for the Kaypro 1 keyboard
        return 0;
@@ -127,7 +121,7 @@ ISR(USART1_RX_vect)
        case 0x09: // ^I
        case 0x0D: // ^M
        case 0x1B: // ^[
-               bufferAdd( keyValue );
+               Macro_bufferAdd( keyValue );
                break;
        // 0x40 Offset Keys
        // Add Ctrl key and offset to the lower alphabet
@@ -136,8 +130,8 @@ ISR(USART1_RX_vect)
        case 0x1D: // ^]
        case 0x1E: // ^^
        case 0x1F: // ^_
-               bufferAdd( 0xF6 );
-               bufferAdd( keyValue + 0x40 );
+               Macro_bufferAdd( 0xF6 );
+               Macro_bufferAdd( keyValue + 0x40 );
                break;
 
        // - Add Shift key and offset to non-shifted key -
@@ -146,73 +140,73 @@ ISR(USART1_RX_vect)
        case 0x23: // #
        case 0x24: // $
        case 0x25: // %
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x10 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x10 );
                break;
        // 0x11 Offset Keys
        case 0x26: // &
        case 0x28: // (
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x11 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x11 );
                break;
        // 0x07 Offset Keys
        case 0x29: // )
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x07 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x07 );
                break;
        // -0x0E Offset Keys
        case 0x40: // @
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue - 0x0E );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue - 0x0E );
                break;
        // 0x0E Offset Keys
        case 0x2A: // *
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x0E );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x0E );
                break;
        // 0x12 Offset Keys
        case 0x2B: // +
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x12 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x12 );
                break;
        // 0x05 Offset Keys
        case 0x22: // "
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x05 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x05 );
                break;
        // 0x01 Offset Keys
        case 0x3A: // :
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue + 0x01 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue + 0x01 );
                break;
        // -0x10 Offset Keys
        case 0x3C: // <
        case 0x3E: // >
        case 0x3F: // ?
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue - 0x10 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue - 0x10 );
                break;
        // -0x28 Offset Keys
        case 0x5E: // ^
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue - 0x28 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue - 0x28 );
                break;
        // -0x32 Offset Keys
        case 0x5F: // _
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue - 0x32 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue - 0x32 );
                break;
        // -0x20 Offset Keys
        case 0x7B: // {
        case 0x7C: // |
        case 0x7D: // }
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue - 0x20 );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue - 0x20 );
                break;
        // -0x1E Offset Keys
        case 0x7E: // ~
-               bufferAdd( 0xF5 );
-               bufferAdd( keyValue - 0x1E );
+               Macro_bufferAdd( 0xF5 );
+               Macro_bufferAdd( keyValue - 0x1E );
                break;
        // All other keys
        default:
@@ -227,8 +221,8 @@ ISR(USART1_RX_vect)
                // Add Ctrl key and offset to the lower alphabet
                if ( keyValue >= 0x00 && keyValue <= 0x1F )
                {
-                       bufferAdd( 0xF6 );
-                       bufferAdd( keyValue + 0x60 );
+                       Macro_bufferAdd( 0xF6 );
+                       Macro_bufferAdd( keyValue + 0x60 );
                }
 
                // Shift Characters are from 0x41 to 0x59
@@ -236,14 +230,14 @@ ISR(USART1_RX_vect)
                // Add Shift key and offset to the lower alphabet
                else if ( keyValue >= 0x41 && keyValue <= 0x5A )
                {
-                       bufferAdd( 0xF5 );
-                       bufferAdd( keyValue + 0x20 );
+                       Macro_bufferAdd( 0xF5 );
+                       Macro_bufferAdd( keyValue + 0x20 );
                }
 
                // Everything else
                else
                {
-                       bufferAdd( keyValue );
+                       Macro_bufferAdd( keyValue );
                }
                break;
        }
@@ -255,22 +249,55 @@ ISR(USART1_RX_vect)
        case 0xC3: // Keypad Enter
                print("\n");
                info_print("BEEEEP! - Clicker on");
-               UDR1 = cmd_clickON;
+               scan_sendData( cmd_clickON );
                break;
 
        case 0xB2: // Keypad Decimal
                print("\n");
                info_print("BEEP! - Clicker off");
-               UDR1 = cmd_clickOFF;
+               scan_sendData( cmd_clickOFF );
                break;
 
        case 0x0A: // Line Feed
                print("\n");
                info_print("ACK!!");
-               UDR1 = cmd_ACK_AA;
+               scan_sendData( cmd_ACK_AA );
                break;
        }
 
        sei(); // Re-enable Interrupts
 }
 
+// Send data
+uint8_t Scan_sendData( uint8_t dataPayload )
+{
+       UDR1 = dataPayload;
+       return 0;
+}
+
+// Signal KeyIndex_Buffer that it has been properly read
+void Scan_finishedWithBuffer( uint8_t sentKeys )
+{
+}
+
+// Signal that the keys have been properly sent over USB
+void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
+{
+}
+
+// Reset/Hold keyboard
+// NOTE: Does nothing with the BETKB
+void Scan_lockKeyboard( void )
+{
+}
+
+// NOTE: Does nothing with the BETKB
+void Scan_unlockKeyboard( void )
+{
+}
+
+// Reset Keyboard
+void Scan_resetKeyboard( void )
+{
+}
+