diff --git a/src/blackcore/audiodevice.h b/src/blackcore/audiodevice.h index 6564c7e62..4a9bdf150 100644 --- a/src/blackcore/audiodevice.h +++ b/src/blackcore/audiodevice.h @@ -21,6 +21,7 @@ namespace BlackCore { //! Audio Input Device //! \todo Settings classes to store hardware settings (hardware device) + //! \deprecated will be removed as we use Qt classes now class BLACKCORE_EXPORT IAudioInputDevice : public QObject { Q_OBJECT @@ -50,6 +51,7 @@ namespace BlackCore class BLACKCORE_EXPORT CAudioInputDeviceDummy : public IAudioInputDevice { Q_OBJECT + public: //! Constructor CAudioInputDeviceDummy(QObject *parent = nullptr) : IAudioInputDevice(parent) {} @@ -102,6 +104,6 @@ namespace BlackCore //! Get output volume between 0 ... 300% virtual int getOutputVolume() const = 0; }; -} +} // ns #endif // guard diff --git a/src/blackcore/context/contextaudio.h b/src/blackcore/context/contextaudio.h index 4193d2ef6..9d0e16bf7 100644 --- a/src/blackcore/context/contextaudio.h +++ b/src/blackcore/context/contextaudio.h @@ -11,20 +11,22 @@ #ifndef BLACKCORE_CONTEXT_CONTEXTAUDIO_H #define BLACKCORE_CONTEXT_CONTEXTAUDIO_H -#include "blackcore/blackcoreexport.h" #include "blackcore/context/context.h" #include "blackcore/corefacade.h" #include "blackcore/corefacadeconfig.h" +#include "blackcore/blackcoreexport.h" + #include "blackmisc/audio/audiodeviceinfolist.h" #include "blackmisc/audio/notificationsounds.h" #include "blackmisc/audio/voiceroom.h" #include "blackmisc/audio/voiceroomlist.h" #include "blackmisc/audio/voicesetup.h" +#include "blackmisc/audio/ptt.h" #include "blackmisc/aviation/callsignset.h" #include "blackmisc/aviation/comsystem.h" #include "blackmisc/aviation/selcal.h" -#include "blackmisc/identifier.h" #include "blackmisc/network/userlist.h" +#include "blackmisc/identifier.h" #include #include @@ -82,17 +84,13 @@ namespace BlackCore virtual ~IContextAudio() override {} signals: - //! Voice rooms changed - //! \details the flag indicates, whether a room got connected or disconnected - void changedVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &voiceRooms, bool connected); - - //! Voice room members changed - void changedVoiceRoomMembers(); - //! Audio volume changed //! \sa setVoiceOutputVolume void changedAudioVolume(int volume); + //! PTT status in a particular voice client + void ptt(bool active, BlackMisc::Audio::PTTCOM pttcom, const BlackMisc::CIdentifier &identifier); + //! Mute changed void changedMute(bool muted); @@ -103,17 +101,11 @@ namespace BlackCore void changedSelectedAudioDevices(const BlackMisc::Audio::CAudioDeviceInfoList &devices); public slots: - //! Set voice rooms - virtual void setComVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &voiceRooms) = 0; - - //! Leave all voice rooms - virtual void leaveAllVoiceRooms() = 0; - - //! Room users - virtual BlackMisc::Network::CUserList getRoomUsers(BlackMisc::Aviation::CComSystem::ComUnit comUnit) const = 0; - - //! Audio devices + //! Audio devices @{ virtual BlackMisc::Audio::CAudioDeviceInfoList getAudioDevices() const = 0; + BlackMisc::Audio::CAudioDeviceInfoList getAudioInputDevices() const { return this->getAudioDevices().getInputDevices(); } + BlackMisc::Audio::CAudioDeviceInfoList getAudioOutputDevices() const { return this->getAudioDevices().getOutputDevices(); } + //! @} //! Audio runs where virtual BlackMisc::CIdentifier audioRunsWhere() const = 0; @@ -127,7 +119,7 @@ namespace BlackCore //! Set current audio device //! \param audioDevice can be input or audio device - virtual void setCurrentAudioDevice(const BlackMisc::Audio::CAudioDeviceInfo &audioDevice) = 0; + virtual void setCurrentAudioDevices(const BlackMisc::Audio::CAudioDeviceInfo &inputDevice, const BlackMisc::Audio::CAudioDeviceInfo &outputDevice) = 0; //! Set voice output volume (0..300) virtual void setVoiceOutputVolume(int volume) = 0; diff --git a/src/blackcore/context/contextaudioempty.h b/src/blackcore/context/contextaudioempty.h index 57119a874..b399ba90f 100644 --- a/src/blackcore/context/contextaudioempty.h +++ b/src/blackcore/context/contextaudioempty.h @@ -32,28 +32,7 @@ namespace BlackCore CContextAudioEmpty(CCoreFacade *runtime) : IContextAudio(CCoreFacadeConfig::NotUsed, runtime) {} public slots: - //! \copydoc IContextAudio::setComVoiceRooms - virtual void setComVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &newRooms) override - { - Q_UNUSED(newRooms); - logEmptyContextWarning(Q_FUNC_INFO); - } - - //! \copydoc IContextAudio::getRoomUsers() - virtual BlackMisc::Network::CUserList getRoomUsers(BlackMisc::Aviation::CComSystem::ComUnit comUnitValue) const override - { - Q_UNUSED(comUnitValue); - logEmptyContextWarning(Q_FUNC_INFO); - return BlackMisc::Network::CUserList(); - } - - //! \copydoc IContextAudio::leaveAllVoiceRooms - virtual void leaveAllVoiceRooms() override - { - logEmptyContextWarning(Q_FUNC_INFO); - } - - //! \copydoc IContextAudio::audioRunsWhere() + //! \copydoc IContextAudio::audioRunsWhere virtual BlackMisc::CIdentifier audioRunsWhere() const override { logEmptyContextWarning(Q_FUNC_INFO); @@ -61,31 +40,32 @@ namespace BlackCore return i; } - //! \copydoc IContextAudio::getAudioDevices() + //! \copydoc IContextAudio::getAudioDevices virtual BlackMisc::Audio::CAudioDeviceInfoList getAudioDevices() const override { logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Audio::CAudioDeviceInfoList(); } - //! \copydoc IContextAudio::getCurrentAudioDevices() + //! \copydoc IContextAudio::getCurrentAudioDevices virtual BlackMisc::Audio::CAudioDeviceInfoList getCurrentAudioDevices() const override { logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Audio::CAudioDeviceInfoList(); } - //! \copydoc IContextAudio::setCurrentAudioDevice() - virtual void setCurrentAudioDevice(const BlackMisc::Audio::CAudioDeviceInfo &audioDevice) override + //! \copydoc IContextAudio::setCurrentAudioDevices + virtual void setCurrentAudioDevices(const BlackMisc::Audio::CAudioDeviceInfo &inputDevice, const BlackMisc::Audio::CAudioDeviceInfo &outputDevice) override { - Q_UNUSED(audioDevice); + Q_UNUSED(inputDevice) + Q_UNUSED(outputDevice) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextAudio::setVoiceOutputVolume virtual void setVoiceOutputVolume(int volume) override { - Q_UNUSED(volume); + Q_UNUSED(volume) logEmptyContextWarning(Q_FUNC_INFO); } @@ -99,7 +79,7 @@ namespace BlackCore //! \copydoc IContextAudio::setMute virtual void setMute(bool muted) override { - Q_UNUSED(muted); + Q_UNUSED(muted) logEmptyContextWarning(Q_FUNC_INFO); } @@ -113,23 +93,23 @@ namespace BlackCore //! \copydoc IContextAudio::playSelcalTone() virtual void playSelcalTone(const BlackMisc::Aviation::CSelcal &selcal) override { - Q_UNUSED(selcal); + Q_UNUSED(selcal) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextAudio::playNotification() virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume = -1) override { - Q_UNUSED(volume); - Q_UNUSED(notification); - Q_UNUSED(considerSettings); + Q_UNUSED(volume) + Q_UNUSED(notification) + Q_UNUSED(considerSettings) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextAudio::enableAudioLoopback() virtual void enableAudioLoopback(bool enable = true) override { - Q_UNUSED(enable); + Q_UNUSED(enable) logEmptyContextWarning(Q_FUNC_INFO); } @@ -143,8 +123,8 @@ namespace BlackCore //! \copydoc IContextAudio::parseCommandLine virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override { - Q_UNUSED(commandLine); - Q_UNUSED(originator); + Q_UNUSED(commandLine) + Q_UNUSED(originator) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -159,7 +139,7 @@ namespace BlackCore //! \copydoc IContextAudio::setVoiceSetup virtual void setVoiceSetup(const BlackMisc::Audio::CVoiceSetup &setup) override { - Q_UNUSED(setup); + Q_UNUSED(setup) logEmptyContextWarning(Q_FUNC_INFO); } }; diff --git a/src/blackcore/context/contextaudioproxy.cpp b/src/blackcore/context/contextaudioproxy.cpp index 9f2fb817a..7dab19e95 100644 --- a/src/blackcore/context/contextaudioproxy.cpp +++ b/src/blackcore/context/contextaudioproxy.cpp @@ -7,6 +7,7 @@ */ #include "blackcore/context/contextaudioproxy.h" +#include "blackmisc/audio/ptt.h" #include "blackmisc/dbus.h" #include "blackmisc/dbusserver.h" #include "blackmisc/genericdbusinterface.h" @@ -36,7 +37,7 @@ namespace BlackCore // connect signals, asserts when failures QDBusConnection con = QDBusConnection::sessionBus(); CContextAudioProxy c(CDBusServer::coreServiceName(), con, CCoreFacadeConfig::Remote, nullptr); - Q_UNUSED(c); + Q_UNUSED(c) } void CContextAudioProxy::relaySignals(const QString &serviceName, QDBusConnection &connection) @@ -59,22 +60,14 @@ namespace BlackCore s = connection.connect(serviceName, IContextAudio::ObjectPath(), IContextAudio::InterfaceName(), "changedSelectedAudioDevices", this, SIGNAL(changedSelectedAudioDevices(BlackMisc::Audio::CAudioDeviceInfoList))); Q_ASSERT(s); - - Q_UNUSED(s); + s = connection.connect(serviceName, IContextAudio::ObjectPath(), IContextAudio::InterfaceName(), + "ptt", this, SIGNAL(ptt(bool, BlackMisc::Audio::PTTCOM, BlackMisc::CIdentifier))); + Q_ASSERT(s); + Q_UNUSED(s) this->relayBaseClassSignals(serviceName, connection, IContextAudio::ObjectPath(), IContextAudio::InterfaceName()); } - void CContextAudioProxy::leaveAllVoiceRooms() - { - this->m_dBusInterface->callDBus(QLatin1String("leaveAllVoiceRooms")); - } - - BlackMisc::Network::CUserList CContextAudioProxy::getRoomUsers(CComSystem::ComUnit comUnitValue) const - { - return this->m_dBusInterface->callDBusRet(QLatin1String("getRoomUsers"), comUnitValue); - } - CAudioDeviceInfoList CContextAudioProxy::getAudioDevices() const { return this->m_dBusInterface->callDBusRet(QLatin1String("getAudioDevices")); @@ -90,14 +83,9 @@ namespace BlackCore return this->m_dBusInterface->callDBusRet(QLatin1String("getCurrentAudioDevices")); } - void CContextAudioProxy::setCurrentAudioDevice(const CAudioDeviceInfo &audioDevice) + void CContextAudioProxy::setCurrentAudioDevices(const CAudioDeviceInfo &inputDevice, const CAudioDeviceInfo &outputDevice) { - this->m_dBusInterface->callDBus(QLatin1String("setCurrentAudioDevice"), audioDevice); - } - - void CContextAudioProxy::setComVoiceRooms(const CVoiceRoomList &voiceRooms) - { - this->m_dBusInterface->callDBus(QLatin1String("setComVoiceRooms"), voiceRooms); + this->m_dBusInterface->callDBus(QLatin1String("setCurrentAudioDevices"), inputDevice, outputDevice); } void CContextAudioProxy::playSelcalTone(const CSelcal &selcal) diff --git a/src/blackcore/context/contextaudioproxy.h b/src/blackcore/context/contextaudioproxy.h index 033d1adf1..667ae74d0 100644 --- a/src/blackcore/context/contextaudioproxy.h +++ b/src/blackcore/context/contextaudioproxy.h @@ -63,13 +63,10 @@ namespace BlackCore // interface overrides //! \publicsection //! @{ - virtual void setComVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &voiceRooms) override; - virtual BlackMisc::Network::CUserList getRoomUsers(BlackMisc::Aviation::CComSystem::ComUnit comUnitValue) const override; - virtual void leaveAllVoiceRooms() override; virtual BlackMisc::CIdentifier audioRunsWhere() const override; virtual BlackMisc::Audio::CAudioDeviceInfoList getAudioDevices() const override; virtual BlackMisc::Audio::CAudioDeviceInfoList getCurrentAudioDevices() const override; - virtual void setCurrentAudioDevice(const BlackMisc::Audio::CAudioDeviceInfo &audioDevice) override; + virtual void setCurrentAudioDevices(const BlackMisc::Audio::CAudioDeviceInfo &inputDevice, const BlackMisc::Audio::CAudioDeviceInfo &outputDevice) override; virtual void setVoiceOutputVolume(int volume) override; virtual int getVoiceOutputVolume() const override; virtual void setMute(bool muted) override; diff --git a/src/blackcore/corefacade.cpp b/src/blackcore/corefacade.cpp index 536464e7b..f71013f99 100644 --- a/src/blackcore/corefacade.cpp +++ b/src/blackcore/corefacade.cpp @@ -287,12 +287,10 @@ namespace BlackCore if (m_contextAudio && m_contextAudio->isUsingImplementingObject()) { Q_ASSERT(m_contextApplication); - c = connect(m_contextApplication, &IContextApplication::fakedSetComVoiceRoom, this->getCContextAudio(), &CContextAudio::setComVoiceRooms, Qt::QueuedConnection); - Q_ASSERT(c); - times.insert("Post setup, connects audio", time.restart()); c = connect(m_contextNetwork, &IContextNetwork::connectionStatusChanged, this->getCContextAudio(), &CContextAudio::xCtxNetworkConnectionStatusChanged, Qt::QueuedConnection); Q_ASSERT(c); + times.insert("Post setup, connects audio", time.restart()); } } diff --git a/src/blackgui/components/audiodevicevolumesetupcomponent.ui b/src/blackgui/components/audiodevicevolumesetupcomponent.ui index db416e2c0..24bdc5e69 100644 --- a/src/blackgui/components/audiodevicevolumesetupcomponent.ui +++ b/src/blackgui/components/audiodevicevolumesetupcomponent.ui @@ -6,7 +6,7 @@ 0 0 - 307 + 227 254 @@ -14,46 +14,15 @@ Audio setup - - - - true - - - extra info goes here - - - - - - - Disable realistic audio simulation - - - - - - - Loopback, test sound in- to output - - - - + 24 - - - - Info - - - - - + + 50 @@ -69,10 +38,13 @@ - - - - QComboBox::AdjustToMinimumContentsLength + + + + 50 + + + Qt::Horizontal @@ -83,52 +55,79 @@ - - - - In - + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Loopback, test sound in- to output + + + + - - - - QComboBox::AdjustToMinimumContentsLength - - - true - - - - + Test - - - - 50 - - - - - + + - Out + Info - - - - 50 - - - Qt::Horizontal - + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + + + + ... + + + + :/diagona/icons/diagona/icons/arrow-circle-135.png:/diagona/icons/diagona/icons/arrow-circle-135.png + + + + @@ -171,6 +170,90 @@ + + + + 50 + + + + + + + In + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + ... + + + + :/diagona/icons/diagona/icons/arrow-circle-135.png:/diagona/icons/diagona/icons/arrow-circle-135.png + + + + + + + + + + Disable realistic audio simulation + + + + + + + true + + + extra info goes here + + + + + + + Out + + + + + + + ... + + + + + + + ... + + + @@ -180,7 +263,9 @@ cb_2Tx cb_2Rec cb_SetupAudioInputDevice + tb_RefreshInDevice cb_SetupAudioOutputDevice + tb_RefreshOutDevice cb_DisableAudioEffects cb_SetupAudioLoopback hs_VolumeIn diff --git a/src/blackgui/components/audiosetupcomponent.cpp b/src/blackgui/components/audiosetupcomponent.cpp index 72fd609d7..db82d79f6 100644 --- a/src/blackgui/components/audiosetupcomponent.cpp +++ b/src/blackgui/components/audiosetupcomponent.cpp @@ -109,7 +109,7 @@ namespace BlackGui c = connect(ui->sb_NotificationValueVolume, qOverload(&QSpinBox::valueChanged), this, &CAudioSetupComponent::onNotificationVolumeChanged); Q_ASSERT(c); } - Q_UNUSED(c); + Q_UNUSED(c) } CAudioSetupComponent::~CAudioSetupComponent() @@ -193,14 +193,14 @@ namespace BlackGui const CAudioDeviceInfoList inputDevices = devices.getInputDevices(); if (index >= inputDevices.size()) { return; } selectedDevice = inputDevices[index]; - sGui->getIContextAudio()->setCurrentAudioDevice(selectedDevice); + // sGui->getIContextAudio()->setCurrentAudioDevices(selectedDevice); } else if (sender == ui->cb_SetupAudioOutputDevice) { const CAudioDeviceInfoList outputDevices = devices.getOutputDevices(); if (index >= outputDevices.size()) { return; } selectedDevice = outputDevices[index]; - sGui->getIContextAudio()->setCurrentAudioDevice(selectedDevice); + // sGui->getIContextAudio()->setCurrentAudioDevices(selectedDevice); } } diff --git a/src/blackgui/components/cockpitcomcomponent.cpp b/src/blackgui/components/cockpitcomcomponent.cpp index c2509f7df..3711b7b2e 100644 --- a/src/blackgui/components/cockpitcomcomponent.cpp +++ b/src/blackgui/components/cockpitcomcomponent.cpp @@ -79,7 +79,7 @@ namespace BlackGui connect(sGui->getIContextOwnAircraft(), &IContextOwnAircraft::changedSelcal, this, &CCockpitComComponent::updateSelcalFromContext, Qt::QueuedConnection); // hook up with audio context - connect(sGui->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CCockpitComComponent::updateVoiceRoomStatusFromContext, Qt::QueuedConnection); + // connect(sGui->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CCockpitComComponent::updateVoiceRoomStatusFromContext, Qt::QueuedConnection); // network connect(sGui->getIContextNetwork(), &IContextNetwork::changedAtcStationsOnlineDigest, this, &CCockpitComComponent::onAtcStationsChanged, Qt::QueuedConnection); diff --git a/src/blackgui/components/loginadvcomponent.cpp b/src/blackgui/components/loginadvcomponent.cpp index e6d62075c..16f3cc1f5 100644 --- a/src/blackgui/components/loginadvcomponent.cpp +++ b/src/blackgui/components/loginadvcomponent.cpp @@ -241,7 +241,6 @@ namespace BlackGui else { // disconnect from network - sGui->getIContextAudio()->leaveAllVoiceRooms(); sGui->setExtraWindowTitle(""); msg = sGui->getIContextNetwork()->disconnectFromNetwork(); } diff --git a/src/blackgui/components/logincomponent.cpp b/src/blackgui/components/logincomponent.cpp index 917382cca..8d299c6c2 100644 --- a/src/blackgui/components/logincomponent.cpp +++ b/src/blackgui/components/logincomponent.cpp @@ -344,7 +344,6 @@ namespace BlackGui else { // disconnect from network - sGui->getIContextAudio()->leaveAllVoiceRooms(); sGui->setExtraWindowTitle(""); msg = sGui->getIContextNetwork()->disconnectFromNetwork(); } diff --git a/src/blackgui/components/loginoverviewcomponent.cpp b/src/blackgui/components/loginoverviewcomponent.cpp index 403180d7c..8c94461d9 100644 --- a/src/blackgui/components/loginoverviewcomponent.cpp +++ b/src/blackgui/components/loginoverviewcomponent.cpp @@ -134,7 +134,6 @@ namespace BlackGui else { // disconnect from network - sGui->getIContextAudio()->leaveAllVoiceRooms(); sGui->setExtraWindowTitle(""); msg = sGui->getIContextNetwork()->disconnectFromNetwork(); } diff --git a/src/blackgui/components/voiceroomscomponent.cpp b/src/blackgui/components/voiceroomscomponent.cpp index b01db0ced..068fe7ee1 100644 --- a/src/blackgui/components/voiceroomscomponent.cpp +++ b/src/blackgui/components/voiceroomscomponent.cpp @@ -44,8 +44,8 @@ namespace BlackGui connect(ui->cb_CockpitVoiceRoom2Override, &QCheckBox::toggled, this, &CVoiceRoomsComponent::onVoiceRoomOverrideChanged); connect(ui->le_CockpitVoiceRoomCom1, &QLineEdit::returnPressed, this, &CVoiceRoomsComponent::onVoiceRoomUrlsReturnPressed); connect(ui->le_CockpitVoiceRoomCom2, &QLineEdit::returnPressed, this, &CVoiceRoomsComponent::onVoiceRoomUrlsReturnPressed); - connect(sGui->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CVoiceRoomsComponent::updateAudioVoiceRoomsFromContext, Qt::QueuedConnection); - connect(sGui->getIContextAudio(), &IContextAudio::changedVoiceRoomMembers, this, &CVoiceRoomsComponent::updateVoiceRoomMembers, Qt::QueuedConnection); + // connect(sGui->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CVoiceRoomsComponent::updateAudioVoiceRoomsFromContext, Qt::QueuedConnection); + // connect(sGui->getIContextAudio(), &IContextAudio::changedVoiceRoomMembers, this, &CVoiceRoomsComponent::updateVoiceRoomMembers, Qt::QueuedConnection); } CVoiceRoomsComponent::~CVoiceRoomsComponent() @@ -131,7 +131,7 @@ namespace BlackGui if (!sGui || sGui->isShuttingDown() || !sGui->getIContextAudio()) { return; } if (!ui->le_CockpitVoiceRoomCom1->text().trimmed().isEmpty()) { - ui->tvp_CockpitVoiceRoom1->updateContainer(sGui->getIContextAudio()->getRoomUsers(CComSystem::Com1)); + // ui->tvp_CockpitVoiceRoom1->updateContainer(sGui->getIContextAudio()->getRoomUsers(CComSystem::Com1)); } else { @@ -140,7 +140,7 @@ namespace BlackGui if (!ui->le_CockpitVoiceRoomCom2->text().trimmed().isEmpty()) { - ui->tvp_CockpitVoiceRoom2->updateContainer(sGui->getIContextAudio()->getRoomUsers(CComSystem::Com2)); + // ui->tvp_CockpitVoiceRoom2->updateContainer(sGui->getIContextAudio()->getRoomUsers(CComSystem::Com2)); } else { diff --git a/src/swiftguistandard/swiftguistd.cpp b/src/swiftguistandard/swiftguistd.cpp index 8b63de858..708a987cb 100644 --- a/src/swiftguistandard/swiftguistd.cpp +++ b/src/swiftguistandard/swiftguistd.cpp @@ -123,7 +123,6 @@ void SwiftGuiStd::performGracefulShutdown() { if (m_contextAudioAvailable) { - sGui->getIContextAudio()->leaveAllVoiceRooms(); sGui->getIContextAudio()->disconnect(this); // break down signal / slots } sGui->getIContextNetwork()->disconnectFromNetwork();