ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABBBCBDBE
1
2
3
VAPS 단위 테스트 정의서 (Unit Test Definition)MAIN ECU 단위 테스트 (TC375#1)RPi 단위 테스트CLU ECU 단위 테스트 (TC275)ACT ECU 단위 테스트 (TC375#2)D / R / N단 기능 단위 테스트 (기능 시나리오 기반)
4
Vehicle Anti-rollaway Protection System — 차량 무인 이동 방지 자동 제어 시스템운전자 감지 · 위험 판단 · 제어 명령 생성로그 수신 · 저장 · 웹 대시보드 · 외부 알림경고 출력 · LED 제어 · LCD 표시 · UART 로그 전송센서 수집 · 속도 산출 · 모터/서보 제어FR-JDG, FR-CTL, FR-DSP, FR-LOG, FR-SAF 통합 기능 검증
5
#테스트 ID테스트 항목관련 요구사항 ID입력 조건 (사전 조건)테스트 절차기대 결과중요도결과(P, F, N/A)#테스트 ID테스트 항목관련 요구사항 ID입력 조건 (사전 조건)테스트 절차기대 결과중요도결과(P, F, N/A)#테스트 ID테스트 항목관련 요구사항 ID입력 조건 (사전 조건)테스트 절차기대 결과중요도결과(P, F, N/A)#테스트 ID테스트 항목관련 요구사항 ID입력 조건 (사전 조건)테스트 절차기대 결과중요도결과(P, F, N/A)#테스트 ID테스트 항목관련 요구사항 ID입력 조건 (사전 조건)테스트 절차기대 결과중요도결과(P, F, N/A)
6
문서 버전v1.0▶ 1. 압력 센서 (FSR) 단위 테스트 — IF-ADC-01, FR-DET-01▶ 1. 로그 수신 및 저장 기능▶ 1. 비상등 LED 제어 — FR-CTL-10, EXT01_EXT01▶ 1. 인코더 기반 속도 산출 — FR-DET-04▶ 1. D단 감지 및 판단
7
작성 기준FR-DET, FR-JDG, FR-CTL, FR-DSP, FR-LOG, FR-SAF, FR-NFR, SR-DRV 전체1UT-M-01EVADC Group8 초기화IF-ADC-01MAIN 부팅 직후init_pressure_sensor() 호출 후
EVADC Group8 Queue0 동작 확인
Queue0 연속 변환 시작
(REFILL 모드)
P1UT-RPI-LOG-01경고 이벤트 자동 저장 확인FR-LOG-01, FR-LOG-03, FR-LOG-04RPi 프로그램 실행 중, 직렬 입력 가능 상태① 경고 이벤트 데이터 입력
② 로그 저장 여부 확인
③ 웹 화면 또는 API에서 저장 결과 확인
경고 이벤트가 정상 수신되어 저장되고 발생 시각과 이벤트 종류가 확인 가능하다.P1UT-HAZ-001정상 상태 비상등 OFFFR-CTL-10risk_level=0risk_level=0 전달 후 비상등 GPIO 확인GPIO LOW 유지 (비상등 OFF)P1UT-ACT-ENC-01인코더 펄스 카운팅FR-DET-04DC 모터 100 PPR 회전인코더 펄스 카운트 함수 호출100 펄스 정확 카운트P1UT-D-01D단 스위치 인식FR-DET-02기어=P→DD단 GPIO 전환 후 상태 확인D단 정확 인식P
8
대상 ECUMAIN (TC375#1) / CLU (TC275) / ACT (TC375#2) / RPi2UT-M-02FSR 3채널 ADC 값 읽기IF-ADC-01FSR 3개 미가압 상태read_pressure_adc_average() 호출
CH4/5/6 ADC 값 확인
3채널 평균 ADC ≈ 0
(각 채널 0~50 이내)
P2UT-RPI-LOG-02제동 이벤트 자동 저장 확인FR-LOG-01, FR-LOG-03, FR-LOG-04RPi 프로그램 실행 중, 직렬 입력 가능 상태① 제동 이벤트 데이터 입력
② 로그 저장 여부 확인
③ 이벤트 종류 확인
제동 이벤트가 정상 저장되고 brake 이벤트로 구분된다.P2UT-HAZ-0021차 경고 비상등 점멸FR-CTL-10risk_level=1risk_level=1 전달 후 GPIO 출력 확인1초 간격 점멸 시작P2UT-ACT-ENC-02D/R단 2 km/h 이상 이동 판정FR-DET-04기어=D 또는 R, 인코더 기반 계산 속도 = 2.0 km/h이동 판정 함수 호출MOTION_MOVING 반환 → 즉시 제동 트리거P2UT-D-02D단 반영 시간 200 msFR-DET-02기어 전환 시점 측정전환 후 상태 반영 시간 측정200 ms 이내 반영P
9
총 테스트 수2043UT-M-03FSR 가압 시 ADC 증가IF-ADC-01, FR-DET-01FSR에 4kg 이상 하중 인가read_pressure_adc_average() 반복 호출ADC 평균 ≥ 1600
(≈4000g 이상)
P3UT-RPI-LOG-03제동 당시 차량 상태 저장 확인FR-LOG-03, FR-LOG-04기어, 도어, 운전자, 속도 정보가 포함된 이벤트 입력 가능 상태① 제동 이벤트 입력
② 저장된 로그 확인
③ 기어/도어/운전자/속도 값 확인
이벤트 발생 당시 차량 상태 정보가 함께 저장된다.P3UT-HAZ-0032차 경고 비상등 점멸 유지FR-CTL-10risk_level=2risk_level=2 전달 후 GPIO 확인1초 간격 점멸 시작P3UT-ACT-ENC-03D/R단 1.9 km/h 미만 정지 판정FR-DET-04기어=D 또는 R, 계산 속도 = 1.9 km/h이동 판정 함수 호출MOTION_STOPPED 반환 (2 km/h 미만)P3UT-D-03운전자 존재 판정 (D단)FR-DET-01압력 25 kg 이상 + 인체 감지 60 cm 이내탑승 판정 알고리즘 실행DRIVER_PRESENT 반환P
10
판정 기준P=성공 / F=실패 / N/A=수행 불가, 해당 없음4UT-M-04FSR 점수 변환 정확성FR-DET-01ADC 값 0/100/800/1600/3000 입력pressure_adc_to_g() → score_pressure()0→0점, 100→0점, 800→1점,
1600→3점, 3000→5점
P4UT-RPI-LOG-040/1 상태워드 이벤트 저장 확인FR-LOG-02, FR-LOG-0416bit 상태워드 형식 입력 가능 상태① 0/1 binary 상태워드 입력
② 이벤트 저장 여부 확인
③ 이벤트 종류 및 상태 값 확인
상태워드가 정상 해석되어 이벤트 로그로 저장된다.P4UT-HAZ-004Rollaway 경고 비상등 점멸FR-CTL-10risk_level=3risk_level=3 전달 후 확인1초 간격 점멸 시작P4UT-ACT-ENC-04D/R단 이동 판정 경계값 (2.0 km/h)FR-DET-04기어=D 또는 R, 계산 속도 = 2.0 km/h경계값 판정MOTION_MOVING 반환 (경계 포함)P4UT-D-04운전자 부재 판정 (D단)FR-DET-01두 조건 모두 미충족탑승 판정 알고리즘 실행DRIVER_ABSENT 반환P
11
5UT-M-05압력 3샘플 중앙값 필터FR-DET-01연속 3회 ADC: 100, 3000, 200중앙값 필터 결과 확인median3_u32 → 200 출력
(이상치 3000 제거)
P5UT-RPI-LOG-05잘못된 이벤트 차단 확인FR-LOG-03필수 항목이 누락되거나 형식이 잘못된 이벤트 준비① 잘못된 이벤트 입력
② 저장 여부 확인
유효하지 않은 이벤트는 저장되지 않는다.N/A5UT-HAZ-005D단 제동 비상등 점멸FR-CTL-10risk_level=4risk_level=4 전달 후 확인1초 간격 점멸 시작P4-1UT-ACT-ENC-08N단 7 km/h 이상 이동 판정FR-DET-04, FR-JDG-05기어=N, 인코더 기반 계산 속도 = 7.0 km/h이동 판정 함수 호출 (N단 모드)MOTION_MOVING 반환 → Rollaway 제동 트리거P5UT-D-05판정 불확실 상태FR-DET-01단일 센서만 충족탑승 판정 알고리즘 실행DRIVER_UNCERTAIN 반환P
12
ECU 색상 범례▶ 2. ToF 센서 (VL53L0X) 단위 테스트 — IF-I2C-01, FR-DET-016UT-RPI-LOG-06Raw Frame 표시 정보 저장 확인FR-LOG-05raw_payload 또는 binary 정보가 포함된 이벤트 준비① 이벤트 입력
② 저장 후 목록 조회
③ Raw Frame 표시 확인
사용자가 확인 가능한 Raw Frame 정보가 함께 표시된다.P6UT-HAZ-006R단 제동 비상등 점멸FR-CTL-10risk_level=5risk_level=5 전달 후 확인1초 간격 점멸 시작P4-2UT-ACT-ENC-09N단 6.9 km/h 미만 정지 판정FR-DET-04, FR-JDG-05기어=N, 계산 속도 = 6.9 km/h이동 판정 함수 호출 (N단 모드)MOTION_STOPPED 반환 (7 km/h 미만 → 제동 미트리거)P6UT-D-06D단 위험 판단 개시 (2초)FR-JDG-02D단 + 부재 지속D단 제동 판단 로직D단 제동 위험 판단 수행P
13
MAIN (TC375#1)운전자 감지·위험 판단·제어 명령 생성 (핵심 ECU)1UT-M-06ToF 초기화 시퀀스IF-I2C-01MAIN 부팅 직후TofSensor_Init() 호출
g_tof_init_debug 확인
g_tof_init_debug == 0
g_tofReady == TRUE
P7UT-RPI-LOG-07기동 시 로그 저장소 준비 확인FR-LOG-05빈 저장소 또는 최초 실행 환경① 프로그램 기동
② 로그 저장소 준비 여부 확인
③ 초기 화면 확인
저장소가 자동 준비되고 화면이 정상 표시된다.P7UT-HAZ-007Rollaway 제동 비상등 점멸FR-CTL-10risk_level=6risk_level=6 전달 후 확인1초 간격 점멸 시작P5UT-ACT-ENC-05속도 10 km/h 정확 산출FR-DET-04고속 회전 입력속도 계산 함수 실행10.0 km/h ± 0.1 km/h 반환P7UT-D-09부재 중 순간 복귀 → 타이머 리셋FR-JDG-02부재 후 0.5초 착석타이머 리셋 로직 확인제동 판단 취소, 타이머 리셋P
14
CLU (TC275)경고 출력·LED 제어·LCD 표시·UART 로그 전송2UT-M-07ToF 거리 측정 (착석)IF-I2C-01, FR-DET-01센서 위 10cm 위치에 물체 배치Task_ToF 50ms 주기 실행
TofSensor_GetDistanceMm() 확인
거리 90~110mm 범위P▶ 2. 대시보드 및 조회 기능8UT-HAZ-008경고 해제 → 비상등 OFFFR-CTL-10risk_level=3→0risk_level 3→0 변경 후 GPIO 확인즉시 OFF 전환P6UT-ACT-ENC-07방향 판별 (정방향/역방향)FR-DET-04A채널 B채널 위상차 입력방향 판별 함수 호출정방향/역방향 정확 구별P8UT-D-10단일 센서 오류 — 제동 금지FR-NFR-03압력 오검출, ToF 정상다중 조건 판단 로직단독 조건으로 제동 금지P
15
ACT (TC375#2)센서 수집·모터/서보 제어·속도 피드백3UT-M-08ToF 거리 측정 (부재)IF-I2C-01, FR-DET-01센서 위 20cm+ 물체 없음TofSensor_GetDistanceMm() 확인거리 ≥ 180mmP1UT-RPI-WEB-01메인 대시보드 표시 확인FR-LOG-06이벤트 로그가 1건 이상 저장된 상태① 웹 메인 화면 접속
② 통계와 목록 표시 확인
총 이벤트 수, 경고 건수, 제동 건수, 최신 이벤트 목록이 정상 표시된다.P9UT-HAZ-009경계값 0→1 즉시 전환FR-CTL-10risk_level=0→1전환 타이밍 측정0: OFF, 1: 점멸 즉시 전환P▶ 2. 가속도 센서 (MPU6050) — FR-DET-049UT-D-11ToF만 오검출 — 제동 금지FR-NFR-03압력 정상, ToF 부재다중 조건 판단 로직제동 금지P
16
RPi로그 저장·웹 대시보드·외부 알림4UT-M-09ToF I2C 에러 복구IF-I2C-01I2C 통신 3회 연속 실패 유도
(SDA 라인 단락)
g_tofI2cErrorStreak ≥ 3 확인
TofSensor_Recover() 자동 실행
Soft Reset + 재초기화 수행
g_tof_recover_count 증가
N/A2UT-RPI-WEB-02조건 검색 기능 확인FR-LOG-07서로 다른 종류의 이벤트가 여러 건 저장된 상태① category 조건 조회
② keyword 조건 조회
③ limit 조건 조회
조건에 맞는 로그만 필터링되어 표시된다.P▶ 2. 브레이크등 LED 제어 — FR-CTL-11, EXT01_EXT021UT-ACT-ACC-01정지 상태 가속도 읽기FR-DET-04차체 정지, 수평 배치3축 가속도 읽기 (I2C)X≈0g, Y≈0g, Z≈1g 반환P10UT-D-12도어 무관 D단 제동 확인FR-JDG-02D단 + 도어 닫힘 + 운전자 부재판단 로직 확인운전자 부재 조건 중심 제동 가능P
17
5UT-M-10ToF 점수 변환 정확성FR-DET-01ToF mm 값: 30/80/140/170/200tof_mm_to_cm() → score_tof()3cm→0점, 8cm→5점, 14cm→3점,
17cm→1점, 20cm→0점
P3UT-RPI-WEB-03최근 로그 API 조회 확인FR-LOG-08이벤트 로그가 여러 건 저장된 상태① /api/events GET 요청
② 응답 내용 확인
최근 로그 목록과 통계 정보가 JSON으로 반환된다.P1UT-BRK-001정상 상태 브레이크등 OFFFR-CTL-11risk_level=0brake_state=0 시 브레이크등 GPIO 확인GPIO LOW (OFF)P2UT-ACT-ACC-02이동 중 X축 가속도 감지FR-DET-04전방 가속 시뮬레이션X축 가속도 읽기양수 X축 가속도 감지P11UT-D-13부재 직전 P단 전환 → 비활성FR-SAF-01부재 직후 P단 전환P단 억제 로직시스템 비활성, 제동 없음P
18
6UT-M-11ToF 미준비 상태 출력IF-I2C-01초기화 실패 상태TofSensor_GetDistanceMm() 확인TOF_ERROR_MM(0) 반환N/A4UT-RPI-WEB-04외부 이벤트 등록 API 확인FR-LOG-09POST 요청 가능한 상태① /api/events POST 요청
② 응답 확인
③ 목록 또는 API 재조회
외부에서 등록한 이벤트가 정상 저장된다.P2UT-BRK-002D단 제동 브레이크등 ONFR-CTL-11risk_level=4D단 제동 시 GPIO 확인GPIO HIGH (ON)P3UT-ACT-ACC-03g×100 정수 인코딩통신 아키텍처accel_x=0.50gCAN 전송용 인코딩accel_x=50 (0.50g×100) 정수 변환P▶ 2. D단 경고/제어 및 표시/로그
19
▶ 3. 초음파 센서 (HC-SR04) 단위 테스트 — IF-ERU-01, IF-GPIO-03, FR-DET-01▶ 3. 상태 감시 및 실시간 알림 기능3UT-BRK-003R단 제동 브레이크등 ONFR-CTL-11risk_level=5R단 제동 시 GPIO 확인GPIO HIGH (ON)P4UT-ACT-ACC-05I2C 통신 정상 동작FR-DET-04MPU6050 I2C 주소 0x68I2C 읽기 함수 호출정상 데이터 수신 (응답 확인)P1UT-D-14D단 1차 경고 출력FR-JDG-01, FR-CTL-01기어=D, 도어=열림경고 출력 확인부저/LCD 1차 경고 출력P
20
1UT-M-12ERU 인터럽트 초기화IF-ERU-01MAIN 부팅 직후Ultrasonic_Init() 후
ERU ISR 카운트 확인 (g_eru_isr_count)
Trig 후 ISR 2회 발생
(Rising + Falling)
P1UT-RPI-STS-01직렬 연결 상태 조회 확인FR-LOG-11RPi 프로그램 실행 중① /health 조회
② /api/serial/status 조회
직렬 연결 여부, 최근 오류, 수신 상태 등 진단 정보가 정상 표시된다.P4UT-BRK-004Rollaway 제동 브레이크등 ONFR-CTL-11risk_level=6Rollaway 제동 시 GPIO 확인GPIO HIGH (ON)P▶ 3. 기어별 DC 모터 제어 — ACT ECU 기어 시뮬레이션2UT-D-15D단 1차 경고 타이밍 500 msFR-JDG-01D단 + 도어 열림 판단 시점경고 명령 시간 측정500 ms 이내 경고 명령P
21
2UT-M-13초음파 거리 측정 (착석)IF-GPIO-03, FR-DET-01센서 위 5cm 위치에 물체 배치ultrasonic_update() 상태머신 실행
latest_distance_mm 확인
거리 40~60mm 범위P2UT-RPI-STS-02신규 이벤트 실시간 알림 확인FR-LOG-12, FR-LOG-13브라우저에서 메인 화면 접속 상태① 신규 이벤트 저장
② 화면 알림 확인
신규 이벤트 발생 시 웹 화면에 실시간 알림이 표시된다.P5UT-BRK-005제동 해제 → 브레이크등 OFFFR-CTL-11risk_level=6→0brake_state 2→0 후 GPIO 확인즉시 OFFP1UT-ACT-MOT-01D단 저속 정회전기어 D단 모터 제어MAIN으로부터 motor_cmd=FWD 수신모터 제어 함수 실행저속 정회전 (크리프 속도 5~8 km/h)P3UT-D-16D단 경고 강화FR-JDG-06, FR-CTL-021차 경고 + 부재 강화 경고 출력 확인연속음/강화 메시지 출력P
22
3UT-M-14초음파 거리 측정 (부재)IF-GPIO-03, FR-DET-01센서 위 20cm+ 물체 없음latest_distance_mm 확인거리 ≥ 150mmP3UT-RPI-STS-03SSE 연결 유지 확인FR-LOG-12실시간 구독 가능한 브라우저 환경① 실시간 스트림 연결
② 일정 시간 유지
③ 연결 상태 확인
실시간 이벤트 스트림이 유지되고 신규 이벤트를 수신할 수 있다.P6UT-BRK-006경고만(제동 아님) 브레이크등 OFFFR-CTL-11risk_level=1 (제동 아님)경고 상태에서 브레이크등 확인GPIO LOW (비상등만 점멸)P2UT-ACT-MOT-02R단 저속 역회전기어 R단 모터 제어MAIN motor_cmd=REV 수신모터 제어 함수 실행저속 역회전 시뮬레이션P4UT-D-17D단 경고 해제FR-CTL-03경고 상태 + 복귀 조건해제 확인500 ms 이내 해제P
23
4UT-M-15초음파 타임아웃 처리IF-ERU-01Echo 핀 미연결 (신호 없음)50ms 타임아웃 후 상태 확인latest_distance_mm = 0
ultra_phase → US_COOLDOWN
P4UT-RPI-STS-04직렬 상태 갱신 표시 확인FR-LOG-11, FR-LOG-13메인 화면 접속 상태① 직렬 연결 상태 변화 유도
② 화면 상태 표시 확인
직렬 연결 상태 변화가 화면에 반영된다.P▶ 3. 부저 제어 — FR-CTL-01~02, FR-CTL-063UT-ACT-MOT-03N단 자유회전 (개방)기어 N단 모터 제어MAIN motor_cmd=NEUTRAL 수신모터 단자 개방 함수 실행모터 단자 개방, 자유회전 상태P5UT-D-18D단 자동 제동 명령FR-CTL-04D단 위험 판단 완료ACT 제동 명령 확인ACT에 제동 명령 출력P
24
5UT-M-16초음파 비블로킹 상태머신IF-ERU-01Task_Sensor 10ms 주기 동작 중US_TRIGGER→US_WAIT→US_COOLDOWN
전이 확인
총 사이클 ≈ 30ms
Task_Sensor 10ms 주기 유지
P▶ 4. 이벤트 표시 기능1UT-BUZ-001정상 상태 부저 무음FR-CTL-01risk_level=0risk_level=0 전달 후 부저 출력 확인부저 OFF (무음)P4UT-ACT-MOT-04P단 쇼트 브레이킹 (잠금)기어 P단 모터 제어MAIN motor_cmd=PARK 수신쇼트 브레이킹 함수 실행모터 단락, 회전 저항 최대P6UT-D-19D단 제동 응답 시간 500 msFR-NFR-02위험 판단 시점 기준CAN 제동 명령 시간 측정500 ms 이내P
25
6UT-M-17초음파 점수 변환 정확성FR-DET-01ultra_cm 값: 1/5/10/13/20score_ultrasonic()1cm→0점, 5cm→5점, 10cm→3점,
13cm→1점, 20cm→0점
P1UT-RPI-LED-01경고 이벤트 LED 표시 확인FR-LOG-14warning 이벤트 저장 가능 상태① 경고 이벤트 저장
② LED 상태 확인
경고 이벤트 발생 시 Orange LED가 표시된다.P2UT-BUZ-0021차 경고 단속음 (1초 간격)FR-CTL-01risk_level=1부저 패턴 측정1초 간격 토글P5UT-ACT-MOT-05모터 제어 명령 응답 시간기어 D단 모터 제어CAN 명령 수신 시점 측정모터 구동 시작 시간 측정CAN 수신 후 100 ms 이내 구동P7UT-D-20D단 2 km/h 이상 즉시 자동 제동FR-CTL-04D단 + 속도 2 km/h 이상 감지이동 2 km/h 도달 즉시 제동 명령 → 서보 제동 확인2 km/h 이상 즉시 제동, 2초 이내 완전 정지P
26
▶ 4. 기어/도어 스위치 단위 테스트 — IF-GPIO-01/02, FR-DET-02/032UT-RPI-LED-02제동 이벤트 LED 표시 확인FR-LOG-15brake 이벤트 저장 가능 상태① 제동 이벤트 저장
② LED 상태 확인
제동 이벤트 발생 시 Red LED가 표시된다.P3UT-BUZ-0032차 강화 경고 빠른 단속음FR-CTL-02risk_level=2부저 패턴 측정0.3초 간격 빠른 토글P6UT-ACT-MOT-07모터 방향 전환 (D→R)기어 전환 모터 제어motor_cmd=FWD→REV방향 전환 함수 실행역회전으로 즉시 전환P8UT-D-21D단 제동 유지FR-CTL-08자동 제동 후 조건 미충족제동 유지 확인제동 유지P
27
1UT-M-18기어 P 버튼 인식IF-GPIO-01a, FR-DET-02P버튼(P02.3) press→release3샘플 디바운싱 + press-release 래치
gear_ok 확인
gear_ok = GEAR_PP3UT-RPI-LED-03시스템 해제 이벤트 LED 표시 확인FR-LOG-16system release 이벤트 저장 가능 상태① system release 이벤트 저장
② LED 상태 확인
시스템 해제 또는 정상 복귀 시 Green LED가 표시된다.F4UT-BUZ-004Rollaway 경고 단속음FR-CTL-06risk_level=3부저 패턴 확인단속음 (0.1초 단속음)P▶ 4. 서보 브레이크 제어 — FR-CTL-04~099UT-D-22D단 제동 해제FR-CTL-09착석 + 도어 닫힘해제 확인제동 해제P
28
2UT-M-19기어 R 버튼 인식IF-GPIO-01b, FR-DET-02R버튼(P02.5) press→release동일 래치 로직 확인gear_ok = GEAR_RP4UT-RPI-LED-04status/OK 이벤트 LED 소등 확인FR-LOG-17status 또는 OK 이벤트 저장 가능 상태① status/OK 이벤트 저장
② LED 상태 확인
정상 상태 이벤트에서는 LED가 소등된다.P5UT-BUZ-005D단 제동 연속음FR-CTL-01risk_level=4부저 패턴 확인제동 경고 연속음P1UT-ACT-SRV-01D단 제동 명령 수신 → 서보 제동FR-CTL-04MAIN CAN brake_cmd=1 (D단 제동)서보 제동 함수 실행서보 제동 각도로 이동, 모터 정지P10UT-D-23D단 해제 안내 문구FR-CTL-09착석X 또는 도어 열림LCD 안내 메시지 확인적절한 LCD 안내 표시P
29
3UT-M-20기어 N 버튼 인식IF-GPIO-01c, FR-DET-02N버튼(P02.4) press→release동일 래치 로직 확인gear_ok = GEAR_NP5UT-RPI-AUD-01경고 이벤트 음향 경고 확인FR-LOG-18MP3 모듈 사용 가능 상태① warning 이벤트 저장
② 음향 출력 확인
경고 이벤트 발생 시 warning 음원이 재생된다.P6UT-BUZ-006R단 제동 연속음FR-CTL-01risk_level=5부저 패턴 확인제동 경고 연속음P2UT-ACT-SRV-02R단 제동 명령 수신 → 서보 제동FR-CTL-05MAIN CAN brake_cmd=1 (R단 제동)서보 제동 함수 실행서보 제동 각도로 이동P11UT-D-24D단 비상등 점멸FR-CTL-10D단 자동 제동 발생LED 동작 확인1초 간격 점멸P
30
4UT-M-21기어 D 버튼 인식IF-GPIO-01d, FR-DET-02D버튼(P02.6) press→release동일 래치 로직 확인gear_ok = GEAR_DP6UT-RPI-AUD-02제동 이벤트 음향 경고 확인FR-LOG-18MP3 모듈 사용 가능 상태① brake 이벤트 저장
② 음향 출력 확인
제동 이벤트 발생 시 brake 음원이 재생된다.P7UT-BUZ-007Rollaway 제동 연속음FR-CTL-01risk_level=6부저 패턴 확인제동 경고 연속음P3UT-ACT-SRV-03Rollaway 제동 → 서보 제동 (모터 개방 유지)FR-CTL-07MAIN CAN Rollaway 제동 명령서보 제동 함수 실행 (N단)서보 제동, 모터는 개방 상태 유지P12UT-D-25D단 브레이크등 점등FR-CTL-11D단 자동 제동 발생후방 표시 확인브레이크등 점등P
31
5UT-M-22기어 디바운싱 노이즈 제거IF-GPIO-01, FR-DET-0210ms 주기 3샘플 중 1샘플 불일치불일치 시 기어 미전환 확인기어 유지 (노이즈 무시)P▶ 5. 외부 연동 및 운영 기능8UT-BUZ-008risk 상승 시 패턴 전환FR-CTL-02risk=1→2전환 시 패턴 변화 확인단속음→빠른 단속음 즉시 전환P4UT-ACT-SRV-04D단 2 km/h 이상 즉시 서보 제동FR-CTL-04, FR-JDG-02D단 크리프 전진 2 km/h 이상 감지이동 감지 시점 → 서보 제동 시작 시점 측정2 km/h 이상 감지 즉시 서보 제동, 2초 이내 완전 정지P13UT-D-26D단 기어 표시FR-DSP-01D단 전환LCD D 표시 확인D 표시 200 ms 이내P
32
6UT-M-23기어 반영 시간FR-DET-02기어 전환 시점 측정press→release 후 g_sensor.gear 반영 시간30ms 이내 반영
(3샘플 × 10ms)
P1UT-RPI-EXT-01부팅 후 URL 알림 전송 확인FR-LOG-19네트워크 연결 가능 상태① 웹 서버 기동
② 외부 알림 수신 확인
MON 접속 URL이 외부 알림 채널로 정상 전송된다.P9UT-BUZ-009risk 하강 시 부저 OFFFR-CTL-03risk=3→0전환 후 부저 확인즉시 OFFP5UT-ACT-SRV-05R단 2 km/h 이상 즉시 서보 제동FR-CTL-05, FR-JDG-03R단 크리프 후진 2 km/h 이상 감지이동 감지 시점 → 서보 제동 시작 시점 측정2 km/h 이상 감지 즉시 서보 제동, 2초 이내 완전 정지P14UT-D-27D단 경고 상태 표시FR-DSP-03D단 경고/강화 상태상태 표시 확인상태 정확 표시P
33
7UT-M-24도어 열림 감지IF-GPIO-02, FR-DET-03도어 스위치(P02.7) 해제3샘플 다수결 후 door_ok 확인door_ok = DOOR_OPENP2UT-RPI-OPR-01자동 실행 설정 확인FR-LOG-20systemd 서비스 파일 존재 상태① 서비스 설정 확인
② 실행 조건 확인
network-online 이후 자동 실행 및 재시작 조건이 설정되어 있다.P10UT-BUZ-0100~6 단계별 패턴 구별FR-CTL-01~02risk=0~6 순차 입력각 단계 패턴 측정각 단계별 고유 패턴 출력P5-1UT-ACT-SRV-11N단 7 km/h 이상 Rollaway 서보 제동FR-CTL-07, FR-JDG-05N단 자유회전 중 속도 7.0 km/h 감지이동 감지 시점 → 서보 제동 시작 시점 측정7 km/h 이상 감지 즉시 서보 제동, 2초 이내 완전 정지
(모터는 개방 상태 유지)
P15UT-D-28D단 제동 상태 표시FR-DSP-04제동 진입/유지/해제상태 표시 확인상태 정확 표시P
34
8UT-M-25도어 닫힘 감지IF-GPIO-02, FR-DET-03도어 스위치(P02.7) 눌림3샘플 다수결 후 door_ok 확인door_ok = DOOR_CLOSEP3UT-RPI-OPR-02직렬 연결 실패 후 재시도 확인FR-LOG-21직렬 포트 연결 실패 상황 준비① 직렬 연결 실패 유도
② 상태 조회 확인
직렬 연결 실패 시 재시도가 수행되고 오류 정보가 상태 화면에 표시된다.P▶ 4. LCD1 표시 (운전자 안내) — FR-DSP-01~056UT-ACT-SRV-06제동 유지 — 해제 조건 전까지FR-CTL-08제동 후 control_release_flag=0제동 유지 상태 확인해제 명령 없으면 서보 제동 유지P16UT-D-29D단 운전자 상태 표시FR-DSP-05센서 조합 변화운전자 상태 표시 확인존재/부재/불확실 정확 표시P
35
▶ 5. 운전자 융합 판정 단위 테스트 — FR-DET-011UT-LCD1-001기어 P단 표시FR-DSP-01gear_state=0LCD1 1행 확인P 0km stop' 형식 표시P7UT-ACT-SRV-07제동 해제 → 서보 해제 + 기어 모드 전환FR-CTL-09제동 중 control_release_flag=1해제 함수 실행서보 해제, 현재 기어에 맞는 모터 모드 전환P17UT-D-30D단 경고 이벤트 기록FR-LOG-01D단 경고 발생로그 저장 확인3초 이내 기록P
36
1UT-M-26착석 판정 (3센서 모두 충족)FR-DET-01초음파=5cm, ToF=10cm, 압력=4000gWS = 0.3×5 + 0.3×5 + 0.4×5 = 5.0
judge_driver_final() 확인
DRIVER_SEATED (WS=5.0 > 1.0)P2UT-LCD1-002기어 R단 표시FR-DSP-01gear_state=1LCD1 1행 확인R단 표시P8UT-ACT-SRV-09서보 PWM 해제 각도 검증FR-CTL-09서보 해제 명령PWM 신호 측정해제 목표 각도에 맞는 PWM 출력P18UT-D-31D단 제동 이벤트 기록FR-LOG-02자동 제동 발생제동 로그 저장 확인시각/종류 저장P
37
2UT-M-27부재 판정 (3센서 모두 미충족)FR-DET-01초음파=20cm, ToF=25cm, 압력=0gWS = 0.3×0 + 0.3×0 + 0.4×0 = 0
judge_driver_final() 확인
DRIVER_ABSENT (WS=0 ≤ 1.0)P3UT-LCD1-003기어 N단 표시FR-DSP-01gear_state=2LCD1 1행 확인N단 표시P9UT-ACT-SRV-10MAIN 명령 타임아웃 → 제동 유지 Fail-safe통신 Fail-safeMAIN_ACT_CTRL 500 ms 이상 미수신타임아웃 감지 로직제동 중이라면 제동 유지 (안전 상태)P19UT-D-32D단 제동 당시 상태 기록FR-LOG-03제동 시점 상태로그 내용 확인기어/도어/운전자/속도 저장P
38
3UT-M-28착석 판정 (압력만 충족)FR-DET-01초음파=20cm, ToF=25cm, 압력=5000gWS = 0.3×0 + 0.3×0 + 0.4×5 = 2.0DRIVER_SEATED (WS=2.0 > 1.0)P4UT-LCD1-004기어 D단 표시FR-DSP-01gear_state=3LCD1 1행 확인D단 표시P▶ 5. CAN 피드백 송신 — ACT_MAIN_FEEDBACK, ACT_HEARTBEAT20UT-D-33D단 제동 해제 기록FR-LOG-07운전자 복귀 후 해제해제 로그 확인해제 사유 저장P
39
5UT-M-303회 확정 카운트 (SEATED)FR-DET-01WS > 1.0 조건 1회만 충족present_count 확인present_count=1, stable 미전환
(3회 미만)
P6UT-LCD1-006속도 50 km/h 표시FR-DSP-01speed=50LCD1 속도 영역 확인50km 표시P2UT-ACT-FB-02brake_state_fb 정확 반영ACT_MAIN_FEEDBACK서보 제동 완료 상태CAN 피드백 메시지 확인brake_state_fb=2 (강제 제동) 정상 전송P▶ 3. R단 기능 테스트
40
6UT-M-313회 확정 카운트 완료 (SEATED)FR-DET-01WS > 1.0 조건 3회 연속stable_driver_state 확인stable = DRIVER_SEATED
(30ms 후 확정)
P7UT-LCD1-007운전자 존재 표시FR-DSP-05driver_present=1LCD1 2행 확인driver O' 표시P3UT-ACT-FB-03motor_state 피드백 정확 반영ACT_MAIN_FEEDBACK모터 FWD 구동 중CAN 피드백 메시지 확인motor_state=FWD 정상 전송P1UT-R-01R단 스위치 인식FR-DET-02기어=P→RR단 GPIO 확인R단 정확 인식P
41
7UT-M-323회 확정 카운트 (ABSENT)FR-DET-01WS ≤ 1.0 조건 3회 연속absent_count, stable 확인stable = DRIVER_ABSENTP8UT-LCD1-008운전자 부재 표시FR-DSP-05driver_present=0LCD1 2행 확인driver X' 표시P4UT-ACT-FB-04fault_flag 오류 비트 송신ACT_MAIN_FEEDBACK액추에이터 이상 발생fault_flag SET 후 CAN 송신 확인fault_flag=1 포함 메시지 정상 전송P2UT-R-02R단 반영 시간 200 msFR-DET-02기어 전환전환 시간 측정200 ms 이내P
42
8UT-M-33카운트 리셋 (중간 전환)FR-DET-01SEATED 2회 후 ABSENT 1회present_count/absent_count 확인present_count=0, absent_count=1
(리셋 후 재시작)
P9UT-LCD1-009문 열림 표시FR-DSP-02door_state=1LCD1 2행 확인door O' 표시P5UT-ACT-FB-05Heartbeat 100 ms 주기 송신ACT_HEARTBEATACT 정상 동작 중Heartbeat 메시지 송신 주기 측정100 ms ± 10 ms 주기, alive_counter 증가P3UT-R-03R단 운전자 존재 판정FR-DET-01착석+인체감지탑승 판정DRIVER_PRESENTP
43
▶ 6. CAN 통신 단위 테스트 — IF-CAN-01/02/0310UT-LCD1-010문 닫힘 표시FR-DSP-02door_state=0LCD1 2행 확인door X' 표시P4UT-R-04R단 운전자 부재 판정FR-DET-01두 조건 미충족탑승 판정DRIVER_ABSENTP
44
1UT-M-34CAN 초기화 + STB 핀IF-CAN-01, IF-GPIO-05MAIN 부팅 직후CanApp_Init() 후
P20.6=Low, g_can_init_ok 확인
P20.6=Low (트랜시버 활성)
g_can_init_ok=TRUE
P11UT-LCD1-011갱신 시간 ≤ 200 msFR-DSP-01기어 전환 시점 측정LCD 갱신 시간 측정200 ms 이내 화면 반영P5UT-R-05R단 판정 불확실FR-DET-01단일 조건 충족탑승 판정DRIVER_UNCERTAINP
45
2UT-M-350x100 메시지 송신 (DLC=2)IF-CAN-01brake_cmd=RELEASE, gear=Pcan_send_main_act_ctrl() 호출
g_can_tx100_count 확인
TX 성공, txData[0]=0x0000
(Byte0=0, Byte1=0)
P12UT-LCD1-012복합 상태 표시FR-DSP-01~05gear=D, speed=30, driver=1, door=0전체 LCD1 확인D 30km / driver O door X 정확 표시P6UT-R-06R단 위험 판단FR-JDG-03R단 + 부재R단 제동 판단제동 위험 판단P
46
3UT-M-360x100 제동 명령 인코딩IF-CAN-01, FR-CTL-04risk_level=D_BRAKEautoBrakeCommand=TRUE 시
brake_cmd 강제 FORCE 확인
Byte0=2(FORCE), Byte1=gearP13UT-LCD1-013해제 안내 메시지 표시FR-CTL-09제동 상태 + 착석 미충족LCD 해제 안내 확인운전석에 착석하세요' 등 안내 메시지 표시P7UT-R-09R단 순간 복귀 리셋FR-JDG-03부재 후 복귀타이머 리셋리셋 수행P
47
4UT-M-370x100 기어 인코딩 (P/R/N/D)IF-CAN-01gear=P,R,N,D 각각can_encode_gear() 결과 확인P→0, R→1, N→2, D→3P▶ 5. LCD2 표시 (시스템 상태 모니터링) — FR-DSP-03~048UT-R-10R단 단일 센서 오류 방지FR-NFR-03단일 센서 오류다중 조건 판단제동 수행P
48
5UT-M-380x100 송신 주기 50msIF-CAN-01Task_Can 동작 중g_can_tx100_count 1초간 관측약 20회/초 (50ms 주기)P1UT-LCD2-001RISK 0 정상 표시FR-DSP-03risk_level=0LCD2 1행 확인RISK:OK BRK:OFF' 표시P9UT-R-11R단 제동 명령FR-CTL-05R단 위험 판단 완료ACT 제동 명령 확인제동 수행P
49
6UT-M-390x200 메시지 송신 (DLC=4)IF-CAN-02risk=NORMAL, driver=ABSENT,
door=CLOSE, gear=P
can_send_main_clu_status() 호출Byte0=0, Byte1=0, Byte2=0, Byte3=0P2UT-LCD2-002RISK 1 경고 표시FR-DSP-03risk_level=1LCD2 1행 확인RISK:W1' 표시P10UT-R-12R단 제동 응답 500 msFR-NFR-02위험 판단 발생시간 측정500 ms 이내P
50
7UT-M-400x200 상태 인코딩 확인IF-CAN-02risk=D_BRAKE(4), driver=SEATED(1),
door=OPEN(1), gear=D(3)
각 Byte 값 확인Byte0=4, Byte1=1, Byte2=1, Byte3=3P3UT-LCD2-003RISK 3 Rollaway 표시FR-DSP-03risk_level=3LCD2 1행 확인RISK:W3' 표시P11UT-R-13R단 2 km/h 이상 즉시 자동 제동FR-CTL-05R단 + 속도 2 km/h 이상 감지이동 2 km/h 도달 즉시 제동 명령 → 서보 제동 확인2 km/h 이상 즉시 제동, 2초 이내 완전 정지P
51
8UT-M-410x200 송신 주기 100msIF-CAN-02Task_Can 동작 중g_can_tx200_count 1초간 관측약 10회/초 (100ms 주기)P4UT-LCD2-004RISK 6 Rollaway 제동 표시FR-DSP-03risk_level=6LCD2 1행 확인RISK:B3 BRK:ON' 표시P12UT-R-14R단 제동 유지FR-CTL-08제동 후 미복귀제동 유지 확인제동 유지P
52
9UT-M-420x300 수신 및 파싱IF-CAN-03ACT에서 0x300 전송
speed=1000, brake=HOLD,
accel=(10,-5,3)
can_process_rx_feedback() 후
g_can_last_* 변수 확인
speed_x100=1000, brake=1,
accel_x=10, accel_y=-5, accel_z=3
P5UT-LCD2-005BRK:OFF 표시FR-DSP-04brake_state=0LCD2 BRK 영역 확인BRK:OFF 표시P13UT-R-15R단 제동 해제FR-CTL-09착석+문닫힘해제 확인해제 수행P
53
10UT-M-430x300 수신 → g_sensor 반영IF-CAN-030x300 정상 수신can_apply_act_feedback() 후
g_sensor.speed_kmh 확인
speed_kmh=1000.0
act_feedback_alive=TRUE
P6UT-LCD2-006BRK:ON 표시 (강제 제동)FR-DSP-04brake_state=2LCD2 BRK 영역 확인BRK:ON 표시P14UT-R-16R단 경고 해제 500 msFR-CTL-03복귀 조건 충족해제 시간 측정500 ms 이내 해제P
54
11UT-M-440x300 타임아웃 (300ms)IF-CAN-03, FR-SAF-030x300 미수신 300ms 경과g_can_act_feedback_timeout 확인timeout=TRUE
speed=0, accel=0, alive=FALSE
P7UT-LCD2-007모터 상태 플래그 표시FR-DSP-04motor_mode=1LCD2 2행 M 영역 확인M:1' 정상 표시P15UT-R-17R단 비상등/브레이크등FR-CTL-10,11자동 제동 발생LED 동작 확인LED 정상 동작P
55
12UT-M-45CAN TX 재시도 (5회)IF-CAN-01CAN 버스 Busy 상태 유도can_send_message() 재시도 횟수 확인최대 5회 재시도 후 에러 카운트 증가
(g_can_tx_error_count++)
P8UT-LCD2-008서보 상태 플래그 표시FR-DSP-04servo_state=1LCD2 2행 S 영역 확인S:1' 정상 표시P16UT-R-18R단 로그 저장FR-LOG-02,03자동 제동 발생로그 저장 확인R단 제동 로그 저장P
56
13UT-M-46CAN Bus-Off 감지 및 복구IF-CAN-01, FR-SAF-05CAN Bus-Off 상태 유도g_can_bus_off_debug ≠ 0 확인
50ms 후 can_recover_busoff()
Bus-Off 복구 완료
g_can_busoff_recovery_count 증가
P9UT-LCD2-009LED 상태 플래그 표시FR-DSP-04led_hazard=1LCD2 2행 L 영역 확인L:1' 정상 표시P17UT-R-19R단 상세 표시FR-DSP-03,04상태 전환LCD 상태 표시 확인LCD 상태 일치P
57
14UT-M-47CAN RX 필터 (0x300만)IF-CAN-03ACT에서 0x100, 0x200, 0x300 전송RX FIFO0 수신 메시지 ID 확인0x300만 수신
(0x100/0x200 필터링)
P10UT-LCD2-010부저 상태 플래그 표시FR-DSP-04buzzer_mode=1LCD2 2행 B 영역 확인B:1' 정상 표시P▶ 4. N단 Rollaway 경고 판단
58
▶ 7. 위험 판단 상태 전이 단위 테스트 — FR-JDG-01~0711UT-LCD2-011복합 상태 표시FR-DSP-03~04risk=4, brake=2, 모든 플래그=1LCD2 전체 확인RISK:4 BRK:FRC / M:1 S:1 L:1 B:1 정확 표시P1UT-N-01N단 스위치 인식FR-DET-02기어=P→NN단 GPIO 확인N단 정확 인식P
59
1UT-M-48D/R단+도어열림 → WARN_LV1FR-JDG-01gear=D, door=OPEN,
driver=SEATED, prev=NORMAL
evaluate() 호출RISK_WARN_LV1 반환P▶ 6. UART 로그 전송 — FR-LOG-01~08, IF-COM-012UT-N-02N단 반영 시간 200 msFR-DET-02기어 전환전환 시간 측정200 ms 이내P
60
2UT-M-49D단+부재 → 즉시 D_BRAKEFR-JDG-02gear=D, driver=ABSENT
(시간 조건 없음)
evaluate() 호출RISK_D_BRAKE 반환 (즉시 전이)P1UT-UART-001정상 상태 UART 전송FR-LOG-01risk_level=0, 정상 상태UART 출력 데이터 로직분석기 확인risk_level=0 포함 상태 데이터 정상 전송P3UT-N-03도어 열림 감지FR-DET-03도어 열림도어 상태 확인열림 판정P
61
3UT-M-50R단+부재 → 즉시 R_BRAKEFR-JDG-03gear=R, driver=ABSENTevaluate() 호출RISK_R_BRAKE 반환 (즉시 전이)P2UT-UART-0021차 경고 UART 전송FR-LOG-01risk_level=1UART 출력 확인risk_level=1 데이터 정상 전송P4UT-N-04Rollaway 위험 판단FR-JDG-04기어=N, 도어=열림Rollaway 경고 판단Rollaway 위험 판단 수행P
62
4UT-M-51N단+도어열림 → ROLLAWAY_WARNFR-JDG-04gear=N, door=OPENevaluate() 호출RISK_ROLLAWAY_WARN 반환P3UT-UART-003Rollaway 경고 UART 전송FR-LOG-01risk_level=3UART 출력 확인risk_level=3 데이터 정상 전송P5UT-N-05Rollaway 경고 타이밍 200 msFR-JDG-04, FR-CTL-06N단 + 도어 열림경고 명령 시간 측정200 ms 이내 경고P
63
5UT-M-52N단+이동+부재 → ROLLAWAY_BRAKEFR-JDG-05gear=N, motion=MOVING,
driver=ABSENT
evaluate() 호출RISK_ROLLAWAY_BRAKE 반환P4UT-UART-004제동 상태 UART 전송FR-LOG-02risk=4, brake_state=2UART 출력 확인risk=4, brake=2 정상 전송P6UT-N-06N단 도어 닫힘 → 경고 해제FR-JDG-04N단 + 도어 닫힘경고 해제 확인경고 조건 해제P
64
6UT-M-53N단+이동+착석 → ROLLAWAY_BRAKE 아님FR-JDG-05gear=N, motion=MOVING,
driver=SEATED
evaluate() 호출ROLLAWAY_BRAKE 아님
(부재 조건 미충족)
P5UT-UART-005복합 상태 UART 전송FR-LOG-01~06gear=3, speed=50, driver=1, door=0복합 데이터 UART 전송 확인모든 파라미터 올바르게 인코딩 전송P7UT-N-07N단 착석 상태 문 열림 — 제동 불가FR-SAF-03N단, 착석, 문열림SAF-03 로직 확인1차 경고만, 자동 제동 금지P
65
7UT-M-54WARN_LV1 → 도어2초 → WARN_LV2FR-JDG-06prev=WARN_LV1, door=OPEN,
door_open_ms=2000
evaluate() 호출RISK_WARN_LV2 반환P6UT-UART-006UART 전송 주기 확인FR-LOG-01시스템 정상 동작 중오실로스코프로 전송 주기 측정설정 주기(100 ms)에 맞게 전송P8UT-N-08N단 착석 유지 자동 해제FR-SAF-03N단, 문열림, 착석 유지자동 해제 타이머 확인경고 자동 해제P
66
8UT-M-55WARN_LV1 → 도어1.9초 → 유지FR-JDG-06prev=WARN_LV1, door=OPEN,
door_open_ms=1900
evaluate() 호출RISK_WARN_LV1 유지P7UT-UART-007risk 변경 즉시 반영FR-LOG-01risk=0→4 변경변경 후 다음 UART 프레임 확인변경된 값 다음 전송 주기에 즉시 반영P▶ 5. N단 이동 감지 및 Rollaway 제동
67
9UT-M-56D_BRAKE 자기 전이 (탈출 불가)FR-JDG-07prev=D_BRAKE, gear=D, driver=ABSENTevaluate() 호출RISK_D_BRAKE 유지
(자기 반환)
P8UT-UART-008115200 bps 통신 속도FR-LOG-11UART 포트 설정 확인bps 설정값 및 실제 전송 속도 측정115200 bps 이상 설정 및 동작P1UT-N-09N단 차량 이동 2 km/h 기준 판정FR-DET-041.5/ 2.0 / 2.5 km/h 속도속도 km/h 값 확인2.0 km/h 이상 시 Rollaway 이동 판정P
68
10UT-M-57ROLLAWAY_BRAKE 자기 전이FR-JDG-07prev=ROLLAWAY_BRAKEevaluate() 호출RISK_ROLLAWAY_BRAKE 유지P▶ 7. CAN 메시지 수신 및 파싱 — MAIN_CLU_STATUS, ACT_FEEDBACK2UT-N-10인코더 기반 이동 감지FR-DET-04바퀴 회전 발생인코더 값 확인이동 중 판정P
69
11UT-M-58derive_motion (속도 기반)FR-DET-04speed_kmh=1.0, alive=TRUEderive_motion() 호출MOTION_MOVING
(≥1.0 km/h)
P1UT-CAN-001MAIN→CLU risk_level 수신통신 아키텍처MAIN CAN에서 risk_level=3 전송CAN 수신 후 변수 확인risk_level=3 정상 파싱P3UT-N-11가속도 기반 이동 감지FR-DET-04미세 이동 발생가속도 값 확인이동 중 판정 가능P
70
12UT-M-59derive_motion (가속도 기반)FR-DET-04speed=0, accel_x=2, alive=TRUEderive_motion() 호출MOTION_MOVING
(|accel_x| ≥ 2)
P2UT-CAN-002MAIN→CLU driver_present 수신통신 아키텍처MAIN CAN driver_present=1CAN 수신 후 변수 확인driver_present=1 정상 파싱P4UT-N-12센서 불일치 처리FR-NFR-03인코더/가속도 불일치다중 조건 판단제동 보수적 억제N/A
71
13UT-M-60derive_motion (alive=FALSE)FR-DET-04, FR-SAF-03act_feedback_alive=FALSEderive_motion() 호출MOTION_STOPPED
(피드백 없음 → 정지 가정)
P2UT-CAN-003MAIN→CLU door_state 수신통신 아키텍처MAIN CAN door_state=1CAN 수신 후 변수 확인door_state=1 정상 파싱P5UT-N-13Rollaway 발생 판단 (N단 2 km/h 기준)FR-JDG-05N단 + 속도 2.0 km/h 이상Rollaway 발생 판단Rollaway 발생 판단 수행 → 즉시 제동P
72
▶ 8. 제어 명령 생성 단위 테스트 — FR-CTL-01~094UT-CAN-004MAIN→CLU gear_state P 수신통신 아키텍처MAIN CAN gear_state=0CAN 수신 후 변수 확인gear_state=0(P) 정상 파싱P6UT-N-14Rollaway 판단 시간 200 msFR-JDG-05N단 이동 시작판단~제동 흐름 측정200 ms 이내 판단P
73
1UT-M-61WARN_LV1 → brake=RELEASEFR-CTL-01state=WARN_LV1select_brake_cmd() 호출BRAKE_CMD_RELEASE
(경고 상태 = 미제동)
P5UT-CAN-005MAIN→CLU gear_state D 수신통신 아키텍처MAIN CAN gear_state=3CAN 수신 후 변수 확인gear_state=3(D) 정상 파싱P7UT-N-15Rollaway 제동 응답 100 msFR-NFR-02발생 판단 완료제동 명령 시간 측정100 ms 이내 제동 명령P
74
2UT-M-62D_BRAKE → brake=FORCE (초기)FR-CTL-04state=D_BRAKE,
ACT brake=RELEASE
select_brake_cmd() 호출BRAKE_CMD_FORCE
(ACT 미제동 → FORCE)
P6UT-CAN-006ACT→CLU speed 수신 (little-endian)통신 아키텍처ACT CAN speed=50 LE 인코딩CAN 수신 후 speed 확인speed=50 정상 파싱P8UT-N-16N단 Rollaway 7 km/h 이상 즉시 제동FR-CTL-071.5/ 2.0 / 2.5 km/h 속도속도 km/h 값 확인2 km/h 이상 즉시 제동, 2초 이내 완전 정지P
75
3UT-M-63D_BRAKE → brake=HOLD (유지)FR-CTL-04state=D_BRAKE,
ACT brake=HOLD
select_brake_cmd() 호출BRAKE_CMD_HOLD
(ACT 제동중 → HOLD)
P7UT-CAN-007ACT→CLU brake_state 수신통신 아키텍처ACT CAN brake_state=2CAN 수신 후 확인brake_state=2(강제 제동) 정상 파싱P9UT-N-17Rollaway 제동 유지FR-CTL-08제동 후 미복귀제동 유지 확인제동 유지P
76
4UT-M-64ROLLAWAY_BRAKE → FORCE→HOLDFR-CTL-07state=ROLLAWAY_BRAKEACT 피드백에 따른 전환 확인FORCE(초기) → HOLD(ACT 응답)P8UT-CAN-008CAN 수신 누락 처리통신 Fail-safeCAN 300 ms 이상 미수신타임아웃 처리 확인LCD '통신 끊김' 표시 + 비상등 경고 점멸P10UT-N-18Rollaway 제동 해제FR-CTL-09착석 + 도어 닫힘해제 확인제동 해제P
77
5UT-M-65제동해제 시 기어 P 자동전환FR-CTL-09, FR-SAF-04brake FORCE→RELEASE 전환 시점shiftToParkOnRelease 로직
can_apply_gear_override() 확인
gear override 활성
CAN 기어=P(0) 고정
P9UT-CAN-009CAN 최대값 파싱 (risk=6)통신 아키텍처risk_level=6 전송최대값 수신 후 변수 확인risk_level=6 정상 저장, 오버플로우 없음P11UT-N-19일부 조건 미충족 안내FR-CTL-09문만 닫힘, 착석 없음LCD 안내 확인LCD 문구 표시P
78
6UT-M-66gear override 물리 기어 해제FR-SAF-04override 활성 중
물리 기어 D→R 전환
sensor_driver.c
gear_ok 변경 감지
g_gear_override_active=FALSE
(물리 전환으로 해제)
P12UT-N-20Rollaway 외부 경고 LEDFR-CTL-10,11Rollaway 제동 발생LED 동작 확인LED 점멸, 브레이크등 점등P
79
7UT-M-670x100 자동제동 중 FORCE 유지FR-CTL-08autoBrakeCommand=TRUE,
command.brake_cmd=HOLD
can_send_main_act_ctrl() 내부
brakeCmd 강제 확인
brakeCmd=FORCE
(HOLD→FORCE 오버라이드)
P13UT-N-21Rollaway 경고 로그FR-LOG-01N단 문열림 경고경고 로그 저장 확인경고 종류 저장P
80
▶ 9. 정상 운전 보호 단위 테스트 — FR-SAF-01~0514UT-N-22Rollaway 제동 로그FR-LOG-02Rollaway 자동 제동제동 로그 확인제동 종류 저장P
81
1UT-M-68P단 → NORMAL 복귀 (비제동)FR-SAF-01gear=P, prev=WARN_LV2evaluate() 호출RISK_NORMAL 반환P15UT-N-23제동 당시 상태 로그FR-LOG-03Rollaway 발생 시점로그 내용 확인상세 상태 저장P
82
2UT-M-69P단 → D_BRAKE에서 탈출 불가FR-SAF-01gear=P, prev=D_BRAKEevaluate() 호출D_BRAKE 유지
(is_auto_brake_state=TRUE)
P16UT-N-24제동 해제 로그FR-LOG-07해제 수행해제 로그 확인시각/사유 저장P
83
3UT-M-70P단 → R_BRAKE에서 탈출 불가FR-SAF-01gear=P, prev=R_BRAKEevaluate() 호출R_BRAKE 유지P17UT-N-25지속 시간 로그FR-LOG-08제동 후 해제지속 시간 로그 확인지속 시간 저장P
84
4UT-M-71착석+도어닫힘 → NORMAL (비제동)FR-SAF-02driver=SEATED, door=CLOSE,
prev=WARN_LV2
evaluate() 호출RISK_NORMAL 반환P▶ 6. N단 표시 및 정상 운전 보호
85
5UT-M-72착석+도어닫힘 → NORMAL (D_BRAKE)FR-SAF-02driver=SEATED, door=CLOSE,
prev=D_BRAKE
evaluate() 호출RISK_NORMAL 반환
(자동제동에서도 복귀)
P1UT-N-26N단 LCD 표시FR-DSP-01N단 전환LCD N 표시 확인N 표시P
86
6UT-M-73착석+도어닫힘 → NORMAL (ROLLAWAY)FR-SAF-02driver=SEATED, door=CLOSE,
prev=ROLLAWAY_BRAKE
evaluate() 호출RISK_NORMAL 반환P2UT-N-27Rollaway 경고 단계 표시FR-DSP-03경고/제동 발생상태 표시 확인상태 일치P
87
7UT-M-74착석만 (도어 열림) → 미복귀FR-SAF-02driver=SEATED, door=OPEN,
prev=D_BRAKE
evaluate() 호출D_BRAKE 유지
(두 조건 모두 필요)
P3UT-N-28Rollaway 제동 상태 표시FR-DSP-04상태 변화LCD 표시 확인정확 표시P
88
8UT-M-75ACT 타임아웃 fail-safeFR-SAF-030x300 미수신 300mscan_apply_act_timeout() 후
g_sensor 확인
speed=0, accel=0,
alive=FALSE
N/A4UT-N-29운전자 상태 표시FR-DSP-05센서 조합 변화운전자 상태 표시 확인정확 표시P
89
9UT-M-76Bus-Off 복구 후 필터 유지FR-SAF-05Bus-Off 복구 완료can_recover_busoff() 후
0x300 수신 가능 여부 확인
필터 재설정 → 0x300 수신 정상N/A5UT-N-30정상 착석+문닫힘 비개입FR-SAF-02착석+도어 닫힘 N단 유지개입 확인개입 없음P
90
▶ 10. FreeRTOS 태스크/Mutex 단위 테스트 — IF-SW-016UT-N-31N단 문열림 후 재닫힘 해제FR-JDG-04경고 중 도어 닫힘상태 정상화 확인경고 해제P
91
1UT-M-77xSensorMutex 보호 확인IF-SW-01Task_Sensor, Task_Judge, Task_Can 동시 동작g_sensor 읽기/쓰기 시
Mutex 획득 확인
Mutex 획득 실패 시
Snapshot 유지 (데이터 손상 없음)
P
92
2UT-M-78xCommandMutex 보호 확인IF-SW-01Task_Judge, Task_Can 동시 동작g_command 읽기/쓰기 시
Mutex 획득 확인
Mutex 보호 하 정상 갱신P
93
3UT-M-79Task_Sensor 주기 10msIF-SW-01Task_Sensor 동작 중vTaskDelayUntil 주기 측정10ms ± 1ms 주기 유지P
94
4UT-M-80Task_Judge 주기 50msIF-SW-01Task_Judge 동작 중vTaskDelayUntil 주기 측정50ms ± 5ms 주기 유지P
95
5UT-M-81Task_Can 주기 10msIF-SW-01Task_Can 동작 중vTaskDelayUntil 주기 측정10ms ± 1ms 주기 유지P
96
6UT-M-82Task 우선순위 순서IF-SW-01전체 태스크 동작 중우선순위 확인:
Can(4) > Sensor=Judge(3) > ToF(2)
CAN 최우선 처리 확인P
97
7UT-M-83스택 오버플로 훅IF-SW-01스택 사용량 초과 유도vApplicationStackOverflowHook 실행 확인P00.6 LED 토글 (무한루프)P