통합 차량 관제 시스템 용어 사전
제어·구동

Fan 소유권

하나의 Fan 을 세 기능이 공유할 때, 어느 순간에도 소유자가 정확히 하나임을 보장하는 모델.

§6.4.2 의 "Fan 제어 기능 간 전환" 소절이 요구하는 것이다. 세 기능이 Fan 을 다툰다 — 목표 온도 자동 공조, 사용자 공기 순환, Pre-conditioning.

세 요구사항이 만드는 규칙

① 다른 Fan 제어 기능의 새 유효 요청이 확인되면 기존 동작을 종료하고 새 요청을 반영한다
② 사용자의 새 유효 요청을 수행 중인 Pre-conditioning 보다 우선 처리한다
③ 새 기능으로 전환된 이후 이전 기능의 Fan 출력을 자동으로 재개하지 않는다

③이 핵심 — 종료이지 일시정지가 아니다

구현상 이전 기능의 상태를 저장해 두지 말라는 뜻이다.

/* ✗ 요구사항 위반 — 자동 재개 경로를 만들었다 */
static fan_level_t g_saved_level;
void fan_release(void) { fan_output_apply(g_saved_level); }

저장할 자리를 만들지 않으면 위반이 구조적으로 불가능해진다. 표시 우선순위 에서 "매 주기 최우선을 다시 고르는" 구조를 택한 것과 같은 발상이다.

상태를 하나로 묶어야 하는 이유

소유자와 듀티를 따로 쓰면 그 사이에 ISR 이 끼어들어 "새 소유자 + 옛 듀티" 조합을 볼 수 있다. 각각 volatile 인 건 도움이 안 된다 — volatile 은 각 접근을 보장하지만 두 접근 사이의 원자성은 보장하지 않는다.

typedef struct { fan_owner_t owner; uint16_t duty; } fan_state_t;
static volatile fan_state_t g_fan;   /* 통째로 교체한다 */

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — Predictive Climate — Fan 소유권·Pre-conditioning·자동 환기