* SYSTEM: tickless mode with deep sleep. * Move FreeRTOS ticks to lptim2 * API: move all sumbodules init routines to one place. Timebase: working lptim2 at tick source. * API Timebase: lp-timer routines, timer access safe zones prediction and synchronization. FreeRTOS: adjust configuration for tickless mode. * NFC: support for tickless mode. * API Timebase: improve tick error handling in IRQ. Apploader: use insomnia mode to run applications. * BLE: prevent sleep while core2 starting * HAL: nap while in insomnia mode * init records work * try to implement record delete * tests and flapp * flapp subsystem * new core functions to get app stat, simplify core code * fix thread termination * add strdup to core * fix tests * Refactoring: remove all unusued parts, update API usage, aggreagate API sources and headers, new record storage * Refactoring: update furi record api usage, cleanup code * Fix broken merge for freertos apps * Core, Target: fix compilation warnings * Drop firmware target local * HAL Timebase, Power, Clock: semaphore guarded access to clock and power modes, better sleep mode. * SD-Filesystem: wait for all deps to arrive before adding widget. Core, BLE: disable debug dump to serial. * delete old app example-ipc * delete old app fatfs list * fix strobe app, add input header * delete old display driver * comment old app qr-code * fix sd-card test, add forced widget update * remove unused new core test * increase heap to 128k * comment and assert old core tests * fix syntax Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <cmsis_os2.h>
 | 
						|
#include <FreeRTOS.h>
 | 
						|
#include <task.h>
 | 
						|
#include <main.h>
 | 
						|
 | 
						|
osThreadId_t systemdHandle;
 | 
						|
const osThreadAttr_t systemd_attributes = {
 | 
						|
    .name = "systemd",
 | 
						|
    .priority = (osPriority_t) osPriorityNormal,
 | 
						|
    .stack_size = 1024 * 4
 | 
						|
};
 | 
						|
 | 
						|
void systemd(void *argument);
 | 
						|
 | 
						|
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
 | 
						|
 | 
						|
/* Hook prototypes */
 | 
						|
void configureTimerForRunTimeStats(void);
 | 
						|
unsigned long getRunTimeCounterValue(void);
 | 
						|
void vApplicationIdleHook(void);
 | 
						|
void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char *pcTaskName);
 | 
						|
 | 
						|
__weak void configureTimerForRunTimeStats(void) {
 | 
						|
}
 | 
						|
 | 
						|
__weak unsigned long getRunTimeCounterValue(void) {
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 | 
						|
__weak void vApplicationIdleHook( void ) {
 | 
						|
    /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
 | 
						|
    to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
 | 
						|
    task. It is essential that code added to this hook function never attempts
 | 
						|
    to block in any way (for example, call xQueueReceive() with a block time
 | 
						|
    specified, or call vTaskDelay()). If the application makes use of the
 | 
						|
    vTaskDelete() API function (as this demo application does) then it is also
 | 
						|
    important that vApplicationIdleHook() is permitted to return to its calling
 | 
						|
    function, because it is the responsibility of the idle task to clean up
 | 
						|
    memory allocated by the kernel to any task that has since been deleted. */
 | 
						|
}
 | 
						|
 | 
						|
__weak void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char *pcTaskName) {
 | 
						|
    /* Run time stack overflow checking is performed if
 | 
						|
    configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is
 | 
						|
    called if a stack overflow is detected. */
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void MX_FREERTOS_Init(void) {
 | 
						|
    systemdHandle = osThreadNew(systemd, NULL, &systemd_attributes);
 | 
						|
}
 |