MythTV  master
darwinavcinfo.h
Go to the documentation of this file.
1 #ifndef _DARWIN_AVC_INFO_H_
2 #define _DARWIN_AVC_INFO_H_
3 
4 #ifdef USING_OSX_FIREWIRE
5 
6 // C++ headers
7 #include <vector>
8 
9 // OS X headers
10 #undef always_inline
11 #include <IOKit/IOKitLib.h>
12 #include <IOKit/firewire/IOFireWireLib.h>
13 #include <IOKit/firewire/IOFireWireLibIsoch.h>
14 #include <IOKit/firewire/IOFireWireFamilyCommon.h>
15 #include <IOKit/avc/IOFireWireAVCLib.h>
16 
17 // Qt headers
18 #include <QMap>
19 
20 // MythTV headers
21 #include "avcinfo.h"
22 
24 
25 class DarwinAVCInfo : public AVCInfo
26 {
27  public:
28  DarwinAVCInfo() = default;
29 
30  void Update(uint64_t _guid, DarwinFirewireDevice *dev,
31  IONotificationPortRef notify_port,
32  CFRunLoopRef &thread_cf_ref, io_object_t obj);
33 
34  bool OpenPort(CFRunLoopRef &thread_cf_ref);
35  bool ClosePort(void);
36 
37  bool OpenAVCInterface(CFRunLoopRef &thread_cf_ref);
38  void CloseAVCInterface(void);
39 
40  bool OpenDeviceInterface(CFRunLoopRef &thread_cf_ref);
41  void CloseDeviceInterface(void);
42 
43  bool SendAVCCommand(
44  const std::vector<uint8_t> &cmd,
45  std::vector<uint8_t> &result,
46  int retry_cnt) override; // AVCInfo
47 
48  bool GetDeviceNodes(int &local_node, int &remote_node);
49 
50  bool IsAVCInterfaceOpen(void) const { return avc_handle; }
51  bool IsPortOpen(void) const { return fw_handle; }
52 
53  public:
54  io_service_t fw_node_ref {0}; // parent of fw_device_ref
55  io_service_t fw_device_ref {0}; // parent of fw_service_ref
56  io_service_t fw_service_ref {0}; // parent of avc_service_ref
57  io_service_t avc_service_ref {0};
58 
59  io_object_t fw_device_notifier_ref {0};
60 
61  IOFireWireAVCLibUnitInterface **avc_handle {nullptr};
62  IOFireWireLibDeviceRef fw_handle {nullptr};
63 };
64 using avcinfo_list_t = QMap<uint64_t,DarwinAVCInfo*>;
65 
66 #endif // USING_OSX_FIREWIRE
67 
68 #endif // _DARWIN_AVC_INFO_H_
DarwinAVCInfo::OpenDeviceInterface
bool OpenDeviceInterface(CFRunLoopRef &thread_cf_ref)
Definition: darwinavcinfo.cpp:237
DarwinAVCInfo::IsPortOpen
bool IsPortOpen(void) const
Definition: darwinavcinfo.h:51
DarwinAVCInfo::fw_device_ref
io_service_t fw_device_ref
Definition: darwinavcinfo.h:55
DarwinAVCInfo::fw_device_notifier_ref
io_object_t fw_device_notifier_ref
Definition: darwinavcinfo.h:59
DarwinFirewireDevice
Definition: darwinfirewiredevice.h:10
DarwinAVCInfo::GetDeviceNodes
bool GetDeviceNodes(int &local_node, int &remote_node)
Definition: darwinavcinfo.cpp:299
DarwinAVCInfo::IsAVCInterfaceOpen
bool IsAVCInterfaceOpen(void) const
Definition: darwinavcinfo.h:50
DarwinAVCInfo::OpenPort
bool OpenPort(CFRunLoopRef &thread_cf_ref)
Definition: darwinavcinfo.cpp:141
AVCInfo
Definition: avcinfo.h:22
DarwinAVCInfo::avc_service_ref
io_service_t avc_service_ref
Definition: darwinavcinfo.h:57
avcinfo.h
DarwinAVCInfo::fw_node_ref
io_service_t fw_node_ref
Definition: darwinavcinfo.h:54
avcinfo_list_t
QMap< uint64_t, DarwinAVCInfo * > avcinfo_list_t
Definition: darwinavcinfo.h:64
DarwinAVCInfo::fw_service_ref
io_service_t fw_service_ref
Definition: darwinavcinfo.h:56
DarwinAVCInfo::Update
void Update(uint64_t _guid, DarwinFirewireDevice *dev, IONotificationPortRef notify_port, CFRunLoopRef &thread_cf_ref, io_object_t obj)
Definition: darwinavcinfo.cpp:27
DarwinAVCInfo::CloseAVCInterface
void CloseAVCInterface(void)
Definition: darwinavcinfo.cpp:225
DarwinAVCInfo::CloseDeviceInterface
void CloseDeviceInterface(void)
Definition: darwinavcinfo.cpp:287
DarwinAVCInfo::OpenAVCInterface
bool OpenAVCInterface(CFRunLoopRef &thread_cf_ref)
Definition: darwinavcinfo.cpp:165
DarwinAVCInfo::SendAVCCommand
bool SendAVCCommand(const std::vector< uint8_t > &cmd, std::vector< uint8_t > &result, int retry_cnt) override
Definition: darwinavcinfo.cpp:115
DarwinAVCInfo::DarwinAVCInfo
DarwinAVCInfo()=default
DarwinAVCInfo::fw_handle
IOFireWireLibDeviceRef fw_handle
Definition: darwinavcinfo.h:62
DarwinAVCInfo::ClosePort
bool ClosePort(void)
Definition: darwinavcinfo.cpp:158
DarwinAVCInfo
Definition: darwinavcinfo.h:25
DarwinAVCInfo::avc_handle
IOFireWireAVCLibUnitInterface ** avc_handle
Definition: darwinavcinfo.h:61