1 /* 2 * Copyright (c) 2021 Bestechnic (Shanghai) Co., Ltd. All rights reserved. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef __HAL_GPADC_H__ 16 #define __HAL_GPADC_H__ 17 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 #define HAL_GPADC_BAD_VALUE 0xFFFF 23 24 enum HAL_GPADC_CHAN_T { 25 HAL_GPADC_CHAN_0 = 0, 26 HAL_GPADC_CHAN_BATTERY = 1, 27 HAL_GPADC_CHAN_2 = 2, 28 HAL_GPADC_CHAN_3 = 3, 29 HAL_GPADC_CHAN_4 = 4, 30 HAL_GPADC_CHAN_5 = 5, 31 HAL_GPADC_CHAN_6 = 6, 32 HAL_GPADC_CHAN_ADCKEY = 7, 33 HAL_GPADC_CHAN_QTY, 34 }; 35 36 enum HAL_GPADC_ATP_T { 37 HAL_GPADC_ATP_NULL = 0, 38 HAL_GPADC_ATP_125US = 125, 39 HAL_GPADC_ATP_500US = 500, 40 HAL_GPADC_ATP_1MS = 1000, 41 HAL_GPADC_ATP_2MS = 2000, 42 HAL_GPADC_ATP_5MS = 5000, 43 HAL_GPADC_ATP_10MS = 10000, 44 HAL_GPADC_ATP_20MS = 20000, 45 HAL_GPADC_ATP_30MS = 30000, 46 HAL_GPADC_ATP_40MS = 40000, 47 HAL_GPADC_ATP_50MS = 50000, 48 HAL_GPADC_ATP_60MS = 60000, 49 HAL_GPADC_ATP_ONESHOT = -1, 50 }; 51 52 enum HAL_ADCKEY_IRQ_T { 53 HAL_ADCKEY_IRQ_NONE = 0, 54 HAL_ADCKEY_IRQ_PRESSED = (1 << 0), 55 HAL_ADCKEY_IRQ_RELEASED = (1 << 1), 56 HAL_ADCKEY_IRQ_BOTH = (HAL_ADCKEY_IRQ_PRESSED | HAL_ADCKEY_IRQ_RELEASED), 57 }; 58 59 enum HAL_ADCKEY_IRQ_STATUS_T { 60 HAL_ADCKEY_ADC_VALID = (1 << 0), 61 HAL_ADCKEY_RELEASED = (1 << 1), 62 HAL_ADCKEY_PRESSED = (1 << 2), 63 HAL_ADCKEY_ERR0 = (1 << 3), 64 HAL_ADCKEY_ERR1 = (1 << 4), 65 }; 66 67 typedef uint16_t HAL_GPADC_MV_T; 68 69 typedef void (*HAL_GPADC_EVENT_CB_T)(uint16_t raw_val, HAL_GPADC_MV_T volt); 70 typedef void (*HAL_ADCKEY_EVENT_CB_T)(enum HAL_ADCKEY_IRQ_STATUS_T irq_status, uint16_t raw_val); 71 72 int hal_gpadc_masked_irq_valid(uint16_t irq); 73 74 uint16_t hal_gpadc_filter_out_unmasked_irq(uint16_t irq); 75 76 int hal_gpadc_open(enum HAL_GPADC_CHAN_T channel, enum HAL_GPADC_ATP_T atp, HAL_GPADC_EVENT_CB_T cb); 77 78 bool hal_gpadc_get_volt(enum HAL_GPADC_CHAN_T ch, HAL_GPADC_MV_T *volt); 79 80 int hal_gpadc_close(enum HAL_GPADC_CHAN_T channel); 81 82 void hal_gpadc_sleep(void); 83 84 void hal_gpadc_wakeup(void); 85 86 void hal_adckey_set_irq_handler(HAL_ADCKEY_EVENT_CB_T cb); 87 88 int hal_adckey_set_irq(enum HAL_ADCKEY_IRQ_T type); 89 90 #ifdef __cplusplus 91 } 92 #endif 93 94 #endif//__FMDEC_H__ 95