diff --git a/.gitignore b/.gitignore index b045b0d1c..4445cdff0 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,4 @@ software_version_id.h /lib-nextion /lib-node /lib-showfile/Doxygen +/opi_emac_eve_example diff --git a/README.md b/README.md index 069f49c99..0dd1e8907 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![GitHub](https://img.shields.io/github/license/vanvught/rpidmx512) -[![C++ Standard](https://img.shields.io/badge/C%2B%2B-11-blue.svg)](https://img.shields.io/badge/C%2B%2B-11%-blue.svg) +[![C++ Standard](https://img.shields.io/badge/C%2B%2B-20-blue.svg)](https://img.shields.io/badge/C%2B%2B-11%-blue.svg) ![GitHub issues](https://img.shields.io/github/issues-raw/vanvught/rpidmx512) ![GitHub contributors](https://img.shields.io/github/contributors/vanvught/rpidmx512) ![GitHub Sponsors](https://img.shields.io/github/sponsors/vanvught) diff --git a/firmware-template-h3/Rules.mk b/firmware-template-h3/Rules.mk index f7d88b30e..16f52f1b4 100644 --- a/firmware-template-h3/Rules.mk +++ b/firmware-template-h3/Rules.mk @@ -53,6 +53,7 @@ ifneq ($(findstring _TIME_STAMP_YEAR_,$(DEFINES)), _TIME_STAMP_YEAR_) endif DEFINES+=-DBARE_METAL -DH3 +DEFINES+=-DPHY_GENERIC=255 DEFINES+=-DPHY_TYPE=PHY_GENERIC DEFINES+=-DENABLE_TFTP_SERVER DEFINES+=-DCONFIG_MDNS_DOMAIN_REVERSE diff --git a/firmware-template-h3/lib/Rules.mk b/firmware-template-h3/lib/Rules.mk index 1ac7834bd..83b474de0 100644 --- a/firmware-template-h3/lib/Rules.mk +++ b/firmware-template-h3/lib/Rules.mk @@ -35,6 +35,7 @@ ifneq ($(findstring _TIME_STAMP_YEAR_,$(DEFINES)), _TIME_STAMP_YEAR_) DEFINES+=-D_TIME_STAMP_YEAR_=$(shell date +"%Y") -D_TIME_STAMP_MONTH_=$(shell date +"%-m") -D_TIME_STAMP_DAY_=$(shell date +"%-d") endif +DEFINES+=-DPHY_GENERIC=255 DEFINES+=-DPHY_TYPE=PHY_GENERIC DEFINES+=-DENABLE_TFTP_SERVER DEFINES+=-DCONFIG_MDNS_DOMAIN_REVERSE diff --git a/lib-arm/.settings/language.settings.xml b/lib-arm/.settings/language.settings.xml index a6b666344..330240762 100644 --- a/lib-arm/.settings/language.settings.xml +++ b/lib-arm/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-artnet/.settings/language.settings.xml b/lib-artnet/.settings/language.settings.xml index c2e9d316b..db163d342 100644 --- a/lib-artnet/.settings/language.settings.xml +++ b/lib-artnet/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-artnet/include/artnetnode.h b/lib-artnet/include/artnetnode.h index 19704fd7a..566fc61cd 100755 --- a/lib-artnet/include/artnetnode.h +++ b/lib-artnet/include/artnetnode.h @@ -476,11 +476,7 @@ class ArtNetNode { } void SetTimeCodeIp(const uint32_t nDestinationIp) { - if (Network::Get()->IsValidIp(nDestinationIp)) { - m_Node.IPAddressTimeCode = nDestinationIp; - } else { - m_Node.IPAddressTimeCode = Network::Get()->GetBroadcastIp(); - } + m_Node.IPAddressTimeCode = nDestinationIp; } #endif @@ -490,13 +486,8 @@ class ArtNetNode { void SetDestinationIp(const uint32_t nPortIndex, const uint32_t nDestinationIp) { if (nPortIndex < artnetnode::MAX_PORTS) { - if (Network::Get()->IsValidIp(nDestinationIp)) { - m_InputPort[nPortIndex].nDestinationIp = nDestinationIp; - } else { - m_InputPort[nPortIndex].nDestinationIp = Network::Get()->GetBroadcastIp(); - } - - DEBUG_PRINTF("m_nDestinationIp=" IPSTR, IP2STR(m_InputPort[nPortIndex].nDestinationIp)); + m_InputPort[nPortIndex].nDestinationIp = nDestinationIp; + DEBUG_PRINTF("nDestinationIp=" IPSTR, IP2STR(m_InputPort[nPortIndex].nDestinationIp)); } } diff --git a/lib-artnet/src/node/artnetnodehandlepoll.cpp b/lib-artnet/src/node/artnetnodehandlepoll.cpp index 2e630d53e..28360a1cc 100644 --- a/lib-artnet/src/node/artnetnodehandlepoll.cpp +++ b/lib-artnet/src/node/artnetnodehandlepoll.cpp @@ -130,9 +130,11 @@ void ArtNetNode::SendPollRelply(const uint32_t nBindIndex, const uint32_t nDesti ProcessPollRelply(nPortIndex, nPortsInput, nPortsOutput); - const auto nRefreshRate = m_pLightSet->GetRefreshRate(); - m_ArtPollReply.RefreshRateLo = static_cast(nRefreshRate); - m_ArtPollReply.RefreshRateHi = static_cast(nRefreshRate >> 8); + if (__builtin_expect((m_pLightSet != nullptr), 1)) { + const auto nRefreshRate = m_pLightSet->GetRefreshRate(); + m_ArtPollReply.RefreshRateLo = static_cast(nRefreshRate); + m_ArtPollReply.RefreshRateHi = static_cast(nRefreshRate >> 8); + } m_ArtPollReply.NumPortsLo = static_cast(std::max(nPortsInput, nPortsOutput)); diff --git a/lib-bcm2835/.settings/language.settings.xml b/lib-bcm2835/.settings/language.settings.xml index d148daee5..b2b5c4ba9 100644 --- a/lib-bcm2835/.settings/language.settings.xml +++ b/lib-bcm2835/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-configstore/.settings/language.settings.xml b/lib-configstore/.settings/language.settings.xml index 02c2228fe..56b8506bb 100755 --- a/lib-configstore/.settings/language.settings.xml +++ b/lib-configstore/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-ddp/.settings/language.settings.xml b/lib-ddp/.settings/language.settings.xml index ff6ec7266..99075d0fc 100755 --- a/lib-ddp/.settings/language.settings.xml +++ b/lib-ddp/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-device/.settings/language.settings.xml b/lib-device/.settings/language.settings.xml index b5c9c58da..9436a33d5 100644 --- a/lib-device/.settings/language.settings.xml +++ b/lib-device/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-display/.settings/language.settings.xml b/lib-display/.settings/language.settings.xml index 0f26841d6..e1347450b 100755 --- a/lib-display/.settings/language.settings.xml +++ b/lib-display/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-displayudf/.settings/language.settings.xml b/lib-displayudf/.settings/language.settings.xml index 37f53a801..40099f716 100644 --- a/lib-displayudf/.settings/language.settings.xml +++ b/lib-displayudf/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-dmx/.settings/language.settings.xml b/lib-dmx/.settings/language.settings.xml index f8409aefc..017a2c499 100644 --- a/lib-dmx/.settings/language.settings.xml +++ b/lib-dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-dmx/include/gd32/dmx.h b/lib-dmx/include/gd32/dmx.h index 394b46e10..0d3c60a29 100644 --- a/lib-dmx/include/gd32/dmx.h +++ b/lib-dmx/include/gd32/dmx.h @@ -107,8 +107,8 @@ class Dmx { } private: - void StartData(const uint32_t nUart, const uint32_t nPortIndex); - void StopData(const uint32_t nUart, const uint32_t nPortIndex); + void StartData(const uint32_t nPortIndex); + void StopData(const uint32_t nPortIndex); void StartDmxOutput(const uint32_t nPortIndex); private: diff --git a/lib-dmxserial/.settings/language.settings.xml b/lib-dmxserial/.settings/language.settings.xml index 6478a718b..11b40c905 100644 --- a/lib-dmxserial/.settings/language.settings.xml +++ b/lib-dmxserial/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-e131/.settings/language.settings.xml b/lib-e131/.settings/language.settings.xml index 8cd0a6a0a..04b47eed8 100644 --- a/lib-e131/.settings/language.settings.xml +++ b/lib-e131/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-flash/.settings/language.settings.xml b/lib-flash/.settings/language.settings.xml index 0a8e40bb9..f789c496c 100755 --- a/lib-flash/.settings/language.settings.xml +++ b/lib-flash/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-flash/src/spi/spi_flash_internal.h b/lib-flash/src/spi/spi_flash_internal.h index 06564fb26..019fff1a1 100644 --- a/lib-flash/src/spi/spi_flash_internal.h +++ b/lib-flash/src/spi/spi_flash_internal.h @@ -77,13 +77,13 @@ struct spi_flash { extern int spi_init(); extern int spi_xfer(uint32_t bitlen, const uint8_t *dout, uint8_t *din, uint32_t flags); -#define CONFIG_SPI_FLASH_MACRONIX -int spi_flash_probe_macronix(struct spi_flash *flash, uint8_t *idcode); +//#define CONFIG_SPI_FLASH_MACRONIX +//int spi_flash_probe_macronix(struct spi_flash *flash, uint8_t *idcode); #define CONFIG_SPI_FLASH_WINBOND extern int spi_flash_probe_winbond(struct spi_flash *spi, uint8_t *idcode); -#define CONFIG_SPI_FLASH_GIGADEVICE -extern int spi_flash_probe_gigadevice(struct spi_flash *spi, uint8_t *idcode); +//#define CONFIG_SPI_FLASH_GIGADEVICE +//extern int spi_flash_probe_gigadevice(struct spi_flash *spi, uint8_t *idcode); #endif /* SPI_FLASH_INTERNAL_H_ */ diff --git a/lib-flashcode/.settings/language.settings.xml b/lib-flashcode/.settings/language.settings.xml index a0b9e684e..9eda85020 100755 --- a/lib-flashcode/.settings/language.settings.xml +++ b/lib-flashcode/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-flashcodeinstall/.settings/language.settings.xml b/lib-flashcodeinstall/.settings/language.settings.xml index 0f18eb382..9e1a8f479 100755 --- a/lib-flashcodeinstall/.settings/language.settings.xml +++ b/lib-flashcodeinstall/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-gps/.settings/language.settings.xml b/lib-gps/.settings/language.settings.xml index 87a83fcb6..f3e68b7e6 100644 --- a/lib-gps/.settings/language.settings.xml +++ b/lib-gps/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-h3/.settings/language.settings.xml b/lib-h3/.settings/language.settings.xml index d10ebb05d..561f96630 100644 --- a/lib-h3/.settings/language.settings.xml +++ b/lib-h3/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-hal/.settings/language.settings.xml b/lib-hal/.settings/language.settings.xml index 8fea7b298..4c842bb94 100644 --- a/lib-hal/.settings/language.settings.xml +++ b/lib-hal/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-input/.settings/language.settings.xml b/lib-input/.settings/language.settings.xml index dd244ae59..956b700d0 100644 --- a/lib-input/.settings/language.settings.xml +++ b/lib-input/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-jamstapl/.settings/language.settings.xml b/lib-jamstapl/.settings/language.settings.xml index 875b02ddc..588f95fb1 100644 --- a/lib-jamstapl/.settings/language.settings.xml +++ b/lib-jamstapl/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-l6470/.settings/language.settings.xml b/lib-l6470/.settings/language.settings.xml index 88249b600..077a3f733 100644 --- a/lib-l6470/.settings/language.settings.xml +++ b/lib-l6470/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-l6470dmx/.settings/language.settings.xml b/lib-l6470dmx/.settings/language.settings.xml index ac14caa43..1bea8cbc6 100644 --- a/lib-l6470dmx/.settings/language.settings.xml +++ b/lib-l6470dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-lightset/.settings/language.settings.xml b/lib-lightset/.settings/language.settings.xml index 22d14bfb8..0daee9f62 100644 --- a/lib-lightset/.settings/language.settings.xml +++ b/lib-lightset/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-ltc/.settings/language.settings.xml b/lib-ltc/.settings/language.settings.xml index bfb7f4ba0..6f1cc345a 100644 --- a/lib-ltc/.settings/language.settings.xml +++ b/lib-ltc/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-midi/.settings/language.settings.xml b/lib-midi/.settings/language.settings.xml index 7a67189c1..fefa6fa4e 100644 --- a/lib-midi/.settings/language.settings.xml +++ b/lib-midi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-network/.settings/language.settings.xml b/lib-network/.settings/language.settings.xml index 8491c1347..c188e8e1e 100644 --- a/lib-network/.settings/language.settings.xml +++ b/lib-network/.settings/language.settings.xml @@ -2,7 +2,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-network/include/emac/phy/rtl8201f.h b/lib-network/include/emac/phy/rtl8201f.h new file mode 100755 index 000000000..eaef1a2e9 --- /dev/null +++ b/lib-network/include/emac/phy/rtl8201f.h @@ -0,0 +1,37 @@ +/** + * @file rtl8201f.h + * + */ +/* Copyright (C) 2024 by Arjan van Vught mailto:info@gd32-dmx.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef EMAC_PHY_RTL8201F_H_ +#define EMAC_PHY_RTL8201F_H_ + +#include + +namespace net::phy { +void rtl8201f_set_rxtiming(const uint32_t nRxTiming); +void rtl8201f_set_txtiming(const uint32_t nTxTiming); +void rtl8201f_get_timings(uint32_t& nRxTiming, uint32_t& nTxTiming); +} // namespace net::phy + +#endif /* EMAC_PHY_RTL8201F_H_ */ diff --git a/lib-network/src/emac/phy/phygen/net_phy.cpp b/lib-network/src/emac/phy/phygen/net_phy.cpp index 07b68f298..aeb63abbb 100755 --- a/lib-network/src/emac/phy/phygen/net_phy.cpp +++ b/lib-network/src/emac/phy/phygen/net_phy.cpp @@ -53,16 +53,14 @@ void phy_customized_timing() { } void phy_customized_status(PhyStatus& phyStatus) { - phyStatus.link = link_status_read(); - uint16_t nValue; - phy_read(PHY_ADDRESS, mmi::REG_BMCR, nValue); + phy_read(PHY_ADDRESS, mmi::REG_BMSR, nValue); debug_print_bits(nValue); - phyStatus.duplex = ((nValue & BIT(8)) == BIT(8)) ? Duplex::DUPLEX_FULL : Duplex::DUPLEX_HALF; - phyStatus.speed = ((nValue & BIT(13)) == BIT(13)) ? Speed::SPEED100 : Speed::SPEED10; - phyStatus.bAutonegotiation = ((nValue & mmi::BMCR_AUTONEGOTIATION) == mmi::BMCR_AUTONEGOTIATION); - + phyStatus.duplex = Duplex::DUPLEX_FULL; + phyStatus.speed = Speed::SPEED100; + phyStatus.link = (nValue & mmi::BMSR_LINKED_STATUS) ? Link::STATE_UP : Link::STATE_DOWN; + phyStatus.bAutonegotiation = (nValue & mmi::BMSR_AUTONEGO_COMPLETE); } } // namespace net diff --git a/lib-network/src/emac/phy/rtl8201f/net_phy.cpp b/lib-network/src/emac/phy/rtl8201f/net_phy.cpp index 114a0d154..38050050f 100755 --- a/lib-network/src/emac/phy/rtl8201f/net_phy.cpp +++ b/lib-network/src/emac/phy/rtl8201f/net_phy.cpp @@ -56,9 +56,16 @@ void phy_write_paged(uint16_t phy_page, uint16_t phy_reg, uint16_t phy_value, ui DEBUG_PRINTF("tmp_value=0x%.4x, phy_value=0x%.4x", tmp_value, phy_value); phy_write(PHY_ADDRESS, phy_reg, tmp_value); + phy_write(PHY_ADDRESS, PHY_REG_PAGE_SELECT, 0); +} - phy_page = 0; +void phy_read_paged(const uint16_t phy_page, const uint16_t phy_reg, uint16_t& phy_value, const uint16_t mask = 0x0) { phy_write(PHY_ADDRESS, PHY_REG_PAGE_SELECT, phy_page); + + phy_read(PHY_ADDRESS, phy_reg, phy_value); + phy_value &= mask; + + phy_write(PHY_ADDRESS, PHY_REG_PAGE_SELECT, 0); } void phy_customized_led() { @@ -75,22 +82,26 @@ void phy_customized_led() { DEBUG_EXIT } +#define RMSR_RX_TIMING_SHIFT 4 +#define RMSR_RX_TIMING_MASK 0xF0 + +#define RMSR_TX_TIMING_SHIFT 8 +#define RMSR_TX_TIMING_MASK 0xF00 + void phy_customized_timing() { DEBUG_ENTRY -#if defined (GD32F407) || defined (GD32F450) -# define RMSR_RX_TIMING_SHIFT 4 -# define RMSR_RX_TIMING_MASK 0xF0 +#if defined (GD32F4XX) # define RMSR_RX_TIMING_VAL 0x4 -# define RMSR_TX_TIMING_SHIFT 8 -# define RMSR_TX_TIMING_MASK 0xF00 # if defined (GD32F407) -# define RMSR_TX_TIMING_VAL 0x2 // The GD32F407 is now running at 200MHz +# define RMSR_TX_TIMING_VAL 0x2 // The GD32F407 is now running at 200MHz +# elif defined (GD32F470) +# define RMSR_TX_TIMING_VAL 0x1 # else -# define RMSR_TX_TIMING_VAL 0xF +# define RMSR_TX_TIMING_VAL 0xF # endif constexpr uint16_t phy_value = (RMSR_RX_TIMING_VAL << RMSR_RX_TIMING_SHIFT) - | (RMSR_TX_TIMING_VAL << RMSR_TX_TIMING_SHIFT); + | (RMSR_TX_TIMING_VAL << RMSR_TX_TIMING_SHIFT); phy_write_paged(0x7, PHY_REG_RMSR, phy_value, RMSR_RX_TIMING_MASK | RMSR_TX_TIMING_MASK); #endif DEBUG_EXIT @@ -107,4 +118,24 @@ void phy_customized_status(PhyStatus& phyStatus) { phyStatus.bAutonegotiation = ((nValue & mmi::BMCR_AUTONEGOTIATION) == mmi::BMCR_AUTONEGOTIATION); } +namespace phy { +void rtl8201f_get_timings(uint32_t& nRxTiming, uint32_t& nTxTiming) { + uint16_t nValue; + phy_read_paged(0x7, PHY_REG_RMSR, nValue, RMSR_RX_TIMING_MASK | RMSR_TX_TIMING_MASK); + + nRxTiming = (nValue >> RMSR_RX_TIMING_SHIFT) & 0xF; + nTxTiming = (nValue >> RMSR_TX_TIMING_SHIFT) & 0xF; +} + +void rtl8201f_set_rxtiming(const uint32_t nRxTiming) { + const auto nValue = static_cast((nRxTiming & 0xF) << RMSR_RX_TIMING_SHIFT); + phy_write_paged(0x7, PHY_REG_RMSR, nValue, RMSR_RX_TIMING_MASK); +} + +void rtl8201f_set_txtiming(const uint32_t nTxTiming) { + const auto nValue = static_cast((nTxTiming & 0xF) << RMSR_TX_TIMING_SHIFT); + phy_write_paged(0x7, PHY_REG_RMSR, nValue, RMSR_TX_TIMING_MASK); +} + +} // namespace phy } // namespace net diff --git a/lib-network/src/params/networkparams.cpp b/lib-network/src/params/networkparams.cpp index 7966b2f05..76c9ebe14 100644 --- a/lib-network/src/params/networkparams.cpp +++ b/lib-network/src/params/networkparams.cpp @@ -143,8 +143,13 @@ void NetworkParams::callbackFunction(const char *pLine) { } if (Sscan::IpAddress(pLine, NetworkParamsConst::DEFAULT_GATEWAY, nValue32) == Sscan::OK) { - m_Params.nGatewayIp = nValue32; - m_Params.nSetList |= networkparams::Mask::DEFAULT_GATEWAY; + if (nValue32 != 0) { + m_Params.nSetList |= networkparams::Mask::DEFAULT_GATEWAY; + m_Params.nGatewayIp = nValue32; + } else { + m_Params.nSetList &= ~networkparams::Mask::DEFAULT_GATEWAY; + } + return; } @@ -251,14 +256,12 @@ void NetworkParams::Builder(const struct networkparams::Params *ptNetworkParams, void NetworkParams::Dump() { printf("%s::%s \'%s\':\n", __FILE__, __FUNCTION__, NetworkParamsConst::FILE_NAME); - debug_print_bits(m_Params.nSetList); - printf(" %s=%d [%s]\n", NetworkParamsConst::USE_DHCP, static_cast(m_Params.bIsDhcpUsed), m_Params.bIsDhcpUsed != 0 ? "Yes" : "No"); printf(" %s=" IPSTR "\n", NetworkParamsConst::IP_ADDRESS, IP2STR(m_Params.nLocalIp)); printf(" %s=" IPSTR "\n", NetworkParamsConst::NET_MASK, IP2STR(m_Params.nNetmask)); + printf(" %s=" IPSTR "\n", NetworkParamsConst::DEFAULT_GATEWAY, IP2STR(m_Params.nGatewayIp)); #if defined (ESP8266) - printf(" %s=" IPSTR "\n", NetworkParamsConst::DEFAULT_GATEWAY, IP2STR(m_Params.nGatewayIp)); printf(" %s=" IPSTR "\n", NetworkParamsConst::NAME_SERVER, IP2STR(m_Params.nNameServerIp)); #endif diff --git a/lib-osc/.settings/language.settings.xml b/lib-osc/.settings/language.settings.xml index 08eb97609..c63ab5c24 100644 --- a/lib-osc/.settings/language.settings.xml +++ b/lib-osc/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-pca9685/.settings/language.settings.xml b/lib-pca9685/.settings/language.settings.xml index f5d9857c2..55f2e1034 100644 --- a/lib-pca9685/.settings/language.settings.xml +++ b/lib-pca9685/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-pca9685dmx/.settings/language.settings.xml b/lib-pca9685dmx/.settings/language.settings.xml index d74f367de..83e455121 100644 --- a/lib-pca9685dmx/.settings/language.settings.xml +++ b/lib-pca9685dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-pp/.settings/language.settings.xml b/lib-pp/.settings/language.settings.xml index 898a486fe..4f12cc07b 100755 --- a/lib-pp/.settings/language.settings.xml +++ b/lib-pp/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-properties/.settings/language.settings.xml b/lib-properties/.settings/language.settings.xml index 818a97a4a..697b7efe6 100644 --- a/lib-properties/.settings/language.settings.xml +++ b/lib-properties/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-rdm/.settings/language.settings.xml b/lib-rdm/.settings/language.settings.xml index 715fe7f92..32e5490ba 100644 --- a/lib-rdm/.settings/language.settings.xml +++ b/lib-rdm/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-rdmsensor/.settings/language.settings.xml b/lib-rdmsensor/.settings/language.settings.xml index 517ebb715..25fe37fb3 100644 --- a/lib-rdmsensor/.settings/language.settings.xml +++ b/lib-rdmsensor/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-rdmsubdevice/.settings/language.settings.xml b/lib-rdmsubdevice/.settings/language.settings.xml index e3309cfdc..d606d2d40 100644 --- a/lib-rdmsubdevice/.settings/language.settings.xml +++ b/lib-rdmsubdevice/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-remoteconfig/.cproject b/lib-remoteconfig/.cproject index d0752ea05..1c0e5e926 100644 --- a/lib-remoteconfig/.cproject +++ b/lib-remoteconfig/.cproject @@ -79,6 +79,10 @@ + + + + @@ -174,6 +178,10 @@ + + + + @@ -210,8 +218,8 @@ - - + + @@ -223,196 +231,179 @@ - - - - @@ -454,6 +445,9 @@ + + + @@ -463,5 +457,8 @@ + + + \ No newline at end of file diff --git a/lib-remoteconfig/.settings/language.settings.xml b/lib-remoteconfig/.settings/language.settings.xml index 90ea1bac7..4cb50072f 100644 --- a/lib-remoteconfig/.settings/language.settings.xml +++ b/lib-remoteconfig/.settings/language.settings.xml @@ -5,16 +5,16 @@ - + - + - + diff --git a/lib-remoteconfig/Makefile.H3 b/lib-remoteconfig/Makefile.H3 index c0bb56e32..5dd3e9081 100644 --- a/lib-remoteconfig/Makefile.H3 +++ b/lib-remoteconfig/Makefile.H3 @@ -16,3 +16,5 @@ EXTRA_SRCDIR+=src/tftp src/h3/tftp include Rules.mk include ../firmware-template-h3/lib/Rules.mk + +$(info $$PHY_TYPE [${PHY_TYPE}]) diff --git a/lib-remoteconfig/Rules.mk b/lib-remoteconfig/Rules.mk old mode 100644 new mode 100755 index ecb5ed2ea..edf9ee704 --- a/lib-remoteconfig/Rules.mk +++ b/lib-remoteconfig/Rules.mk @@ -8,6 +8,10 @@ ifneq ($(MAKE_FLAGS),) EXTRA_SRCDIR+=src/httpd endif + ifneq (,$(findstring ENABLE_SHELL,$(MAKE_FLAGS))) + EXTRA_SRCDIR+=src/shell src/uart + endif + ifeq ($(findstring NODE_ARTNET,$(MAKE_FLAGS)), NODE_ARTNET) EXTRA_INCLUDES+=../lib-artnet/include ifeq ($(findstring ARTNET_VERSION=4,$(MAKE_FLAGS)), ARTNET_VERSION=4) diff --git a/lib-remoteconfig/include/remoteconfigparams.h b/lib-remoteconfig/include/remoteconfigparams.h index e83742763..58ce482b7 100644 --- a/lib-remoteconfig/include/remoteconfigparams.h +++ b/lib-remoteconfig/include/remoteconfigparams.h @@ -2,7 +2,7 @@ * @file remoteconfigparams.h * */ -/* Copyright (C) 2019-2023 by Arjan van Vught mailto:info@orangepi-dmx.nl +/* Copyright (C) 2019-2024 by Arjan van Vught mailto:info@gd32-dmx.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/lib-remoteconfig/include/shell/shell.h b/lib-remoteconfig/include/shell/shell.h old mode 100644 new mode 100755 index 57a6a112d..c8a5247c8 --- a/lib-remoteconfig/include/shell/shell.h +++ b/lib-remoteconfig/include/shell/shell.h @@ -3,7 +3,7 @@ * */ /* Copyright (C) 2020 by hippy mailto:dmxout@gmail.com - * Copyright (C) 2020-2023 by Arjan van Vught mailto:info@orangepi-dmx.nl + * Copyright (C) 2020-2024 by Arjan van Vught mailto:info@gd32-dmx.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -44,18 +44,35 @@ enum class CmdIndex: uint32_t { GET, DHCP, DATE, + PHY, +#if !defined (DISABLE_RTC) HWCLOCK, -#ifndef NDEBUG +#endif +#if defined (DEBUG_I2C) I2CDETECT, +#endif DUMP, MEM, +#if defined (ENABLE_NTP_CLIENT) NTP, +#endif +#if defined (CONFIG_SHELL_GPS) GPS, +#endif +#if (PHY_TYPE == RTL8201F) + PHY_TYPE_RTL8201F, #endif HELP }; static constexpr auto BUFLEN = 196; static constexpr auto MAXARG = 4; + +namespace msg { +namespace error { +static constexpr char INVALID[] = "Invalid command.\n"; +static constexpr char INTERNAL[] = "Internal error.\n"; +} // namespace error +} // namespace msg } // namespace shell class Shell { @@ -75,34 +92,33 @@ class Shell { int Printf(const char* fmt, ...); // shell.cpp const char *ReadLine(uint32_t& nLength); - uint16_t ValidateCmd(uint32_t nLength, shell::CmdIndex &nCmdIndex); - void ValidateArg(uint16_t nOffset, uint32_t nLength); + uint32_t ValidateCmd(const uint32_t nLength, shell::CmdIndex &nCmdIndex); + void ValidateArg(uint32_t nOffset, const uint32_t nLength); // shellcmd.cpp - uint32_t hexadecimalToDecimal(const char *pHexValue, uint32_t nLength); void CmdReboot(); void CmdInfo(); void CmdSet(); void CmdGet(); void CmdDhcp(); void CmdDate(); + void CmdPhy(); void CmdHwClock(); -#ifndef NDEBUG void CmdI2cDetect(); void CmdDump(); void CmdMem(); void CmdNtp(); void CmdGps(); -#endif + void CmdPhyTypeRTL8201F(); void CmdHelp(); private: - bool m_bIsEndOfLine { false }; - uint16_t m_nLength { 0 }; char m_Buffer[shell::BUFLEN]; uint32_t m_Argc { 0 }; + uint32_t m_nLength { 0 }; char *m_Argv[shell::MAXARG] { nullptr }; uint16_t m_nArgvLength[shell::MAXARG]; bool m_bShownPrompt { false }; + bool m_bIsEndOfLine { false }; // Firmware specific BEGIN #if defined (LTC_READER) diff --git a/lib-remoteconfig/src/gd32/shellcmd.cpp b/lib-remoteconfig/src/gd32/shellcmd.cpp new file mode 100644 index 000000000..9fac3ea3a --- /dev/null +++ b/lib-remoteconfig/src/gd32/shellcmd.cpp @@ -0,0 +1,31 @@ +/** + * @file shellcmd.cpp + * + */ +/* Copyright (C) 2020 by hippy mailto:dmxout@gmail.com + * Copyright (C) 2020-2024 by Arjan van Vught mailto:info@gd32-dmx.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "shell/shell.h" + +void Shell::CmdDump() { + Puts(shell::msg::error::INVALID); +} diff --git a/lib-remoteconfig/src/h3/shellcmd.cpp b/lib-remoteconfig/src/h3/shellcmd.cpp new file mode 100755 index 000000000..b3eae5dff --- /dev/null +++ b/lib-remoteconfig/src/h3/shellcmd.cpp @@ -0,0 +1,85 @@ +/** + * @file shellcmd.cpp + * + */ +/* Copyright (C) 2020 by hippy mailto:dmxout@gmail.com + * Copyright (C) 2020-2024 by Arjan van Vught mailto:info@gd32-dmx.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include + +#include "shell/shell.h" + +#include "debug.h" + +extern "C" { +void h3_board_dump(void); +void h3_dump_memory_mapping(void); +void h3_ccu_pll_dump(void); +void arm_dump_memmap(void); +void arm_dump_page_table(void); +} + +namespace shell { +namespace dump { +namespace arg { +static constexpr char BOARD[] = "board"; +static constexpr char MMAP[] = "mmap"; +static constexpr char PLL[] = "pll"; +static constexpr char LINKER[] = "linker"; +} // namespace arg +namespace length { +static constexpr auto BOARD = sizeof(arg::BOARD) - 1; +static constexpr auto MMAP = sizeof(arg::MMAP) - 1; +static constexpr auto PLL = sizeof(arg::PLL) - 1; +static constexpr auto LINKER = sizeof(arg::LINKER) - 1; +} // namespace length +} // namespace dump +} // namespace shell + +using namespace shell; + +void Shell::CmdDump() { + const auto nArgv0Length = m_nArgvLength[0]; + + if ((nArgv0Length == dump::length::BOARD) && (memcmp(m_Argv[0], dump::arg::BOARD, dump::length::BOARD) == 0)) { + h3_board_dump(); + return; + } + + if ((nArgv0Length == dump::length::MMAP) && (memcmp(m_Argv[0], dump::arg::MMAP, dump::length::MMAP) == 0)) { + h3_dump_memory_mapping(); + return; + } + + if ((nArgv0Length == dump::length::PLL) && (memcmp(m_Argv[0], dump::arg::PLL, dump::length::PLL) == 0)) { + h3_ccu_pll_dump(); + return; + } + + if ((nArgv0Length == dump::length::LINKER) && (memcmp(m_Argv[0], dump::arg::LINKER, dump::length::LINKER) == 0)) { + arm_dump_memmap(); + return; + } + + Puts(msg::error::INVALID); +} diff --git a/lib-remoteconfig/src/remoteconfigparams.cpp b/lib-remoteconfig/src/remoteconfigparams.cpp index 8ce8b9ab4..b78b21385 100644 --- a/lib-remoteconfig/src/remoteconfigparams.cpp +++ b/lib-remoteconfig/src/remoteconfigparams.cpp @@ -2,7 +2,7 @@ * @file remoteconfigparams.cpp * */ -/* Copyright (C) 2019-2023 by Arjan van Vught mailto:info@orangepi-dmx.nl +/* Copyright (C) 2019-2024 by Arjan van Vught mailto:info@gd32-dmx.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -37,13 +37,26 @@ #include "remoteconfig.h" #include "remoteconfigconst.h" - #include "readconfigfile.h" #include "sscan.h" #include "propertiesbuilder.h" #include "debug.h" +struct ParamMask { + const char *pParam; + uint32_t nMask; +}; + +// Array of structs: parameter and corresponding mask +constexpr ParamMask paramMasks[] = { + { RemoteConfigConst::PARAMS_DISABLE, remoteconfigparams::Mask::DISABLE }, + { RemoteConfigConst::PARAMS_DISABLE_WRITE, remoteconfigparams::Mask::DISABLE_WRITE }, + { RemoteConfigConst::PARAMS_ENABLE_REBOOT, remoteconfigparams::Mask::ENABLE_REBOOT }, + { RemoteConfigConst::PARAMS_ENABLE_UPTIME, remoteconfigparams::Mask::ENABLE_UPTIME }, + { RemoteConfigConst::PARAMS_ENABLE_FACTORY, remoteconfigparams::Mask::ENABLE_FACTORY }, +}; + RemoteConfigParams::RemoteConfigParams() { DEBUG_ENTRY @@ -72,7 +85,7 @@ void RemoteConfigParams::Load() { DEBUG_EXIT } -void RemoteConfigParams::Load(const char* pBuffer, uint32_t nLength) { +void RemoteConfigParams::Load(const char *pBuffer, uint32_t nLength) { DEBUG_ENTRY assert(pBuffer != nullptr); @@ -103,34 +116,25 @@ void RemoteConfigParams::SetBool(const uint8_t nValue, const uint32_t nMask) { void RemoteConfigParams::callbackFunction(const char *pLine) { assert(pLine != nullptr); - uint8_t nValue8; - - if (Sscan::Uint8(pLine, RemoteConfigConst::PARAMS_DISABLE, nValue8) == Sscan::OK) { - SetBool(nValue8, remoteconfigparams::Mask::DISABLE); - return; - } - - if (Sscan::Uint8(pLine, RemoteConfigConst::PARAMS_DISABLE_WRITE, nValue8) == Sscan::OK) { - SetBool(nValue8, remoteconfigparams::Mask::DISABLE_WRITE); - return; - } - - if (Sscan::Uint8(pLine, RemoteConfigConst::PARAMS_ENABLE_REBOOT, nValue8) == Sscan::OK) { - SetBool(nValue8, remoteconfigparams::Mask::ENABLE_REBOOT); - return; - } - - if (Sscan::Uint8(pLine, RemoteConfigConst::PARAMS_ENABLE_UPTIME, nValue8) == Sscan::OK) { - SetBool(nValue8, remoteconfigparams::Mask::ENABLE_UPTIME); - return; - } - - if (Sscan::Uint8(pLine, RemoteConfigConst::PARAMS_ENABLE_FACTORY, nValue8) == Sscan::OK) { - SetBool(nValue8, remoteconfigparams::Mask::ENABLE_FACTORY); - return; - } + // Helper lambda for setting masks + auto trySetMask = [&](const char* param, const uint32_t mask) { + uint8_t nValue8; + if (Sscan::Uint8(pLine, param, nValue8) == Sscan::OK) { + SetBool(nValue8, mask); + return true; + } + return false; + }; + + // Loop through parameters and masks + for (const auto& paramMask : paramMasks) { + if (trySetMask(paramMask.pParam, paramMask.nMask)) { + return; + } + } uint32_t nLength = remoteconfig::DISPLAY_NAME_LENGTH - 1; + if (Sscan::Char(pLine, RemoteConfigConst::PARAMS_DISPLAY_NAME, m_Params.aDisplayName, nLength) == Sscan::OK) { m_Params.aDisplayName[nLength] = '\0'; m_Params.nSetList |= remoteconfigparams::Mask::DISPLAY_NAME; @@ -151,11 +155,10 @@ void RemoteConfigParams::Builder(const struct remoteconfigparams::Params *pRemot PropertiesBuilder builder(RemoteConfigConst::PARAMS_FILE_NAME, pBuffer, nLength); - builder.Add(RemoteConfigConst::PARAMS_DISABLE, isMaskSet(remoteconfigparams::Mask::DISABLE)); - builder.Add(RemoteConfigConst::PARAMS_DISABLE_WRITE, isMaskSet(remoteconfigparams::Mask::DISABLE_WRITE)); - builder.Add(RemoteConfigConst::PARAMS_ENABLE_REBOOT, isMaskSet(remoteconfigparams::Mask::ENABLE_REBOOT)); - builder.Add(RemoteConfigConst::PARAMS_ENABLE_UPTIME, isMaskSet(remoteconfigparams::Mask::ENABLE_UPTIME)); - builder.Add(RemoteConfigConst::PARAMS_ENABLE_FACTORY, isMaskSet(remoteconfigparams::Mask::ENABLE_FACTORY)); + // Loop through parameters and masks for building properties + for (const auto& paramMask : paramMasks) { + builder.Add(paramMask.pParam, isMaskSet(paramMask.nMask)); + } builder.Add(RemoteConfigConst::PARAMS_DISPLAY_NAME, m_Params.aDisplayName, isMaskSet(remoteconfigparams::Mask::DISPLAY_NAME)); @@ -165,7 +168,7 @@ void RemoteConfigParams::Builder(const struct remoteconfigparams::Params *pRemot return; } -void RemoteConfigParams::Set(RemoteConfig* pRemoteConfig) { +void RemoteConfigParams::Set(RemoteConfig *pRemoteConfig) { assert(pRemoteConfig != nullptr); pRemoteConfig->SetDisable(isMaskSet(remoteconfigparams::Mask::DISABLE)); @@ -188,10 +191,10 @@ void RemoteConfigParams::staticCallbackFunction(void *p, const char *s) { void RemoteConfigParams::Dump() { printf("%s::%s \'%s\':\n", __FILE__, __FUNCTION__, RemoteConfigConst::PARAMS_FILE_NAME); - printf(" %s=%d\n", RemoteConfigConst::PARAMS_DISABLE, isMaskSet(remoteconfigparams::Mask::DISABLE)); - printf(" %s=%d\n", RemoteConfigConst::PARAMS_DISABLE_WRITE, isMaskSet(remoteconfigparams::Mask::DISABLE_WRITE)); - printf(" %s=%d\n", RemoteConfigConst::PARAMS_ENABLE_REBOOT, isMaskSet(remoteconfigparams::Mask::ENABLE_REBOOT)); - printf(" %s=%d\n", RemoteConfigConst::PARAMS_ENABLE_UPTIME, isMaskSet(remoteconfigparams::Mask::ENABLE_UPTIME)); - printf(" %s=%d\n", RemoteConfigConst::PARAMS_ENABLE_FACTORY, isMaskSet(remoteconfigparams::Mask::ENABLE_FACTORY)); + + for (const auto& paramMask : paramMasks) { + printf(" %s=%d\n", paramMask.pParam, isMaskSet(paramMask.nMask)); + } + printf(" %s=%s\n", RemoteConfigConst::PARAMS_DISPLAY_NAME, m_Params.aDisplayName); } diff --git a/lib-remoteconfig/src/shell/shell.cpp b/lib-remoteconfig/src/shell/shell.cpp old mode 100644 new mode 100755 index 6fa14811c..845b27ed6 --- a/lib-remoteconfig/src/shell/shell.cpp +++ b/lib-remoteconfig/src/shell/shell.cpp @@ -3,7 +3,7 @@ * */ /* Copyright (C) 2020 by hippy mailto:dmxout@gmail.com - * Copyright (C) 2020-2023 by Arjan van Vught mailto:info@orangepi-dmx.nl + * Copyright (C) 2020-2024 by Arjan van Vught mailto:info@gd32-dmx.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -31,30 +31,43 @@ #include "shell/shell.h" +#if defined (GD32) // PHY_TYPE is defined here +# include "gd32.h" +#endif + #include "debug.h" -struct TCommands { +struct ShellCommands { const char *pName; const uint32_t nArgc; }; -static constexpr TCommands cmd_table[] = { +static constexpr ShellCommands cmd_table[] = { { "reboot", 0 }, { "info", 0 }, - { "set", 2}, - { "get", 2}, - { "dhcp", 0}, - { "date", 0}, - { "hwclock", 1}, -#ifndef NDEBUG - { "i2cdetect" , 0}, - { "dump" , 1}, - { "mem" , 2}, - { "ntp" , 1}, - { "gps" , 1}, + { "set", 2 }, + { "get", 2 }, + { "dhcp", 0 }, + { "date", 0 }, + { "phy", 0 }, +#if !defined (DISABLE_RTC) + { "hwclock", 1 }, #endif - { "?", 0 } -}; +#if defined (DEBUG_I2C) + { "i2cdetect", 0 }, +#endif + { "dump", 1 }, + { "mem", 2 }, +#if defined (ENABLE_NTP_CLIENT) + { "ntp", 1 }, +#endif +#if defined (CONFIG_SHELL_GPS) + { "gps", 1 }, +#endif +#if (PHY_TYPE == RTL8201F) + { "rtl8201f" , 2}, +#endif + { "?", 0 } }; namespace shell { static constexpr auto TABLE_SIZE = sizeof(cmd_table) / sizeof(cmd_table[0]); @@ -65,10 +78,8 @@ static constexpr char CMD_WRONG_ARGUMENTS[] = "Wrong arguments\n"; } // namespace msg } // namespace shell -using namespace shell; - Shell::Shell() { - DEBUG_PRINTF("TABLE_SIZE=%d", TABLE_SIZE); + DEBUG_PRINTF("TABLE_SIZE=%d", shell::TABLE_SIZE); } int Shell::Printf(const char* fmt, ...) { @@ -86,8 +97,8 @@ int Shell::Printf(const char* fmt, ...) { return i; } -uint16_t Shell::ValidateCmd(uint32_t nLength, CmdIndex &nCmdIndex) { - uint16_t i; +uint32_t Shell::ValidateCmd(const uint32_t nLength, shell::CmdIndex &nCmdIndex) { + uint32_t i; m_Argc = 0; @@ -98,17 +109,17 @@ uint16_t Shell::ValidateCmd(uint32_t nLength, CmdIndex &nCmdIndex) { } } - for (uint32_t j = 0; j < TABLE_SIZE; j++) { + for (uint32_t j = 0; j < shell::TABLE_SIZE; j++) { if (0 == strcmp(m_Buffer, cmd_table[j].pName)) { - nCmdIndex = static_cast(j); - return static_cast(i + 1); + nCmdIndex = static_cast< shell::CmdIndex>(j); + return i + 1; } } return 0; } -void Shell::ValidateArg(uint16_t nOffset, uint32_t nLength) { +void Shell::ValidateArg(uint32_t nOffset, const uint32_t nLength) { if (nOffset > nLength) { return; } @@ -121,11 +132,11 @@ void Shell::ValidateArg(uint16_t nOffset, uint32_t nLength) { return; } - uint16_t nArgvStart = nOffset; + auto nArgvStart = nOffset; m_Argv[0] = &m_Buffer[nOffset++]; m_Argc = 1; - uint16_t i, j = 1; + uint32_t i, j = 1; for (i = nOffset; i < nLength; i++) { if ((m_Buffer[i] > ' ') && (m_Buffer[i] < 127)) { @@ -133,13 +144,13 @@ void Shell::ValidateArg(uint16_t nOffset, uint32_t nLength) { } if ((m_Buffer[i] == ' ') || (m_Buffer[i] == '\t')) { - if (j < MAXARG) { + if (j < shell::MAXARG) { m_nArgvLength[j - 1] = static_cast(i - nArgvStart); } while (i < nLength && ((m_Buffer[i] == ' ') || (m_Buffer[i] == '\t'))) { m_Buffer[i++] = '\0'; } - if (j < MAXARG) { + if (j < shell::MAXARG) { nArgvStart = i; m_Argv[j++] = &m_Buffer[i]; } @@ -147,7 +158,7 @@ void Shell::ValidateArg(uint16_t nOffset, uint32_t nLength) { } } - if (j < MAXARG) { + if (j < shell::MAXARG) { m_nArgvLength[j - 1] = static_cast(i - nArgvStart); } @@ -161,11 +172,18 @@ void Shell::ValidateArg(uint16_t nOffset, uint32_t nLength) { void Shell::CmdHelp() { Puts("http://www.orangepi-dmx.org/orange-pi-dmx512-rdm/uart0-shell\n"); + + uint32_t i = 0; + for (auto& cmd : cmd_table) { + Printf("%2u: %s <%u>\n", i++, cmd.pName, cmd.nArgc); + } + + Puts(""); } void Shell::Run() { if (__builtin_expect((!m_bShownPrompt), 1)) { - Puts(msg::CMD_PROMPT); + Puts(shell::msg::CMD_PROMPT); m_bShownPrompt = true; } @@ -179,64 +197,78 @@ void Shell::Run() { m_bShownPrompt = false; // next time round, we show the prompt. - uint16_t nOffset; - CmdIndex nCmdIndex; + uint32_t nOffset; + shell::CmdIndex nCmdIndex; if ((nOffset = ValidateCmd(nLength, nCmdIndex)) == 0) { - Printf("%s %s\n", msg::CMD_NOT_FOUND, m_Buffer); + Printf("%s %s\n", shell::msg::CMD_NOT_FOUND, m_Buffer); return; } ValidateArg(nOffset, nLength); if (m_Argc != cmd_table[static_cast(nCmdIndex)].nArgc) { - Puts(msg::CMD_WRONG_ARGUMENTS); + Puts( shell::msg::CMD_WRONG_ARGUMENTS); return; } switch (nCmdIndex) { - case CmdIndex::REBOOT: - CmdReboot(); - break; - case CmdIndex::INFO: - CmdInfo(); - break; - case CmdIndex::SET: - CmdSet(); - break; - case CmdIndex::GET: - CmdGet(); - break; - case CmdIndex::DHCP: - CmdDhcp(); - break; - case CmdIndex::DATE: - CmdDate(); - break; - case CmdIndex::HWCLOCK: - CmdHwClock(); - break; -#ifndef NDEBUG - case CmdIndex::I2CDETECT: - CmdI2cDetect(); - break; - case CmdIndex::DUMP: - CmdDump(); - break; - case CmdIndex::MEM: - CmdMem(); - break; - case CmdIndex::NTP: - CmdNtp(); - break; - case CmdIndex::GPS: - CmdGps(); - break; + case shell::CmdIndex::REBOOT: + CmdReboot(); + break; + case shell::CmdIndex::INFO: + CmdInfo(); + break; + case shell::CmdIndex::SET: + CmdSet(); + break; + case shell::CmdIndex::GET: + CmdGet(); + break; + case shell::CmdIndex::DHCP: + CmdDhcp(); + break; + case shell::CmdIndex::DATE: + CmdDate(); + break; + case shell::CmdIndex::PHY: + CmdPhy(); + break; +#if !defined(DISABLE_RTC) + case shell::CmdIndex::HWCLOCK: + CmdHwClock(); + break; #endif - case CmdIndex::HELP: - CmdHelp(); - break; - default: - break; +#if defined (DEBUG_I2C) + case shell::CmdIndex::I2CDETECT: + CmdI2cDetect(); + break; +#endif + case shell::CmdIndex::DUMP: + CmdDump(); + break; + case shell::CmdIndex::MEM: + CmdMem(); + break; +#if defined (ENABLE_NTP_CLIENT) + case shell::CmdIndex::NTP: + CmdNtp(); + break; +#endif +#if defined (CONFIG_SHELL_GPS) + case shell::CmdIndex::GPS: + CmdGps(); + break; +#endif +#if (PHY_TYPE == RTL8201F) + case shell::CmdIndex::PHY_TYPE_RTL8201F: + CmdPhyTypeRTL8201F(); + break; +#endif + case shell::CmdIndex::HELP: + CmdHelp(); + break; + default: + break; } } diff --git a/lib-remoteconfig/src/shell/shellcmd.cpp b/lib-remoteconfig/src/shell/shellcmd.cpp old mode 100644 new mode 100755 index 53c27cbbb..f82b55cd3 --- a/lib-remoteconfig/src/shell/shellcmd.cpp +++ b/lib-remoteconfig/src/shell/shellcmd.cpp @@ -35,6 +35,7 @@ #include "remoteconfig.h" #include "network.h" +#include "emac/phy.h" #include "hardware.h" #include "firmwareversion.h" @@ -49,87 +50,118 @@ #endif // Firmware specific BEGIN -#include "debug.h" +#if defined (DEBUG_I2C) +# include "../lib-hal/debug/i2c/i2cdetect.h" +#endif -#ifndef NDEBUG -# include "../debug/i2cdetect.h" +#if defined (ENABLE_NTP_CLIENT) # include "net/apps/ntpclient.h" +#endif + +#if defined (CONFIG_SHELL_GPS) # include "gps.h" -extern "C" { -void h3_board_dump(void); -void h3_dump_memory_mapping(void); -void h3_ccu_pll_dump(void); -void arm_dump_memmap(void); -void arm_dump_page_table(void); -} #endif -// TODO We can reshuffle namespaces here for removing duplicates? +#if (PHY_TYPE == RTL8201F) +# include "emac/phy/rtl8201f.h" +#endif + +#if defined (GD32) // PHY_TYPE is defined here +# include "gd32.h" +#endif + +#include "debug.h" namespace shell { +// Centralize common arguments and lengths +namespace common_args { +static constexpr char PRINT[] = "print"; +} // namespace common_args + +namespace common_lengths { +static constexpr auto PRINT = sizeof(common_args::PRINT) - 1; +} // namespace common_lengths namespace set { namespace arg { static constexpr char IP[] = "ip"; static constexpr char HOSTNAME[] = "hostname"; +#if defined (LTC_READER) static constexpr char LTC[] = "ltc"; +#endif } // namespace arg namespace length { static constexpr auto IP = sizeof(arg::IP) - 1; static constexpr auto HOSTNAME = sizeof(arg::HOSTNAME) - 1; +#if defined (LTC_READER) static constexpr auto LTC = sizeof(arg::LTC) - 1; +#endif } // namespace length } // namespace set -namespace dump { -namespace arg { -static constexpr char BOARD[] = "board"; -static constexpr char MMAP[] = "mmap"; -static constexpr char PLL[] = "pll"; -static constexpr char LINKER[] = "linker"; -} // namespace arg -namespace length { -static constexpr auto BOARD = sizeof(arg::BOARD) - 1; -static constexpr auto MMAP = sizeof(arg::MMAP) - 1; -static constexpr auto PLL = sizeof(arg::PLL) - 1; -static constexpr auto LINKER = sizeof(arg::LINKER) - 1; -} // namespace length -} // namespace dump - namespace networktime { namespace arg { -static constexpr char PRINT[] = "print"; +// Reuse common_args::PRINT +using common_args::PRINT; } // namespace arg namespace length { -static constexpr auto PRINT = sizeof(arg::PRINT) - 1; +// Reuse common_lengths::PRINT +using common_lengths::PRINT; } // namespace length } // namespace networktime +#if !defined(DISABLE_RTC) namespace hwclock { namespace arg { -static constexpr char HCTOSYS[] = "hctosys"; // Set the System Clock from the Hardware Clock -static constexpr char SYSTOHC[] = "systohc"; // Set the Hardware Clock from the System Clock -static constexpr char PRINT[] = "print"; +static constexpr char HCTOSYS[] = "hctosys"; // Set the System Clock from the Hardware Clock +static constexpr char SYSTOHC[] = "systohc"; // Set the Hardware Clock from the System Clock +// Reuse common_args::PRINT +using common_args::PRINT; } // namespace arg namespace length { static constexpr auto HCTOSYS = sizeof(arg::HCTOSYS) - 1; static constexpr auto SYSTOHC = sizeof(arg::SYSTOHC) - 1; -static constexpr auto PRINT = sizeof(arg::PRINT) - 1; +// Reuse common_lengths::PRINT +using common_lengths::PRINT; } // namespace length } // namespace hwclock +#endif +#if defined (CONFIG_SHELL_GPS) namespace gps { namespace arg { static constexpr char DATE[] = "date"; static constexpr char LOCALTIME[] = "localtime"; -static constexpr char PRINT[] = "print"; +// Reuse common_args::PRINT +using common_args::PRINT; } // namespace arg namespace length { static constexpr auto DATE = sizeof(arg::DATE) - 1; static constexpr auto LOCALTIME = sizeof(arg::LOCALTIME) - 1; -static constexpr auto PRINT = sizeof(arg::PRINT) - 1; +// Reuse common_lengths::PRINT +using common_lengths::PRINT; } // namespace length } // namespace gps +#endif + +#if (PHY_TYPE == RTL8201F) +namespace rtl8201f { +namespace arg { +static constexpr char RXTIMING[] = "rxtiming"; +static constexpr char TXTIMING[] = "txtiming"; +static constexpr char TIMING[] = "timing"; +// Reuse common_args::PRINT +using common_args::PRINT; +} // namespace arg +namespace length { +static constexpr auto RXTIMING = sizeof(arg::RXTIMING) - 1; +static constexpr auto TXTIMING = sizeof(arg::TXTIMING) - 1; +static constexpr auto TIMING = sizeof(arg::TIMING) - 1; +// Reuse common_lengths::PRINT +using common_lengths::PRINT; +} // namespace length +} // namespace rtl8201f +#endif namespace file { static constexpr char EXT[] = ".txt"; @@ -148,38 +180,17 @@ static constexpr char DHCP[] = "DHCP enabled\n"; static constexpr char STORED[] = "Stored\n"; } // namespace info namespace error { -static constexpr char INVALID[] = "Invalid command.\n"; -static constexpr char INTERNAL[] = "Internal error.\n"; -static constexpr char DHCP[] = "DHCP failed.\n"; static constexpr char TXT[] = ".txt not found\n"; static constexpr char PROPERTY[] = "Property not found.\n"; +#if defined (LTC_READER) static constexpr char LTC[] = "This source does not support the set command.\n"; +#endif } // namespace error } // namespace msg - } // namespace shell using namespace shell; -uint32_t Shell::hexadecimalToDecimal(const char *pHexValue, uint32_t nLength) { - const auto *pSrc = pHexValue; - uint32_t nValue = 0; - - while (nLength-- > 0) { - const auto c = *pSrc; - - if (isxdigit(c) == 0) { - break; - } - - const auto nNibble = c > '9' ? static_cast((c | 0x20) - 'a' + 10) : static_cast(c - '0'); - nValue = (nValue << 4) | nNibble; - pSrc++; - } - - return nValue; -} - void Shell::CmdReboot() { RemoteConfig::Get()->Reboot(); } @@ -347,69 +358,76 @@ void Shell::CmdDate() { Puts(asctime(localtime(&rawtime))); } -void Shell::CmdHwClock() { - const auto nArgv0Length = m_nArgvLength[0]; +void Shell::CmdPhy() { + net::PhyStatus phyStatus; + phy_customized_status(phyStatus); - if ((nArgv0Length == hwclock::length::HCTOSYS) && (memcmp(m_Argv[0], hwclock::arg::HCTOSYS, hwclock::length::HCTOSYS) == 0)) { - HwClock::Get()->HcToSys(); - return; - } + Printf("Link %s, %d, %s\n", + phyStatus.link == net::Link::STATE_UP ? "Up" : "Down", + phyStatus.speed == net::Speed::SPEED10 ? 10 : 100, + phyStatus.duplex == net::Duplex::DUPLEX_HALF ? "HALF" : "FULL"); +} - if ((nArgv0Length == hwclock::length::SYSTOHC) && (memcmp(m_Argv[0], hwclock::arg::SYSTOHC, hwclock::length::SYSTOHC) == 0)) { - HwClock::Get()->SysToHc(); - return; - } +#ifndef NDEBUG +static uint32_t hexadecimal_to_decimal(const char *pHexValue, uint32_t nLength) { + const auto *pSrc = pHexValue; + uint32_t nValue = 0; - if ((nArgv0Length == hwclock::length::PRINT) && (memcmp(m_Argv[0], hwclock::arg::PRINT, hwclock::length::PRINT) == 0)) { - HwClock::Get()->Print(); - return; + while (nLength-- > 0) { + const auto c = *pSrc; + + if (isxdigit(c) == 0) { + break; + } + + const auto nNibble = c > '9' ? static_cast((c | 0x20) - 'a' + 10) : static_cast(c - '0'); + nValue = (nValue << 4) | nNibble; + pSrc++; } - Puts(msg::error::INVALID); + return nValue; } +#endif -/* - * Debug commands - */ - +void Shell::CmdMem() { #ifndef NDEBUG -void Shell::CmdI2cDetect() { - I2cDetect i2cdetect; + const auto pAddress = reinterpret_cast(hexadecimal_to_decimal(m_Argv[0], m_nArgvLength[0])); + const auto nSize = hexadecimal_to_decimal(m_Argv[1], m_nArgvLength[1]); + + debug_dump(pAddress, nSize); +#endif } -void Shell::CmdDump() { +#if !defined(DISABLE_RTC) +void Shell::CmdHwClock() { const auto nArgv0Length = m_nArgvLength[0]; - if ((nArgv0Length == dump::length::BOARD) && (memcmp(m_Argv[0], dump::arg::BOARD, dump::length::BOARD) == 0)) { - h3_board_dump(); - return; - } - - if ((nArgv0Length == dump::length::MMAP) && (memcmp(m_Argv[0], dump::arg::MMAP, dump::length::MMAP) == 0)) { - h3_dump_memory_mapping(); + if ((nArgv0Length == hwclock::length::HCTOSYS) && (memcmp(m_Argv[0], hwclock::arg::HCTOSYS, hwclock::length::HCTOSYS) == 0)) { + HwClock::Get()->HcToSys(); return; } - if ((nArgv0Length == dump::length::PLL) && (memcmp(m_Argv[0], dump::arg::PLL, dump::length::PLL) == 0)) { - h3_ccu_pll_dump(); + if ((nArgv0Length == hwclock::length::SYSTOHC) && (memcmp(m_Argv[0], hwclock::arg::SYSTOHC, hwclock::length::SYSTOHC) == 0)) { + HwClock::Get()->SysToHc(); return; } - if ((nArgv0Length == dump::length::LINKER) && (memcmp(m_Argv[0], dump::arg::LINKER, dump::length::LINKER) == 0)) { - arm_dump_memmap(); + if ((nArgv0Length == hwclock::length::PRINT) && (memcmp(m_Argv[0], hwclock::arg::PRINT, hwclock::length::PRINT) == 0)) { + HwClock::Get()->Print(); return; } Puts(msg::error::INVALID); } +#endif -void Shell::CmdMem() { - const auto pAddress = reinterpret_cast(hexadecimalToDecimal(m_Argv[0], m_nArgvLength[0])); - const auto nSize = hexadecimalToDecimal(m_Argv[1], m_nArgvLength[1]); - - debug_dump(pAddress, static_cast(nSize)); +#if defined (DEBUG_I2C) +void Shell::CmdI2cDetect() { + I2cDetect i2cdetect; } +#endif +#if defined (ENABLE_NTP_CLIENT) void Shell::CmdNtp() { const auto nArgv0Length = m_nArgvLength[0]; @@ -420,7 +438,9 @@ void Shell::CmdNtp() { Puts(msg::error::INVALID); } +#endif +#if defined (CONFIG_SHELL_GPS) void Shell::CmdGps() { const auto nArgv0Length = m_nArgvLength[0]; @@ -444,3 +464,43 @@ void Shell::CmdGps() { Puts(msg::error::INVALID); } #endif + +#if (PHY_TYPE == RTL8201F) +void Shell::CmdPhyTypeRTL8201F() { + const auto nArgv0Length = m_nArgvLength[0]; + + if ((nArgv0Length == rtl8201f::length::RXTIMING) && (memcmp(m_Argv[0], rtl8201f::arg::RXTIMING, rtl8201f::length::RXTIMING) == 0)) { + if (m_nArgvLength[1] == 1) { + const auto c = m_Argv[1][0]; + if (isxdigit(c) != 0) { + const uint32_t nRxTiming = c > '9' ? ((c | 0x20) - 'a' + 10) : (c - '0'); + net::phy::rtl8201f_set_rxtiming(nRxTiming); + return; + } + } + } + + if ((nArgv0Length == rtl8201f::length::TXTIMING) && (memcmp(m_Argv[0], rtl8201f::arg::TXTIMING, rtl8201f::length::TXTIMING) == 0)) { + if (m_nArgvLength[1] == 1) { + const auto c = m_Argv[1][0]; + if (isxdigit(c) != 0) { + const uint32_t nTxTiming = c > '9' ? ((c | 0x20) - 'a' + 10) : (c - '0'); + net::phy::rtl8201f_set_txtiming(nTxTiming); + return; + } + } + } + + if ((nArgv0Length == rtl8201f::length::PRINT) && (memcmp(m_Argv[0], rtl8201f::arg::PRINT, rtl8201f::length::PRINT) == 0)) { + if ((m_nArgvLength[1] == rtl8201f::length::TIMING) && (memcmp(m_Argv[1], rtl8201f::arg::TIMING, rtl8201f::length::TIMING) == 0)) { + uint32_t nRxTiming; + uint32_t nTxTiming; + net::phy::rtl8201f_get_timings(nRxTiming, nTxTiming); + Printf("RX: 0x%X, TX: 0x%X\n", nRxTiming, nTxTiming); + return; + } + } + + Puts(msg::error::INVALID); +} +#endif diff --git a/lib-rgbpanel/.settings/language.settings.xml b/lib-rgbpanel/.settings/language.settings.xml index 28ab8645d..b63fa50be 100644 --- a/lib-rgbpanel/.settings/language.settings.xml +++ b/lib-rgbpanel/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-showfile/.settings/language.settings.xml b/lib-showfile/.settings/language.settings.xml index b374e27cc..9ff657d4d 100644 --- a/lib-showfile/.settings/language.settings.xml +++ b/lib-showfile/.settings/language.settings.xml @@ -4,8 +4,8 @@ - - + + @@ -17,7 +17,7 @@ - + diff --git a/lib-showfile/Rules.mk b/lib-showfile/Rules.mk index f4e3e7a80..21bb2b9fc 100755 --- a/lib-showfile/Rules.mk +++ b/lib-showfile/Rules.mk @@ -1,7 +1,7 @@ $(info [${CURDIR}]) $(info $$MAKE_FLAGS [${MAKE_FLAGS}]) -EXTRA_INCLUDES+=../lib-properties/include ../lib-network/include +EXTRA_INCLUDES+=../lib-properties/include ../lib-lightset/include ../lib-network/include ifneq ($(MAKE_FLAGS),) ifeq (,$(findstring CONFIG_SHOWFILE_USE_CUSTOM_DISPLAY,$(MAKE_FLAGS))) diff --git a/lib-tcnet/.settings/language.settings.xml b/lib-tcnet/.settings/language.settings.xml index 2fabd17cd..0c488fa65 100644 --- a/lib-tcnet/.settings/language.settings.xml +++ b/lib-tcnet/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-tlc59711/.settings/language.settings.xml b/lib-tlc59711/.settings/language.settings.xml index 48afb8159..93035a968 100644 --- a/lib-tlc59711/.settings/language.settings.xml +++ b/lib-tlc59711/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/lib-tlc59711dmx/.settings/language.settings.xml b/lib-tlc59711dmx/.settings/language.settings.xml index e0ce03150..f5f2aff32 100644 --- a/lib-tlc59711dmx/.settings/language.settings.xml +++ b/lib-tlc59711dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-usb/.settings/language.settings.xml b/lib-usb/.settings/language.settings.xml index 9fec115f4..f8753ed40 100644 --- a/lib-usb/.settings/language.settings.xml +++ b/lib-usb/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-widget/.settings/language.settings.xml b/lib-widget/.settings/language.settings.xml index 9fec115f4..f8753ed40 100644 --- a/lib-widget/.settings/language.settings.xml +++ b/lib-widget/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-ws28xx/.settings/language.settings.xml b/lib-ws28xx/.settings/language.settings.xml index 418c01870..77bf344a0 100644 --- a/lib-ws28xx/.settings/language.settings.xml +++ b/lib-ws28xx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-ws28xx/include/gd32/gpio/pixelmulti_config.h b/lib-ws28xx/include/gd32/gpio/pixelmulti_config.h index fdacc4d00..a6bf29c17 100644 --- a/lib-ws28xx/include/gd32/gpio/pixelmulti_config.h +++ b/lib-ws28xx/include/gd32/gpio/pixelmulti_config.h @@ -34,6 +34,8 @@ # include "board_gd32f450vi.h" #elif defined (BOARD_16X4U_PIXEL) # include "board_gd32f450vi.h" +#elif defined (BOARD_GD32F470VG) +# include "board_gd32f470vg.h" #elif defined (BOARD_GD32F207C_EVAL) # include "board_gd32f207c_eval.h" #elif defined (BOARD_GD32F470Z_EVAL) diff --git a/lib-ws28xxdisplay/.settings/language.settings.xml b/lib-ws28xxdisplay/.settings/language.settings.xml index 72d40ecd8..9820bf6b1 100644 --- a/lib-ws28xxdisplay/.settings/language.settings.xml +++ b/lib-ws28xxdisplay/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib-ws28xxdmx/.settings/language.settings.xml b/lib-ws28xxdmx/.settings/language.settings.xml index 601ac1912..7a852214f 100644 --- a/lib-ws28xxdmx/.settings/language.settings.xml +++ b/lib-ws28xxdmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti._cpp b/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti._cpp deleted file mode 100755 index 35524818a..000000000 --- a/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti._cpp +++ /dev/null @@ -1,189 +0,0 @@ -/** - * @file ws28xxdmxmulti.cpp - * - */ -/* Copyright (C) 2019-2024 by Arjan van Vught mailto:info@orangepi-dmx.nl - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#if defined (DEBUG_PIXELDMX) -# undef NDEBUG -#endif - -#pragma GCC push_options -#pragma GCC optimize ("O3") -#pragma GCC optimize ("-funroll-loops") -#pragma GCC optimize ("-fprefetch-loop-arrays") - -#include -#include -#include - -#include "ws28xxdmxmulti.h" -#include "ws28xxmulti.h" -#include "ws28xx.h" - -#include "pixeldmxparams.h" -#include "pixeldmxconfiguration.h" - -#if defined (PIXELDMXSTARTSTOP_GPIO) -# include "hal_gpio.h" -#endif - -#include "debug.h" - -WS28xxDmxMulti::WS28xxDmxMulti(PixelDmxConfiguration& pixelDmxConfiguration): m_pixelDmxConfiguration(pixelDmxConfiguration){ - DEBUG_ENTRY - - m_pixelDmxConfiguration.Validate(ws28xxdmxmulti::MAX_PORTS , m_nChannelsPerPixel, m_PortInfo); - - m_pWS28xxMulti = new WS28xxMulti(pixelDmxConfiguration); - assert(m_pWS28xxMulti != nullptr); - m_pWS28xxMulti->Blackout(); - -#if defined (PIXELDMXSTARTSTOP_GPIO) - FUNC_PREFIX(gpio_fsel(PIXELDMXSTARTSTOP_GPIO, GPIO_FSEL_OUTPUT)); - FUNC_PREFIX(gpio_clr(PIXELDMXSTARTSTOP_GPIO)); -#endif - - DEBUG_EXIT -} - -WS28xxDmxMulti::~WS28xxDmxMulti() { - delete m_pWS28xxMulti; - m_pWS28xxMulti = nullptr; -} - -void WS28xxDmxMulti::Start(const uint32_t nPortIndex) { - DEBUG_PRINTF("%u", nPortIndex); - - if (m_bIsStarted == 0) { -#if defined (PIXELDMXSTARTSTOP_GPIO) - FUNC_PREFIX(gpio_set(PIXELDMXSTARTSTOP_GPIO)); -#endif - } - - m_bIsStarted |= (1U << nPortIndex); -} - -void WS28xxDmxMulti::Stop(const uint32_t nPortIndex) { - DEBUG_PRINTF("%u", nPortIndex); - - if (m_bIsStarted & (1U << nPortIndex)) { - m_bIsStarted &= ~(1U << nPortIndex); - } - - if (m_bIsStarted == 0) { -#if defined (PIXELDMXSTARTSTOP_GPIO) - FUNC_PREFIX(gpio_clr(PIXELDMXSTARTSTOP_GPIO)); -#endif - } -} - -void WS28xxDmxMulti::SetData(const uint32_t nPortIndex, const uint8_t* pData, uint32_t nLength) { - assert(pData != nullptr); - assert(nLength <= lightset::dmx::UNIVERSE_SIZE); - -#if defined (NODE_DDP_DISPLAY) - const auto nOutIndex = (nPortIndex / 4); - const auto nSwitch = nPortIndex - (nOutIndex * 4); -#else - const auto nUniverses = m_pixelDmxConfiguration.GetUniverses(); - const auto nOutIndex = (nPortIndex / nUniverses); - const auto nSwitch = nPortIndex - (nOutIndex * nUniverses); -#endif - - const auto nGroups = m_pixelDmxConfiguration.GetGroups(); - const auto beginIndex = m_PortInfo.nBeginIndexPort[nSwitch]; - const auto endIndex = std::min(nGroups, (beginIndex + (nLength / m_nChannelsPerPixel))); - - uint32_t d = 0; - - const auto nGroupingCount = m_pixelDmxConfiguration.GetGroupingCount(); - - if (m_nChannelsPerPixel == 3) { - // Define a lambda to handle pixel setting based on color order - auto setPixelColor3 = [&](uint32_t r, uint32_t g, uint32_t b) { - for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { - auto const nPixelIndexStart = j * nGroupingCount; - for (uint32_t k = 0; k < nGroupingCount; k++) { - m_pWS28xxMulti->SetPixel(nOutIndex, nPixelIndexStart + k, r, g, b); - } - d += 3; // Increment by 3 since we're processing 3 channels per pixel - } - }; - - switch (m_pixelDmxConfiguration.GetMap()) { - case pixel::Map::RGB: - setPixelColor3(pData[d + 0], pData[d + 1], pData[d + 2]); - break; - case pixel::Map::RBG: - setPixelColor3(pData[d + 0], pData[d + 2], pData[d + 1]); - break; - case pixel::Map::GRB: - setPixelColor3(pData[d + 1], pData[d + 0], pData[d + 2]); - break; - case pixel::Map::GBR: - setPixelColor3(pData[d + 2], pData[d + 0], pData[d + 1]); - break; - case pixel::Map::BRG: - setPixelColor3(pData[d + 1], pData[d + 2], pData[d + 0]); - break; - case pixel::Map::BGR: - setPixelColor3(pData[d + 2], pData[d + 1], pData[d + 0]); - break; - default: - assert(0); - __builtin_unreachable(); - break; - } - } else { - assert(m_nChannelsPerPixel == 4); - for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { - auto const nPixelIndexStart = (j * nGroupingCount); - for (uint32_t k = 0; k < nGroupingCount; k++) { - m_pWS28xxMulti->SetPixel(nOutIndex, nPixelIndexStart + k, pData[d], pData[d + 1], pData[d + 2], pData[d + 3]); - } - d = d + 4; - } - } -} - -void WS28xxDmxMulti::Blackout(bool bBlackout) { - m_bBlackout = bBlackout; - - while (m_pWS28xxMulti->IsUpdating()) { - // wait for completion - } - - if (bBlackout) { - m_pWS28xxMulti->Blackout(); - } else { - m_pWS28xxMulti->Update(); - } -} - -void WS28xxDmxMulti::FullOn() { - while (m_pWS28xxMulti->IsUpdating()) { - // wait for completion - } - - m_pWS28xxMulti->FullOn(); -} diff --git a/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti.cpp b/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti.cpp index 2c41033b9..66a7cc087 100755 --- a/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti.cpp +++ b/lib-ws28xxdmx/src/dmxmulti/ws28xxdmxmulti.cpp @@ -126,83 +126,75 @@ void WS28xxDmxMulti::SetData(const uint32_t nPortIndex, const uint8_t* pData, ui if (nChannelsPerPixel == 3) { // Define a lambda to handle pixel setting based on color order - auto setPixelsColor3 = [&](uint32_t r, uint32_t g, uint32_t b) { + auto setPixelsColourRTZ = [&](const uint32_t nPortIndex, const uint32_t nPixelIndex, const uint32_t r, const uint32_t g, const uint32_t b) { #if defined(CONFIG_PIXELDMX_ENABLE_GAMMATABLE) const auto pGammaTable = m_pWS28xxMulti->m_PixelConfiguration.GetGammaTable(); r = pGammaTable[r]; g = pGammaTable[g]; b = pGammaTable[b]; #endif - if (isRTZProtocol) { - for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { - auto const nPixelIndexStart = j * nGroupingCount; - for (uint32_t k = 0; k < nGroupingCount; k++) { - m_pWS28xxMulti->SetColourRTZ(nOutIndex, nPixelIndexStart + k, r, g, b); - } - d += 3; // Increment by 3 since we're processing 3 channels per pixel - } - } else { - switch (pixelType) { - case pixel::Type::WS2801: - for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { - auto const nPixelIndexStart = j * nGroupingCount; - for (uint32_t k = 0; k < nGroupingCount; k++) { - m_pWS28xxMulti->SetColourWS2801(nOutIndex, nPixelIndexStart + k, r, g, b); - } - d += 3; // Increment by 3 since we're processing 3 channels per pixel - } - break; - case pixel::Type::APA102: - case pixel::Type::SK9822: - for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { - auto const nPixelIndexStart = j * nGroupingCount; - for (uint32_t k = 0; k < nGroupingCount; k++) { - m_pWS28xxMulti->SetPixel4Bytes(nOutIndex, 1 + nPixelIndexStart + k, pixelDmxConfiguration.GetGlobalBrightness(), b, g, r); - } - d += 3; // Increment by 3 since we're processing 3 channels per pixel - } - break; - case pixel::Type::P9813: - for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { - auto const nPixelIndexStart = j * nGroupingCount; - for (uint32_t k = 0; k < nGroupingCount; k++) { - const auto nFlag = static_cast(0xC0 | ((~b & 0xC0) >> 2) | ((~r & 0xC0) >> 4) | ((~r & 0xC0) >> 6)); - m_pWS28xxMulti->SetPixel4Bytes(nOutIndex, 1 + nPixelIndexStart + k, nFlag, b, g, r); - } - d += 3; // Increment by 3 since we're processing 3 channels per pixel - } - break; - default: - assert(0); - __builtin_unreachable(); - break; - } - } + m_pWS28xxMulti->SetColourRTZ(nPortIndex, nPixelIndex, r, g, b); }; - switch (pixelDmxConfiguration.GetMap()) { - case pixel::Map::RGB: - setPixelsColor3(pData[d + 0], pData[d + 1], pData[d + 2]); - break; - case pixel::Map::RBG: - setPixelsColor3(pData[d + 0], pData[d + 2], pData[d + 1]); - break; - case pixel::Map::GRB: - setPixelsColor3(pData[d + 1], pData[d + 0], pData[d + 2]); - break; - case pixel::Map::GBR: - setPixelsColor3(pData[d + 2], pData[d + 0], pData[d + 1]); - break; - case pixel::Map::BRG: - setPixelsColor3(pData[d + 1], pData[d + 2], pData[d + 0]); - break; - case pixel::Map::BGR: - setPixelsColor3(pData[d + 2], pData[d + 1], pData[d + 0]); - break; - default: - assert(0); - __builtin_unreachable(); + // Define a lambda to handle pixel setting based on color order + auto setPixelsColour3 = [&](const uint32_t nPortIndex, const uint32_t nPixelIndex, const uint32_t r, const uint32_t g, const uint32_t b) { +#if defined(CONFIG_PIXELDMX_ENABLE_GAMMATABLE) + const auto pGammaTable = m_pWS28xxMulti->m_PixelConfiguration.GetGammaTable(); + r = pGammaTable[r]; + g = pGammaTable[g]; + b = pGammaTable[b]; +#endif + + switch (pixelType) { + case pixel::Type::WS2801: + m_pWS28xxMulti->SetColourWS2801(nPortIndex, nPixelIndex, r, g, b); + break; + case pixel::Type::APA102: + case pixel::Type::SK9822: + m_pWS28xxMulti->SetPixel4Bytes(nPortIndex, 1 + nPixelIndex, pixelDmxConfiguration.GetGlobalBrightness(), b, g, r); + break; + case pixel::Type::P9813: { + const auto nFlag = static_cast(0xC0 | ((~b & 0xC0) >> 2) | ((~r & 0xC0) >> 4) | ((~r & 0xC0) >> 6)); + m_pWS28xxMulti->SetPixel4Bytes(nPortIndex, 1 + nPixelIndex, nFlag, b, g, r); + } break; + default: + assert(0); + __builtin_unreachable(); + break; + } + }; + + constexpr uint32_t channelMap[6][3] = { + {0, 1, 2}, // RGB + {0, 2, 1}, // RBG + {1, 0, 2}, // GRB + {2, 0, 1}, // GBR + {1, 2, 0}, // BRG + {2, 1, 0} // BGR + }; + + const auto mapIndex = static_cast(pixelDmxConfiguration.GetMap()); + // Ensure mapIndex is within valid bounds + assert(mapIndex < sizeof(channelMap) / sizeof(channelMap[0])); // Runtime check + auto const& map = channelMap[mapIndex]; + + if (isRTZProtocol) { + for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { + auto const nPixelIndexStart = j * nGroupingCount; + for (uint32_t k = 0; k < nGroupingCount; k++) { + setPixelsColourRTZ(nOutIndex, nPixelIndexStart + k, pData[d + map[0]], pData[d + map[1]], pData[d + map[2]]); + } + d += 3; // Increment by 3 since we're processing 3 channels per pixel + } + } else { + for (uint32_t j = beginIndex; (j < endIndex) && (d < nLength); j++) { + auto const nPixelIndexStart = j * nGroupingCount; + for (uint32_t k = 0; k < nGroupingCount; k++) { + setPixelsColour3(nOutIndex, nPixelIndexStart + k, pData[d + map[0]], pData[d + map[1]], pData[d + map[2]]); + } + d += 3; // Increment by 3 since we're processing 3 channels per pixel + } } } else { assert(nChannelsPerPixel == 4); diff --git a/linux_artnet/.settings/language.settings.xml b/linux_artnet/.settings/language.settings.xml index 286dc1005..6564e402d 100644 --- a/linux_artnet/.settings/language.settings.xml +++ b/linux_artnet/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/linux_e131/.settings/language.settings.xml b/linux_e131/.settings/language.settings.xml index 286dc1005..6564e402d 100644 --- a/linux_e131/.settings/language.settings.xml +++ b/linux_e131/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/linux_osc/.settings/language.settings.xml b/linux_osc/.settings/language.settings.xml index 286dc1005..6564e402d 100644 --- a/linux_osc/.settings/language.settings.xml +++ b/linux_osc/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_dmx_monitor/.settings/language.settings.xml b/opi_dmx_monitor/.settings/language.settings.xml index f59168be8..9d4402bc6 100644 --- a/opi_dmx_monitor/.settings/language.settings.xml +++ b/opi_dmx_monitor/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/opi_dmx_monitor/include/software_version.h b/opi_dmx_monitor/include/software_version.h index 1e6e3d163..3e246e5df 100644 --- a/opi_dmx_monitor/include/software_version.h +++ b/opi_dmx_monitor/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.7"; +constexpr char SOFTWARE_VERSION[] = "2.8"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_dmx_usb_pro/.settings/language.settings.xml b/opi_dmx_usb_pro/.settings/language.settings.xml index acb67b46e..595c3c763 100644 --- a/opi_dmx_usb_pro/.settings/language.settings.xml +++ b/opi_dmx_usb_pro/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_dmx_usb_pro/include/software_version.h b/opi_dmx_usb_pro/include/software_version.h index 3e246e5df..5d0ab9767 100644 --- a/opi_dmx_usb_pro/include/software_version.h +++ b/opi_dmx_usb_pro/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.8"; +constexpr char SOFTWARE_VERSION[] = "2.9"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_dmx/.settings/language.settings.xml b/opi_emac_artnet_dmx/.settings/language.settings.xml index 1181ae0f1..1114a7306 100644 --- a/opi_emac_artnet_dmx/.settings/language.settings.xml +++ b/opi_emac_artnet_dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_dmx/include/software_version.h b/opi_emac_artnet_dmx/include/software_version.h index f36d12ec5..5562eb079 100644 --- a/opi_emac_artnet_dmx/include/software_version.h +++ b/opi_emac_artnet_dmx/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "4.7"; +constexpr char SOFTWARE_VERSION[] = "4.8"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_dmx_multi/.settings/language.settings.xml b/opi_emac_artnet_dmx_multi/.settings/language.settings.xml index 1181ae0f1..1114a7306 100644 --- a/opi_emac_artnet_dmx_multi/.settings/language.settings.xml +++ b/opi_emac_artnet_dmx_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_dmx_multi/include/software_version.h b/opi_emac_artnet_dmx_multi/include/software_version.h index 03b15753c..f9b0c9c21 100644 --- a/opi_emac_artnet_dmx_multi/include/software_version.h +++ b/opi_emac_artnet_dmx_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "4.0"; +constexpr char SOFTWARE_VERSION[] = "4.1"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_monitor/.settings/language.settings.xml b/opi_emac_artnet_monitor/.settings/language.settings.xml index 1181ae0f1..1114a7306 100644 --- a/opi_emac_artnet_monitor/.settings/language.settings.xml +++ b/opi_emac_artnet_monitor/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_monitor/firmware/main.cpp b/opi_emac_artnet_monitor/firmware/main.cpp index dc14bbd34..8ec74a7b3 100644 --- a/opi_emac_artnet_monitor/firmware/main.cpp +++ b/opi_emac_artnet_monitor/firmware/main.cpp @@ -92,8 +92,6 @@ int main() { console_set_fg_color(CONSOLE_WHITE); console_set_top_row(2); - - NtpClient ntpClient; ntpClient.Start(); ntpClient.Print(); diff --git a/opi_emac_artnet_monitor/include/software_version.h b/opi_emac_artnet_monitor/include/software_version.h index 613f7331d..a6c2bcd99 100644 --- a/opi_emac_artnet_monitor/include/software_version.h +++ b/opi_emac_artnet_monitor/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.1"; +constexpr char SOFTWARE_VERSION[] = "3.2"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_pixel/.settings/language.settings.xml b/opi_emac_artnet_pixel/.settings/language.settings.xml index 687bfa1b8..0ca9813fe 100644 --- a/opi_emac_artnet_pixel/.settings/language.settings.xml +++ b/opi_emac_artnet_pixel/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_pixel/include/software_version.h b/opi_emac_artnet_pixel/include/software_version.h index 5562eb079..7ec209076 100644 --- a/opi_emac_artnet_pixel/include/software_version.h +++ b/opi_emac_artnet_pixel/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "4.8"; +constexpr char SOFTWARE_VERSION[] = "4.9"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_pixel_dmx/.settings/language.settings.xml b/opi_emac_artnet_pixel_dmx/.settings/language.settings.xml index 6df7f0b3a..f506b2d4b 100755 --- a/opi_emac_artnet_pixel_dmx/.settings/language.settings.xml +++ b/opi_emac_artnet_pixel_dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_pixel_dmx/include/software_version.h b/opi_emac_artnet_pixel_dmx/include/software_version.h index 767352b85..87675180e 100644 --- a/opi_emac_artnet_pixel_dmx/include/software_version.h +++ b/opi_emac_artnet_pixel_dmx/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.2"; +constexpr char SOFTWARE_VERSION[] = "2.3"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_pixel_dmx_multi/.settings/language.settings.xml b/opi_emac_artnet_pixel_dmx_multi/.settings/language.settings.xml index 33b55b219..66ad31a18 100755 --- a/opi_emac_artnet_pixel_dmx_multi/.settings/language.settings.xml +++ b/opi_emac_artnet_pixel_dmx_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_pixel_dmx_multi/include/software_version.h b/opi_emac_artnet_pixel_dmx_multi/include/software_version.h index 70a7f41cb..6208c6b76 100644 --- a/opi_emac_artnet_pixel_dmx_multi/include/software_version.h +++ b/opi_emac_artnet_pixel_dmx_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.2"; +constexpr char SOFTWARE_VERSION[] = "2.3"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_pixel_multi/.settings/language.settings.xml b/opi_emac_artnet_pixel_multi/.settings/language.settings.xml index 072b44258..388ff4ff2 100644 --- a/opi_emac_artnet_pixel_multi/.settings/language.settings.xml +++ b/opi_emac_artnet_pixel_multi/.settings/language.settings.xml @@ -4,8 +4,8 @@ - - + + diff --git a/opi_emac_artnet_pixel_multi/include/software_version.h b/opi_emac_artnet_pixel_multi/include/software_version.h index 2b5c09491..d25e610ac 100644 --- a/opi_emac_artnet_pixel_multi/include/software_version.h +++ b/opi_emac_artnet_pixel_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.3"; +constexpr char SOFTWARE_VERSION[] = "3.4"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_rdm_l6470/.settings/language.settings.xml b/opi_emac_artnet_rdm_l6470/.settings/language.settings.xml index 1181ae0f1..1114a7306 100644 --- a/opi_emac_artnet_rdm_l6470/.settings/language.settings.xml +++ b/opi_emac_artnet_rdm_l6470/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_rdm_l6470/include/software_version.h b/opi_emac_artnet_rdm_l6470/include/software_version.h index 5d0ab9767..d62e76e4b 100644 --- a/opi_emac_artnet_rdm_l6470/include/software_version.h +++ b/opi_emac_artnet_rdm_l6470/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.9"; +constexpr char SOFTWARE_VERSION[] = "3.0"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_rdm_pca9685/.settings/language.settings.xml b/opi_emac_artnet_rdm_pca9685/.settings/language.settings.xml index 44ab003c7..180d32e4b 100755 --- a/opi_emac_artnet_rdm_pca9685/.settings/language.settings.xml +++ b/opi_emac_artnet_rdm_pca9685/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_rdm_pca9685/include/software_version.h b/opi_emac_artnet_rdm_pca9685/include/software_version.h index fb86beff7..54ea749d2 100755 --- a/opi_emac_artnet_rdm_pca9685/include/software_version.h +++ b/opi_emac_artnet_rdm_pca9685/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "1.4"; +constexpr char SOFTWARE_VERSION[] = "1.5"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_artnet_serial/.settings/language.settings.xml b/opi_emac_artnet_serial/.settings/language.settings.xml index 1181ae0f1..1114a7306 100644 --- a/opi_emac_artnet_serial/.settings/language.settings.xml +++ b/opi_emac_artnet_serial/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_artnet_serial/include/software_version.h b/opi_emac_artnet_serial/include/software_version.h index 661f54433..1e13010f5 100644 --- a/opi_emac_artnet_serial/include/software_version.h +++ b/opi_emac_artnet_serial/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.6"; +constexpr char SOFTWARE_VERSION[] = "2.7"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_ddp_pixel_dmx_multi/.settings/language.settings.xml b/opi_emac_ddp_pixel_dmx_multi/.settings/language.settings.xml index 2ee77a4e4..43c43544f 100755 --- a/opi_emac_ddp_pixel_dmx_multi/.settings/language.settings.xml +++ b/opi_emac_ddp_pixel_dmx_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_ddp_pixel_dmx_multi/include/software_version.h b/opi_emac_ddp_pixel_dmx_multi/include/software_version.h index c5152360d..767352b85 100644 --- a/opi_emac_ddp_pixel_dmx_multi/include/software_version.h +++ b/opi_emac_ddp_pixel_dmx_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.1"; +constexpr char SOFTWARE_VERSION[] = "2.2"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_ddp_pixel_multi/.settings/language.settings.xml b/opi_emac_ddp_pixel_multi/.settings/language.settings.xml index 2ee77a4e4..43c43544f 100755 --- a/opi_emac_ddp_pixel_multi/.settings/language.settings.xml +++ b/opi_emac_ddp_pixel_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_ddp_pixel_multi/include/software_version.h b/opi_emac_ddp_pixel_multi/include/software_version.h index 767352b85..87675180e 100644 --- a/opi_emac_ddp_pixel_multi/include/software_version.h +++ b/opi_emac_ddp_pixel_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.2"; +constexpr char SOFTWARE_VERSION[] = "2.3"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_artnet/.settings/language.settings.xml b/opi_emac_e131_artnet/.settings/language.settings.xml index 18c8d9d16..b28610ce6 100644 --- a/opi_emac_e131_artnet/.settings/language.settings.xml +++ b/opi_emac_e131_artnet/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_artnet/include/software_version.h b/opi_emac_e131_artnet/include/software_version.h index 80dc9877d..b6fed7c5a 100644 --- a/opi_emac_e131_artnet/include/software_version.h +++ b/opi_emac_e131_artnet/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.8"; +constexpr char SOFTWARE_VERSION[] = "2.9"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_dmx/.settings/language.settings.xml b/opi_emac_e131_dmx/.settings/language.settings.xml index 18c8d9d16..b28610ce6 100644 --- a/opi_emac_e131_dmx/.settings/language.settings.xml +++ b/opi_emac_e131_dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_dmx/include/software_version.h b/opi_emac_e131_dmx/include/software_version.h index a5522bb98..3fd825717 100644 --- a/opi_emac_e131_dmx/include/software_version.h +++ b/opi_emac_e131_dmx/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "4.3"; +constexpr char SOFTWARE_VERSION[] = "4.4"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_dmx_multi/.settings/language.settings.xml b/opi_emac_e131_dmx_multi/.settings/language.settings.xml index 18c8d9d16..b28610ce6 100644 --- a/opi_emac_e131_dmx_multi/.settings/language.settings.xml +++ b/opi_emac_e131_dmx_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_dmx_multi/include/software_version.h b/opi_emac_e131_dmx_multi/include/software_version.h index d25e610ac..c1088d59a 100644 --- a/opi_emac_e131_dmx_multi/include/software_version.h +++ b/opi_emac_e131_dmx_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.4"; +constexpr char SOFTWARE_VERSION[] = "3.5"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_monitor/.settings/language.settings.xml b/opi_emac_e131_monitor/.settings/language.settings.xml index 18c8d9d16..b28610ce6 100644 --- a/opi_emac_e131_monitor/.settings/language.settings.xml +++ b/opi_emac_e131_monitor/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_monitor/include/software_version.h b/opi_emac_e131_monitor/include/software_version.h index 613f7331d..a6c2bcd99 100644 --- a/opi_emac_e131_monitor/include/software_version.h +++ b/opi_emac_e131_monitor/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.1"; +constexpr char SOFTWARE_VERSION[] = "3.2"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_pixel/.settings/language.settings.xml b/opi_emac_e131_pixel/.settings/language.settings.xml index f98e6b990..eff48f0b7 100644 --- a/opi_emac_e131_pixel/.settings/language.settings.xml +++ b/opi_emac_e131_pixel/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_pixel/include/software_version.h b/opi_emac_e131_pixel/include/software_version.h index 3fd825717..144db8a79 100644 --- a/opi_emac_e131_pixel/include/software_version.h +++ b/opi_emac_e131_pixel/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "4.4"; +constexpr char SOFTWARE_VERSION[] = "4.5"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_pixel_dmx/.settings/language.settings.xml b/opi_emac_e131_pixel_dmx/.settings/language.settings.xml index afc2c550e..53a5fc57e 100755 --- a/opi_emac_e131_pixel_dmx/.settings/language.settings.xml +++ b/opi_emac_e131_pixel_dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_pixel_dmx/include/software_version.h b/opi_emac_e131_pixel_dmx/include/software_version.h index 767352b85..87675180e 100644 --- a/opi_emac_e131_pixel_dmx/include/software_version.h +++ b/opi_emac_e131_pixel_dmx/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.2"; +constexpr char SOFTWARE_VERSION[] = "2.3"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_pixel_dmx_multi/.settings/language.settings.xml b/opi_emac_e131_pixel_dmx_multi/.settings/language.settings.xml index 9206d991a..0a0ed661b 100755 --- a/opi_emac_e131_pixel_dmx_multi/.settings/language.settings.xml +++ b/opi_emac_e131_pixel_dmx_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_pixel_dmx_multi/include/software_version.h b/opi_emac_e131_pixel_dmx_multi/include/software_version.h index 767352b85..87675180e 100644 --- a/opi_emac_e131_pixel_dmx_multi/include/software_version.h +++ b/opi_emac_e131_pixel_dmx_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.2"; +constexpr char SOFTWARE_VERSION[] = "2.3"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_e131_pixel_multi/.settings/language.settings.xml b/opi_emac_e131_pixel_multi/.settings/language.settings.xml index f6b801d90..e8869aef1 100644 --- a/opi_emac_e131_pixel_multi/.settings/language.settings.xml +++ b/opi_emac_e131_pixel_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_e131_pixel_multi/include/software_version.h b/opi_emac_e131_pixel_multi/include/software_version.h index 2b5c09491..d25e610ac 100644 --- a/opi_emac_e131_pixel_multi/include/software_version.h +++ b/opi_emac_e131_pixel_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.3"; +constexpr char SOFTWARE_VERSION[] = "3.4"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_llrp_tftpd/.settings/language.settings.xml b/opi_emac_llrp_tftpd/.settings/language.settings.xml index 85b17cef6..6e6961a6a 100644 --- a/opi_emac_llrp_tftpd/.settings/language.settings.xml +++ b/opi_emac_llrp_tftpd/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_llrp_tftpd/firmware/main.cpp b/opi_emac_llrp_tftpd/firmware/main.cpp index 3858e14e5..5364ff7b6 100755 --- a/opi_emac_llrp_tftpd/firmware/main.cpp +++ b/opi_emac_llrp_tftpd/firmware/main.cpp @@ -76,7 +76,6 @@ int main() { FlashCodeInstall spiFlashInstall; fw.Print("RDMNet LLRP device only"); - NtpClient ntpClient; ntpClient.Start(); diff --git a/opi_emac_llrp_tftpd/include/software_version.h b/opi_emac_llrp_tftpd/include/software_version.h index 5d0ab9767..d62e76e4b 100755 --- a/opi_emac_llrp_tftpd/include/software_version.h +++ b/opi_emac_llrp_tftpd/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.9"; +constexpr char SOFTWARE_VERSION[] = "3.0"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_ltc_smpte/.settings/language.settings.xml b/opi_emac_ltc_smpte/.settings/language.settings.xml index acb67b46e..595c3c763 100644 --- a/opi_emac_ltc_smpte/.settings/language.settings.xml +++ b/opi_emac_ltc_smpte/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_ltc_smpte/include/software_version.h b/opi_emac_ltc_smpte/include/software_version.h index 1b93e9d9a..fa4c22cf4 100644 --- a/opi_emac_ltc_smpte/include/software_version.h +++ b/opi_emac_ltc_smpte/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "4.6"; +constexpr char SOFTWARE_VERSION[] = "4.7"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_osc_client/.settings/language.settings.xml b/opi_emac_osc_client/.settings/language.settings.xml index 41450214c..ab3736ed8 100644 --- a/opi_emac_osc_client/.settings/language.settings.xml +++ b/opi_emac_osc_client/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_osc_client/include/software_version.h b/opi_emac_osc_client/include/software_version.h index d62e76e4b..613f7331d 100644 --- a/opi_emac_osc_client/include/software_version.h +++ b/opi_emac_osc_client/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.0"; +constexpr char SOFTWARE_VERSION[] = "3.1"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_osc_dmx/.settings/language.settings.xml b/opi_emac_osc_dmx/.settings/language.settings.xml index 41450214c..ab3736ed8 100644 --- a/opi_emac_osc_dmx/.settings/language.settings.xml +++ b/opi_emac_osc_dmx/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_osc_dmx/include/software_version.h b/opi_emac_osc_dmx/include/software_version.h index d25e610ac..c1088d59a 100644 --- a/opi_emac_osc_dmx/include/software_version.h +++ b/opi_emac_osc_dmx/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.4"; +constexpr char SOFTWARE_VERSION[] = "3.5"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_osc_monitor/.settings/language.settings.xml b/opi_emac_osc_monitor/.settings/language.settings.xml index 41450214c..ab3736ed8 100644 --- a/opi_emac_osc_monitor/.settings/language.settings.xml +++ b/opi_emac_osc_monitor/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_osc_monitor/include/software_version.h b/opi_emac_osc_monitor/include/software_version.h index 613f7331d..a6c2bcd99 100644 --- a/opi_emac_osc_monitor/include/software_version.h +++ b/opi_emac_osc_monitor/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.1"; +constexpr char SOFTWARE_VERSION[] = "3.2"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_osc_pixel/.settings/language.settings.xml b/opi_emac_osc_pixel/.settings/language.settings.xml index 41450214c..ab3736ed8 100644 --- a/opi_emac_osc_pixel/.settings/language.settings.xml +++ b/opi_emac_osc_pixel/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_osc_pixel/include/software_version.h b/opi_emac_osc_pixel/include/software_version.h index 4c9ec8e65..2b6aa83e3 100644 --- a/opi_emac_osc_pixel/include/software_version.h +++ b/opi_emac_osc_pixel/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.6"; +constexpr char SOFTWARE_VERSION[] = "3.7"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_pp_pixel_multi/.settings/language.settings.xml b/opi_emac_pp_pixel_multi/.settings/language.settings.xml index 2ee77a4e4..43c43544f 100755 --- a/opi_emac_pp_pixel_multi/.settings/language.settings.xml +++ b/opi_emac_pp_pixel_multi/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_pp_pixel_multi/include/software_version.h b/opi_emac_pp_pixel_multi/include/software_version.h index 1eda41ac5..61587ab68 100644 --- a/opi_emac_pp_pixel_multi/include/software_version.h +++ b/opi_emac_pp_pixel_multi/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "1.8"; +constexpr char SOFTWARE_VERSION[] = "1.9"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_showfile_artnet/.settings/language.settings.xml b/opi_emac_showfile_artnet/.settings/language.settings.xml index 8cc4991c1..2ebf545f9 100755 --- a/opi_emac_showfile_artnet/.settings/language.settings.xml +++ b/opi_emac_showfile_artnet/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_showfile_artnet/include/software_version.h b/opi_emac_showfile_artnet/include/software_version.h index 98022402d..2ecf18fe7 100755 --- a/opi_emac_showfile_artnet/include/software_version.h +++ b/opi_emac_showfile_artnet/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "1.3"; +constexpr char SOFTWARE_VERSION[] = "1.4"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_emac_showfile_e131/.settings/language.settings.xml b/opi_emac_showfile_e131/.settings/language.settings.xml index 8cc4991c1..2ebf545f9 100755 --- a/opi_emac_showfile_e131/.settings/language.settings.xml +++ b/opi_emac_showfile_e131/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_emac_showfile_e131/include/software_version.h b/opi_emac_showfile_e131/include/software_version.h index 98022402d..2ecf18fe7 100755 --- a/opi_emac_showfile_e131/include/software_version.h +++ b/opi_emac_showfile_e131/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "1.3"; +constexpr char SOFTWARE_VERSION[] = "1.4"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_midi_monitor/.settings/language.settings.xml b/opi_midi_monitor/.settings/language.settings.xml index d75828d83..19b0ce1b8 100644 --- a/opi_midi_monitor/.settings/language.settings.xml +++ b/opi_midi_monitor/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_midi_monitor/include/software_version.h b/opi_midi_monitor/include/software_version.h index 5d0ab9767..d62e76e4b 100644 --- a/opi_midi_monitor/include/software_version.h +++ b/opi_midi_monitor/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.9"; +constexpr char SOFTWARE_VERSION[] = "3.0"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_rdm_responder/.settings/language.settings.xml b/opi_rdm_responder/.settings/language.settings.xml index e4dd18efe..490d0b48a 100644 --- a/opi_rdm_responder/.settings/language.settings.xml +++ b/opi_rdm_responder/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_rdm_responder/include/software_version.h b/opi_rdm_responder/include/software_version.h index f3fd1eefc..c1b1a6d75 100644 --- a/opi_rdm_responder/include/software_version.h +++ b/opi_rdm_responder/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "3.0"; +constexpr char SOFTWARE_VERSION[] = "3.1"; #endif /* SOFTWARE_VERSION_H_ */ diff --git a/opi_rdm_responder_l6470/.settings/language.settings.xml b/opi_rdm_responder_l6470/.settings/language.settings.xml index 97757dcde..82bc9a37a 100644 --- a/opi_rdm_responder_l6470/.settings/language.settings.xml +++ b/opi_rdm_responder_l6470/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/opi_rdm_responder_l6470/include/software_version.h b/opi_rdm_responder_l6470/include/software_version.h index 3e246e5df..5d0ab9767 100644 --- a/opi_rdm_responder_l6470/include/software_version.h +++ b/opi_rdm_responder_l6470/include/software_version.h @@ -26,6 +26,6 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -constexpr char SOFTWARE_VERSION[] = "2.8"; +constexpr char SOFTWARE_VERSION[] = "2.9"; #endif /* SOFTWARE_VERSION_H_ */