2012-10-04 19:07:06 +00:00
/* Copyright (C) 2011-2012 by Jacob Alexander
2011-09-29 06:25:51 +00:00
*
* 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
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE .
*/
# ifndef __SCAN_LOOP_H
# define __SCAN_LOOP_H
2011-09-30 05:22:19 +00:00
// ----- Includes -----
2011-10-16 03:01:46 +00:00
// Compiler Includes
# include <stdint.h>
2011-09-30 05:22:19 +00:00
// Local Includes
2011-10-16 03:01:46 +00:00
# include "matrix_scan.h"
// Matrix Configuration
# include <matrix.h>
// ----- Defines -----
2011-11-29 06:20:04 +00:00
# define KEYBOARD_BUFFER 24 // Max number of key signals to buffer
2011-10-16 03:01:46 +00:00
// ----- Variables -----
// NOTE: Highest Bit: Valid keypress (0x80 is valid keypress)
// Other Bits: Pressed state sample counter
2013-01-27 03:30:36 +00:00
extern uint8_t KeyIndex_Array [ KEYBOARD_KEYS + 1 ] ;
static const uint8_t KeyIndex_Size = KEYBOARD_KEYS ;
2011-11-29 06:20:04 +00:00
extern volatile uint8_t KeyIndex_Buffer [ KEYBOARD_BUFFER ] ;
extern volatile uint8_t KeyIndex_BufferUsed ;
2012-10-04 19:07:06 +00:00
extern volatile uint8_t KeyIndex_Add_InputSignal ;
2011-09-30 05:22:19 +00:00
// ----- Functions -----
2011-09-29 06:25:51 +00:00
2011-10-01 07:54:18 +00:00
void scan_setup ( void ) ;
2011-10-16 03:01:46 +00:00
uint8_t scan_loop ( void ) ;
2011-09-29 06:25:51 +00:00
2011-12-19 03:02:56 +00:00
// Functions available to macro.c
uint8_t scan_sendData ( uint8_t dataPayload ) ;
2013-01-21 03:36:05 +00:00
void scan_finishedWithBuffer ( uint8_t sentKeys ) ;
void scan_finishedWithUSBBuffer ( uint8_t sentKeys ) ;
2011-12-19 03:02:56 +00:00
void scan_lockKeyboard ( void ) ;
void scan_unlockKeyboard ( void ) ;
void scan_resetKeyboard ( void ) ;
2011-09-29 06:25:51 +00:00
# endif // __SCAN_LOOP_H