| /* |
| * |
| * 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 |