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);
1123 CopyTo_AUTOCIRCULATE_TRANSFER_STRUCT_64 (reinterpret_cast<AUTOCIRCULATE_TRANSFER_STRUCT*>(autoCircData.
pvVal1), &autoCircTransfer64);
1129 CopyTo_AUTOCIRCULATE_TASK_STRUCT_64 (reinterpret_cast<AUTOCIRCULATE_TASK_STRUCT*>(autoCircData.
pvVal4), &autoCircTask64);
1147 kernResult = KERN_INVALID_ARGUMENT;
1151 success = (kernResult == KERN_SUCCESS);
1152 if (kernResult != KERN_SUCCESS && kernResult != kIOReturnOffline)
1162 if (!pInOutMessage->
IsValid())
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";
virtual bool ReleaseStreamForApplicationWithReference(ULWord inApplicationType, int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process g...
NTV2VideoFrameBufferOrientation frameBufferOrientation
ULWord dmaCardFrameOffset
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
const IOReturn kNTV2DriverParamErr
const IOReturn kNTV2DriverBadDMA
virtual bool AcquireStreamForApplicationWithReference(const ULWord inAppType, const int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process g...
NTV2Crosspoint channelSpec
struct AUTOCIRCULATE_STATUS_STRUCT AUTOCIRCULATE_STATUS_STRUCT
const IOReturn kNTV2HeaderVersionErr
Declares the AJALock class.
static const string sNTV2PCIKEXTClassName("com_aja_iokit_ntv2")
ULWord dmaSegmentHostPitch
#define OS_IOKitWaitQuiet(_x_, _y_)
ULWord dmaCardFrameNumber
#define OS_IOObjectRelease(_x_)
virtual bool ReleaseStreamForApplication(ULWord inApplicationType, int32_t inProcessID)
Releases exclusive use of the AJA device for the given process, permitting other processes to acquire...
virtual bool MapXena2Flash(void)
#define OS_IOMasterPort(_x_, _y_)
CUSTOM_ANC_STRUCT customAncInfo
This field is obsolete. Do not use.
const IOReturn kNTV2DriverDMABusy
AutoCircVidProcInfo vidProcInfo
const IOReturn kNTV2DriverMapperErr
Declares the AJADebug class.
#define OS_IOServiceOpen(_w_, _x_, _y_, _z_)
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
virtual bool GetAudioOutputMode(NTV2_GlobalAudioPlaybackMode *mode)
const IOReturn kNTV2DriverBadHeaderTag
Declares the AJATime class.
NTV2VideoFrameBufferOrientation frameBufferOrientation
#define NTV2_FOURCC(_a_, _b_, _c_, _d_)
const IOReturn kNTV2DriverPrepMemErr
const IOReturn kNTV2DriverDMATooLarge
virtual ULWord GetPCISlotNumber(void) const
CNTV2MacDriverInterface()
My default constructor.
virtual bool UnmapXena2Flash(void)
AUTO_CIRC_COMMAND eCommand
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...
virtual ~CNTV2MacDriverInterface()
My destructor.
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...
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
Declares NTV2 "nub" client functions.
ULWord dmaSegmentCardPitch
#define NTV2_ASSERT(_expr_)
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
BOOL_ bDisableExtraAudioInfo
static AJAStatus StatTimerStop(const uint32_t inKey)
#define OS_IOServiceMatching(_x_)
AutoCircGenericTask * taskArray
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 ...
#define OS_IOConnectMapMemory(_u_, _v_, _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 WaitForChangeEvent(UInt32 timeout=0)
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 ...
#define OS_IOConnectCallScalarMethod(_u_, _v_, _w_, _x_, _y_, _z_)
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
#define OS_IOConnectCallMethod(_q_, _r_, _s_, _t_, _u_, _v_, _w_, _x_, _y_, _z_)
ULWord GetSizeInBytes(void) const
My total size, in bytes, including header, body and trailer (but excluding embedded NTV2Buffer data) ...
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...
virtual bool MapMemory(const MemoryType memType, void **memPtr)
static NTV2DeviceIDSet gLegalDeviceIDs
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 ...
const IOReturn kNTV2DriverBadTrailerTag
NTV2Crosspoint channelSpec
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...
BOOL_ bDisableExtraAudioInfo
virtual bool MapFrameBuffers(void)
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
NTV2ColorCorrectionInfo colorCorrectionInfo
#define OS_IOIteratorNext(_x_)
NTV2ColorCorrectionInfo_64 colorCorrectionInfo
static const uint32_t sIntEnumToStatKeys[]
All new NTV2 structs start with this common header.
NTV2FrameBufferFormat frameBufferFormat
#define OS_IOServiceGetMatchingServices(_x_, _y_, _z_)
static AJALock gLegalDevIDsLock
virtual bool AcquireStreamForApplicationWithReference(ULWord inApplicationType, int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process g...
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the number of interrupts of the given type processed by the driver.
NTV2_GlobalAudioPlaybackMode
AutoCircVidProcInfo vidProcInfo
virtual bool ReleaseStreamForApplicationWithReference(const ULWord inAppType, const int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process g...
NTV2FrameBufferFormat frameBufferFormat
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...
NTV2Crosspoint channelSpec
NTV2ColorCorrectionMode mode
NTV2Crosspoint backgroundVideoCrosspoint
ULWord videoSegmentCardPitch
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).
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...
ULWord videoSegmentCardPitch
static AJAStatus StatTimerStart(const uint32_t inKey)
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
Declares the AJAAtomic class.
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
virtual bool KernelLog(void *dataPtr, UInt32 dataSize)
NTV2Crosspoint channelSpec
static const char * GetKernErrStr(const kern_return_t inError)
Declares numerous NTV2 utility functions.
NTV2Crosspoint foregroundKeyCrosspoint
Pointer64 ccLookupTables
only used in 3way color correction mode.
AUTO_CIRC_COMMAND eCommand
NTV2ColorCorrectionMode mode
const IOReturn kNTV2UnknownStructType
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...
Fixed_ transitionSoftness
#define OS_IOKitGetBusyState(_x_, _y_)
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
const IOReturn kNTV2DriverNotReadyErr
static const string sNTV2PCIDEXTName("AJANTV2")
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
#define xHEX0N(__x__, __n__)
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS type, const ULWord timeout=50)
Fixed_ transitionCoefficient
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
#define OS_IOServiceClose(_x_)
ULWord * ccLookupTables
only used in 3way color correction mode.
#define OS_IORegistryEntryCreateCFProperty(_w_, _x_, _y_, _z_)
ULWord videoSegmentHostPitch
ULWord dmaNumberOfSegments
const IOReturn kNTV2DriverPgmXilinxErr
std::set< NTV2DeviceID > NTV2DeviceIDSet
A set of NTV2DeviceIDs.
CUSTOM_ANC_STRUCT customAncInfo
This field is obsolete. Do not use.
virtual bool MapRegisters(void)
const IOReturn kNTV2DriverUnmapperErr
const uint32_t kAgentAppFcc(((((uint32_t)( 'A'))<< 24)|(((uint32_t)( 'j'))<< 16)|(((uint32_t)( 'a'))<< 8)|(((uint32_t)( 'A'))<< 0)))
virtual bool SystemControl(void *dataPtr, SystemControlCode systemControlCode)
virtual bool UnmapRegisters(void)
#define OS_IOConnectCallStructMethod(_u_, _v_, _w_, _x_, _y_, _z_)
#define OS_IOServiceNameMatching(_x_)
NTV2Crosspoint backgroundKeyCrosspoint
NTV2QuarterSizeExpandMode videoQuarterSizeExpand
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 ...
NTV2Crosspoint foregroundVideoCrosspoint
Implements the MacOS-specific flavor of CNTV2DriverInterface.
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
Declares device capability functions.
virtual bool UnmapFrameBuffers(void)
ULWord videoSegmentHostPitch
NTV2QuarterSizeExpandMode videoQuarterSizeExpand