//.................... class DTAPI_API DtDevice { // Constructor, destructor public: DtDevice(); virtual ~DtDevice(); // Public access functions public: virtual int Category(void); virtual int ChanType(int Port); virtual int FirmwareVersion(void); virtual bool IsAttached(void); virtual int TypeNumber(void); // Public member functions public: virtual DTAPI_RESULT AttachToIpAddr(unsigned char Ip[4]); virtual DTAPI_RESULT AttachToSerial(__int64 SerialNumber); virtual DTAPI_RESULT AttachToSlot(int PciBusNumber, int SlotNumber); virtual DTAPI_RESULT AttachToType(int TypeNumber, int DeviceNo=0); virtual DTAPI_RESULT Detach(void); virtual DTAPI_RESULT DetectIoStd(int Port, int& Value, int& SubValue); virtual DTAPI_RESULT FlashDisplay(int NumFlashes=5, int OnTime=100, int OffTime=100); virtual DTAPI_RESULT GetAttribute(int Port, int AttrId, int& AttrValue); virtual DTAPI_RESULT GetAttribute(int Port, int AttrId, DtModPars& ModParVals, int& AttrValue); virtual DTAPI_RESULT GetDescriptor(DtDeviceDesc& DvcDesc); virtual DTAPI_RESULT GetDeviceDriverVersion(int& Major, int& Minor, int& BugFix, int& Build); virtual DTAPI_RESULT GetDisplayName(wchar_t* pName); virtual DTAPI_RESULT GetDisplayName(char* pName); virtual DTAPI_RESULT GetFirmwareVersion(int& FirmwareVersion); virtual DTAPI_RESULT GetIoConfig(DtIoConfig& IoCfg); virtual DTAPI_RESULT GetIoConfig(int Port, int Group, int& Value); virtual DTAPI_RESULT GetIoConfig(int Port, int Group, int& Value, int& SubValue); virtual DTAPI_RESULT GetIoConfig(int Port, int Group, int& Value, int& SubValue, __int64& ParXtra0); virtual DTAPI_RESULT GetIoConfig(int Port, int Group, int& Value, int& SubValue, __int64& ParXtra0, __int64& ParXtra1); virtual DTAPI_RESULT GetNwSpeed(int Port, bool& Enable, int& Speed); virtual DTAPI_RESULT GetRefClkCnt(int& RefClkCnt); virtual DTAPI_RESULT GetRefClkCnt(int& RefClkCnt, int& RefClkFreqHz); virtual DTAPI_RESULT GetRefClkFreq(int& RefClkFreqHz); virtual DTAPI_RESULT GetUsbSpeed(int& UsbSpeed); virtual DTAPI_RESULT GetVcxoState(bool& Enable, int& Lock, int& VcxoClkFreqHz); virtual DTAPI_RESULT HwFuncScan(int NumEntries, int& NumEntriesResult, DtHwFuncDesc* pHwFuncs); virtual DTAPI_RESULT LedControl(int LedControl); virtual DTAPI_RESULT RegisterCallback(pDtEventCallback Callback, void* pContext, int EventTypes, void** pId = NULL); virtual DTAPI_RESULT SetDisplayName(wchar_t* pName); virtual DTAPI_RESULT SetDisplayName (char* pName); virtual DTAPI_RESULT SetIoConfig(int Port, int Group, int Value, int SubValue = -1, __int64 ParXtra0 = -1, __int64 ParXtra1 = -1); virtual DTAPI_RESULT SetIoConfig(DtIoConfig* pIoConfigs, int Count); virtual DTAPI_RESULT SetNwSpeed(int Port, bool Enable, int Speed); virtual DTAPI_RESULT UnregisterCallback(void* pId); virtual DTAPI_RESULT VpdDelete(const char* pTag); virtual DTAPI_RESULT VpdDelete(const wchar_t* pTag); virtual DTAPI_RESULT VpdRead(const char* pTag, char* pVpdItem); virtual DTAPI_RESULT VpdRead(const wchar_t* pTag, wchar_t* pVpdItem); virtual DTAPI_RESULT VpdRead(const char* pTag, char* pVpdItem, int& ItemSize); virtual DTAPI_RESULT VpdRead(const wchar_t* pTag, char* pVpdItem, int& ItemSize); virtual DTAPI_RESULT VpdWrite(const char* pTag, char* pVpdItem); virtual DTAPI_RESULT VpdWrite(const wchar_t* pTag, wchar_t* pVpdItem); virtual DTAPI_RESULT VpdWrite(const char* pTag, char* pVpdItem, int ItemSize); virtual DTAPI_RESULT VpdWrite(const wchar_t* pTag, char* pVpdItem, int ItemSize); protected: virtual void LoadDeviceData(); private: static void DtEventCallback(int Event, DtEventArgs* pArgs); // Public attributes public: DtDeviceDesc m_DvcDesc; // Device descriptor, initialized in attach DtHwFuncDesc* m_pHwf; // Hardware functions, initialized in attach // Implementation data private: std::list m_EventSubscriberList; // Friends friend class DtInpChannel; friend class DtOutpChannel; public: // TODOSD should be protected IDevice* m_pDev; }; // Attribute identifiers #define DTAPI_ATTR_LEVEL_MAX 1 #define DTAPI_ATTR_LEVEL_RANGE 2 #define DTAPI_ATTR_RFFREQ_ABSMAX 3 #define DTAPI_ATTR_RFFREQ_ABSMIN 4 #define DTAPI_ATTR_RFFREQ_MAX 5 #define DTAPI_ATTR_RFFREQ_MIN 6 #define DTAPI_ATTR_SAMPRHW_ABSMAX 7 #define DTAPI_ATTR_SAMPRHW_ABSMIN 8 #define DTAPI_ATTR_SAMPRHW_HARDLIM 9 #define DTAPI_ATTR_SAMPRHW_MAX 10 #define DTAPI_ATTR_SAMPRHW_MIN 11 #define DTAPI_ATTR_SAMPRATE_ABSMAX 12 #define DTAPI_ATTR_SAMPRATE_ABSMIN 13 #define DTAPI_ATTR_SAMPRATE_MAX 14 #define DTAPI_ATTR_SAMPRATE_MIN 15 // String conversion - Device type number (e.g. "DTA-100", "DTA-102") #define DTAPI_DVC2STR_TYPE_NMB 0 // String conversion - Device type number + location (e.g. "DTA-100 in slot 5"); #define DTAPI_DVC2STR_TYPE_AND_LOC 1 // String conversion - Device type number (e.g. "DTA-100", "DTA-102") #define DTAPI_HWF2STR_TYPE_NMB 0 // String conversion - Device type number + port (e.g. "DTA-124 port 1") #define DTAPI_HWF2STR_TYPE_AND_PORT 1 // String conversion - Device type number + location (e.g. "DTA-100 in slot 5"); #define DTAPI_HWF2STR_TYPE_AND_LOC 2 // String conversion - Interface type (e.g. "DVB-ASI" or "DVB-C") #define DTAPI_HWF2STR_ITF_TYPE 3 // String conversion - Short version of interface type (e.g. "ASI" instead "DVB-ASI") #define DTAPI_HWF2STR_ITF_TYPE_SHORT 4 // IP Tx / Rx FEC mode #define DTAPI_FEC_DISABLE 0 #define DTAPI_FEC_2D 1 // FEC reconstruction #define DTAPI_FEC_2D_M1 1 // Mode1: FECdT = DVBdT + .5 * DVBdT #define DTAPI_FEC_2D_M2 2 // Mode2: FECdT = DVBdT // Ethernet speed #define DTAPI_NWSPEED_AUTO 0 // Set #define DTAPI_NWSPEED_NOLIN 0 // Get #define DTAPI_NWSPEED_10MB_HALF 1 #define DTAPI_NWSPEED_10MB_FULL 2 #define DTAPI_NWSPEED_100MB_HALF 3 #define DTAPI_NWSPEED_100MB_FULL 4 #define DTAPI_NWSPEED_1GB_MASTER 5 #define DTAPI_NWSPEED_1GB_SLAVE 6 // IP Tx / Rx Protocol #define DTAPI_PROTO_UDP 0 #define DTAPI_PROTO_RTP 1 #define DTAPI_PROTO_AUTO 2 #define DTAPI_PROTO_UNKN 2 // Microcode upload states #define DTAPI_UCODE_NOT_LOADED 0 #define DTAPI_UCODE_LOADING 1 #define DTAPI_UCODE_LOADED 2 //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtInpChannel -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- // // Class to represent an input channel // class DTAPI_API DtInpChannel { public: DtInpChannel(); virtual ~DtInpChannel(); public: DtHwFuncDesc m_HwFuncDesc; // Hardware function descriptor // Convenience functions public: int Category(void) { return m_HwFuncDesc.m_DvcDesc.m_Category; } int FirmwareVersion(void) { return m_HwFuncDesc.m_DvcDesc.m_FirmwareVersion; } bool IsAttached(void) { return m_pInp != NULL; } int TypeNumber(void) { return m_HwFuncDesc.m_DvcDesc.m_TypeNumber; } public: DTAPI_RESULT AttachToPort(DtDevice* pDtDvc, int Port, bool Exclusive=true, bool ProbeOnly=false); DTAPI_RESULT BlindScan(int NumEntries, int& NumEntriesResult, DtTransmitter* pScanResults, __int64 FreqHzSteps=10000000LL, __int64 StartFreqHz=950000000LL, __int64 EndFreqHz=2150000000LL); DTAPI_RESULT ClearFifo(); DTAPI_RESULT ClearFlags(int Latched); DTAPI_RESULT Detach(int DetachMode); DTAPI_RESULT DetectIoStd(int& Value, int& SubValue); DTAPI_RESULT Equalise(int EqualiserSetting); DTAPI_RESULT GetConstellationPoints(int NumPoints, DtConstelPoint* pPoint); DTAPI_RESULT GetDemodControl(int& ModType, int& ParXtra0, int& ParXtra1, int& ParXtra2); DTAPI_RESULT GetDemodControl(DtDemodPars* pDemodPars); DTAPI_RESULT GetDescriptor(DtHwFuncDesc& HwFunDesc); DTAPI_RESULT GetFifoLoad(int& FifoLoad); DTAPI_RESULT GetFlags(int& Flags, int& Latched); DTAPI_RESULT GetIoConfig(int Group, int& Value); DTAPI_RESULT GetIoConfig(int Group, int& Value, int& SubValue); DTAPI_RESULT GetIoConfig(int Group, int& Value, int& SubValue, __int64& ParXtra0); DTAPI_RESULT GetIoConfig(int Group, int& Value, int& SubValue, __int64& ParXtra0, __int64& ParXtra1); DTAPI_RESULT GetIpPars(DtTsIpPars* pTsIpPars); DTAPI_RESULT GetIpStat(DtTsIpStat* pTsIpStat); DTAPI_RESULT GetMaxFifoSize(int& MaxFifoSize); DTAPI_RESULT GetRxClkFreq(int& RxClkFreq); DTAPI_RESULT GetRxControl(int& RxControl); DTAPI_RESULT GetRxMode(int& RxMode); DTAPI_RESULT GetStatistics(int Count, DtStatistic* pStatistics); DTAPI_RESULT GetStatistic(int Type, int& Statistic); DTAPI_RESULT GetStatistic(int Type, double& Statistic); DTAPI_RESULT GetStatistic(int Type, bool& Statistic); DTAPI_RESULT GetStatus(int& PacketSize, int& NumInv, int& ClkDet, int& AsiLock, int& RateOk, int& AsiInv); DTAPI_RESULT GetSupportedStatistics(int& Count, DtStatistic* pStatistics); DTAPI_RESULT GetTargetId(int& Present, int& TargetId); DTAPI_RESULT GetTsRateBps(int& TsRate); DTAPI_RESULT GetTunerFrequency(__int64& FreqHz); DTAPI_RESULT GetViolCount(int& ViolCount); DTAPI_RESULT I2CLock(int TimeOut); DTAPI_RESULT I2CUnlock(void); DTAPI_RESULT I2CRead(int DvcAddr, char* pBuffer, int NumBytesToRead); DTAPI_RESULT I2CWrite(int DvcAddr, char* pBuffer, int NumBytesToWrite); DTAPI_RESULT LedControl(int LedControl); DTAPI_RESULT LnbEnable(bool Enable); DTAPI_RESULT LnbEnableTone(bool Enable); DTAPI_RESULT LnbSetVoltage(int Level); DTAPI_RESULT LnbSendBurst(int BurstType); DTAPI_RESULT LnbSendDiseqcMessage(const unsigned char* MsgOut, int NumBytesOut); DTAPI_RESULT LnbSendDiseqcMessage(const unsigned char* MsgOut, int NumBytesOut, unsigned char* MsgIn, int& NumBytesIn); DTAPI_RESULT PolarityControl(int Polarity); DTAPI_RESULT Read(char* pBuffer, int NumBytesToRead); DTAPI_RESULT Read(char* pBuffer, int NumBytesToRead, int TimeOut); DTAPI_RESULT ReadFrame(unsigned int* pFrame, int& FrameSize, int TimeOut=-1); DTAPI_RESULT RegisterDemodCallback(IDtDemodEvent* pIEvent, __int64 Events=-1); DTAPI_RESULT Reset(int ResetMode); DTAPI_RESULT SetAdcSampleRate(int SampleRate); DTAPI_RESULT SetAntPower(int AntPower); DTAPI_RESULT SetDemodControl(int ModType, int ParXtra0, int ParXtra1, int ParXtra2); DTAPI_RESULT SetDemodControl(DtDemodPars *pDemodPars); DTAPI_RESULT SetErrorStatsMode(int ModType, int Mode); DTAPI_RESULT SetIoConfig(int Group, int Value, int SubValue, __int64 ParXtra0 = -1, __int64 ParXtra1 = -1); DTAPI_RESULT SetIpPars(DtTsIpPars* pTsIpPars); DTAPI_RESULT SetRxControl(int RxControl); DTAPI_RESULT SetRxMode(int RxMode); DTAPI_RESULT SetTunerFrequency(__int64 FreqHz); DTAPI_RESULT Tune(__int64 FreqHz, int ModType, int ParXtra0, int ParXtra1, int ParXtra2); DTAPI_RESULT Tune(__int64 FreqHz, DtDemodPars *pDemodPars); // Encapsulated data private: IXpMutex* m_pMTLock; // Multi-threading lock for Get/Read functions void* m_pDetachLockCount; int m_Port; bool m_WantToDetach; public: // TODOSD should be protected InpChannel* m_pInp; // Input channel implementation // Private helper functions private: DTAPI_RESULT DetachLock(void); DTAPI_RESULT DetachUnlock(void); DTAPI_RESULT ReadAccessLock(void); DTAPI_RESULT ReadAccessUnlock(void); DTAPI_RESULT ReadWithTimeOut(char* pBuf, int NumBytesToRead, int TimeOut = -1); }; ........................