/** 
 * @brief           USBH HID log Header
 * @author          AXELL CORPORATION
 * @description	    USBH HID log Header
 * @note            none
 * @history         2017_02_22	初版
 * @history         2017_10_26  Ver2.0
*/
/* DOM-IGNORE-BEGIN */
/*
 * This program was created by AXELL CORPORATION.
 * Copyright (C) 2017 AXELL CORPORATION, all rights reserved.
 */


#ifndef __USB_HID_LOG_H__
#define __USB_HID_LOG_H__
/* DOM-IGNORE-END */

/*****************************************************************************/
/*     include files                                                         */
/*****************************************************************************/
#include "uhs_type.h"

/*****************************************************************************/
/*     define value                                                          */
/*****************************************************************************/

/*****************************************************************************/
/*     enum data                                                             */
/*****************************************************************************/
/* ログ値の定義 */
typedef enum {
	USBHID_LOG_SUCCESS,							/* 成功 */
	USBHID_LOG_BASE = 0x200,					/* エラーコードの基準値 */
	USBHID_LOG_HALT_PIPE,						/* PipeがHALTしている */
	USBHID_LOG_ALREADY_INIT,					/* ドライバが既に初期化済 */
	USBHID_LOG_NOT_INIT,						/* ドライバ未初期化 */
	USBHID_LOG_NO_HID,							/* HIDデバイス未接続 */
	USBHID_LOG_NOT_USE,							/* HIDデバイス未初期化 */
	USBHID_LOG_NO_SUPPORT,						/* 非対応のHIDデバイスが接続されている */
	USBHID_LOG_ALREADY_REGIST,					/* CallBack 登録処理が既に実施済み */
    USBHID_LOG_FAILED_BOOT_INIT,				/* Boot Protocol 層の初期化に失敗 */
    USBHID_LOG_FAILED_BOOT_EXIT,				/* Boot Protocol 層の終了処理に失敗 */
    USBHID_LOG_FAILED_CRE_HIDD,					/* HIDClassDriverの作成に失敗 */
    USBHID_LOG_FAILED_DEL_HIDD,					/* HIDClassDriverの削除に失敗 */
    USBHID_LOG_FAILED_CTRL,						/* コントロール転送に失敗 */
    USBHID_LOG_FAILED_INTERRUPT,				/* インターラプト転送に失敗 */
    USBHID_LOG_FAILED_STDREQ,					/* 標準リクエストに失敗 */
    USBHID_LOG_FAILED_CLSREQ,					/* クラスリクエストに失敗 */
	
	USBHID_LOG_FAILED_CRE_HDD,					/* HidDeviceの作成に失敗 */
	USBHID_LOG_FAILED_ADD_HDD,					/* HidDeviceの追加に失敗 */
    USBHID_LOG_FAILED_REMOVE_HDD,				/* HidDeviceの開放に失敗 */
	USBHID_LOG_FAILED_CRE_CPIPE,				/* ControlPIPEの作成に失敗 */
	USBHID_LOG_FAILED_OPEN_CPIPE,				/* ControlPIPEのOpenに失敗 */
	USBHID_LOG_FAILED_CRE_IPIPE,				/* InterruptPIPEの作成に失敗 */
	USBHID_LOG_FAILED_OPEN_IPIPE,				/* InterruptPIPEのOpenに失敗 */
    USBHID_LOG_INTERNAL_FAILED_CORE,			/* コアからエラーが報告された */
    USBHID_LOG_INTERNAL_FAILED_HID,				/* ドライバ内部エラーが発生した */
    USBHID_LOG_SYS_SYSTEM_ERROR,				/* システムエラーが発生した */
    USBHID_LOG_SYS_OUT_OF_RESOURCE,				/* システムリソース(セマフォ、フラグ、メモリ)のアクセスでエラーが発生した */
    USBHID_LOG_SYS_PARAM_ERROR,					/* パラメータ指定に誤りがあった */
	USBHID_LOG_ALREADY_START_INTIN,				/* Interrupt IN 要求が既に発行済み */
	USBHID_LOG_ALREADY_STOP_INTIN				/* Interrupt IN 要求が既に停止済み */
} USB_HID_LOG;

/* 警告コード */
typedef enum {
	USBHID_WARNCODE_BASE = 0x0400,
	USBHID_WARNING_OVERCONN
} USB_HID_WARNING;

/* Milestone 値の定義 */
typedef enum {
	USBHID_CHECKPOINT_BASE = 0x1000,
	USBHID_CHKPOINTS_API_INITIALIZE,			/* Usbh_Hid_Init APIがコールされた */
	USBHID_CHKPOINTS_API_INITIALIZE_FINISH,		/* Usbh_Hid_Init APIがコールされ、正常終了した */
	USBHID_CHKPOINTS_API_FINALIZE,				/* Usbh_Hid_Exit APIがコールされた */
	USBHID_CHKPOINTS_API_FINALIZE_FINISH,		/* Usbh_Hid_Exit APIがコールされ、正常終了した */
	USBHID_CHKPOINTS_API_REGIST,				/* Usbh_Hid_RegistCallBack APIがコールされた */
	USBHID_CHKPOINTS_API_REGIST_FINISH,			/* Usbh_Hid_RegistCallBack APIがコールされ、正常終了した */
	USBHID_CHKPOINTS_EVNT_ATTACH_DEVICE,		/* USB Host CoreからHIDデバイスの接続通知を受信した */
	USBHID_CHKPOINTS_EVNT_DETACH_DEVICE			/* USB Host CoreからHIDデバイスの切断通知を受信した */
} USB_HID_MILESTONE;

/*****************************************************************************/
/*     typedef                                                               */
/*****************************************************************************/

/*****************************************************************************/
/*     extern function                                                       */
/*****************************************************************************/
void Usbh_Hid_Log_ReportError(const char *pFunctionName, uhs_ubit32_t nLine, uhs_ubit16_t nError, uhs_ubit8_t *pMesg, uhs_ubit16_t u16Length);
void Usbh_Hid_Log_ReportWarning(const char *pFunctionName, uhs_ubit32_t nLine, uhs_ubit16_t nWarning, uhs_ubit8_t *pMesg, uhs_ubit16_t u16Length);
void Usbh_Hid_Log_ReportMilestone(uhs_ubit16_t u16CheckPointNum);
void Usbh_Hid_Log_ReportDummy(uhs_ubit16_t nError);

/*****************************************************************************/
/*     extern variable                                                       */
/*****************************************************************************/

/*****************************************************************************/
/*     define macro                                                          */
/*****************************************************************************/

/*****************************************************************************/
/*     const value                                                           */
/*****************************************************************************/

/*****************************************************************************/
/*     global variable                                                       */
/*****************************************************************************/


#endif /* __USB_HID_LOG_H__ */
