|
|
|
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
|
|
|
|
/****************************************************************************
|
|
|
|
|
* |
|
|
|
|
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
|
|
|
* (c) 2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
|
|
|
* |
|
|
|
|
* QGroundControl is licensed according to the terms in the file |
|
|
|
|
* COPYING.md in the root of the source code directory. |
|
|
|
@ -8,26 +8,18 @@
@@ -8,26 +8,18 @@
|
|
|
|
|
****************************************************************************/ |
|
|
|
|
|
|
|
|
|
#include "MicrohardManager.h" |
|
|
|
|
#include "MicrohardHandler.h" |
|
|
|
|
#include "MicrohardSettings.h" |
|
|
|
|
#include "SettingsManager.h" |
|
|
|
|
#include "QGCApplication.h" |
|
|
|
|
#include "QGCCorePlugin.h" |
|
|
|
|
#include "VideoManager.h" |
|
|
|
|
|
|
|
|
|
#include <QSettings> |
|
|
|
|
|
|
|
|
|
static const char *kMICROHARD_GROUP = "Microhard"; |
|
|
|
|
static const char *kRADIO_MODE = "RadioMode"; |
|
|
|
|
static const char *kRADIO_CHANNEL = "RadioChannel"; |
|
|
|
|
static const char *kVIDEO_OUTPUT = "VideoOutput"; |
|
|
|
|
static const char *kVIDEO_MODE = "VideoMode"; |
|
|
|
|
static const char *kVIDEO_RATE = "VideoRate"; |
|
|
|
|
static const char *kLOCAL_IP = "LocalIP"; |
|
|
|
|
static const char *kREMOTE_IP = "RemoteIP"; |
|
|
|
|
static const char *kNET_MASK = "NetMask"; |
|
|
|
|
static const char *kRTSP_URI = "RTSPURI"; |
|
|
|
|
static const char *kRTSP_ACCOUNT = "RTSPAccount"; |
|
|
|
|
static const char *kRTSP_PASSWORD = "RTSPPassword"; |
|
|
|
|
static const char *kCFG_PASSWORD = "ConfigPassword"; |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
MicrohardManager::MicrohardManager(QGCApplication* app, QGCToolbox* toolbox) |
|
|
|
@ -37,12 +29,10 @@ MicrohardManager::MicrohardManager(QGCApplication* app, QGCToolbox* toolbox)
@@ -37,12 +29,10 @@ MicrohardManager::MicrohardManager(QGCApplication* app, QGCToolbox* toolbox)
|
|
|
|
|
_workTimer.setSingleShot(true); |
|
|
|
|
QSettings settings; |
|
|
|
|
settings.beginGroup(kMICROHARD_GROUP); |
|
|
|
|
_localIPAddr = settings.value(kLOCAL_IP, QString("192.168.199.33")).toString(); |
|
|
|
|
_remoteIPAddr = settings.value(kREMOTE_IP, QString("192.168.199.16")).toString(); |
|
|
|
|
_netMask = settings.value(kNET_MASK, QString("255.255.255.0")).toString(); |
|
|
|
|
_rtspURI = settings.value(kRTSP_URI, QString("rtsp://192.168.0.2")).toString(); |
|
|
|
|
_rtspAccount = settings.value(kRTSP_ACCOUNT, QString("admin")).toString(); |
|
|
|
|
_rtspPassword = settings.value(kRTSP_PASSWORD, QString("12345678")).toString(); |
|
|
|
|
_localIPAddr = settings.value(kLOCAL_IP, QString("192.168.168.1")).toString(); |
|
|
|
|
_remoteIPAddr = settings.value(kREMOTE_IP, QString("192.168.168.2")).toString(); |
|
|
|
|
_netMask = settings.value(kNET_MASK, QString("255.255.255.0")).toString(); |
|
|
|
|
_configPassword = settings.value(kCFG_PASSWORD, QString("admin")).toString(); |
|
|
|
|
settings.endGroup(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -74,8 +64,7 @@ MicrohardManager::_reset()
@@ -74,8 +64,7 @@ MicrohardManager::_reset()
|
|
|
|
|
emit linkConnectedChanged(); |
|
|
|
|
if(!_appSettings) { |
|
|
|
|
_appSettings = _toolbox->settingsManager()->appSettings(); |
|
|
|
|
connect(_appSettings->enableMicrohard(), &Fact::rawValueChanged, this, &MicrohardManager::_setEnabled); |
|
|
|
|
connect(_appSettings->enableMicrohardVideo(), &Fact::rawValueChanged, this, &MicrohardManager::_setVideoEnabled); |
|
|
|
|
connect(_appSettings->enableMicrohard(), &Fact::rawValueChanged, this, &MicrohardManager::_setEnabled); |
|
|
|
|
} |
|
|
|
|
_setEnabled(); |
|
|
|
|
} |
|
|
|
@ -104,97 +93,12 @@ void
@@ -104,97 +93,12 @@ void
|
|
|
|
|
MicrohardManager::setToolbox(QGCToolbox* toolbox) |
|
|
|
|
{ |
|
|
|
|
QGCTool::setToolbox(toolbox); |
|
|
|
|
{ |
|
|
|
|
//-- Radio Mode
|
|
|
|
|
QStringList enums; |
|
|
|
|
enums.append(tr("Auto")); |
|
|
|
|
enums.append(tr("Manual")); |
|
|
|
|
FactMetaData* metaData = _createMetadata(kRADIO_MODE, enums); |
|
|
|
|
_radioMode = new Fact(kMICROHARD_GROUP, metaData, this); |
|
|
|
|
QQmlEngine::setObjectOwnership(_radioMode, QQmlEngine::CppOwnership); |
|
|
|
|
_radioModeList.append("auto"); |
|
|
|
|
_radioModeList.append("manual"); |
|
|
|
|
connect(_radioMode, &Fact::_containerRawValueChanged, this, &MicrohardManager::_radioSettingsChanged); |
|
|
|
|
} |
|
|
|
|
{ |
|
|
|
|
//-- Radio Channel
|
|
|
|
|
QStringList enums; |
|
|
|
|
for(int i = 0; i < 14; i++) { |
|
|
|
|
enums.append(QString("ch%1").arg(i)); |
|
|
|
|
} |
|
|
|
|
FactMetaData* metaData = _createMetadata(kRADIO_CHANNEL, enums); |
|
|
|
|
_radioChannel = new Fact(kMICROHARD_GROUP, metaData, this); |
|
|
|
|
QQmlEngine::setObjectOwnership(_radioChannel, QQmlEngine::CppOwnership); |
|
|
|
|
connect(_radioChannel, &Fact::_containerRawValueChanged, this, &MicrohardManager::_radioSettingsChanged); |
|
|
|
|
} |
|
|
|
|
{ |
|
|
|
|
//-- Video Output
|
|
|
|
|
QStringList enums; |
|
|
|
|
enums.append(tr("Stream")); |
|
|
|
|
enums.append(tr("HDMI Port")); |
|
|
|
|
FactMetaData* metaData = _createMetadata(kVIDEO_OUTPUT, enums); |
|
|
|
|
_videoOutput = new Fact(kMICROHARD_GROUP, metaData, this); |
|
|
|
|
QQmlEngine::setObjectOwnership(_videoOutput, QQmlEngine::CppOwnership); |
|
|
|
|
_videoOutputList.append("phone"); |
|
|
|
|
_videoOutputList.append("hdmi"); |
|
|
|
|
connect(_videoOutput, &Fact::_containerRawValueChanged, this, &MicrohardManager::_videoSettingsChanged); |
|
|
|
|
} |
|
|
|
|
{ |
|
|
|
|
//-- Video Mode
|
|
|
|
|
QStringList enums; |
|
|
|
|
enums.append("H264"); |
|
|
|
|
enums.append("H265"); |
|
|
|
|
FactMetaData* metaData = _createMetadata(kVIDEO_MODE, enums); |
|
|
|
|
_videoMode = new Fact(kMICROHARD_GROUP, metaData, this); |
|
|
|
|
QQmlEngine::setObjectOwnership(_videoMode, QQmlEngine::CppOwnership); |
|
|
|
|
connect(_videoMode, &Fact::_containerRawValueChanged, this, &MicrohardManager::_videoSettingsChanged); |
|
|
|
|
} |
|
|
|
|
{ |
|
|
|
|
//-- Video Rate
|
|
|
|
|
QStringList enums; |
|
|
|
|
enums.append(tr("Low")); |
|
|
|
|
enums.append(tr("Medium")); |
|
|
|
|
enums.append(tr("High")); |
|
|
|
|
FactMetaData* metaData = _createMetadata(kVIDEO_RATE, enums); |
|
|
|
|
_videoRate = new Fact(kMICROHARD_GROUP, metaData, this); |
|
|
|
|
QQmlEngine::setObjectOwnership(_videoRate, QQmlEngine::CppOwnership); |
|
|
|
|
_videoRateList.append("low"); |
|
|
|
|
_videoRateList.append("middle"); |
|
|
|
|
_videoRateList.append("high"); |
|
|
|
|
connect(_videoRate, &Fact::_containerRawValueChanged, this, &MicrohardManager::_videoSettingsChanged); |
|
|
|
|
} |
|
|
|
|
//-- Start it all
|
|
|
|
|
_reset(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
bool |
|
|
|
|
MicrohardManager::setRTSPSettings(QString uri, QString account, QString password) |
|
|
|
|
{ |
|
|
|
|
if(_mhSettings && _isConnected) { |
|
|
|
|
if(_mhSettings->setRTSPSettings(uri, account, password)) { |
|
|
|
|
_rtspURI = uri; |
|
|
|
|
_rtspAccount = account; |
|
|
|
|
_rtspPassword = password; |
|
|
|
|
QSettings settings; |
|
|
|
|
settings.beginGroup(kMICROHARD_GROUP); |
|
|
|
|
settings.setValue(kRTSP_URI, _rtspURI); |
|
|
|
|
settings.setValue(kRTSP_ACCOUNT, _rtspAccount); |
|
|
|
|
settings.setValue(kRTSP_PASSWORD, _rtspPassword); |
|
|
|
|
settings.endGroup(); |
|
|
|
|
emit rtspURIChanged(); |
|
|
|
|
emit rtspAccountChanged(); |
|
|
|
|
emit rtspPasswordChanged(); |
|
|
|
|
_needReboot = true; |
|
|
|
|
emit needRebootChanged(); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
bool |
|
|
|
|
MicrohardManager::setIPSettings(QString localIP_, QString remoteIP_, QString netMask_) |
|
|
|
|
{ |
|
|
|
|
bool res = false; |
|
|
|
@ -234,35 +138,6 @@ MicrohardManager::setIPSettings(QString localIP_, QString remoteIP_, QString net
@@ -234,35 +138,6 @@ MicrohardManager::setIPSettings(QString localIP_, QString remoteIP_, QString net
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
void |
|
|
|
|
MicrohardManager::_radioSettingsChanged(QVariant) |
|
|
|
|
{ |
|
|
|
|
if(_mhSettings && _isConnected) { |
|
|
|
|
_workTimer.stop(); |
|
|
|
|
_mhSettings->setRadioSettings( |
|
|
|
|
_radioModeList[_radioMode->rawValue().toInt()], |
|
|
|
|
_radioChannel->enumStringValue()); |
|
|
|
|
_reqMask |= REQ_RADIO_SETTINGS; |
|
|
|
|
_workTimer.start(3000); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
void |
|
|
|
|
MicrohardManager::_videoSettingsChanged(QVariant) |
|
|
|
|
{ |
|
|
|
|
if(_mhSettings && _isConnected) { |
|
|
|
|
_workTimer.stop(); |
|
|
|
|
_mhSettings->setVideoSettings( |
|
|
|
|
_videoOutputList[_videoOutput->rawValue().toInt()], |
|
|
|
|
_videoMode->enumStringValue(), |
|
|
|
|
_videoRateList[_videoRate->rawValue().toInt()]); |
|
|
|
|
_reqMask |= REQ_VIDEO_SETTINGS; |
|
|
|
|
_workTimer.start(500); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
void |
|
|
|
|
MicrohardManager::_setEnabled() |
|
|
|
|
{ |
|
|
|
|
bool enable = _appSettings->enableMicrohard()->rawValue().toBool(); |
|
|
|
@ -281,43 +156,6 @@ MicrohardManager::_setEnabled()
@@ -281,43 +156,6 @@ MicrohardManager::_setEnabled()
|
|
|
|
|
_close(); |
|
|
|
|
} |
|
|
|
|
_enabled = enable; |
|
|
|
|
//-- Now handle video support
|
|
|
|
|
_setVideoEnabled(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
void |
|
|
|
|
MicrohardManager::_restoreVideoSettings(Fact* setting) |
|
|
|
|
{ |
|
|
|
|
SettingsFact* pFact = dynamic_cast<SettingsFact*>(setting); |
|
|
|
|
if(pFact) { |
|
|
|
|
pFact->setVisible(qgcApp()->toolbox()->corePlugin()->adjustSettingMetaData(VideoSettings::settingsGroup, *setting->metaData())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
void |
|
|
|
|
MicrohardManager::_setVideoEnabled() |
|
|
|
|
{ |
|
|
|
|
//-- Check both if video is enabled and Microhard support itself is enabled as well.
|
|
|
|
|
bool enable = _appSettings->enableMicrohardVideo()->rawValue().toBool() && _appSettings->enableMicrohard()->rawValue().toBool(); |
|
|
|
|
if(enable) { |
|
|
|
|
//-- Set it up the way we need it do be.
|
|
|
|
|
VideoSettings* pVSettings = qgcApp()->toolbox()->settingsManager()->videoSettings(); |
|
|
|
|
pVSettings->setVisible(false); |
|
|
|
|
pVSettings->udpPort()->setRawValue(5600); |
|
|
|
|
//-- TODO: this AR must come from somewhere
|
|
|
|
|
pVSettings->aspectRatio()->setRawValue(1024.0 / 768.0); |
|
|
|
|
pVSettings->videoSource()->setRawValue(QString(VideoSettings::videoSourceUDP)); |
|
|
|
|
} else { |
|
|
|
|
//-- Restore video settings.
|
|
|
|
|
VideoSettings* pVSettings = qgcApp()->toolbox()->settingsManager()->videoSettings(); |
|
|
|
|
_restoreVideoSettings(pVSettings->videoSource()); |
|
|
|
|
_restoreVideoSettings(pVSettings->aspectRatio()); |
|
|
|
|
_restoreVideoSettings(pVSettings->udpPort()); |
|
|
|
|
pVSettings->setVisible(true); |
|
|
|
|
} |
|
|
|
|
_enableVideo = enable; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
@ -352,9 +190,7 @@ MicrohardManager::_checkMicrohard()
@@ -352,9 +190,7 @@ MicrohardManager::_checkMicrohard()
|
|
|
|
|
if(_enabled) { |
|
|
|
|
if(!_isConnected) { |
|
|
|
|
if(_mhSettings) { |
|
|
|
|
if(!_mhSettings->isServerRunning()) { |
|
|
|
|
_mhSettings->start(); |
|
|
|
|
} |
|
|
|
|
_mhSettings->start(); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
//qCDebug(MicrohardVerbose) << bin << _reqMask;
|
|
|
|
@ -363,33 +199,6 @@ MicrohardManager::_checkMicrohard()
@@ -363,33 +199,6 @@ MicrohardManager::_checkMicrohard()
|
|
|
|
|
_mhSettings->requestLinkStatus(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (_reqMask & REQ_DEV_INFO) { |
|
|
|
|
_mhSettings->requestDevInfo(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (_reqMask & REQ_FREQ_SCAN) { |
|
|
|
|
_reqMask &= ~static_cast<uint32_t>(REQ_FREQ_SCAN); |
|
|
|
|
_mhSettings->requestFreqScan(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (_reqMask & REQ_VIDEO_SETTINGS) { |
|
|
|
|
_mhSettings->requestVideoSettings(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (_reqMask & REQ_RADIO_SETTINGS) { |
|
|
|
|
_mhSettings->requestRadioSettings(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (_reqMask & REQ_RTSP_SETTINGS) { |
|
|
|
|
_reqMask &= ~static_cast<uint32_t>(REQ_RTSP_SETTINGS); |
|
|
|
|
_mhSettings->requestRTSPURISettings(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (_reqMask & REQ_IP_SETTINGS) { |
|
|
|
|
_reqMask &= ~static_cast<uint32_t>(REQ_IP_SETTINGS); |
|
|
|
|
_mhSettings->requestIPSettings(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
//-- Check link status
|
|
|
|
|
if(_timeoutTimer.elapsed() > 3000) { |
|
|
|
|
//-- Give up and restart
|
|
|
|
@ -429,44 +238,13 @@ MicrohardManager::_updateSettings(QByteArray jSonData)
@@ -429,44 +238,13 @@ MicrohardManager::_updateSettings(QByteArray jSonData)
|
|
|
|
|
_linkConnected = tlinkConnected; |
|
|
|
|
emit linkConnectedChanged(); |
|
|
|
|
} |
|
|
|
|
QString tlinkVidFormat = jObj["videoformat"].toString(_linkVidFormat); |
|
|
|
|
int tdownlinkRSSI = jObj["radiorssi"].toInt(_downlinkRSSI); |
|
|
|
|
int tuplinkRSSI = jObj["hdrssi"].toInt(_uplinkRSSI); |
|
|
|
|
if(_linkVidFormat != tlinkVidFormat || _downlinkRSSI != tdownlinkRSSI || _uplinkRSSI != tuplinkRSSI) { |
|
|
|
|
_linkVidFormat = tlinkVidFormat; |
|
|
|
|
if(_downlinkRSSI != tdownlinkRSSI || _uplinkRSSI != tuplinkRSSI) { |
|
|
|
|
_downlinkRSSI = tdownlinkRSSI; |
|
|
|
|
_uplinkRSSI = tuplinkRSSI; |
|
|
|
|
emit linkChanged(); |
|
|
|
|
} |
|
|
|
|
//-- Device Info?
|
|
|
|
|
} else if(jSonData.contains("\"firmwareversion\":")) { |
|
|
|
|
_reqMask &= ~static_cast<uint32_t>(REQ_DEV_INFO); |
|
|
|
|
QString tfwVersion = jObj["firmwareversion"].toString(_fwVersion); |
|
|
|
|
QString tserialNumber = jObj["sn"].toString(_serialNumber); |
|
|
|
|
if(tfwVersion != _fwVersion || tserialNumber != _serialNumber) { |
|
|
|
|
_fwVersion = tfwVersion; |
|
|
|
|
_serialNumber = tserialNumber; |
|
|
|
|
emit infoChanged(); |
|
|
|
|
} |
|
|
|
|
//-- Radio Settings?
|
|
|
|
|
} else if(jSonData.contains("\"freq\":")) { |
|
|
|
|
_reqMask &= ~static_cast<uint32_t>(REQ_RADIO_SETTINGS); |
|
|
|
|
int idx = _radioModeList.indexOf(jObj["mode"].toString(_radioMode->enumStringValue())); |
|
|
|
|
if(idx >= 0) _radioMode->_containerSetRawValue(idx); |
|
|
|
|
idx = _radioChannel->valueIndex(jObj["freq"].toString(_radioChannel->enumStringValue())); |
|
|
|
|
if(idx < 0) idx = 0; |
|
|
|
|
_radioChannel->_containerSetRawValue(idx); |
|
|
|
|
//-- Video Settings?
|
|
|
|
|
} else if(jSonData.contains("\"maxbitrate\":")) { |
|
|
|
|
_reqMask &= ~static_cast<uint32_t>(REQ_VIDEO_SETTINGS); |
|
|
|
|
int idx; |
|
|
|
|
idx = _videoMode->valueIndex(jObj["mode"].toString(_videoMode->enumStringValue())); |
|
|
|
|
if(idx < 0) idx = 0; |
|
|
|
|
_videoMode->_containerSetRawValue(idx); |
|
|
|
|
idx = _videoRateList.indexOf(jObj["maxbitrate"].toString(_videoMode->enumStringValue())); |
|
|
|
|
if(idx >= 0) _videoRate->_containerSetRawValue(idx); |
|
|
|
|
idx = _videoOutputList.indexOf(jObj["decode"].toString(_videoOutput->enumStringValue())); |
|
|
|
|
if(idx >= 0) _videoOutput->_containerSetRawValue(idx); |
|
|
|
|
//-- IP Address Settings?
|
|
|
|
|
} else if(jSonData.contains("\"usbEthIp\":")) { |
|
|
|
|
QString value; |
|
|
|
@ -492,39 +270,10 @@ MicrohardManager::_updateSettings(QByteArray jSonData)
@@ -492,39 +270,10 @@ MicrohardManager::_updateSettings(QByteArray jSonData)
|
|
|
|
|
if(changed) { |
|
|
|
|
QSettings settings; |
|
|
|
|
settings.beginGroup(kMICROHARD_GROUP); |
|
|
|
|
settings.setValue(kLOCAL_IP, _localIPAddr); |
|
|
|
|
settings.setValue(kREMOTE_IP, _remoteIPAddr); |
|
|
|
|
settings.setValue(kNET_MASK, _netMask); |
|
|
|
|
settings.endGroup(); |
|
|
|
|
} |
|
|
|
|
//-- RTSP URI Settings?
|
|
|
|
|
} else if(jSonData.contains("\"rtspURI\":")) { |
|
|
|
|
QString value; |
|
|
|
|
bool changed = false; |
|
|
|
|
value = jObj["rtspURI"].toString(_rtspURI); |
|
|
|
|
if(value != _rtspURI) { |
|
|
|
|
_rtspURI = value; |
|
|
|
|
changed = true; |
|
|
|
|
emit rtspURIChanged(); |
|
|
|
|
} |
|
|
|
|
value = jObj["account"].toString(_rtspAccount); |
|
|
|
|
if(value != _rtspAccount) { |
|
|
|
|
_rtspAccount = value; |
|
|
|
|
changed = true; |
|
|
|
|
emit rtspAccountChanged(); |
|
|
|
|
} |
|
|
|
|
value = jObj["passwd"].toString(_rtspPassword); |
|
|
|
|
if(value != _rtspPassword) { |
|
|
|
|
_rtspPassword = value; |
|
|
|
|
changed = true; |
|
|
|
|
emit rtspPasswordChanged(); |
|
|
|
|
} |
|
|
|
|
if(changed) { |
|
|
|
|
QSettings settings; |
|
|
|
|
settings.beginGroup(kMICROHARD_GROUP); |
|
|
|
|
settings.setValue(kRTSP_URI, _rtspURI); |
|
|
|
|
settings.setValue(kRTSP_ACCOUNT, _rtspAccount); |
|
|
|
|
settings.setValue(kRTSP_PASSWORD, _rtspPassword); |
|
|
|
|
settings.setValue(kLOCAL_IP, _localIPAddr); |
|
|
|
|
settings.setValue(kREMOTE_IP, _remoteIPAddr); |
|
|
|
|
settings.setValue(kNET_MASK, _netMask); |
|
|
|
|
settings.setValue(kCFG_PASSWORD, _configPassword); |
|
|
|
|
settings.endGroup(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|