Add GPRS support to virt_phy and L1CTL
It should be rather simple to add GPRS support to virt_phy. The more interesting question is how to strucutre the L1CTL interface.It could simply
- get configuration as to which timeslots are relevant to UL/DL TBFs via L1CTL
- forward all downlink blocks on any of the related timeslots via L1CTL
- transmit uplink blocks as instructed by L1CTL
However, the uplink transmission can be either static, dynamic or extended dynamic allocation. In the dynamic cases, uplink is transmitted whenever the USF of the current downlink block matches the USF of the TBF. This has rather tight timing, as there's only the "3 timeslot" shift between DL and UL.
If this is critical, the L1 (virt_phy in this case) would have to be tightly integrated with the MAC layer in order to decode the USF of the MAC header. Given the USF is the three LSB of every first octet of each downlink block, it should be rather simple to match on that.
Let's investigate what the 3GPP specs have in mind in terms of a L1-SAP between L1 and the MAC layer in GPRS.
- Status changed from New to In Progress
- % Done changed from 0 to 80
seems to be working quite fine in my local branch now (simple testing with a UL TBF). L1CTL_DATA_TBF_CONF primitive is not yet implemented, i.e. L23 doesn't get confirmation once a given uplink block was dequeued and sent (based on USF match).
Code for testing is L1CTL_TestPort.ttcn from osmo-ttcn3-hacks.git