Merge remote-tracking branch 'origin/simplify-udpreceiver'

This commit is contained in:
Jenkins 2018-05-11 13:54:40 +02:00
commit 74cc8abc5f
2 changed files with 27 additions and 31 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);
@ -98,7 +99,7 @@ DeviceManager::DeviceSetupStatus DevicePluginUdpCommander::setupDevice(Device *d
DeviceManager::DeviceError DevicePluginUdpCommander::executeAction(Device *device, const Action &action) {
if (device->deviceClassId() == udpCommanderDeviceClassId) {
if (action.actionTypeId() == udpCommanderOutputDataActionTypeId) {
if (action.actionTypeId() == udpCommanderTriggerActionTypeId) {
QUdpSocket *udpSocket = m_commanderList.key(device);
int port = device->paramValue(udpCommanderPortParamTypeId).toInt();
QHostAddress address = QHostAddress(device->paramValue(udpCommanderAddressParamTypeId).toString());
@ -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(udpReceiverTriggeredEventTypeId, 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

@ -13,6 +13,7 @@
"displayName": "UDP Receiver",
"name": "udpReceiver",
"deviceIcon": "Network",
"interfaces": ["inputtrigger"],
"basicTags": ["Service", "Sensor"],
"createMethods": ["user"],
"paramTypes": [
@ -24,30 +25,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": "triggered",
"displayName": "Data received",
"paramTypes": [
{
"id": "93c379e3-4707-46b7-9be0-2d6ff88f5d21",
"name": "data",
"displayName": "Data",
"type": "QString"
}
]
}
]
},
@ -57,6 +49,7 @@
"displayName": "UDP Commander",
"deviceIcon": "Network",
"basicTags": ["Service", "Sensor"],
"interfaces": ["outputtrigger"],
"createMethods": ["user"],
"paramTypes": [
{
@ -80,7 +73,7 @@
"actionTypes": [
{
"id": "6bc52462-b192-46a4-a6df-92cc5a479c89",
"name": "outputData",
"name": "trigger",
"displayName": "Send data",
"paramTypes": [
{