AppleRemote Class Reference

#include <AppleRemote.h>

Inheritance diagram for AppleRemote:
MThread

List of all members.

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.

Static Public Member Functions

static AppleRemoteGet ()

Protected Member Functions

 AppleRemote ()

Static Protected Attributes

static AppleRemote_instance = 0

Private Slots

void TimeoutHandler ()

Private Member Functions

void _initCookieMap ()
 Apple keeps changing the "interface" between the remote and the OS.
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

Detailed Description

Definition at line 20 of file AppleRemote.h.


Member Enumeration Documentation

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 (  ) 

Definition at line 58 of file AppleRemote.cpp.

AppleRemote::AppleRemote (  )  [protected]

Definition at line 167 of file AppleRemote.cpp.

Referenced by Get().


Member Function Documentation

AppleRemote * AppleRemote::Get ( void   )  [static]

Definition at line 50 of file AppleRemote.cpp.

Referenced by MythMainWindow::MythMainWindow().

bool AppleRemote::isListeningToRemote (  ) 

Definition at line 65 of file AppleRemote.cpp.

Referenced by MythMainWindow::MythMainWindow().

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

Definition at line 70 of file AppleRemote.cpp.

Referenced by MythMainWindow::MythMainWindow().

Listener* AppleRemote::listener (  )  [inline]

Definition at line 53 of file AppleRemote.h.

void AppleRemote::setOpenInExclusiveMode ( bool  in  )  [inline]

Definition at line 54 of file AppleRemote.h.

bool AppleRemote::isOpenInExclusiveMode (  )  [inline]

Definition at line 55 of file AppleRemote.h.

void AppleRemote::startListening (  ) 

Definition at line 75 of file AppleRemote.cpp.

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

void AppleRemote::stopListening (  ) 
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 118 of file AppleRemote.cpp.

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 202 of file AppleRemote.cpp.

Referenced by AppleRemote().

bool AppleRemote::_initCookies (  )  [private]

Definition at line 307 of file AppleRemote.cpp.

Referenced by startListening().

bool AppleRemote::_createDeviceInterface ( io_object_t  hidDevice  )  [private]

Definition at line 347 of file AppleRemote.cpp.

Referenced by startListening().

bool AppleRemote::_openDevice (  )  [private]

Definition at line 376 of file AppleRemote.cpp.

Referenced by startListening().

void AppleRemote::QueueCallbackFunction ( void *  target,
IOReturn  result,
void *  refcon,
void *  sender 
) [static, private]

Definition at line 438 of file AppleRemote.cpp.

Referenced by _openDevice().

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

Definition at line 449 of file AppleRemote.cpp.

Referenced by QueueCallbackFunction().

void AppleRemote::_queueCallbackATV23 ( IOReturn  result  )  [private]

Definition at line 479 of file AppleRemote.cpp.

Referenced by QueueCallbackFunction().

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

Definition at line 522 of file AppleRemote.cpp.

Referenced by _queueCallbackFunction().

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

Definition at line 539 of file AppleRemote.cpp.

Referenced by _queueCallbackATV23().

void AppleRemote::TimeoutHandler (  )  [private, slot]

Definition at line 637 of file AppleRemote.cpp.

Referenced by AppleRemote().


Member Data Documentation

AppleRemote * AppleRemote::_instance = 0 [static, protected]

Definition at line 63 of file AppleRemote.h.

Referenced by Get().

Definition at line 67 of file AppleRemote.h.

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

IOHIDDeviceInterface** AppleRemote::hidDeviceInterface [private]
IOHIDQueueInterface** AppleRemote::queue [private]
std::vector<int> AppleRemote::cookies [private]

Definition at line 70 of file AppleRemote.h.

Referenced by _initCookies(), _openDevice(), isListeningToRemote(), and stopListening().

Definition at line 71 of file AppleRemote.h.

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

int AppleRemote::remoteId [private]

Definition at line 72 of file AppleRemote.h.

Referenced by _queueCallbackFunction().

Definition at line 75 of file AppleRemote.h.

Referenced by AppleRemote(), QueueCallbackFunction(), and ~AppleRemote().

Definition at line 76 of file AppleRemote.h.

Referenced by _handleEventATV23(), and TimeoutHandler().

int AppleRemote::mEventCount [private]

Definition at line 77 of file AppleRemote.h.

Referenced by _handleEventATV23(), and TimeoutHandler().

Definition at line 78 of file AppleRemote.h.

Referenced by _handleEventATV23(), and TimeoutHandler().

QTimer* AppleRemote::mCallbackTimer [private]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends
Generated on Sat May 26 06:41:52 2012 for MythTV by  doxygen 1.6.3