AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2macpublicinterface.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2MACPUBLICINTERFACE_H
9 #define NTV2MACPUBLICINTERFACE_H
10 
11 #if !defined (NTV2_BUILDING_DRIVER)
12  #include <IOKit/IOKitLib.h> // Defines IOReturn
13 #endif
14 
15 
16 // Our custom driver IOReturn codes:
17 const IOReturn kNTV2DriverBadDMA = 0x04430011; // Bad dmaEngine number
18 const IOReturn kNTV2DriverDMABusy = 0x04430012; // Selected DMA busy or none available
19 const IOReturn kNTV2DriverParamErr = 0x04430013; // Bad parameter (out of range)
20 const IOReturn kNTV2DriverPgmXilinxErr = 0x04430014; // Xilinx programming error - see system log for details
21 const IOReturn kNTV2DriverNotReadyErr = 0x04430015; // Xilinx not programmed yet
22 const IOReturn kNTV2DriverPrepMemErr = 0x04430016; // Error preparing memory (no room),
23 const IOReturn kNTV2DriverPgmPPCErr = 0x04430017; // PPC programming error - see system log for details
24 const IOReturn kNTV2DriverDMATooLarge = 0x04430018; // DMA transfer is too large, or completing (dataPtr not found),
25  // or attempt to use outside of range
26 const IOReturn kNTV2DriverBadHeaderTag = 0x04430019; // Bad header tag
27 const IOReturn kNTV2UnknownStructType = 0x0443001A; // Unknown struct type
28 const IOReturn kNTV2HeaderVersionErr = 0x0443001B; // Bad or unsupported header version
29 const IOReturn kNTV2DriverBadTrailerTag= 0x0443001C; // Bad trailer tag
30 const IOReturn kNTV2DriverMapperErr = 0x0443001D; // Failure while mapping NTV2_POINTERs
31 const IOReturn kNTV2DriverUnmapperErr = 0x0443001E; // Failure while unmapping NTV2_POINTERs
32 const IOReturn kNTV2DriverMsgConvErr = 0x0443001F; // NTV2Message conversion failure
33 
34 
35 // Driver command function codes
36 typedef enum
37 {
40  kDriverGetDrvrVersion = 2, // Unsupported starting in 15.0
47  kDriverSetAVSyncPattern = 9, // Unsupported starting in 15.2
48  kDriverTriggerAVSync = 10, // Unsupported starting in 15.2
55  kDriverSetBitFileInformation = 17, // Unsupported starting in 12.4
56  kDriverGetBitFileInformation = 18, // Unsupported starting in 12.4
63  kDriverSetDefaultDeviceForPID = 25, // Unsupported when classic QuickTime dropped after SDK 14
64  kDriverIsDefaultDeviceForPID = 26, // Unsupported when classic QuickTime dropped after SDK 14
71  kDriverReadAudioBuffer = 33, // Unsupported starting in 15.2
72  kDriverNTV2Message = 34, // Added in 12.0 -- all new driver functionality goes thru this NTV2Message call
73  kDriverWaitForInterruptDQ = 35, // Added in 17.1
74  kNumberUserClientCommands // number of driver commands
76 
77 
78 // Memory types for IOConnectMapMemory
79 
80 typedef enum
81 {
85 
86  kNumberMemoryType // number of Memory types
87 } MemoryType;
88 
89 typedef enum
90 {
97 
102 } InterruptType;
103 
104 typedef enum
105 {
106  kDMANone = 0, // Use PIO
107  kDMA1 = 1,
108  kDMA2 = 2,
109  kDMA3 = 3,
110  kDMA4 = 4,
111  kDMAAuto = 99 // Auto DMA selection
112 } DMAEngine;
113 
114 
115 // Virtual registers
116 #include "ntv2virtualregisters.h"
117 
118 #define AUDIO_MAX_SAMPLING_RATE_PER_MS 48
119 
120 // Some IoHD specific registers
121 enum
122 {
123  // isoch global
126  kRegLocalRegBaseAddrHi = 2050, // our local base register used for delivery of interrupts
127  kRegLocalRegBaseAddrLo = 2051, // our local base register used for delivery of interrupts
128 
129  // ischo ch1 video
133 
134  // isoch ch1 audio
135  kRegIsochAudioCh1Status = 2056, // hardwired to be the audio playback channel
138 
139  // isoch ch2 audio
140  kRegIsochAudioCh2Status = 2060, // hardwired to be the audio capture channel
143 
144  // misc
145  kRegFireWireErrors = 2064, // Read - crc errors [0:15], runt packets [16:31]
146  kRegAudioBufferSize = 2065, // audio buffer size
147  kRegAudioPlaybackControl = 2066, // audio playuback control
148 
149  // AV bitfile select
150  kRegAVBitFileCSR = 2068, // AV bitfile control and status - currently loaded AV bitfile (read / write)
151  kRegBitFileBusy = 2069, // Set true when busy during bitfile loading (read only)
152  kRegGetBitFileInfoSelect = 2070, // which bitfile we want info (write only)
153  kRegUserState1 = 2071, // contains user state info (Primary/Secondary format, Input select)
154 
155  kRegVideoDelay = 2072, // video delay register
156 
157  // firmware updates
158  kRegUpdateControl = 2112, // Update control register
159  //kRegUpdateSoftwareVersion = 2113, // Software version
160  //kRegUpdateProductVersion = 2114, // Product version
161  kRegUpdateBitFileCommand = 2115, // Which bitfile will be updated (write only)
162  kRegUpdateCRC = 2116, // CRC register
163  kRegUpdateStatus = 2117, // Status register
164  kRegSerialNumber = 2118, // Serial register 2 quadlet, 8 bytes
165  kRegUpdateData = 2120, // data 128(0x80) quadlets, or 512(0x200) bytes, thru 0x8d0
166 
167  // NOTE: THIS VALUE HAS TO MATCH WHAT IS RETURNED BY NTV2DeviceGetMaxRegisterNumber
169 };
170 
171 
172 // isoch streams (channels)
174 {
179 };
180 
181 // update register values
182 enum
183 {
184  //kMaskStandBusyStatus
187 
188  // kMaskStandAloneMode
193 };
194 
195 #endif // NTV2MACPUBLICINTERFACE_H
const IOReturn kNTV2DriverParamErr
const IOReturn kNTV2DriverBadDMA
const IOReturn kNTV2HeaderVersionErr
const IOReturn kNTV2DriverDMABusy
const IOReturn kNTV2DriverMapperErr
const IOReturn kNTV2DriverBadHeaderTag
const IOReturn kNTV2DriverPrepMemErr
const IOReturn kNTV2DriverDMATooLarge
const IOReturn kNTV2DriverBadTrailerTag
const IOReturn kNTV2UnknownStructType
const IOReturn kNTV2DriverMsgConvErr
const IOReturn kNTV2DriverNotReadyErr
const IOReturn kNTV2DriverPgmPPCErr
const IOReturn kNTV2DriverPgmXilinxErr
const IOReturn kNTV2DriverUnmapperErr
Declares enums for virtual registers used in all platform drivers and the SDK.
UserClientCommandCodes