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);
|
|
}
|
|
}
|
|
|
|
|
|
|