1 /* 2 * Copyright 2004-2011, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stefano Ceccherini 7 * Michael Lotz, mmlr@mlotz.ch 8 */ 9 #ifndef TABLET_INPUT_DEVICE_H 10 #define TABLET_INPUT_DEVICE_H 11 12 13 #include <InputServerDevice.h> 14 #include <InterfaceDefs.h> 15 #include <Locker.h> 16 17 #include <ObjectList.h> 18 19 20 class TabletDevice; 21 22 class TabletInputDevice : public BInputServerDevice { 23 public: 24 TabletInputDevice(); 25 virtual ~TabletInputDevice(); 26 27 virtual status_t InitCheck(); 28 29 virtual status_t Start(const char* name, void* cookie); 30 virtual status_t Stop(const char* name, void* cookie); 31 32 virtual status_t Control(const char* name, void* cookie, 33 uint32 command, BMessage* message); 34 35 private: 36 friend class TabletDevice; 37 // TODO: needed by the control thread to remove a dead device 38 // find a better way... 39 40 status_t _HandleMonitor(BMessage* message); 41 void _RecursiveScan(const char* directory); 42 43 TabletDevice* _FindDevice(const char* path) const; 44 status_t _AddDevice(const char* path); 45 status_t _RemoveDevice(const char* path); 46 47 private: 48 BObjectList<TabletDevice> fDevices; 49 BLocker fDeviceListLock; 50 }; 51 52 extern "C" BInputServerDevice* instantiate_input_device(); 53 54 #endif // TABLET_INPUT_DEVICE_H 55