<feed xmlns='http://www.w3.org/2005/Atom'>
<title>iot-contact/fw/app/src, 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>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: 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: 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>
<entry>
<title>fw: app: update: Add data rx on HTTP PUT /update</title>
<updated>2025-03-30T16:51:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-03-27T21:04:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=3ffdafa73301aad063e3637141d9d3b898757f79'/>
<id>urn:sha1:3ffdafa73301aad063e3637141d9d3b898757f79</id>
<content type='text'>
This implements a HTTP handler capable of receiving the full data of the
firmware image upload. The data is not handled at all and thus not
written to flash.

This is just an incremental step towards successful firmware image
upload to the secondary MCUboot slot.
</content>
</entry>
<entry>
<title>fw: app: update: Add source file and HTTP 204 handler</title>
<updated>2025-03-30T16:51:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-03-27T20:19:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=b2afe2a52d421a6f9ce87d6b20c0230f93ecbdc4'/>
<id>urn:sha1:b2afe2a52d421a6f9ce87d6b20c0230f93ecbdc4</id>
<content type='text'>
This adds the HTTP PUT /update handler which just returns HTTP 204 No
Content.

This is the minimal first step towards a working /update handler.
</content>
</entry>
<entry>
<title>fw: app: Reboot in case of no network</title>
<updated>2025-03-30T11:38:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-03-30T11:38:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=8bfece93b1e8835929d3f270cb61628abf2e3aef'/>
<id>urn:sha1:8bfece93b1e8835929d3f270cb61628abf2e3aef</id>
<content type='text'>
Because of an issue likely related to hardware design on the
nucleo_f767zi board (see issue [1] for details) the firmware should
reboot in case network access cannot be established after 4 seconds.

This makes the firmware more robust at the moment. As soon as
iot-contact hardware without this issue exists the behavior can be
changed again.

[1]: https://github.com/zephyrproject-rtos/zephyr/issues/77794
</content>
</entry>
<entry>
<title>fw: app: Move application firmware code here</title>
<updated>2025-03-26T20:18:17Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-03-23T16:53:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=b073db4017008ceb638a9c23c8cc93e60a3a7fdb'/>
<id>urn:sha1:b073db4017008ceb638a9c23c8cc93e60a3a7fdb</id>
<content type='text'>
This makes the structure of the `fw` folder more clear and separates
application-related code from bootloader- or rtos-related code.
</content>
</entry>
</feed>
