• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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