nt9856x/code/application/source/cardv/SrcCode/UIApp/Network/EthCamAppCmd.h
2023-03-28 15:07:53 +08:00

310 lines
11 KiB
C
Executable File

#ifndef _ETHCAMAPPCMD_H_
#define _ETHCAMAPPCMD_H_
#include "kwrap/type.h"
#include "UIApp/EthCamCmdParser/EthCamCmdParser.h"
#include "EthCam/EthCamSocket.h"
#include <kwrap/task.h>
#include <kwrap/flag.h>
#define PRI_ETHCAM_CMD_SND 6
#define PRI_ETHCAM_CMD_RCV 5 //6
#define STKSIZE_ETHCAM_CMD_SND 4096
#define STKSIZE_ETHCAM_CMD_RCV 4096
#define FLG_ETHCAM_CMD_OPENED FLGPTN_BIT(0)// 1
#define FLG_ETHCAM_CMD_STOP FLGPTN_BIT(1)// 2
#define FLG_ETHCAM_CMD_IDLE FLGPTN_BIT(2)// 4
#define FLG_ETHCAM_CMD_SND FLGPTN_BIT(3)// 8
#define FLG_ETHCAM_CMD_RCV FLGPTN_BIT(4)// 16
#define FLG_ETHCAM_CMD_SETIP FLGPTN_BIT(5)// 32
#define FLG_ETHCAM_CMD_GETFRM FLGPTN_BIT(6)// 64
#define FLG_ETHCAM_CMD_SEND_GPS FLGPTN_BIT(7)// 128
#define ETHCAM_CMD_ACK 9000
#define ETHCAM_CMD_STARTUP 9001
#define ETHCAM_CMD_GET_TX_MOVIE_TBR 9002
#define ETHCAM_CMD_GET_TX_MOVIE_REC_SIZE 9003
#define ETHCAM_CMD_GET_TX_MOVIE_FPS 9004
#define ETHCAM_CMD_GET_TX_MOVIE_GOP 9005
#define ETHCAM_CMD_GET_TX_MOVIE_CODEC 9006
#define ETHCAM_CMD_GET_TX_SPS_PPS 9007
#define ETHCAM_CMD_TX_STREAM_START 9008
#define ETHCAM_CMD_TX_STREAM_STOP 9009
#define ETHCAM_CMD_GET_TX_MOVIE_THUMB 9010
#define ETHCAM_CMD_GET_TX_MOVIE_RAW_ENCODE 9011
#define ETHCAM_CMD_GET_TX_REC_INFO 9012
//ONLY for IQ tuning
#define ETHCAM_CMD_TX_RTSP_START 9013
#define ETHCAM_CMD_SYNC_TIME 9014
#define ETHCAM_CMD_SYNC_MENU_SETTING 9015
#define ETHCAM_CMD_TX_RESET_I 9016
#define ETHCAM_CMD_GET_TX_DEC_INFO 9017
#define ETHCAM_CMD_GET_FRAME 9018
#define ETHCAM_CMD_TX_RESET_QUEUE 9019
#define ETHCAM_CMD_TX_FWUPDATE_FWSEND 9020
#define ETHCAM_CMD_TX_FWUPDATE_START 9021
#define ETHCAM_CMD_TX_DISP_CROP 9022
#define ETHCAM_CMD_TX_POWEROFF 9023
#define ETHCAM_CMD_TX_IO_STATUS 9024
#define ETHCAM_CMD_TX_FW_VERSION 9025
#define ETHCAM_CMD_SET_TX_IP_RESET 9026
#define ETHCAM_CMD_SET_TX_SYS_INFO 9027
#define ETHCAM_CMD_DUMP_TX_BS_INFO 9028
#define ETHCAM_CMD_CHANGE_MODE 9029
#define ETHCAM_CMD_IPERF_TEST 9030
#define ETHCAM_CMD_TX_LCA_INFO 9031
#define ETHCAM_CMD_SET_TX_CODEC_SRCTYPE 9032
#define ETHCAM_CMD_SET_TX_FLIP 9033
#define ETHCAM_CMD_SET_TX_AUDCAP 9034
#define ETHCAM_CMD_SET_TX_AUDINFO 9035
#define ETHCAM_CMD_SET_TX_CLONE_WRITEFILE 9036
#define ETHCAM_CMD_SET_TX_GPS 9037
#define ETHCAM_CMD_ROOT '/'
#define ETHCAM_CMD_CUSTOM_TAG '?'
#define ETHCAM_RET_ACK 0
#define ETHCAM_RET_OK 1
#define ETHCAM_RET_CONTINUE 2
#define ETHCAM_RET_TIMEOUT 3
#define ETHCAM_RET_ERR -1
#define ETHCAM_RET_CMD_NOT_FOUND ETHCAM_CMD_NOT_FOUND
#define ETHCAM_RET_FW_OK 0 // Update FW to NAND OK
#define ETHCAM_RET_FW_INVALID_STG (-19) // Invalid source storage
#define ETHCAM_RET_FW_READ_ERR (-18) // FW doesn't exist or read error
#define ETHCAM_RET_FW_READ_CHK_ERR (-17) // Read FW checksum failed, might be error
#define ETHCAM_RET_FW_WRITE_ERR (-16) // Write FW to NAND error
#define ETHCAM_RET_FW_READ2_ERR (-15) // Read FW from NAND failed (for write checking)
#define ETHCAM_RET_FW_WRITE_CHK_ERR (-14) // Write FW checksum failed
#define ETHCAM_RET_INVLID_MODE (-13) // Must be main mode
#define ETHCAM_RET_FW_OFFSET (-20) // FW update offset
/* ETHCAM_RET_FW_xxx refere to
#define UPDNAND_STS_FW_OK 0 // Update FW to NAND OK
#define UPDNAND_STS_FW_INVALID_STG 1 // Invalid source storage
#define UPDNAND_STS_FW_READ_ERR 2 // FW doesn't exist or read error
#define UPDNAND_STS_FW_READ_CHK_ERR 3 // Read FW checksum failed, might be error
#define UPDNAND_STS_FW_WRITE_ERR 4 // Write FW to NAND error
#define UPDNAND_STS_FW_READ2_ERR 5 // Read FW from NAND failed (for write checking)
#define UPDNAND_STS_FW_WRITE_CHK_ERR 6 // Write FW checksum failed
#define UPDNAND_STS_INVLID_MODE 7 // Must be main mode
*/
#define ETHCAM_CMD_DONE FLGPTN_BIT(7)
#define ETHCAM_CMD_TIMEOUT FLGPTN_BIT(8)
//#define ETH_DATA1_SOCKET_PORT 8887
//#define ETH_DATA2_SOCKET_PORT 8888
//#define ETH_CMD_SOCKET_PORT 8899
#define ETH_DATA_SOCKET_MAX 2
#define MAX_I_FRAME_SZIE 685*1024
typedef enum _ETHCAM_XML_RESULT_TYPE {
ETHCAM_XML_RESULT_TYPE_DEFAULT_FORMAT =1,
ETHCAM_XML_RESULT_TYPE_VALUE_RESULT,
ETHCAM_XML_RESULT_TYPE_STRING_RESULT,
ETHCAM_XML_RESULT_TYPE_LIST,
ENUM_DUMMY4WORD(ETHCAM_XML_RESULT_TYPE)
} ETHCAM_XML_RESULT_TYPE;
typedef enum _ETHCAM_TX_SYS_SRCTYPE {
ETHCAM_TX_SYS_SRCTYPE_BASE =1,
ETHCAM_TX_SYS_SRCTYPE_67 =ETHCAM_TX_SYS_SRCTYPE_BASE,
ETHCAM_TX_SYS_SRCTYPE_57,
ETHCAM_TX_SYS_SRCTYPE_68,
ETHCAM_TX_SYS_SRCTYPE_56,
ETHCAM_TX_SYS_SRCTYPE_MAX,
} ETHCAM_TX_SYS_SRCTYPE;
/////cmd need usging CB function
typedef struct _ETHCAM_XML_CB_REGISTER{
void (* EthCamXML_data_CB)(INT32 bEnd, void *output_data);
ETHCAM_PATH_ID path_id;
ETHCAM_PORT_TYPE port_type;
}ETHCAM_XML_CB_REGISTER;
typedef struct _ETHCAM_XML_RESULT{
INT32 cmd;
UINT32 result_type;
ETHCAM_XML_CB_REGISTER output_cb;
}ETHCAM_XML_RESULT;
typedef struct _ETHCAM_XML_DEFAULT_FORMAT{
INT32 cmd;
ETHCAM_PATH_ID path_id;
ETHCAM_PORT_TYPE port_type;
INT32 status;
}ETHCAM_XML_DEFAULT_FORMAT;
typedef struct _ETHCAM_XML_VALUE_RESULT{
INT32 cmd;
ETHCAM_PATH_ID path_id;
ETHCAM_PORT_TYPE port_type;
INT32 status;
INT32 value;
}ETHCAM_XML_VALUE_RESULT;
typedef struct _ETHCAM_XML_STRING_RESULT{
INT32 cmd;
ETHCAM_PATH_ID path_id;
ETHCAM_PORT_TYPE port_type;
INT32 status;
char string[128];
}ETHCAM_XML_STRING_RESULT;
typedef struct _ETHCAM_XML_LIST{
INT32 cmd;
ETHCAM_PATH_ID path_id;
ETHCAM_PORT_TYPE port_type;
INT32 item[128];
UINT32 total_item_cnt;
}ETHCAM_XML_LIST;
typedef struct {
UINT32 bStarupOK;
UINT32 Flip;
UINT32 Tbr;
UINT32 Fps;
UINT32 Width;
UINT32 Height;
UINT32 Gop;
UINT32 Codec;
UINT32 DescSize;
UINT32 SPSSize;
UINT32 PPSSize;
UINT32 VPSSize;
UINT8 Desc[128];
} ETHCAM_TX_DEC_INFO;
typedef struct {
UINT32 width;
UINT32 height;
UINT32 vfr;
UINT32 tbr;
UINT32 ar;
UINT32 gop;
UINT32 codec;
UINT32 aud_codec;
UINT32 rec_mode;
UINT32 rec_format;
UINT32 DescSize;
UINT32 SPSSize;
UINT32 PPSSize;
UINT32 VPSSize;
UINT8 Desc[128];
} ETHCAM_TX_REC_INFO;
typedef struct {
UINT32 FwAddr;
UINT32 FwSize;
INT32 cmd;
ETHCAM_PATH_ID path_id;
ETHCAM_PORT_TYPE port_type;
} ETHCAM_FWUD;
typedef struct {
UINT32 Size;
UINT32 WDR;
UINT32 EV;
UINT32 DateImprint;
UINT32 SensorRotate;
UINT32 Codec;
UINT32 TimeLapse;
} ETHCAM_MENU_SETTING;
typedef struct {
UINT32 PullModeEn;
UINT32 CloneDisplayPathEn;
UINT32 bCmdOK;
} ETHCAM_TX_SYS_INFO;
typedef struct {
UINT32 VCodec; //MOVIE_CODEC_H265, MOVIE_CODEC_H264
ETHCAM_TX_SYS_SRCTYPE Srctype;
UINT32 bCmdOK;
} ETHCAM_TX_CODEC_SRCTYPE;
extern ETHCAM_TX_DEC_INFO sEthCamTxDecInfo[ETHCAM_PATH_ID_MAX];
extern ETHCAM_TX_REC_INFO sEthCamTxRecInfo[ETHCAM_PATH_ID_MAX];
//extern ETHCAM_MENU_SETTING g_sEthCamMenuSetting[ETHCAM_PATH_ID_MAX];
extern ETHCAM_CMD_ENTRY Cmd_ethcam[];
extern ETHCAM_XML_RESULT EthCamXMLResultTbl[];
extern ETHCAM_FWUD sEthCamFwUd;
#if(defined(_NVT_ETHREARCAM_TX_))
extern ETHCAM_TX_SYS_INFO sEthCamSysInfo;
extern ETHCAM_TX_CODEC_SRCTYPE sEthCamCodecSrctype;
#endif
#if (defined(_NVT_ETHREARCAM_RX_))
extern ETHCAM_TX_SYS_INFO sEthCamTxSysInfo[ETHCAM_PATH_ID_MAX];
extern ETHCAM_TX_CODEC_SRCTYPE sEthCamCodecSrctype[ETHCAM_PATH_ID_MAX];
#endif
extern void EthCamCmdHandler_InstallID(void) _SECTION(".kercfg_text");
extern void EthCamCmdHandler_UnInstallID(void) _SECTION(".kercfg_text");
extern ID _SECTION(".kercfg_data") ETHCAM_CMD_SND_FLG_ID;
extern ID _SECTION(".kercfg_data") ETHCAM_CMD_RCV_FLG_ID;
extern THREAD_HANDLE ETHCAM_CMD_SND_TSK_ID;
extern THREAD_HANDLE ETHCAM_CMD_RCV_TSK_ID;
extern ID _SECTION(".kercfg_data") ETHCAM_CMD_SNDDATA1_SEM_ID;
extern ID _SECTION(".kercfg_data") ETHCAM_CMD_SNDDATA2_SEM_ID;
extern ID _SECTION(".kercfg_data") ETHCAM_CMD_SNDCMD_SEM_ID;
#if(defined(_NVT_ETHREARCAM_TX_))
extern ID _SECTION(".kercfg_data") ETHCAM_CMD_SNDFRAME_SEM_ID;
#endif
#if (defined(_NVT_ETHREARCAM_RX_))
extern ID _SECTION(".kercfg_data") ETHCAM_WIFICB_VDOFRM_SEM_ID;
extern ID _SECTION(".kercfg_data") ETHCAM_DISP_DATA_SEM_ID;
#endif
extern ER EthCamCmdTsk_Open(void);
extern ER EthCamCmdTsk_Close(void);
THREAD_RETTYPE EthCamCmdSnd_Tsk(void);
THREAD_RETTYPE EthCamCmdRcvHandler_Tsk(void);
extern INT32 EthCamCmdXML_parser(INT32 cmd_id,char *xml_buf ,void* output);
extern INT32 EthCamCmdXML_GetCmdId(char *xml_buf);
extern void EthCamCmd_Init(void);
extern INT32 EthCam_SendXMLCmd(ETHCAM_PATH_ID path_id, ETHCAM_PORT_TYPE port_type, UINT32 cmd,UINT32 par);
extern INT32 EthCam_SendXMLData(ETHCAM_PATH_ID path_id, UINT8* addr, UINT32 size);
extern INT32 EthCam_SendXMLCmdData(ETHCAM_PATH_ID path_id, ETHCAM_PORT_TYPE port_type, UINT32 cmd,UINT32 par, UINT8* addr, UINT32 size);
extern INT32 EthCam_SendXMLStatusCB(ETHCAM_PATH_ID path_id, ETHCAM_PORT_TYPE port_type, UINT32 cmd, UINT32 status);
extern INT32 EthCam_SendXMLStatus(ETHCAM_PATH_ID path_id, ETHCAM_PORT_TYPE port_type, UINT32 cmd, UINT32 status);
extern INT32 EthCam_SendXMLStr(ETHCAM_PATH_ID path_id, ETHCAM_PORT_TYPE port_type, UINT32 cmd, CHAR* str);
extern INT32 EthCam_SendXMLValue(ETHCAM_PATH_ID path_id, ETHCAM_PORT_TYPE port_type, UINT32 cmd, UINT64 value);
extern INT32 EthCamCmd_Send(ETHCAM_PATH_ID path_id, char* addr, int* size);
extern void EthCamCmd_SetResultTable(ETHCAM_XML_RESULT *pAppCmdTbl);
extern ETHCAM_XML_RESULT *EthCamCmd_GetResultTable(void);
extern void EthCamCmd_SndData1Lock(void);
extern void EthCamCmd_SndData1Unlock(void);
extern void EthCamCmd_SndData2Lock(void);
extern void EthCamCmd_SndData2Unlock(void);
extern INT32 EthCamData1_Send(char* addr, int* size);
extern INT32 EthCamData2_Send(char* addr, int* size);
extern void EthCam_GetDest(char *path, ETHCAM_PATH_ID *path_id, ETHCAM_PORT_TYPE *port_type);
extern void EthCamCmd_GetFrameTimerEn(BOOL En);
extern BOOL EthCamCmd_IsGetFrameTimerEnable(void);
#endif //_ETHCAMAPPCMD_H_