LtiMainLaChannelAgent constructor
- required Axi5SystemInterface sys,
- required LtiLaChannelInterface la,
- required Component parent,
- String name = 'ltiMainLaChannelAgent',
- int? timeoutCycles,
- int? dropDelayCycles,
Constructs a new LtiMainLaChannelAgent.
Implementation
LtiMainLaChannelAgent({
required this.sys,
required this.la,
required Component parent,
String name = 'ltiMainLaChannelAgent',
this.timeoutCycles,
this.dropDelayCycles,
}) : super(name, parent) {
// credit tracking per virtual channel
for (var i = 0; i < la.vcCount; i++) {
_creditCounts.add(0);
}
sequencer =
Sequencer<LtiLaChannelPacket>('ltiMainLaChannelAgentSequencer', this);
driver = LtiLaChannelDriver(
parent: this,
sys: sys,
la: la,
sequencer: sequencer,
timeoutCycles: timeoutCycles,
dropDelayCycles: dropDelayCycles,
hasCredits: (vc) => _creditCounts[vc] > 0,
updateCredits: (vc) => _creditCounts[vc]--,
);
monitor = LtiCreditMonitor(sys: sys, trans: la, parent: this);
// credit returns
monitor.stream.listen((c) {
final lv = LogicValue.ofInt(c.credit, la.vcCount);
for (var i = 0; i < lv.width; i++) {
if (lv[i].toBool()) {
_creditCounts[i]++;
}
}
});
}