📄 bt8xxaccess.hpp
字号:
#ifndef __BT8XXACCESS_HPP
#define __BT8XXACCESS_HPP
#include "CLibrary.hpp"
#include "DSDrv.h" // DScaler driver...
// Our class to access the Bt8xx hardware registers
class CBt8xxAccess {
private:
CLibrary DLL; // The DLL we use if we can't find the VXD
DWORD dwChip; // Chip model
DWORD dwRevision; // Revision number of the Chip
DWORD dwSubsystem; // Subsystem of the chip (if present)
// Pointers to the required fns of the DLL
struct {
PIsDriverOpened isDriverOpened;
PPCIGetHardwareResources pciGetHardwareResources;
PMemoryAlloc memoryAlloc;
PMemoryFree memoryFree;
PMemoryMap memoryMap;
PMemoryMap memoryUnmap;
PMemoryRead memoryReadBYTE;
PMemoryRead memoryReadWORD;
PMemoryRead memoryReadDWORD;
PMemoryWrite memoryWriteBYTE;
PMemoryWrite memoryWriteWORD;
PMemoryWrite memoryWriteDWORD;
} dTVDrv;
DWORD dwMemoryBase; // The base address to access the Bt8xx hardware
DWORD dwMemoryLength;
DWORD dwPhysicalAddress; // Physical Address of the registers of the Bt8xx chip
public:
CBt8xxAccess();
~CBt8xxAccess();
bool IsInitOK() const { return dwMemoryBase != 0; }
// To access memory Mapped registers of the Btxxx chipset
DWORD ReadDWORD(const DWORD Offset) { return dTVDrv.memoryReadDWORD(Offset) ; }
void WriteDWORD(const DWORD Offset,const DWORD Value) { dTVDrv.memoryWriteDWORD(Offset,Value); }
WORD ReadWORD(const DWORD Offset) { return WORD(dTVDrv.memoryReadWORD(Offset)) ; }
void WriteWORD(const DWORD Offset,const WORD Value) { dTVDrv.memoryWriteWORD(Offset,Value); }
BYTE ReadBYTE(const DWORD Offset) { return BYTE(dTVDrv.memoryReadBYTE(Offset)) ; }
void WriteBYTE(const DWORD Offset,const BYTE Value) { dTVDrv.memoryWriteBYTE(Offset,Value); }
// Some functions to access the internal data
DWORD ChipModel() const { return dwChip; }
DWORD ChipRevision() const { return dwRevision; }
DWORD ChipSubsystem() const { return dwSubsystem; }
// Some useful fns to access the hardware!
DWORD GetGPDATA() { return ReadDWORD(0x200) & 0xFFFFFF; }
DWORD GetGPOE() { return ReadDWORD(0x118) & 0xFFFFFF; }
DWORD GetMux() { return (ReadBYTE(0x004) & 0x60) >> 5; }
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -