mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-04-18 09:25:06 +00:00
Font size set to 18 for 800x480 displays Fix web server dashboard not rendering when sdcard isn't present Added new driver modules - BM8563 RTC - RX8130CE RTC - MPU6886 IMU - QMI8658 IMU - M5PM1 Power Management Chip Applied the above modules to applicable devicetrees. Added new device: M5Stack StickS3 Added new M5Stack Tab5 St7123 variant. ButtonControl changed to use interupts and xQueue, added AppClose action. And some bonus symbols of course, the apps are hungry for symbols.
89 lines
3.9 KiB
C
89 lines
3.9 KiB
C
// SPDX-License-Identifier: Apache-2.0
|
||
#pragma once
|
||
|
||
#include <stdbool.h>
|
||
#include <stdint.h>
|
||
#include <tactility/error.h>
|
||
|
||
struct Device;
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
struct M5pm1Config {
|
||
uint8_t address;
|
||
};
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Power source (REG_PWR_SRC 0x04)
|
||
// ---------------------------------------------------------------------------
|
||
typedef enum {
|
||
M5PM1_PWR_SRC_5VIN = 0,
|
||
M5PM1_PWR_SRC_5VINOUT = 1,
|
||
M5PM1_PWR_SRC_BAT = 2,
|
||
M5PM1_PWR_SRC_UNKNOWN = 3,
|
||
} M5pm1PowerSource;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Voltage readings
|
||
// ---------------------------------------------------------------------------
|
||
error_t m5pm1_get_battery_voltage(struct Device* device, uint16_t* mv);
|
||
error_t m5pm1_get_vin_voltage(struct Device* device, uint16_t* mv);
|
||
error_t m5pm1_get_5vout_voltage(struct Device* device, uint16_t* mv);
|
||
error_t m5pm1_get_power_source(struct Device* device, M5pm1PowerSource* source);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Charging & power rails
|
||
// ---------------------------------------------------------------------------
|
||
/** PM1_G0 low = charging (connected to charge-status pin of the charge IC) */
|
||
error_t m5pm1_is_charging(struct Device* device, bool* charging);
|
||
error_t m5pm1_set_charge_enable(struct Device* device, bool enable);
|
||
error_t m5pm1_set_boost_enable(struct Device* device, bool enable); ///< 5V BOOST / Grove power
|
||
error_t m5pm1_set_ldo_enable(struct Device* device, bool enable); ///< 3.3V LDO
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Temperature (internal chip sensor)
|
||
// ---------------------------------------------------------------------------
|
||
/** Returns temperature in units of 0.1 °C */
|
||
error_t m5pm1_get_temperature(struct Device* device, uint16_t* decidegc);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// System commands
|
||
// ---------------------------------------------------------------------------
|
||
error_t m5pm1_shutdown(struct Device* device);
|
||
error_t m5pm1_reboot(struct Device* device);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Power button (M5PM1 internal button, not ESP32 GPIO)
|
||
// ---------------------------------------------------------------------------
|
||
/** Current instantaneous state of the power button */
|
||
error_t m5pm1_btn_get_state(struct Device* device, bool* pressed);
|
||
/** Edge-triggered flag — auto-clears on read */
|
||
error_t m5pm1_btn_get_flag(struct Device* device, bool* was_pressed);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Watchdog timer
|
||
// ---------------------------------------------------------------------------
|
||
/** timeout_sec: 0 = disabled, 1–255 = timeout in seconds */
|
||
error_t m5pm1_wdt_set(struct Device* device, uint8_t timeout_sec);
|
||
error_t m5pm1_wdt_feed(struct Device* device);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// RTC RAM (32 bytes, retained across sleep / power-off)
|
||
// ---------------------------------------------------------------------------
|
||
error_t m5pm1_read_rtc_ram(struct Device* device, uint8_t offset, uint8_t* data, uint8_t len);
|
||
error_t m5pm1_write_rtc_ram(struct Device* device, uint8_t offset, const uint8_t* data, uint8_t len);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// NeoPixel LED (via M5PM1 LED controller, max 32 LEDs)
|
||
// ---------------------------------------------------------------------------
|
||
error_t m5pm1_set_led_count(struct Device* device, uint8_t count);
|
||
error_t m5pm1_set_led_color(struct Device* device, uint8_t index, uint8_t r, uint8_t g, uint8_t b);
|
||
error_t m5pm1_refresh_leds(struct Device* device);
|
||
error_t m5pm1_disable_leds(struct Device* device);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|