X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Scan%2FMatrixARM%2Fmatrix_scan.h;h=810e6d9ddee0146a1f8a580ecb21750003aa3fb1;hb=98f796d4df16c5aa14d0d07a5250c589dfb5f13a;hp=487abef27fac7c4346de6e8a52a7eac69e1ba81d;hpb=19f42b0a81b56706db4ed7ea14e28ee146cd920a;p=kiibohd-controller.git diff --git a/Scan/MatrixARM/matrix_scan.h b/Scan/MatrixARM/matrix_scan.h index 487abef..810e6d9 100644 --- a/Scan/MatrixARM/matrix_scan.h +++ b/Scan/MatrixARM/matrix_scan.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 by Jacob Alexander +/* Copyright (C) 2014-2015 by Jacob Alexander * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -19,11 +19,33 @@ * THE SOFTWARE. */ -#ifndef __MATRIX_SCAN_H -#define __MATRIX_SCAN_H +#pragma once // ----- Includes ----- +// KLL Generated Defines +#include + + + +// ----- Defines ----- + +#if ( DebounceDivThreshold_define < 0xFF + 1 ) +#define DebounceCounter uint8_t +#elif ( DebounceDivThreshold_define < 0xFFFF + 1 ) +#define DebounceCounter uint16_t +#elif ( DebounceDivThreshold_define < 0xFFFFFFFF + 1 ) +#define DebounceCounter uint32_t +#else +#error "Debounce threshold is too high... 32 bit max. Check .kll defines." +#endif + +#if ( MinDebounceTime_define > 0xFF ) +#error "MinDebounceTime is a maximum of 255 ms" +#elif ( MinDebounceTime_define < 0x00 ) +#error "MinDebounceTime is a minimum 0 ms" +#endif + // ----- Enums ----- @@ -110,11 +132,12 @@ typedef struct GPIO_Pin { // Debounce Element typedef struct KeyState { - KeyPosition prevState; - KeyPosition curState; - uint16_t activeCount; - uint16_t inactiveCount; -} KeyState; + DebounceCounter activeCount; + DebounceCounter inactiveCount; + KeyPosition prevState; + KeyPosition curState; + uint8_t prevDecisionTime; +} __attribute__((packed)) KeyState; @@ -123,6 +146,3 @@ typedef struct KeyState { void Matrix_setup(); void Matrix_scan( uint16_t scanNum ); - -#endif // __MATRIX_SCAN_H -