<feed xmlns='http://www.w3.org/2005/Atom'>
<title>QtXpl2, branch master</title>
<subtitle>High-level C++/QML library for Alchemie's Jetting Controller Protocol</subtitle>
<id>http://git.tvcloud.fr/cgit.cgi/QtXpl2/atom?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/'/>
<updated>2026-03-24T16:29:52Z</updated>
<entry>
<title>Add JettingProxy relay, convert Xpl2Client to active connection model</title>
<updated>2026-03-24T16:29:52Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-24T16:25:03Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=e9d8a8b052150f42ea00da2c07e3f78a9b7d2061'/>
<id>urn:sha1:e9d8a8b052150f42ea00da2c07e3f78a9b7d2061</id>
<content type='text'>
Insert a transparent TCP proxy between the controller and N clients:
- JettingProxy listens on 9110-9112 (controller) and 9210-9212 (clients)
- Broadcasts controller frames to all clients, forwards client→controller
- Independent KA_PING handling on both sides

Convert Xpl2Client from passive QTcpServer listener to active QTcpSocket
outbound connections with auto-retry. New QML API: host/commandPort
properties, connectToProxy()/disconnectFromProxy() replacing
startListening()/stopListening().
</content>
</entry>
<entry>
<title>Rename demo/ → jetting-interface/, mock-server/ → mock-jetting-controller/</title>
<updated>2026-03-23T15:48:32Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-23T15:48:32Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=8bcf948b76c9564cb38d3611228ccaf73890a548'/>
<id>urn:sha1:8bcf948b76c9564cb38d3611228ccaf73890a548</id>
<content type='text'>
Executables: QtXpl2Demo → JettingInterfaceDemo, Xpl2MockServer → MockJettingController.
Dev log prefixes: "Demo" → "JI", "MockServer" → "MockJC". Window title → "Jetting Interface".
</content>
</entry>
<entry>
<title>Invert TCP connection model: client listens, server connects</title>
<updated>2026-03-23T15:39:33Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-23T15:39:33Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=61debe99a269bf7e87f6ba2f8d2a376e619fcf12'/>
<id>urn:sha1:61debe99a269bf7e87f6ba2f8d2a376e619fcf12</id>
<content type='text'>
The XPL2 protocol specifies that the JI2 controller initiates connections
to the client, not the other way around. Xpl2Client now listens on 3 ports
via QTcpServer and accepts inbound connections; MockServer connects out
with auto-retry on the 1s KA_PING tick.

QML API: startListening/stopListening, listening+connected properties,
host property removed. Mock server gains --host CLI arg.
</content>
</entry>
<entry>
<title>Guard top-level-only CMake settings behind PROJECT_IS_TOP_LEVEL</title>
<updated>2026-03-17T09:57:26Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-17T09:57:26Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=46e96b3318900b561928be304f4a9e252f2785a4'/>
<id>urn:sha1:46e96b3318900b561928be304f4a9e252f2785a4</id>
<content type='text'>
Allow QtXpl2 to be consumed as a submodule via add_subdirectory()
without conflicting with the parent project's C++ standard,
qt_standard_project_setup(), QML tooling, or RPATH settings.
</content>
</entry>
<entry>
<title>README.md, docs/guide.md (FR) — full API documentation</title>
<updated>2026-03-16T16:00:55Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T16:00:55Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=4c50201a2048b7ffcc1b7086c9617112cb540501'/>
<id>urn:sha1:4c50201a2048b7ffcc1b7086c9617112cb540501</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Imaging (m/n) commands: start/stop, masks, image count, n reply</title>
<updated>2026-03-16T15:48:34Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T15:48:34Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=f2251311a8523b6c24839ccd1e6834ef065c679f'/>
<id>urn:sha1:f2251311a8523b6c24839ccd1e6834ef065c679f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>EV_ events with Q_GADGET status types, mock periodic emission, tabbed demo UI</title>
<updated>2026-03-16T15:19:49Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T15:19:49Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=fa095de6cc8ec5a5b5c14091f2b3179ad7071876'/>
<id>urn:sha1:fa095de6cc8ec5a5b5c14091f2b3179ad7071876</id>
<content type='text'>
</content>
</entry>
<entry>
<title>CF_ configuration commands with JettingParamsResult and SetterResult enums</title>
<updated>2026-03-16T14:40:22Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T14:40:22Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=7830f0ae98d742467b948ed93c85e122be38fb83'/>
<id>urn:sha1:7830f0ae98d742467b948ed93c85e122be38fb83</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refactor CN_ response handlers into data-driven dispatch table</title>
<updated>2026-03-16T14:25:02Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T14:25:02Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=df2be9eb678f12b6107d582d8ebd2ca2b4b7e92b'/>
<id>urn:sha1:df2be9eb678f12b6107d582d8ebd2ca2b4b7e92b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>CN_ control commands: typed API, dispatch, mock responses, demo UI</title>
<updated>2026-03-16T14:14:13Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T14:14:13Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/QtXpl2/commit/?id=50034b142dc851da7118032f7218cb1d25ea98e4'/>
<id>urn:sha1:50034b142dc851da7118032f7218cb1d25ea98e4</id>
<content type='text'>
</content>
</entry>
</feed>
