Commit Graph

45 Commits

Author SHA1 Message Date
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