Skip to content

Commit a30e67f

Browse files
committed
Updated behaviour of the API to handle instance data requests such as getImageSnapshot and getLedSnapshot.
1 parent e7c46f4 commit a30e67f

File tree

7 files changed

+484
-334
lines changed

7 files changed

+484
-334
lines changed

include/api/JsonAPI.h

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,24 @@ private slots:
285285
///
286286
void handleSystemCommand(const QJsonObject &message, const JsonApiCommand& cmd);
287287

288-
/// @brief Handle an incoming JSON message for actions related to the current image
288+
/// Handle an incoming data request message
289+
///
290+
/// @param message the incoming message
291+
///
292+
void handleInstanceDataCommand(const QJsonObject &message, const JsonApiCommand& cmd);
293+
294+
/// Handle an incoming JSON message to request the current image
295+
///
289296
/// @param message the incoming message
290297
///
291-
void handleGetCurrentImageCommand(const QJsonObject &message, const JsonApiCommand& cmd);
298+
void handleGetImageSnapshotCommand(const QJsonObject &message, const JsonApiCommand& cmd);
299+
300+
/// Handle an incoming JSON message to request the current led colors
301+
///
302+
/// @param message the incoming message
303+
///
304+
void handleGetLedSnapshotCommand(const QJsonObject &message, const JsonApiCommand& cmd);
305+
292306

293307
void applyColorAdjustments(const QJsonObject &adjustment, ColorAdjustment *colorAdjustment);
294308
void applyColorAdjustment(const QString &colorName, const QJsonObject &adjustment, RgbChannelAdjustment &rgbAdjustment);
@@ -408,4 +422,7 @@ private slots:
408422

409423
// The JsonCallbacks instance which handles data subscription/notifications
410424
QSharedPointer<JsonCallbacks> _jsonCB;
425+
426+
427+
411428
};

include/api/JsonApiCommand.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class Command {
2323
Image,
2424
InputSource,
2525
Instance,
26+
InstanceData,
2627
LedColors,
2728
LedDevice,
2829
Logging,
@@ -34,8 +35,7 @@ class Command {
3435
System,
3536
Temperature,
3637
Transform,
37-
VideoMode,
38-
GetCurrentImage
38+
VideoMode
3939
};
4040

4141
static QString toString(Type type) {
@@ -54,6 +54,7 @@ class Command {
5454
case Image: return "image";
5555
case InputSource: return "inputsource";
5656
case Instance: return "instance";
57+
case InstanceData: return "instance-data";
5758
case LedColors: return "ledcolors";
5859
case LedDevice: return "leddevice";
5960
case Logging: return "logging";
@@ -66,7 +67,6 @@ class Command {
6667
case Transform: return "transform";
6768
case VideoMode: return "videomode";
6869
case Service: return "service";
69-
case GetCurrentImage: return "getcurrentimage";
7070
default: return "unknown";
7171
}
7272
}
@@ -87,7 +87,9 @@ class SubCommand {
8787
Discover,
8888
GetConfig,
8989
GetConfigOld,
90+
GetImageSnapshot,
9091
GetInfo,
92+
GetLedSnapshot,
9193
GetPendingTokenRequests,
9294
GetProperties,
9395
GetSchema,
@@ -138,7 +140,9 @@ class SubCommand {
138140
case Discover: return "discover";
139141
case GetConfig: return "getconfig";
140142
case GetConfigOld: return "getconfig-old";
143+
case GetImageSnapshot: return "getImageSnapshot";
141144
case GetInfo: return "getInfo";
145+
case GetLedSnapshot: return "getLedSnapshot";
142146
case GetPendingTokenRequests: return "getPendingTokenRequests";
143147
case GetProperties: return "getProperties";
144148
case GetSchema: return "getschema";
@@ -296,6 +300,9 @@ class ApiCommandRegister {
296300
{ {"instance", "startInstance"}, { Command::Instance, SubCommand::StartInstance, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} },
297301
{ {"instance", "stopInstance"}, { Command::Instance, SubCommand::StopInstance, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} },
298302
{ {"instance", "switchTo"}, { Command::Instance, SubCommand::SwitchTo, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} },
303+
{ {"instance-data", ""}, { Command::InstanceData, SubCommand::Empty, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
304+
{ {"instance-data", "getImageSnapshot"}, { Command::InstanceData, SubCommand::GetImageSnapshot, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
305+
{ {"instance-data", "getLedSnapshot"}, { Command::InstanceData, SubCommand::GetLedSnapshot, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes } },
299306
{ {"ledcolors", "imagestream-start"}, { Command::LedColors, SubCommand::ImageStreamStart, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
300307
{ {"ledcolors", "imagestream-stop"}, { Command::LedColors, SubCommand::ImageStreamStop, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
301308
{ {"ledcolors", "ledstream-start"}, { Command::LedColors, SubCommand::LedStreamStart, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
@@ -324,8 +331,7 @@ class ApiCommandRegister {
324331
{ {"system", "toggleIdle"}, { Command::System, SubCommand::ToggleIdle, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} },
325332
{ {"temperature", ""}, { Command::Temperature, SubCommand::Empty, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
326333
{ {"transform", ""}, { Command::Transform, SubCommand::Empty, Authorization::Yes, InstanceCmd::Yes, NoListenerCmd::Yes} },
327-
{ {"videomode", ""}, { Command::VideoMode, SubCommand::Empty, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} },
328-
{ {"getcurrentimage", ""}, { Command::GetCurrentImage, SubCommand::Empty, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} }
334+
{ {"videomode", ""}, { Command::VideoMode, SubCommand::Empty, Authorization::Yes, InstanceCmd::No, NoListenerCmd::Yes} }
329335
};
330336
return commandLookup;
331337
}

libsrc/api/JSONRPC_schema/schema-getcurrentimage.json

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"type":"object",
3+
"required":true,
4+
"properties":{
5+
"command": {
6+
"type" : "string",
7+
"required" : true,
8+
"enum" : ["instance-data"]
9+
},
10+
"subcommand" : {
11+
"type" : "string",
12+
"required" : true,
13+
"enum" : ["getImageSnapshot","getLedSnapshot"]
14+
},
15+
"instance" : {
16+
"type": "integer",
17+
"minimum": 0,
18+
"maximum": 255
19+
},
20+
"filetype" : {
21+
"type" : "string",
22+
"enum" : ["BMP","JPG","PNG"]
23+
},
24+
"tan" : {
25+
"type" : "integer"
26+
}
27+
},
28+
"additionalProperties": false
29+
}

libsrc/api/JSONRPC_schema/schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"command": {
66
"type" : "string",
77
"required" : true,
8-
"enum": [ "color", "image", "effect", "create-effect", "delete-effect", "serverinfo", "clear", "clearall", "adjustment", "sourceselect", "config", "componentstate", "ledcolors", "logging", "processing", "sysinfo", "videomode", "authorize", "instance", "leddevice", "inputsource", "service", "system", "transform", "correction", "temperature", "getcurrentimage" ]
8+
"enum": [ "color", "image", "effect", "create-effect", "delete-effect", "serverinfo", "clear", "clearall", "adjustment", "sourceselect", "config", "componentstate", "ledcolors", "logging", "processing", "sysinfo", "videomode", "authorize", "instance", "instance-data", "leddevice", "inputsource", "service", "system", "transform", "correction", "temperature" ]
99
}
1010
}
1111
}

libsrc/api/JSONRPC_schemas.qrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
<file alias="schema-color">JSONRPC_schema/schema-color.json</file>
55
<file alias="schema-image">JSONRPC_schema/schema-image.json</file>
66
<file alias="schema-serverinfo">JSONRPC_schema/schema-serverinfo.json</file>
7-
<file alias="schema-getcurrentimage">JSONRPC_schema/schema-getcurrentimage.json</file>
87
<file alias="schema-sysinfo">JSONRPC_schema/schema-sysinfo.json</file>
98
<file alias="schema-clear">JSONRPC_schema/schema-clear.json</file>
109
<file alias="schema-clearall">JSONRPC_schema/schema-clearall.json</file>
@@ -21,6 +20,7 @@
2120
<file alias="schema-videomode">JSONRPC_schema/schema-videomode.json</file>
2221
<file alias="schema-authorize">JSONRPC_schema/schema-authorize.json</file>
2322
<file alias="schema-instance">JSONRPC_schema/schema-instance.json</file>
23+
<file alias="schema-instance-data">JSONRPC_schema/schema-instancedata.json</file>
2424
<file alias="schema-leddevice">JSONRPC_schema/schema-leddevice.json</file>
2525
<file alias="schema-inputsource">JSONRPC_schema/schema-inputsource.json</file>
2626
<file alias="schema-service">JSONRPC_schema/schema-service.json</file>

0 commit comments

Comments
 (0)