163 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 | 
