diff --git a/cr_generate_id.c b/cr_generate_id.c index 12d5f14..149cce6 100644 --- a/cr_generate_id.c +++ b/cr_generate_id.c @@ -133,14 +133,24 @@ static u64 generatingCount = 0; // 現在生成中のID(起動時からの通算 int cr_print_flag = 0; // generate_id関数のイニシャライズ -int cr_generate_id_initialize( void ) +int cr_generate_id_initialize( u8 id_buf[CR_ID_BUF_SIZE] ) { int ret_code = CR_GENID_SUCCESS; + // 生成カウンタの初期化 + generatingCount = 0; + #ifdef USE_HSM ret_code = hsm_initialize(); if ( ret_code != CR_GENID_SUCCESS ) { + CR_ERR_BUFFER *cr_err_buf = (CR_ERR_BUFFER *)id_buf; + memset( cr_err_buf, 0, sizeof( CR_ERR_BUFFER ) ); + cr_err_buf->errorCode = ret_code; + GetErrorInfo( cr_err_buf->callStack, &cr_err_buf->recordSize ); +#ifdef DEBUG_PRINT + printf( "CALL_STACK : %s\n", cr_err_buf->callStack ); +#endif return 0; } #endif diff --git a/cr_generate_id.h b/cr_generate_id.h index f429e00..5014479 100644 --- a/cr_generate_id.h +++ b/cr_generate_id.h @@ -201,7 +201,7 @@ typedef unsigned long long u64; #define CR_ID1_MASK 0x00000003FFFFFFFFll // 34bit #define CR_ID2_MASK 0xFFFFFFFFFFFFFFFFll // 64bit -extern int cr_generate_id_initialize( void ); +extern int cr_generate_id_initialize( u8 id[CR_ID_BUF_SIZE] ); extern int cr_generate_id( u32 serial[CR_NUM_OF_SERIAL], u8 id[CR_ID_BUF_SIZE], u8 bondingOption ); extern int cr_generate_id_finalize( void ); diff --git a/main.c b/main.c index c43ea1d..9cfe02f 100644 --- a/main.c +++ b/main.c @@ -201,9 +201,10 @@ int main(int ac, char *argv[]) counter2 = 0x0000000000000000ll; // cr_generate_id を使用する前に呼び出す - if ( !cr_generate_id_initialize() ) + ret_code = cr_generate_id_initialize( id ); + if ( ret_code != CR_GENID_INITIALIZE_OK ) { - printf( "error : cr_generate_id_initialize()\n" ); + printf( "error(%d) : cr_generate_id_initialize\n", ret_code ); return 0; // error }