/**
 * @brief           EQS Primitive Header
 * @author          AXELL CORPORATION
 * @description     EQS Primitive提供ヘッダ。<p>EQS Primitive使用時にincludeして下さい。
 * @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 __EQSPRM_H__
#define __EQSPRM_H__
/* DOM-IGNORE-END */

#ifdef __cplusplus
extern "C" {
#endif

#define	AG903_EQS_DIVIDE_MIN	(2)					/** 分周比下限 */
#define	AG903_EQS_AREA_MAX		(4)					/** EQSエリア数 */
#define AG903_EQS_AREA_BASE		(0x60000000UL)		/** EQSエリアベースアドレス */
#define	AG903_EQS_AREA_SIZ		(16 * 1024 * 1024)	/** EQSエリアサイズ */

/** EQS設定パラメータ */
typedef struct _AG903_EQSPrmFormat {
	uint8_t	command;		/** コマンド */
	uint8_t	wait;			/** ウェイトサイクル */
	uint8_t	data_len;		/** データ長 (Write時) */
	uint8_t	addr_len;		/** アドレス長 */
	uint8_t	flow;			/** フロー制御有無 */
	uint8_t	reserve;		/** 予約 */
} AG903_EQSPrmFormat;

/*************************************************************************************
 * プロトタイプ定義
 ************************************************************************************/
void AG903_EQSPrmSetMOD(uint8_t mode);
void AG903_EQSPrmGetMOD(uint8_t* mode);
void AG903_EQSPrmSetDivide(uint16_t div);
void AG903_EQSPrmGetDivide(uint16_t* div);
void AG903_EQSPrmSetWaitCycle(uint16_t count);
void AG903_EQSPrmGetWaitCycle(uint16_t* count);
void AG903_EQSPrmGetAddress(uint8_t area, uint32_t* addr);
void AG903_EQSPrmSetRdFORMAT(uint8_t ch, AG903_EQSPrmFormat* format);
void AG903_EQSPrmSetWrFORMAT(uint8_t ch, AG903_EQSPrmFormat* format);


#ifdef __cplusplus
}
#endif

#endif/* __EQSPRM_H__ */
