blob: cbfdd66d0f2d3346dd5d694bd3609fac92c5694f [file] [log] [blame]
// 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