<feed xmlns='http://www.w3.org/2005/Atom'>
<title>QtXpl2/src, branch reality-check</title>
<subtitle>High-level C++/QML library for Alchemie's Jetting Controller Protocol</subtitle>
<id>http://git.tvcloud.fr/QtXpl2/atom/src?h=reality-check</id>
<link rel='self' href='http://git.tvcloud.fr/QtXpl2/atom/src?h=reality-check'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/QtXpl2/'/>
<updated>2026-06-16T15:03:26Z</updated>
<entry>
<title>fix: add workaround for turning all printheads on/off</title>
<updated>2026-06-16T15:03:26Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-06-16T15:03:26Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/QtXpl2/commit/?id=e90b28d8ccb9eedc19c23ebeb0129308a74e2865'/>
<id>urn:sha1:e90b28d8ccb9eedc19c23ebeb0129308a74e2865</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: make ping exchange follow the protocol specification</title>
<updated>2026-06-16T12:56:46Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-06-16T12:56:46Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/QtXpl2/commit/?id=bf525d35301dcf0c612598f4394e4357b8378746'/>
<id>urn:sha1:bf525d35301dcf0c612598f4394e4357b8378746</id>
<content type='text'>
</content>
</entry>
<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/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>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/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>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/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/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/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/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/QtXpl2/commit/?id=50034b142dc851da7118032f7218cb1d25ea98e4'/>
<id>urn:sha1:50034b142dc851da7118032f7218cb1d25ea98e4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>GS_PH_VERSION command, per-printhead demo UI with --printheads CLI arg</title>
<updated>2026-03-16T10:04:21Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-16T10:04:21Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/QtXpl2/commit/?id=9ac64169720fb2b9852589b74f7300bcfebcaf62'/>
<id>urn:sha1:9ac64169720fb2b9852589b74f7300bcfebcaf62</id>
<content type='text'>
Add getPhVersion(printheadId) to Xpl2Client with phVersionReceived signal
carrying all 8 response fields. Mock server echoes canned version data for
any requested printhead ID.

Demo app accepts --printheads N (default 10) to simulate N printheads.
The UI shows a scrollable per-PH list with individual and bulk version
query buttons, updating each row's version info on response.
</content>
</entry>
</feed>
