The system watchdog monitors whether there is message traffic
on the Bus. If no message was sent for an extended period of time,
a reset will occur. It should also protect against system-wide hangs.
On Linux, watchdog is simulated by a FreeRTOS task that will call exit
on timeout.
Added Gui timer auto refresh window on count and additional
name based API to detach timer from window. Added
TimerIDGenerator and exception throw on creating user timer
with same name.
In order to synchronize the Low Power mode, the services were
immediately informed about the frequency change,
so that they can update their resources (e.g. PWM filling)
and services may request the maximum CPU frequency in order
to perform a task (e.g. screen redraw, telephone conversation)
Due to a race condition between source and sink voice is not always
starting when calling. Introduce audio stream connections to avoid
race condition and improve handling of audio start and stop operations.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
* allow workers to run independently from service
* change worker to use FreeRTOS wrapper Queue class instead of
freeRTOS native queues
* fix bug disallowing to destruct worker that have never ran
* fixed worker bad state transition to Running state
* [EGD-3688] Relax retries count for send
enable ServiceDesktop
* [EGD-3688] Relax retries count for send
enable ServiceDesktop
* [EGD-4318] enable service desktop and USB communication
CDC for serial port (communication with Mudita Center)
MTP for file transfer
* [EGD-4318] include path fix
* [egd-4318] constexpr brought back
* [EGD-4318]: review changes
- all BSP specific code moved to bsp files
- added a device listener class for USB
- simplified WorkerDesktop
* [EGD-4318] more reivew fixes mostly include paths and enums
* [EGD-4319] review fixes for SP2FET
* [EGD-4318] updates for large messages sent from phone
* [EGD-4318] more review fixes
- error checks on linux (ptms open and ptsname)
- removed all vfs
- service-desktop won't start if worker init fails
* [EGD-4318] updated return values for usbInit
* Update module-services/service-desktop/WorkerDesktop.cpp
Co-authored-by: Piotr Tanski <piotr.tanski@mudita.com>
* Update module-services/service-desktop/endpoints/update/UpdateMuditaOS.hpp
Co-authored-by: Piotr Tanski <piotr.tanski@mudita.com>
* [EGD-4318] review fixes
- removed #define
- return values for usbInit
* Update module-bsp/board/linux/usb_cdc/usb_cdc.cpp
Co-authored-by: Piotr Tanski <piotr.tanski@mudita.com>
* [EGD-4318] updated taglib
* [EGD-4318] style fixes
* Update module-bsp/board/linux/usb_cdc/usb_cdc.cpp
Co-authored-by: Alek Rudnik <54846206+alekrudnik@users.noreply.github.com>
* [EGD-4318] switches from freertos Timer class to sys::Timer
* Update module-services/service-desktop/WorkerDesktop.cpp
Co-authored-by: Piotr Tanski <piotr.tanski@mudita.com>
* Update module-services/service-desktop/WorkerDesktop.cpp
Co-authored-by: Piotr Tanski <piotr.tanski@mudita.com>
* [EGD-4318] added mutex/lock during raw data transfers
* [EGD-4318] if the TAR file is zero size or invalid
mtar_close causes HF. This is a workaround
* [EGD-4318] timer should not start on constructor
* [EGD-4318] getRawMode is const noecept
Co-authored-by: unknown <atom@prostate.local>
Co-authored-by: Piotr Tanski <piotr.tanski@mudita.com>
Co-authored-by: Alek Rudnik <54846206+alekrudnik@users.noreply.github.com>
Reduce firmware size by refactoring global data defined in public
headers.
Each global variable which require runtime initialization adds
initialization code to every translation unit which includes the header
where the variable is defined and declared.
* EGD-3585 SerwiceGUI and ServiceEink initial cleanup
* moved code to one function per message handling
* removed dead code from comments
* added Service.cpp demangling to debug messages for clear output
* added Response value to return messages to `connect()`
* Timers now are Application thread safe
* Timers now have consistent API independend of Application (no more c style timers)
* Timers can have either: callback or override onTimer() method - this
way we can create more complicated timers or just use existing ones
* gui::Timer added via adapter class GuiTimer to decouple sys::Timer
with gui::Timer
* Fixed race in wrapper
* Updated docs
* fixed using std and cpp_freertos and DataReceivedHandler hidden in Application.hpp
Implement termination of worker threads. To achieve the goal so called
control queue has been introduced which is handled in Worker base class.
Once worker thread receives stop message it tries to kill itself. It is
possible to join a worker thread before deinit know thanks to a
semaphore given before thread termination.
Some improvements to the interface and implementation has been made
including state sanity checks. It is assumed that only service that owns
the worker is allowed to stop it, which allows not to consider code
reentrancy.
Worker destroying procedure has been updated in services that already
own workers.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
* c_str() needed for pretty debug logs (to not log integers which means nothing)
* std::string operator needed to log not only message, ale it's content
if provided (similar to __repr__ from pytohon
Till now there was no clear way to register hanlder for message in
Service, with this approach one can register function/lambda handler
for Message which encurages handling messages in functions rather than
in hudge switch cases.
With aproach like this our Messages resembe something between Command
and State pattern. In state pattern `Message` would be `Event` send,
whereas Service would be `Context`.
* [EGD-558][fix] change error to info
* [EGD-558] added volume control of currently active audio operation
* [EGD-558] added ringing on incoming call
* [EGD-558] mini clean up in callwindow
* [EGD-558] removed reinterpret_casts and added some logging
* [EGD-558] rewritten methods to increment/decrement volume
* [EGD-558] clean up
* [EGD-558] moved volume control to application class
added nullptr checks
* [EGD-558] fixed types
* [EGD-558] added some audio debug logs
* [EGD-558] left a comment why ringing sound is currently disabled
* [EGD-558] PR fixes
* [EGD-558] PR fix
* [EGD-558] added propper error codes on pointer checking in Audio.cpp
* [EGD-2306] DESKTOP application initial commit
most of this code is foreign and unverified
it's low level magic numbers for the platform
on Linux i used PTY to simulate a serial line
* [EGD-2306] Add contact-list and contact-count commands
* [EGD-2306] Add command for geting contact by id and minor fixes
* [EGD-2856][WIP] Add basic serial parser
* [EGD-2855] Set usb device config buffer property cacheable
* [EGD-2856] Separate handlers from fsms, add status codes
* [EGD-2855] fd passed to state machine for linux renderer support
* [EGD-2856] Fix warnings
* [EGD-2855] New send task added and buffer queque
* [EGD-2856] Add simple ServiceDesktop documentation
* [EGD-2855] rt1051 worker refactor
* [EGD-2855] Added service workers for desktop app.
Changed linux USB driver mock up.
Added queue name mapping for service workers.
Added queue registry support (maybe redundant with mapping)
* [EGD-2855] Added proper message pointer to queue send and memory free
Added bsp driver namespace for linux and rt1051
* [EGD-2856] Major cleanup
* [EGD-2856] Fix typo
* [EGD-2856] Fix warnings
* [EGD-2856] Delete recursive fsm calling to prevent stack overflow
* [EGD-2856] Reduce http codes
* [EGD-2856] Rename serial parser to parser
* [EGD-2855] USB_CDC drives renames and cleanups
Service Worker queue cleanups
* [EGD-2855] Service Worker queue cleanups
* [EGD2855] Fixed external driver import
* [EGD-2856] Remove redundant message type
* [EGD-2856] Switch on enums instead of ints, and other minor changes requested after code review
* [EGD-2855] usb driver moved to bsp directory structure, pull request fixes
* [EGD-2855] clang #include fix
* [EGD-2856] Add tinyfsm as git submodule, update readme and minor fix
Co-authored-by: rkubiak01 <56821808+rkubiak01@users.noreply.github.com>
Co-authored-by: PrzeBrudny <60609703+PrzeBrudny@users.noreply.github.com>