summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
10 daysfw: firmware: Use binary descriptors for metadatabinary-descriptorsxengineering
10 daysfw: firmware: Add app build version outputxengineering
10 daysfw: Remove empty mainxengineering
11 daysUpdate README.mdxengineering
Usage instructions were outdated.
11 daysSymlink imgtool.pyxengineering
The imgtool.py should be used directly by the user but is deeply nested inside the folder structure. A symlink solves this issue.
11 daysfw: Fix network configuration for simulationxengineering
11 daysfw: Use MCUboot bootloader for nucleo_f767zixengineering
Using it for the native_sim board is not trivial. Thus it is first only added for the Nucleo board.
11 daysfw: Add mcuboot submodulexengineering
This provides the source code for the used bootloader.
11 daysgitignore: Add nucleoxengineering
This ignores the special build tree for the Nucleo board.
11 daysfw: nucleo: Allow custom my.conf configurationxengineering
This allows to set custom IPv6 addresses while there is not runtime configuration.
11 daysfw: network: Add Kconfig-based IPv6 ULAxengineering
Using Kconfig for now is a way to continue faster for now. Proper runtime configuration should be added later. The firmware in general should be fully usable without a DHCPv6 server to not require central infrastructure. While IPv6 link-local addresses provide static and unique addresses for local communication and SLAAC provides global addresses there is still a need for an additional static address. For this there are basically two choices: - global IPv6 prefixes - IPv6 unique local addresses (ULAs) ULAs are picked with this commit. They cannot be routed which makes isolation from the internet independent of firewall rules adding security. Furthermore by picking them randomly they are in practise always unique. This allows to assign them without a central IP network management and allows to keep those addresses forever. Both great advantages over the IPv4 192.168.0.0/16 and similar ranges.
11 daysfw: network: Set custom hostnamexengineering
11 daysfw: network: Rename from macxengineering
The scope of the mac.{c,h} files was very small. Furthermore more network related logic needs a place. Thus making the name more general makes sense.
11 daysfw: js: Add web frontend to display heartbeatxengineering
This makes it transparent to the user that there is an active connection to the firmware. If the connection is broken the user notices that quickly and can re-load the page.
11 daysfw: ws: Add WebSocket interfacexengineering
The primary interface for this firmware was so far HTTP. This protocol is not suitable for small and bidirectional messages which are time-critical. If something like this needs to be implemented with HTTP the best approach is likely long-polling which at least makes it possible for the server / the firmware to send data to the client / user as reaction to an event like a closed door sensor. TCP would fix this issue and is a good choice. Nevertheless web clients are not allowed to open TCP connections for security purposes. Thus the WebSocket protocol was created to fill this gap. To not duplicate the any effort the WebSocket API should be used for small, time-critical messages for all clients (one with TCP support like CLI tools as well as web clients). HTTP is still kept to provide a web page but also for functionality where HTTP is more suitable like firmware uploads.
11 daysfw: zephyr: Add mbedtls modulexengineering
This is required for upcoming WebSocket APIs.
11 daysfw: heart: Add zbus-based heartbeat codexengineering
The heartbeat of the firmware might be used for multiple purposes. It can trigger a blinking LED on the PCB, can be displayed in a client program or might serve additional purposes. Since at least display in client programs should be implemented and multiple clients should be support in long term it improves the code structure to use a zbus channel here to publish heartbeat messages in a publish-subscribe pattern. That way the publishing of the heartbeat message and the receiving by an unknown number of observers is completely decoupled. A central trait of the publish-subscribe pattern and an advantage for a modular code structure.
11 daysfw: http: Add /favicon.ico handlerxengineering
Common browsers always request this URL. Not responding to it shows up as an error. To silence this error report the firmware just responds with HTTP 204 No Content since a favicon is currently not available.
11 daysfw: Add nucleo.shxengineering
This script allows to easily: - build for real hardware - flash to the microcontroller - open the Zephyr shell UART
11 daysfw: html: Add missing license noticexengineering
11 daysfw: html: Move HTML to src folderxengineering
11 daysfw: http: Add HTML resource /xengineering
This provides the index HTML page.
11 daysfw: syslog: Adjust log levelsxengineering
This follows the pattern: * ERR in error handler if statements * DBG at top of each function and on demand * INF at end of function
11 daysfw: mac: Implement MAC address settingxengineering
The used MAC address is from an example range. Later it can easily be combined with reading from a MAC-providing EEPROM chip to using a unique hardware MAC on the device.
11 daysfw: zephyr: Switch to latest release v4.1.0xengineering
11 dayscmake: kicad: Add missing license headerxengineering
11 daysfw: Use SLAAC for network configurationxengineering
11 daysfw: syslog: Add static syslog loggingxengineering
Network-based logging via the syslog protocol allows to log from many IoT devices to a central log server. This makes reading logs way easier. Choosing UDP removes the need for logic keeping a state. Maybe dropped packages are acceptable for the use case but should be rare anyway.
11 daysfw: Add simulate-network.shxengineering
This script can be called with root permissions and without any arguments to provide a virtual network interface `zeth` and an IPv6 router advertisement daemon to provide a realistic network environment without any hardware.
11 daysfw: Switch to board native_sim/native/64xengineering
Using this board by default allows easier development since it compiles to a Linux executable which can be executed with `./zephyr.exe`, debugged with `gdb zephyr.exe` and has a virtual serial port for the Zephyr shell. Later the 32 bit version or even a QEMU variant should be used but the 64 bit variant is a low hanging fruit since the host libraries can be used. This is not wanted but easy to accomplish.
11 daysfw: Remove GPIO-based logicxengineering
This makes it easier to develop the whole network-related firmware parts on a simulation board instead of hardware. The nucleo_f767zi board has likely a hardware bug making Ethernet sometimes fail. This is not suitable for development.
2025-02-23fw: Update to Zephyr v4.0.0xengineering
This is the latest release of the Zephyr real-time operating system.
2025-02-18pcb: Update ROADMAP.mdxengineering
2025-02-18pcb: Add hierarchical labels and connectionsxengineering
2025-02-18pcb: Replace text fields by symbol descriptionsxengineering
This makes it easier to keep the descriptions and the text inside the schematic in sync.
2025-02-18pcb: Set title to `iot-contact`xengineering
2025-02-18pcb: Add missing text descriptionsxengineering
2025-02-18pcb: Rename some signalsxengineering
2025-02-18pcb: J7: Add motor connectorxengineering
2025-02-18pcb: J6: Add AC supply connectorxengineering
2025-02-18pcb: J5: Add door / window opener connectorxengineering
2025-02-15pcb: J4: Add vertical RJ45 connectorxengineering
2025-02-15pcb: J3: Add non-PoE 5V power input headerxengineering
Power over Ethernet (PoE) has the disadvantage that GND is significantly below earth. This requires that GND of a PoE-powered device is never attached to earthed devices. In production use cases this is no problem. The earth lines are isolated. Nevertheless for debugging it is sometimes useful to connect measuring equipment like logic analyzers and oscilloscopes to the board. This is not possible with PoE. Thus an alternative earth-based 5V power input is useful.
2025-02-15pcb: J2: Add UART pin headerxengineering
2025-02-15pcb: Fix connection errors reported by ERCxengineering
2025-02-15pcb: SW1-SW2: Add switches for reboot and wipexengineering
2025-02-15pcb: D1-D3: Add LEDs for PWR, UPD and ACTxengineering
2025-02-15cmake: kicad: Update selected BOM columnsxengineering
2025-02-15pcb: gitignore: Add *auto_saved_files*xengineering
2025-02-15pcb: J1: Add JTAG connectorxengineering