| #ifndef AUDIO_PARAM_PARSER_H |
| #define AUDIO_PARAM_PARSER_H |
| |
| #include <libxml/parser.h> |
| #include <libxml/xmlreader.h> |
| #include <libxml/tree.h> |
| |
| #ifdef WIN32 |
| #pragma warning( disable : 4996 ) |
| #ifdef __cplusplus |
| #define EXPORT extern "C" __declspec(dllexport) |
| #else |
| #define EXPORT __declspec(dllexport) |
| #endif |
| #else /* WIN32*/ |
| #define EXPORT |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| #endif |
| |
| #include "utstring.h" |
| #include "uthash.h" |
| #include "utlist.h" |
| |
| #ifndef WIN32 |
| #include <pthread.h> |
| #endif |
| |
| /* Enable cus xml support */ |
| //#define APP_FORCE_ENABLE_CUS_XML |
| |
| /* Debugging Macro Definition */ |
| //#define FORCE_DEBUG_LEVEL |
| |
| #define XML_FOLDER_ON_TUNING_TOOL ".\\preload_xml\\" |
| #define XML_CUS_FOLDER_ON_TUNING_TOOL ".\\cus_xml\\" |
| #define XML_FOLDER_ON_DEVICE "/system/etc/audio_param/" |
| #define XML_CUS_FOLDER_ON_DEVICE "/home/root/.audio_param/" |
| |
| #define MAX_AUDIO_TYPE_LEN 50 |
| #define INOTIFY_BUF_SIZE 512 |
| |
| #define AUDIO_PARAM_XML_POSFIX "_AudioParam.xml" |
| #define PARAM_UNIT_DESC_XML_POSFIX "_ParamUnitDesc.xml" |
| #define PARAM_TREE_VIEW_XML_POSFIX "_ParamTreeView.xml" |
| #define FEATURE_OPTIONS_XML "AudioParamOptions.xml" |
| |
| /* XML element definition */ |
| #define ELEM_AUDIO_FEATURE_OPTIONS "AudioParamOptions" |
| #define ELEM_PARAM "Param" |
| #define ELEM_PARAM_UNIT_DESC "ParamUnitDesc" |
| #define ELEM_CATEGORY_TYPE_LIST "CategoryTypeList" |
| #define ELEM_CATEGORY_TYPE "CategoryType" |
| #define ELEM_CATEGORY_GROUP "CategoryGroup" |
| #define ELEM_CATEGORY "Category" |
| |
| #define ELEM_AUDIO_PARAM "AudioParam" |
| #define ELEM_PARAM_TREE "ParamTree" |
| #define ELEM_PARAM_UNIT_POOL "ParamUnitPool" |
| #define ELEM_PARAM_UNIT "ParamUnit" |
| #define ELEM_PARAM "Param" |
| #define ELEM_FIELD "Field" |
| |
| #define ELEM_PARAM_TREE_VIEW "ParamTreeView" |
| #define ELEM_TREE_ROOT "TreeRoot" |
| #define ELEM_SHEET "Sheet" |
| #define ELEM_FEATURE "Feature" |
| #define ELEM_FIELD_LIST "FieldList" |
| #define ELEM_CATEGORY_PATH_LIST "CategoryPathList" |
| |
| /* XML attribute definition */ |
| #define ATTRI_NAME "name" |
| #define ATTRI_TAB_NAME "tab_name" |
| #define ATTRI_VERSION "version" |
| #define ATTRI_WORDING "wording" |
| #define ATTRI_PARAM_ID "param_id" |
| #define ATTRI_PATH "path" |
| #define ATTRI_VALUE "value" |
| #define ATTRI_TYPE "type" |
| #define ATTRI_ARRAY_INDEX "array_index" |
| #define ATTRI_BIT "bit" |
| #define ATTRI_CHECK_LIST "check_list" |
| #define ATTRI_ALIAS "alias" |
| #define ATTRI_FEATURE_OPTION "feature_option" |
| #define ATTRI_SWITCH_AUDIO_TYPE "switch_audio_type" |
| #define ATTRI_SWITCH_PARAM "switch_param" |
| #define ATTRI_SWITCH_FIELD "switch_field" |
| #define ATTRI_AUDIO_TYPE "audio_type" |
| #define ATTRI_PARAM "param" |
| #define ATTRI_VISIBLE "visible" |
| |
| /* DATA_TYPE string */ |
| #define DATA_TYPE_UNKNOWN_STRING "unknown" |
| #define DATA_TYPE_STR_STRING "string" |
| #define DATA_TYPE_INT_STRING "int" |
| #define DATA_TYPE_UINT_STRING "uint" |
| #define DATA_TYPE_FLOAT_STRING "float" |
| #define DATA_TYPE_BYTE_ARRAY_STRING "byte_array" |
| #define DATA_TYPE_UBYTE_ARRAY_STRING "ubyte_array" |
| #define DATA_TYPE_SHORT_ARRAY_STRING "short_array" |
| #define DATA_TYPE_USHORT_ARRAY_STRING "ushort_array" |
| #define DATA_TYPE_INT_ARRAY_STRING "int_array" |
| #define DATA_TYPE_UINT_ARRAY_STRING "uint_array" |
| #define DATA_TYPE_DOUBLE_ARRAY_STRING "double_array" |
| #define DATA_TYPE_FIELD_STRING "Field" |
| |
| #define ARRAY_SEPERATOR "," |
| #define ARRAY_SEPERATOR_CH ',' |
| #define PARAM_FIELD_NAME_SEPERATOR "/" |
| |
| #define AUDIO_TYPE_FMT_STR(STR_LEN) AUDIO_TYPE_FMT(STR_LEN) |
| #define AUDIO_TYPE_FMT(STR_LEN) "%"#STR_LEN"[^_]" |
| |
| typedef struct _AppHandle AppHandle; |
| typedef struct _AudioType AudioType; |
| typedef struct _FieldInfo FieldInfo; |
| typedef struct _Category Category; |
| typedef struct _CategoryAlias CategoryAlias; |
| typedef struct _CategoryGroup CategoryGroup; |
| typedef struct _CategoryNameAlias CategoryNameAlias; |
| typedef struct _CategoryPath CategoryPath; |
| typedef struct _CategoryType CategoryType; |
| typedef struct _Feature Feature; |
| typedef struct _FeatureField FeatureField; |
| typedef struct _FeatureOption FeatureOption; |
| typedef struct _Param Param; |
| typedef struct _ParamInfo ParamInfo; |
| typedef struct _ParamTreeView ParamTreeView; |
| typedef struct _ParamUnit ParamUnit; |
| typedef struct _TreeRoot TreeRoot; |
| typedef struct _NotifyCb NotifyCb; |
| |
| typedef void(*NOTIFY_CB_FUN)(AppHandle *appHandle, const char *audioType); |
| |
| extern int appDebugLevel; |
| |
| typedef enum |
| { |
| DEBUG_LEVEL = 0, |
| INFO_LEVEL, |
| WARN_LEVEL, |
| ERR_LEVEL, |
| } MSG_LEVEL; |
| |
| typedef enum |
| { |
| APP_ERROR = 0, |
| APP_NO_ERROR = 1, |
| } APP_STATUS; |
| |
| typedef enum |
| { |
| PARENT_IS_CATEGORY_GROUP = 0, |
| PARENT_IS_CATEGORY_TYPE = 1, |
| } CATEGORY_PARENT_TYPE; |
| |
| /* |
| Due to the system/media/camera/include/system/camera_metadata.h declare the same TYPE_FLOAT enum name, |
| If module include the camera_metadata.h and AudioParamParser.h, AudioParamParser change the DATA_TYPE |
| enum decleration to avoid conflict. |
| User could using the APP_TYPE_FLOAT enum instead the TYPE_FLOAT. |
| */ |
| #ifndef SYSTEM_MEDIA_INCLUDE_ANDROID_CAMERA_METADATA_H |
| typedef enum |
| { |
| TYPE_UNKNOWN = -1, |
| TYPE_STR, |
| TYPE_INT, |
| TYPE_UINT, |
| TYPE_FLOAT, |
| TYPE_BYTE_ARRAY, |
| TYPE_UBYTE_ARRAY, |
| TYPE_SHORT_ARRAY, |
| TYPE_USHORT_ARRAY, |
| TYPE_INT_ARRAY, |
| TYPE_UINT_ARRAY, |
| TYPE_DOUBLE_ARRAY, |
| TYPE_FIELD, |
| } DATA_TYPE; |
| #else |
| typedef enum |
| { |
| APP_TYPE_UNKNOWN = -1, |
| APP_TYPE_STR, |
| APP_TYPE_INT, |
| APP_TYPE_UINT, |
| APP_TYPE_FLOAT, |
| APP_TYPE_BYTE_ARRAY, |
| APP_TYPE_UBYTE_ARRAY, |
| APP_TYPE_SHORT_ARRAY, |
| APP_TYPE_USHORT_ARRAY, |
| APP_TYPE_INT_ARRAY, |
| APP_TYPE_UINT_ARRAY, |
| APP_TYPE_DOUBLE_ARRAY, |
| APP_TYPE_FIELD, |
| } DATA_TYPE; |
| #endif |
| |
| typedef union CategoryParent |
| { |
| Category *category; /* Link to parent Category if it's not CategoryGroup */ |
| CategoryType *categoryType; /* Link to parent CategoryType if it's CategoryGroup */ |
| } CategoryParent; |
| |
| /* UHash the parameter tree info from ParamTreeView.xml */ |
| struct _CategoryPath |
| { |
| char *path; |
| Feature *feature; |
| UT_hash_handle hh; |
| }; |
| |
| struct _FeatureField |
| { |
| FieldInfo *fieldInfo; |
| UT_hash_handle hh; |
| }; |
| |
| struct _Feature |
| { |
| char *name; |
| char *featureOption; |
| FieldInfo *switchFieldInfo; |
| CategoryPath *categoryPathHash; |
| FeatureField *featureFieldHash; |
| AudioType *audioType; |
| UT_hash_handle hh; |
| }; |
| |
| struct _TreeRoot |
| { |
| char *name; /* Key */ |
| FieldInfo *switchFieldInfo; |
| xmlNode *treeRootNode; /* Used to traversal tree */ |
| Feature *featureHash; /* Used to opt feature information */ |
| ParamTreeView *paramTreeView; /* Belong to which paramTreeView */ |
| UT_hash_handle hh; |
| }; |
| |
| struct _ParamTreeView |
| { |
| int verMaj; |
| int verMin; |
| AudioType *audioType; |
| TreeRoot *treeRootHash; |
| }; |
| |
| /* Hash the Param & Field info from ParamUnitDesc.xml */ |
| struct _FieldInfo |
| { |
| char *name; /* key */ |
| size_t arrayIndex; |
| int startBit; |
| int endBit; |
| char *checkListStr; /* check list string array */ |
| struct _ParamInfo *paramInfo; /* Link to parent ParamInfo */ |
| UT_hash_handle hh; /* hash handle */ |
| }; |
| |
| struct _ParamInfo |
| { |
| char *name; /* key */ |
| DATA_TYPE dataType; |
| struct _FieldInfo *fieldInfoHash; |
| AudioType *audioType; /* Link to parent AudioType */ |
| UT_hash_handle hh; /* hash handle */ |
| }; |
| |
| /* Hash the param name with value from AudioParam.xml */ |
| struct _Param |
| { |
| char *name; /* key */ |
| void *data; /* raw data */ |
| size_t arraySize; /* Array size if the data is the array pointer */ |
| ParamInfo *paramInfo; |
| struct _ParamUnit *paramUnit; /* Link to it's ParamUnit */ |
| UT_hash_handle hh; /* hash handle */ |
| }; |
| |
| /* Hash the id with ParamUnit from AudioParam.xml */ |
| struct _ParamUnit |
| { |
| int paramId; /* key */ |
| int refCount; |
| AudioType *audioType; /* Link to it's AudioType */ |
| struct _Param *paramHash; /* ParamUnit's params */ |
| UT_hash_handle hh; |
| }; |
| |
| /* Hash ParamTree info from AudioParam.xml */ |
| typedef struct |
| { |
| char *categoryPath; /* key */ |
| int paramId; /* Param id */ |
| UT_hash_handle hh; |
| } ParamTree; |
| |
| struct _Category |
| { |
| char *wording; /* key */ |
| char *name; |
| int visible; |
| CategoryParent parent; |
| CATEGORY_PARENT_TYPE parentType; |
| UT_hash_handle hh; |
| }; |
| |
| struct _CategoryAlias |
| { |
| char *alias; /* key */ |
| Category *category; |
| UT_hash_handle hh; |
| }; |
| |
| struct _CategoryGroup |
| { |
| char *wording; /* key */ |
| char *name; |
| int visible; |
| Category *categoryHash; /* Link to children */ |
| CategoryType *categoryType; /* Link to parent */ |
| UT_hash_handle hh; |
| }; |
| |
| struct _CategoryType |
| { |
| char *wording; /* key */ |
| char *name; |
| int visible; |
| CategoryGroup *categoryGroupHash; /* Link to children */ |
| Category *categoryHash; /* Link to children */ |
| CategoryAlias *categoryAliasHash; /* Save category alias information */ |
| AudioType *audioType; /* Link to parent */ |
| UT_hash_handle hh; |
| }; |
| |
| struct _AudioType |
| { |
| char *name; |
| char *tabName; |
| int paramUnitDescVerMaj; /* ParamUniDesc version */ |
| int paramUnitDescVerMin; |
| int audioParamVerMaj; /* AudioParam version */ |
| int audioParamVerMin; |
| xmlDocPtr audioParamDoc; |
| xmlDocPtr paramUnitDescDoc; |
| xmlDocPtr paramTreeViewDoc; |
| ParamTree *paramTreeHash; |
| ParamUnit *paramUnitHash; |
| ParamInfo *paramInfoHash; |
| ParamTreeView *paramTreeView; |
| int unusedParamId; |
| int dirty; /* Indicate if the audio type modified without saveing*/ |
| int allowReload; /* Indicate the audio type can be reload since xml updated */ |
| CategoryType *categoryTypeHash; |
| #ifndef WIN32 |
| pthread_rwlock_t lock; |
| const char *lockCallerFun; /* Used to cache the lock holder */ |
| #endif |
| AppHandle *appHandle; /* Link to it's appHandle parent */ |
| UT_hash_handle hh; |
| }; |
| |
| struct _FeatureOption |
| { |
| char *name; |
| char *value; |
| UT_hash_handle hh; |
| }; |
| |
| struct _NotifyCb |
| { |
| NOTIFY_CB_FUN cb; |
| char test[512]; |
| struct _NotifyCb *next, *pre; |
| }; |
| |
| struct _AppHandle |
| { |
| char *xmlDir; |
| char *xmlCusDir; |
| AudioType *audioTypeHash; |
| FeatureOption *featureOptionsHash; |
| xmlDocPtr featureOptionsDoc; |
| #ifndef WIN32 |
| pthread_t appThread; |
| int appThreadExit; |
| int inotifyFd; |
| pthread_rwlock_t lock; |
| const char *lockCallerFun; /* Used to cache the lock holder */ |
| #endif |
| NotifyCb *noficyCbList; |
| }; |
| |
| typedef struct AudioTypeVerInfo{ |
| const char* audioTypeName; |
| int paramUnitDescVerMaj; |
| int paramUnitDescVerMin; |
| int audioParamVerMaj; |
| int audioParamVerMin; |
| } AudioTypeVerInfo; |
| |
| static const AudioTypeVerInfo audioTypeSupportVerInfo [] = |
| { |
| /* AudioType name, ParamUnitDescVer (maj, min), AudioParamVer (maj, min) */ |
| {"AudioCommonSetting", 1, 0, 1, 0}, |
| {"PlaybackACF", 1, 0, 1, 0}, |
| {"Playback", 1, 0, 1, 0}, |
| {"PlaybackDRC", 1, 0, 1, 0}, |
| {"PlaybackHCF", 1, 0, 1, 0}, |
| {"PlaybackVolAna", 1, 0, 1, 0}, |
| {"PlaybackVolDigi", 1, 0, 1, 0}, |
| {"PlaybackVolUI", 1, 0, 1, 0}, |
| {"Record", 1, 0, 1, 0}, |
| {"RecordDMNR", 1, 0, 1, 0}, |
| {"RecordFIR", 1, 0, 1, 0}, |
| {"RecordUI", 1, 0, 1, 0}, |
| {"RecordVol", 1, 0, 1, 0}, |
| {"RecordVolUI", 1, 0, 1, 0}, |
| {"Speech", 1, 0, 1, 0}, |
| {"SpeechDMNR", 1, 0, 1, 0}, |
| {"SpeechGeneral", 1, 0, 1, 0}, |
| {"SpeechMagiClarity", 1, 0, 1, 0}, |
| {"SpeechUI", 1, 0, 1, 0}, |
| {"SpeechVol", 1, 0, 1, 0}, |
| {"SpeechVolUI", 1, 0, 1, 0}, |
| {"VoIP", 1, 0, 1, 0}, |
| {"VoIPDMNR", 1, 0, 1, 0}, |
| {"VoIPGeneral", 1, 0, 1, 0}, |
| {"VoIPUI", 1, 0, 1, 0}, |
| {"VoIPVol", 1, 0, 1, 0}, |
| {"VoIPVolUI", 1, 0, 1, 0}, |
| {"Volume", 1, 0, 1, 0}, |
| {"VolumeGainMap", 1, 0, 1, 0}, |
| {NULL, 0, 0, 0, 0} |
| }; |
| |
| /*********************** |
| * Public API |
| **********************/ |
| EXPORT void appSetDebugLevel(MSG_LEVEL level); |
| EXPORT MSG_LEVEL appGetDebugLevel(void); |
| |
| /* appHandle API */ |
| EXPORT APP_STATUS appHandleInit(AppHandle *appHandle); |
| EXPORT APP_STATUS appHandleUninit(AppHandle *appHandle); |
| EXPORT void appHandleRedirectIOToConsole(void); |
| EXPORT AppHandle *appHandleGetInstance(void); /* Never uninit global instance */ |
| EXPORT size_t appHandleGetNumOfAudioType(AppHandle *appHandle); |
| EXPORT AudioType *appHandleGetAudioTypeByIndex(AppHandle *appHandle, size_t index); |
| EXPORT AudioType *appHandleGetAudioTypeByName(AppHandle *appHandle, const char *name); |
| EXPORT const char *appHandleGetFeatureOptionValue(AppHandle *appHandle, const char *featureOptionName); |
| EXPORT int appHandleIsFeatureOptionEnabled(AppHandle *appHandle, const char *featureOptionName); |
| EXPORT size_t appHandleGetNumOfFeatureOption(AppHandle *appHandle); |
| EXPORT FeatureOption *appHandleGetFeatureOptionByIndex(AppHandle *appHandle, size_t index); |
| EXPORT const char *appHandleGetBuildTimeStamp(); |
| EXPORT APP_STATUS appHandleCompressFiles(const char* srcDir, const char* destFile); |
| EXPORT APP_STATUS appHandleUncompressFile(const char* srcFile, const char* destDir); |
| |
| /* Following 4 APIs will acquire app handle write lock automatically */ |
| EXPORT APP_STATUS appHandleParseXml(AppHandle *appHandle, const char *dir, const char *cusDir); |
| EXPORT APP_STATUS appHandleReloadAudioType(AppHandle *appHandle, const char *audioTypeName); |
| EXPORT void appHandleRegXmlChangedCb(AppHandle *appHandle, NOTIFY_CB_FUN nofiyCallback); |
| EXPORT void appHandleUnregXmlChangedCb(AppHandle *appHandle, NOTIFY_CB_FUN nofiyCallback); |
| |
| /* AudioType API */ |
| EXPORT APP_STATUS audioTypeIsTuningToolSupportedXmlVer(AudioType *audioType); |
| EXPORT APP_STATUS audioTypeIsDeviceSupportedXmlVer(AudioType *audioType); |
| EXPORT size_t audioTypeGetNumOfCategoryType(AudioType *audioType); |
| EXPORT CategoryType *audioTypeGetCategoryTypeByIndex(AudioType *audioType, size_t idnex); |
| EXPORT CategoryType *audioTypeGetCategoryTypeByName(AudioType *audioType, const char *categoryTypeName); |
| EXPORT CategoryType *audioTypeGetCategoryTypeByWording(AudioType *audioType, const char *categoryTypeWording); |
| EXPORT xmlNode *audioTypeGetCategoryTypeListNode(AudioType *audioType); |
| EXPORT ParamUnit *audioTypeGetParamUnit(AudioType *audioType, const char *categoryPath); |
| EXPORT size_t audioTypeGetNumOfParamInfo(AudioType *audioType); |
| EXPORT ParamInfo *audioTypeGetParamInfoByIndex(AudioType *audioType, size_t index); |
| EXPORT ParamInfo *audioTypeGetParamInfoByName(AudioType *audioType, const char *paramName); |
| EXPORT APP_STATUS audioTypeSaveAudioParamXml(AudioType *audioType, const char *saveDir, int clearDirtyBit); |
| EXPORT int audioTypeReadLock(AudioType *audioType, const char *callerFun); |
| EXPORT int audioTypeWriteLock(AudioType *audioType, const char *callerFun); |
| EXPORT int audioTypeUnlock(AudioType *audioType); |
| EXPORT TreeRoot *audioTypeGetTreeRoot(AudioType *audioType, const char *treeRootName); |
| |
| /* Following 3 write APIs will acquire write lock automatically */ |
| EXPORT APP_STATUS audioTypeSetParamData(AudioType *audioType, const char *categoryPath, ParamInfo *paramName, void *dataPtr, int arraySize); |
| EXPORT APP_STATUS audioTypeSetFieldData(AudioType *audioType, const char *categoryPath, FieldInfo *fieldInfo, unsigned int val); |
| EXPORT APP_STATUS audioTypeParamUnitCopy(AudioType *audioType, const char *srcCategoryPath, const char *dstCategoryPath); |
| |
| /* CategoryType API */ |
| EXPORT size_t categoryTypeGetNumOfCategoryGroup(CategoryType *categoryType); |
| EXPORT CategoryGroup *categoryTypeGetCategoryGroupByIndex(CategoryType *categoryType, size_t index); |
| EXPORT CategoryGroup *categoryTypeGetCategoryGroupByWording(CategoryType *categoryType, const char *wording); |
| EXPORT size_t categoryTypeGetNumOfCategory(CategoryType *categoryType); |
| EXPORT Category *categoryTypeGetCategoryByIndex(CategoryType *categoryType, size_t index); |
| EXPORT Category *categoryTypeGetCategoryByWording(CategoryType *categoryType, const char *wording); |
| |
| /* CategoryGroup API */ |
| EXPORT size_t categoryGroupGetNumOfCategory(CategoryGroup *categoryGroup); |
| EXPORT Category *categoryGroupGetCategoryByIndex(CategoryGroup *categoryGroup, size_t index); |
| EXPORT Category *categoryGroupGetCategoryByWording(CategoryGroup *categoryGroup, const char *index); |
| |
| /* CategoryAlias API */ |
| EXPORT CategoryAlias *categoryAliasCreate(const char *alias, Category *category); |
| EXPORT void categoryAliasRelease(CategoryAlias *categoryAlias); |
| |
| /* ParamInfo API */ |
| EXPORT size_t paramInfoGetNumOfFieldInfo(ParamInfo *paramInfo); |
| EXPORT FieldInfo *paramInfoGetFieldInfoByIndex(ParamInfo *paramInfo, size_t index); |
| EXPORT FieldInfo *paramInfoGetFieldInfoByName(ParamInfo *paramInfo, const char *fieldName); |
| EXPORT char *paramNewDataStr(Param *param); |
| |
| /* ParamUnit API */ |
| EXPORT size_t paramUnitGetNumOfParam(ParamUnit *paramUnit); |
| EXPORT Param *paramUnitGetParamByIndex(ParamUnit *paramUnit, size_t index); |
| EXPORT Param *paramUnitGetParamByName(ParamUnit *paramUnit, const char *paramName); |
| EXPORT ParamInfo *paramUnitGetParamInfo(ParamUnit *paramUnit, const char *paramInfoName); |
| EXPORT FieldInfo *paramUnitGetFieldInfo(ParamUnit *paramUnit, const char *paramName, const char *fieldName); |
| EXPORT APP_STATUS paramUnitGetFieldVal(ParamUnit *paramUnit, const char *paramName, const char *fieldName, unsigned int *val); |
| |
| /* Param API */ |
| EXPORT size_t paramGetArraySizeFromString(const char *str); |
| EXPORT APP_STATUS paramGetFieldVal(Param *param, FieldInfo *fieldInfo, unsigned int *val); |
| EXPORT APP_STATUS paramSetFieldVal(Param *param, FieldInfo *fieldInfo, unsigned int val); |
| EXPORT DATA_TYPE paramDataTypeToEnum(const char *dataType); |
| EXPORT const char *paramDataTypeToStr(DATA_TYPE dataType); |
| |
| /* Field API */ |
| EXPORT APP_STATUS fieldInfoGetCheckListValue(FieldInfo *fieldInfo, const char *checkName, unsigned int *checkVal); |
| |
| /* TreeRoot API */ |
| EXPORT Feature *treeRootGetFeatureByName(TreeRoot *treeRoot, const char *featureName); |
| EXPORT int featureIsCategoryPathSupport(Feature *feature, const char *categoryPath); |
| |
| /* Xml Node related APIs */ |
| EXPORT xmlNode *findXmlNodeByElemName(xmlNode *node, const char *elemName); |
| EXPORT xmlChar *xmlNodeGetProp(xmlNode *node, const char *prop); |
| EXPORT xmlChar *xmlNodeGetWording(xmlNode *node); |
| |
| /* Utils APIs */ |
| EXPORT APP_STATUS utilConvDataStringToNative(DATA_TYPE dataType, const char *paramDataStr, void **paramData, size_t *arraySize); |
| |
| /* Unit test */ |
| EXPORT APP_STATUS unitTest(AppHandle *appHandle); |
| EXPORT char *utilGetStdin(char *buf, int bufSize); |
| |
| /* Following APIs is designed for EM tool integration */ |
| EXPORT APP_STATUS utilNativeSetField(const char *audioTypeName, const char *categoryPath, const char *paramName, const char *fieldName, const char *fieldValueStr); |
| EXPORT APP_STATUS utilNativeSetParam(const char *audioTypeName, const char *categoryPath, const char *paramName, const char *paramDataStr); |
| EXPORT char *utilNativeGetCategory(const char *audioTypeName, const char *categoryTypeName); |
| EXPORT char *utilNativeGetParam(const char *audioTypeName, const char *categoryPath, const char *paramName); |
| EXPORT unsigned int utilNativeGetField(const char *audioTypeName, const char *categoryPath, const char *paramName, const char *fieldName); |
| EXPORT APP_STATUS utilNativeSaveXml(const char *audioTypeName); |
| EXPORT char *utilNativeGetChecklist(const char *audioTypeName, const char *paramName, const char *fieldName); |
| |
| #ifndef WIN32 |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif |
| |
| #endif |