/* * * Copyright (c) 2020 Project CHIP Authors * Copyright (c) 2018 Nest Labs, Inc. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @file Display.h * * This describes helper APIs for the M5Stack's Display * */ #pragma once #include "esp_system.h" #if CONFIG_HAVE_DISPLAY #if CONFIG_DEVICE_TYPE_M5STACK #define INVERT_DISPLAY INVERT_ON #elif CONFIG_DEVICE_TYPE_ESP32_WROVER_KIT #define INVERT_DISPLAY INVERT_OFF #endif extern "C" { #include "tft.h" #include "tftspi.h" } // extern "C" // To reduce wear (and heat) on the screen, the display will always go off after a few seconds #define DISPLAY_TIMEOUT_MS 30000 extern uint16_t DisplayHeight; extern uint16_t DisplayWidth; /** * @brief * Initialize the M5Stack's display driver and set the default bright control and timeout * * @return esp_err_t 0 if the display driver was initialized correctly */ extern esp_err_t InitDisplay(); /** * @brief * Clear the display by setting the whole screen to black */ extern void ClearDisplay(); /** * @brief * Clear a portion of the display by drawing a black rectangle based on the given arguments * * Calling this with default arguments is the same as calling `ClearDisplay()`. * * @param x_percent_start The starting x coordinate specified as a percentage of the screen's width. * @param y_percent_start The starting y coordinate specified as a percentage of the screen's height. * @param x_percent_end The end x coordinate specified as a percentage of the screen's width. * @param y_percent_end The end y coordinate specified as a percentage of the screen's height. */ extern void ClearRect(uint16_t x_percent_start = 0, uint16_t y_percent_start = 0, uint16_t x_percent_end = 100, uint16_t y_percent_end = 100); /** * @brief * Display a status message at a given vertical position * * The status message will be drawn from the left edge of the screen * * @param msg The message to display * @param vpos The vertical position(0-100 percent) of the message. Where 0 is the top of the screen */ extern void DisplayStatusMessage(char * msg, uint16_t vpos); /** * @brief * Reset the display timeout and set the brightness back up to default values * * @return true If the display was woken */ extern bool WakeDisplay(); #endif // #if CONFIG_HAVE_DISPLAY