// test
title 인포제어기 Update - Update Procedure
// ICU : Info-Controller Update
// ICU_folder : /update/extInfoUpdate
// ICU_flagfile : ext_units
AnS as _USER_OR_SYSTEM_
DMC as AppDMClient
AU as AppUpgrade
UP as Updater
IC as InfoController
END as _END_
@starter(AnS)
// [font-bold]
DMC -> DMC.PRE_WORK(STARTING_PROCEDURE){
AU: lanunching
}
AU ->AU.check_ICU_flagfile{
if (no_exist_ICU_flagfile){
// [font-bold]
END : end of Update
}
}
AU -> AU.make_UpdateUnitList{
// MKBD > AMP > ADP > VESS
while(UpdateUnitList){
state = UP.request_Update{
state = IC.proceed_Update
}
if(even_one_fails){
// [font-bold]
AU -> END : end of Update
}
}
if(completed_AllUnits){
waitFor_ACC_OFF
}
}
AU.ACC_OFF{
AnS: disable Screen-off
confirm = AnS.POPUP_UpdateConfirm
AnS: ScreenOff
// MKBD, AMP, ADP, VESS
state = UP.reuest_SWAP{
state = IC.proceed_SWAP
}
if(completed_Swap){
save_CompleteFlagFile
}
// sleep time : about 6 min. after ACC-off
waitFor_Sleep
}
IC: SleepMode
IC -> IC: Reflection SWAP
DMC: ACC_ON or Reboot
if(exist_ICU_Flagfile){
DMC -> DMC.checkSwapResult{
if(not_swap_completed){
DMC -> AU.launching_for_swap_resume{
// [font-bold]
OTHER_WORK(SWAP_RESUME)
}
}
AnS: POPUP_Whatsnew(ICU)
// [font-bold]
END : completed of Update processe
}
}