You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.4 KiB
48 lines
1.4 KiB
#ifndef ANDROID_DVR_VIRTUAL_TOUCHPAD_SERVICE_H
|
|
#define ANDROID_DVR_VIRTUAL_TOUCHPAD_SERVICE_H
|
|
|
|
#include <android/dvr/BnVirtualTouchpadService.h>
|
|
|
|
#include "VirtualTouchpad.h"
|
|
|
|
namespace android {
|
|
namespace dvr {
|
|
|
|
// VirtualTouchpadService implements the service side of
|
|
// the Binder interface defined in VirtualTouchpadService.aidl.
|
|
//
|
|
class VirtualTouchpadService : public BnVirtualTouchpadService {
|
|
public:
|
|
explicit VirtualTouchpadService(std::unique_ptr<VirtualTouchpad> touchpad)
|
|
: touchpad_(std::move(touchpad)), client_pid_(0) {}
|
|
~VirtualTouchpadService() override;
|
|
|
|
protected:
|
|
// Implements IVirtualTouchpadService.
|
|
binder::Status attach() override;
|
|
binder::Status detach() override;
|
|
binder::Status touch(int touchpad, float x, float y, float pressure) override;
|
|
binder::Status buttonState(int touchpad, int buttons) override;
|
|
binder::Status scroll(int touchpad, float x, float y) override;
|
|
|
|
// Implements BBinder::dump().
|
|
status_t dump(int fd, const Vector<String16>& args) override;
|
|
|
|
private:
|
|
bool CheckPermissions();
|
|
bool CheckTouchPermission(pid_t* out_pid);
|
|
|
|
std::unique_ptr<VirtualTouchpad> touchpad_;
|
|
|
|
// Only one client at a time can use the virtual touchpad.
|
|
pid_t client_pid_;
|
|
|
|
VirtualTouchpadService(const VirtualTouchpadService&) = delete;
|
|
void operator=(const VirtualTouchpadService&) = delete;
|
|
};
|
|
|
|
} // namespace dvr
|
|
} // namespace android
|
|
|
|
#endif // ANDROID_DVR_VIRTUAL_TOUCHPAD_SERVICE_H
|