CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
EspHardware.cpp
Go to the documentation of this file.
1
6
8#include "cdc_log.h"
9
10#include "driver/temperature_sensor.h"
11
12#include <limits>
13
14static const char* TAG = "EspHardware";
15
16namespace cdc::hal {
17
18class EspHardware : public IEspHardware {
19public:
20 EspHardware() = default;
21
22 // IService implementation
23 bool init() override;
24 bool start() override { state_ = core::ServiceState::STARTED; return true; }
25 void stop() override { state_ = core::ServiceState::STOPPED; }
26 core::ServiceState getState() const override { return state_; }
27 const char* getName() const override { return "esp_hw"; }
28
29 // IEspHardware implementation
30 bool getTemperatureC(float* outC) override;
31
32private:
34 temperature_sensor_handle_t sensor_ = nullptr;
35 bool enabled_ = false;
36};
37
40 return state_ == core::ServiceState::INITIALIZED ||
42 }
43
44 temperature_sensor_config_t cfg = {
45 .range_min = -10,
46 .range_max = 80,
47 .clk_src = TEMPERATURE_SENSOR_CLK_SRC_DEFAULT,
48 .flags = {},
49 };
50 esp_err_t err = temperature_sensor_install(&cfg, &sensor_);
51 if (err != ESP_OK) {
52 LOG_W(TAG, "Temp sensor install failed: %d", err);
54 return false;
55 }
56
57 err = temperature_sensor_enable(sensor_);
58 if (err != ESP_OK) {
59 LOG_W(TAG, "Temp sensor enable failed: %d", err);
60 temperature_sensor_uninstall(sensor_);
61 sensor_ = nullptr;
63 return false;
64 }
65
66 enabled_ = true;
68 return true;
69}
70
72 if (!outC) return false;
73 if (!sensor_ || !enabled_) {
74 if (!init()) {
75 return false;
76 }
77 }
78
79 float tempC = std::numeric_limits<float>::quiet_NaN();
80 esp_err_t err = temperature_sensor_get_celsius(sensor_, &tempC);
81 if (err != ESP_OK) {
82 LOG_W(TAG, "Temp sensor read failed: %d", err);
83 return false;
84 }
85
86 *outC = tempC;
87 return true;
88}
89
91
95
96} // namespace cdc::hal
static const char * TAG
CDC Log: logging over TinyUSB CDC and UART.
#define LOG_W(tag, fmt,...)
Definition cdc_log.h:146
bool getTemperatureC(float *outC) override
core::ServiceState getState() const override
bool start() override
void stop() override
bool init() override
const char * getName() const override
static EspHardware g_espHardware
IEspHardware * getEspHardwareInstance()