Skip to content

Commit

Permalink
Char buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
iranl committed May 26, 2024
1 parent 5605631 commit 04019b9
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 10 deletions.
4 changes: 2 additions & 2 deletions src/CharBuffer.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include "CharBuffer.h"

void CharBuffer::initialize()
void CharBuffer::initialize(uint16_t buffer_size)
{
_buffer = new char[CHAR_BUFFER_SIZE];
_buffer = new char[buffer_size];
}

char *CharBuffer::get()
Expand Down
4 changes: 1 addition & 3 deletions src/CharBuffer.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
#pragma once

#define CHAR_BUFFER_SIZE 4096

class CharBuffer
{
public:
static void initialize();
static void initialize(uint16_t buffer_size);
static char* get();

private:
Expand Down
1 change: 1 addition & 0 deletions src/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

#define GPIO_DEBOUNCE_TIME 200

#define CHAR_BUFFER_SIZE 4096
#define NETWORK_TASK_SIZE 12288
#define NUKI_TASK_SIZE 8192
#define PD_TASK_SIZE 1024
Expand Down
3 changes: 2 additions & 1 deletion src/PreferencesKeys.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
#define preference_timecontrol_max_entries (char*)"tcmaxentry"
#define preference_bootloop_counter (char*)"btlpcounter"
#define preference_enable_bootloop_reset (char*)"enabtlprst"
#define preference_buffer_size (char*)"buffsize"

class DebugPreferences
{
Expand All @@ -90,7 +91,7 @@ class DebugPreferences
preference_lock_enabled, preference_lock_pin_status, preference_mqtt_lock_path, preference_opener_enabled, preference_opener_pin_status,
preference_opener_continuous_mode, preference_mqtt_opener_path, preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count,
preference_enable_bootloop_reset, preference_mqtt_ca, preference_mqtt_crt, preference_mqtt_key, preference_mqtt_hass_discovery, preference_mqtt_hass_cu_url,
preference_ip_dhcp_enabled, preference_ip_address, preference_ip_subnet, preference_ip_gateway, preference_ip_dns_server,
preference_buffer_size, preference_ip_dhcp_enabled, preference_ip_address, preference_ip_subnet, preference_ip_gateway, preference_ip_dns_server,
preference_network_hardware, preference_network_wifi_fallback_disabled, preference_rssi_publish_interval, preference_hostname,
preference_network_timeout, preference_restart_on_disconnect, preference_restart_ble_beacon_lost, preference_query_interval_lockstate,
preference_query_interval_configuration, preference_query_interval_battery, preference_query_interval_keypad, preference_keypad_control_enabled,
Expand Down
9 changes: 9 additions & 0 deletions src/WebCfgServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,14 @@ bool WebCfgServer::processArgs(String& message)
configChanged = true;
}
}
else if(key == "BUFFSIZE")
{
if(value.toInt() > 4095 && value.toInt() < 32769)
{
_preferences->putInt(preference_buffer_size, value.toInt());
configChanged = true;
}
}
else if(key == "BTLPRST")
{
_preferences->putBool(preference_enable_bootloop_reset, (value == "1"));
Expand Down Expand Up @@ -1336,6 +1344,7 @@ void WebCfgServer::buildAdvancedConfigHtml(String &response)
response.concat(_preferences->getBool(preference_enable_bootloop_reset, false) ? "Enabled" : "Disabled");
response.concat("</td></tr>");
printCheckBox(response, "BTLPRST", "Enable Bootloop prevention (Try to reset these settings to default on bootloop)", true, "");
printInputField(response, "BUFFSIZE", "Char buffer size (min 4096, max 32768)", _preferences->getInt(preference_buffer_size, CHAR_BUFFER_SIZE), 6);
printInputField(response, "TSKNTWK", "Task size Network (min 12288, max 32768)", _preferences->getInt(preference_task_size_network, NETWORK_TASK_SIZE), 6);
printInputField(response, "TSKNUKI", "Task size Nuki (min 8192, max 32768)", _preferences->getInt(preference_task_size_nuki, NUKI_TASK_SIZE), 6);
printInputField(response, "TSKPD", "Task size Presence Detection (min 1024, max 4048)", _preferences->getInt(preference_task_size_pd, PD_TASK_SIZE), 6);
Expand Down
10 changes: 6 additions & 4 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,8 +295,10 @@ void setup()
{
deviceIdOpener->assignId(deviceIdLock->get());
}

uint16_t buffer_size = preferences->getInt(preference_buffer_size, 4096);

CharBuffer::initialize();
CharBuffer::initialize(buffer_size);

if(preferences->getInt(preference_restart_timer) != 0)
{
Expand All @@ -312,15 +314,15 @@ void setup()
openerEnabled = preferences->getBool(preference_opener_enabled);

const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
network = new Network(preferences, gpio, mqttLockPath, CharBuffer::get(), CHAR_BUFFER_SIZE);
network = new Network(preferences, gpio, mqttLockPath, CharBuffer::get(), buffer_size);
network->initialize();

networkLock = new NetworkLock(network, preferences, CharBuffer::get(), CHAR_BUFFER_SIZE);
networkLock = new NetworkLock(network, preferences, CharBuffer::get(), buffer_size);
networkLock->initialize();

if(openerEnabled)
{
networkOpener = new NetworkOpener(network, preferences, CharBuffer::get(), CHAR_BUFFER_SIZE);
networkOpener = new NetworkOpener(network, preferences, CharBuffer::get(), buffer_size);
networkOpener->initialize();
}

Expand Down

0 comments on commit 04019b9

Please sign in to comment.