diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-05-11 13:17:31 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-05-11 13:24:13 +0200 |
commit | c432e062ea3239bf541afc25f14f0e69d074b5c2 (patch) | |
tree | caa525b62cb8aee755c9be8fdb60781e5b6153fa /src | |
parent | 6bab522e90cf24cf5ffa040269d779e884792a90 (diff) |
encoding: Encode TA in UL ACK/NACK if available
Change-Id: I3b060ee16aeac5f5d9b314b6bc46383f5e9c44c3
Diffstat (limited to 'src')
-rw-r--r-- | src/encoding.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/encoding.cpp b/src/encoding.cpp index 22da6abc..0a4050fa 100644 --- a/src/encoding.cpp +++ b/src/encoding.cpp @@ -897,7 +897,15 @@ static void write_packet_uplink_ack_gprs( bitvec_write_field(dest, &wp, 0, 1); // 0: don't have CONTENTION_RESOLUTION_TLLI } - bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Timing Advance + if (gsm48_ta_is_valid(tbf->ta())) { + bitvec_write_field(dest, &wp, 1, 1); // 1: have Packet Timing Advance IE (TS 44.060 12.12) + bitvec_write_field(dest, &wp, 1, 1); // 1: have TIMING_ADVANCE_VALUE + bitvec_write_field(dest, &wp, tbf->ta(), 6); // TIMING_ADVANCE_VALUE + bitvec_write_field(dest, &wp, 0, 1); // 0: don't have TIMING_ADVANCE_INDEX + } else { + bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Timing Advance + } + bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Power Control Parameters bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Extension Bits bitvec_write_field(dest, &wp, 0, 1); // fixed 0 @@ -1085,7 +1093,16 @@ static void write_packet_uplink_ack_egprs( } bitvec_write_field(dest, &wp, 1, 1); // TBF_EST (enabled) - bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Timing Advance + + if (gsm48_ta_is_valid(tbf->ta())) { + bitvec_write_field(dest, &wp, 1, 1); // 1: have Packet Timing Advance IE (TS 44.060 12.12) + bitvec_write_field(dest, &wp, 1, 1); // 1: have TIMING_ADVANCE_VALUE + bitvec_write_field(dest, &wp, tbf->ta(), 6); // TIMING_ADVANCE_VALUE + bitvec_write_field(dest, &wp, 0, 1); // 0: don't have TIMING_ADVANCE_INDEX + } else { + bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Timing Advance + } + bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Extended Timing Advance bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Power Control Parameters bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Extension Bits |