LtiSubordinateLtChannelAgent constructor
- required Axi5SystemInterface sys,
- required LtiLtChannelInterface lt,
- required Component parent,
- String name = 'ltiSubordinateLtChannelAgent',
- int? timeoutCycles,
- int? dropDelayCycles,
Constructs a new LtiSubordinateLtChannelAgent.
Implementation
LtiSubordinateLtChannelAgent({
required this.sys,
required this.lt,
required Component parent,
String name = 'ltiSubordinateLtChannelAgent',
this.timeoutCycles,
this.dropDelayCycles,
}) : super(name, parent) {
// credit tracking per virtual channel
for (var i = 0; i < lt.vcCount; i++) {
_creditCounts.add(0);
}
sequencer = Sequencer<LtiLtChannelPacket>(
'ltiSubordinateLtChannelAgentSequencer', this);
driver = LtiLtChannelDriver(
parent: this,
sys: sys,
lt: lt,
sequencer: sequencer,
timeoutCycles: timeoutCycles,
dropDelayCycles: dropDelayCycles,
hasCredits: () => _creditCounts[0] > 0, // only 1 VC
updateCredits: () => _creditCounts[0]--,
);
monitor = LtiCreditMonitor(sys: sys, trans: lt, parent: this);
// credit returns
monitor.stream.listen((c) {
// only 1 VC
if (c.credit > 0) {
_creditCounts[0]++;
}
});
}