mFrame
載入中...
搜尋中...
無符合項目
ufm::io::SerialBusQueue 類別 參考文件

SerialBus佇列管理器 更多...

#include <SerialBusQueue.h>

類別ufm::io::SerialBusQueue的繼承圖:
ufm::io::SerialBus ufm::io::SerialBus::Event ufm::lang::Object hal::serial::IIC::EventTransfer hal::serial::IIC::EventReceiver hal::serial::IIC::EventStop hal::serial::IICMaster::EventError ufm::lang::Interface

複合項目

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::ObjectgetObject (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::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 

詳細描述

SerialBus佇列管理器

此類別實現了序列總線的佇列管理功能,允許多個傳輸請求排隊等候執行。 繼承自SerialBus和SerialBus::Event,提供非阻塞的序列總線通訊機制。 當總線忙碌時,新的傳輸請求會被放入佇列中等待執行。

1.0.0

建構子與解構子說明文件

◆ SerialBusQueue() [1/2]

ufm::io::SerialBusQueue::SerialBusQueue ( hal::serial::IICMaster & iicMaster,
int queueSize )

建構一個新的SerialBusQueue物件

使用指定的佇列大小建立SerialBusQueue,會自動分配佇列所需的記憶體。

參數
iicMasterIIC主設備參考,用於實際的硬體通訊
queueSize佇列大小,指定可同時排隊的傳輸區塊數量

◆ SerialBusQueue() [2/2]

ufm::io::SerialBusQueue::SerialBusQueue ( hal::serial::IICMaster & iicMaster,
ufm::lang::Memory queueBuffer )
noexcept

建構一個新的SerialBusQueue物件

使用預先分配的記憶體建立SerialBusQueue,適用於記憶體受限的環境。

參數
iicMasterIIC主設備參考,用於實際的硬體通訊
queueBuffer佇列緩衝區記憶體,使用者提供的記憶體空間

◆ ~SerialBusQueue()

virtual ufm::io::SerialBusQueue::~SerialBusQueue ( void )
overridevirtual

解構SerialBusQueue物件

清理所有佇列資源並取消未完成的傳輸請求。

函式成員說明文件

◆ cancelAll()

void ufm::io::SerialBusQueue::cancelAll ( void )

取消所有佇列中的傳輸請求

取消當前正在執行的傳輸以及佇列中所有等待的傳輸請求。 所有相關的回調事件都會收到取消通知。

◆ isBusy()

virtual bool ufm::io::SerialBusQueue::isBusy ( void )
overridevirtual

檢查總線是否忙碌

傳回值
true 總線忙碌中或佇列中有待處理的傳輸
false 總線閒置且佇列為空

依據ufm::io::SerialBus重新實作.

◆ isEmpty()

bool ufm::io::SerialBusQueue::isEmpty ( void )

檢查佇列是否為空

傳回值
true 佇列為空,沒有待處理的傳輸請求
false 佇列非空,有傳輸請求在等待或執行中

◆ onBusErrorEvent()

virtual void ufm::io::SerialBusQueue::onBusErrorEvent ( int completedQuantity)
overridevirtual

總線錯誤事件處理

當總線發生錯誤時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。

參數
completedQuantity已完成傳輸的資料量

實作 ufm::io::SerialBus::Event.

◆ onCancel()

virtual void ufm::io::SerialBusQueue::onCancel ( int completedQuantity)
overridevirtual

取消事件處理

當傳輸被取消時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。

參數
completedQuantity已完成傳輸的資料量

實作 ufm::io::SerialBus::Event.

◆ onComplete()

virtual void ufm::io::SerialBusQueue::onComplete ( int completedQuantity)
overridevirtual

傳輸完成事件處理

當前傳輸成功完成時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。

實作 ufm::io::SerialBus::Event.

◆ onNoResponseEvent()

virtual void ufm::io::SerialBusQueue::onNoResponseEvent ( int completedQuantity)
overridevirtual

無回應事件處理

當設備無回應時被呼叫,會觸發使用者的回調事件並處理佇列中的下一個傳輸。

參數
completedQuantity已完成傳輸的資料量

實作 ufm::io::SerialBus::Event.

◆ read()

virtual bool ufm::io::SerialBusQueue::read ( uint16 address,
int length,
void * buffer,
SerialBus::Event * event )
overridevirtual

從指定設備位址讀取資料

如果總線忙碌,讀取請求會被加入佇列等候執行。

參數
address目標設備位址
length要讀取的資料長度
buffer接收資料的緩衝區指標
event傳輸完成時的回調事件,可為nullptr
傳回值
true 讀取請求成功加入佇列或開始執行
false 讀取請求失敗(佇列已滿或參數無效)

依據ufm::io::SerialBus重新實作.

◆ write()

virtual bool ufm::io::SerialBusQueue::write ( uint16 address,
int length,
const void * source,
SerialBus::Event * event )
overridevirtual

寫入資料到指定設備位址

如果總線忙碌,寫入請求會被加入佇列等候執行。

參數
address目標設備位址
length要寫入的資料長度
source來源資料緩衝區指標
event傳輸完成時的回調事件,可為nullptr
傳回值
true 寫入請求成功加入佇列或開始執行
false 寫入請求失敗(佇列已滿或參數無效)

依據ufm::io::SerialBus重新實作.


此類別(class) 文件是由下列檔案中產生: