Transceiver: Clean up code passing parameters to threads
TransceiverChannel naming was misleading there. It's simply a data type
used to pass 2 parameters through the void* of the thread entry
function, so let's clearly specify is a storage for thread params.
Furthermore, we don't need a full C++ class for that, let's simply use a
struct.
Change-Id: I6e3898a8a66520cc5b2a7df9b9ae01b0b272387f
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index a47f7db..b12a498 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -240,10 +240,12 @@
/* Start control threads */
for (size_t i = 0; i < mChans; i++) {
- TransceiverChannel *chan = new TransceiverChannel(this, i);
+ TrxChanThParams *params = (TrxChanThParams *)malloc(sizeof(struct TrxChanThParams));
+ params->trx = this;
+ params->num = i;
mControlServiceLoopThreads[i] = new Thread(stackSize);
mControlServiceLoopThreads[i]->start((void * (*)(void*))
- ControlServiceLoopAdapter, (void*) chan);
+ ControlServiceLoopAdapter, (void*) params);
if (i && filler == FILLER_DUMMY)
filler = FILLER_ZERO;
@@ -292,15 +294,19 @@
/* Launch uplink and downlink burst processing threads */
for (size_t i = 0; i < mChans; i++) {
- TransceiverChannel *chan = new TransceiverChannel(this, i);
+ TrxChanThParams *params = (TrxChanThParams *)malloc(sizeof(struct TrxChanThParams));
+ params->trx = this;
+ params->num = i;
mRxServiceLoopThreads[i] = new Thread(stackSize);
mRxServiceLoopThreads[i]->start((void * (*)(void*))
- RxUpperLoopAdapter, (void*) chan);
+ RxUpperLoopAdapter, (void*) params);
- chan = new TransceiverChannel(this, i);
+ params = (TrxChanThParams *)malloc(sizeof(struct TrxChanThParams));
+ params->trx = this;
+ params->num = i;
mTxPriorityQueueServiceLoopThreads[i] = new Thread(stackSize);
mTxPriorityQueueServiceLoopThreads[i]->start((void * (*)(void*))
- TxUpperLoopAdapter, (void*) chan);
+ TxUpperLoopAdapter, (void*) params);
}
mForceClockInterface = true;
@@ -1108,13 +1114,13 @@
}
-void *RxUpperLoopAdapter(TransceiverChannel *chan)
+void *RxUpperLoopAdapter(TrxChanThParams *params)
{
char thread_name[16];
- Transceiver *trx = chan->trx;
- size_t num = chan->num;
+ Transceiver *trx = params->trx;
+ size_t num = params->num;
- delete chan;
+ free(params);
snprintf(thread_name, 16, "RxUpper%zu", num);
set_selfthread_name(thread_name);
@@ -1154,13 +1160,13 @@
return NULL;
}
-void *ControlServiceLoopAdapter(TransceiverChannel *chan)
+void *ControlServiceLoopAdapter(TrxChanThParams *params)
{
char thread_name[16];
- Transceiver *trx = chan->trx;
- size_t num = chan->num;
+ Transceiver *trx = params->trx;
+ size_t num = params->num;
- delete chan;
+ free(params);
snprintf(thread_name, 16, "CtrlService%zu", num);
set_selfthread_name(thread_name);
@@ -1172,13 +1178,13 @@
return NULL;
}
-void *TxUpperLoopAdapter(TransceiverChannel *chan)
+void *TxUpperLoopAdapter(TrxChanThParams *params)
{
char thread_name[16];
- Transceiver *trx = chan->trx;
- size_t num = chan->num;
+ Transceiver *trx = params->trx;
+ size_t num = params->num;
- delete chan;
+ free(params);
snprintf(thread_name, 16, "TxUpper%zu", num);
set_selfthread_name(thread_name);