/* -*- mode: c++ -*-
* Kaleidoscope-Hardware-EZ-ErgoDox -- ErgoDox hardware support for Kaleidoscope
* Copyright (C) 2018, 2019 Keyboard.io, Inc
*
* Based on QMK (commit 8cdb4a915)
* (C) Jack Humbert, Erez Zukerman, Oleg Kostyuk
* Original QMK sources:
* - keyboards/ergodox_ez/ergodox_ez.c
* - keyboards/ergodox_ez/ergodox_ez.h
* - keyboards/ergodox_ez/matrix.c
*
* 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 3 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 .
*/
#pragma once
#ifdef ARDUINO_AVR_ERGODOX
#include
namespace kaleidoscope {
namespace device {
namespace ez {
class ErgoDoxScanner {
public:
ErgoDoxScanner() {}
void begin();
void toggleATMegaRow(int row);
void selectExtenderRow(int row);
uint8_t readCols(int row);
void reattachExpanderOnError();
private:
uint8_t expander_error_ = 0x20;
uint8_t initExpander();
};
}
}
}
#endif