#include #include #include #include "MsTypes.h" #include "utopia.h" #include "utopia_adp.h" #include "drvDMD_INTERN_DVBT2_v2.h" //#include "MsOS.h" //#include //Top //original parameter area UADP_STRUCT_POINTER_TABLE spt_DVBT2_BOOL_VAL[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_U8_VAL[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_U16_VAL[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_U32_VAL[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_8BYTE_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DMD_DVBT2_InitData_Transform[5]; UADP_STRUCT_POINTER_TABLE spt_DMD_DVBT2_Info[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_MSIF_Version[5]; UADP_STRUCT_POINTER_TABLE spt_DMD_T2_LOCK_STATUS[5]; //ioctl parameter passing area UADP_STRUCT_POINTER_TABLE spt_DVBT2_INIT_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_EXIT_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_SETDBGLEVEL_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETINFO_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETLIBVER_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETFWVER_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETREG_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_SETREG_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_SETSERIALCONTROL_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_SETCONFIG_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_SETACTIVE_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETLOCK_PARAM[5]; //UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETSIGNALSTRENGTHWITHRFPOWER_PARAM[5]; //UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETSIGNALQUALITYWITHRFPOWER_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETSNR_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETPOSTLDPCBER_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETPRELDPCBERP_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETPACKETERRPARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETL1INFO_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DMD_DVBT2_GETFREQOFFSET_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_SETPOWERSTATE_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETPLPBITMAP_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DVBT2_GETPLPGROUPID_PARAM[5]; UADP_STRUCT_POINTER_TABLE spt_DMD_DVBT2_SETPLPID_PARAM[5]; //UADP_STRUCT_POINTER_TABLE spt_DVBC_8BYTE_PARAM[5]; MS_U32 DVBT2_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs) { MS_U32 u32Ret = 0; char buffer_arg[2048]; switch(u32Cmd) { case DMD_DVBT2_DRV_CMD_Init: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_INIT_PARAM, spt_DVBT2_INIT_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_Exit : u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_EXIT_PARAM, spt_DVBT2_EXIT_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetDbgLevel: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_SETDBGLEVEL_PARAM, spt_DVBT2_SETDBGLEVEL_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetInfo: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETINFO_PARAM, spt_DVBT2_GETINFO_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetLibVer: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETLIBVER_PARAM, spt_DVBT2_GETLIBVER_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetFWVer: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETFWVER_PARAM, spt_DVBT2_GETFWVER_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetReg: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETREG_PARAM, spt_DVBT2_GETREG_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetReg: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_SETREG_PARAM, spt_DVBT2_SETREG_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetSerialControl: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_SETSERIALCONTROL_PARAM, spt_DVBT2_SETSERIALCONTROL_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetReset: u32Ret = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs); break; case DMD_DVBT2_DRV_CMD_SetConfig: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_SETCONFIG_PARAM, spt_DVBT2_SETCONFIG_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetActive: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_SETACTIVE_PARAM, spt_DVBT2_SETACTIVE_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetLock: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETLOCK_PARAM, spt_DVBT2_GETLOCK_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetSNR: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETSNR_PARAM, spt_DVBT2_GETSNR_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetPostLdpcBer: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETPOSTLDPCBER_PARAM, spt_DVBT2_GETPOSTLDPCBER_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetPreLdpcBer: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETPRELDPCBERP_PARAM, spt_DVBT2_GETPRELDPCBERP_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetPacketErr: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETPACKETERRPARAM, spt_DVBT2_GETPACKETERRPARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetL1Info: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETL1INFO_PARAM, spt_DVBT2_GETL1INFO_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetFreqOffset: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DMD_DVBT2_GETFREQOFFSET_PARAM, spt_DMD_DVBT2_GETFREQOFFSET_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetPowerState: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_SETPOWERSTATE_PARAM, spt_DVBT2_SETPOWERSTATE_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetPlpBitMap: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETPLPBITMAP_PARAM, spt_DVBT2_GETPLPBITMAP_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_GetPlpGroupID: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DVBT2_GETPLPGROUPID_PARAM, spt_DVBT2_GETPLPGROUPID_PARAM, buffer_arg, sizeof(buffer_arg)); break; case DMD_DVBT2_DRV_CMD_SetPlpID: u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_DMD_DVBT2_SETPLPID_PARAM, spt_DMD_DVBT2_SETPLPID_PARAM, buffer_arg, sizeof(buffer_arg)); break; default: break; } return u32Ret; // return UtopiaIoctl(pModuleDDI->pInstant,u32Cmd,arg); } MS_U32 DVBT2_adp_Init(FUtopiaIOctl* pIoctl) { //original parameter area UADP_SPT_BGN(&spt_DVBT2_8BYTE_PARAM[0],8); UADP_SPT_FIN(&spt_DVBT2_8BYTE_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_U32_VAL[0],sizeof(MS_U32)); UADP_SPT_FIN(&spt_DVBT2_U32_VAL[1]); UADP_SPT_BGN(&spt_DVBT2_U16_VAL[0],sizeof(MS_U16)); UADP_SPT_FIN(&spt_DVBT2_U16_VAL[1]); UADP_SPT_BGN(&spt_DVBT2_U8_VAL[0], sizeof(MS_U8)); UADP_SPT_FIN(&spt_DVBT2_U8_VAL[1]); UADP_SPT_BGN(&spt_DMD_DVBT2_InitData_Transform[0], sizeof(DMD_DVBT2_InitData_Transform)); UADP_SDT_KIND(&spt_DMD_DVBT2_InitData_Transform[1], DMD_DVBT2_InitData_Transform, UADP_SDT_P2N, u8DMD_DVBT2_DSPRegInitExt, spt_DVBT2_8BYTE_PARAM); UADP_SDT_KIND(&spt_DMD_DVBT2_InitData_Transform[2], DMD_DVBT2_InitData_Transform, UADP_SDT_P2N, u8DMD_DVBT2_InitExt, spt_DVBT2_8BYTE_PARAM); UADP_SPT_FIN(&spt_DMD_DVBT2_InitData_Transform[3]); UADP_SPT_BGN(&spt_DMD_DVBT2_Info[0],sizeof(DMD_DVBT2_Info)); UADP_SPT_FIN(&spt_DMD_DVBT2_Info[1]); UADP_SPT_BGN(&spt_DVBT2_MSIF_Version[0],sizeof(MSIF_Version)); UADP_SPT_FIN(&spt_DVBT2_MSIF_Version[1]); UADP_SPT_BGN(&spt_DMD_T2_LOCK_STATUS[0],sizeof(DMD_T2_LOCK_STATUS)); UADP_SPT_FIN(&spt_DMD_T2_LOCK_STATUS[1]); //ioctl parameter passing area UADP_SPT_BGN(&spt_DVBT2_INIT_PARAM[0],sizeof(DVBT2_INIT_PARAM)); UADP_SDT_KIND(&spt_DVBT2_INIT_PARAM[1],DVBT2_INIT_PARAM,UADP_SDT_P2N,pDMD_DVBT2_InitData,spt_DMD_DVBT2_InitData_Transform); UADP_SPT_FIN(&spt_DVBT2_INIT_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_EXIT_PARAM[0],sizeof(DVBT2_EXIT_PARAM)); UADP_SPT_FIN(&spt_DVBT2_EXIT_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_SETDBGLEVEL_PARAM[0],sizeof(DVBT2_SETDBGLEVEL_PARAM)); UADP_SPT_FIN(&spt_DVBT2_SETDBGLEVEL_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_GETINFO_PARAM[0],sizeof(DVBT2_GETINFO_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETINFO_PARAM[1],DVBT2_GETINFO_PARAM,UADP_SDT_P2N,pInfo,spt_DMD_DVBT2_Info); UADP_SPT_FIN(&spt_DVBT2_GETINFO_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETLIBVER_PARAM[0],sizeof(DVBT2_GETLIBVER_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETLIBVER_PARAM[1],DVBT2_GETLIBVER_PARAM,UADP_SDT_P2N,ppVersion,spt_DVBT2_MSIF_Version); UADP_SPT_FIN(&spt_DVBT2_GETLIBVER_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETFWVER_PARAM[0],sizeof(DVBT2_GETFWVER_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETFWVER_PARAM[1],DVBT2_GETFWVER_PARAM,UADP_SDT_P2N,ver,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETFWVER_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETREG_PARAM[0],sizeof(DVBT2_GETREG_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETREG_PARAM[1],DVBT2_GETREG_PARAM,UADP_SDT_P2N,pu8Data,spt_DVBT2_U8_VAL); UADP_SPT_FIN(&spt_DVBT2_GETREG_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_SETREG_PARAM[0],sizeof(DVBT2_SETREG_PARAM)); UADP_SPT_FIN(&spt_DVBT2_SETREG_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_SETSERIALCONTROL_PARAM[0],sizeof(DVBT2_SETSERIALCONTROL_PARAM)); UADP_SPT_FIN(&spt_DVBT2_SETSERIALCONTROL_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_SETCONFIG_PARAM[0],sizeof(DVBT2_SETCONFIG_PARAM)); UADP_SPT_FIN(&spt_DVBT2_SETCONFIG_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_SETACTIVE_PARAM[0],sizeof(DVBT2_SETACTIVE_PARAM)); UADP_SPT_FIN(&spt_DVBT2_SETACTIVE_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_GETLOCK_PARAM[0],sizeof(DVBT2_GETLOCK_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETLOCK_PARAM[1],DVBT2_GETLOCK_PARAM,UADP_SDT_P2N,eLockStatus,spt_DMD_T2_LOCK_STATUS); UADP_SPT_FIN(&spt_DVBT2_GETLOCK_PARAM[2]); #if 0 UADP_SPT_BGN(&spt_DVBT2_GETSIGNALSTRENGTHWITHRFPOWER_PARAM[0],sizeof(DVBT2_GETSIGNALSTRENGTHWITHRFPOWER_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETSIGNALSTRENGTHWITHRFPOWER_PARAM[1],DVBT2_GETSIGNALSTRENGTHWITHRFPOWER_PARAM,UADP_SDT_P2N,u16Strength,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETSIGNALSTRENGTHWITHRFPOWER_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETSIGNALQUALITYWITHRFPOWER_PARAM[0],sizeof(DVBT2_GETSIGNALQUALITYWITHRFPOWER_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETSIGNALQUALITYWITHRFPOWER_PARAM[1],DVBT2_GETSIGNALQUALITYWITHRFPOWER_PARAM,UADP_SDT_P2N,u16Quality,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETSIGNALQUALITYWITHRFPOWER_PARAM[2]); #endif UADP_SPT_BGN(&spt_DVBT2_GETSNR_PARAM[0],sizeof(DVBT2_GETSNR_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETSNR_PARAM[1],DVBT2_GETSNR_PARAM,UADP_SDT_P2N,u16_snr100,spt_DVBT2_U16_VAL); UADP_SDT_KIND(&spt_DVBT2_GETSNR_PARAM[2],DVBT2_GETSNR_PARAM,UADP_SDT_P2N,snr_cali,spt_DVBT2_U8_VAL); UADP_SDT_KIND(&spt_DVBT2_GETSNR_PARAM[3],DVBT2_GETSNR_PARAM,UADP_SDT_P2N,u8_gi,spt_DVBT2_U8_VAL); UADP_SPT_FIN(&spt_DVBT2_GETSNR_PARAM[4]); UADP_SPT_BGN(&spt_DVBT2_GETPOSTLDPCBER_PARAM[0],sizeof(DVBT2_GETPOSTLDPCBER_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETPOSTLDPCBER_PARAM[1],DVBT2_GETPOSTLDPCBER_PARAM,UADP_SDT_P2N,BitErr_reg,spt_DVBT2_U32_VAL); UADP_SDT_KIND(&spt_DVBT2_GETPOSTLDPCBER_PARAM[2],DVBT2_GETPOSTLDPCBER_PARAM,UADP_SDT_P2N,BitErrPeriod_reg,spt_DVBT2_U16_VAL); UADP_SDT_KIND(&spt_DVBT2_GETPOSTLDPCBER_PARAM[3],DVBT2_GETPOSTLDPCBER_PARAM,UADP_SDT_P2N,FecType,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETPOSTLDPCBER_PARAM[4]); UADP_SPT_BGN(&spt_DVBT2_GETPRELDPCBERP_PARAM[0],sizeof(DVBT2_GETPRELDPCBERPARAM)); UADP_SDT_KIND(&spt_DVBT2_GETPRELDPCBERP_PARAM[1],DVBT2_GETPRELDPCBERPARAM,UADP_SDT_P2N,BitErr_reg,spt_DVBT2_U32_VAL); UADP_SDT_KIND(&spt_DVBT2_GETPRELDPCBERP_PARAM[2],DVBT2_GETPRELDPCBERPARAM,UADP_SDT_P2N,BitErrPeriod_reg,spt_DVBT2_U16_VAL); UADP_SDT_KIND(&spt_DVBT2_GETPRELDPCBERP_PARAM[3],DVBT2_GETPRELDPCBERPARAM,UADP_SDT_P2N,FecType,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETPRELDPCBERP_PARAM[4]); UADP_SPT_BGN(&spt_DVBT2_GETPACKETERRPARAM[0],sizeof(DVBT2_GETPACKETERRPARAM)); UADP_SDT_KIND(&spt_DVBT2_GETPACKETERRPARAM[1],DVBT2_GETPACKETERRPARAM,UADP_SDT_P2N,pktErr,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETPACKETERRPARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETL1INFO_PARAM[0],sizeof(DVBT2_GETL1INFO_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETL1INFO_PARAM[1],DVBT2_GETL1INFO_PARAM,UADP_SDT_P2N,u16Info,spt_DVBT2_U16_VAL); UADP_SPT_FIN(&spt_DVBT2_GETL1INFO_PARAM[2]); UADP_SPT_BGN(&spt_DMD_DVBT2_GETFREQOFFSET_PARAM[0],sizeof(DVBT2_GETFREQOFFSET_PARAM)); UADP_SDT_KIND(&spt_DMD_DVBT2_GETFREQOFFSET_PARAM[1],DVBT2_GETFREQOFFSET_PARAM,UADP_SDT_P2N,CfoTd_reg,spt_DVBT2_U32_VAL); UADP_SDT_KIND(&spt_DMD_DVBT2_GETFREQOFFSET_PARAM[2],DVBT2_GETFREQOFFSET_PARAM,UADP_SDT_P2N,CfoFd_reg,spt_DVBT2_U32_VAL); UADP_SDT_KIND(&spt_DMD_DVBT2_GETFREQOFFSET_PARAM[3],DVBT2_GETFREQOFFSET_PARAM,UADP_SDT_P2N,Icfo_reg,spt_DVBT2_U32_VAL); UADP_SDT_KIND(&spt_DMD_DVBT2_GETFREQOFFSET_PARAM[4],DVBT2_GETFREQOFFSET_PARAM,UADP_SDT_P2N,fft_reg,spt_DVBT2_U8_VAL); UADP_SPT_FIN(&spt_DMD_DVBT2_GETFREQOFFSET_PARAM[5]); UADP_SPT_BGN(&spt_DVBT2_SETPOWERSTATE_PARAM[0],sizeof(DVBT2_SETPOWERSTATE_PARAM)); UADP_SPT_FIN(&spt_DVBT2_SETPOWERSTATE_PARAM[1]); UADP_SPT_BGN(&spt_DVBT2_GETPLPBITMAP_PARAM[0],sizeof(DVBT2_GETPLPBITMAP_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETPLPBITMAP_PARAM[1],DVBT2_GETPLPBITMAP_PARAM,UADP_SDT_P2N,u8PlpBitMap,spt_DVBT2_8BYTE_PARAM); UADP_SPT_FIN(&spt_DVBT2_GETPLPBITMAP_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETPLPGROUPID_PARAM[0],sizeof(DVBT2_GETPLPGROUPID_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETPLPGROUPID_PARAM[1],DVBT2_GETPLPGROUPID_PARAM,UADP_SDT_P2N,u8GroupID,spt_DVBT2_8BYTE_PARAM); UADP_SPT_FIN(&spt_DVBT2_GETPLPGROUPID_PARAM[2]); UADP_SPT_BGN(&spt_DVBT2_GETPLPGROUPID_PARAM[0],sizeof(DVBT2_GETPLPGROUPID_PARAM)); UADP_SDT_KIND(&spt_DVBT2_GETPLPGROUPID_PARAM[1],DVBT2_GETPLPGROUPID_PARAM,UADP_SDT_P2N,u8GroupID,spt_DVBT2_8BYTE_PARAM); UADP_SPT_FIN(&spt_DVBT2_GETPLPGROUPID_PARAM[2]); UADP_SPT_BGN(&spt_DMD_DVBT2_SETPLPID_PARAM[0],sizeof(DMD_DVBT2_SETPLPID_PARAM)); UADP_SPT_FIN(&spt_DMD_DVBT2_SETPLPID_PARAM[1]); *pIoctl= (FUtopiaIOctl)DVBT2_adp_Ioctl; return TRUE; }