AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2spiinterface.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
7 #ifndef NTV2SPIINTERFACE_H
8 #define NTV2SPIINTERFACE_H
9 
10 #include "ntv2card.h"
11 
12 typedef enum
13 {
20 
21  SPI_FLASH_SECTION_TOTAL // should be at end, represents the whole flash chip
23 
25 {
26 public:
27  CNTV2SpiFlash(bool verbose = false) : mVerbose(verbose) {}
28  virtual ~CNTV2SpiFlash() {}
29 
30  virtual bool Read(const uint32_t address, std::vector<uint8_t> &data, uint32_t maxBytes = 1) = 0;
31  virtual bool Write(const uint32_t address, const std::vector<uint8_t> data, uint32_t maxBytes = 1) = 0;
32  virtual bool Erase(const uint32_t address, uint32_t bytes) = 0;
33  virtual bool Verify(const uint32_t address, const std::vector<uint8_t>& dataWritten) = 0;
34  virtual uint32_t Size(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL) = 0;
35  virtual uint32_t Offset(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL) = 0;
36  virtual void SetVerbosity(bool verbose) {mVerbose = verbose;}
37  virtual bool GetVerbosity() {return mVerbose;}
38 
39  static bool DeviceSupported(NTV2DeviceID deviceId) {(void)deviceId; return false;}
40 
41 protected:
42  bool mVerbose;
43 };
44 
46 {
47 public:
48  CNTV2AxiSpiFlash(int index = 0, bool verbose = false);
49  virtual ~CNTV2AxiSpiFlash();
50 
51  // common flash interface
52  virtual bool Read(const uint32_t address, std::vector<uint8_t> &data, uint32_t maxBytes = 1);
53  virtual bool Write(const uint32_t address, const std::vector<uint8_t> data, uint32_t maxBytes = 1);
54  virtual bool Erase(const uint32_t address, uint32_t bytes);
55  virtual bool Verify(const uint32_t address, const std::vector<uint8_t>& dataWritten);
56  virtual uint32_t Size(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL);
57  virtual uint32_t Offset(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL);
58  static bool DeviceSupported(NTV2DeviceID deviceId);
59 
60  // Axi specific
61 private:
62  bool NTV2DeviceOk();
63 
64  void SpiReset();
65  bool SpiResetFifos();
66  void SpiEnableWrite(bool enable);
67  void SpiSendFIFOData();
68  bool SpiTransfer(std::vector<uint8_t> commandSequence,
69  const std::vector<uint8_t> inputData,
70  std::vector<uint8_t>& outputData, uint32_t maxByteCutoff = 1);
71 
72  bool FlashDeviceInfo(uint8_t& manufactureID, uint8_t& memInerfaceType,
73  uint8_t& memDensity, uint8_t& sectorArchitecture,
74  uint8_t& familyID);
75  bool FlashReadConfig(uint8_t& configValue);
76  bool FlashReadStatus(uint8_t& statusValue);
77  bool FlashReadBankAddress(uint8_t& bankAddressVal);
78  bool FlashWriteBankAddress(const uint8_t bankAddressVal);
79 
80  void FlashFixAddress(const uint32_t address, std::vector<uint8_t>& commandSequence);
81 
82  uint32_t mBaseByteAddress;
83  uint32_t mSize;
84  uint32_t mSectorSize;
85 
86  CNTV2Card mDevice;
87 
88  uint32_t mManufactureID;
89  uint32_t mSpiResetReg;
90  uint32_t mSpiControlReg;
91  uint32_t mSpiStatusReg;
92  uint32_t mSpiWriteReg;
93  uint32_t mSpiReadReg;
94  uint32_t mSpiSlaveReg;
95  uint32_t mSpiGlobalIntReg;
96 };
97 
98 #endif // NTV2SPIINTERFACE_H
static bool DeviceSupported(NTV2DeviceID deviceId)
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
virtual ~CNTV2SpiFlash()
virtual uint32_t Size(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)=0
virtual uint32_t Offset(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)
virtual bool Verify(const uint32_t address, const std::vector< uint8_t > &dataWritten)=0
virtual bool Read(const uint32_t address, std::vector< uint8_t > &data, uint32_t maxBytes=1)=0
virtual bool Erase(const uint32_t address, uint32_t bytes)=0
virtual uint32_t Size(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
CNTV2AxiSpiFlash(int index=0, bool verbose=(0))
virtual bool Write(const uint32_t address, const std::vector< uint8_t > data, uint32_t maxBytes=1)=0
virtual bool Erase(const uint32_t address, uint32_t bytes)
CNTV2SpiFlash(bool verbose=(0))
virtual bool Read(const uint32_t address, std::vector< uint8_t > &data, uint32_t maxBytes=1)
virtual bool GetVerbosity()
static bool DeviceSupported(NTV2DeviceID deviceId)
virtual uint32_t Offset(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)=0
SpiFlashSection
Declares the CNTV2Card class.
virtual void SetVerbosity(bool verbose)
virtual bool Write(const uint32_t address, const std::vector< uint8_t > data, uint32_t maxBytes=1)
virtual bool Verify(const uint32_t address, const std::vector< uint8_t > &dataWritten)