fixed polling with queue
parent
aa25f98762
commit
5450a96a00
|
|
@ -63,7 +63,6 @@ Device::DeviceSetupStatus DevicePluginBose::setupDevice(Device *device)
|
||||||
connect(soundTouch, &SoundTouch::sourcesReceived, this, &DevicePluginBose::onSourcesObjectReceived);
|
connect(soundTouch, &SoundTouch::sourcesReceived, this, &DevicePluginBose::onSourcesObjectReceived);
|
||||||
connect(soundTouch, &SoundTouch::bassReceived, this, &DevicePluginBose::onBassObjectReceived);
|
connect(soundTouch, &SoundTouch::bassReceived, this, &DevicePluginBose::onBassObjectReceived);
|
||||||
connect(soundTouch, &SoundTouch::bassCapabilitiesReceived, this, &DevicePluginBose::onBassCapabilitiesObjectReceived);
|
connect(soundTouch, &SoundTouch::bassCapabilitiesReceived, this, &DevicePluginBose::onBassCapabilitiesObjectReceived);
|
||||||
connect(soundTouch, &SoundTouch::groupReceived, this, &DevicePluginBose::onGroupObjectReceived);
|
|
||||||
connect(soundTouch, &SoundTouch::zoneReceived, this, &DevicePluginBose::onZoneObjectReceived);
|
connect(soundTouch, &SoundTouch::zoneReceived, this, &DevicePluginBose::onZoneObjectReceived);
|
||||||
|
|
||||||
soundTouch->getInfo();
|
soundTouch->getInfo();
|
||||||
|
|
@ -72,7 +71,6 @@ Device::DeviceSetupStatus DevicePluginBose::setupDevice(Device *device)
|
||||||
soundTouch->getSources();
|
soundTouch->getSources();
|
||||||
soundTouch->getBass();
|
soundTouch->getBass();
|
||||||
soundTouch->getBassCapabilities();
|
soundTouch->getBassCapabilities();
|
||||||
soundTouch->getGroup();
|
|
||||||
soundTouch->getZone();
|
soundTouch->getZone();
|
||||||
|
|
||||||
m_soundTouch.insert(device, soundTouch);
|
m_soundTouch.insert(device, soundTouch);
|
||||||
|
|
@ -222,7 +220,6 @@ void DevicePluginBose::onPluginTimer()
|
||||||
soundTouch->getNowPlaying();
|
soundTouch->getNowPlaying();
|
||||||
soundTouch->getVolume();
|
soundTouch->getVolume();
|
||||||
soundTouch->getBass();
|
soundTouch->getBass();
|
||||||
soundTouch->getGroup();
|
|
||||||
soundTouch->getZone();
|
soundTouch->getZone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#include "soundtouch.h"
|
#include "soundtouch.h"
|
||||||
#include "hardwaremanager.h"
|
#include "hardwaremanager.h"
|
||||||
#include "soundtouch.h"
|
|
||||||
#include "devices/device.h"
|
#include "devices/device.h"
|
||||||
#include "network/networkaccessmanager.h"
|
#include "network/networkaccessmanager.h"
|
||||||
|
|
||||||
|
|
@ -47,111 +46,93 @@ SoundTouch::SoundTouch(NetworkAccessManager *networkAccessManager, QString ipAdd
|
||||||
|
|
||||||
void SoundTouch::getInfo()
|
void SoundTouch::getInfo()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/info");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/info"))
|
||||||
url.setPath("/info");
|
m_getRequestQueue.append("/info");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRestRequestError(QNetworkReply::NetworkError)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getVolume()
|
void SoundTouch::getVolume()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/volume");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/volume"))
|
||||||
url.setPath("/volume");
|
m_getRequestQueue.append("/volume");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getNowPlaying()
|
void SoundTouch::getNowPlaying()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/now_playing");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/now_playing"))
|
||||||
url.setPath("/now_playing");
|
m_getRequestQueue.append("/now_playing");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getBass()
|
void SoundTouch::getBass()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/bass");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/bass"))
|
||||||
url.setPath("/bass");
|
m_getRequestQueue.append("/bass");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getGroup()
|
void SoundTouch::getGroup()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/getGroup");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/getGroup"))
|
||||||
url.setPath("/getGroup");
|
m_getRequestQueue.append("/getGroup");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getSources()
|
void SoundTouch::getSources()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/sources");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/sources"))
|
||||||
url.setPath("/sources");
|
m_getRequestQueue.append("/sources");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getZone()
|
void SoundTouch::getZone()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/getZone");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/getZone"))
|
||||||
url.setPath("/getZone");
|
m_getRequestQueue.append("/getZone");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::getPresets()
|
void SoundTouch::getPresets()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/presets");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/presets"))
|
||||||
url.setPath("/presets");
|
m_getRequestQueue.append("/presets");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SoundTouch::getBassCapabilities()
|
void SoundTouch::getBassCapabilities()
|
||||||
{
|
{
|
||||||
QUrl url;
|
if (!m_getRepliesPending) {
|
||||||
url.setHost(m_ipAddress);
|
sendGetRequest("/bassCapabilities");
|
||||||
url.setScheme("http");
|
} else {
|
||||||
url.setPort(m_port);
|
if (!m_getRequestQueue.contains("/bassCapabilities"))
|
||||||
url.setPath("/bassCapabilities");
|
m_getRequestQueue.append("/bassCapabilities");
|
||||||
//qDebug(dcBose) << "Sending request" << url;
|
}
|
||||||
QNetworkReply *reply = m_networkAccessManager->get(QNetworkRequest(url));
|
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::setKey(KEY_VALUE keyValue)
|
void SoundTouch::setKey(KEY_VALUE keyValue)
|
||||||
|
|
@ -161,62 +142,67 @@ void SoundTouch::setKey(KEY_VALUE keyValue)
|
||||||
url.setScheme("http");
|
url.setScheme("http");
|
||||||
url.setPort(m_port);
|
url.setPort(m_port);
|
||||||
url.setPath("/key");
|
url.setPath("/key");
|
||||||
QByteArray content = ("<?xml version=\"1.0\" ?>");
|
QByteArray content;
|
||||||
content.append("<key state=\"press\" sender=\"Gabbo\">");
|
QXmlStreamWriter xml(&content);
|
||||||
|
xml.writeStartDocument("1.0");
|
||||||
|
xml.writeStartElement("key");
|
||||||
|
xml.writeAttribute("state", "press");
|
||||||
|
xml.writeAttribute("sender", "Gabbo");
|
||||||
switch (keyValue){
|
switch (keyValue){
|
||||||
case KEY_VALUE_PLAY:
|
case KEY_VALUE_PLAY:
|
||||||
content.append("PLAY");
|
xml.writeCharacters("PLAY");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_STOP:
|
case KEY_VALUE_STOP:
|
||||||
content.append("STOP");
|
xml.writeCharacters("STOP");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_PAUSE:
|
case KEY_VALUE_PAUSE:
|
||||||
content.append("PAUSE");
|
xml.writeCharacters("PAUSE");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_PLAY_PAUSE:
|
case KEY_VALUE_PLAY_PAUSE:
|
||||||
content.append("PLAY_PAUSE");
|
xml.writeCharacters("PLAY_PAUSE");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_POWER:
|
case KEY_VALUE_POWER:
|
||||||
content.append("POWER");
|
xml.writeCharacters("POWER");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_NEXT_TRACK:
|
case KEY_VALUE_NEXT_TRACK:
|
||||||
content.append("NEXT_TRACK");
|
xml.writeCharacters("NEXT_TRACK");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_PREV_TRACK:
|
case KEY_VALUE_PREV_TRACK:
|
||||||
content.append("PREV_TRACK");
|
xml.writeCharacters("PREV_TRACK");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_BOOKMARK:
|
case KEY_VALUE_BOOKMARK:
|
||||||
content.append("BOOKMARK");
|
xml.writeCharacters("BOOKMARK");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_AUX_INPUT:
|
case KEY_VALUE_AUX_INPUT:
|
||||||
content.append("AUX_INPUT");
|
xml.writeCharacters("AUX_INPUT");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_REPEAT_ALL:
|
case KEY_VALUE_REPEAT_ALL:
|
||||||
content.append("REPEAT_ALL");
|
xml.writeCharacters("REPEAT_ALL");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_REPEAT_ONE:
|
case KEY_VALUE_REPEAT_ONE:
|
||||||
content.append("REPEAT_ONE");
|
xml.writeCharacters("REPEAT_ONE");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_REPEAT_OFF:
|
case KEY_VALUE_REPEAT_OFF:
|
||||||
content.append("REPEAT_OFF");
|
xml.writeCharacters("REPEAT_OFF");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_ADD_FAVORITE:
|
case KEY_VALUE_ADD_FAVORITE:
|
||||||
content.append("ADD_FAVORITE");
|
xml.writeCharacters("ADD_FAVORITE");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_MUTE:
|
case KEY_VALUE_MUTE:
|
||||||
content.append("MUTE");
|
xml.writeCharacters("MUTE");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_SHUFFLE_ON:
|
case KEY_VALUE_SHUFFLE_ON:
|
||||||
content.append("SHUFFLE_ON");
|
xml.writeCharacters("SHUFFLE_ON");
|
||||||
break;
|
break;
|
||||||
case KEY_VALUE_SHUFFLE_OFF:
|
case KEY_VALUE_SHUFFLE_OFF:
|
||||||
content.append("SHUFFLE_OFF");
|
xml.writeCharacters("SHUFFLE_OFF");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qWarning(dcBose) << "key not yet implemented";
|
qWarning(dcBose) << "key not yet implemented";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
content.append("</key>");
|
xml.writeEndElement(); //key
|
||||||
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
|
|
@ -227,11 +213,15 @@ void SoundTouch::setKey(KEY_VALUE keyValue)
|
||||||
url.setScheme("http");
|
url.setScheme("http");
|
||||||
url.setPort(m_port);
|
url.setPort(m_port);
|
||||||
url.setPath("/key");
|
url.setPath("/key");
|
||||||
QByteArray content = ("<?xml version=\"1.0\" ?>");
|
QByteArray content;
|
||||||
content.append("<key state=\"release\" sender=\"Gabbo\">");
|
QXmlStreamWriter xml(&content);
|
||||||
content.append("POWER");
|
xml.writeStartDocument("1.0");
|
||||||
content.append("</key>");
|
xml.writeStartElement("key");
|
||||||
//qDebug(dcBose) << "Sending request" << url << content;
|
xml.writeAttribute("state", "release");
|
||||||
|
xml.writeAttribute("sender", "Gabbo");
|
||||||
|
xml.writeCharacters("POWER");
|
||||||
|
xml.writeEndElement(); //key
|
||||||
|
xml.writeEndDocument();
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
}
|
}
|
||||||
|
|
@ -270,8 +260,8 @@ void SoundTouch::setSource(ContentItemObject contentItem)
|
||||||
xml.writeEndDocument();
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
|
|
||||||
//QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
//connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::setZone(ZoneObject zone)
|
void SoundTouch::setZone(ZoneObject zone)
|
||||||
|
|
@ -283,7 +273,7 @@ void SoundTouch::setZone(ZoneObject zone)
|
||||||
url.setPath("/setZone");
|
url.setPath("/setZone");
|
||||||
QByteArray content;
|
QByteArray content;
|
||||||
QXmlStreamWriter xml(&content);
|
QXmlStreamWriter xml(&content);
|
||||||
xml.writeStartDocument();
|
xml.writeStartDocument("1.0");
|
||||||
xml.writeStartElement("zone");
|
xml.writeStartElement("zone");
|
||||||
xml.writeAttribute("master", zone.deviceID);
|
xml.writeAttribute("master", zone.deviceID);
|
||||||
foreach (MemberObject member, zone.members){
|
foreach (MemberObject member, zone.members){
|
||||||
|
|
@ -293,8 +283,8 @@ void SoundTouch::setZone(ZoneObject zone)
|
||||||
xml.writeEndElement(); //zone
|
xml.writeEndElement(); //zone
|
||||||
xml.writeEndDocument();
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
//QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
//connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::addZoneSlave(ZoneObject zone)
|
void SoundTouch::addZoneSlave(ZoneObject zone)
|
||||||
|
|
@ -306,7 +296,7 @@ void SoundTouch::addZoneSlave(ZoneObject zone)
|
||||||
url.setPath("/addZoneSlave");
|
url.setPath("/addZoneSlave");
|
||||||
QByteArray content;
|
QByteArray content;
|
||||||
QXmlStreamWriter xml(&content);
|
QXmlStreamWriter xml(&content);
|
||||||
xml.writeStartDocument();
|
xml.writeStartDocument("1.0");
|
||||||
xml.writeStartElement("zone");
|
xml.writeStartElement("zone");
|
||||||
xml.writeAttribute("master", zone.deviceID);
|
xml.writeAttribute("master", zone.deviceID);
|
||||||
foreach (MemberObject member, zone.members){
|
foreach (MemberObject member, zone.members){
|
||||||
|
|
@ -316,8 +306,8 @@ void SoundTouch::addZoneSlave(ZoneObject zone)
|
||||||
xml.writeEndElement(); //zone
|
xml.writeEndElement(); //zone
|
||||||
xml.writeEndDocument();
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
//QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
//connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::removeZoneSlave(ZoneObject zone)
|
void SoundTouch::removeZoneSlave(ZoneObject zone)
|
||||||
|
|
@ -339,8 +329,8 @@ void SoundTouch::removeZoneSlave(ZoneObject zone)
|
||||||
xml.writeEndElement(); //zone
|
xml.writeEndElement(); //zone
|
||||||
xml.writeEndDocument();
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
//QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
//connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::setBass(int volume)
|
void SoundTouch::setBass(int volume)
|
||||||
|
|
@ -395,8 +385,8 @@ void SoundTouch::setSpeaker(PlayInfoObject playInfo)
|
||||||
xml.writeEndElement(); //play_info
|
xml.writeEndElement(); //play_info
|
||||||
xml.writeEndDocument();
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
//QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
//connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::onWebsocketConnected()
|
void SoundTouch::onWebsocketConnected()
|
||||||
|
|
@ -409,7 +399,7 @@ void SoundTouch::onWebsocketDisconnected()
|
||||||
{
|
{
|
||||||
qDebug(dcBose) << "Bose websocket disconnected";
|
qDebug(dcBose) << "Bose websocket disconnected";
|
||||||
emit connectionChanged(false);
|
emit connectionChanged(false);
|
||||||
QTimer::singleShot(5000, [this](){
|
QTimer::singleShot(5000, this, [this](){
|
||||||
QUrl url;
|
QUrl url;
|
||||||
url.setHost(m_ipAddress);
|
url.setHost(m_ipAddress);
|
||||||
url.setScheme("ws");
|
url.setScheme("ws");
|
||||||
|
|
@ -423,15 +413,23 @@ void SoundTouch::onRestRequestFinished() {
|
||||||
QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
|
QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
|
|
||||||
QByteArray data = reply->readAll();
|
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
|
||||||
//qDebug(dcBose) << data;
|
if (m_getRequestQueue.isEmpty()) {
|
||||||
|
m_getRepliesPending = false;
|
||||||
|
} else {
|
||||||
|
sendGetRequest(m_getRequestQueue.takeFirst());
|
||||||
|
}
|
||||||
|
|
||||||
// Check HTTP status code
|
// Check HTTP status code
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
||||||
qCWarning(dcBose()) << "Request error:" << status << reply->errorString();
|
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray data = reply->readAll();
|
||||||
|
//qDebug(dcBose) << data;
|
||||||
|
|
||||||
QXmlStreamReader xml;
|
QXmlStreamReader xml;
|
||||||
xml.addData(data);
|
xml.addData(data);
|
||||||
|
|
||||||
|
|
@ -779,3 +777,19 @@ void SoundTouch::onWebsocketMessageReceived(QString message)
|
||||||
qDebug(dcBose) << "Websocket message received:" << message;
|
qDebug(dcBose) << "Websocket message received:" << message;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoundTouch::sendGetRequest(QString path)
|
||||||
|
{
|
||||||
|
QUrl url;
|
||||||
|
url.setHost(m_ipAddress);
|
||||||
|
url.setScheme("http");
|
||||||
|
url.setPort(m_port);
|
||||||
|
url.setPath(path);
|
||||||
|
//qDebug(dcBose) << "Sending request" << url;
|
||||||
|
QNetworkRequest request = QNetworkRequest(url);
|
||||||
|
|
||||||
|
QNetworkReply *reply = m_networkAccessManager->get(request);
|
||||||
|
m_getRepliesPending = true;
|
||||||
|
connect(reply, &QNetworkReply::finished, this, &SoundTouch::onRestRequestFinished);
|
||||||
|
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRestRequestError(QNetworkReply::NetworkError)));
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,18 @@ public:
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum RequestType {
|
||||||
|
Get,
|
||||||
|
Post
|
||||||
|
};
|
||||||
|
|
||||||
|
void sendGetRequest(QString path);
|
||||||
|
//get calls are getting queued to don't overstrain the device
|
||||||
|
//post calls must get sent immediately
|
||||||
|
//if an get call of the same URL is already in the queu the new one will be ignored
|
||||||
|
QList<QString> m_getRequestQueue;
|
||||||
|
bool m_getRepliesPending = false;
|
||||||
|
|
||||||
NetworkAccessManager *m_networkAccessManager = nullptr;
|
NetworkAccessManager *m_networkAccessManager = nullptr;
|
||||||
QString m_ipAddress;
|
QString m_ipAddress;
|
||||||
int m_port = 8090;
|
int m_port = 8090;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue