X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Scan%2FMatrixARM%2Fmatrix_scan.h;h=810e6d9ddee0146a1f8a580ecb21750003aa3fb1;hb=98f796d4df16c5aa14d0d07a5250c589dfb5f13a;hp=bdf727e531abf5c3bf11d20a7e0659be3aa1bd2c;hpb=d6345c307fa4c64deb3f293fe91760f05c928120;p=kiibohd-controller.git diff --git a/Scan/MatrixARM/matrix_scan.h b/Scan/MatrixARM/matrix_scan.h index bdf727e..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,19 +132,17 @@ typedef struct GPIO_Pin { // Debounce Element typedef struct KeyState { - KeyPosition prevState; - KeyPosition curState; - uint8_t activeCount; - uint8_t inactiveCount; -} KeyState; + DebounceCounter activeCount; + DebounceCounter inactiveCount; + KeyPosition prevState; + KeyPosition curState; + uint8_t prevDecisionTime; +} __attribute__((packed)) KeyState; // ----- Functions ----- void Matrix_setup(); -void Matrix_scan( uint16_t scanNum, uint8_t firstScan ); - - -#endif // __MATRIX_SCAN_H +void Matrix_scan( uint16_t scanNum );