nt9856x/rtos/code/lib/include/HfsNvt/HfsNvtAPI.h
2023-03-28 15:07:53 +08:00

163 lines
7.0 KiB
C
Executable File

/////////////////////////////////////////////////////////////////
/*
Copyright (c) 2014~ Novatek Microelectronics Corporation
@file HfsNvtAPI.h
@version
@date
*//////////////////////////////////////////////////////////////////
#ifndef _HFSNVTAPI_H
#define _HFSNVTAPI_H
#include "hfs.h"
/**
Warning Code.
Any warning code occured will display on uart or return.
*/
typedef enum _HFSNVT_WR {
HFSNVT_WR_OK = 0, ///< no warning
HFSNVT_WR_ALREADY_OPEN = -1, ///< HfsNvt_Open called twice
HFSNVT_WR_NOT_OPEN = -2, ///< HfsNvt_Open not to call before.
ENUM_DUMMY4WORD(HFSNVT_WR)
} HFSNVT_WR;
/**
@name HFS maximum length definition.
*/
//@{
#define HFS_ROOT_DIR_MAXLEN 64 ///< root dir maximum length
#define HFS_KEY_MAXLEN 64 ///< key maximum length
#define HFS_USER_QUERY_MAXLEN 24 ///< user query string maximum length
#define HFS_CUSTOM_STR_MAXLEN 24 ///< custom string max length
//@}
/**
Callback functions prototype that HfsNvt task used.
These definitions are used in the structure HFSNVT_OPEN and would be used during HfsNvt_Open() to specify the
HfsNvt Tsk needed callback function.
*/
//@{
typedef void HFSNVT_SERVER_EVENT_CB(int status); ///< Callback function for notify the HFS server status.
typedef INT32 HFSNVT_GET_CUSTOM_CB(CHAR *path, CHAR *argument, UINT32 bufAddr, UINT32 *bufSize, CHAR *mimeType, UINT32 segmentCount); ///< Callback function for get custom data.
typedef INT32 HFSNVT_CHK_PASSWD_CB(const CHAR *username, const CHAR *password, CHAR *key, CHAR *questionstr); ///< Callback function for check password.
typedef INT32 HFSNVT_CLIENT_QUERY_CB(CHAR *path, CHAR *argument, UINT32 bufAddr, UINT32 *bufSize, CHAR *mimeType, UINT32 segmentCount); ///< Callback function for client query
typedef INT32 HFSNVT_UPLOAD_RESULT_CB(int result, UINT32 bufAddr, UINT32 *bufSize, CHAR *mimeType); ///< Callback function for upload command complete
typedef INT32 HFSNVT_DELETE_RESULT_CB(int result, UINT32 bufAddr, UINT32 *bufSize, CHAR *mimeType); ///< Callback function for delete command complete
typedef INT32 HFSNVT_PUT_CUSTOM_CB(CHAR *path, CHAR *argument, UINT32 bufAddr, UINT32 bufSize, UINT32 segmentCount, HFS_PUT_STATUS putStatus); ///< Callback function for put custom data.
typedef INT32 HFSNVT_HEADER_CB(UINT32 headerAddr, UINT32 headerSize, CHAR *filepath, CHAR *mimeType, void *reserved); ///< Callback function for http header parse custom.
typedef void HFSNVT_DOWNLOAD_RESULT_CB(int result, const CHAR *path);///< Callback function for download command complete
//@}
/**
Init parameters for HfsNvt module.
This structure is used in HfsNvt_Open() to specify the HFSNvt task needed information for normal working
and user customization callback.
*/
typedef struct {
HFSNVT_SERVER_EVENT_CB *serverEvent; ///< Callback function for notify the HFS server status.
HFSNVT_GET_CUSTOM_CB *getCustomData; ///< Callback function for get custom data.
HFSNVT_PUT_CUSTOM_CB *putCustomData; ///< Callback function for put custom data.
HFSNVT_CHK_PASSWD_CB *check_pwd; ///< Callback function for check password.
HFSNVT_CLIENT_QUERY_CB *clientQuery; ///< Callback function for client query.
char clientQueryStr[HFS_USER_QUERY_MAXLEN + 1]; ///< client query string.
HFSNVT_UPLOAD_RESULT_CB *uploadResultCb; ///< Callback function for upload command complete
HFSNVT_DELETE_RESULT_CB *deleteResultCb; ///< Callback function for delete command complete
UINT32 portNum; ///< server port number
UINT32 threadPriority; ///< server thread priority
CHAR rootdir[HFS_ROOT_DIR_MAXLEN + 1]; ///< root of the visible filesystem
CHAR key[HFS_KEY_MAXLEN + 1]; ///< the key used in check password callback function
UINT32 sockbufSize; ///< socket buffer size
UINT32 sharedMemAddr; ///< shared memory address
UINT32 sharedMemSize; ///< shared memory size
UINT32 maxClientNum; ///< maximum client connection at the same time
UINT32 httpsPortNum; ///< https port number
char customStr[HFS_CUSTOM_STR_MAXLEN + 1]; ///< custom string
UINT32 timeoutCnt; ///< timeout counter for send & receive , time base is 0.5 sec
BOOL forceCustomCallback; ///< force custom callback even url not have "custom=1"
HFSNVT_HEADER_CB *headerCb; ///< Callback function for header data parse by customer
HFSNVT_DOWNLOAD_RESULT_CB *downloadResultCb; ///< Callback function for download command complete
int tos; ///< type of service
} HFSNVT_OPEN;
/*-----------------------------------
functions declare
-----------------------------------*/
/**
Install HfsNvt flag and semaphore id.
*/
extern void HfsNvt_InstallID(void) _SECTION(".kercfg_text");
/**
Open HfsNvt task.
This is the HfsNvt task initial function.
@param[in] pOpen: Init info for HfsNvt.
@return
- @b E_OK: initial success.
- @b E_PAR: the initial parameter has some error.
Example:
@code
{
HFSNVT_OPEN hfsObj={0};
int checkpwd = 0;
int clientQuery = 0;
char clientQueryStr[20]="query_devinfo";
int uploadCB = 1;
int deleteCB = 1;
hfsObj.serverEvent = xExamHfs_notifyStatus;
hfsObj.getCustomData = xExamHfs_getCustomData;
if (checkpwd)
{
hfsObj.check_pwd = xExamHfs_CheckPasswd;
}
if (clientQuery)
{
hfsObj.clientQuery = xExamHfs_ClientQueryData;
strncpy(hfsObj.clientQueryStr, clientQueryStr,HFS_USER_QUERY_MAXLEN);
hfsObj.clientQueryStr[HFS_USER_QUERY_MAXLEN]=0;
}
if (uploadCB)
hfsObj.uploadResultCb = xExamHfs_uploadResultCb;
if (deleteCB)
hfsObj.deleteResultCb = xExamHfs_deleteResultCb;
hfsObj.portNum = 80;
hfsObj.threadPriority = 6;
strncpy(hfsObj.rootdir, "/sdcard", HFS_ROOT_DIR_MAXLEN);
hfsObj.rootdir[HFS_ROOT_DIR_MAXLEN]=0;
hfsObj.sockbufSize = 51200;
hfsObj.sharedMemAddr = SxCmd_GetTempMem(0x1000000);
hfsObj.sharedMemSize = 66*1024;
HfsNvt_Open(&hfsObj);
}
@endcode
*/
extern ER HfsNvt_Open(HFSNVT_OPEN *pOpen);
/**
Close HfsNvt task.
@return
- @b E_OK: close success.
*/
extern ER HfsNvt_Close(void);
#endif // _HFSNVTAPI_H