Deallocate relay, button and IR pins prior to reallocation in JSON config parser (#3294)
This commit is contained in:
parent
286e057fae
commit
e3ee48b52e
@ -197,6 +197,9 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
|
|||||||
disablePullUp = !pull;
|
disablePullUp = !pull;
|
||||||
JsonArray hw_btn_ins = btn_obj[F("ins")];
|
JsonArray hw_btn_ins = btn_obj[F("ins")];
|
||||||
if (!hw_btn_ins.isNull()) {
|
if (!hw_btn_ins.isNull()) {
|
||||||
|
for (uint8_t b = 0; b < WLED_MAX_BUTTONS; b++) { // deallocate existing button pins
|
||||||
|
pinManager.deallocatePin(btnPin[b], PinOwner::Button); // does nothing if trying to deallocate a pin with PinOwner != Button
|
||||||
|
}
|
||||||
uint8_t s = 0;
|
uint8_t s = 0;
|
||||||
for (JsonObject btn : hw_btn_ins) {
|
for (JsonObject btn : hw_btn_ins) {
|
||||||
CJSON(buttonType[s], btn["type"]);
|
CJSON(buttonType[s], btn["type"]);
|
||||||
@ -264,6 +267,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
|
|||||||
|
|
||||||
int hw_ir_pin = hw["ir"]["pin"] | -2; // 4
|
int hw_ir_pin = hw["ir"]["pin"] | -2; // 4
|
||||||
if (hw_ir_pin > -2) {
|
if (hw_ir_pin > -2) {
|
||||||
|
pinManager.deallocatePin(irPin, PinOwner::IR);
|
||||||
if (pinManager.allocatePin(hw_ir_pin, false, PinOwner::IR)) {
|
if (pinManager.allocatePin(hw_ir_pin, false, PinOwner::IR)) {
|
||||||
irPin = hw_ir_pin;
|
irPin = hw_ir_pin;
|
||||||
} else {
|
} else {
|
||||||
@ -276,6 +280,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
|
|||||||
JsonObject relay = hw[F("relay")];
|
JsonObject relay = hw[F("relay")];
|
||||||
int hw_relay_pin = relay["pin"] | -2;
|
int hw_relay_pin = relay["pin"] | -2;
|
||||||
if (hw_relay_pin > -2) {
|
if (hw_relay_pin > -2) {
|
||||||
|
pinManager.deallocatePin(rlyPin, PinOwner::Relay);
|
||||||
if (pinManager.allocatePin(hw_relay_pin,true, PinOwner::Relay)) {
|
if (pinManager.allocatePin(hw_relay_pin,true, PinOwner::Relay)) {
|
||||||
rlyPin = hw_relay_pin;
|
rlyPin = hw_relay_pin;
|
||||||
pinMode(rlyPin, OUTPUT);
|
pinMode(rlyPin, OUTPUT);
|
||||||
|
Loading…
Reference in New Issue
Block a user