53 lines
2.5 KiB
C
53 lines
2.5 KiB
C
/*******************************************************************************
|
|
* @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 <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
/*==============================================================================
|
|
* 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__ */
|