diff --git a/modules/juce_blocks_basics/blocks/juce_LEDGrid.h b/modules/juce_blocks_basics/blocks/juce_LEDGrid.h index a93772ffcc..937383504d 100644 --- a/modules/juce_blocks_basics/blocks/juce_LEDGrid.h +++ b/modules/juce_blocks_basics/blocks/juce_LEDGrid.h @@ -132,6 +132,9 @@ public: /** Gets a byte from the heap. */ virtual uint8 getDataByte (size_t offset) = 0; + /** Sets the current program as the block's default state. */ + virtual void saveProgramAsDefault() = 0; + //============================================================================== struct Renderer { diff --git a/modules/juce_blocks_basics/protocol/juce_BlocksProtocolDefinitions.h b/modules/juce_blocks_basics/protocol/juce_BlocksProtocolDefinitions.h index abfbd532b4..dd0ebeb33f 100644 --- a/modules/juce_blocks_basics/protocol/juce_BlocksProtocolDefinitions.h +++ b/modules/juce_blocks_basics/protocol/juce_BlocksProtocolDefinitions.h @@ -183,7 +183,8 @@ enum DeviceCommands requestTopologyMessage = 0x01, endAPIMode = 0x02, ping = 0x03, - debugMode = 0x04 + debugMode = 0x04, + saveProgramAsDefault = 0x05 }; using DeviceCommand = IntegerWithBitSize<9>; diff --git a/modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.cpp b/modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.cpp index c9ae57de3a..d5b84deb74 100644 --- a/modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.cpp +++ b/modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.cpp @@ -1162,6 +1162,11 @@ struct PhysicalTopologySource::Internal } } + void saveProgramAsDefault() + { + sendCommandMessage (BlocksProtocol::saveProgramAsDefault); + } + void handleSharedDataACK (uint32 packetCounter) noexcept { pingFromDevice(); @@ -1644,6 +1649,7 @@ struct PhysicalTopologySource::Internal Program* getProgram() const override { return program.get(); } void sendProgramEvent (const ProgramEventMessage& m) override { blockImpl.sendProgramEvent (m); } + void saveProgramAsDefault() override { blockImpl.saveProgramAsDefault(); } void setDataByte (size_t offset, uint8 value) override { blockImpl.setDataByte (offset, value); } void setDataBytes (size_t offset, const void* data, size_t num) override { blockImpl.setDataBytes (offset, data, num); } void setDataBits (uint32 startBit, uint32 numBits, uint32 value) override { blockImpl.setDataBits (startBit, numBits, value); }