<feed xmlns='http://www.w3.org/2005/Atom'>
<title>iot-contact/fw/app, branch mdns</title>
<subtitle>IoT device to check if doors and windows are closed or open</subtitle>
<id>https://cgit.xengineering.eu/iot-contact/atom?h=mdns</id>
<link rel='self' href='https://cgit.xengineering.eu/iot-contact/atom?h=mdns'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/'/>
<updated>2025-08-13T15:43:25Z</updated>
<entry>
<title>WIP: fw: app: Implement mDNS proof of concept</title>
<updated>2025-08-13T15:43:25Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-13T14:48:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=f1bec5479d5c86655f0014e79b6c8f3d9aa3f063'/>
<id>urn:sha1:f1bec5479d5c86655f0014e79b6c8f3d9aa3f063</id>
<content type='text'>
TODO: Make this work. WireShark shows that some request / response is
exchanged but it is unclear why the request is always canceled after
timeout on the Zephyr side.
</content>
</entry>
<entry>
<title>Add opt-in for nucleo_f767zi firmwares</title>
<updated>2025-08-07T19:36:49Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-07T19:31:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=17c334ada43ee5eabd14caabacbe393fe3482451'/>
<id>urn:sha1:17c334ada43ee5eabd14caabacbe393fe3482451</id>
<content type='text'>
This partially reverts commit ce098756d79d8e4240bedc2bd74ff9a3a77fcedb.

The reverted commit dropped the build logic for all
nucleo_f767zi-related artifacts and thus for everything except the
native sim firmware.

Instead this commit reverts this change but comments out the
`update_image` and `factory_image` targets from the `artifacts` variable
in the top-level `meson.build`.

This allows to build these two targets explicitly with `ninja -C build
&lt;target&gt;` but does not include it into the deploy tar archive.

Since this archive is the only target of the project with
`build_by_default: true` this effectively disables the build with
minimal code changes.
</content>
</entry>
<entry>
<title>fw: Remove nucleo_f767zi firmwares</title>
<updated>2025-07-27T20:57:21Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T20:57:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ce098756d79d8e4240bedc2bd74ff9a3a77fcedb'/>
<id>urn:sha1:ce098756d79d8e4240bedc2bd74ff9a3a77fcedb</id>
<content type='text'>
The bootloader and application firmware resulting in the factory- and
update-image are removed from the build.

The reason is a planned first release of this project with hardware
design files for a first `iot-contact` board. The release is required to
build this board with matching version specifiers.

Since the release should contain a consistent set of hardware and
firmware the firmware targeting the development board is removed.

Handling firmware for multiple boards is also an option but has no use
since the biggest part of the firmware features can be developed using
the simulation only which should stay in long term.
</content>
</entry>
<entry>
<title>artifacts: Provide `{factory,update}-image.bin`</title>
<updated>2025-05-24T09:20:28Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-05-24T09:20:28Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=bf8d20fe4d8d3369dd7f63e95f53613dbbfa3603'/>
<id>urn:sha1:bf8d20fe4d8d3369dd7f63e95f53613dbbfa3603</id>
<content type='text'>
This presents only the `factory-image.bin` and `update-image.bin` for
MCU firmware. A separate bootloader image is not available.

The reason is that the `factory-image.bin` is used during production
once (flashing at default boot address) to set up the device. Later only
the `update-image.bin` of future versions would be required to remotely
update devices.
</content>
</entry>
<entry>
<title>Remove redundant file name in Meson code</title>
<updated>2025-05-24T09:20:22Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-05-24T09:20:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=4af0ed8242ab24b2b222a9ebbf417e12f608b756'/>
<id>urn:sha1:4af0ed8242ab24b2b222a9ebbf417e12f608b756</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: Provide confirmed image in build tree</title>
<updated>2025-05-24T09:19:06Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-05-24T09:19:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ca28bf9b784fd2c57133c1f8b5a6d99de7d10c6b'/>
<id>urn:sha1:ca28bf9b784fd2c57133c1f8b5a6d99de7d10c6b</id>
<content type='text'>
This prepares the upcoming `factory-image.bin` which can be flashed to
the default boot address of the microcontroller.
</content>
</entry>
<entry>
<title>Remove installation step</title>
<updated>2025-05-24T09:18:38Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-05-24T09:18:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=caf416218623d6778b3d0c2fe12ee08135c2d126'/>
<id>urn:sha1:caf416218623d6778b3d0c2fe12ee08135c2d126</id>
<content type='text'>
Using the installation step to copy selected artifacts into one folder
was anyway a hack.

This commit shows that the complexity can be reduced by adding copy
targets. The `build/artifacts` folder contains the selected artifacts,
they are always up to date, the user does not have to call the install
step separately and the target definitions do not require
install-related keyword arguments.
</content>
</entry>
<entry>
<title>Remove `st-flash`-based build targets</title>
<updated>2025-05-24T09:17:46Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-05-24T09:17:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=b1838d1c5b6bd27757d50d784543ea0ae16c1769'/>
<id>urn:sha1:b1838d1c5b6bd27757d50d784543ea0ae16c1769</id>
<content type='text'>
This was used since flashing was complex. Thus the build system should
help making it easier.

The new approach is more to provide artifacts by the build system which
are easy to flash / remote-update. A `factory-image.bin` and
`update-image.bin` should be provided.
</content>
</entry>
<entry>
<title>Revert "fw: app: Enable CONFIG_NO_OPTIMIZATIONS"</title>
<updated>2025-05-24T07:44:49Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-05-24T07:44:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=c48ffdc42b34c5ce354483685758afd8a4b8296f'/>
<id>urn:sha1:c48ffdc42b34c5ce354483685758afd8a4b8296f</id>
<content type='text'>
This reverts commit 184a41809c66868992c90ce9d420b8e4dc46253b.

The change worked well for the `native_sim` board. Nevertheless the
application firmware for the real microcontroller was not usable at all
anymore.

This regression is fixed by simply reverting the commit. Later it could
be introduced only for the `native_sim` board with an overlay.
</content>
</entry>
<entry>
<title>fw: app: Enable CONFIG_NO_OPTIMIZATIONS</title>
<updated>2025-05-07T16:14:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-20T11:27:14Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=184a41809c66868992c90ce9d420b8e4dc46253b'/>
<id>urn:sha1:184a41809c66868992c90ce9d420b8e4dc46253b</id>
<content type='text'>
This disables compiler optimization and allows easier debugging.
</content>
</entry>
<entry>
<title>fw: app: http: Refactor settings handler</title>
<updated>2025-05-07T16:14:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-20T15:07:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=60e839846609b0db54304563c779335fa8253343'/>
<id>urn:sha1:60e839846609b0db54304563c779335fa8253343</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: http: Set settings content type to text/json</title>
<updated>2025-05-07T16:14:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-20T13:12:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=197353de06d6504cea62b9c2dbeedb384750b888'/>
<id>urn:sha1:197353de06d6504cea62b9c2dbeedb384750b888</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: Encode settings with JSON lib</title>
<updated>2025-05-07T16:14:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-16T19:58:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=993996ab2b9dc7332d06453e2de7315b06ce2458'/>
<id>urn:sha1:993996ab2b9dc7332d06453e2de7315b06ce2458</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: http: Add working GET /settings.json</title>
<updated>2025-04-16T16:03:40Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-15T20:12:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=f4faa103108356bcf53fb7c8829e95f012b21a4a'/>
<id>urn:sha1:f4faa103108356bcf53fb7c8829e95f012b21a4a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: http: Add dummy GET /settings.json</title>
<updated>2025-04-15T19:34:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-15T19:30:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=d25c8e08ce6a977977e38365ace9af16acf09195'/>
<id>urn:sha1:d25c8e08ce6a977977e38365ace9af16acf09195</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: syslog: Stop supporting CONFIG_LOG_BACKEND_NET_SERVER</title>
<updated>2025-04-15T16:41:27Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-15T16:41:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=11967efab73c43bc5b0c6da33c140dbab7baefa7'/>
<id>urn:sha1:11967efab73c43bc5b0c6da33c140dbab7baefa7</id>
<content type='text'>
From now on the mixed format with IP and port is not supported. The
settings system should keep them separate and first only the IP is
configurable.

Supporting this Kconfig option too is annoying and not necessary.
</content>
</entry>
<entry>
<title>fw: app: syslog: Put only IP into syslog/target/ip</title>
<updated>2025-04-15T16:33:31Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-15T16:33:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=409348732bb4cd6ec0c06c4b38f26f528313ffdf'/>
<id>urn:sha1:409348732bb4cd6ec0c06c4b38f26f528313ffdf</id>
<content type='text'>
The old format contained `[&lt;ip&gt;]:&lt;port&gt;`. Nevertheless the format should
be as strict as possible. Thus only the IP is used in the setting.
</content>
</entry>
<entry>
<title>fw: app: syslog: Implement commit target</title>
<updated>2025-04-15T16:06:32Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-15T16:06:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=0bff2eea39c11b5ad2e762325abeb1457ae0fd7e'/>
<id>urn:sha1:0bff2eea39c11b5ad2e762325abeb1457ae0fd7e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: syslog: Make target IP configurable</title>
<updated>2025-04-15T16:00:03Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-15T15:14:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=698832f42c11d1df2b955de37b6b130c980dadce'/>
<id>urn:sha1:698832f42c11d1df2b955de37b6b130c980dadce</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: Enable settings with NVS backend</title>
<updated>2025-04-15T15:43:25Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-13T06:27:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=4e0f0849d6e7997cbc128d998ba824d6ac3e7181'/>
<id>urn:sha1:4e0f0849d6e7997cbc128d998ba824d6ac3e7181</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: Fix disabled network hack</title>
<updated>2025-04-12T10:21:54Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-12T10:21:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=015972d873627466bd7e40f8d5dbb5951fb0f36a'/>
<id>urn:sha1:015972d873627466bd7e40f8d5dbb5951fb0f36a</id>
<content type='text'>
This got lost during development but is an important option to
compensate the hardware issues present on Nucleo F767ZI.
</content>
</entry>
<entry>
<title>fw: app: Re-design web page</title>
<updated>2025-04-12T10:11:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-12T10:11:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=3b857fd34c9e92eed346b7ea73706f50a193fe14'/>
<id>urn:sha1:3b857fd34c9e92eed346b7ea73706f50a193fe14</id>
<content type='text'>
This enables simple.css also for the device-hosted website and
restructures the HTML a bit.
</content>
</entry>
<entry>
<title>fw: Add flash and erase targets</title>
<updated>2025-04-12T09:33:07Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-12T09:33:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ddcf8559d4fbb9bd6942ac46d5c4970ef08b16d1'/>
<id>urn:sha1:ddcf8559d4fbb9bd6942ac46d5c4970ef08b16d1</id>
<content type='text'>
These targets are added:

- fw/erase
- fw/app/flash
- fw/btl/flash

They make it easier to perform a mass-erase, flashing of the bootloader
and flashing of the application for development.
</content>
</entry>
<entry>
<title>Simplify website structure and drop Hugo</title>
<updated>2025-04-07T19:36:41Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-07T19:36:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=4ee031182475464fe0ecb052882fd50520e6defc'/>
<id>urn:sha1:4ee031182475464fe0ecb052882fd50520e6defc</id>
<content type='text'>
A static site generator is currently not really required. A static
index.html is currently sufficient.
</content>
</entry>
<entry>
<title>fw: app: Add image signing to Meson build</title>
<updated>2025-04-06T17:11:20Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-06T17:05:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=f6f6d285c318d28bddfb99cf04104a5306a97c78'/>
<id>urn:sha1:f6f6d285c318d28bddfb99cf04104a5306a97c78</id>
<content type='text'>
This automates signing the application firmware image for the MCUboot
bootloader.
</content>
</entry>
<entry>
<title>fw: sim: Integrate into Meson build</title>
<updated>2025-04-06T16:43:28Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-06T16:43:28Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=7fc6bc84609022992e1827a07b95c427208e7289'/>
<id>urn:sha1:7fc6bc84609022992e1827a07b95c427208e7289</id>
<content type='text'>
This adds a build for the native_sim board of the application firmware
to the default Meson build.

The resulting Linux binary is also added to the webpage.
</content>
</entry>
<entry>
<title>fw: app: Build with Meson</title>
<updated>2025-04-06T16:04:25Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-06T16:04:25Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=8350421e659e9273a94debdd6f29cd80979a63f1'/>
<id>urn:sha1:8350421e659e9273a94debdd6f29cd80979a63f1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: app: Fix native_sim build</title>
<updated>2025-04-02T18:43:29Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-04-02T18:43:29Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=d19fc7e34f783b343e77b757c4f37aaadb5b66ca'/>
<id>urn:sha1:d19fc7e34f783b343e77b757c4f37aaadb5b66ca</id>
<content type='text'>
To reduce the number of Kconfig options the network hack was added two
both boards - the native_sim and nucleo_f767zi one. It reboots the
device if the network connection cannot be established since this is a
known bug of the nucleo board.

Nevertheless it seems that for the native_sim board this command is not
defined. Since it is a Linux application this makes somehow sense.

This commit introduces the boolean Kconfig option
`IOT_CONTACT_NETWORK_HACK` which is only enabled for the nucleo board
fixing the native_sim build.
</content>
</entry>
<entry>
<title>fw: app: update: Finish first HTTP PUT /update</title>
<updated>2025-03-30T16:51:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-03-30T16:41:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=f0668801d961157a61f20c9698164fb451a5d680'/>
<id>urn:sha1:f0668801d961157a61f20c9698164fb451a5d680</id>
<content type='text'>
This adds marking the application firmware image in the secondary slot
for a permanent update and rebooting the device.

It is a known bug that the corresponding HTTP request is never properly
closed since the device reboots while handling the request.

Nevertheless the current state works and enables remote updates.
</content>
</entry>
<entry>
<title>fw: app: update: Write uploaded image to flash</title>
<updated>2025-03-30T16:51:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-03-30T15:03:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=eb52105fd05ffc2ff98e59e76b48ae0968dfdced'/>
<id>urn:sha1:eb52105fd05ffc2ff98e59e76b48ae0968dfdced</id>
<content type='text'>
This write the received firmware image data to the secondary MCUboot
slot. This prepares an update.

With the MCUboot shell it can be applied with:

    mcuboot request_upgrade permanent
    kernel reboot

If the signature is valid the device will permanently update to the new
application firmware. Otherwise it will refuse the new image and boot
the old one.
</content>
</entry>
</feed>
