void CallEntryPointAsync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data) { Context context; context.Complete = false; context.Result = eNkMAIDResult.kNkMAIDResult_NoError; IntPtr pfnComplete = Marshal.GetFunctionPointerForDelegate(_completionProc); IntPtr pfnRef = new IntPtr(&context); CallEntryPoint( ulCommand, ulParam, ulDataType, data, pfnComplete, pfnRef); while (!context.Complete) { Async(); } // Note: Is it OK to ignore context.Result? }
// // CapSet // internal void CapSet(eNkMAIDCapability capability, eNkMAIDDataType type, IntPtr data) { CapSet( capability, type, data.ToInt32()); }
// // CapGetArray // internal void CapGetArray(eNkMAIDCapability capability, eNkMAIDDataType type, IntPtr data) { CallEntryPointAsync( eNkMAIDCommand.kNkMAIDCommand_CapGetArray, (uint)capability, type, data.ToInt32()); }
// // CapGetDefault // internal void CapGetDefault(eNkMAIDCapability capability, eNkMAIDDataType type, IntPtr data) { CallEntryPointAsync( eNkMAIDCommand.kNkMAIDCommand_CapGetDefault, (uint)capability, type, data); }
// // CapStart // internal void CapStart(eNkMAIDCapability cap, eNkMAIDDataType dataType, IntPtr data) { CallEntryPointAsync( eNkMAIDCommand.kNkMAIDCommand_CapStart, (uint)cap, dataType, data); }
internal void CapSet(eNkMAIDCapability capability, eNkMAIDDataType type, Int32 data) { CallEntryPointAsync( eNkMAIDCommand.kNkMAIDCommand_CapSet, (uint)capability, type, data); }
void CallEntryPoint( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr pfnComplete, IntPtr refComplete) { Debug.Assert(_md3 != null); Console.WriteLine("CallEntryPoint: {0}", ulCommand.ToString()); try { eNkMAIDResult result = _md3.EntryPoint( pObject, ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); switch (result) { // Note: Ignore these return values case eNkMAIDResult.kNkMAIDResult_NoError: case eNkMAIDResult.kNkMAIDResult_Pending: case eNkMAIDResult.kNkMAIDResult_OrphanedChildren: break; default: Console.WriteLine("===>NikonException {0},{1},{2},{3},{4}", result, ulCommand, ulParam, ulDataType, data); /* * throw new NikonException( * result, * ulCommand, * ulParam, * ulDataType, * data); */ break; } } catch (System.AccessViolationException ex) { Console.WriteLine("===> {0}", ex.Message); } }
void CompletionProc( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr refComplete, eNkMAIDResult nResult) { Context *context = (Context *)refComplete.ToPointer(); context->Complete = true; context->Result = nResult; }
// // Call Entry Point // void CallEntryPointSync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data) { CallEntryPoint( ulCommand, ulParam, ulDataType, data, IntPtr.Zero, IntPtr.Zero); }
public NikonException(eNkMAIDResult errorCode, eNkMAIDCommand errorCommand, UInt32 errorParam, eNkMAIDDataType errorDataType, IntPtr errorData) : base(string.Format("[{0}] ({1}, {2}, {3}, {4})", errorCode.ToString(), errorCommand.ToString(), errorParam.ToString(), errorDataType.ToString(), errorData.ToString())) { _errorCode = errorCode; _errorCommand = errorCommand; _errorParam = errorParam; _errorDataType = errorDataType; _errorData = errorData; }
void CallEntryPoint( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr pfnComplete, IntPtr refComplete) { fixed(NkMAIDObject *p = &_object) { CallEntryPoint( new IntPtr(p), ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); } }
void CallEntryPoint( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, IntPtr data, IntPtr pfnComplete, IntPtr refComplete) { Debug.Assert(_md3 != null); eNkMAIDResult result = _md3.EntryPoint( pObject, ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); switch (result) { // Note: Ignore these return values case eNkMAIDResult.kNkMAIDResult_NoError: case eNkMAIDResult.kNkMAIDResult_Pending: case eNkMAIDResult.kNkMAIDResult_OrphanedChildren: break; default: throw new NikonException( result, ulCommand, ulParam, ulDataType, data); } }
void CallEntryPoint( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data, IntPtr pfnComplete, IntPtr refComplete) { fixed (NkMAIDObject* p = &_object) { CallEntryPoint( new IntPtr(p), ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); } }
void CallEntryPointAsync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data) { Context context; context.Complete = false; context.Result = eNkMAIDResult.kNkMAIDResult_NoError; CallEntryPoint( ulCommand, ulParam, ulDataType, data, Marshal.GetFunctionPointerForDelegate(_completionProc), new IntPtr(&context)); while (!context.Complete) { Async(); } // Note: Is it OK to ignore context.Result? }
// // CapGetDefault // internal void CapGetDefault(eNkMAIDCapability capability, eNkMAIDDataType type, IntPtr data) { CallEntryPointAsync( eNkMAIDCommand.kNkMAIDCommand_CapGetDefault, (uint)capability, type, data.ToInt32()); }
public NikonException(eNkMAIDResult errorCode, eNkMAIDCommand errorCommand, UInt32 errorParam, eNkMAIDDataType errorDataType, Int32 errorData) : base(string.Format("[{0}] ({1}, {2}, {3}, {4})", errorCode.ToString(), errorCommand.ToString(), errorParam.ToString(), errorDataType.ToString(), errorData.ToString())) { _errorCode = errorCode; _errorCommand = errorCommand; _errorParam = errorParam; _errorDataType = errorDataType; _errorData = errorData; }
void CompletionProc( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data, IntPtr refComplete, eNkMAIDResult nResult) { Context* context = (Context*)refComplete.ToPointer(); context->Complete = true; context->Result = nResult; }
// // Call Entry Point // void CallEntryPointSync( eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data) { CallEntryPoint( ulCommand, ulParam, ulDataType, data, IntPtr.Zero, IntPtr.Zero); }
public void Start(eNkMAIDCapability cap, eNkMAIDDataType dataType, IntPtr data) { _scheduler.Invoke(new StartCapabilityDelegate(_object.CapStart), cap, dataType, data); }
public void Start(eNkMAIDCapability cap, eNkMAIDDataType dataType, Int32 data) { _scheduler.Invoke(new StartCapabilityDelegate(_object.CapStart), cap, dataType, data); }
// // CapStart // internal void CapStart(eNkMAIDCapability cap, eNkMAIDDataType dataType, int data) { CallEntryPointAsync( eNkMAIDCommand.kNkMAIDCommand_CapStart, (uint)cap, dataType, data); }
void CallEntryPoint( IntPtr pObject, eNkMAIDCommand ulCommand, UInt32 ulParam, eNkMAIDDataType ulDataType, Int32 data, IntPtr pfnComplete, IntPtr refComplete) { Debug.Assert(_md3 != null); eNkMAIDResult result = _md3.EntryPoint( pObject, ulCommand, ulParam, ulDataType, data, pfnComplete, refComplete); switch (result) { // Note: Ignore these return values case eNkMAIDResult.kNkMAIDResult_NoError: case eNkMAIDResult.kNkMAIDResult_Pending: case eNkMAIDResult.kNkMAIDResult_OrphanedChildren: break; default: throw new NikonException( result, ulCommand, ulParam, ulDataType, data); } }