Skip to content

Commit 7b108c7

Browse files
committed
Add setting to override default SS pin
1 parent 059daa4 commit 7b108c7

5 files changed

Lines changed: 26 additions & 6 deletions

File tree

lib/Display/DisplayTemplateDriver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ void DisplayTemplateDriver::init() {
3030
#if defined(ESP32)
3131
if (settings.hardware.spi_bus == VSPI){
3232
SPI.end();
33-
SPI.begin(18, 23, 19, 5);
33+
SPI.begin(18, 23, 19, settings.hardware.getSsPin());
3434
} else if (settings.hardware.spi_bus == HardwareSettings::WAVESHARE_SPI) {
3535
SPI.end();
36-
SPI.begin(13, 12, 14, 15);
36+
SPI.begin(13, 12, 14, settings.hardware.getSsPin());
3737
}
3838
#endif
3939

lib/Settings/Settings.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ void SettingsCallbackObserver::onConfigurationChanged(const ConfigurationPropert
7272
}
7373

7474
const uint8_t HardwareSettings::getSsPin() const {
75+
if (this->ss_pin_override != -1) {
76+
return static_cast<uint8_t>(this->ss_pin_override);
77+
}
78+
7579
switch (this->spi_bus) {
7680
case HSPI:
7781
case WAVESHARE_SPI:

lib/Settings/Settings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ class HardwareSettings : public Configuration {
108108
persistentIntVar(dc_pin, EPD_DEFAULT_DC_PIN);
109109
persistentIntVar(rst_pin, EPD_DEFAULT_RST_PIN);
110110
persistentIntVar(busy_pin, EPD_DEFAULT_BUSY_PIN);
111+
persistentIntVar(ss_pin_override, -1);
111112

112113
const uint8_t getSsPin() const;
113114
};

web/src/settings/schema/hardware.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1+
const VALID_PINS = [
2+
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
3+
];
4+
15
export default {
26
key: "hardware",
37
title: "Hardware",
48
definitions: {
59
pin: {
610
type: "integer",
7-
enum: [
8-
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
9-
]
11+
enum: VALID_PINS
1012
}
1113
},
1214
properties: {
@@ -35,6 +37,16 @@ export default {
3537
],
3638
type: "string",
3739
default: "HSPI"
40+
},
41+
"hardware.ss_pin_override": {
42+
$id: "#/properties/hardware.ss_pin_override",
43+
title: "SPI SS Pin Override",
44+
oneOf: [
45+
{ const: -1, title: "default" },
46+
...VALID_PINS.map(x => ({const: x, title: String(x)}))
47+
],
48+
type: "integer",
49+
default: -1
3850
}
3951
}
4052
};

web/src/settings/ui_schema.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ export default {
5252
"hardware.rst_pin": {
5353
transformer: parseInt
5454
},
55-
"hardware.spi_bus": {
55+
"hardware.ss_pin_override": {
56+
transformer: parseInt,
5657
"ui:help": <>
5758
<div>
5859
SPI bus to use. HSPI uses GPIOs 12, 14, 15. VSPI uses 5, 18, 19. See README for more details.
@@ -63,6 +64,8 @@ export default {
6364
</div>
6465
</>
6566
},
67+
"hardware.spi_bus": {
68+
},
6669
"web.port": {
6770
transformer: parseInt
6871
},

0 commit comments

Comments
 (0)