/*******************************************************************************
 * @file	power_control.h
 * @author	CandyPops Co.
 * @version	V1.0.0
 * @date	2022-09-05
 * @brief
 *******************************************************************************
 *
 * [헤더 개요]
 * 디바이스 전원 시퀀스 관리 모듈의 공용 인터페이스 헤더.
 *
 * [주요 함수 요약]
 *   power_gpio_init()      : 전원 관련 GPIO 초기화 (EEP_WP 핀)
 *   eeprom_control()       : EEPROM 쓰기 보호 ON/OFF (레거시)
 *   device_activated()     : 전원 켜기 → power_loop 상태머신 시작
 *   device_sleep_mode()    : 슬립 모드 진입 (EEPROM OFF, 처리 중단)
 *   device_reactivated()   : 슬립 복귀 → I2C 재초기화 후 전원 시퀀스 재시작
 *   power_loop()           : 20ms 간격 전원 시퀀스 상태머신 콜백
 *   power_timer_start/stop : 전원 시퀀스 타이머 제어
 *   power_timer_init()     : 전원 시퀀스 타이머 초기화 (앱 시작 시 1회)
 *
 ******************************************************************************/

#ifndef _POWER_CONTROL_H_
#define _POWER_CONTROL_H_

#include "main.h"

/** @brief 전원 관련 GPIO 핀 초기화 (EEP_WP 출력 설정) */
void power_gpio_init(void);

/** @brief EEPROM 쓰기 보호 제어 (ON=허용, OFF=보호) - 레거시 */
void eeprom_control(on_off_cont_t eeprom_st);

/** @brief 디바이스 슬립 모드 진입 (EEPROM OFF, processing 해제) */
int device_sleep_mode(void);

/** @brief 디바이스 전원 켜기 (전원 시퀀스 상태머신 시작) */
int device_activated(void);

/** @brief 디바이스 재활성화 (슬립 복귀 시 I2C 재초기화 후 시퀀스 재시작) */
int device_reactivated(void);

/** @brief 전원 시퀀스 상태머신 (20ms 타이머 콜백, Step 0→1→2) */
void power_loop(void * p_context);	/* For x ms */

/** @brief 전원 시퀀스 타이머 시작 (20ms 싱글샷) */
void power_timer_start(void);

/** @brief 전원 시퀀스 타이머 정지 */
void power_timer_stop(void);;

/** @brief 전원 시퀀스 타이머 초기화 (앱 시작 시 1회 호출) */
void power_timer_init(void);
#endif //_POWER_CONTROL_H_

