mirror of
https://github.com/esphome/esphome.git
synced 2024-11-28 12:46:22 +01:00
commit
5dc776e55f
@ -1,6 +1,7 @@
|
|||||||
#include "api_frame_helper.h"
|
#include "api_frame_helper.h"
|
||||||
|
|
||||||
#include "esphome/core/log.h"
|
#include "esphome/core/log.h"
|
||||||
|
#include "esphome/core/hal.h"
|
||||||
#include "esphome/core/helpers.h"
|
#include "esphome/core/helpers.h"
|
||||||
#include "proto.h"
|
#include "proto.h"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@ -721,7 +722,12 @@ APIError APINoiseFrameHelper::shutdown(int how) {
|
|||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
// declare how noise generates random bytes (here with a good HWRNG based on the RF system)
|
// declare how noise generates random bytes (here with a good HWRNG based on the RF system)
|
||||||
void noise_rand_bytes(void *output, size_t len) { esphome::random_bytes(reinterpret_cast<uint8_t *>(output), len); }
|
void noise_rand_bytes(void *output, size_t len) {
|
||||||
|
if (!esphome::random_bytes(reinterpret_cast<uint8_t *>(output), len)) {
|
||||||
|
ESP_LOGE(TAG, "Failed to acquire random bytes, rebooting!");
|
||||||
|
arch_restart();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif // USE_API_NOISE
|
#endif // USE_API_NOISE
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ from ..const import (
|
|||||||
CONF_FORCE_NEW_RANGE,
|
CONF_FORCE_NEW_RANGE,
|
||||||
CONF_MODBUS_CONTROLLER_ID,
|
CONF_MODBUS_CONTROLLER_ID,
|
||||||
CONF_REGISTER_TYPE,
|
CONF_REGISTER_TYPE,
|
||||||
|
CONF_SKIP_UPDATES,
|
||||||
CONF_USE_WRITE_MULTIPLE,
|
CONF_USE_WRITE_MULTIPLE,
|
||||||
CONF_WRITE_LAMBDA,
|
CONF_WRITE_LAMBDA,
|
||||||
)
|
)
|
||||||
@ -53,6 +54,7 @@ async def to_code(config):
|
|||||||
config[CONF_ADDRESS],
|
config[CONF_ADDRESS],
|
||||||
byte_offset,
|
byte_offset,
|
||||||
config[CONF_BITMASK],
|
config[CONF_BITMASK],
|
||||||
|
config[CONF_SKIP_UPDATES],
|
||||||
config[CONF_FORCE_NEW_RANGE],
|
config[CONF_FORCE_NEW_RANGE],
|
||||||
)
|
)
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
@ -10,14 +10,14 @@ namespace modbus_controller {
|
|||||||
class ModbusSwitch : public Component, public switch_::Switch, public SensorItem {
|
class ModbusSwitch : public Component, public switch_::Switch, public SensorItem {
|
||||||
public:
|
public:
|
||||||
ModbusSwitch(ModbusRegisterType register_type, uint16_t start_address, uint8_t offset, uint32_t bitmask,
|
ModbusSwitch(ModbusRegisterType register_type, uint16_t start_address, uint8_t offset, uint32_t bitmask,
|
||||||
bool force_new_range)
|
uint8_t skip_updates, bool force_new_range)
|
||||||
: Component(), switch_::Switch() {
|
: Component(), switch_::Switch() {
|
||||||
this->register_type = register_type;
|
this->register_type = register_type;
|
||||||
this->start_address = start_address;
|
this->start_address = start_address;
|
||||||
this->offset = offset;
|
this->offset = offset;
|
||||||
this->bitmask = bitmask;
|
this->bitmask = bitmask;
|
||||||
this->sensor_value_type = SensorValueType::BIT;
|
this->sensor_value_type = SensorValueType::BIT;
|
||||||
this->skip_updates = 0;
|
this->skip_updates = skip_updates;
|
||||||
this->register_count = 1;
|
this->register_count = 1;
|
||||||
if (register_type == ModbusRegisterType::HOLDING || register_type == ModbusRegisterType::COIL) {
|
if (register_type == ModbusRegisterType::HOLDING || register_type == ModbusRegisterType::COIL) {
|
||||||
this->start_address += offset;
|
this->start_address += offset;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
"""Constants used by esphome."""
|
"""Constants used by esphome."""
|
||||||
|
|
||||||
__version__ = "2022.1.0b3"
|
__version__ = "2022.1.0b4"
|
||||||
|
|
||||||
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
||||||
|
|
||||||
|
@ -287,13 +287,12 @@ uint32_t random_uint32() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
float random_float() { return static_cast<float>(random_uint32()) / static_cast<float>(UINT32_MAX); }
|
float random_float() { return static_cast<float>(random_uint32()) / static_cast<float>(UINT32_MAX); }
|
||||||
void random_bytes(uint8_t *data, size_t len) {
|
bool random_bytes(uint8_t *data, size_t len) {
|
||||||
#ifdef USE_ESP32
|
#ifdef USE_ESP32
|
||||||
esp_fill_random(data, len);
|
esp_fill_random(data, len);
|
||||||
|
return true;
|
||||||
#elif defined(USE_ESP8266)
|
#elif defined(USE_ESP8266)
|
||||||
if (os_get_random(data, len) != 0) {
|
return os_get_random(data, len) == 0;
|
||||||
ESP_LOGE(TAG, "Failed to generate random bytes!");
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
#error "No random source available for this configuration."
|
#error "No random source available for this configuration."
|
||||||
#endif
|
#endif
|
||||||
|
@ -311,7 +311,7 @@ uint32_t random_uint32();
|
|||||||
/// Return a random float between 0 and 1.
|
/// Return a random float between 0 and 1.
|
||||||
float random_float();
|
float random_float();
|
||||||
/// Generate \p len number of random bytes.
|
/// Generate \p len number of random bytes.
|
||||||
void random_bytes(uint8_t *data, size_t len);
|
bool random_bytes(uint8_t *data, size_t len);
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ pyserial==3.5
|
|||||||
platformio==5.2.4 # When updating platformio, also update Dockerfile
|
platformio==5.2.4 # When updating platformio, also update Dockerfile
|
||||||
esptool==3.2
|
esptool==3.2
|
||||||
click==8.0.3
|
click==8.0.3
|
||||||
esphome-dashboard==20220113.2
|
esphome-dashboard==20220116.0
|
||||||
aioesphomeapi==10.6.0
|
aioesphomeapi==10.6.0
|
||||||
zeroconf==0.37.0
|
zeroconf==0.37.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user