/******************************************************************************* * @file led_control.h * @brief LED 직접 제어 드라이버 (BSP 미사용) * @date 2026-03-30 * * 녹색(P0.12) + 주황(P0.29) 2색 LED를 app_timer 기반으로 제어 * 각 상태별 on/off 시간, 색상, 반복 패턴을 테이블로 관리 ******************************************************************************/ #ifndef LED_CONTROL_H__ #define LED_CONTROL_H__ #include #include /*============================================================================== * LED 핀 정의 *============================================================================*/ #define LED_PIN_GREEN NRF_GPIO_PIN_MAP(0, 12) /* 녹색 LED */ #define LED_PIN_ORANGE NRF_GPIO_PIN_MAP(0, 29) /* 주황 LED */ #define LED_ACTIVE_LOW 1 /* 1 = Active Low (GPIO LOW에서 LED 켜짐) */ /*============================================================================== * LED 상태 열거형 *============================================================================*/ typedef enum { LED_STATE_OFF = 0, /* 모든 LED 소등 */ LED_STATE_POWER_ON, /* 1: 전원 ON - 초록 소등 → 녹색 점등 2초 */ LED_STATE_POWER_OFF, /* 2: 전원 OFF - 초록 점등 2초 → 소등 */ LED_STATE_ADVERTISING, /* 3: 블루투스 스캐닝 - 초록 점멸 1초 간격(반복) */ LED_STATE_DETACH_WARNING, /* 4: 정상 작동중(미부착 시) - 초록 점등 1초 / 소등 3초 (반복) */ LED_STATE_ALIGN_SEARCHING, /* 5: 정렬모드(탐지중) - 주황 점멸 1초 간격 (반복) */ LED_STATE_ALIGN_COMPLETE, /* 6: 정렬모드(탐지 완료) - 초록 점등 3초 / 소등 1초 */ LED_STATE_ERROR, /* 7: 오류 발생 - 주황 3Hz 깜빡 3회 / 꺼짐 1초 (반복) */ LED_STATE_COUNT /* 배열 크기 */ } led_state_t; /*============================================================================== * 공개 함수 *============================================================================*/ /** @brief LED GPIO 초기화 + 타이머 생성 - main()에서 1회 호출 */ void led_init(void); /** @brief LED 상태 변경 - 이전 패턴을 즉시 중단하고 새 패턴 시작 */ void led_set_state(led_state_t state); /** @brief 현재 LED 상태 조회 */ led_state_t led_get_state(void); #endif /* LED_CONTROL_H__ */