MythTV master
linuxfirewiredevice.h
Go to the documentation of this file.
1
7#ifndef LINUX_FIREWIRE_DEVICE_H
8#define LINUX_FIREWIRE_DEVICE_H
9
10#include <QRunnable>
11
12#include "firewiredevice.h"
13#include "libmythbase/mthread.h"
14
15class LFDPriv;
16class LinuxAVCInfo;
18
19class LinuxFirewireDevice : public FirewireDevice, public QRunnable
20{
22 unsigned char *tspacket, int len, uint dropped, void *callback_data);
23
24 public:
25 LinuxFirewireDevice(uint64_t guid, uint subunitid,
26 uint speed, bool use_p2p,
27 uint av_buffer_size_in_bytes = 0);
28 ~LinuxFirewireDevice() override;
29
30 // Commands
31 bool OpenPort(void) override; // FirewireDevice
32 bool ClosePort(void) override; // FirewireDevice
33 bool ResetBus(void) override; // FirewireDevice
34
35 void AddListener(TSDataListener *listener) override; // FirewireDevice
36 void RemoveListener(TSDataListener *listener) override; // FirewireDevice
37
38 // Gets
39 bool IsPortOpen(void) const override; // FirewireDevice
40
41 // Signal from driver
42 void SignalReset(uint generation);
43
44 // Statics
45 static std::vector<AVCInfo> GetSTBList(void);
46
47 // Constants
48 static const uint kBroadcastChannel;
49 static const uint kConnectionP2P;
52
53 private:
54 bool OpenNode(void);
55 bool CloseNode(void);
56
57 bool OpenAVStream(void);
58 bool CloseAVStream(void);
59
60 bool OpenP2PNode(void);
61 bool CloseP2PNode(void);
62
63 bool OpenBroadcastNode(void);
64 bool CloseBroadcastNode(void);
65
66 bool StartStreaming(void);
67 bool StopStreaming(void);
68
69 void run(void) override; // QRunnable
70 void PrintDropped(uint dropped_packets);
71
72 bool SetAVStreamBufferSize(uint size_in_bytes);
73 bool SetAVStreamSpeed(uint speed);
74
75 bool IsNodeOpen(void) const;
76 bool IsAVStreamOpen(void) const;
77
78 bool UpdateDeviceList(void);
79 void UpdateDeviceListItem(uint64_t guid, void *pitem);
80 std::vector<AVCInfo> GetSTBListPrivate(void);
81
82 bool SendAVCCommand(const std::vector<uint8_t> &cmd,
83 std::vector<uint8_t> &result,
84 int retry_cnt) override; // FirewireDevice
85
86 LinuxAVCInfo *GetInfoPtr(void);
87 const LinuxAVCInfo *GetInfoPtr(void) const;
88
89 void HandleBusReset(void);
90
91 private:
93 bool m_dbResetDisabled {false};
95 LFDPriv *m_priv {nullptr};
96};
97
98#endif // LINUX_FIREWIRE_DEVICE_H
bool IsNodeOpen(void) const
LinuxFirewireDevice(uint64_t guid, uint subunitid, uint speed, bool use_p2p, uint av_buffer_size_in_bytes=0)
bool ResetBus(void) override
void RemoveListener(TSDataListener *listener) override
static const uint kBroadcastChannel
void run(void) override
LinuxAVCInfo * GetInfoPtr(void)
bool SetAVStreamSpeed(uint speed)
friend int linux_firewire_device_tspacket_handler(unsigned char *tspacket, int len, uint dropped, void *callback_data)
static const uint kConnectionBroadcast
bool SendAVCCommand(const std::vector< uint8_t > &cmd, std::vector< uint8_t > &result, int retry_cnt) override
bool ClosePort(void) override
void PrintDropped(uint dropped_packets)
bool OpenPort(void) override
bool IsAVStreamOpen(void) const
void AddListener(TSDataListener *listener) override
void SignalReset(uint generation)
bool IsPortOpen(void) const override
void UpdateDeviceListItem(uint64_t guid, void *pitem)
static const uint kConnectionP2P
static const uint kMaxBufferedPackets
bool SetAVStreamBufferSize(uint size_in_bytes)
static std::vector< AVCInfo > GetSTBList(void)
std::vector< AVCInfo > GetSTBListPrivate(void)
unsigned int uint
Definition: freesurround.h:24