blob: 83149b2f8d5cef437a4baa38fde895e23382549d [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001#include "ql_gpio.h"
2#include "mbtk_gpio.h"
3#include "mbtk_log.h"
4#include "mbtk_type.h"
5
6#include <errno.h>
7
8int ql_gpio_init(ENUM_PINNAME pin_name,
9 ENUM_PIN_DIRECTION dir,
10 ENUM_PIN_LEVEL level,
11 ENUM_PIN_PULLSEL pull_sel
12 )
13{
14 if(pull_sel != PINPULLSEL_DISABLE)
15 {
16 LOGE("[ql_gpio_init] pull_sel fail.");
17 return RES_BAD_PARAMETER;
18 }
19
20 if(dir == PINDIRECTION_IN)
21 {
22 dir = MBTK_GPIO_DIRECT_IN;
23 }
24 else if(dir == PINDIRECTION_OUT)
25 {
26 dir = MBTK_GPIO_DIRECT_OUT;
27 }
28 else
29 {
30 dir = MBTK_GPIO_DIRECT_UNKNOWN;
31 LOGE("[ql_gpio_init] direction fail.");
32 return RES_BAD_PARAMETER;
33 }
34
35 if(level != PINLEVEL_LOW && level != PINLEVEL_HIGH)
36 {
37 LOGE("[ql_gpio_init] level fail.");
38 return RES_BAD_PARAMETER;
39 }
40
41 if(mbtk_gpio_export(pin_name))
42 {
43 LOGE("[ql_gpio_init]gpio_export fail.");
44 return RES_IO_ERROR;
45 }
46
47 if(mbtk_gpio_direct_set(pin_name, dir))
48 {
49 LOGE("[ql_gpio_init]gpio_direct_set fail.");
50 return RES_IO_ERROR;
51 }
52
53 if(mbtk_gpio_value_set_2(pin_name, level))
54 {
55 LOGE("[ql_gpio_init]gpio_value_set fail.");
56 return RES_IO_ERROR;
57 }
58
59 return RES_OK;
60}
61
62int ql_gpio_set_level(ENUM_PINNAME pin_name, ENUM_PIN_LEVEL level)
63{
64 if(level != PINLEVEL_LOW && level != PINLEVEL_HIGH)
65 {
66 LOGE("[ql_gpio_set_level] level fail.");
67 return RES_BAD_PARAMETER;
68 }
69
70 if(mbtk_gpio_value_set_2(pin_name, level) != 0)
71 {
72 LOGE("[ql_gpio_set_level]gpio_value_set fail.");
73 return RES_IO_ERROR;
74 }
75
76 return RES_OK;
77}
78
79int ql_gpio_get_level(ENUM_PINNAME pin_name)
80{
81 int ret;
82
83 ret = mbtk_gpio_value_get(pin_name);
84 if (ret == -1)
85 {
86 LOGE("[ql_gpio_set_level]gpio_value_set fail.");
87 return RES_IO_ERROR;
88 }
89
90 return ret;
91}
92
93int ql_gpio_set_direction(ENUM_PINNAME pin_name, ENUM_PIN_DIRECTION dir)
94{
95 if(dir == PINDIRECTION_IN)
96 {
97 dir = MBTK_GPIO_DIRECT_IN;
98 }
99 else if(dir == PINDIRECTION_OUT)
100 {
101 dir = MBTK_GPIO_DIRECT_OUT;
102 }
103 else
104 {
105 dir = MBTK_GPIO_DIRECT_UNKNOWN;
106 LOGE("[ql_gpio_init] direction fail.");
107 return RES_BAD_PARAMETER;
108 }
109
110 if(mbtk_gpio_direct_set(pin_name, dir))
111 {
112 LOGE("[ql_gpio_set_direction]gpio_direct_set fail.");
113 return RES_IO_ERROR;
114 }
115
116 return RES_OK;
117}
118
119int ql_gpio_uninit(ENUM_PINNAME pin_name)
120{
121 if(mbtk_gpio_unexport(pin_name))
122 {
123 LOGE("[ql_gpio_uninit]gpio_unexport fail.");
124 return RES_IO_ERROR;
125 }
126
127 return RES_OK;
128}
129