38 lines
1.7 KiB
C
38 lines
1.7 KiB
C
#pragma once
|
|
|
|
struct Device;
|
|
|
|
enum class Tab5Variant {
|
|
Unknown,
|
|
V1, // Older variant: ILI9881C display + GT911 touch (see devices_v1.cpp)
|
|
V2, // Newer variant (default): ST7123 display + in-cell touch (see devices_v2.cpp)
|
|
};
|
|
|
|
// Populated once the device_listener callback in display_detect.cpp has detected which
|
|
// panel/touch variant is present (gated on i2c0 + io_expander0 both reaching
|
|
// DEVICE_EVENT_STARTED). Safe to call from Configuration.cpp's createDevices()/createTouch():
|
|
// kernel_init() (which runs the listener to completion) always finishes before hal::init()
|
|
// invokes createDevices().
|
|
[[nodiscard]] Tab5Variant tab5_get_variant();
|
|
|
|
// Registers/unregisters the device_listener (display_detect.cpp) that detects the display/touch
|
|
// variant, keyboard and power control devices and dynamically constructs them. Called from
|
|
// module.cpp's start()/stop().
|
|
void tab5_detect_start();
|
|
void tab5_detect_stop();
|
|
|
|
// --- detect.cpp internals, exposed only for display_detect.cpp's on_display_detect_event() ---
|
|
|
|
// Records the variant found by probe_variant() below - the only writer of the state
|
|
// getDetectedTab5Variant() reads.
|
|
void tab5_set_variant(Tab5Variant variant);
|
|
|
|
// Pulses only the LCD + touch reset bits on io_expander0 (see the pinout table in
|
|
// Configuration.cpp). The other io_expander0 pins (speaker enable, RF switch, 5V bus, camera
|
|
// reset) are unrelated to display bring-up and stay owned by Configuration.cpp's initExpander0().
|
|
bool pulse_display_reset_pins(Device* io_expander0);
|
|
|
|
// Probes i2c0 for a known touch controller address to determine which display/touch variant is
|
|
// present. Must be called after pulse_display_reset_pins().
|
|
Tab5Variant tab5_probe_variant(Device* i2c0);
|