//------------------------------------------------------
// Status LED点滅
//------------------------------------------------------
// 引数:
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ
// uint16_t uint16_Time_ON : 点灯時間
// uint16_t uint16_Time_OFF : 消灯時間
// 戻り値:
// -1 : 処理中
// 0 : OK終了
// 1 : NG
//------------------------------------------------------
int16_t Blink_LED_Status(uint8_t *puint8_JobNum,
uint16_t uint16_Time_ON,
uint16_t uint16_Time_OFF)
{
static uint8_t STC_uint8_JobNum_Wait; // 時間待ちの処理番号
static uint32_t STC_uint32_tikstart; // 時間待ち開始時のカウント数
static uint32_t STC_uint32_Interval; // 待ち時間
int16_t int16_Return;
// Status LED再起動フラグチェック
if(GLB_int16_Restart_LED_Status == 1){
// Status LED再起動フラグONの場合
*puint8_JobNum = 0; // 処理番号を 0 にする。
GLB_int16_Restart_LED_Status = 0; // Status LED再起動フラグOFF
}
switch(*puint8_JobNum)
{
case 0:
// Status LED 初期化済みフラグ判定
if(GLB_int16_LED_Status_Init_Done != 1){
// Status LED が初期化済みでない場合
//------------------------------------------------
// Status LEDのGPIO初期化
//------------------------------------------------
Init_LED_Status();
GLB_int16_LED_Status_Init_Done = 1; // Status LED 初期化済み をセット
}
//------------------------------------------------
// Status LED点灯
//------------------------------------------------
LED_Status_ON();
STC_uint8_JobNum_Wait = 0; // 時間待ちの処理番号初期化
STC_uint32_Interval = (uint32_t)uint16_Time_ON; // 待ち時間
(*puint8_JobNum)++; // 処理番号をインクリメント : 次の処理番号に移行する。 : case 1:
int16_Return = -1; // 処理継続
break;
case 1:
//------------------------------------------------------
// 時間待ち : 単位 mSec
//------------------------------------------------------
// 戻り値が -1 以外になるまで、繰り返し呼び出してください。
//------------------------------------------------------
// 引数:
// uint8_t *puint8_JobNum : 処理番号が格納される変数のポインタ
// uint32_t *puint32_tikstart : 時間待ち開始時のカウント数
// uint32_t uint32_mSec : 待ち時間(mSec)
// 戻り値:
// -1 : 処理中 : 時間が経過していない。
// 0 : OK終了 : 時間が経過した。
// 1 : NG終了
//------------------------------------------------------
int16_Return = Wait_Interval(&STC_uint8_JobNum_Wait,
&STC_uint32_tikstart,
STC_uint32_Interval);
if(int16_Return == -1){
// 処理中 : 時間未経過
break; // 処理番号維持 : 処理継続 : case 1: をループ
}
//------------------------------------------------
// Status LED消灯
//------------------------------------------------
LED_Status_OFF();
STC_uint8_JobNum_Wait = 0; // 時間待ちの処理番号初期化
STC_uint32_Interval = (uint32_t)uint16_Time_OFF; // 待ち時間
(*puint8_JobNum)++; // 処理番号をインクリメント : 次の処理番号に移行する。 : case 2:
int16_Return = -1; // 処理継続
break;
case 2:
//------------------------------------------------------
// 時間待ち : 単位 mSec
//------------------------------------------------------
// 戻り値が -1 以外になるまで、繰り返し呼び出してください。
//------------------------------------------------------
// 引数:
// uint8_t *puint8_JobNum : 処理番号が格納される変数のポインタ
// uint32_t *puint32_tikstart : 時間待ち開始時のカウント数
// uint32_t uint32_mSec : 待ち時間(mSec)
// 戻り値:
// -1 : 処理中 : 時間が経過していない。
// 0 : OK終了 : 時間が経過した。
// 1 : NG終了
//------------------------------------------------------
int16_Return = Wait_Interval(&STC_uint8_JobNum_Wait,
&STC_uint32_tikstart,
STC_uint32_Interval);
if(int16_Return == -1){
// 処理中 : 時間未経過
break; // 処理番号維持 : 処理継続 : case 2: をループ
}
//------------------------------------------------
// Status LED点灯
//------------------------------------------------
LED_Status_ON();
STC_uint8_JobNum_Wait = 0; // 時間待ちの処理番号初期化
STC_uint32_Interval = (uint32_t)uint16_Time_ON; // 待ち時間
*puint8_JobNum = 1; // 処理番号 1 に移行する。: case 1:
int16_Return = -1; // 処理継続
break;
default:
*puint8_JobNum = 0; // 処理番号初期化
int16_Return = 1; // NG終了
break;
}
return(int16_Return);
}