simplify udp receiver

This commit is contained in:
Michael Zanetti 2018-04-10 01:24:09 +02:00
parent 1704a818ab
commit 678258defb
2 changed files with 23 additions and 29 deletions

View File

@ -80,6 +80,7 @@ DeviceManager::DeviceSetupStatus DevicePluginUdpCommander::setupDevice(Device *d
delete udpSocket;
return DeviceManager::DeviceSetupStatusFailure;
}
qCDebug(dcUdpCommander()) << "Listening on port" << port;
connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));
m_receiverList.insert(udpSocket, device);
@ -131,11 +132,14 @@ void DevicePluginUdpCommander::deviceRemoved(Device *device)
void DevicePluginUdpCommander::readPendingDatagrams()
{
qCDebug(dcUdpCommander()) << "UDP datagram received";
QUdpSocket *socket= static_cast<QUdpSocket *>(sender());
Device *device = m_receiverList.value(socket);
if (!device)
if (!device) {
qCWarning(dcUdpCommander()) << "Received a datagram from a socket we don't know";
return;
}
QByteArray datagram;
QHostAddress sender;
@ -146,14 +150,13 @@ void DevicePluginUdpCommander::readPendingDatagrams()
socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
}
device->setStateValue(udpReceiverInputDataStateTypeId, datagram);
qCDebug(dcUdpCommander()) << device->name() << "got command from" << sender.toString() << senderPort;
Event ev = Event(udpReceiverDataReceivedEventTypeId, device->id());
ParamList params;
params.append(Param(udpReceiverDataParamTypeId, datagram));
ev.setParams(params);
emit emitEvent(ev);
if (datagram == device->paramValue(udpReceiverCommandParamTypeId).toByteArray() ||
datagram == device->paramValue(udpReceiverCommandParamTypeId).toByteArray() + "\n") {
qCDebug(dcUdpCommander()) << device->name() << "got command from" << sender.toString() << senderPort;
emit emitEvent(Event(udpReceiverCommandReceivedEventTypeId, device->id()));
// Send response for verification
socket->writeDatagram("OK\n", sender, senderPort);
}
// Send response for verification
socket->writeDatagram("OK\n", sender, senderPort);
}

View File

@ -24,30 +24,21 @@
"minValue": 0,
"maxValue": 65535,
"defaultValue": 4242
},
{
"id": "d0f29961-1624-4b91-a0e8-9b1cc86c44c7",
"name": "command",
"displayName": "Command",
"type": "QString",
"defaultValue": "Hello"
}
],
"stateTypes":[
{
"id": "065a1a0a-d324-4ae6-a461-bef8143e8795",
"name": "inputData",
"displayName": "Received data",
"displayNameEvent": "Received data changed",
"type": "QString",
"defaultValue": ""
}
],
"eventTypes": [
{
"id": "5fecbba3-ffbb-456b-872c-a2f571c681cb",
"name": "commandReceived",
"displayName": "Command received"
"name": "dataReceived",
"displayName": "Data received",
"paramTypes": [
{
"id": "93c379e3-4707-46b7-9be0-2d6ff88f5d21",
"name": "data",
"displayName": "Data",
"type": "QString"
}
]
}
]
},