![]() |
mFrame
|
SerialBus佇列管理器 更多...
#include <SerialBusQueue.h>
複合項目 | |
| struct | Block |
| SerialBus 佇列區塊結構 更多... | |
公開方法(Public Methods) | |
| SerialBusQueue (hal::serial::IICMaster &iicMaster, int queueSize) | |
| 建構一個新的SerialBusQueue物件 | |
| SerialBusQueue (hal::serial::IICMaster &iicMaster, ufm::lang::Memory queueBuffer) noexcept | |
| 建構一個新的SerialBusQueue物件 | |
| virtual | ~SerialBusQueue (void) override |
| 解構SerialBusQueue物件 | |
| virtual bool | isBusy (void) override |
| 檢查總線是否忙碌 | |
| virtual bool | write (uint16 address, int length, const void *source, SerialBus::Event *event) override |
| 寫入資料到指定設備位址 | |
| virtual bool | read (uint16 address, int length, void *buffer, SerialBus::Event *event) override |
| 從指定設備位址讀取資料 | |
| virtual void | onComplete (int completedQuantity) override |
| 傳輸完成事件處理 | |
| virtual void | onNoResponseEvent (int completedQuantity) override |
| 無回應事件處理 | |
| virtual void | onBusErrorEvent (int completedQuantity) override |
| 總線錯誤事件處理 | |
| virtual void | onCancel (int completedQuantity) override |
| 取消事件處理 | |
| void | cancelAll (void) |
| 取消所有佇列中的傳輸請求 | |
| bool | isEmpty (void) |
| 檢查佇列是否為空 | |
公開方法(Public Methods) 繼承自 ufm::io::SerialBus | |
| SerialBus (hal::serial::IICMaster &iicMaster) | |
| 建構SerialBus物件 | |
| virtual | ~SerialBus (void) override |
| 解構SerialBus物件 | |
| virtual bool | onTransfer (uint8 &data) override |
| IIC 傳輸事件處理 | |
| virtual bool | onReceiver (const uint8 data) override |
| IIC 接收事件處理 | |
| virtual void | onStop (int queueRemainingCount) override |
| IIC 停止事件處理 | |
| virtual void | onNanAcknowledgeEvent (int queueRemainingCount) override |
| IIC 無回應錯誤事件處理 | |
| virtual void | onBusBusyEvent (int queueRemainingCount) override |
| IIC 總線忙碌錯誤事件處理 | |
| virtual bool | cancel (void) |
| 取消當前傳輸 | |
公開方法(Public Methods) 繼承自 ufm::lang::Object | |
| void * | operator new (size_t n) |
| 使用運算子 new 分配記憶體 | |
| void * | operator new (size_t n, void *p) |
| 在指定記憶體上調用運算子 new | |
| virtual ufm::lang::Object & | getObject (void) override |
| 取得對應的 Object 物件 | |
| void | delay (int milliseconds) const |
| 延遲指定的毫秒數進行執行緒等待 | |
| bool | equals (Object *object) const |
| 判斷與另一物件是否為相同參照(指標型態比較) | |
| bool | equals (Object &object) const |
| 判斷與另一物件是否為相同參照(參照型態比較) | |
| void | wait (void) const |
| 使當前線程等待直到被通知 | |
| bool | wait (int timeout) const |
| 等待通知或超時 | |
| bool | yield (void) const |
| 讓執行緒讓渡控制權給同優先權的下一個執行緒 | |
| int | lock (void) const |
| 核心鎖定,鎖定期間禁止線程切換 | |
| int | unlock (void) const |
| 核心解鎖 | |
| ufm::sys::Thread * | currentThread (void) const |
| 取得當前執行緒指標 | |
| virtual int | hashcode (void) const |
| 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
公開方法(Public Methods) 繼承自 ufm::lang::Interface | |
| virtual | ~Interface (void)=default |
| 虛擬析構函式 | |
SerialBus佇列管理器
此類別實現了序列總線的佇列管理功能,允許多個傳輸請求排隊等候執行。 繼承自SerialBus和SerialBus::Event,提供非阻塞的序列總線通訊機制。 當總線忙碌時,新的傳輸請求會被放入佇列中等待執行。
| ufm::io::SerialBusQueue::SerialBusQueue | ( | hal::serial::IICMaster & | iicMaster, |
| int | queueSize ) |
建構一個新的SerialBusQueue物件
使用指定的佇列大小建立SerialBusQueue,會自動分配佇列所需的記憶體。
| iicMaster | IIC主設備參考,用於實際的硬體通訊 |
| queueSize | 佇列大小,指定可同時排隊的傳輸區塊數量 |
|
noexcept |
建構一個新的SerialBusQueue物件
使用預先分配的記憶體建立SerialBusQueue,適用於記憶體受限的環境。
| iicMaster | IIC主設備參考,用於實際的硬體通訊 |
| queueBuffer | 佇列緩衝區記憶體,使用者提供的記憶體空間 |
|
overridevirtual |
解構SerialBusQueue物件
清理所有佇列資源並取消未完成的傳輸請求。
| void ufm::io::SerialBusQueue::cancelAll | ( | void | ) |
取消所有佇列中的傳輸請求
取消當前正在執行的傳輸以及佇列中所有等待的傳輸請求。 所有相關的回調事件都會收到取消通知。
|
overridevirtual |
| bool ufm::io::SerialBusQueue::isEmpty | ( | void | ) |
檢查佇列是否為空
|
overridevirtual |
總線錯誤事件處理
當總線發生錯誤時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。
| completedQuantity | 已完成傳輸的資料量 |
|
overridevirtual |
取消事件處理
當傳輸被取消時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。
| completedQuantity | 已完成傳輸的資料量 |
|
overridevirtual |
|
overridevirtual |
無回應事件處理
當設備無回應時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。
| completedQuantity | 已完成傳輸的資料量 |
|
overridevirtual |
從指定設備位址讀取資料
如果總線忙碌,讀取請求會被加入佇列等候執行。
| address | 目標設備位址 |
| length | 要讀取的資料長度 |
| buffer | 接收資料的緩衝區指標 |
| event | 傳輸完成時的回調事件,可為nullptr |
依據ufm::io::SerialBus重新實作.
|
overridevirtual |
寫入資料到指定設備位址
如果總線忙碌,寫入請求會被加入佇列等候執行。
| address | 目標設備位址 |
| length | 要寫入的資料長度 |
| source | 來源資料緩衝區指標 |
| event | 傳輸完成時的回調事件,可為nullptr |
依據ufm::io::SerialBus重新實作.