Skip to main content

decide

Function decide 

Source
pub fn decide(
    in_flight: bool,
    hcchar: u32,
    hcint: u32,
    polls_in_flight: u32,
) -> RxAction
Expand description

受信チャネルの次の動作を決める。

  • in_flight … 受信転送を発行済みか
  • hcchar … HCCHAR レジスタ値
  • hcint … HCINT レジスタ値
  • polls_in_flight … 転送中のままポーリングした回数

WaitInFlightMAX_IN_FLIGHT_POLLS 回までしか返さない。 それを超えたら AbnormalHalt を返して再アームさせる。 元の実装は無条件に待ち続けたため、CHENA が落ちない状態に陥ると 受信が永久に停止していた。