<div dir="ltr">Hi Sylvain,<br><br>I am currently working on <a href="https://osmocom.org/issues/2988#note-21">https://osmocom.org/issues/2988#note-21</a>.<br>And while reading the specifications and looking at the Calypso<br>PHY implementation, I've got a few questions.<br><br>In short, according to the GSM TS 04.08, section 3.4.1.1 "SACCH<br>procedures", Measurement Report messages are sent at each possible<br>occasion when nothing else has to be sent. In other words, a dummy<br>LAPDm fill frame (0x01, 0x03, 0x01, 0x2b, ...) is not applicable here.<br><br>The Calypso PHY (i.e. the firmware) is sending self-composed<br>Measurement Reports if there is nothing in transmit queue:<br><br>> static uint8_t ubMeas[23] = {<br>> /* L1 SAACH pseudo-header */<br>> 0x0f, 0x00,<br>><br>> /* lapdm header */<br>> 0x01, 0x03, 0x49,<br>><br>> /* Measurement report */<br>> 0x06, 0x15, 0x36, 0x36, 0x01, 0xC0, 0x00, 0x00,<br>> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br>> 0x00, 0x00<br>> };<br>><br>> /**<br>> * Is called every time when when<br>> * a new LAPDm frame received from DSP<br>> */<br>> void pu_update_rx_level(uint8_t rx_level)<br>> {<br>> ubMeas[7] = ubMeas[8] = rx_level;<br>> }<br>><br>> const uint8_t *pu_get_meas_frame(void)<br>> {<br>> if (l1s.tx_meas) {<br>> /* There is a Measurement Report in transmit queue */<br>> return l1s.tx_meas->l3h;<br>> } else {<br>> /* Compose a Measurement Report */<br>> /* Update L1 SAACH pseudo-header */<br>> ubMeas[0] = l1s.tx_power;<br>> ubMeas[1] = l1s.ta;<br>><br>> return ubMeas;<br>> }<br>> }<br><br>I am not sure if this is the correct way. Why?<br><br> - The Measurement Reports coming from the higher<br> layers may contain additional information, such<br> as the neighbour measurements.<br><br> - The higher layers may spoof indicated TA value,<br> while this code uses the actual one.<br><br> - Measurement Reporting is already implemented<br> in the higher layers, so this duplicates...<br><br>My current ideas are:<br><br> 1) Create a separate L1CTL message, that would be<br> used to carry Measurement Reports. This way<br> we wouldn't need to extract them from the<br> L1CTL_DATA_REQ messages manually.<br><br> 2) Keep a last Measurement Report somewhere, and<br> transmit it until a new one is arrived from<br> the higher layers.<br><br>But I am still unsure, is this approach correct too.<br><br>Probably, some parts of the Measurement Reporting implementation<br>should be moved to L1, i.e. to the firmware, trxcon and VIRT-PHY.<br>This way each Measurement Report would always contain the actual<br>measurement results at the moment of transmission...<br><br>What do you think?<br>Any ideas are welcome!<br><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>With best regards,<br></div><div>Vadim Yanitskiy.<br><br></div></div></div></div></div></div>
</div>