/*
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/>.
*/
// ATmega pin defs
// bit masks
/* 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 uint8_t debounce_matrix;
static matrix_row_t ;
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
// Returns a matrix_row_t whose bits are set if the corresponding key should be
// eligible to change in this scan.
matrix_row_t
matrix_row_t
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