/* system.c　システム状態制御モジュール */

/* インタフェースの取り込み */
#include "switch.h"					/* スイッチ入力検知モジュール */
#include "led.h"					/* LED表示制御モジュール */
#include "system.h"					/* システム状態制御モジュール */

/* システム状態制御処理 */	
/* 入力	flag_switch_on:スイッチ押下確定情報 */
/* 出力	led_output:LED表示状態指示 */
void system_control(void){
	/* システム状態（消灯、点灯、点滅） */
	enum SYSTEMSTATE {STATE_OFF = 0U,STATE_ON,STATE_BLINK};
	static enum SYSTEMSTATE system_state = STATE_OFF;
	switch(system_state){				/* システム状態 */
		case STATE_OFF:				/* 消灯状態の場合 */
			if(flag_switch_on == 1U){	/* スイッチ押下 */
				flag_switch_on = 0U;
				system_state = STATE_ON;/* 点灯状態へ */
			}
			led_output = LED_OFF;		/* LED消灯指示 */
			break;
		case STATE_ON:				/* 点灯状態の場合 */
			if(flag_switch_on == 1U){	/* スイッチ押下 */
				flag_switch_on = 0U;
				system_state = STATE_BLINK;/* 点滅状態へ */
			}
			led_output = LED_ON;		/* LED点灯指示 */
			break;
		case STATE_BLINK:			/* 点滅状態の場合 */
			if(flag_switch_on == 1U){	/* スイッチ押下 */
				flag_switch_on = 0U;
				system_state = STATE_OFF;/* 消灯状態へ */
			}
			led_output = LED_BLINK;		/* LED点滅指示 */
			break;
	}
}
