Allocate pins using pinManager
This commit is contained in:
@@ -561,6 +561,23 @@ BusHub75Matrix::BusHub75Matrix(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWh
|
||||
// OK, now we can create our matrix object
|
||||
display = new MatrixPanel_I2S_DMA(mxconfig);
|
||||
|
||||
pinManager.allocatePin(mxconfig.gpio.r1, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.g1, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.b1, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.r2, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.g2, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.b2, true, PinOwner::HUB75);
|
||||
|
||||
pinManager.allocatePin(mxconfig.gpio.lat, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.oe, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.clk, true, PinOwner::HUB75);
|
||||
|
||||
pinManager.allocatePin(mxconfig.gpio.a, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.b, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.c, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.d, true, PinOwner::HUB75);
|
||||
pinManager.allocatePin(mxconfig.gpio.e, true, PinOwner::HUB75);
|
||||
|
||||
// display->setLatBlanking(4);
|
||||
|
||||
USER_PRINTLN("MatrixPanel_I2S_DMA created");
|
||||
@@ -590,6 +607,27 @@ void BusHub75Matrix::setPixelColor(uint16_t pix, uint32_t c) {
|
||||
void BusHub75Matrix::setBrightness(uint8_t b, bool immediate) {
|
||||
this->display->setBrightness(b);
|
||||
}
|
||||
|
||||
void BusHub75Matrix::deallocatePins() {
|
||||
|
||||
pinManager.deallocatePin(mxconfig.gpio.r1, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.g1, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.b1, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.r2, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.g2, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.b2, PinOwner::HUB75);
|
||||
|
||||
pinManager.deallocatePin(mxconfig.gpio.lat, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.oe, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.clk, PinOwner::HUB75);
|
||||
|
||||
pinManager.deallocatePin(mxconfig.gpio.a, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.b, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.c, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.d, PinOwner::HUB75);
|
||||
pinManager.deallocatePin(mxconfig.gpio.e, PinOwner::HUB75);
|
||||
|
||||
}
|
||||
#endif
|
||||
// ***************************************************************************
|
||||
|
||||
|
||||
@@ -351,7 +351,13 @@ class BusHub75Matrix : public Bus {
|
||||
|
||||
uint8_t getPins(uint8_t* pinArray) { return 1; } // Fake value due to keep finaliseInit happy
|
||||
|
||||
void cleanup() {}
|
||||
void deallocatePins();
|
||||
|
||||
void cleanup() {
|
||||
deallocatePins();
|
||||
delete display;
|
||||
_valid = false;
|
||||
}
|
||||
|
||||
~BusHub75Matrix() {
|
||||
cleanup();
|
||||
|
||||
@@ -35,6 +35,7 @@ enum struct PinOwner : uint8_t {
|
||||
DMX = 0x8A, // 'DMX' == hard-coded to IO2
|
||||
HW_I2C = 0x8B, // 'I2C' == hardware I2C pins (4&5 on ESP8266, 21&22 on ESP32)
|
||||
HW_SPI = 0x8C, // 'SPI' == hardware (V)SPI pins (13,14&15 on ESP8266, 5,18&23 on ESP32)
|
||||
HUB75 = 0x8D, // 'Hub75' == Hub75 driver
|
||||
// Use UserMod IDs from const.h here
|
||||
UM_Unspecified = USERMOD_ID_UNSPECIFIED, // 0x01
|
||||
UM_Example = USERMOD_ID_EXAMPLE, // 0x02 // Usermod "usermod_v2_example.h"
|
||||
|
||||
Reference in New Issue
Block a user