165 lines
3.4 KiB
C
165 lines
3.4 KiB
C
|
|
||
|
|
||
|
//-----------------------definicje------------------------//
|
||
|
|
||
|
//-------------------------typy--------------------------//
|
||
|
|
||
|
typedef struct init_status_s
|
||
|
{
|
||
|
int8_t gui, eeprom;
|
||
|
int8_t CtrlTask;
|
||
|
int8_t DebugTask;
|
||
|
int8_t CheckKeyboardTask;
|
||
|
int8_t UpdateGUITask;
|
||
|
}init_status_t;
|
||
|
|
||
|
//------------------------zmienne-------------------------//
|
||
|
static init_status_t init_status;
|
||
|
|
||
|
//----------deklaracje funkcji prywatnych----------------//
|
||
|
void SystemInitializeTask (void);
|
||
|
void InitializePeripherals(void);
|
||
|
void CreateRTOSTasks(void);
|
||
|
void CtrlTask (void *parameters);
|
||
|
void DebugTask (void *parameters);
|
||
|
void CheckKeyboardTask (void *parameters);
|
||
|
void UpdateGUITask (void *parameters);
|
||
|
|
||
|
//----------funkcje publiczne----------------//
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
int8_t i,j,k;
|
||
|
|
||
|
//inicjalizacja urządzenia
|
||
|
xTaskCreate( SystemInitializeTask, "Autodetect", 96 , NULL,1, NULL );
|
||
|
|
||
|
//Przekaż kontrolę do RTOSa
|
||
|
vTaskStartScheduler();
|
||
|
|
||
|
// Jeżeli RTOS działa prawidłowo, to program nie dotrze do tego punktu
|
||
|
while (1);
|
||
|
}
|
||
|
|
||
|
|
||
|
void SystemInitializeTask (void)
|
||
|
{
|
||
|
|
||
|
InitializePeripherals();
|
||
|
CreateRTOSTasks();
|
||
|
|
||
|
vTaskDelete( NULL );
|
||
|
}
|
||
|
|
||
|
void InitializePeripherals(void)
|
||
|
{
|
||
|
debug_Initialize();
|
||
|
|
||
|
status.InitStatus.gui = gui_Initialize();
|
||
|
if ( status.InitStatus.gui < 0 )
|
||
|
{
|
||
|
debug_ReportError(-GUI_INIT_FAILED,"main.c" );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void CreateRTOSTasks(void)
|
||
|
{
|
||
|
status.InitStatus.CtrlTask = xTaskCreate( CtrlTask, ( signed char * ) "CtrlTask", 128 , NULL,2, NULL );
|
||
|
if ( status.InitStatus.SndCtrlTask < 0 )
|
||
|
{
|
||
|
debug_ReportError(-MALLOC_FAILURE,"xTaskCreate CtrlTask" );
|
||
|
}
|
||
|
|
||
|
status.InitStatus.DebugTask = xTaskCreate( DebugTask, ( signed char * ) "DebugTask", 128, NULL,0, NULL );
|
||
|
if ( status.InitStatus.DebugTask < 0 )
|
||
|
{
|
||
|
debug_ReportError(-MALLOC_FAILURE,"xTaskCreate DebugTask" );
|
||
|
}
|
||
|
|
||
|
status.InitStatus.CheckKeyboardTask = xTaskCreate( CheckKeyboardTask, ( signed char * ) "CheckKeyboardTask", 128, NULL,3, NULL );
|
||
|
if ( status.InitStatus.CheckKeyboardTask < 0 )
|
||
|
{
|
||
|
debug_ReportError(-MALLOC_FAILURE,"xTaskCreate CheckKeyboardTask" );
|
||
|
}
|
||
|
|
||
|
status.InitStatus.UpdateGUITask = xTaskCreate( UpdateGUITask, ( signed char * ) "UpdateGUITask", 128, NULL,1, NULL );
|
||
|
if ( status.InitStatus.UpdateGUITask < 0 )
|
||
|
{
|
||
|
debug_ReportError(-MALLOC_FAILURE,"xTaskCreate UpdateGUITask" );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void CtrlTask (void *parameters)
|
||
|
{
|
||
|
portTickType xLastWakeTime;
|
||
|
|
||
|
//inicjalizuj LastWakeTime
|
||
|
xLastWakeTime=xTaskGetTickCount();
|
||
|
|
||
|
while(1)
|
||
|
{
|
||
|
|
||
|
vTaskDelayUntil(&xLastWakeTime,10);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void DebugTask (void *parameters)
|
||
|
{
|
||
|
portTickType xLastWakeTime;
|
||
|
uint8_t *ptr;
|
||
|
|
||
|
//inicjalizuj LastWakeTime
|
||
|
xLastWakeTime=xTaskGetTickCount();
|
||
|
|
||
|
while(1)
|
||
|
{
|
||
|
/*
|
||
|
Send debug data to serial console
|
||
|
*/
|
||
|
|
||
|
vTaskDelayUntil(&xLastWakeTime,400);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void CheckKeyboardTask (void *parameters)
|
||
|
{
|
||
|
static uint8_t k;
|
||
|
portTickType xLastWakeTime;
|
||
|
|
||
|
//inicjalizuj LastWakeTime
|
||
|
xLastWakeTime=xTaskGetTickCount();
|
||
|
|
||
|
while(1)
|
||
|
{
|
||
|
keys_Poll();
|
||
|
k=keys_GetKeyCode();
|
||
|
gui_KeyPressed(k);
|
||
|
keys_ClearEvent();
|
||
|
vTaskDelayUntil(&xLastWakeTime,10);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void UpdateGUITask (void *parameters)
|
||
|
{
|
||
|
portTickType xLastWakeTime;
|
||
|
|
||
|
//inicjalizuj LastWakeTime
|
||
|
xLastWakeTime=xTaskGetTickCount();
|
||
|
|
||
|
while(1)
|
||
|
{
|
||
|
gui_RefreshScreen();
|
||
|
vTaskDelayUntil(&xLastWakeTime,100);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|