| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #pragma once |
| |
| #include <zircon/compiler.h> |
| #include <zircon/types.h> |
| #include <stdbool.h> |
| #include <stdint.h> |
| |
| __BEGIN_CDECLS |
| |
| #define EGALAX_RPT_ID_TOUCH 1 |
| #define EGALAX_X_MAX 4095 |
| #define EGALAX_Y_MAX 4095 |
| |
| // size in bits of the button portion of the button_pad field |
| #define EGALAX_BTN_SZ 2 |
| #define EGALAX_PRESSED_FLAGS_MASK 0x03 |
| #define egalax_pressed_flags(b) ((b)&EGALAX_PRESSED_FLAGS_MASK) |
| #define egalax_pad(b) ((b) >> EGALAX_BTN_SZ) |
| |
| typedef struct egalax_touchscreen { |
| uint8_t report_id; |
| // the lower two bits should be the active button and the upper 6 bits |
| // is padding (or a value of unknown significance) |
| uint8_t button_pad; |
| uint16_t x; |
| uint16_t y; |
| } __PACKED egalax_touch_t; |
| |
| bool is_egalax_touchscreen_report_desc(const uint8_t* data, size_t len); |
| const uint8_t* get_egalax_touch_report_desc(size_t* len); |
| |
| zx_status_t setup_egalax_touchscreen(int fd); |
| |
| __END_CDECLS |