ESPHome 2025.12.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
16namespace esphome {
17namespace pvvx_mithermometer {
18
19class PVVXDisplay;
20
32
34
36 public:
37 void set_writer(pvvx_writer_t &&writer) { this->writer_ = writer; }
38 void set_auto_clear(bool auto_clear_enabled) { this->auto_clear_enabled_ = auto_clear_enabled; }
39 void set_disconnect_delay(uint32_t ms) { this->disconnect_delay_ms_ = ms; }
40
41 void dump_config() override;
42
43 void update() override;
44
45 void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
46 esp_ble_gattc_cb_param_t *param) override;
47 void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override;
48
50 void set_validity_period(uint16_t validity_period) { this->validity_period_ = validity_period; }
52 void clear() {
53 this->bignum_ = 0;
54 this->smallnum_ = 0;
55 this->cfg_ = 0;
56 }
63 void print_bignum(float bignum) { this->bignum_ = bignum * 10; }
69 void print_smallnum(float smallnum) { this->smallnum_ = smallnum; }
88 void print_happy(bool happy = true) { this->setcfgbit_(0, happy); }
90 void print_sad(bool sad = true) { this->setcfgbit_(1, sad); }
92 void print_bracket(bool bracket = true) { this->setcfgbit_(2, bracket); }
94 void print_percent(bool percent = true) { this->setcfgbit_(3, percent); }
96 void print_battery(bool battery = true) { this->setcfgbit_(4, battery); }
98 void print_unit(UNIT unit) { this->cfg_ = (this->cfg_ & 0x1F) | ((unit & 0x7) << 5); }
99
100 void display();
101
102#ifdef USE_TIME
103 void set_time(time::RealTimeClock *time) { this->time_ = time; };
104#endif
105
106 protected:
108 uint32_t disconnect_delay_ms_ = 5000;
109 uint16_t validity_period_ = 300;
110 uint16_t bignum_ = 0;
111 uint16_t smallnum_ = 0;
112 uint8_t cfg_ = 0;
113
114 void setcfgbit_(uint8_t bit, bool value);
115 void send_to_setup_char_(uint8_t *blk, size_t size);
116 void delayed_disconnect_();
118#ifdef USE_TIME
119 void sync_time_();
121#endif
122 uint16_t char_handle_ = 0;
124
126 esp32_ble_tracker::ESPBTUUID::from_raw("00001f10-0000-1000-8000-00805f9b34fb");
128 esp32_ble_tracker::ESPBTUUID::from_raw("00001f1f-0000-1000-8000-00805f9b34fb");
129
131};
132
133} // namespace pvvx_mithermometer
134} // namespace esphome
135
136#endif
This class simplifies creating components that periodically check a state.
Definition component.h:437
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
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7