 |
AJA NTV2 SDK
18.0.0.2717
NTV2 SDK 18.0.0.2717
|
Go to the documentation of this file.
24 #if !defined (NTV2_NULL_DEVICE)
27 #include <mach/mach.h>
29 #endif // !defined (NTV2_NULL_DEVICE)
34 static const char *
GetKernErrStr (
const kern_return_t inError);
43 #define HEX2(__x__) xHEX0N(0xFF & uint8_t (__x__),2)
44 #define HEX4(__x__) xHEX0N(0xFFFF & uint16_t(__x__),4)
45 #define HEX8(__x__) xHEX0N(0xFFFFFFFF & uint32_t(__x__),8)
46 #define HEX16(__x__) xHEX0N(uint64_t(__x__),16)
47 #define KR(_kr_) "kernResult=" << HEX8(_kr_) << "(" << GetKernErrStr(_kr_) << ")"
48 #define INSTP(_p_) HEX0N(uint64_t(_p_),16)
50 #define DIFAIL(__x__) AJA_sERROR (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
51 #define DIWARN(__x__) AJA_sWARNING(AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
52 #define DINOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
53 #define DIINFO(__x__) AJA_sINFO (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
54 #define DIDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
56 #define MDIFAIL(__x__) AJA_sERROR (AJA_DebugUnit_DriverInterface, AJAFUNC << ": " << __x__)
57 #define MDIWARN(__x__) AJA_sWARNING(AJA_DebugUnit_DriverInterface, AJAFUNC << ": " << __x__)
58 #define MDINOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_DriverInterface, AJAFUNC << ": " << __x__)
59 #define MDIINFO(__x__) AJA_sINFO (AJA_DebugUnit_DriverInterface, AJAFUNC << ": " << __x__)
60 #define MDIDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, AJAFUNC << ": " << __x__)
63 #if !defined (NTV2_NULL_DEVICE)
65 #define OS_IOMasterPort(_x_,_y_) ::IOMasterPort ((_x_), (_y_))
66 #define OS_IOServiceOpen(_w_,_x_,_y_,_z_) ::IOServiceOpen((_w_), (_x_), (_y_), (_z_))
67 #define OS_IOServiceClose(_x_) ::IOServiceClose ((_x_))
68 #define OS_IOServiceMatching(_x_) ::IOServiceMatching ((_x_))
69 #define OS_IOServiceNameMatching(_x_) ::IOServiceNameMatching((_x_))
70 #define OS_IOServiceGetMatchingServices(_x_,_y_,_z_) ::IOServiceGetMatchingServices ((_x_), (_y_), (_z_))
71 #define OS_IOIteratorNext(_x_) ::IOIteratorNext ((_x_))
72 #define OS_IOObjectRelease(_x_) ::IOObjectRelease ((_x_))
73 #define OS_IORegistryEntryCreateCFProperty(_w_,_x_,_y_,_z_) ::IORegistryEntryCreateCFProperty ((_w_), (_x_), (_y_), (_z_))
74 #define OS_IOConnectCallMethod(_q_,_r_,_s_,_t_,_u_,_v_,_w_,_x_,_y_,_z_) ::IOConnectCallMethod ((_q_), (_r_), (_s_), (_t_), (_u_), (_v_), (_w_), (_x_), (_y_), (_z_))
75 #define OS_IOConnectCallScalarMethod(_u_,_v_,_w_,_x_,_y_,_z_) ::IOConnectCallScalarMethod ((_u_), (_v_), (_w_), (_x_), (_y_), (_z_))
76 #define OS_IOConnectCallStructMethod(_u_,_v_,_w_,_x_,_y_,_z_) ::IOConnectCallStructMethod ((_u_), (_v_), (_w_), (_x_), (_y_), (_z_))
77 #define OS_IOConnectMapMemory(_u_,_v_,_w_,_x_,_y_,_z_) ::IOConnectMapMemory ((_u_), (_v_), (_w_), (_x_), (_y_), (_z_))
78 #define OS_IOKitGetBusyState(_x_,_y_) ::IOKitGetBusyState ((_x_), (_y_))
79 #define OS_IOKitWaitQuiet(_x_,_y_) ::IOKitWaitQuiet ((_x_), (_y_))
80 #else // NTV2_NULL_DEVICE defined
83 static IOReturn
OS_IOMasterPort (
const mach_port_t inPort, mach_port_t * pOutPort)
85 MDIWARN(
"NTV2_NULL_DEVICE -- will not connect to IOKit");
90 static kern_return_t
OS_IOServiceOpen (
const io_service_t inSvc,
const task_port_t inTask,
const uint32_t inType, io_connect_t * pOutConn)
92 if (pOutConn) *pOutConn = 0;
117 static CFTypeRef
OS_IORegistryEntryCreateCFProperty (
const io_registry_entry_t inEntry,
const CFStringRef inKey,
const CFAllocatorRef inAllocator,
const IOOptionBits inOptions)
121 static IOReturn
OS_IOConnectCallScalarMethod (
const mach_port_t inConnect,
const uint32_t inSelector,
const uint64_t * pInput,
const uint32_t inCount, uint64_t * pOutput, uint32_t * pOutCount)
123 if (pOutput) *pOutput = 0;
124 if (pOutCount) *pOutCount = 0;
127 static kern_return_t
OS_IOConnectCallMethod (
const mach_port_t inConnect,
const uint32_t inSelector,
const uint64_t * pInput, uint32_t inputCnt,
const void * pInStruct,
const size_t inStructCnt, uint64_t * pOutput, uint32_t * pOutputCnt,
void * pOutStruct,
size_t * pOutStructCnt)
137 static IOReturn
OS_IOKitWaitQuiet (
const mach_port_t inPort,
const mach_timespec_t * pInOutWait)
141 static IOReturn
OS_IOConnectCallStructMethod (
const io_connect_t inPort,
const uint32_t inSelector,
const void *inputStruct,
size_t inputStructCnt,
void *pOutStruct,
size_t *pOutStructCnt)
145 static kern_return_t
OS_IOConnectMapMemory (
const io_connect_t inPort,
const uint32_t inMemType,
const task_port_t inTask, mach_vm_address_t * pAddr, mach_vm_size_t * pOutSize,
const IOOptionBits inOpts)
149 #endif // NTV2_NULL_DEVICE defined
172 #if !defined(NTV2_NULL_DEVICE)
179 io_iterator_t ioIterator (0);
180 IOReturn error (kIOReturnSuccess);
181 io_object_t ioObject (0);
182 #if defined(NTV2_MACOS_SANDBOX)
184 static const size_t kNumSvcNames = 1;
187 static const size_t kNumSvcNames = 2;
190 for (
size_t svcNdx(0); svcNdx < kNumSvcNames && !mConnection; svcNdx++)
192 const string & svcName (kSvcNames[svcNdx]);
193 const char * pSvcName(svcName.c_str());
194 #if !defined(NTV2_MACOS_SANDBOX)
195 const bool tryKEXT (svcName.find(
"com_aja_iokit") != string::npos);
200 #
if defined(NTV2_MACOS_SANDBOX)
206 if (error != kIOReturnSuccess)
207 {
DIWARN(
KR(error) <<
": No '" << svcName <<
"' driver");
continue;}
221 DIWARN(
"No '" << svcName <<
"' devices");
228 if (error != kIOReturnSuccess)
229 {
DIWARN(
KR(error) <<
": IOServiceOpen failed for '" << svcName <<
"' ndx=" << inDeviceIndex);
continue;}
231 #if defined(NTV2_MACOS_SANDBOX)
238 _boardOpened = mConnection != 0;
240 DIDBG((mIsDEXT ?
"DEXT" :
"KEXT") <<
" ndx=" << inDeviceIndex <<
" conn=" <<
HEX8(GetIOConnect()) <<
" opened");
242 {
DIFAIL(
INSTP(
this) <<
": No connection: ndx=" << inDeviceIndex);
return false;}
244 setDeviceIndexNumber (inDeviceIndex);
247 DIFAIL(
"ReadRegister(kRegBoardID) failed: ndx=" << inDeviceIndex <<
" con=" <<
HEX8(GetIOConnect()) <<
" boardID=" <<
HEX8(_boardID));
262 DIDBG(
"Closed " << (mIsDEXT ?
"DEXT" :
"KEXT") <<
" ndx=" << GetIndexNumber() <<
" con=" <<
HEX8(GetIOConnect()) <<
" id=" << ::
NTV2DeviceIDToString(_boardID));
263 _boardOpened =
false;
272 #endif // !defined(NTV2_NULL_DEVICE)
275 #if !defined(NTV2_DEPRECATE_16_0)
299 _pCh1FrameBaseAddress = _pCh2FrameBaseAddress =
AJA_NULL;
302 _pFrameBaseAddress =
reinterpret_cast<ULWord*
>(baseAddr);
309 _pCh1FrameBaseAddress = _pCh2FrameBaseAddress =
AJA_NULL;
324 _pRegisterBaseAddress =
reinterpret_cast<ULWord*
>(baseAddr);
345 _pXena2FlashBaseAddress =
reinterpret_cast<ULWord*
>(baseAddr);
365 mach_vm_size_t size(0);
367 reinterpret_cast<mach_vm_address_t*
>(memPtr),
368 &size, kIOMapDefaultCache | kIOMapAnywhere);
379 kern_return_t kernResult = KERN_FAILURE;
380 uint64_t scalarI_64[2] = {uint64_t(dataPtr), controlCode};
381 uint32_t outputCount = 0;
383 kernResult = KERN_INVALID_ARGUMENT;
384 else if (GetIOConnect())
391 if (kernResult == KERN_SUCCESS)
393 DIFAIL (
KR(kernResult) <<
", con=" <<
HEX8(GetIOConnect()));
396 #endif // !defined(NTV2_DEPRECATE_16_0)
398 #pragma mark - New Driver Calls
409 DIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
412 #if defined (NTV2_NUB_CLIENT_SUPPORT)
415 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
416 kern_return_t kernResult(KERN_FAILURE);
417 uint64_t scalarI_64[3] = {inRegNum, inMask, inShift};
418 uint64_t scalarO_64 = outValue;
419 uint32_t outputCount = 1;
431 if (kernResult != KERN_SUCCESS)
433 DIFAIL(
KR(kernResult) <<
": ndx=" << GetIndexNumber() <<
", con=" <<
HEX8(GetIOConnect())
434 <<
" -- reg=" <<
DEC(inRegNum) <<
", mask=" <<
HEX8(inMask) <<
", shift=" <<
HEX8(inShift));
437 outValue = uint32_t(scalarO_64);
438 #if defined(NTV2_PRETEND_DEVICE)
439 if (inRegNum ==
kRegBoardID && outValue == NTV2_PRETEND_DEVICE_FROM)
440 outValue =
ULWord(NTV2_PRETEND_DEVICE_TO);
443 #endif // NTV2_PRETEND_DEVICE
458 DIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
461 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
462 if (mRecordRegWrites)
465 mRegWrites.push_back(
NTV2RegInfo(inRegNum, inValue, inMask, inShift));
469 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
470 #if defined(NTV2_NUB_CLIENT_SUPPORT)
473 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
474 kern_return_t kernResult(KERN_FAILURE);
475 uint64_t scalarI_64[4] = {inRegNum, inValue, inMask, inShift};
476 uint32_t outputCount = 0;
488 if (kernResult == KERN_SUCCESS)
490 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()) <<
" -- reg=" << inRegNum
491 <<
", val=" <<
HEX8(inValue) <<
", mask=" <<
HEX8(inMask) <<
", shift=" <<
HEX8(inShift));
507 #if defined(NTV2_NUB_CLIENT_SUPPORT)
510 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
516 <<
" uninitialized by AJAAgent, requesting app " <<
xHEX0N(appType,8) <<
", pid=" <<
DEC(pid));
518 kern_return_t kernResult = KERN_FAILURE;
519 uint64_t scalarI_64[2] = {uint64_t(appType), uint64_t(pid)};
520 uint32_t outputCount = 0;
530 if (kernResult == KERN_SUCCESS)
532 DIFAIL(
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
542 #if defined(NTV2_NUB_CLIENT_SUPPORT)
545 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
546 kern_return_t kernResult = KERN_FAILURE;
547 uint64_t scalarI_64[2] = {uint64_t(appType), uint64_t(pid)};
548 uint32_t outputCount = 0;
558 if (kernResult == KERN_SUCCESS)
560 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
577 #if defined(NTV2_NUB_CLIENT_SUPPORT)
580 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
586 <<
" uninitialized by AJAAgent, requesting app " <<
xHEX0N(appType,8) <<
", pid=" <<
DEC(pid));
588 kern_return_t kernResult = KERN_FAILURE;
589 uint64_t scalarI_64[2] = {uint64_t(appType), uint64_t(pid)};
590 uint32_t outputCount = 0;
600 if (kernResult == KERN_SUCCESS)
602 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
615 #if defined(NTV2_NUB_CLIENT_SUPPORT)
618 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
619 kern_return_t kernResult = KERN_FAILURE;
620 uint64_t scalarI_64[2] = {uint64_t(appType), uint64_t(pid)};
621 uint32_t outputCount = 0;
631 if (kernResult == KERN_SUCCESS)
633 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
649 #if defined(NTV2_NUB_CLIENT_SUPPORT)
652 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
653 kern_return_t kernResult = KERN_FAILURE;
654 uint64_t scalarI_64[2] = {uint64_t(appType), uint64_t(pid)};
655 uint32_t outputCount = 0;
665 if (kernResult == KERN_SUCCESS)
667 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
677 #if defined(NTV2_NUB_CLIENT_SUPPORT)
680 #endif // defined (NTV2_NUB_CLIENT_SUPPORT)
681 kern_return_t kernResult = KERN_FAILURE;
682 uint64_t scalarO_64[2] = {0, 0};
683 uint32_t outputCount(2);
693 outAppType =
ULWord(scalarO_64[0]);
694 outProcessID = int32_t(scalarO_64[1]);
695 if (kernResult == KERN_SUCCESS)
697 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
707 kern_return_t kernResult = KERN_FAILURE;
708 uint64_t scalarI_64[2] = {uint64_t(dataPtr), dataSize};
709 uint32_t outputCount = 0;
717 if (kernResult == KERN_SUCCESS)
719 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
728 AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
755 return WaitForChangeEvent(timeout);
757 kern_return_t kernResult = KERN_FAILURE;
758 uint64_t scalarI_64[2] = {type, timeout};
759 uint64_t scalarO_64 = 0;
760 uint32_t outputCount = 1;
763 kernResult = KERN_INVALID_VALUE;
764 else if (GetIOConnect())
775 UInt32 interruptOccurred = uint32_t(scalarO_64);
776 if (kernResult != KERN_SUCCESS)
777 {
DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
return false;}
778 if (interruptOccurred)
779 BumpEventCount(type);
780 return interruptOccurred;
790 kern_return_t kernResult = KERN_FAILURE;
791 uint64_t scalarI_64[1] = {eInterrupt};
792 uint64_t scalarO_64 = 0;
793 uint32_t outputCount = 1;
805 outCount =
ULWord(scalarO_64);
806 if (kernResult == KERN_SUCCESS)
808 DIFAIL(
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
821 kern_return_t kernResult = KERN_FAILURE;
822 uint64_t scalarI_64[1] = {timeout};
823 uint64_t scalarO_64 = 0;
824 uint32_t outputCount = 1;
832 if (kernResult != KERN_SUCCESS)
833 DIFAIL(
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
834 return bool(scalarO_64);
850 const ULWord inFrameNumber,
852 const ULWord inOffsetBytes,
854 const bool inSynchronous)
858 inOffsetBytes, inByteCount, inSynchronous);
861 kern_return_t kernResult = KERN_FAILURE;
862 uint64_t scalarI_64[6] = {inDMAEngine, uint64_t(pFrameBuffer), inFrameNumber, inOffsetBytes, inByteCount, !inIsRead};
863 uint32_t outputCount = 0;
875 if (kernResult == KERN_SUCCESS)
877 DIFAIL(
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()) <<
", eng=" << inDMAEngine <<
", frm=" << inFrameNumber
878 <<
", off=" <<
HEX8(inOffsetBytes) <<
", len=" <<
HEX8(inByteCount) <<
", " << (inIsRead ?
"R" :
"W"));
895 const ULWord inFrameNumber,
897 const ULWord inCardOffsetBytes,
899 const ULWord inNumSegments,
900 const ULWord inSegmentHostPitch,
901 const ULWord inSegmentCardPitch,
902 const bool inSynchronous)
906 inNumSegments, inSegmentHostPitch, inSegmentCardPitch, inSynchronous);
909 kern_return_t kernResult = KERN_FAILURE;
910 size_t outputStructSize = 0;
911 const ULWord numSegments = inNumSegments ? inNumSegments : 1;
917 dmaTransfer64.
dmaSize = inByteCount;
937 if (kernResult == KERN_SUCCESS)
939 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
946 const bool inIsTarget,
947 const ULWord inFrameNumber,
948 const ULWord inCardOffsetBytes,
950 const ULWord inNumSegments,
951 const ULWord inSegmentHostPitch,
952 const ULWord inSegmentCardPitch,
957 inNumSegments, inSegmentHostPitch, inSegmentCardPitch, inP2PData);
965 bool CNTV2MacDriverInterface::RestoreHardwareProcampRegisters (
void)
967 kern_return_t kernResult = KERN_FAILURE;
968 uint32_t outputCount = 0;
976 if (kernResult == KERN_SUCCESS)
978 DIFAIL (
KR(kernResult) <<
": con=" <<
HEX8(GetIOConnect()));
988 bool CNTV2MacDriverInterface::SystemStatus (
void* dataPtr,
SystemStatusCode statusCode)
990 kern_return_t kernResult = KERN_FAILURE;
991 uint64_t scalarI_64[2] = {uint64_t(dataPtr), statusCode};
992 uint32_t outputCount = 0;
1002 if (kernResult == KERN_SUCCESS)
1015 bool success =
true;
1019 kern_return_t kernResult = KERN_FAILURE;
1020 io_connect_t conn(GetIOConnect());
1038 size_t outputStructSize = 0;
1040 CopyTo_AUTOCIRCULATE_DATA_64 (&autoCircData, &autoCircData64);
1055 uint64_t scalarI_64[1];
1056 uint32_t outputCount = 0;
1085 CopyTo_AUTOCIRCULATE_DATA_64 (&autoCircData, &autoCircData64);
1119 CopyTo_AUTOCIRCULATE_DATA_64 (&autoCircData, &autoCircData64);
1147 kernResult = KERN_INVALID_ARGUMENT;
1151 success = (kernResult == KERN_SUCCESS);
1152 if (kernResult != KERN_SUCCESS && kernResult != kIOReturnOffline)
1162 if (!pInOutMessage->
IsValid())
1164 if (!pInOutMessage->GetSizeInBytes())
1170 ULWord* pU32 =
reinterpret_cast<ULWord*
>(pInOutMessage); pU32[6] = 0;
1172 kern_return_t kernResult (KERN_FAILURE);
1173 io_connect_t connection (GetIOConnect ());
1174 uint64_t scalarI_64 [2] = {uint64_t(pInOutMessage), pInOutMessage->GetSizeInBytes()};
1175 uint32_t numScalarOutputs(0);
1187 if (kernResult != KERN_SUCCESS && kernResult != kIOReturnOffline)
1188 MDIFAIL (
KR(kernResult) <<
INSTP(
this) <<
", con=" <<
HEX8(connection) << endl << *pInOutMessage);
1189 return kernResult == KERN_SUCCESS;
1195 #pragma mark Old Driver Calls
1323 printf(
"----------------------\n");
1326 uint8_t * ptr = (uint8_t *)p64;
1331 printf(
"%x ", *ptr++);
1333 printf(
"\n\n", *ptr++);
1338 printf(
"----------------------\n");
1352 printf(
"rp188.DBB %x\n",p64->
rp188.
DBB);
1353 printf(
"rp188.Low %x\n",p64->
rp188.
Low);
1354 printf(
"rp188.High %x\n",p64->
rp188.
High);
1357 printf(
"hUser %x\n",p64->
hUser);
1462 case kIOReturnError:
return "general error";
1463 case kIOReturnNoMemory:
return "can't allocate memory";
1464 case kIOReturnNoResources:
return "resource shortage";
1465 case kIOReturnIPCError:
return "error during IPC";
1466 case kIOReturnNoDevice:
return "no such device";
1467 case kIOReturnNotPrivileged:
return "privilege violation";
1468 case kIOReturnBadArgument:
return "invalid argument";
1469 case kIOReturnLockedRead:
return "device read locked";
1470 case kIOReturnLockedWrite:
return "device write locked";
1471 case kIOReturnExclusiveAccess:
return "exclusive access and device already open";
1472 case kIOReturnBadMessageID:
return "sent/received messages had different msg_id";
1473 case kIOReturnUnsupported:
return "unsupported function";
1474 case kIOReturnVMError:
return "misc. VM failure";
1475 case kIOReturnInternalError:
return "internal error";
1476 case kIOReturnIOError:
return "General I/O error";
1477 case kIOReturnCannotLock:
return "can't acquire lock";
1478 case kIOReturnNotOpen:
return "device not open";
1479 case kIOReturnNotReadable:
return "read not supported";
1480 case kIOReturnNotWritable:
return "write not supported";
1481 case kIOReturnNotAligned:
return "alignment error";
1482 case kIOReturnBadMedia:
return "Media Error";
1483 case kIOReturnStillOpen:
return "device(s) still open";
1484 case kIOReturnRLDError:
return "rld failure";
1485 case kIOReturnDMAError:
return "DMA failure";
1486 case kIOReturnBusy:
return "Device Busy";
1487 case kIOReturnTimeout:
return "I/O Timeout";
1488 case kIOReturnOffline:
return "device offline";
1489 case kIOReturnNotReady:
return "not ready";
1490 case kIOReturnNotAttached:
return "device not attached";
1491 case kIOReturnNoChannels:
return "no DMA channels left";
1492 case kIOReturnNoSpace:
return "no space for data";
1493 case kIOReturnPortExists:
return "port already exists";
1494 case kIOReturnCannotWire:
return "can't wire down physical memory";
1495 case kIOReturnNoInterrupt:
return "no interrupt attached";
1496 case kIOReturnNoFrames:
return "no DMA frames enqueued";
1497 case kIOReturnMessageTooLarge:
return "oversized msg received on interrupt port";
1498 case kIOReturnNotPermitted:
return "not permitted";
1499 case kIOReturnNoPower:
return "no power to device";
1500 case kIOReturnNoMedia:
return "media not present";
1501 case kIOReturnUnformattedMedia:
return "media not formatted";
1502 case kIOReturnUnsupportedMode:
return "no such mode";
1503 case kIOReturnUnderrun:
return "data underrun";
1504 case kIOReturnOverrun:
return "data overrun";
1505 case kIOReturnDeviceError:
return "the device is not working properly!";
1506 case kIOReturnNoCompletion:
return "a completion routine is required";
1507 case kIOReturnAborted:
return "operation aborted";
1508 case kIOReturnNoBandwidth:
return "bus bandwidth would be exceeded";
1509 case kIOReturnNotResponding:
return "device not responding";
1510 case kIOReturnIsoTooOld:
return "isochronous I/O request for distant past!";
1511 case kIOReturnIsoTooNew:
return "isochronous I/O request for distant future";
1512 case kIOReturnNotFound:
return "data was not found";
1513 case MACH_SEND_INVALID_DEST:
return "MACH_SEND_INVALID_DEST";
const IOReturn kNTV2DriverNotReadyErr
virtual bool MapRegisters(void)
@ kDriverReleaseStreamForApplicationWithReference
const IOReturn kNTV2DriverBadDMA
const IOReturn kNTV2DriverUnmapperErr
@ AJA_DebugStat_GetInterruptCount
ULWord videoSegmentHostPitch
@ AJA_DebugStat_DMATransferEx
virtual bool SetStreamingApplication(const ULWord inAppType, const int32_t inProcessID)
Sets the four-CC type and process ID of the application that should "own" the AJA device (i....
ULWord videoSegmentHostPitch
static AJAStatus StatTimerStop(const uint32_t inKey)
NTV2Crosspoint channelSpec
const IOReturn kNTV2HeaderVersionErr
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
#define NTV2_FOURCC(_a_, _b_, _c_, _d_)
AUTO_CIRC_COMMAND eCommand
@ kDriverWaitForInterrupt
virtual bool GetAudioOutputMode(NTV2_GlobalAudioPlaybackMode *mode)
virtual bool KernelLog(void *dataPtr, UInt32 dataSize)
static const char * GetKernErrStr(const kern_return_t inError)
Declares device capability functions.
virtual ~CNTV2MacDriverInterface()
My destructor.
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device....
virtual bool AcquireStreamForApplication(const ULWord inAppType, const int32_t inProcessID)
Reserves exclusive use of the AJA device for a given process, preventing other processes on the host ...
@ kDriverAutoCirculateTransfer
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
@ AJA_DebugStat_ReadRegister
NTV2QuarterSizeExpandMode videoQuarterSizeExpand
@ AJA_DebugStat_NTV2Message
static AJAStatus StatTimerStart(const uint32_t inKey)
#define NTV2_ASSERT(_expr_)
@ AJA_DebugStat_AutoCirculate
@ AJA_DebugStat_WaitForInterruptOthers
Declares the AJATime class.
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
const IOReturn kNTV2DriverParamErr
NTV2VideoFrameBufferOrientation frameBufferOrientation
@ AJA_DebugStat_WaitForInterruptIn2
static const string sNTV2PCIDEXTName("AJANTV2")
Implements the MacOS-specific flavor of CNTV2DriverInterface.
Pointer64 ccLookupTables
only used in 3way color correction mode.
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
virtual bool ReleaseStreamForApplication(ULWord inApplicationType, int32_t inProcessID)
Releases exclusive use of the AJA device for the given process, permitting other processes to acquire...
BOOL_ bDisableExtraAudioInfo
NTV2ColorCorrectionInfo_64 colorCorrectionInfo
const IOReturn kNTV2DriverDMABusy
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
virtual bool ReleaseStreamForApplication(const ULWord inAppType, const int32_t inProcessID)
Releases exclusive use of the AJA device for the given process, permitting other processes to acquire...
#define OS_IOKitGetBusyState(_x_, _y_)
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS type, const ULWord timeout=50)
@ kVRegGlobalAudioPlaybackMode
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the number of interrupts of the given type processed by the driver.
#define OS_IOServiceClose(_x_)
@ AJA_DebugStat_WaitForInterruptIn8
const IOReturn kNTV2DriverBadHeaderTag
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
NTV2ColorCorrectionInfo colorCorrectionInfo
struct AUTOCIRCULATE_STATUS_STRUCT AUTOCIRCULATE_STATUS_STRUCT
#define OS_IORegistryEntryCreateCFProperty(_w_, _x_, _y_, _z_)
@ kDriverAutoCirculateStatus
virtual bool AcquireStreamForApplicationWithReference(const ULWord inAppType, const int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process g...
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device....
@ kDriverReleaseStreamForApplication
NTV2FrameBufferFormat frameBufferFormat
virtual bool ReleaseStreamForApplicationWithReference(const ULWord inAppType, const int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process g...
NTV2_GlobalAudioPlaybackMode
const IOReturn kNTV2DriverMapperErr
NTV2Crosspoint foregroundKeyCrosspoint
AUTO_CIRC_COMMAND eCommand
virtual bool GetStreamingApplication(ULWord &outAppType, int32_t &outProcessID)
Answers with the four-CC type and process ID of the application that currently "owns" the AJA device ...
Declares the AJALock class.
const uint32_t kAgentAppFcc(((((uint32_t)( 'A'))<< 24)|(((uint32_t)( 'j'))<< 16)|(((uint32_t)( 'a'))<< 8)|(((uint32_t)( 'A'))<< 0)))
#define OS_IOConnectCallStructMethod(_u_, _v_, _w_, _x_, _y_, _z_)
NTV2Crosspoint channelSpec
#define OS_IOServiceNameMatching(_x_)
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inTotalByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
@ AJA_DebugStat_WaitForInterruptUartTx1
virtual bool GetStreamingApplication(ULWord &outAppType, int32_t &outProcessID)
Answers with the four-CC type and process ID of the application that currently "owns" the AJA device ...
@ AJA_DebugStat_AutoCirculateXfer
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
virtual bool MapXena2Flash(void)
ULWord dmaCardFrameNumber
@ AJA_DebugStat_WaitForInterruptUartTx2
ULWord dmaSegmentCardPitch
AutoCircGenericTask * taskArray
#define OS_IOKitWaitQuiet(_x_, _y_)
All new NTV2 structs start with this common header.
CUSTOM_ANC_STRUCT customAncInfo
This field is obsolete. Do not use.
const IOReturn kNTV2DriverBadTrailerTag
Declares numerous NTV2 utility functions.
AutoCircVidProcInfo vidProcInfo
#define OS_IOMasterPort(_x_, _y_)
virtual bool WaitForChangeEvent(UInt32 timeout=0)
@ eTransferAutoCirculateEx
NTV2Crosspoint channelSpec
ULWord dmaCardFrameOffset
AutoCircVidProcInfo vidProcInfo
virtual bool MapMemory(const MemoryType memType, void **memPtr)
@ kDriverRestoreProcAmpRegisters
static const string sNTV2PCIKEXTClassName("com_aja_iokit_ntv2")
#define OS_IOObjectRelease(_x_)
ULWord videoSegmentCardPitch
@ AJA_DebugStat_WaitForInterruptUartRx2
const IOReturn kNTV2DriverPgmXilinxErr
NTV2Crosspoint backgroundVideoCrosspoint
virtual bool SystemControl(void *dataPtr, SystemControlCode systemControlCode)
ULWord * ccLookupTables
only used in 3way color correction mode.
virtual bool UnmapXena2Flash(void)
@ AJA_DebugStat_WaitForInterruptIn7
NTV2Crosspoint foregroundVideoCrosspoint
Fixed_ transitionCoefficient
@ AJA_DebugStat_WaitForInterruptIn6
@ AJA_DebugStat_WaitForInterruptUartRx1
CUSTOM_ANC_STRUCT customAncInfo
This field is obsolete. Do not use.
virtual bool MapFrameBuffers(void)
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
#define OS_IOServiceOpen(_w_, _x_, _y_, _z_)
virtual bool SetStreamingApplication(const ULWord appType, const int32_t pid)
Sets the four-CC type and process ID of the application that should "own" the AJA device (i....
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
ULWord videoSegmentCardPitch
@ kDriverAutoCirculateControl
@ AJA_DebugStat_WaitForInterruptOut1
NTV2VideoFrameBufferOrientation frameBufferOrientation
virtual bool AcquireStreamForApplicationWithReference(ULWord inApplicationType, int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process g...
virtual bool UnmapRegisters(void)
ULWord dmaNumberOfSegments
NTV2ColorCorrectionMode mode
Declares the AJAAtomic class.
virtual bool AcquireStreamForApplication(ULWord inApplicationType, int32_t inProcessID)
Reserves exclusive use of the AJA device for a given process, preventing other processes on the host ...
#define OS_IOConnectMapMemory(_u_, _v_, _w_, _x_, _y_, _z_)
std::set< NTV2DeviceID > NTV2DeviceIDSet
A set of NTV2DeviceIDs.
CNTV2MacDriverInterface()
My default constructor.
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
virtual bool UnmapFrameBuffers(void)
@ AJA_DebugStat_WriteRegister
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
NTV2Crosspoint backgroundKeyCrosspoint
Fixed_ transitionSoftness
@ kVRegServicesInitialized
@ AJA_DebugStat_DMATransfer
BOOL_ bDisableExtraAudioInfo
#define OS_IOServiceMatching(_x_)
@ kDriverWaitForChangeEvent
@ SSC_GetFirmwareProgress
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
@ kDriverSetStreamForApplication
@ eTransferAutoCirculateEx2
@ kDriverGetInterruptCount
ULWord dmaSegmentHostPitch
virtual bool ReleaseStreamForApplicationWithReference(ULWord inApplicationType, int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process g...
#define xHEX0N(__x__, __n__)
NTV2Crosspoint channelSpec
@ kDriverGetStreamForApplication
@ AJA_DebugStat_WaitForInterruptIn1
#define OS_IOIteratorNext(_x_)
#define OS_IOConnectCallScalarMethod(_u_, _v_, _w_, _x_, _y_, _z_)
#define OS_IOConnectCallMethod(_q_, _r_, _s_, _t_, _u_, _v_, _w_, _x_, _y_, _z_)
@ AJA_DebugStat_WaitForInterruptIn3
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
@ kDriverAutoCirculateFramestamp
@ AJA_DebugStat_WaitForInterruptIn4
#define OS_IOServiceGetMatchingServices(_x_, _y_, _z_)
NTV2QuarterSizeExpandMode videoQuarterSizeExpand
static NTV2DeviceIDSet gLegalDeviceIDs
static const uint32_t sIntEnumToStatKeys[]
NTV2FrameBufferFormat frameBufferFormat
Declares NTV2 "nub" client functions.
const IOReturn kNTV2DriverPrepMemErr
NTV2ColorCorrectionMode mode
static AJALock gLegalDevIDsLock
const IOReturn kNTV2DriverDMATooLarge
Declares the AJADebug class.
virtual ULWord GetPCISlotNumber(void) const
@ AJA_DebugStat_WaitForInterruptIn5
@ kDriverAcquireStreamForApplicationWithReference
const IOReturn kNTV2UnknownStructType
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
@ kDriverAcquireStreamForApplication