<feed xmlns='http://www.w3.org/2005/Atom'>
<title>iot-core, branch main</title>
<subtitle>Central device for an Internet of Things network</subtitle>
<id>https://cgit.xengineering.eu/iot-core/atom?h=main</id>
<link rel='self' href='https://cgit.xengineering.eu/iot-core/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/'/>
<updated>2024-06-01T10:48:44Z</updated>
<entry>
<title>firmware: Minimal frame encoding</title>
<updated>2024-06-01T10:48:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-06-01T10:48:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=7d7280a5b162800ef72d48a8a3d2afb4f0496b85'/>
<id>urn:sha1:7d7280a5b162800ef72d48a8a3d2afb4f0496b85</id>
<content type='text'>
This only covers the correct frame size, setting the buffer to 0 and
copy the payload over.

Missing is:

- copy destination address
- copy source address
- set frame type
- calculate and add CRC32 checksum
</content>
</entry>
<entry>
<title>firmware: Rename frame to payload</title>
<updated>2024-06-01T10:08:57Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-06-01T10:08:57Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=010cf768c20c71603172ae4c300ce3d571863141'/>
<id>urn:sha1:010cf768c20c71603172ae4c300ce3d571863141</id>
<content type='text'>
This array does not really contain the whole frame.
</content>
</entry>
<entry>
<title>firmware: Fix missing include guards</title>
<updated>2024-06-01T10:07:24Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-06-01T10:07:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=71f05dc68f31e01b01bbd47d1d7454719b19cce4'/>
<id>urn:sha1:71f05dc68f31e01b01bbd47d1d7454719b19cce4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>firmware: Assert presence of EUI-64 MAC address</title>
<updated>2024-06-01T10:04:57Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-06-01T09:17:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=df38994a4a784cc7b794c3f2a3c7f08172ef51ad'/>
<id>urn:sha1:df38994a4a784cc7b794c3f2a3c7f08172ef51ad</id>
<content type='text'>
Without that address comunication is not possible.
</content>
</entry>
<entry>
<title>firmware: Separate data link related code</title>
<updated>2024-06-01T08:25:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-31T08:33:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=ff3fa235236f2d6d92f7869fb4f55e3655b0502a'/>
<id>urn:sha1:ff3fa235236f2d6d92f7869fb4f55e3655b0502a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>firmware: Add end and escape byte to UART output</title>
<updated>2024-05-31T08:09:55Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-31T08:09:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=bb029aacf08983ad6c1a6360d988e89394fc4d85'/>
<id>urn:sha1:bb029aacf08983ad6c1a6360d988e89394fc4d85</id>
<content type='text'>
These special bytes of the Serial Line Internet Protocol are contained
inside the payload to validate that the escaping is working correctly.
</content>
</entry>
<entry>
<title>software: Fix unslip() implementation and test</title>
<updated>2024-05-31T08:04:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T20:55:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=a3cbf0dd580a5bc51c4cfccbdf69be5fff23303a'/>
<id>urn:sha1:a3cbf0dd580a5bc51c4cfccbdf69be5fff23303a</id>
<content type='text'>
Both the implementation and the unit test had bugs which were blocking
the test execution forever. This is fixed with this commit. Furthermore
the new unslip() implementation is refactored and more readable.
</content>
</entry>
<entry>
<title>software: Add protobuf dependency</title>
<updated>2024-05-31T07:41:17Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-31T07:39:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=41072be6c6af48f3066daf60552eba5191bfad7d'/>
<id>urn:sha1:41072be6c6af48f3066daf60552eba5191bfad7d</id>
<content type='text'>
This was not present because the Go tool detects this dependency only in
the case of the generated discovery package. This package was not
present during the last `go mod tidy` and `go mod vendor` cycle.
</content>
</entry>
<entry>
<title>software: Refactor unit test for unslip()</title>
<updated>2024-05-30T20:53:58Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T20:53:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=9a1f97a671d80df29c309b3aae8ad66755bef42f'/>
<id>urn:sha1:9a1f97a671d80df29c309b3aae8ad66755bef42f</id>
<content type='text'>
This allows to easily add test cases.
</content>
</entry>
<entry>
<title>firmware: Implement send_frame()</title>
<updated>2024-05-30T20:45:41Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T20:45:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=b1206aaa1f6bc4a04509149024402dea9da12e27'/>
<id>urn:sha1:b1206aaa1f6bc4a04509149024402dea9da12e27</id>
<content type='text'>
This transmits a frame via the Serial Line Internet Protocol (SLIP).
</content>
</entry>
<entry>
<title>firmware: Rename from uid64 to eui64</title>
<updated>2024-05-30T20:12:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T20:06:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=b8147bcba2e8dfef419ba14053285bc9750dc319'/>
<id>urn:sha1:b8147bcba2e8dfef419ba14053285bc9750dc319</id>
<content type='text'>
The term EUI-64 is more commonly known (see Wikipedia about MAC
addresses [1]). The term UID-64 was introduced because of ST
documentation.

[1]: https://en.wikipedia.org/wiki/MAC_address
</content>
</entry>
<entry>
<title>firmware: Replace shell by empty frame emitting</title>
<updated>2024-05-30T18:42:20Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T18:42:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=17008662c08e8e99aefc1814dd80d366872d7ded'/>
<id>urn:sha1:17008662c08e8e99aefc1814dd80d366872d7ded</id>
<content type='text'>
The shell should not be used anyway since the USB UART port is required
for communication with the software.

Emitting 0xC0 as termination byte of the Serial Line Internet Protocol
(SLIP) every second triggers output in the SLIP-receiving software.
</content>
</entry>
<entry>
<title>firmware: Fix missing imports</title>
<updated>2024-05-30T18:20:30Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T18:08:09Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=d9c7e352d9268e12f6c1d19dbc68c047842acdf1'/>
<id>urn:sha1:d9c7e352d9268e12f6c1d19dbc68c047842acdf1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>software: communication: Implement unslip()</title>
<updated>2024-05-30T18:06:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T18:00:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=922d2a0cbd1406c0b437c0a062a8c04129d7dda4'/>
<id>urn:sha1:922d2a0cbd1406c0b437c0a062a8c04129d7dda4</id>
<content type='text'>
This implements to decode the Serial Line Internet Protocol (SLIP). It
splits the continuous byte stream into frames. Based on these frames the
rest of the data link layer and upper layers can be implemented.
</content>
</entry>
<entry>
<title>software: communication: Make receive private</title>
<updated>2024-05-30T18:06:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T16:33:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=85dc84ab0e8f5bf2fc02ad8881c7a7247bdb492b'/>
<id>urn:sha1:85dc84ab0e8f5bf2fc02ad8881c7a7247bdb492b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>software: communication: Split setup and start</title>
<updated>2024-05-30T18:06:16Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T16:21:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=a4705ffdb76d412bbc3999877843f886cbd41f4c'/>
<id>urn:sha1:a4705ffdb76d412bbc3999877843f886cbd41f4c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>software: communication: Use Go channels</title>
<updated>2024-05-30T15:37:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T15:37:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=0f62b35cb1a1ff69e8c29285322a251010cf5ee1'/>
<id>urn:sha1:0f62b35cb1a1ff69e8c29285322a251010cf5ee1</id>
<content type='text'>
Go channels help to decouple the communication layers defined by the OSI
model [1]. The physical layer can be abstracted by an RX and TX byte
channel and the data link layer by two frame channels.

[1]: https://en.wikipedia.org/wiki/OSI_model
</content>
</entry>
<entry>
<title>software: Switch back from .Log() to .Cat()</title>
<updated>2024-05-30T15:10:08Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T15:10:08Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=034c8209f6e6f17bf5b6f265e2a3ef58f05b2c80'/>
<id>urn:sha1:034c8209f6e6f17bf5b6f265e2a3ef58f05b2c80</id>
<content type='text'>
Logging the bytes is not really readable because of time stamp prefixes.
</content>
</entry>
<entry>
<title>software: communication: Add SerialInterface</title>
<updated>2024-05-30T14:48:39Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T14:47:29Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=96d159114af675d55fe0d7c0f22a69d65e9563fc'/>
<id>urn:sha1:96d159114af675d55fe0d7c0f22a69d65e9563fc</id>
<content type='text'>
This new type bundles the whole communication stack. This is easier to
use than handling types for each layer on the user side of the
communication package.
</content>
</entry>
<entry>
<title>software: Implement serial port printout</title>
<updated>2024-05-30T14:13:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T14:13:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=0cfd378394b6c5d90e00c217b12113e0c3284031'/>
<id>urn:sha1:0cfd378394b6c5d90e00c217b12113e0c3284031</id>
<content type='text'>
This validates that the code is able to get data from the serial port.
</content>
</entry>
<entry>
<title>software: Implement serial port detection</title>
<updated>2024-05-30T14:00:32Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-30T14:00:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=b8ef4d11fe0d00ce0884ccf982675845b20c3ce9'/>
<id>urn:sha1:b8ef4d11fe0d00ce0884ccf982675845b20c3ce9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scripts: Add folder and generate.sh</title>
<updated>2024-05-28T18:28:46Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-28T17:35:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=eab833271eeaa8d54991c11eccec9445f662a191'/>
<id>urn:sha1:eab833271eeaa8d54991c11eccec9445f662a191</id>
<content type='text'>
This allows generating Golang source code based on iot-protocol protobuf
definitions.
</content>
</entry>
<entry>
<title>software: Add folder and go.mod</title>
<updated>2024-05-28T17:12:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-28T17:12:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=e6b74069e18736e6f2d3acb14c18013a7bd4c464'/>
<id>urn:sha1:e6b74069e18736e6f2d3acb14c18013a7bd4c464</id>
<content type='text'>
This folder will contain the Go software which runs on the iot-core
device.
</content>
</entry>
<entry>
<title>Add iot-protocol submodule</title>
<updated>2024-05-28T17:07:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-05-28T17:07:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=313abb1513db61e82ecb5354f4c5918133c13b48'/>
<id>urn:sha1:313abb1513db61e82ecb5354f4c5918133c13b48</id>
<content type='text'>
This repository contains protocol definitions. Since every planned IoT
device should get its own repository it is useful to add a central
repository to define the interface between these devices.
</content>
</entry>
<entry>
<title>firmware: Add 64 bit MAC to shell prompt</title>
<updated>2024-04-21T10:26:00Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-04-20T20:08:08Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=96f2358caadfd55d6fd3b888ef5d21f22fc2439c'/>
<id>urn:sha1:96f2358caadfd55d6fd3b888ef5d21f22fc2439c</id>
<content type='text'>
This demonstrates that the readout of the 64 bit MAC address from the
STM32WL55 microcontroller works and is useful to recognize used devices.
</content>
</entry>
<entry>
<title>firmware: Customize shell prompt</title>
<updated>2024-04-20T20:04:41Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-04-20T20:04:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=9a713b06c3f776684dd026646c916b6daea7b25b'/>
<id>urn:sha1:9a713b06c3f776684dd026646c916b6daea7b25b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>firmware: Add minimal Zephyr application</title>
<updated>2024-04-13T19:21:54Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-04-13T19:21:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=fedaacedd29b4b61fc138e381aad2cf4be08f31d'/>
<id>urn:sha1:fedaacedd29b4b61fc138e381aad2cf4be08f31d</id>
<content type='text'>
This is enough to validate that the firmware is running by using the
Zephyr shell.
</content>
</entry>
<entry>
<title>Add README with brief description</title>
<updated>2024-04-13T18:47:30Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-04-13T18:47:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-core/commit/?id=31bdbcf1a38f0d513ca3327441432a281a5ce6d8'/>
<id>urn:sha1:31bdbcf1a38f0d513ca3327441432a281a5ce6d8</id>
<content type='text'>
</content>
</entry>
</feed>
