アドレスの上限判定削除、

スキップ可能行判定の削除、
成否判定のポイント限定

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1666 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-06-20 02:18:23 +00:00
parent 604510ef67
commit 1319c59d23

View File

@ -173,7 +173,6 @@ static inline BOOL I2Ci_SendLast( u8 data )
BOOL MCU_WriteFirm(const unsigned char* hex) BOOL MCU_WriteFirm(const unsigned char* hex)
{ {
BOOL result = TRUE; BOOL result = TRUE;
BOOL temp;
if ( !hex ) if ( !hex )
{ {
@ -192,37 +191,28 @@ BOOL MCU_WriteFirm(const unsigned char* hex)
slowRate = SLOW_RATE_LONG; slowRate = SLOW_RATE_LONG;
// main phase // main phase
while ( hex[0] == ':' && ( hex[3] < '2' || (hex[3] == '2' && hex[4] < '4') )) // フォーマットが正しく0x2400以前のアドレスである場合に処理する while ( hex[0] == ':' ) // ':'から始まっている限りループする
{ {
// データ終端チェック (基本的にこの前で終了している) int isContinue = MI_CpuComp8( hex, ":00000001FF", 11); // データ終端チェック
if ( !MI_CpuComp8( hex, ":00000001FF", 11) )
{
break;
}
// 無視行チェック
if ( hex[1] == '1' && hex[2] == '0' && !MI_CpuComp8( &hex[9], "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 32 ) )
{
while ( *hex++ != '\n' )
{
// skip
}
continue;
}
// 最初の1文字 (':'のはず) // 最初の1文字 (':'のはず)
result &= I2Ci_SendMiddle( *hex++ ); result &= I2Ci_SendMiddle( *hex++ );
slowRate = SLOW_RATE_SHORT; slowRate = SLOW_RATE_SHORT;
// 通常出力 // 通常出力
temp = TRUE; /* 1回遅延させることで'\n'の結果を無視する */
do do
{ {
result &= temp; I2Ci_SendMiddle( *hex );
temp = I2Ci_SendMiddle( *hex );
} }
while ( *hex++ != '\n' ); while ( *hex++ != '\n' );
slowRate = SLOW_RATE_ENTER; slowRate = SLOW_RATE_ENTER;
if ( !isContinue ) // 最終行だった
{
break;
}
} }
// stop phase (only 2nd call) // stop phase (only 2nd call)