/** * @file KEY_ATY.h * * @param Project DEVICE_GENERAL_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2026 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief functions of keys for C platform (Dev-style) * * @version * - 1_01_251112 > ATY * -# Refactor to Dev-style; remove legacy global interfaces ******************************************************************************** */ #ifndef __KEY_ATY_H #define __KEY_ATY_H #include "INCLUDE_ATY.h" /** Types and timing defaults */ #define KEY_TYPE_RELASE 0 #define KEY_TYPE_SINGLE 11 #define KEY_TYPE_LONG 21 #define KEY_TYPE_VLONG 22 #define KEY_TYPE_ACCESS_NEW 0xFF #define KEY_ATY_MAX_KEYS 8 struct KEY_ATY_Dev { uint8_t key_count; uint8_t (*readDigital)(uint8_t index); /* 1=pressed, 0=released */ float (*readAnalog)(uint8_t index); /* ADC value */ uint16_t ad_threshold; /* threshold for release */ uint16_t release_debounce_time; /* default 20ms */ uint16_t press_debounce_time; /* default 100ms */ uint16_t long_time; /* default 800ms */ uint16_t vlong_time; /* default 2400ms */ uint8_t lastKeyType[KEY_ATY_MAX_KEYS]; uint8_t keyExportType[KEY_ATY_MAX_KEYS]; uint16_t keyScanCount[KEY_ATY_MAX_KEYS]; uint16_t keyReleaseCount[KEY_ATY_MAX_KEYS]; uint8_t lock; uint8_t debugEnable; void (*LOG)(const char* s); }; uint8_t KEY_ATY_InitDev(struct KEY_ATY_Dev* dev, uint8_t key_count); void KEY_ATY_ScanDigitalDev(struct KEY_ATY_Dev* dev, uint8_t keyIndex); float KEY_ATY_ScanAnalogDev(struct KEY_ATY_Dev* dev, uint8_t keyIndex); uint8_t KEY_ATY_GetTypeDev(struct KEY_ATY_Dev* dev, uint8_t keyIndex); void KEY_ATY_AccessNewDev(struct KEY_ATY_Dev* dev, uint8_t keyIndex); #endif /* __KEY_ATY_H */ /******************************** End Of File *********************************/