/*
 * ta_log.h
 *  Created on: 10.27.2017
 *      Author: junyuan.zeng
 *  define logging utility for returning error message to NW
*/

#ifndef _TA_LOG_H
#define _TA_LOG_H

#ifdef USE_VS
#include "VS_TZ_debug.h"
#endif

#define TA_MAX_ERROR_STR_LEN		256

#if defined(ENABLE_TA_ERR_MSG)
	extern char g_err_descrp[];
	extern int g_err_recorded;
	#define STORE_TA_ERROR(format, ...)    \
		if (g_err_recorded == 0) {   \
			TZ_bzero(g_err_descrp, TA_MAX_ERROR_STR_LEN);	\
			snprintf(g_err_descrp, TA_MAX_ERROR_STR_LEN, format, __VA_ARGS__);	\
			g_err_recorded = 1;   \
		}	\
		TTY_LOG(format, __VA_ARGS__);

   #define COPY_TA_ERROR(resp_error_buffer)	\
		if (g_err_recorded && sizeof(resp_error_buffer) >=  TA_MAX_ERROR_STR_LEN) {	\
			memcpy(resp_error_buffer, g_err_descrp, TA_MAX_ERROR_STR_LEN); \
			memset(g_err_descrp, 0, TA_MAX_ERROR_STR_LEN);	\
			g_err_recorded = 0;	\
		};

#else
	#define STORE_TA_ERROR TTY_LOG
#endif

#endif
