[BH-1655] Fix memory leaks in clock faces and shortcuts
Disable libphonenumber initialization since it is not used in Harmony
but takes around 1.4MB of memory
Add heap allocation statistics
[BH-1630] Turn off the device for low voltage
The system closes only if the SoC is 0%, but
it doesn't react if the voltage has low level.
The new implementation invokes the close
procedure if the voltage is less than 3.4V.
This solution should avoid possiblity to
hang the MCU.
[BH-1649] Reimplement I2C communication attempts
The CW2015 driver should avoid any logic.
Thus I2C communication attempts were moved
to the BatteryCharger which is product specific.
[MOS-000] Remove redundant newlines when printing clocks
As described.
[BH-1628] Reinit I2C after bus error
A lack of timeout in I2C could cause
the worker could get stuck in a loop
if the communication has been broken somehow.
The Harmony is unresponsive in this case.
The only solution is just to perform a hardware
reset using Frontlight and Back buttons simultaneously.
There are also additional 5 attempts to read and write
transactions if the bus error occurs in the Fuel Gauge driver.
It should be sufficient but if it would still persists
the system just will read 0% SOC and shutdown system.
[BH-1627] Enable brownout detection
There is the possibility of hanging
the MCU due to a power glitch
if the voltage drops to 2.8V
and the system wants to use some
peripherals like the eink or the backlight.
To prevent this situation brownout
detection has been enabled
which monitors the 1.1V and 2.5V
LDO regulators. If the voltage
will drop to the trigger voltages
then the interrupt is invoked.
The interrupt checks the source
of the interrupt and then reset
the MCU using WDOG_B pin
which is connected to the main power source.
After restarting, the MCU checks
the voltage. If it is too low
the system enters SNVS mode.
[BH-1554] Add delay after init external oscillator
Some Harmony devices are struggling to switch between
internal to external oscillators.
According to the newest version of the library
(lpm.c - Low Power Mode) the NXP is recommending
adding at least a 200us delay after
enabling the external oscillator.
Their implementation is not full because
the CPU speed used in the delay function is hardcoded.
So if the CPU has a frequency 4MHz the delay takes ~26ms.
To avoid that situation we use
the proper speed of the CPU in the delay function.
[MOS-176] Fix long turn off time
Fix of the issue that resulted in long
turn off time of the phone, which was
caused by unfortunate coincidence
of functions names - as a result the
one from the included header file was
called instead of the one from the
anonymous namespace inside the file,
what resulted on not cutting off
board power until the watchdog
triggered.
[MOS-903] Remove reboot to USB MSC mode
Remove mechanics enabling to perform reboot
to MSC mode by sending request to one of the
endpoints via serial port, as it is not
implemented in bootloader and may potentially
be unsafe.
[MOS-887] Fix black screen left after power off
Fix of the issue that after powering off
the phone with dark mode enabled the
screen remained black instead of being
cleared to white.
[MOS-882] Fix FLAC file playback with USB cable connected
Fix of the issue that caused system crash when
trying to play 96kHz FLAC file with USB cable
connected. The reason of the issue was the lack
of FreeRTOS heap space left, what caused
pvPortMalloc() to fail when allocating
memory for stream buffer.
Additionally minor code cleanup.
[MOS-807] Update scripts
Added update scripts for both variants:
UDM update and further 'normal' updates.
Minor updates to the directories layout
[MOS-783] Moved battery config file to '/user/data'
Moved battery config file from root
directory of user partition to
'data' directory to comply with
new directory layout design.
[MOS-786] A/B Booting - fixed factory reset from menu
Now factory reset works both from ecoboot and from menu
[MOS-783] Working Pure simulator after partition changes
Fixed iosyscalls so that Pure simulator
works after directory structure changes.
[MOS-786] Added support for A/B boot codes in OS
Further implementation of A/B booting
[MOS-783] First part of new dir structure implementation
Works:
- generating .img for Pure;
- Pure boots after flashing new image and
seems to be working fine;
Not yet:
- generating update package;
- generating image for Harmony;
- simulator;
- path-related unit tests fail
due to paths being hardcoded
in test scenarios.
[CP-1424] Refactor backup and restore endpoints
Redesign of backup and restore endpoints in the
service-desktop to delegate responsibility for
execution of the actual backup and restore process
onto the Updater.
[MOS-820] Fix crashes caused by plugging the charger
The deleting of the USBLinuxReceive task has been added
in the USB stack de-initialization process to avoid creating
multiple instances during next initializations.
[MOS-775] Create run-time statistics for tasks
Every hour, statistics of tasks that put a heavy load
on the CPU will be logged