HttpServer.cpp
#define A311D_TO_SC2000_SETEVENTPARAM_URL "/Camera/A311D_TO_SC2000_SeteEventParam"
typedef int (*i_Func_vpp_vp)(void **pp, void *p);
typedef struct
{
const XAG_CHAR *path;
i_Func_vpp_vp func;
}HTTP_SERVER_REQ_FUNC, *pHTTP_SERVER_REQ_FUNC;
HTTP_SERVER_REQ_FUNC http_server_req_func[] =
{
{A311D_TO_SC2000_SETEVENTPARAM_URL, REQ_A311D_TO_SC2000_EventParam}
}
RecvCmd.cpp
XAG_S32 REQ_A311D_TO_SC2000_EventParam(XAG_VOID **pp, XAG_VOID *path)
{
/* radar */
cJSON_GetValueInt(st_RtkEvetParm.refDistance, cJSON_GetObjectItem(item, "radarPeriod"));
cJSON_GetValueInt(st_RtkEvetParm.minDistance, cJSON_GetObjectItem(item, "minDistance"));
cJSON_GetValueInt(st_RtkEvetParm.maxDistance, cJSON_GetObjectItem(item, "maxDistance"));
s32Ret = pm_AppsCtrl->m_CameraCtrl.Callback_Network_MissionStatusUpdate(st_RtkEvetParm.s32Cmd, &st_RtkEvetParm, sizeof(st_RtkEvetParm));
}
CameraCtrl.cpp
XAG_S32 CameraCtrl::Callback_Network_MissionStatusUpdate(XAG_U32 wp_seg, void *extra, XAG_U32 size){
return m_SerialProxy.Serial_FC_UpdateMissionStatus(wp_seg, extra, size);
}
SerialProxy.cpp
XAG_S32 SerialProxy::Serial_FC_UpdateMissionStatus(XAG_U32 wp_seg, void *extra, XAG_U32 size){
return m_FcProc.FcProc_UpdateMissionStatus(wp_seg, extra, size);
}
FcProc.cpp
XAG_S32 FcProc::FcProc_UpdateMissionStatus(XAG_U32 wp_seg, void *extra, XAG_U32 size)
{
int32_t s32Ret = -1;
uint32_t u32Cmd = wp_seg;
switch(u32Cmd)
{
case E_RTK_EVENT_PARM:
FcProc_RecvEventParam(extra,size);
break;
}
return s32Ret=0;
}
int32_t FcProc::FcProc_RecvEventParam(void *pData, uint32_t s32Size)
{
if((NULL != pData) && (s32Size == sizeof(RecvRtkEventParam_ST)))
{
stEVENT_SYNC_DATA.u32RadarRefDis = stRecvEvent.refDistance & 0xFFFF;
pm_FcProcInterface->Callback_EventInfoAdd(&stEVENT_SYNC_DATA);
}
return s32Ret=0;
}
SerialProxy.cpp
XAG_BOOL SerialProxy::Callback_EventInfoAdd(EVENT_SYNC_DATA_S* pstEventInfo)
{
FunSerialCmdSendCallBack(FunCameraCtrlCallBack,pstEventInfo, sizeof (EVENT_SYNC_DATA_S), NULL, NULL, CAMERA_MODULE_EVENT_INFO);
return true;
}
SerialProxy.h
class SerialProxy
{
public:
/* 函数指针 */
SERIAL_CMD_SEND_BACK FunSerialCmdSendCallBack;
/* 函数指针声明 */
typedef XAG_BOOL (*SERIAL_CMD_SEND_BACK)(XAG_VOID* ,XAG_VOID* , XAG_U32 ,XAG_VOID* , XAG_U32 *,XAG_U8 );
/* 为了转换成类 */
XAG_VOID* FunCameraCtrlCallBack;
}
/*
*赋值与调用
*/
XAG_BOOL SerialProxy::SerialCallbackHandler(XAG_VOID * _funCallBak,SERIAL_CMD_SEND_BACK _m_Serial_back)
{
FunCameraCtrlCallBack = _funCallBak; /* 为了转换成类 */
FunSerialCmdSendCallBack = _m_Serial_back;
return true;
}
XAG_BOOL CameraCtrl::CameraCtrl_Init()
{
m_SerialProxy.SetInterface(this);
m_SerialProxy.SerialCallbackHandler(this,CameraCtrl_SerialCallBack);
}
XAG_BOOL CameraCtrl::CameraCtrl_SerialCallBack(XAG_VOID* pFunc, XAG_VOID* pDataSrc, XAG_U32 u32SrcSize,\
XAG_VOID* pDataDir, XAG_U32 *pu32DirSize, XAG_U8 u8Event)
{
CameraCtrl *pmCameraCtrl = (CameraCtrl *)pFunc; /* 转换成类 */
return pmCameraCtrl->CameraCtrl_Module_Interface(pDataSrc, u32SrcSize, pDataDir, pu32DirSize, u8Event);
}
XAG_BOOL CameraCtrl::CameraCtrl_Module_Interface(XAG_VOID* pDataSrc, XAG_U32 u32SrcSize,\
XAG_VOID* pDataDir, XAG_U32 *pu32DirSize, XAG_U8 u8Event)
{
return _CameraCtrl_Module_Interface( pDataSrc, u32SrcSize,pDataDir, pu32DirSize, u8Event);
}
XAG_BOOL CameraCtrl::_CameraCtrl_Module_Interface(XAG_VOID* pDataSrc, XAG_U32 u32SrcSize,\
XAG_VOID* pDataDir, XAG_U32 *pu32DirSize, XAG_U8 u8Event)
{
switch (stCameraModule.eType)
{
case CAMERA_MODULE_EVENT_INFO:
m_Sync_Picture_Info.Sync_Positioning_Event_Add(stPOSITION_EVENT_INFO.stEVENT_SYNC_DATA.csPath, (EVENT_SYNC_DATA_S *)pDataSrc);
break;
}
}