diff --git a/CHANGELOG.md b/CHANGELOG.md index cfe25658e..e8e9ce778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Support for EZO PRS sensors by Christopher Tremblay (#9659) - Zigbee reduce battery drain (#9642) - Zigbee added ``ZbMap`` command to describe Zigbee topology (#9651) +- Command ``Gpios 255`` to show all possible GPIO configurations ### Changed - PlatformIO library structure redesigned for compilation speed by Jason2866 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fee848391..12794ed2d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -59,6 +59,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.0.0.3 ### Added +- Command ``Gpios 255`` to show all possible GPIO configurations - Command ``NoDelay`` for immediate backlog command execution by Erik Montnemery (#9544) - Command ``SwitchMode 15`` sending only MQTT message on switch change (#9593) - Command ``ShutterChange`` to increment change position (#9594) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 86636084e..dce94cc36 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1189,13 +1189,20 @@ void CmndGpio(void) } void ShowGpios(const uint16_t *NiceList, uint32_t size, uint32_t offset, uint32_t &lines) { + uint32_t ridx; + uint32_t midx; myio cmodule; ModuleGpios(&cmodule); bool jsflg = false; for (uint32_t i = offset; i < size; i++) { // Skip ADC_NONE - uint32_t ridx = pgm_read_word(NiceList + i) & 0xFFE0; - uint32_t midx = BGPIO(ridx); - if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } + if (NiceList == nullptr) { + ridx = AGPIO(i); + midx = i; + } else { + ridx = pgm_read_word(NiceList + i) & 0xFFE0; + midx = BGPIO(ridx); + if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } + } if (!jsflg) { Response_P(PSTR("{\"" D_CMND_GPIOS "%d\":{"), lines); } else { @@ -1214,19 +1221,18 @@ void ShowGpios(const uint16_t *NiceList, uint32_t size, uint32_t offset, uint32_ void CmndGpios(void) { -/* - if (XdrvMailbox.payload == 17) { - DumpConvertTable(); - return; - } -*/ uint32_t lines = 1; - ShowGpios(kGpioNiceList, ARRAY_SIZE(kGpioNiceList), 0, lines); + if (XdrvMailbox.payload == 255) { +// DumpConvertTable(); + ShowGpios(nullptr, GPIO_SENSOR_END, 0, lines); + } else { + ShowGpios(kGpioNiceList, ARRAY_SIZE(kGpioNiceList), 0, lines); #ifdef ESP8266 #ifndef USE_ADC_VCC - ShowGpios(kAdcNiceList, ARRAY_SIZE(kAdcNiceList), 1, lines); + ShowGpios(kAdcNiceList, ARRAY_SIZE(kAdcNiceList), 1, lines); #endif // USE_ADC_VCC #endif // ESP8266 + } ResponseClear(); }