Vivoe Lite 0.5.0
Lightweight GVA like HMI for military displays.
Loading...
Searching...
No Matches
gva.h
Go to the documentation of this file.
1//
2// Copyright (c) 2023, DefenceX PTY LTD
3//
4// This file is part of the VivoeX project developed by DefenceX.
5//
6// Licensed under the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
7// License. See the LICENSE file in the project root for full license details.
8//
12
13#ifndef HMICORE_GVA_H_
14#define HMICORE_GVA_H_
15
16#include <array>
17#include <string>
18
19namespace gva {
20
24
26static const uint32_t kMinimumHeight = 480;
28static const uint32_t kMinimumWidth = 640;
29
33
35enum class LocationEnum { kLocationFormatLongLat = 0, kLocationFormatMgrs };
37enum class ScreenMode { kModeMaintenance = 0, kModeOperational, kModeBlackout };
39enum class LabelModeEnum { kLabelAll, kLabelStatusOnly, kLabelMinimal };
67enum class GvaKeyEnum {
69 kKeyUnknown = 0,
87 kKeyF1,
89 kKeyF2,
91 kKeyF3,
93 kKeyF4,
95 kKeyF5,
97 kKeyF6,
99 kKeyF7,
101 kKeyF8,
103 kKeyF9,
105 kKeyF10,
107 kKeyF11,
109 kKeyF12,
111 kKeyF13,
113 kKeyF14,
115 kKeyF15,
117 kKeyF16,
119 kKeyF17,
121 kKeyF18,
123 kKeyF19,
125 kKeyF20,
127 kKeyF21,
129 kKeyF22,
133 kKeyPower,
138 // These are fake keys that only exist in the software (emulated world)
139 kKeyEscape,
143 kKeyPlus,
145 kKeyMinus,
184};
186enum class GvaStatusTypes { kGvaSuccess = 0, kGvaError, kGvaNetworkError, kGvaDdsError, kGvaXmlError, kGvaRtpError };
206
208enum class SurfaceType {
209 kSurfaceNone = 0,
210 kSurfaceBlackout,
211 kSurfaceFile,
212 kSurfaceVideo,
213 kSurfaceRgb24,
214 kSurfaceCairo
215};
216
218enum class GvaFunctionEnum {
219 kSituationalAwareness = 0,
220 kWeapon,
221 kDefensiveSystems,
222 kSystems,
223 kDriver,
224 KSpecialToRole,
225 kCommunications,
226 kBattlefieldManagementSystem,
227 kAlarmsX
228};
230enum class GvaAlarmType { kAlarmWarnings, kAlarmCaution, kAlarmAdvisory };
233 kTop,
234 kBottom,
235 kLeft,
236 kRight,
237 kAlarmTable,
238 kKeyboard,
239 kAlarmsIndicator,
240 kObjectBoxes
241};
242
246
252 public:
260 bool IsActive(const LabelStates* state) const {
261 return ((*state != LabelStates::kLabelDisabled) && (*state != LabelStates::kLabelHidden));
262 }
263
270 if ((*state != LabelStates::kLabelDisabled) && (*state != LabelStates::kLabelHidden)) {
271 *state = LabelStates::kLabelEnabledSelectedChanging;
272 }
273 }
274
281 if ((*state != LabelStates::kLabelDisabled) && (*state != LabelStates::kLabelHidden)) {
282 *state = LabelStates::kLabelEnabledSelected;
283 }
284 }
285
291 void ResetEnabled(LabelStates* state) const {
292 if ((*state == LabelStates::kLabelEnabledSelected) || (*state == LabelStates::kLabelEnabledSelectedChanging)) {
293 *state = LabelStates::kLabelEnabled;
294 }
295 }
296
303 if (*state == LabelStates::kLabelEnabledSelected) {
304 *state = LabelStates::kLabelEnabled;
305 }
306 }
307
314 if (*state == LabelStates::kLabelEnabledSelectedChanging) {
315 *state = LabelStates::kLabelEnabled;
316 }
317 }
318};
319
324class FunctionSelect : public StateBase {
325 public:
328
330 struct Labels {
333 };
335 std::array<Labels, 8> labels;
336
342
347 void SetEnabled(int index) {
349 StateEnabledSelected(&labels[index].state);
350 }
351
357 for (auto& label : labels) {
358 ResetEnabled(&label.state);
359 }
360 }
361
367 visible = true;
368 for (auto& label : labels) {
369 ResetEnabledSelected(&label.state);
370 }
371 }
372
379 for (auto& label : labels) {
380 ResetEnabledSelectedChanging(&label.state);
381 }
382 }
383};
384
386struct FunctionKeys : public StateBase {
390 struct Labels {
398 std::string text;
400 std::string toggleText1;
402 std::string toggleText2;
403 };
405 std::array<Labels, 6> labels;
406
414 bool Active(int index) { return IsActive(&labels[index].state); }
415
421
426 void SetEnabled(int index) {
428 StateEnabledSelected(&labels[index].state);
429 }
430
436 for (auto& label : labels) {
437 ResetEnabled(&label.state);
438 }
439 }
440
446 visible = true;
447 for (auto& label : labels) {
448 ResetEnabledSelected(&label.state);
449 }
450 }
451
458 for (auto& label : labels) {
459 ResetEnabledSelectedChanging(&label.state);
460 }
461 }
462};
463
465class CommonTaskKeys : public StateBase {
466 public:
470 struct Labels {
474 std::string text_;
475 };
477 std::array<CommonTaskKeys::Labels, 8> labels_;
478
487
492 void SetDisabled(int index) { labels_[index].state_ = LabelStates::kLabelDisabled; }
493
499 void ForceEnabledSelected(int index) { labels_[index].state_ = LabelStates::kLabelEnabled; }
500
505 void SetEnabledSelected(int index) {
507 StateEnabledSelected(&labels_[index].state_);
508 }
509
515 for (auto& label : labels_) {
516 ResetEnabled(&label.state_);
517 }
518 }
519
525 for (auto& label : labels_) {
526 ResetEnabledSelected(&label.state_);
527 }
528 }
529
536 for (auto& label : labels_) {
537 ResetEnabledSelectedChanging(&label.state_);
538 }
539 }
540};
541
551
555 uint32_t red = 0;
557 uint32_t green = 0;
559 uint32_t blue = 0;
560};
561
563struct PointType {
565 int32_t x = 0;
567 int32_t y = 0;
568};
569
573 uint32_t width = 0;
575 uint32_t height = 0;
577 uint32_t depth = 0;
578};
579
583 uint32_t r = 0;
585 uint32_t g = 0;
587 uint32_t b = 0;
588};
589
591struct TouchType {
593 int x = 0;
595 int y = 0;
596};
597
602struct KeyType {
604 GvaKeyEnum key = GvaKeyEnum::kKeyUnknown;
606 LabelStates label_state = LabelStates::kLabelHidden;
607};
608
611 public:
616 EventGvaType() = default;
617
624 EventGvaType(int x, int y) {
625 touch_.x = x;
626 touch_.y = y;
627 type_ = EventEnumType::kTouchEvent;
628 }
629
635 explicit EventGvaType(GvaKeyEnum key) : key_(key) { type_ = EventEnumType::kNoEvent; }
636
640 GvaKeyEnum key_ = GvaKeyEnum::kKeyUnknown;
645};
646
647} // namespace gva
648
649#endif // HMICORE_GVA_H_
Class definition of the CommonTaskKeys.
Definition gva.h:465
bool visible_
The label is visible.
Definition gva.h:468
void ResetAllEnabledSelectedChanging()
Reset and label in the LabelStates::kLabelEnabledSelectedChanging state to LabelStates::kLabelEnabled...
Definition gva.h:535
std::array< CommonTaskKeys::Labels, 8 > labels_
The labels.
Definition gva.h:477
void SetEnabledEnabledChanging(int index)
Set the label to Enabled.
Definition gva.h:483
void ResetAllEnabled()
Reset all LabelStates::kLabelEnabledSelected buttons.
Definition gva.h:514
void SetDisabled(int index)
Set the label to Enabled.
Definition gva.h:492
LabelStates state_
The label state.
Definition gva.h:472
void ForceEnabledSelected(int index)
Set state to EnabledSelected regardless of current state (no checking for valid state transition).
Definition gva.h:499
void ResetAllEnabledSelected()
Reset the label from 'enabled selected' to 'enabled'.
Definition gva.h:524
std::string text_
The label text.
Definition gva.h:474
void SetEnabledSelected(int index)
Set the label to EnabledSelected.
Definition gva.h:505
Label object.
Definition gva.h:470
Class definition of the EventGvaType.
Definition gva.h:610
ResolutionType resize_
The resize dimensions.
Definition gva.h:644
GvaKeyEnum key_
Key pressed.
Definition gva.h:640
EventGvaType()=default
Construct a new Event Gva Type object.
EventGvaType(int x, int y)
Construct a new Event Gva Type object.
Definition gva.h:624
TouchType touch_
Touch event.
Definition gva.h:642
EventGvaType(GvaKeyEnum key)
Construct a new Event Gva Type object.
Definition gva.h:635
EventEnumType type_
The event type.
Definition gva.h:638
These are the labels on the left and right of the screen.
Definition gva.h:324
std::array< Labels, 8 > labels
The labels.
Definition gva.h:335
void ResetAllEnabledSelectedChanging()
Reset and label in the LabelStates::kLabelEnabledSelectedChanging state to LabelStates::kLabelEnabled...
Definition gva.h:378
void ResetAllEnabled()
Reset all LabelStates::kLabelEnabledSelected buttons.
Definition gva.h:356
void SetEnabled(int index)
Set the label to Enabled.
Definition gva.h:347
LabelStates state
The label state.
Definition gva.h:332
void ResetAllEnabledSelected()
Reset the label from 'enabled selected' to 'enabled'.
Definition gva.h:366
void SetEnabledEnabledChanging(int index)
Set the label to Enabled.
Definition gva.h:341
bool visible
The label is visible.
Definition gva.h:327
Label object.
Definition gva.h:330
Base class implementing basic label state changes and checks.
Definition gva.h:251
void ResetEnabledSelected(LabelStates *state) const
Reset the label from 'enabled selected' to 'enabled'.
Definition gva.h:302
void StateEnabledSelectedChanging(LabelStates *state) const
Set the label to EnabledSelectedChanging.
Definition gva.h:269
void ResetEnabled(LabelStates *state) const
Reset the label from 'enabled selected' to 'enabled'.
Definition gva.h:291
void StateEnabledSelected(LabelStates *state) const
Set the label to EnabledSelected.
Definition gva.h:280
bool IsActive(const LabelStates *state) const
Check if the label is active.
Definition gva.h:260
void ResetEnabledSelectedChanging(LabelStates *state) const
Reset the label from 'enabled selected changing' to 'enabled'.
Definition gva.h:313
SurfaceType
Enum for the surface types.
Definition gva.h:208
GvaFunctionEnum
This is where you define all your screens, these are just the defaults.
Definition gva.h:218
LabelModeEnum
Enum for the label mode.
Definition gva.h:39
EventEnumType
Enum for the widget types.
Definition gva.h:188
@ kDdsEvent
A DDS message.
@ kResizeEvent
A resize event.
@ kKeyEventReleased
Key event released.
@ kNoEvent
No event.
@ kRedrawEvent
A redraw event.
@ kTouchEvent
Touch event.
@ kKeyEventPressed
Key event.
@ kWidgetUpdate
A widget update event.
ScreenMode
Enum for the screen mode.
Definition gva.h:37
GvaStatusTypes
HMI erro types, can be extended if needed.
Definition gva.h:186
LocationEnum
Enum for the location type.
Definition gva.h:35
GvaFunctionGroupEnum
These are the functional groups.
Definition gva.h:232
GvaKeyEnum
These are physical GVA keys around the display.
Definition gva.h:67
@ kKeyMinus
The Minus key.
@ kKeyLeftArrow
The Left Arrow key.
@ kKeyF7
The Function key F7.
@ kKeyPlus
The Plus key.
@ kKeyUpArrow
The Up Arrow key.
@ kKeyKeyboard_7
Numeric key 7.
@ kKeyF16
The Function key F16.
@ kKeyF1
The Function key F1.
@ kKeyF6
The Function key F6.
@ kKeyF21
Special future use.
@ kKeyPreviousLabel
The previous label key.
@ kKeyKeyboard_4
Numeric key 4.
@ kKeyKeyboard_8
Numeric key 8.
@ kKeyNextLabel
The next label key.
@ kKeyKeyboard_2
Numeric key 2.
@ kKeyF17
The Function key F17.
@ kKeyRightArrow
The Right Arrow key.
@ kKeyF8
The Function key F8.
@ kKeyF18
The Function key F18.
@ kKeyLessThen
The Less than key.
@ kKeyKeyboard_5
Numeric key 5.
@ kKeyPower
Power key.
@ kKeyKeyboard_1
Numeric key 1.
@ kKeySystems
The systems key.
@ kKeyFullscreen
The key full screen.
@ kKeyKeyboard_3
Numeric key 3.
@ kKeyF14
The Function key F14.
@ kKeyBlackout
Blackout key, special to AUS-GVA screens.
@ KKeyBrightnessUp
Brightness up key.
@ kKeyDriver
The driver key.
@ kKeyF10
The Function key F10.
@ kKeySituationalAwareness
The situational awareness key.
@ kKeyDefensiveSystems
The defensive systems key.
@ kKeySpecialToRole
The special to role key.
@ kKeyF3
The Function key F3.
@ kKeyCommunications
The communications key.
@ kKeyKeyboard
The On Screen Keyboard key.
@ kKeyF4
The Function key F4.
@ kKeyGreaterThan
The Greater then key.
@ kKeyUnknown
Unknown key.
@ kKeyF2
The Function key F2.
@ kKeyF19
The Function key F19.
@ kKeyF15
The Function key F15.
@ kKeyF5
The Function key F5.
@ kKeyF13
The Function key F13.
@ kKeyKeyboard_6
Numeric key 6.
@ kKeyF20
The Function key F20.
@ kKeyF11
The Function key F11.
@ kKeyF9
The Function key F9.
@ kKeyWeapon
The weapon key.
@ kKeyBrightnessDown
Brightness down key.
@ kKeyF12
The Function key F12.
@ kKeyBattlefieldManagementSystem
The battlefield management system key.
@ kKeyKeyboard_0
Numeric key 0.
@ kKeyDownArrow
The Down Arrow key.
@ kKeyF22
Special future use.
@ kKeyKeyboard_9
Numeric key 9.
GvaAlarmType
These are the alarm types.
Definition gva.h:230
LabelStates
Enum for the label states.
Definition gva.h:41
@ kLabelDisabled
Screen is disabled.
@ kLabelEnabledSelected
Screen is enabled and selected.
@ kLabelHidden
Screen is hidden.
@ kLabelEnabledSelectedChanging
Screen is enabled and selected and changing.
@ kLabelEnabled
Screen is enabled.
LineType
Enum for the label states.
Definition gva.h:54
@ kLineDashedMedium
Line is dashed small.
@ kLineDotted
Line is dotted.
@ kLineDashedLarge
Line is dashed large.
@ kLineDashed
Line is dashed.
@ kLineSolid
Line is solid.
Struct for the colour.
Definition gva.h:553
uint32_t green
The green value.
Definition gva.h:557
uint32_t blue
The blue value.
Definition gva.h:559
uint32_t red
The red value.
Definition gva.h:555
These are at the top of the screen.
Definition gva.h:386
void SetEnabled(int index)
Set the label to Enabled.
Definition gva.h:426
std::string text
The label text.
Definition gva.h:398
void SetEnabledEnabledChanging(int index)
Set the label to Enabled.
Definition gva.h:420
void ResetAllEnabledSelected()
Reset the label from 'enabled selected' to 'enabled'.
Definition gva.h:445
bool Active(int index)
Check if the label is active.
Definition gva.h:414
LabelStates state
The label state.
Definition gva.h:392
void ResetAllEnabledSelectedChanging()
Reset and label in the LabelStates::kLabelEnabledSelectedChanging state to LabelStates::kLabelEnabled...
Definition gva.h:457
std::string toggleText1
The label text when toggled on.
Definition gva.h:400
std::array< Labels, 6 > labels
The labels text.
Definition gva.h:405
std::string toggleText2
The label text when toggled off.
Definition gva.h:402
bool toggleOn
toggle on bool
Definition gva.h:396
bool visible
The label is visible.
Definition gva.h:388
void ResetAllEnabled()
Reset all LabelStates::kLabelEnabledSelected buttons.
Definition gva.h:435
bool toggleActive
True if active.
Definition gva.h:394
Label object.
Definition gva.h:390
This holds additional information on keys.
Definition gva.h:602
GvaKeyEnum key
The key pressed.
Definition gva.h:604
LabelStates label_state
Only applicable to labels on screen F1-F20.
Definition gva.h:606
Enum for the location type.
Definition gva.h:543
float lon
The longitude value.
Definition gva.h:549
float lat
The location value.
Definition gva.h:547
LocationEnum locationFormat
The location format.
Definition gva.h:545
Struct for the point.
Definition gva.h:563
int32_t y
The Y position.
Definition gva.h:567
int32_t x
The X position.
Definition gva.h:565
Struct for the resolution.
Definition gva.h:571
uint32_t depth
The depth of the screen, colour depth.
Definition gva.h:577
uint32_t height
The height of the screen.
Definition gva.h:575
uint32_t width
The width of the screen.
Definition gva.h:573
Struct for RGB values.
Definition gva.h:581
uint32_t g
Green.
Definition gva.h:585
uint32_t b
Blue.
Definition gva.h:587
uint32_t r
Red.
Definition gva.h:583
Struct for touch events.
Definition gva.h:591
int x
The touch X position.
Definition gva.h:593
int y
The touch Y position.
Definition gva.h:595