ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
pvvx_display.h
Go to the documentation of this file.
1#pragma once
2
7
8#include <cinttypes>
9
10#ifdef USE_ESP32
11#include <esp_gattc_api.h>
12#ifdef USE_TIME
14#endif
15
17
18class PVVXDisplay;
19
31
33
35 public:
36 void set_writer(pvvx_writer_t &&writer) { this->writer_ = writer; }
37 void set_auto_clear(bool auto_clear_enabled) { this->auto_clear_enabled_ = auto_clear_enabled; }
39
40 void dump_config() override;
41
42 void update() override;
43
44 void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
45 esp_ble_gattc_cb_param_t *param) override;
46 void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override;
47
49 void set_validity_period(uint16_t validity_period) { this->validity_period_ = validity_period; }
51 void clear() {
52 this->bignum_ = 0;
53 this->smallnum_ = 0;
54 this->cfg_ = 0;
55 }
62 void print_bignum(float bignum) { this->bignum_ = static_cast<int16_t>(bignum * 10); }
68 void print_smallnum(float smallnum) { this->smallnum_ = static_cast<int16_t>(smallnum); }
87 void print_happy(bool happy = true) { this->setcfgbit_(0, happy); }
89 void print_sad(bool sad = true) { this->setcfgbit_(1, sad); }
91 void print_bracket(bool bracket = true) { this->setcfgbit_(2, bracket); }
93 void print_percent(bool percent = true) { this->setcfgbit_(3, percent); }
95 void print_battery(bool battery = true) { this->setcfgbit_(4, battery); }
97 void print_unit(UNIT unit) { this->cfg_ = (this->cfg_ & 0x1F) | ((unit & 0x7) << 5); }
98
99 void display();
100
101#ifdef USE_TIME
102 void set_time(time::RealTimeClock *time) { this->time_ = time; };
103#endif
104
105 protected:
108 uint16_t validity_period_ = 300;
109 int16_t bignum_ = 0;
110 int16_t smallnum_ = 0;
111 uint8_t cfg_ = 0;
112
113 void setcfgbit_(uint8_t bit, bool value);
114 void send_to_setup_char_(uint8_t *blk, size_t size);
115 void delayed_disconnect_();
117#ifdef USE_TIME
118 void sync_time_();
120#endif
121 uint16_t char_handle_ = 0;
123
125 esp32_ble_tracker::ESPBTUUID::from_raw("00001f10-0000-1000-8000-00805f9b34fb");
127 esp32_ble_tracker::ESPBTUUID::from_raw("00001f1f-0000-1000-8000-00805f9b34fb");
128
130};
131
132} // namespace esphome::pvvx_mithermometer
133
134#endif
This class simplifies creating components that periodically check a state.
Definition component.h:585
void send_to_setup_char_(uint8_t *blk, size_t size)
void print_bignum(float bignum)
Print the big number.
void print_bracket(bool bracket=true)
Print round brackets around the face.
void setcfgbit_(uint8_t bit, bool value)
void print_battery(bool battery=true)
Print battery sign.
void set_time(time::RealTimeClock *time)
esp32_ble_tracker::ESPBTUUID service_uuid_
void set_validity_period(uint16_t validity_period)
Set validity period of the display information in seconds (1..65535)
esp32_ble_tracker::ESPBTUUID char_uuid_
void set_auto_clear(bool auto_clear_enabled)
void print_smallnum(float smallnum)
Print the small number.
void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) override
void print_happy(bool happy=true)
Print a happy face.
void set_writer(pvvx_writer_t &&writer)
void print_percent(bool percent=true)
Print percent sign at small number.
void print_sad(bool sad=true)
Print a sad face.
void print_unit(UNIT unit)
Print unit of big number.
The RealTimeClock class exposes common timekeeping functions via the device's local real-time clock.
UNIT
Possible units for the big number.
@ UNIT_NONE
do not show a unit
uint16_t size
Definition helpers.cpp:25
static void uint32_t