/*
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// MCP Pin Defs
// ATmega pin defs
//Trackball pin defs
// Multiple for mouse moves
// multiple for mouse scroll
// bit masks
// Trackball interrupts accumulate over here. Processed on scan
// Stores prev state of mouse, high bits store direction
uint8_t trkState = 0;
uint8_t trkBtnState = 0;
volatile uint8_t tbUpCnt = 0;
volatile uint8_t tbDnCnt = 0;
volatile uint8_t tbLtCnt = 0;
volatile uint8_t tbRtCnt = 0;
/* matrix state(1:on, 0:off) */
static matrix_row_t matrix;
/*
* matrix state(1:on, 0:off)
* contains the raw values without debounce filtering of the last read cycle.
*/
static matrix_row_t raw_matrix;
// Debouncing: store for each key the number of scans until it's eligible to
// change. When scanning the matrix, ignore any changes in keys that have
// already changed in the last DEBOUNCE scans.
static matrix_row_t ;
static void ;
static void ;
static void ;
static void ;
static uint8_t mcp23018_reset_loop;
// static uint16_t mcp23018_reset_loop;
void
void
void
void
inline uint8_t
inline uint8_t
void
void
// Reads and stores a row, returning
// whether a change occurred.
static inline bool
uint8_t
bool
inline bool
inline matrix_row_t
void
uint8_t
// Remember this means ROWS
static void
static matrix_row_t
// Row pin configuration
static void
static void
// Trackball Interrupts
static void