From 5a8b5c4b51a782ded1a6af9e53914c9e06976dab Mon Sep 17 00:00:00 2001 From: Vladimir Roncevic Date: Fri, 28 Aug 2026 14:59:22 +0200 Subject: [PATCH 1/2] [minihil] Updated minihildesk modes (toogle, timer, pulse, blink), updated docs --- README.md | 80 +++++++- docs/build/doctrees/environment.pickle | Bin 43188 -> 64653 bytes docs/build/doctrees/index.doctree | Bin 22725 -> 37299 bytes docs/build/html/_sources/index.rst.txt | 101 +++++++++- docs/build/html/index.html | 112 ++++++++++- docs/build/html/searchindex.js | 2 +- docs/foundations.png | Bin 36509 -> 134258 bytes docs/source/index.rst | 101 +++++++++- sw/minihildesk/build/minihildesk | Bin 1341808 -> 1646320 bytes sw/minihildesk/build/resources.cc | 182 ++++++++++++++---- sw/minihildesk/resources/style.css | 116 +++++++++-- sw/minihildesk/src/app_controller.cc | 33 ++++ sw/minihildesk/src/app_controller.h | 4 + sw/minihildesk/src/iapp_controller.h | 4 + sw/minihildesk/src/view/home.cc | 33 +++- sw/minihildesk/src/view/home.h | 4 + .../src/view/pages/mode_page_blink.cc | 99 ++++++++++ .../src/view/pages/mode_page_blink.h | 61 ++++++ .../src/view/pages/mode_page_pulse.cc | 73 +++++++ .../src/view/pages/mode_page_pulse.h | 50 +++++ .../src/view/pages/mode_page_timer.cc | 72 +++++++ .../src/view/pages/mode_page_timer.h | 50 +++++ .../src/view/pages/mode_page_toggle.cc | 71 +++++++ .../src/view/pages/mode_page_toggle.h | 50 +++++ sw/minihildesk/src/view/relay_widget.cc | 101 +++++++--- sw/minihildesk/src/view/relay_widget.h | 37 +++- 26 files changed, 1338 insertions(+), 98 deletions(-) create mode 100644 sw/minihildesk/src/view/pages/mode_page_blink.cc create mode 100644 sw/minihildesk/src/view/pages/mode_page_blink.h create mode 100644 sw/minihildesk/src/view/pages/mode_page_pulse.cc create mode 100644 sw/minihildesk/src/view/pages/mode_page_pulse.h create mode 100644 sw/minihildesk/src/view/pages/mode_page_timer.cc create mode 100644 sw/minihildesk/src/view/pages/mode_page_timer.h create mode 100644 sw/minihildesk/src/view/pages/mode_page_toggle.cc create mode 100644 sw/minihildesk/src/view/pages/mode_page_toggle.h diff --git a/README.md b/README.md index eb1c2f9..b580f19 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ other information that should be provided before the tool is installed. - [SIL (Software-in-the-Loop) Host Build](#sil-software-in-the-loop-host-build) - [Prerequisites](#prerequisites) - [Compile and Run](#compile-and-run) +- [minihildesk GUI Client](#minihildesk-gui-client) - [Yocto Image Build (Raspberry Pi Target)](#yocto-image-build-raspberry-pi-target) - [Prerequisites](#prerequisites-1) - [Compile target image](#compile-target-image) @@ -65,6 +66,35 @@ The daemon will boot in SIL mode and print: --- +### minihildesk GUI Client + +**minihildesk** is a premium GTKmm-based C++ desktop GUI client designed to connect to the `minihild` server (either running on a Raspberry Pi target or locally in SIL mock mode). + +It features: +- A connection bar supporting standard TCP connection, **SSL/TLS secure connection**, and **Mutual TLS (mTLS) client verification**. +- A grid of 8 Relay Control Cards displaying status via glowing LED indicators and active green borders. +- Multi-mode relay control per channel: **Toggle** (manual switch), **Timer** (seconds spin-input), **Pulse** (milliseconds spin-input up to 100,000 ms), and **Blink** (ON/OFF ms inputs and cycle count). +- Automatic hardware safety auto-off logic: switching modes on an active channel immediately turns the relay OFF on the server before entering the new mode. +- A monospace green log terminal at the bottom showcasing outgoing and incoming JSON-RPC traffic. + +#### Prerequisites +Install the GTKmm-4.0 development headers, OpenSSL, and JSON library: +```bash +sudo apt-get install libgtkmm-4.0-dev libssl-dev nlohmann-json3-dev +``` + +#### Compile and Run +```bash +# Configure and compile using CMake +cmake -B sw/minihildesk/build -S sw/minihildesk +cmake --build sw/minihildesk/build + +# Start the desktop GUI app +./sw/minihildesk/build/minihildesk +``` + +--- + ### Yocto Image Build (Raspberry Pi Target) MiniHIL packages `minihild` into a custom Yocto Linux image (`minihil-image`) using `meta-raspberrypi` and Poky. @@ -143,7 +173,7 @@ bzcat sw/build-minihil/tmp/deploy/images/raspberrypi3-64/minihil-image-raspberry You can send JSON-RPC text frames (terminated by `\n`) to port `9000`. #### `set_relay` -Energize or de-energize a relay channel (1 to 8): +Energize or de-energize a relay channel manually (1 to 8): - **Request**: ```json {"jsonrpc": "2.0", "method": "set_relay", "params": {"relay_id": 3, "state": true}, "id": 1} @@ -154,7 +184,7 @@ Energize or de-energize a relay channel (1 to 8): ``` #### `get_relays` -Query states of all 8 relay channels: +Query immediate physical states of all 8 relay channels: - **Request**: ```json {"jsonrpc": "2.0", "method": "get_relays", "id": 2} @@ -164,6 +194,50 @@ Query states of all 8 relay channels: {"jsonrpc": "2.0", "result": {"1": false, "2": false, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false}, "id": 2} ``` +#### `start_timer` +Keep a relay active for a specific duration in seconds: +- **Request**: + ```json + {"jsonrpc": "2.0", "method": "start_timer", "params": {"relay_id": 2, "seconds": 10}, "id": 3} + ``` +- **Response**: + ```json + {"jsonrpc": "2.0", "result": {"relay_id": 2, "seconds": 10, "success": true}, "id": 3} + ``` + +#### `start_pulse` +Generate a single momentary pulse in milliseconds (up to 100,000 ms): +- **Request**: + ```json + {"jsonrpc": "2.0", "method": "start_pulse", "params": {"relay_id": 3, "duration_ms": 5000}, "id": 4} + ``` +- **Response**: + ```json + {"jsonrpc": "2.0", "result": {"relay_id": 3, "duration_ms": 5000, "success": true}, "id": 4} + ``` + +#### `start_blink` +Repeatedly cycle relay state ON and OFF: +- **Request**: + ```json + {"jsonrpc": "2.0", "method": "start_blink", "params": {"relay_id": 4, "on_ms": 1000, "off_ms": 1000, "count": 5}, "id": 5} + ``` +- **Response**: + ```json + {"jsonrpc": "2.0", "result": {"relay_id": 4, "on_ms": 1000, "off_ms": 1000, "count": 5, "success": true}, "id": 5} + ``` + +#### `get_relay_status` +Query detailed diagnostic status and remaining time for a single channel: +- **Request**: + ```json + {"jsonrpc": "2.0", "method": "get_relay_status", "params": {"relay_id": 2}, "id": 6} + ``` +- **Response**: + ```json + {"jsonrpc": "2.0", "result": {"relay_id": 2, "status": "Channel 2: ON (Timer, rem: 8s)"}, "id": 6} + ``` + ### Docs [![Documentation Status](https://readthedocs.org/projects/minihil/badge/?version=latest)](https://minihil.readthedocs.io/projects/minihil/en/latest/?badge=latest) @@ -182,4 +256,4 @@ Copyright (C) 2020 - 2026 by [electux.github.io/minihil](https://electux.github. Lets help and support Raspberry PI && GNOME. -Raspberry Pi & GNOME Foundations \ No newline at end of file +Foundations \ No newline at end of file diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 60799f594908bb7407d02b01c31171a6e9ee9884..b71269159594474e4a3e387a942efb8b41252640 100644 GIT binary patch delta 12917 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⪙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 QOZDACYSwvv`JI9M54(DOHvj+t diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index 545e0a3c9b9205a23e382baaf79c89ce64102ad5..91d1c8f7e6fd5e25098a5277d9b3a6da279b4e6a 100644 GIT binary patch literal 37299 zcmdU23y>T~d6q2Q>F%V{%aXv6<&0&^zB_C8^stS5*x2$(mSssNAqg9>&ED+p+|I0a zch>Vb>5Lr=6&oE4#Eus*=2-~@LQ#ZA48|$QgAfQwQAr5KRH!0QgaQ*n$g?U{RPz1Z z(>*=2yK}pzJ=<}W#(O=}-GBe@{{MbF)c3BBKemkh7p!yZrd2za)r-ZNT{PTAFi^A$ ze$}XXjmI0KZ*Dx;7zqX){j6*IPQhpd%kV|Pv?@i%s5S1z%eC~qXI0#6*uW~+D0r4# zll9F$v)^2WZ_UA=&$GOWp}Y!KRjrzZ1{?GVzF2wMI7fX)FCK1iF#78{I`tanhF~x! zp)^+n{ULBu!ODtNGa6HVUJr(J&vUH2?_p3hh!s}R1;D|oLPd976ykSZO|SA_14X|c z{gKxTXB=aOzVU-qo?fC?4Rf8j)m&p$n)kWk)XZ^BD0U#-*1Wy>6;_xoK=HY;J5!vs?{585O%u zl%d~N!O+f{R>9N?dQHn4n(rD#ZN_%A+wVGjG|R9_2=8}2$F7ysmRBn+bF6P^LN-Qv z9UtkGc^To;{B7Gx;;b#S#@B<}fJMIHgW(T2r zFq|6nt{~3P zjbI4+u4qB|f^!~h1j}!3m`}PsG{HJXkgeu<5(gq|pZNqJe55^u{lGH=XHp%_UeJ28WsM(g<`ty>GIstuAd zw-_;HK7~83Hro+tFK(fonkc)tAqdJo$0)lor0mxt%0Am6Wv>^MO%d5v<8LBlXKu!@ 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 delta 2247 zcmai0du&rx7~i?=z04tY%U;0RaakECG`!Ng!tiHQSgycq1%WDo<7yl8rf5!~Hxx_W-xH3}`GXVm25lTLy!+DrUief;5Aa zB`?#>g06}DX{%?f6uvKQ6KYj^ZGue<$Xj0vgEfqeg zse`^U1FHdZ?IE~Qz63t1ZDT`m*5GW`R(NLPS?;h#kzQwF$Kn*I^wgPRw&v8OP--op zhA%vf7;0Zxp)#(FDI>}XOaT2Umv-C+b#Sd@8Tjfg?A;ij+I&uFl6Kj^^Po<<8nZ$+2ybWr8CfashLNexvnY42xK*s?P4xw3=~ z&0*4&WBi8Lw4qVhy(oFGTmDuDzijJ*{Dx$(Hyc50>R?82R_DWxLY`ZwR|#<;!Y+(V z(?eTlRn&c)TdjxtrKKv{4$X>eDKpq8=AI5NcjdtGl9ZG$XXk+x(v+^WSd-^W!U5~e z+3;9v9_yrR(j_`09r{^k#0|r(y=)iRPgowweRhTi7WNfV>iX(Ra#NApqJ7&*5&jjSxncF)z3=R&kR<(mk zL)9E!%g=lB1?u3G9&XoXMP3?uoSDshLP8*j*LYYx8Ch~FD(H3xyPXm*FU4PQHpv1h zdy0&PxC!46CeAqL20qfc$HL6(V`%%LXx4ZLp;gDw?(8k&47_?ElI@QQgIZD*`_5+) zA&p52$HpcvqNvdYreaydotl!ILp#b{IyIt5XVfj0u}YeV9`Ip=bnvj-nw=)EBIkS* zlkJdd+zYih(QTk2f z+<+oR?~T$|YxLxc^dgT@ZcOBx8xmpI|$~ zI5bYWmg2!*ykAAZjMUjpw=aAi?vHiXwmSp9Znxh*EVg>YY%xZL4%#{HUp{hcoYR}yFd&@T=yAEd0e6MC z-sf~lZn3zqNRhFrKZWv56#{wmcm||kx9IBk4){IY!GV5%K#?m2C^)is(OU8_^u{oH ze7)jxC5l`nz>Xt}xOD>TJ+h@)4r7Pq5D7m%A#y(nnM4nXzv)8$MPdtyr%3!x;x`g^ zX+)orxJu#@58EbkiyM(Qq~eBD%#ex~Qn5lRPDsTFsqrCtmIJ+#S`JgRyF`gx;Nf)mkL(4Qh@Az-m3Afkn9u1CxVQJY0|94` xJD}j7iz`Pja6W+^3%Ge)&-Dp(iFC*gZyqaLVxuQ$7b4)K=Kc}DCj+EO`+wy$n2-Pf diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index e434dc8..550f466 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -55,6 +55,38 @@ Compile and Run The daemon will boot in SIL mode and print: ``[SilRelayController] Software-in-the-Loop simulation initialized.`` +minihildesk GUI Client +---------------------- + +**minihildesk** is a premium GTKmm-based C++ desktop GUI client designed to connect to the ``minihild`` server (either running on a Raspberry Pi target or locally in SIL mock mode). + +It features: + +* A connection bar supporting standard TCP connection, **SSL/TLS secure connection**, and **Mutual TLS (mTLS) client verification**. +* A grid of 8 Relay Control Cards displaying status via glowing LED indicators and active green borders. +* Multi-mode relay control per channel: **Toggle** (manual switch), **Timer** (seconds spin-input), **Pulse** (milliseconds spin-input up to 100,000 ms), and **Blink** (ON/OFF ms inputs and cycle count). +* Automatic hardware safety auto-off logic: switching modes on an active channel immediately turns the relay OFF on the server before entering the new mode. +* A monospace green log terminal at the bottom showcasing outgoing and incoming JSON-RPC traffic. + +Prerequisites +~~~~~~~~~~~~~ +Install the GTKmm-4.0 development headers, OpenSSL, and JSON library: + +.. code-block:: bash + + sudo apt-get install libgtkmm-4.0-dev libssl-dev nlohmann-json3-dev + +Compile and Run +~~~~~~~~~~~~~~~ +.. code-block:: bash + + # Configure and compile using CMake + cmake -B sw/minihildesk/build -S sw/minihildesk + cmake --build sw/minihildesk/build + + # Start the desktop GUI app + ./sw/minihildesk/build/minihildesk + Yocto Image Build (Raspberry Pi Target) --------------------------------------- @@ -113,6 +145,70 @@ Query states of all 8 relay channels: {"jsonrpc": "2.0", "result": {"1": false, "2": false, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false}, "id": 2} +start_timer +~~~~~~~~~~~ +Keep a relay active for a specific duration in seconds: + +* **Request**: + + .. code-block:: json + + {"jsonrpc": "2.0", "method": "start_timer", "params": {"relay_id": 2, "seconds": 10}, "id": 3} + +* **Response**: + + .. code-block:: json + + {"jsonrpc": "2.0", "result": {"relay_id": 2, "seconds": 10, "success": true}, "id": 3} + +start_pulse +~~~~~~~~~~~ +Generate a single momentary pulse in milliseconds (up to 100,000 ms): + +* **Request**: + + .. code-block:: json + + {"jsonrpc": "2.0", "method": "start_pulse", "params": {"relay_id": 3, "duration_ms": 5000}, "id": 4} + +* **Response**: + + .. code-block:: json + + {"jsonrpc": "2.0", "result": {"relay_id": 3, "duration_ms": 5000, "success": true}, "id": 4} + +start_blink +~~~~~~~~~~~ +Repeatedly cycle relay state ON and OFF: + +* **Request**: + + .. code-block:: json + + {"jsonrpc": "2.0", "method": "start_blink", "params": {"relay_id": 4, "on_ms": 1000, "off_ms": 1000, "count": 5}, "id": 5} + +* **Response**: + + .. code-block:: json + + {"jsonrpc": "2.0", "result": {"relay_id": 4, "on_ms": 1000, "off_ms": 1000, "count": 5, "success": true}, "id": 5} + +get_relay_status +~~~~~~~~~~~~~~~~ +Query detailed diagnostic status and remaining time for a single channel: + +* **Request**: + + .. code-block:: json + + {"jsonrpc": "2.0", "method": "get_relay_status", "params": {"relay_id": 2}, "id": 6} + +* **Response**: + + .. code-block:: json + + {"jsonrpc": "2.0", "result": {"relay_id": 2, "status": "Channel 2: ON (Timer, rem: 8s)"}, "id": 6} + Copyright and licence ---------------------- @@ -127,7 +223,4 @@ Copyright and licence Copyright (C) 2020 - 2026 by `electux.github.io/minihil `_ .. image:: https://raw.githubusercontent.com/electux/minihil/master/docs/foundations.png - :alt: Raspberry Pi & GNOME Foundations - :width: 681px - :height: 100px - + :alt: Foundations diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 60d50a4..03dd946 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -69,11 +69,41 @@

Compile and Run[SilRelayController] Software-in-the-Loop simulation initialized.

+
+

minihildesk GUI Client

+

minihildesk is a premium GTKmm-based C++ desktop GUI client designed to connect to the minihild server (either running on a Raspberry Pi target or locally in SIL mock mode).

+

It features:

+
    +
  • A connection bar supporting standard TCP connection, SSL/TLS secure connection, and Mutual TLS (mTLS) client verification.

  • +
  • A grid of 8 Relay Control Cards displaying status via glowing LED indicators and active green borders.

  • +
  • Multi-mode relay control per channel: Toggle (manual switch), Timer (seconds spin-input), Pulse (milliseconds spin-input up to 100,000 ms), and Blink (ON/OFF ms inputs and cycle count).

  • +
  • Automatic hardware safety auto-off logic: switching modes on an active channel immediately turns the relay OFF on the server before entering the new mode.

  • +
  • A monospace green log terminal at the bottom showcasing outgoing and incoming JSON-RPC traffic.

  • +
+
+

Prerequisites

+

Install the GTKmm-4.0 development headers, OpenSSL, and JSON library:

+
sudo apt-get install libgtkmm-4.0-dev libssl-dev nlohmann-json3-dev
+
+
+
+
+

Compile and Run

+
# Configure and compile using CMake
+cmake -B sw/minihildesk/build -S sw/minihildesk
+cmake --build sw/minihildesk/build
+
+# Start the desktop GUI app
+./sw/minihildesk/build/minihildesk
+
+
+
+

Yocto Image Build (Raspberry Pi Target)

MiniHIL packages minihild into a custom Yocto Linux image (minihil-image) using meta-raspberrypi and Poky.

-
-

Prerequisites

+
+

Prerequisites

Ensure your build host has all required packages for Yocto Scarthgap (refer to sw/rpi-base-platform/README.md for the list of packages).

@@ -123,13 +153,76 @@

get_relays +

start_timer

+

Keep a relay active for a specific duration in seconds:

+
    +
  • Request:

    +
    {"jsonrpc": "2.0", "method": "start_timer", "params": {"relay_id": 2, "seconds": 10}, "id": 3}
    +
    +
    +
  • +
  • Response:

    +
    {"jsonrpc": "2.0", "result": {"relay_id": 2, "seconds": 10, "success": true}, "id": 3}
    +
    +
    +
  • +
+

+
+

start_pulse

+

Generate a single momentary pulse in milliseconds (up to 100,000 ms):

+
    +
  • Request:

    +
    {"jsonrpc": "2.0", "method": "start_pulse", "params": {"relay_id": 3, "duration_ms": 5000}, "id": 4}
    +
    +
    +
  • +
  • Response:

    +
    {"jsonrpc": "2.0", "result": {"relay_id": 3, "duration_ms": 5000, "success": true}, "id": 4}
    +
    +
    +
  • +
+
+ +
+

get_relay_status

+

Query detailed diagnostic status and remaining time for a single channel:

+
    +
  • Request:

    +
    {"jsonrpc": "2.0", "method": "get_relay_status", "params": {"relay_id": 2}, "id": 6}
    +
    +
    +
  • +
  • Response:

    +
    {"jsonrpc": "2.0", "result": {"relay_id": 2, "status": "Channel 2: ON (Timer, rem: 8s)"}, "id": 6}
    +
    +
    +
  • +
+
@@ -149,14 +242,23 @@

Table of Contents

  • Compile and Run
  • -
  • Yocto Image Build (Raspberry Pi Target)