/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

	【機能概要】	: 共有メモリログレベル参照・更新プログラム
					  共有メモリアクセスSRの実行流のログレベルについて参照・更新
					  を行う。
					  本コマンドによってログレベルが更新されると、共有メモリアクセス
					  SRの出力ログは直ちに変更される

	【作成日】		: 2021.04.23

	【呼出形式】	: GG_SHM1009
							[ ログレベル ] 			# ログレベル（0以上）を設定する
	【戻り値】		: int							# 0 : 正常終了、-1 : 異常終了

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */

#include "GG_SHMCOM.h"

CLSSharedMemory shmAcPtMng;

int main(
	int argc,
	char* argv[])
{

	/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
							パラメータチェック
	_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */

	if ( argc == 1 || argc == 2 ) {
	} else {
		printf ( "Usage : GG_SHM1009 [ ログレベル(0...9) ]\n" ) ;
		printf ( "        入力パラメータエラー\n" ) ;
		exit (-1);
	}

	/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
							共有メモリポインタ取得 ( 管理部 )
	_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */

	key_t keyShmMainMem   = getEnvLong("GG_SHM1001_MEMORYID",GG_SHM1001_MEMORYID);

	char *c_ShmMngPtr = (char *)shmAcPtMng.OpenSheredMemory( keyShmMainMem );
	if (c_ShmMngPtr == NULL) { 
		printf ( "Usage : GG_SHM1009 [ ログレベル(0...9) ]\n" ) ;
		printf ( "        共有メモリ取得エラー\n" ) ;
		exit (-1);
	}

	if ( argc == 1 ) {
		// ログレベル参照
		long LogLevel ;
		memcpy ( (void *)&LogLevel , (void *)c_ShmMngPtr , sizeof(LogLevel) ) ;
		printf ( "GG_SHM1009 共有メモリ検索処理のログレベルは [%d] に設定しています\n" , (int)LogLevel ) ;
	} else if ( argc == 2 ) {
		// ログレベル更新（数値のみ）
		long LogLevel = atol ( argv[1] ) ;
		memcpy ( (void *)c_ShmMngPtr , (void *)&LogLevel , sizeof(LogLevel) ) ;
		printf ( "GG_SHM1009 共有メモリ検索処理のログレベルを [%d] に変更しました\n" , (int)LogLevel ) ;
	}
	exit (0);

}
