diff options
-rw-r--r-- | CommonLibs/osmo_signal.h | 8 | ||||
-rw-r--r-- | Transceiver52M/Transceiver.cpp | 15 | ||||
-rw-r--r-- | Transceiver52M/Transceiver.h | 4 | ||||
-rw-r--r-- | Transceiver52M/osmo-trx.cpp | 6 |
4 files changed, 9 insertions, 24 deletions
diff --git a/CommonLibs/osmo_signal.h b/CommonLibs/osmo_signal.h index 7299171..6ee1bf9 100644 --- a/CommonLibs/osmo_signal.h +++ b/CommonLibs/osmo_signal.h @@ -26,13 +26,13 @@ /* Signalling subsystems */ enum signal_subsystems { - SS_TRANSC, + SS_MAIN, SS_DEVICE, }; -/* SS_TRANSC signals */ -enum SS_TRANSC { - S_TRANSC_STOP_REQUIRED, /* Transceiver fatal error, it should be stopped */ +/* SS_MAIN signals */ +enum SS_MAIN { + S_MAIN_STOP_REQUIRED, /* TRX fatal error, it should be stopped */ }; /* SS_DEVICE signals */ diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index 54b9ddd..9c55d02 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -119,7 +119,7 @@ Transceiver::Transceiver(int wBasePort, : mBasePort(wBasePort), mLocalAddr(TRXAddress), mRemoteAddr(GSMcoreAddress), mClockSocket(TRXAddress, wBasePort, GSMcoreAddress, wBasePort + 100), mTransmitLatency(wTransmitLatency), mRadioInterface(wRadioInterface), - rssiOffset(wRssiOffset), sig_cbfn(NULL), + rssiOffset(wRssiOffset), mSPSTx(tx_sps), mSPSRx(rx_sps), mChans(chans), mEdge(false), mOn(false), mForceClockInterface(false), mTxFreq(0.0), mRxFreq(0.0), mTSC(0), mMaxExpectedDelayAB(0), mMaxExpectedDelayNB(0), mWriteBurstToDiskMask(0) @@ -225,17 +225,6 @@ bool Transceiver::init(FillerType filler, size_t rtsc, unsigned rach_delay, return true; } -void Transceiver::setSignalHandler(osmo_signal_cbfn cbfn) -{ - if (this->sig_cbfn) - osmo_signal_unregister_handler(SS_TRANSC, this->sig_cbfn, NULL); - - if (cbfn) { - this->sig_cbfn = cbfn; - osmo_signal_register_handler(SS_TRANSC, this->sig_cbfn, NULL); - } -} - /* * Start the transceiver * @@ -910,7 +899,7 @@ void Transceiver::driveReceiveRadio() usleep(100000); } else if (rc < 0) { LOG(FATAL) << "radio Interface receive failed, requesting stop."; - osmo_signal_dispatch(SS_TRANSC, S_TRANSC_STOP_REQUIRED, this); + osmo_signal_dispatch(SS_MAIN, S_MAIN_STOP_REQUIRED, NULL); } else if (mForceClockInterface || mTransmitDeadlineClock > mLastClockUpdateTime + GSM::Time(216,0)) { mForceClockInterface = false; writeClockInterface(); diff --git a/Transceiver52M/Transceiver.h b/Transceiver52M/Transceiver.h index 432e3b4..4614efe 100644 --- a/Transceiver52M/Transceiver.h +++ b/Transceiver52M/Transceiver.h @@ -130,8 +130,6 @@ public: /** accessor for number of channels */ size_t numChans() const { return mChans; }; - void setSignalHandler(osmo_signal_cbfn cbfn); - /** Codes for channel combinations */ typedef enum { FILL, ///< Channel is transmitted, but unused @@ -181,8 +179,6 @@ private: double rssiOffset; ///< RSSI to dBm conversion offset - osmo_signal_cbfn *sig_cbfn; ///< Registered Signal Handler to announce events. - /** modulate and add a burst to the transmit queue */ void addRadioVector(size_t chan, BitVector &bits, int RSSI, GSM::Time &wTime); diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp index a79c26e..05489bd 100644 --- a/Transceiver52M/osmo-trx.cpp +++ b/Transceiver52M/osmo-trx.cpp @@ -123,7 +123,7 @@ static int transc_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) { switch (signal) { - case S_TRANSC_STOP_REQUIRED: + case S_MAIN_STOP_REQUIRED: gshutdown = true; break; default: @@ -152,8 +152,6 @@ int makeTransceiver(struct trx_ctx *trx, RadioInterface *radio) return -1; } - transceiver->setSignalHandler(transc_sig_cb); - for (size_t i = 0; i < trx->cfg.num_chans; i++) { fifo = radio->receiveFIFO(i); if (fifo && transceiver->receiveFIFO(fifo, i)) @@ -627,6 +625,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } + osmo_signal_register_handler(SS_MAIN, transc_sig_cb, NULL); trx_rate_ctr_init(tall_trx_ctx, g_trx_ctx); srandom(time(NULL)); @@ -641,5 +640,6 @@ int main(int argc, char *argv[]) osmo_fd_unregister(&signal_ofd); osmo_fd_close(&signal_ofd); + osmo_signal_unregister_handler(SS_MAIN, transc_sig_cb, NULL); return 0; } |