|
libxr
1.0
Want to be the best embedded framework
|
基于 Linux GPIO character device uAPI 的 Linux GPIO 实现 Linux GPIO implementation based on the Linux GPIO character-device uAPI More...
#include <linux_gpio.hpp>
Public Member Functions | |
| LinuxGPIO (const std::string &chip_path, unsigned int line_offset) | |
| LinuxGPIO (const LinuxGPIO &)=delete | |
| LinuxGPIO & | operator= (const LinuxGPIO &)=delete |
| bool | Read () override |
| 读取 GPIO 引脚状态。Reads the GPIO pin state. | |
| void | Write (bool value) override |
| 写入 GPIO 引脚状态。Writes the GPIO pin state. | |
| ErrorCode | EnableInterrupt () override |
| 使能 GPIO 引脚中断。Enables the GPIO pin interrupt. | |
| ErrorCode | DisableInterrupt () override |
| 禁用 GPIO 引脚中断。Disables the GPIO pin interrupt. | |
| ErrorCode | SetConfig (Configuration config) override |
| 配置 GPIO 引脚参数。Configures the GPIO pin settings. | |
Public Member Functions inherited from LibXR::GPIO | |
| GPIO () | |
| 默认构造函数。Default constructor. | |
| virtual | ~GPIO ()=default |
| 虚析构函数。Virtual destructor. | |
| ErrorCode | RegisterCallback (Callback callback) |
| 注册 GPIO 事件回调函数。Registers a callback function for GPIO events. | |
Private Types | |
| enum class | AbiVersion : uint8_t { UNKNOWN = 0 , V2 = 1 , V1 = 2 } |
| enum class | RequestKind : uint8_t { NONE = 0 , HANDLE = 1 , EVENT = 2 } |
Private Member Functions | |
| ErrorCode | OpenChip () |
| void | CloseChip () |
| void | CloseRequest () |
| ErrorCode | InitInterruptWakePipe () |
| void | CloseInterruptWakePipe () |
| void | NotifyInterruptThread () |
| void | WaitForInterruptLoopIdle () |
| void | WaitForInterruptThreadStopped () |
| ErrorCode | DetectAbiVersion () |
| ErrorCode | ReopenRequest (Configuration config) |
| ErrorCode | OpenRequestV2 (Configuration config) |
| ErrorCode | ReconfigureRequestV2 (Configuration config) |
| ErrorCode | OpenRequestV1 (Configuration config) |
| ErrorCode | ReconfigureRequestV1 (Configuration config) |
| ErrorCode | PumpEventQueue (int fd, AbiVersion abi_version, size_t &event_count, int timeout_ms) const |
| ErrorCode | ReadEventsV2 (int fd, size_t &event_count) const |
| ErrorCode | ReadEventsV1 (int fd, size_t &event_count) const |
| void | StartInterruptThread () |
| void | InterruptLoop () |
| ErrorCode | EnsureConfigured () const |
| bool | NeedsRequestReopen (Configuration config) const |
Static Private Member Functions | |
| static bool | IsInterruptDirection (Direction direction) |
Private Attributes | |
| std::string | chip_path_ |
| unsigned int | line_offset_ = 0U |
| int | chip_fd_ = -1 |
| std::atomic< int > | request_fd_ {-1} |
| std::atomic< AbiVersion > | abi_version_ {AbiVersion::UNKNOWN} |
| std::atomic< RequestKind > | request_kind_ {RequestKind::NONE} |
| Configuration | current_config_ = {Direction::INPUT, Pull::NONE} |
| bool | has_config_ = false |
| std::atomic< bool > | interrupt_enabled_ {false} |
| std::atomic< bool > | interrupt_thread_started_ {false} |
| std::atomic< bool > | interrupt_thread_exit_ {false} |
| std::atomic< bool > | interrupt_poll_active_ {false} |
| Thread | interrupt_thread_ |
| int | interrupt_wake_pipe_ [2] = {-1, -1} |
Static Private Attributes | |
| static constexpr size_t | EVENT_BUFFER_CAPACITY = 64 |
| static constexpr size_t | INTERRUPT_THREAD_STACK_SIZE = 16384 |
Additional Inherited Members | |
Public Types inherited from LibXR::GPIO | |
| enum class | Direction : uint8_t { INPUT , OUTPUT_PUSH_PULL , OUTPUT_OPEN_DRAIN , FALL_INTERRUPT , RISING_INTERRUPT , FALL_RISING_INTERRUPT } |
| 定义 GPIO 引脚的方向类型。Defines the direction types for GPIO pins. More... | |
| enum class | Pull : uint8_t { NONE , UP , DOWN } |
| 定义 GPIO 引脚的上拉/下拉模式。Defines the pull-up/pull-down configurations for GPIO pins. More... | |
| using | Callback = LibXR::Callback<> |
Data Fields inherited from LibXR::GPIO | |
| Callback | callback_ |
| GPIO 事件的回调函数。Callback function for GPIO events. | |
基于 Linux GPIO character device uAPI 的 Linux GPIO 实现 Linux GPIO implementation based on the Linux GPIO character-device uAPI
Definition at line 25 of file linux_gpio.hpp.
|
strongprivate |
Definition at line 44 of file linux_gpio.hpp.
|
strongprivate |
Definition at line 51 of file linux_gpio.hpp.
| LibXR::LinuxGPIO::LinuxGPIO | ( | const std::string & | chip_path, |
| unsigned int | line_offset ) |
Definition at line 295 of file linux_gpio.cpp.
|
override |
Definition at line 302 of file linux_gpio.cpp.
|
private |
Definition at line 587 of file linux_gpio.cpp.
|
private |
Definition at line 640 of file linux_gpio.cpp.
|
private |
Definition at line 597 of file linux_gpio.cpp.
|
private |
Definition at line 724 of file linux_gpio.cpp.
|
overridevirtual |
禁用 GPIO 引脚中断。Disables the GPIO pin interrupt.
Implements LibXR::GPIO.
Definition at line 423 of file linux_gpio.cpp.
|
overridevirtual |
使能 GPIO 引脚中断。Enables the GPIO pin interrupt.
Implements LibXR::GPIO.
Definition at line 382 of file linux_gpio.cpp.
|
private |
Definition at line 1058 of file linux_gpio.cpp.
|
private |
Definition at line 615 of file linux_gpio.cpp.
|
private |
Definition at line 522 of file linux_gpio.cpp.
|
staticprivate |
Definition at line 1069 of file linux_gpio.cpp.
|
private |
Definition at line 1076 of file linux_gpio.cpp.
|
private |
Definition at line 652 of file linux_gpio.cpp.
|
private |
Definition at line 568 of file linux_gpio.cpp.
|
private |
Definition at line 855 of file linux_gpio.cpp.
|
private |
Definition at line 783 of file linux_gpio.cpp.
|
private |
Definition at line 925 of file linux_gpio.cpp.
|
overridevirtual |
读取 GPIO 引脚状态。Reads the GPIO pin state.
Implements LibXR::GPIO.
Definition at line 314 of file linux_gpio.cpp.
|
private |
Definition at line 1013 of file linux_gpio.cpp.
|
private |
Definition at line 957 of file linux_gpio.cpp.
|
private |
Definition at line 903 of file linux_gpio.cpp.
|
private |
Definition at line 819 of file linux_gpio.cpp.
|
private |
Definition at line 771 of file linux_gpio.cpp.
|
overridevirtual |
配置 GPIO 引脚参数。Configures the GPIO pin settings.
Implements LibXR::GPIO.
Definition at line 464 of file linux_gpio.cpp.
|
private |
Definition at line 510 of file linux_gpio.cpp.
|
private |
Definition at line 683 of file linux_gpio.cpp.
|
private |
Definition at line 703 of file linux_gpio.cpp.
|
overridevirtual |
写入 GPIO 引脚状态。Writes the GPIO pin state.
| value | 要写入的状态,true 表示高电平,false 表示低电平。The value to write, true for high, false for low. |
Implements LibXR::GPIO.
Definition at line 349 of file linux_gpio.cpp.
|
private |
Definition at line 62 of file linux_gpio.hpp.
|
private |
Definition at line 60 of file linux_gpio.hpp.
|
private |
Definition at line 58 of file linux_gpio.hpp.
|
private |
Definition at line 64 of file linux_gpio.hpp.
|
staticconstexprprivate |
Definition at line 41 of file linux_gpio.hpp.
|
private |
Definition at line 65 of file linux_gpio.hpp.
|
private |
Definition at line 66 of file linux_gpio.hpp.
|
private |
Definition at line 69 of file linux_gpio.hpp.
|
private |
Definition at line 70 of file linux_gpio.hpp.
|
private |
Definition at line 68 of file linux_gpio.hpp.
|
staticconstexprprivate |
Definition at line 42 of file linux_gpio.hpp.
|
private |
Definition at line 67 of file linux_gpio.hpp.
|
private |
Definition at line 71 of file linux_gpio.hpp.
|
private |
Definition at line 59 of file linux_gpio.hpp.
|
private |
Definition at line 61 of file linux_gpio.hpp.
|
private |
Definition at line 63 of file linux_gpio.hpp.