Commit Graph

46 Commits

Author SHA1 Message Date
Frank
63db2c9fc1 prepare pinmager for -P4
support up to 56 GPIO pins (0 thru 55)
2025-01-16 13:07:43 +01:00
Frank
7f9da309c9 const const const
adding hints for the compiler for optimization.
In case your custom build complains about "const", just remove the keyword. based on e82f38e277, but going further :-)

* "const" class functions : function does not modify any class attributes ( --> "this" becomes const)

* __attribute__((pure)) :  function return value depends only on the parameters and/or global variables. The function does not modify any global or static variables.
* __attribute__((const)) : function only examines arguments (no globals), and has no effects except the return value. This slightly more strict than "pure"
* hot: tells the compiler "this functions is called very often"
* cold: the opposite of hot
2024-08-07 14:58:38 +02:00
Will Tatam
99511f2448 Merge branch 'mdev' into ESP32-HUB75-MatrixPanel-DMA 2024-02-22 21:39:53 +00:00
Will Tatam
2065d9ca2e Allocate pins using pinManager 2024-02-22 10:46:56 +00:00
netmindz
42109fe606 Merge branch 'mdev' into dmx_input 2024-01-16 13:27:42 +00:00
Frank
52ceabb505 LDR_Dusk_Dawn: use pinManager, check ldrPin before use (quick-fix for #3490) 2023-12-15 22:05:01 +01:00
Arne
a516a7b85f Move dmx_input pin allocations from wled.cpp to dmx.cpp 2023-09-24 13:30:09 +02:00
Ewoud
27c4d98ada Net Debug / Net Serial updates
Add PinManagerClass::manageDebugTXPin to handle allocating pins for WLED_DEBUG_HOST and WLED_DEBUG
2023-03-23 14:21:42 +01:00
Frank
2de7971623 mpu6050 usermod: allow to disable usermod
* added usermod config information (so it can be disabled)
* check that "INTERRUPT_PIN" does support interrupts (MM specific)
* expose "dmpReady" in public interface
* adjusted games usermod to switch to "simulation" in case mpu6050 is not active

Still toDo:
1. add interrupt PIN and errormessages to settings page.
2. de-alloc intPin when disabled (and disable interrupt)
3. usermod is still destroying DEBUG_PRINT macros.
4. temporarily disable MPU interrupt when  onUpdateBegin(true)
2023-03-14 20:52:48 +01:00
Frank
fb3e5cf3e8 comment corrected. 2023-01-20 22:18:11 +01:00
Frank
5eb18a6173 Pin Info update
* Additional functions: isPinPWM, isPinINT
* aliases: PM_ADC1 instead of PinManagerClass::ADC1
* make getADCPin work on "classic ESP32"

--> Tested and works on 8266, ESP32 (default platform), ESP32 (V4 Platform). ESP32-S3, ESP32-S2, ESP32-C3
2023-01-20 22:13:30 +01:00
Frank
45e46822a1 PinManager: additional GPIO infos
bool isPinTouch(int gpio);                                   // true if gpio supports touch functions
  bool isPinAnalog(int gpio);                                  // true if gpio supports analogRead
  bool isPinADC1(int gpio);                                    // true if gpio supports analogRead, and it belongs to ADC unit 1
  bool isPinADC2(int gpio);                                    // true if gpio supports analogRead, and it belongs to ADC unit 2
  #define PM_NO_PIN 255
  typedef enum { ADC_none = 0, ADC1 = 1, ADC2 = 2 } AdcIdentifier;
  uint8_t  getADCPin(AdcIdentifier adcUnit, uint8_t adcPort);   // get GPIO number for ADC unit x, channel y. 255 = no such pin
2023-01-20 19:21:45 +01:00
Frank
b29ff1186b best of I2CSPI-refactor
* cherry-picking my additions to pinmanger
* toDo: replace Wire.begin() with pinManager.joinWire()
2023-01-08 19:09:30 +01:00
Ewoud
66b15d32d9 Merge remote-tracking branch 'upstream/main' into mdev 2023-01-07 12:01:03 +01:00
Blaž Kristan
506b6b51ce whitespace cleanup 2023-01-06 09:24:29 +01:00
Ewoud
4409ceb3ec Merge remote-tracking branch 'origin/ac_main' into mdev 2023-01-02 21:05:03 +01:00
Maximilian Mewes
73440e2287 Update Usermod Battery (#2975)
* auto-off feature and usermod rename
* low-power-indicator, voltage fine tuning, clean-up

* corrected small mistakes
* Bugfixes, added usermod logo, update readme
* minor changes, implemented change requests, optimizationz
2022-12-28 22:40:13 +01:00
Maximilian Mewes
00d0ddb4b5 fixed pinowner comments (hex is not correct and the order is wrong) 2022-12-28 01:50:04 +01:00
Frank
191bbf93f3 post-merge changes
reconciling disagreements between MM and AC source code
2022-12-06 16:07:12 +01:00
Ewoud
3160a0b090 Merge remote-tracking branch 'origin/ac_main' into mdev 2022-12-06 14:38:49 +01:00
Frank
e7f07f5bfc pinmanager robustness improvement
make sure that array bounds are not violated in pinManager class.
2022-12-05 17:04:54 +01:00
Frank
bb8fb5f6aa pin info improvements
- add WLED_NUM_PINS constant, to get rid of magic number "50"
- only show I2S defaults when USERMOD_AUDIOREACTIVE is enabled
- added alternate names for SPI pins
- small correction for -C3
2022-12-04 14:43:31 +01:00
Frank
d2d8a86d81 pin info: show conflicts
* set.cpp: reject non-ADC pins as analog button pins (bugfix)
* pinmanager:
record conflicts
added getOwnerText(PinOwner tag) and getPinConflicts(int gpio)

GPIO    | Assigned to           | Info
--------|-----------------------|------------
i/o   0   Button            !! Conflict with AudioReactive (UM) !!        (default) I2S MCLK
i/o   1   debug output            Serial TX
i/o   2   ./.                     (default) LED pin
i/o   3   ./.                     Serial RX
i/o   5   ./.                     (default) SPI SS
i/o  13   Button            !! Conflict with IR Receiver !!

PIN ALLOC error: GPIO19 for analog button #2 is not an analog pin!
2022-12-04 02:22:50 +01:00
Frank
33f4e8cf73 pinmanager bugfix for -S2/-S3
pinmanager ran out out array bounds on -S2 and -S3, as these MCUs have more than 40 GPIO. As consequence, memory was overwriten, and pins > 39 were reported as "allocated" but not "owned".

Thisfixes the problem, by extending internal arrays so that up to 50 pins can be managed.
2022-12-02 20:08:11 +01:00
Frank
3b6f4bee4b Pinmanager bugfix
fixing some array-out-of-bounds problems that happens on MCUs with more than 40 GPIO (-S2, -S3).
PinManager wrongly reprted the pins as "allocated"  but "no owner"!
2022-12-02 17:57:50 +01:00
Frank
0dfc884c64 very medium updates (GPIO info, part1)
Improvements for debugging GPIO conflicts. HTML UI integration still pending.

* pinManager can be asked for pin owner (String) and pin special purpose (string).
* wled.cpp: show GPIO allocation when compiling with WLED_DEBUG
* pinmanager: show Pin Owner as name when possible.

The results looks like this

GPIO    | Assigned to           | Info
--------|-----------------------|------------
i/o   0   Button
i/o   1   debug                   Serial TX
i/o   2   DMX out
i/o   3   ./.                     Serial RX
i/o   5   ./.                     SPI SS
i/o  15   AudioReactive (UM)
i/o  16   LEDs (digital)
i/o  17   Relay
i/o  18   ./.                     SPI CLK
i/o  19   IR Receiver             SPI MISO
i/o  21   I2C                     I2C SDA
i/o  22   I2C                     I2C SCL
i/o  23   ./.                     SPI MOSI
i/o  32   AudioReactive (UM)
2022-12-02 00:11:28 +01:00
Ardi Loot
bd601ad2da PWM outputs usermod (#2912)
* first commit of PWM outputs

* fix pin deallocation issue

* refactoring

* removed debug prints

* fix compile error

* added readme

* added compile error for ESP8266

* added overloaded SetDuty method

* convert state to separate nested object

* Revert "added overloaded SetDuty method"

This reverts commit e8ea32f577c85cbdc5d5d130cbead66f37c0caca.

* move constant strings to flash

* reworked json info and config

* bugfixes

* more bugfixes

* updated readme

* use C strings instead of String

* added uint8 and uint16 overloads for SetDuty

* removed ambiguous overload
2022-11-30 09:15:07 +01:00
Constantin Wolf
f104fb0586 SD card support: MMC or configurable SPI (#2877)
Co-authored-by: constantin wolf <constantin.wolf@pwc.com>
2022-11-14 02:30:35 +01:00
albarlow
30a029c19f BH1750 upgrades (#2725)
* BH1750 upgrades

Moved the definitions into the main usermods_list.cpp instead of having a section to copy across.

Added Home Assistant Discovery topic for light sensor.  This is toggleable from the usermod menu.

* Configure pin, other enhancements, readme

Implemented pin manager
Made pins configurable at runtime
Improved info screen outputs
Added F() around strings
Updated readme

* Resolve conflict

* Merge branch 'main'

* Missing comma

Co-authored-by: Christian Schwinne <dev.aircoookie@gmail.com>
Co-authored-by: Christian Schwinne <cschwinne@gmail.com>
2022-10-21 03:32:44 +02:00
Blaz Kristan
1de009a80d I2C & SPI fixes. Global interface. 2022-08-14 13:05:59 +02:00
Blaz Kristan
998f2f9421 Global I2C & SPI pin allocation. 2022-08-07 16:43:29 +02:00
Blaz Kristan
cb44d45eeb Merge branch 'dev' into segment-api 2022-07-22 14:41:39 +02:00
albarlow
c96f83b076 Registered Usermod and Pins
Implemented PinManager and rerun setup of usermod after updating pins/

Registered in const.h and pin_manager.h   I tried to follow the existing formatting/numbering in these files.

Wrapped any strings I could in F()
2022-07-21 09:48:37 +01:00
Blaz Kristan
d3bb079be4 Muliple enhancements:
- Smarter on/off buttons in Info panel (usermods)
- On/Off bus in bus_manager
- 2D GEQ fix (2D CenterBars obsolete)
- hide unused palettes & modes
2022-06-20 22:17:01 +02:00
Blaz Kristan
562a206508 It compiles!
Cleaned (and possibly broken) AudioSource
Added:
- usermod notification about update
- strip.getMinShowDelay()
- pin manager updates
Changed:
- data exchange
2022-06-11 00:50:29 +02:00
Blaž Kristan
41c9bb63a0 Pin manager support for sharing multipin buses. 2021-12-14 09:38:38 +01:00
Blaz Kristan
108fc4a0d8 Pin manager enhancements (sharing I2C pins).
Effect helpers in UI.
2021-11-19 21:49:23 +01:00
Blaz Kristan
65ac8d4b2b Merge branch 'master' into dev 2021-11-17 21:42:27 +01:00
cschwinne
d31e4c7815 Added getPinOwner
Only disable builtin LED if bus to avoid breaking other things on the pin
2021-11-17 11:13:07 +01:00
Blaž Kristan
04c9646e05 Merge branch 'master' into dev 2021-11-04 10:04:21 +01:00
Andy Hofmann
b33e28835d New Usermod: QuinLED-An-Penta (#2296)
* UM QuinLED-An-Penta: First version

* UM QuinLED-An-Penta: Made OLED seconds a setting; small improvements

* UM QuinLED-An-Penta: Fixed unique ID

* Merge branch 'master' of https://github.com/Aircoookie/WLED

* UM QuinLED-An-Penta: Fixed config loading

* UM QuinLED-An-Penta: Replaced ledcRead() with calculating the percentage

* UM QuinLED-An-Penta: Fixed temp sensor readings

* UM QuinLED-An-Penta: Removing OLED bus clk setting

* UM QuinLED-An-Penta: ETH support, lots of OLED improvements
2021-10-30 11:38:09 +02:00
ezcGman
c3d48acb4c UM RGB-Rotary-Encoder: Properly used PinOwner 2021-10-17 01:24:23 +02:00
Blaz Kristan
f84e2c2ac7 Debug conditional compile in pin manager. 2021-09-04 16:45:08 +02:00
Blaž Kristan
916ad0a58e Merge branch 'master' into dev 2021-08-26 09:09:41 +02:00
Henry Gabryjelski
1d4487b6cd Ethernet configuration fix, improve PinManager (#2123)
* Improved pin manager, ethernet config

* Ethernet is configured prior even to LED pins
* Pin Manager allocation / deallocation functions
   now take an "ownership" tag parameter, helping
   avoid accidentally free'ing pins that were allocated
   by other code
* Pin Manager now has ability to allocate multiple
  pins at once; Simplifies error handling

* Fix operator precedence error

Bitwise AND has lower precedence than the
relational "greater than" operator.

* PinManager update for some user modules

* don't build everything...

* Final step to reduce RAM overhead

* update comment

* remove macros

* Remove leftover allocated

* Init ethernet after settings saved

Co-authored-by: Christian Schwinne <dev.aircoookie@gmail.com>
2021-08-23 14:14:48 +02:00
cschwinne
b934634159 First light from busmanager! (still not usable though) 2021-01-16 00:50:43 +01:00