/**
 * 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 ET9KDB_UTIL_H
#define ET9KDB_UTIL_H

#include "com_xt9_Xt9core.h"
#include "et9api.h"
#include "et9cmmUtil.h"

#ifdef ET9_KDB_MODULE
#ifdef LOAD_DB_FROM_FILE
#define MAX_KDB_LIST             (256 * 3) /* Keypad, Phonepad, Qwerty */

typedef struct tagKDBFileInfo {
   ET9U8          filePath[MAX_FILE_PATH];
   ET9U16         kdbCode;
   ET9U32         fileSize;
} KDBFileInfo;

void CloseKdbFileHandle();
#endif /* LOAD_DB_FROM_FILE */
/*----------------------------------------------------------------------------
 *  Callback Functions
 *----------------------------------------------------------------------------*/
ET9STATUS ET9FARCALL ET9KDBReadData(ET9KDBInfo *pKdbInfo,
                                    ET9U32     dwOffset,
                                    ET9U32     dwNumberOfBytesToRead,
                                    ET9U8      *pbDst,
                                    ET9U32     *pdwNumberOfBytesRead);

ET9STATUS ET9FARCALL ET9Handle_KDB_Request(ET9KDBInfo      * const pKdbInfo,
                                           ET9WordSymbInfo * const pWordSymbInfo,
                                           ET9KDB_Request  * const pRequest);

ET9STATUS ET9FARCALL ET9ConvertSymb(void    *pConvertInfo,
                                    ET9SYMB *psConvertSymb);

/*----------------------------------------------------------------------------
 *  Get Functions
 *----------------------------------------------------------------------------*/
#ifdef ET9_FULL_INTERFACE
ET9STATUS ET9FARCALL ET9KDB_GetKDBPageHdr  (JNIEnv *env, jclass jcls, ET9KDBPageHdr   *wai,        jobject jobj);
ET9STATUS ET9FARCALL ET9KDB_GetKDBRegionHdr(JNIEnv *env, jclass jcls, ET9KDBRegionHdr *wai,        jobject jobj);
ET9STATUS ET9FARCALL ET9KDB_GetKDBAction   (JNIEnv *env, jclass jcls, ET9KDBAction    *wai,        jobject jobj);
ET9STATUS ET9FARCALL ET9KDB_GetKDBPrivate  (JNIEnv *env, jclass jcls, ET9KDBPrivate   *KbdPrivate, jobject jobj);
ET9STATUS ET9FARCALL ET9KDB_GetKDBInfo     (JNIEnv *env, jclass jcls, ET9KDBInfo      *pKbdInfo,   jobject jobj);
#endif // ET9_FULL_INTERFACE
#ifdef ET9_LITE_INTERFACE
ET9STATUS ET9FARCALL ET9_GetKeyRegion      (JNIEnv *env, jclass jcls, ET9Region       *pKeyRegion, jobject jobj);
#endif // ET9_LITE_INTERFACE

/*----------------------------------------------------------------------------
 *  Set Functions
 *----------------------------------------------------------------------------*/
#ifdef ET9_FULL_INTERFACE
ET9STATUS ET9FARCALL ET9KDB_SetKDBPageHdr  (JNIEnv *env, jclass jcls, jobject *jobj, ET9KDBPageHdr   wai);
ET9STATUS ET9FARCALL ET9KDB_SetKDBRegionHdr(JNIEnv *env, jclass jcls, jobject *jobj, ET9KDBRegionHdr wai);
ET9STATUS ET9FARCALL ET9KDB_SetKDBAction   (JNIEnv *env, jclass jcls, jobject *jobj, ET9KDBAction    wai);
ET9STATUS ET9FARCALL ET9KDB_SetKDBPrivate  (JNIEnv *env, jclass jcls, jobject *jobj, ET9KDBPrivate   KbdPrivate);
ET9STATUS ET9FARCALL ET9KDB_SetKDBInfo     (JNIEnv *env, jclass jcls, jobject *jobj, ET9KDBInfo      pKbdInfo);
#endif // ET9_FULL_INTERFACE
#ifdef ET9_LITE_INTERFACE
ET9STATUS ET9FARCALL ET9_SetKeyRegion      (JNIEnv *env, jclass jcls, jobject *jobj, ET9Region       pKeyRegion);
#endif // ET9_LITE_INTERFACE
#endif // ET9_KDB_MODULE
#endif // ET9KDB_UTIL_H
