지난 포스트에서 app controller, app state들을 만들어 app의 역할 및 동작 방식에 대해 알아 보았습니다. 이번 포스팅에서는 main.c의 infinite loop에서 app initial 과 app의 loop등을 어떻게 호출하는지 확인해 보도록 하겠습니다.
아래 main.c의 일부분을 보도록 하겠습니다.
int main(void)
{
...
/* USER CODE BEGIN 2 */
app_first_init();
app_second_init();
app_third_init();
app_start_app(APP_first);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
app_process();
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
}
아래의 function call로 세개의 app을 초기화하고 app controller에 등록하게됩니다.
- app_first_init() - 첫번째 app 초기화 및 app controller에 등록
- app_second_init() - 두번째 app 초기화 및 app controller에 등록
- app_third_init() - 세번째 app 초기화 및 app controller에 등록
바로 이전 포스트의 코드를 상기해보시면 쉽게 알 수 있을 것입니다.
초기화를 마치고 app_start_app(APP_first) 를 호출함으로써 첫번째 app을 active 상태로 만듭니다.
그리고 whille(1) 문에 app_process()를 호출합니다. app_process()는 지난번 app controller에서 보았 듯 아래와 같은 역할을 함수입니다.
- app_on_msg_app() - 시스템에서 받은 메시지 현재 active app 에 전달
- app_loop_current_app() - 현재 active app 의 loop() 함수 실행
/**
* @brief This function is executed in case of ...
* @retval ..
*/
void app_process(void)
{
app_on_msg_app();
app_loop_current_app();
}
이렇게 각 app의 초기화 및 controller의 실행방법까지 알아봤습니다. 다음 마지막 포스트에서는 각각의 app state들이 어떻게 스위칭 되는지 그리고 전반적으로 app state를 어떻게 구성해야 하는지 알아보도록 하겠습니다.
이상입니다.
'▶ C Application > App 만들기' 카테고리의 다른 글
App state machine 만들기 #5 app states switching (0) | 2023.11.15 |
---|---|
App state machine 만들기 #3 app_first.c (0) | 2023.11.15 |
App state machine 만들기 #2 app.c (0) | 2023.11.15 |
App state machine 만들기 #1 app.h (0) | 2023.11.15 |
App state machine 개요 (0) | 2023.11.14 |