The Pedigree Project 0.1
Public Types | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Ps2Mouse Class Reference
+ Inheritance diagram for Ps2Mouse:
+ Collaboration diagram for Ps2Mouse:

Public Types

using MouseHandlerFunction = Ps2MouseCallbackRegistry::Handler
 
using Registration = Ps2MouseCallbackRegistry::Registration
 
- Public Types inherited from Device
enum  Type {
  Generic , Root , Disk , Bus ,
  Display , Network , Sound , Console ,
  Mouse , Controller , UsbController , UsbGeneric ,
  UsbContainer
}
 
typedef Device *(* Callback) (Device *)
 

Public Member Functions

 Ps2Mouse (Device *pDev)
 
virtual bool initialise (Ps2Controller *pController)
 
virtual void getName (String &str)
 
EXPORTED_PUBLIC void write (const char *bytes, size_t len)
 
EXPORTED_PUBLIC MUST_USE_RESULT bool subscribe (MouseHandlerFunction handler, void *param, Registration &registration)
 
- Public Member Functions inherited from Device
 Device (Device *p)
 
Device * getParent () const
 
void setParent (Device *p)
 
virtual Type getType ()
 
virtual const String & getSpecificType ()
 
virtual void setSpecificType (String str)
 
void setPciPosition (uint32_t bus, uint32_t device, uint32_t func)
 
void setPciIdentifiers (uint8_t classCode, uint8_t subclassCode, uint16_t vendorId, uint16_t deviceId, uint8_t progIf)
 
void setPciConfigHeader (const PciBus::ConfigSpace &space)
 
PciBus::ConfigSpace getPciConfigHeader () const
 
uint8_t getPciClassCode ()
 
uint8_t getPciSubclassCode ()
 
uint16_t getPciVendorId ()
 
uint16_t getPciDeviceId ()
 
uint8_t getPciProgInterface ()
 
uint32_t getPciBusPosition ()
 
uint32_t getPciDevicePosition ()
 
uint32_t getPciFunctionNumber ()
 
Device * getPhysicalFunction () const
 
size_t getVirtualFunctionIndex () const
 
void setVirtualFunction (Device *physicalFunction, size_t index)
 
virtual void dump (String &str)
 
virtual Vector< Address * > & addresses ()
 
virtual uintptr_t getInterruptNumber ()
 
virtual void setInterruptNumber (uintptr_t n)
 
void addChild (Device *pDevice)
 
Device * getChild (size_t n)
 
size_t getNumChildren ()
 
void removeChild (size_t n)
 
void removeChild (Device *d)
 
void replaceChild (Device *src, Device *dest)
 

Private Types

enum  WaitType { Data , Signal }
 
enum  Ps2Ports { KbdStat = 0x64 , KbdCommand = 0x60 }
 
enum  Ps2Commands {
  EnablePS2 = 0xA8 , DisableKbd = 0xAD , EnableKbd = 0xAE , Mouse = 0xD4 ,
  MouseStream = 0xF4 , MouseDisable = 0xF5 , SetDefaults = 0xF6 , MouseAck = 0xFA
}
 

Private Member Functions

void readerThread ()
 
void updateSubscribers (const void *buffer, size_t len)
 
 Ps2Mouse (const Ps2Mouse &)
 
void operator= (const Ps2Mouse &)
 

Static Private Member Functions

static int readerThreadTrampoline (void *)
 

Private Attributes

Ps2Controller * m_pController
 
Ps2MousePacketDecoder m_PacketDecoder
 
Semaphore m_IrqWait
 IRQ wait semaphore.
 
OwnedThread m_ReaderThread
 
Ps2MouseCallbackRegistry m_Callbacks
 

Additional Inherited Members

- Static Public Member Functions inherited from Device
static bool treeLockHeldByCurrentThread ()
 
static void foreach (Callback callback, Device *root=0)
 
template<class F , class... Args>
static void foreach (pedigree_std::Callable< F > &callback, Device *root, Args... args)
 
static void addToRoot (Device *device)
 
static void searchByVendorId (uint16_t vendorId, void(*callback)(Device *), Device *root=0)
 
static void searchByVendorIdAndDeviceId (uint16_t vendorId, uint16_t deviceId, void(*callback)(Device *), Device *root=0)
 
static void searchByClass (uint16_t classCode, void(*callback)(Device *), Device *root=0)
 
static void searchByClassAndSubclass (uint16_t classCode, uint16_t subclassCode, void(*callback)(Device *), Device *root=0)
 
static void searchByClassSubclassAndProgInterface (uint16_t classCode, uint16_t subclassCode, uint8_t progInterface, void(*callback)(Device *), Device *root=0)
 
- Protected Member Functions inherited from Device
 NOT_COPYABLE_OR_ASSIGNABLE (Device)
 
- Static Protected Member Functions inherited from Device
static Device & root ()
 
- Protected Attributes inherited from Device
Vector< Address * > m_Addresses
 
Vector< Device * > m_Children
 
Device * m_pParent
 
Device * m_PhysicalFunction
 
size_t m_VirtualFunctionIndex
 
uintptr_t m_InterruptNumber
 
String m_SpecificType
 
PciBus::ConfigSpace m_ConfigHeader
 
uint8_t m_ClassCode
 
uint8_t m_SubclassCode
 
uint16_t m_VendorId
 
uint16_t m_DeviceId
 
uint8_t m_ProgInterface
 
uint32_t m_PciBusPos
 
uint32_t m_PciDevicePos
 
uint32_t m_PciFunctionNum
 
- Static Protected Attributes inherited from Device
static Device m_Root
 
static Mutex m_TreeLock
 

Detailed Description

Definition at line 37 of file Ps2Mouse.h.

Member Typedef Documentation

◆ MouseHandlerFunction

using Ps2Mouse::MouseHandlerFunction = Ps2MouseCallbackRegistry::Handler

Definition at line 39 of file Ps2Mouse.h.

◆ Registration

Definition at line 40 of file Ps2Mouse.h.

Member Enumeration Documentation

◆ Ps2Commands

enum Ps2Mouse::Ps2Commands
private

Definition at line 64 of file Ps2Mouse.h.

◆ Ps2Ports

enum Ps2Mouse::Ps2Ports
private

Definition at line 62 of file Ps2Mouse.h.

◆ WaitType

enum Ps2Mouse::WaitType
private

Definition at line 60 of file Ps2Mouse.h.

Constructor & Destructor Documentation

◆ Ps2Mouse()

Ps2Mouse::Ps2Mouse ( Device *  pDev)

Definition at line 32 of file Ps2Mouse.cc.

◆ ~Ps2Mouse()

Ps2Mouse::~Ps2Mouse ( )
virtual

Definition at line 37 of file Ps2Mouse.cc.

Member Function Documentation

◆ getName()

virtual void Ps2Mouse::getName ( String &  str)
inlinevirtual

Stores the device's name in str.

Reimplemented from Device.

Definition at line 47 of file Ps2Mouse.h.

◆ initialise()

bool Ps2Mouse::initialise ( Ps2Controller *  pController)
virtual

Definition at line 41 of file Ps2Mouse.cc.

◆ readerThread()

void Ps2Mouse::readerThread ( )
private

Definition at line 104 of file Ps2Mouse.cc.

◆ readerThreadTrampoline()

int Ps2Mouse::readerThreadTrampoline ( void *  param)
staticprivate

Definition at line 98 of file Ps2Mouse.cc.

◆ subscribe()

bool Ps2Mouse::subscribe ( MouseHandlerFunction  handler,
void *  param,
Registration &  registration 
)

Definition at line 90 of file Ps2Mouse.cc.

◆ updateSubscribers()

void Ps2Mouse::updateSubscribers ( const void *  buffer,
size_t  len 
)
private

Definition at line 94 of file Ps2Mouse.cc.

◆ write()

void Ps2Mouse::write ( const char *  bytes,
size_t  len 
)

Definition at line 84 of file Ps2Mouse.cc.

Member Data Documentation

◆ m_Callbacks

Ps2MouseCallbackRegistry Ps2Mouse::m_Callbacks
private

Definition at line 89 of file Ps2Mouse.h.

◆ m_IrqWait

Semaphore Ps2Mouse::m_IrqWait
private

IRQ wait semaphore.

Definition at line 83 of file Ps2Mouse.h.

◆ m_PacketDecoder

Ps2MousePacketDecoder Ps2Mouse::m_PacketDecoder
private

Definition at line 80 of file Ps2Mouse.h.

◆ m_pController

Ps2Controller* Ps2Mouse::m_pController
private

Definition at line 58 of file Ps2Mouse.h.

◆ m_ReaderThread

OwnedThread Ps2Mouse::m_ReaderThread
private

Definition at line 88 of file Ps2Mouse.h.


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