diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2019-07-15 23:53:08 +0700 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-07-19 14:58:32 +0200 |
commit | b31232537a36073ef863775fc2b53e487a7cc3b5 (patch) | |
tree | cdad9f0ba48d59672617aea2bf7f3f5bdf74d65c | |
parent | 8d771d24e7fbaa1858a2e5dc1c86e4b11e99858e (diff) |
driveTxPriorityQueue(): use trxd_hdr_common for message parsing
Change-Id: If6a93e2b7fc9ada55edbdd16352cd4f7040e3d2a
-rw-r--r-- | Transceiver52M/Transceiver.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index 1e0339b..368ed3f 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -33,6 +33,7 @@ extern "C" { #include <osmocom/core/utils.h> #include <osmocom/core/socket.h> +#include <osmocom/core/bits.h> } #ifdef HAVE_CONFIG_H @@ -914,6 +915,8 @@ bool Transceiver::driveTxPriorityQueue(size_t chan) int msgLen; int burstLen; char buffer[EDGE_BURST_NBITS + 50]; + struct trxd_hdr_common *chdr; + uint32_t fn; // check data socket msgLen = read(mDataSockets[chan], buffer, sizeof(buffer)); @@ -934,12 +937,13 @@ bool Transceiver::driveTxPriorityQueue(size_t chan) return false; } - int timeSlot = (int) buffer[0]; - uint32_t frameNum = 0; - for (int i = 0; i < 4; i++) - frameNum = (frameNum << 8) | (0x0ff & buffer[i+1]); + /* Common header part: HDR version, TDMA TN & FN */ + chdr = (struct trxd_hdr_common *) buffer; - LOG(DEBUG) << "rcvd. burst at: " << GSM::Time(frameNum,timeSlot); + /* Convert TDMA FN to the host endianness */ + fn = osmo_load32be(&chdr->fn); + + LOG(DEBUG) << "rcvd. burst at: " << GSM::Time(fn, chdr->tn); int RSSI = (int) buffer[5]; BitVector newBurst(burstLen); @@ -948,7 +952,7 @@ bool Transceiver::driveTxPriorityQueue(size_t chan) while (itr < newBurst.end()) *itr++ = *bufferItr++; - GSM::Time currTime = GSM::Time(frameNum,timeSlot); + GSM::Time currTime = GSM::Time(fn, chdr->tn); addRadioVector(chan, newBurst, RSSI, currTime); |