Long Overview
Detailed list of projects with description and extended list of technologies.
Open Source (own projects)
ntpd-setwait
ntpd-setwait is very small program that ensures time is synchronized before ntpd daemon can be started.
Project site: https://ntpd-setwait.bofc.pl
libfo
Library which allows for very easy mocking of POSIX, libc and any other dynamically loaded functions. Library uses special handle RTLD_NEXT for dlsym().
Project site: https://libfo.bofc.pl
librb
Ring buffer implementation which is thread-safe and in the same time small and quick with very little memory footprint with posix-like interface known from read/send functions family. Library was created with embedded devices with limited resources in mind, but it can work with every operating system that implements c89 and pthread (optional dependency).
Project site: https://librb.bofc.pl
embedlog
Logger created with embedded devices with limited resources in mind, which will, of course, work with every operating system that implements c89. Implemented functions among others are, adding timestamps to messages (with different formats), place where log was printed from (file and line number), log level info, colors (depending on message level). Logger can also store logs to file with optional log rotatio - which can be customized for max file size and number of files before oldest logs shall be deleted. Almost all of these functions can be disabled in compile time to save precious memory.
Project site: https://embedlog.bofc.pl
psmq
Very portable and small packet which allows publish-subscribe communication implemented on top of POSIX mqueue. Packet consists of, server/broker which handles communication between clients, library for clients for easy implementation, publish commans which allows to publish messages directly from command line and program to listen and log to file communication on psmq bus.
Project site: httpss://psmq.bofc.pl
kursg
Simple static site generated from markdown and html files. Website is generated based on file structure and only one control file is needed to generate functionl webpage.
Project site: https://kursg.bofc.pl
termsend
Server to allow very easy file sharing without leaving our beloved terminal. To upload files only netcat is needed, and to retrieve files one can manage only with curl. Both binary and text files can be exchanged. It's something like no-paste but from terminal.
Project site: https://termsend.bofc.pl
mtest
Very easy and very simple but sufficient framework for testing in c/c++ or shell using TAP (test anything protocol).
Project site: https://mtest.bofc.pl
builder
Project based on buildroot that generates complete environment for testing c/c++ software on different architectures (arm, mips, x86), many C libraries (gnu, musl, uclibc) and many operating systems (linux, freebsd, netbsd, openbsd, solaris).
nuttx (posix rtos)
port for stm32butterfly2 board, added support for: spi, rs232, ethernet, sd card, adc, console over uart, joystick, usb host
Commercial
bofc.pl
- maintanencing own server infrastructure
- maintanencing servers for automatic tests (continous integration) for different architectures (armv5, armv6, armv7, armv8, mips, x86), different operating systems (linux, netbsd, openbsd, freebsd, solaris, aix, hp-ux) and different C libraries (gnulibc, musl, uclibc)
- linux system administrator (backups, raid, vpn, git repos, monitoring (cron + scripts), nginx, network namespaces, router (internet sharing), rsyncd, dhcpd, filesharing samba+nfs, diskless pxe server, dns)
- creating and maintaining company website
- administration of Linux machines (servers and dev machines)
set-top boxes
- software integration for set-top boxes (yocto linux)
- software and kernel debugging
- software test during integration
- linux security review for nagra
solar panels and inverter controller
- drivers and backbone framework based on freertos (project later moved to zephyr)
- bringing up imxrt-1060 cpu in zephyr
- implementing canfd support
- implementing adc and voltage reading for the app
- implementing secure boot with mcuboot and writing rescue loader
- supporting team with linux and buildroot part of the project
smart shopping label
- epaper based shopping label with updates over lorawan
- based on nuttx rtos and stm32wl5
- cpu bring up - since cpu was not yet supported in nuttx
- ipc (inter processor communication) driver
- secure boot with mcuboot
solar panel controller
- Algorythm to charge batteries at daytime, and discharge at nighttime
- software integration with buildroot and beaglebone black
- diagnostics (logs on SD with time from RTC)
- driving and monitoring modbus-tcp devices
engine power
- driving chargers to charge batteries (CAN)
- monitoring of battery state (ADC), relays and power supply
- diagnostics (logs on SD with time from RTC)
- CAN logger (logging all CAN frames onto SD card)
- circuit protection from overcurrent (precharge logic)
- storing critical errors on internal FLASH memory
- diagnostic shell (with password protection) over UART
aestethic device
- support for lemaker guitar and olimex a20 boards (arm linux)
- linux building scripts (buildroot)
- bootloader (uboot)
- cloud communication (websocket)
- device diagnostics with history and live view for cloud
- graphical user interface (qt5, qml)
- network manager
- package server for updates
- analyze of software performance
- developer server administration (git, dns, jenkins, vpn)
video mixer
- support for altera socfpga (arm linux)
- investigation of fpga performance
- linux building scripts (buildroot)
- bootloader (uboot)
- tcp and udp servers for communication with the device
- managing onboard fpga
memperf
- Benchmark for memory throughput.
pqtt
- mqtt client with posix-like api, for embedded devices (constrained devices)
lte
- developing l2 lte stack
embedded c software engineer [10.2015 - 06.2016] (full time)
Projects:
- Realtime operating system with posix api, for 32-bit microcontrollers (stm32) with functions like: socket, semaphore, mutex, pthread, time, ring-buffer, fatfs, tcp/ip stack
- intercom over ethrnet (stm32f1)
- diagnostic module analyzing voltage and current on vehicle with options to store oscillograms int osd card in event of anomaly (voltage peak for example) (stm32f3)
- led cluster controller over ethernet with mqtt (stm32f4)
- application for previously written rtos like: http server, mqtt client, ftp client, rtc configurator
- also I managed, git repository, gcc toolchain, cmake building system
embedded c/c++ software engineer [03.2014 - 10.2015] (full time)
Projects (working under Linux)
- application counting passengers getting in and out of vehicle
- application checking whether driver is sober - and blocking vehicle if not
- ticket validator driver
- application announcing current stop on demand from phone (bluetooth 4.0)
- application monitoring power status in vehicle
- monitor of transfer usage for different port-address-interface tuples
- also I managed, git repository, gcc toolchain, cmake building system and jenkins
embedded c++ software engineer [10.2012 - 03.2014] (full time)
graphical user interface for solar panel cluster controller (group project)
junior C++ software engineer [09.2011 - 10.2012] (full time)
Maintanence and development of raporting module in BST (wcdma)