]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - common/matrix.h
Matrix power saving
[tmk_firmware.git] / common / matrix.h
index c4b2cab51835b8186968187e93b8bf8907acff79..23fef78f74c8cc15d12e38f95bca47dec2947910 100644 (file)
@@ -18,8 +18,23 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef MATRIX_H
 #define MATRIX_H
 
+#include <stdint.h>
 #include <stdbool.h>
 
+
+#if (MATRIX_COLS <= 8)
+typedef  uint8_t    matrix_row_t;
+#elif (MATRIX_COLS <= 16)
+typedef  uint16_t   matrix_row_t;
+#elif (MATRIX_COLS <= 32)
+typedef  uint32_t   matrix_row_t;
+#else
+#error "MATRIX_COLS: invalid value"
+#endif
+
+#define MATRIX_IS_ON(row, col)  (matrix_get_row(row) && (1<<col))
+
+
 /* number of matrix rows */
 uint8_t matrix_rows(void);
 /* number of matrix columns */
@@ -29,21 +44,18 @@ void matrix_init(void);
 /* scan all key states on matrix */
 uint8_t matrix_scan(void);
 /* whether modified from previous scan. used after matrix_scan. */
-bool matrix_is_modified(void);
-/* whether ghosting occur on matrix. */
-bool matrix_has_ghost(void);
+bool matrix_is_modified(void) __attribute__ ((deprecated));
 /* whether a swtich is on */
 bool matrix_is_on(uint8_t row, uint8_t col);
 /* matrix state on row */
-#if (MATRIX_COLS <= 8)
-uint8_t matrix_get_row(uint8_t row);
-#else
-uint16_t matrix_get_row(uint8_t row);
-#endif
-/* count keys pressed */
-uint8_t matrix_key_count(void);
+matrix_row_t  matrix_get_row(uint8_t row);
 /* print matrix for debug */
 void matrix_print(void);
 
 
+/* power control */
+void matrix_power_up(void);
+void matrix_power_down(void);
+
+
 #endif