Hi Dieter, Hi everyone,
(cc'd the list, for the record and if other people are interested in the inner workings :)
I'm pretty satisfied with the current state of the TCH primitive (as it is in my testing branch now). But there is still two things I'm stumbling upon:
* When to put / read data for FACCH.
Getting downlink FACCH blocks looks quite logic: just check the B_BLUD bit on the TCH response of the last burst of the block.
So with rx_time being the time at which the burst was received (i.e., one frame before the response is executed) - For TCH/F: (rx_time.fn % 13) % 4 == 3 - For TCH/H: (rx_time.t2 - subchannel) in {6,15,23}
But for when to load the next FACCH block, it seems weird. From what I understand of what you did and what the TSM30 does, you need to load the data on the TCH cmd corresponding to the bursts _before_ the first burst.
So with tx_time being the time at which the burst will transmitted (i.e., one frame after the command is executed = l1s.next_time) - For TCH/F (tx_time.fn % 13) % 4 == 3 - For TCH/H (tx_time.t2 - subchannel) in {6,15,23} (2 TDMA before the first burst because on TCH/H, we're executed one once every two frame)
Why the need to load it one burst in advance ? (while on the RX side, which seems more complex to do, data is available directly after the last burst is received).
* TCH/H support: AFAIK, I did everything that should be required for it to work: - set fn_report properly for TCH/H - set chan_type to TCH_H in dsp_load_tch_parameters - Use a different condition for when to put/read FACCH bursts (according to 05.02) - Schedule the TCH task appropriately ...
But still can't get it to work (testing with the racal). SACCH seems to work fine (I see the SI messages), but I don't see a single FACCH message (and eventually the racal says T3107 expired, assignement to TCH failed).
Do you see anything else that would be required ?
Cheers,
Sylvain
Some news from the front on this :
* When to put / read data for FACCH. [snip]
Ok, I've accepted it's a requirement of the DSP ... (I looked into the DSP code to make sure it was) ...
* TCH/H support: AFAIK, I did everything that should be required for it to work:
After fixing some bugs, and some debugging sessions with steve|m (thanks btw :): - Half subchannel 0: Call establishement / FACCH works. But no audio. Steve confirmed that audio _is_ sent from the mobile, by recording it with the racal and then playing it back on a phone with stock firmware. So it's a downlink issue ...
- Half subchannel 1: FACCH works, but can't establish a call anyway ... The problem seems to be in the upper layer. My current theory is that we hit some race condition somewhere and the slight timing difference between subchannel 0 and subchannel 1 triggers it in one case but not the other ...
Basically on FACCH: - we send the SABM - we get the UA back - we send the ASSIGNEMENT COMPLETE N(S)=0, N(R)=0 - we get RR N(R)=1 - we send 3 times RR N(R)=0 ( <-- this is weird ) - then lapdm doesn't xmit anything from the upper layer anymore.
Cheers,
Sylvain
baseband-devel@lists.osmocom.org