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 void run(void) override; // QRunnable
30
31 // Commands
32 bool OpenPort(void) override; // FirewireDevice
33 bool ClosePort(void) override; // FirewireDevice
34 bool ResetBus(void) override; // FirewireDevice
35
36 void AddListener(TSDataListener *listener) override; // FirewireDevice
37 void RemoveListener(TSDataListener *listener) override; // FirewireDevice
38
39 // Gets
40 bool IsPortOpen(void) const override; // FirewireDevice
41
42 // Signal from driver
43 void SignalReset(uint generation);
44
45 // Statics
46 static std::vector<AVCInfo> GetSTBList(void);
47
48 // Constants
49 static const uint kBroadcastChannel;
50 static const uint kConnectionP2P;
53
54 protected:
55 bool SendAVCCommand(const std::vector<uint8_t> &cmd,
56 std::vector<uint8_t> &result,
57 int retry_cnt) override; // FirewireDevice
58
59 private:
60 bool OpenNode(void);
61 bool CloseNode(void);
62
63 bool OpenAVStream(void);
64 bool CloseAVStream(void);
65
66 bool OpenP2PNode(void);
67 bool CloseP2PNode(void);
68
69 bool OpenBroadcastNode(void);
70 bool CloseBroadcastNode(void);
71
72 bool StartStreaming(void);
73 bool StopStreaming(void);
74
75 void PrintDropped(uint dropped_packets);
76
77 bool SetAVStreamBufferSize(uint size_in_bytes);
78 bool SetAVStreamSpeed(uint speed);
79
80 bool IsNodeOpen(void) const;
81 bool IsAVStreamOpen(void) const;
82
83 bool UpdateDeviceList(void);
84 void UpdateDeviceListItem(uint64_t guid, void *pitem);
85 std::vector<AVCInfo> GetSTBListPrivate(void);
86
87 LinuxAVCInfo *GetInfoPtr(void);
88 const LinuxAVCInfo *GetInfoPtr(void) const;
89
90 void HandleBusReset(void);
91
92 private:
94 bool m_dbResetDisabled {false};
96 LFDPriv *m_priv {nullptr};
97};
98
99#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: compat.h:60