MythTV  master
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Attributes | Private Slots | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
AppleRemote Class Reference

#include <AppleRemote.h>

Inheritance diagram for AppleRemote:
Inheritance graph
[legend]
Collaboration diagram for AppleRemote:
Collaboration graph
[legend]

Classes

class  Listener
 

Public Types

enum  Event {
  Up = 0, Down, Menu, Select,
  Right, Left, RightHold, LeftHold,
  MenuHold, PlayHold, ControlSwitched, PlayPause,
  Undefined
}
 

Public Member Functions

 ~AppleRemote ()
 
bool isListeningToRemote ()
 
void setListener (Listener *listener)
 
Listenerlistener ()
 
void setOpenInExclusiveMode (bool in)
 
bool isOpenInExclusiveMode ()
 
void startListening ()
 
void stopListening ()
 
void run ()
 Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More...
 
- Public Member Functions inherited from MThread
 MThread (const QString &objectName)
 Standard constructor. More...
 
 MThread (const QString &objectName, QRunnable *runnable)
 Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More...
 
virtual ~MThread ()
 
void RunProlog (void)
 Sets up a thread, call this if you reimplement run(). More...
 
void RunEpilog (void)
 Cleans up a thread's resources, call this if you reimplement run(). More...
 
QThread * qthread (void)
 Returns the thread, this will always return the same pointer no matter how often you restart the thread. More...
 
void setObjectName (const QString &name)
 
QString objectName (void) const
 
void setPriority (QThread::Priority priority)
 
QThread::Priority priority (void) const
 
bool isFinished (void) const
 
bool isRunning (void) const
 
void setStackSize (uint stackSize)
 
uint stackSize (void) const
 
void exit (int retcode=0)
 Use this to exit from the thread if you are using a Qt event loop. More...
 
void start (QThread::Priority=QThread::InheritPriority)
 Tell MThread to start running the thread in the near future. More...
 
void terminate (void)
 Kill a thread unsafely. More...
 
void quit (void)
 calls exit(0) More...
 
bool wait (unsigned long time=ULONG_MAX)
 Wait for the MThread to exit, with a maximum timeout. More...
 

Static Public Member Functions

static AppleRemoteGet ()
 
- Static Public Member Functions inherited from MThread
static void ThreadSetup (const QString &)
 This is to be called on startup in those few threads that haven't been ported to MThread. More...
 
static void ThreadCleanup (void)
 This is to be called on exit in those few threads that haven't been ported to MThread. More...
 
static void Cleanup (void)
 This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More...
 
static void GetAllThreadNames (QStringList &list)
 
static void GetAllRunningThreadNames (QStringList &list)
 

Protected Member Functions

 AppleRemote ()
 
- Protected Member Functions inherited from MThread
int exec (void)
 Enters the qt event loop. call exit or quit to exit thread. More...
 

Static Protected Attributes

static AppleRemote_instance = nullptr
 

Private Slots

void TimeoutHandler ()
 

Private Member Functions

void _initCookieMap ()
 Apple keeps changing the "interface" between the remote and the OS. More...
 
bool _initCookies ()
 
bool _createDeviceInterface (io_object_t hidDevice)
 
bool _openDevice ()
 
void _queueCallbackFunction (IOReturn result, void *refcon, void *sender)
 
void _queueCallbackATV23 (IOReturn result)
 
void _handleEventWithCookieString (std::string cookieString, SInt32 sumOfValues)
 
void _handleEventATV23 (std::string cookieString, SInt32 sumOfValues)
 

Static Private Member Functions

static void QueueCallbackFunction (void *target, IOReturn result, void *refcon, void *sender)
 

Private Attributes

bool openInExclusiveMode
 
IOHIDDeviceInterface ** hidDeviceInterface
 
IOHIDQueueInterface ** queue
 
std::vector< int > cookies
 
std::map< std::string, EventcookieToButtonMapping
 
int remoteId
 
Listener_listener
 
bool mUsingNewAtv
 
AppleRemote::Event mLastEvent
 
int mEventCount
 
bool mKeyIsDown
 
QTimer * mCallbackTimer
 

Additional Inherited Members

- Static Public Attributes inherited from MThread
static const int kDefaultStartTimeout
 
- Static Protected Member Functions inherited from MThread
static void setTerminationEnabled (bool enabled=true)
 
static void sleep (unsigned long time)
 
static void msleep (unsigned long time)
 
static void usleep (unsigned long time)
 
- Protected Attributes inherited from MThread
MThreadInternalm_thread
 
QRunnable * m_runnable
 
bool m_prolog_executed
 
bool m_epilog_executed
 

Detailed Description

Definition at line 20 of file AppleRemote.h.

Member Enumeration Documentation

◆ Event

Enumerator
Up 
Down 
Menu 
Select 
Right 
Left 
RightHold 
LeftHold 
MenuHold 
PlayHold 
ControlSwitched 
PlayPause 
Undefined 

Definition at line 24 of file AppleRemote.h.

Constructor & Destructor Documentation

◆ ~AppleRemote()

AppleRemote::~AppleRemote ( )

Definition at line 55 of file AppleRemote.cpp.

◆ AppleRemote()

AppleRemote::AppleRemote ( )
protected

Definition at line 174 of file AppleRemote.cpp.

Referenced by isOpenInExclusiveMode().

Member Function Documentation

◆ Get()

AppleRemote * AppleRemote::Get ( void  )
static

Definition at line 47 of file AppleRemote.cpp.

Referenced by MythMainWindow::MythMainWindow().

◆ isListeningToRemote()

bool AppleRemote::isListeningToRemote ( )

Definition at line 72 of file AppleRemote.cpp.

Referenced by MythMainWindow::MythMainWindow().

◆ setListener()

void AppleRemote::setListener ( AppleRemote::Listener listener)

Definition at line 77 of file AppleRemote.cpp.

Referenced by MythMainWindow::MythMainWindow().

◆ listener()

Listener* AppleRemote::listener ( )
inline

Definition at line 53 of file AppleRemote.h.

◆ setOpenInExclusiveMode()

void AppleRemote::setOpenInExclusiveMode ( bool  in)
inline

Definition at line 54 of file AppleRemote.h.

◆ isOpenInExclusiveMode()

bool AppleRemote::isOpenInExclusiveMode ( )
inline

Definition at line 55 of file AppleRemote.h.

◆ startListening()

void AppleRemote::startListening ( )

◆ stopListening()

void AppleRemote::stopListening ( )

Definition at line 104 of file AppleRemote.cpp.

Referenced by MythMainWindow::event(), and isOpenInExclusiveMode().

◆ run()

void AppleRemote::run ( void  )
virtual

Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.

Note
If you override this method you must call RunProlog before you do any work and RunEpilog before you exit the run method.

Reimplemented from MThread.

Definition at line 125 of file AppleRemote.cpp.

Referenced by isOpenInExclusiveMode().

◆ _initCookieMap()

void AppleRemote::_initCookieMap ( )
private

Apple keeps changing the "interface" between the remote and the OS.

This initialises a table that stores those mappings.

The white plastic remote has a Play+Pause button in the middle of the navigation ring, but for menu navigation, we send an "enter" event instead. Ideally we would remap that for TV/videos, but MythTV can't easily do that.

The new Aluminium remote has separate Select and Play+Pause buttons.

Definition at line 209 of file AppleRemote.cpp.

Referenced by AppleRemote().

◆ _initCookies()

bool AppleRemote::_initCookies ( )
private

Definition at line 314 of file AppleRemote.cpp.

◆ _createDeviceInterface()

bool AppleRemote::_createDeviceInterface ( io_object_t  hidDevice)
private

Definition at line 354 of file AppleRemote.cpp.

◆ _openDevice()

bool AppleRemote::_openDevice ( )
private

Definition at line 383 of file AppleRemote.cpp.

◆ QueueCallbackFunction()

void AppleRemote::QueueCallbackFunction ( void *  target,
IOReturn  result,
void *  refcon,
void *  sender 
)
staticprivate

Definition at line 445 of file AppleRemote.cpp.

Referenced by _openDevice().

◆ _queueCallbackFunction()

void AppleRemote::_queueCallbackFunction ( IOReturn  result,
void *  refcon,
void *  sender 
)
private

Definition at line 456 of file AppleRemote.cpp.

Referenced by QueueCallbackFunction().

◆ _queueCallbackATV23()

void AppleRemote::_queueCallbackATV23 ( IOReturn  result)
private

Definition at line 486 of file AppleRemote.cpp.

Referenced by QueueCallbackFunction().

◆ _handleEventWithCookieString()

void AppleRemote::_handleEventWithCookieString ( std::string  cookieString,
SInt32  sumOfValues 
)
private

Definition at line 529 of file AppleRemote.cpp.

Referenced by _queueCallbackFunction().

◆ _handleEventATV23()

void AppleRemote::_handleEventATV23 ( std::string  cookieString,
SInt32  sumOfValues 
)
private

Definition at line 546 of file AppleRemote.cpp.

Referenced by _queueCallbackATV23().

◆ TimeoutHandler

void AppleRemote::TimeoutHandler ( )
privateslot

Definition at line 644 of file AppleRemote.cpp.

Referenced by AppleRemote().

Member Data Documentation

◆ _instance

AppleRemote * AppleRemote::_instance = nullptr
staticprotected

Definition at line 63 of file AppleRemote.h.

◆ openInExclusiveMode

bool AppleRemote::openInExclusiveMode
private

Definition at line 67 of file AppleRemote.h.

Referenced by _openDevice(), isOpenInExclusiveMode(), and setOpenInExclusiveMode().

◆ hidDeviceInterface

IOHIDDeviceInterface** AppleRemote::hidDeviceInterface
private

Definition at line 68 of file AppleRemote.h.

Referenced by _createDeviceInterface(), _initCookies(), and _openDevice().

◆ queue

IOHIDQueueInterface** AppleRemote::queue
private

Definition at line 69 of file AppleRemote.h.

Referenced by _openDevice(), _queueCallbackATV23(), and _queueCallbackFunction().

◆ cookies

std::vector<int> AppleRemote::cookies
private

Definition at line 70 of file AppleRemote.h.

Referenced by _initCookies(), and _openDevice().

◆ cookieToButtonMapping

std::map< std::string, Event > AppleRemote::cookieToButtonMapping
private

Definition at line 71 of file AppleRemote.h.

Referenced by _handleEventATV23(), _handleEventWithCookieString(), and _initCookieMap().

◆ remoteId

int AppleRemote::remoteId
private

Definition at line 72 of file AppleRemote.h.

Referenced by _queueCallbackFunction().

◆ _listener

Listener* AppleRemote::_listener
private

◆ mUsingNewAtv

bool AppleRemote::mUsingNewAtv
private

Definition at line 75 of file AppleRemote.h.

Referenced by AppleRemote(), and QueueCallbackFunction().

◆ mLastEvent

AppleRemote::Event AppleRemote::mLastEvent
private

Definition at line 76 of file AppleRemote.h.

Referenced by _handleEventATV23(), and TimeoutHandler().

◆ mEventCount

int AppleRemote::mEventCount
private

Definition at line 77 of file AppleRemote.h.

Referenced by _handleEventATV23(), and TimeoutHandler().

◆ mKeyIsDown

bool AppleRemote::mKeyIsDown
private

Definition at line 78 of file AppleRemote.h.

Referenced by _handleEventATV23(), and TimeoutHandler().

◆ mCallbackTimer

QTimer* AppleRemote::mCallbackTimer
private

Definition at line 79 of file AppleRemote.h.

Referenced by _handleEventATV23(), _queueCallbackATV23(), AppleRemote(), and TimeoutHandler().


The documentation for this class was generated from the following files: