/**
 * Copyright (C) 2009 Samsung Electronics Co., Ltd. All rights reserved.
 *
 * Mobile Communication Division,
 * Digital Media & Communications Business, Samsung Electronics Co., Ltd.
 *
 * This software and its documentation are confidential and proprietary
 * information of Samsung Electronics Co., Ltd.  No part of the software and
 * documents may be copied, reproduced, transmitted, translated, or reduced to
 * any electronic medium or machine-readable form without the prior written
 * consent of Samsung Electronics.
 *
 * Samsung Electronics makes no representations with respect to the contents,
 * and assumes no responsibility for any errors that might appear in the
 * software and documents. This publication and the contents hereof are subject
 * to change without notice.
 */

#ifndef ET9IMU_UTIL_H
#define ET9IMU_UTIL_H

#include "com_xt9_Xt9core.h"
#include "et9api.h"
#include "et9cmmUtil.h"

/*----------------------------------------------------------------------------
 *  Callback Functions
 *----------------------------------------------------------------------------*/
ET9STATUS ET9FARCALL ET9_ConvertSymb(
    void    *pConvertInfo,                  /**< pointer to an integration layer object */
    ET9SYMB *psConvertSymb                  /**< converting symbol (in & out) */
);

ET9STATUS ET9FARCALL ET9_BufFreeRead(
    void          *pBufferReadInfo,                 /**< pointer to an integration layer object */
    ET9U16         wNumberOfReadSymbols,            /**< specifies the number of symbols to be read */
    ET9SYMB       *psDest,                          /**< buffer for the data */
    ET9U16        *pwSymbolsRead                    /**< pointer to the variable that receives the number of symbols read */
);

/*----------------------------------------------------------------------------
 * Get Functions
 *----------------------------------------------------------------------------*/
#ifdef ET9_FULL_INTERFACE
ET9STATUS ET9FARCALL ET9Word_GetWordSymbInfo       (JNIEnv *env, jclass jcls, ET9WordSymbInfo        *WordSymbInfo,        jobject jobj);
ET9STATUS ET9FARCALL ET9Word_GetSymbsInfo          (JNIEnv *env, jclass jcls, ET9SymbInfo            *SymbsInfo,           jobject jobj);
ET9STATUS ET9FARCALL ET9Word_GetDataPerBaseSym     (JNIEnv *env, jclass jcls, ET9DataPerBaseSym      *DataPerBaseSym,      jobject jobj);
ET9STATUS ET9FARCALL ET9Word_GetWordSymbInfoPrivate(JNIEnv *env, jclass jcls, ET9WordSymbInfoPrivate *WordSymbInfoPrivate, jobject jobj);
ET9STATUS ET9FARCALL ET9Word_GetSavedInputWords    (JNIEnv *env, jclass jcls, ET9SavedInputWords     *SavedInputWords,     jobject jobj);
ET9STATUS ET9FARCALL ET9Word_GetSavedInputWord     (JNIEnv *env, jclass jcls, ET9SavedInputWord      *pSavedWords,         jobject jobj);
ET9STATUS ET9FARCALL ET9Word_GetSavedInputSymb     (JNIEnv *env, jclass jcls, ET9SavedInputSymb      *pInputs,             jobject jobj);
#endif // ET9_FULL_INTERFACE
#ifdef ET9_LITE_INTERFACE
ET9STATUS ET9FARCALL ET9Word_GetSimpleWords        (JNIEnv *env, jclass jcls, ET9SimpleWord          *SimpleWord,          jobject jobj);
#endif // ET9_LITE_INTERFACE

/*----------------------------------------------------------------------------
 * Set Functions
 *----------------------------------------------------------------------------*/
#ifdef ET9_FULL_INTERFACE
ET9STATUS ET9FARCALL ET9Word_SetWordSymbInfo       (JNIEnv *env, jclass jcls, jobject *jobj, ET9WordSymbInfo WordSymbInfo);
#endif // ET9_FULL_INTERFACE
#ifdef ET9_LITE_INTERFACE
ET9STATUS ET9FARCALL ET9Word_SetSimpleWords        (JNIEnv *env, jclass jcls, jobject *jobj, ET9SimpleWord   SimpleWord);
#endif // ET9_LITE_INTERFACE
#endif // ET9IMU_UTIL_H

ET9STATUS ET9FARCALL ET9_GetTracePoint(JNIEnv *env, jclass jcls, ET9TracePoint *pTracePoint, jobjectArray jobjArray, jint nTracePointCount);
ET9STATUS ET9FARCALL ET9CP_SetPhrase(JNIEnv *env, jclass jcls, jobject *jobj, ET9CPPhrase* psPharse);
ET9STATUS ET9FARCALL ET9CP_GetPhrase(JNIEnv *env, jclass jcls, ET9CPPhrase* psPharse, jobject jobj);
ET9STATUS ET9FARCALL ET9CP_SetSpell(JNIEnv *env, jclass jcls, jobject *jobj, ET9CPSpell* psPharse);
ET9STATUS ET9FARCALL ET9CP_GetSpell(JNIEnv *env, jclass jcls, ET9CPSpell* psSpell, jobject jobj);

ET9STATUS ET9FARCALL ET9KDB_SetKeyPositions(JNIEnv *env, jclass jcls, jobjectArray jobjArray, jint maxPointCount, ET9KeyPoint* psKeyPoint);