| #include "ql_gpio.h" |
| #include "mbtk_gpio.h" |
| #include "mbtk_log.h" |
| #include "mbtk_type.h" |
| |
| #include <errno.h> |
| |
| int ql_gpio_init(ENUM_PINNAME pin_name, |
| ENUM_PIN_DIRECTION dir, |
| ENUM_PIN_LEVEL level, |
| ENUM_PIN_PULLSEL pull_sel |
| ) |
| { |
| if(pull_sel != PINPULLSEL_DISABLE) |
| { |
| LOGE("[ql_gpio_init] pull_sel fail."); |
| return RES_BAD_PARAMETER; |
| } |
| |
| if(dir == PINDIRECTION_IN) |
| { |
| dir = MBTK_GPIO_DIRECT_IN; |
| } |
| else if(dir == PINDIRECTION_OUT) |
| { |
| dir = MBTK_GPIO_DIRECT_OUT; |
| } |
| else |
| { |
| dir = MBTK_GPIO_DIRECT_UNKNOWN; |
| LOGE("[ql_gpio_init] direction fail."); |
| return RES_BAD_PARAMETER; |
| } |
| |
| if(level != PINLEVEL_LOW && level != PINLEVEL_HIGH) |
| { |
| LOGE("[ql_gpio_init] level fail."); |
| return RES_BAD_PARAMETER; |
| } |
| |
| if(mbtk_gpio_export(pin_name)) |
| { |
| LOGE("[ql_gpio_init]gpio_export fail."); |
| return RES_IO_ERROR; |
| } |
| |
| if(mbtk_gpio_direct_set(pin_name, dir)) |
| { |
| LOGE("[ql_gpio_init]gpio_direct_set fail."); |
| return RES_IO_ERROR; |
| } |
| |
| if(mbtk_gpio_value_set_2(pin_name, level)) |
| { |
| LOGE("[ql_gpio_init]gpio_value_set fail."); |
| return RES_IO_ERROR; |
| } |
| |
| return RES_OK; |
| } |
| |
| int ql_gpio_set_level(ENUM_PINNAME pin_name, ENUM_PIN_LEVEL level) |
| { |
| if(level != PINLEVEL_LOW && level != PINLEVEL_HIGH) |
| { |
| LOGE("[ql_gpio_set_level] level fail."); |
| return RES_BAD_PARAMETER; |
| } |
| |
| if(mbtk_gpio_value_set_2(pin_name, level) != 0) |
| { |
| LOGE("[ql_gpio_set_level]gpio_value_set fail."); |
| return RES_IO_ERROR; |
| } |
| |
| return RES_OK; |
| } |
| |
| int ql_gpio_get_level(ENUM_PINNAME pin_name) |
| { |
| int ret; |
| |
| ret = mbtk_gpio_value_get(pin_name); |
| if (ret == -1) |
| { |
| LOGE("[ql_gpio_set_level]gpio_value_set fail."); |
| return RES_IO_ERROR; |
| } |
| |
| return ret; |
| } |
| |
| int ql_gpio_set_direction(ENUM_PINNAME pin_name, ENUM_PIN_DIRECTION dir) |
| { |
| if(dir == PINDIRECTION_IN) |
| { |
| dir = MBTK_GPIO_DIRECT_IN; |
| } |
| else if(dir == PINDIRECTION_OUT) |
| { |
| dir = MBTK_GPIO_DIRECT_OUT; |
| } |
| else |
| { |
| dir = MBTK_GPIO_DIRECT_UNKNOWN; |
| LOGE("[ql_gpio_init] direction fail."); |
| return RES_BAD_PARAMETER; |
| } |
| |
| if(mbtk_gpio_direct_set(pin_name, dir)) |
| { |
| LOGE("[ql_gpio_set_direction]gpio_direct_set fail."); |
| return RES_IO_ERROR; |
| } |
| |
| return RES_OK; |
| } |
| |
| int ql_gpio_uninit(ENUM_PINNAME pin_name) |
| { |
| if(mbtk_gpio_unexport(pin_name)) |
| { |
| LOGE("[ql_gpio_uninit]gpio_unexport fail."); |
| return RES_IO_ERROR; |
| } |
| |
| return RES_OK; |
| } |
| |