mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-15 00:24:19 +00:00
BLOCKS: Allow factory reset commands
This commit is contained in:
parent
faf8742a6c
commit
82019acae7
7 changed files with 418 additions and 465 deletions
|
|
@ -267,50 +267,22 @@ struct BlockConfigManager
|
|||
// Set Block Configuration
|
||||
void setBlockConfig (ConfigItemId item, int32 value)
|
||||
{
|
||||
HostPacketBuilder<32> packet;
|
||||
|
||||
packet.writePacketSysexHeaderBytes (deviceIndex);
|
||||
packet.addConfigSetMessage (item, value);
|
||||
packet.writePacketSysexFooter();
|
||||
|
||||
if (deviceConnection != nullptr)
|
||||
deviceConnection->sendMessageToDevice (packet.getData(), (size_t) packet.size());
|
||||
buildAndSendPacket ([item, value] (HostPacketBuilder<32>& p) { p.addConfigSetMessage (item, value); });
|
||||
}
|
||||
|
||||
void requestBlockConfig (ConfigItemId item)
|
||||
{
|
||||
HostPacketBuilder<32> packet;
|
||||
|
||||
packet.writePacketSysexHeaderBytes (deviceIndex);
|
||||
packet.addRequestMessage (item);
|
||||
packet.writePacketSysexFooter();
|
||||
|
||||
if (deviceConnection != nullptr)
|
||||
deviceConnection->sendMessageToDevice(packet.getData(), (size_t) packet.size());
|
||||
buildAndSendPacket ([item] (HostPacketBuilder<32>& p) { p.addRequestMessage (item); });
|
||||
}
|
||||
|
||||
void requestFactoryConfigSync()
|
||||
{
|
||||
HostPacketBuilder<32> packet;
|
||||
|
||||
packet.writePacketSysexHeaderBytes(deviceIndex);
|
||||
packet.addRequestFactorySyncMessage();
|
||||
packet.writePacketSysexFooter();
|
||||
|
||||
if (deviceConnection != nullptr)
|
||||
deviceConnection->sendMessageToDevice(packet.getData(), (size_t) packet.size());
|
||||
buildAndSendPacket ([] (HostPacketBuilder<32>& p) { p.addRequestFactorySyncMessage(); });
|
||||
}
|
||||
|
||||
void requestUserConfigSync()
|
||||
{
|
||||
HostPacketBuilder<32> packet;
|
||||
|
||||
packet.writePacketSysexHeaderBytes(deviceIndex);
|
||||
packet.addRequestUserSyncMessage();
|
||||
packet.writePacketSysexFooter();
|
||||
|
||||
if (deviceConnection != nullptr)
|
||||
deviceConnection->sendMessageToDevice(packet.getData(), (size_t) packet.size());
|
||||
buildAndSendPacket ([] (HostPacketBuilder<32>& p) { p.addRequestUserSyncMessage(); });
|
||||
}
|
||||
|
||||
void handleConfigUpdateMessage (int32 item, int32 value, int32 min, int32 max)
|
||||
|
|
@ -349,8 +321,21 @@ private:
|
|||
return false;
|
||||
}
|
||||
|
||||
TopologyIndex deviceIndex;
|
||||
PhysicalTopologySource::DeviceConnection* deviceConnection;
|
||||
template<typename PacketBuildFn>
|
||||
void buildAndSendPacket (PacketBuildFn buildFn)
|
||||
{
|
||||
if (deviceConnection == nullptr)
|
||||
return;
|
||||
|
||||
HostPacketBuilder<32> packet;
|
||||
packet.writePacketSysexHeaderBytes (deviceIndex);
|
||||
buildFn (packet);
|
||||
packet.writePacketSysexFooter();
|
||||
deviceConnection->sendMessageToDevice (packet.getData(), (size_t) packet.size());
|
||||
}
|
||||
|
||||
TopologyIndex deviceIndex {};
|
||||
PhysicalTopologySource::DeviceConnection* deviceConnection {};
|
||||
};
|
||||
|
||||
} // namespace juce
|
||||
|
|
|
|||
|
|
@ -28,6 +28,11 @@
|
|||
#endif
|
||||
#else
|
||||
|
||||
namespace juce
|
||||
{
|
||||
#include "littlefoot/juce_LittleFootRemoteHeap.h"
|
||||
}
|
||||
|
||||
#include "protocol/juce_BitPackingUtilities.h"
|
||||
#include "protocol/juce_BlocksProtocolDefinitions.h"
|
||||
#include "protocol/juce_HostPacketDecoder.h"
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@ namespace juce
|
|||
{
|
||||
#include "littlefoot/juce_LittleFootRunner.h"
|
||||
#include "littlefoot/juce_LittleFootCompiler.h"
|
||||
#include "littlefoot/juce_LittleFootRemoteHeap.h"
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
#define JUCE_DUMP_LITTLEFOOT_HEAP_STATUS 0
|
||||
|
||||
namespace littlefoot
|
||||
{
|
||||
|
||||
|
|
@ -264,7 +266,7 @@ private:
|
|||
|
||||
void dumpStatus()
|
||||
{
|
||||
#if DUMP_LITTLEFOOT_HEAP_STATUS
|
||||
#if JUCE_DUMP_LITTLEFOOT_HEAP_STATUS
|
||||
int differences = 0;
|
||||
constexpr int diffLen = 50;
|
||||
char areas[diffLen + 1] = { 0 };
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ struct HostPacketBuilder
|
|||
if (! data.hasCapacity (MessageType::bits))
|
||||
return false;
|
||||
|
||||
writeMessageType(MessageFromHost::factoryReset);
|
||||
writeMessageType (MessageFromHost::factoryReset);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -290,7 +290,7 @@ struct HostPacketBuilder
|
|||
if (! data.hasCapacity (MessageType::bits))
|
||||
return false;
|
||||
|
||||
writeMessageType(MessageFromHost::blockReset);
|
||||
writeMessageType (MessageFromHost::blockReset);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@ struct HostPacketDecoder
|
|||
auto packetTimestamp = reader.read<PacketTimestamp>();
|
||||
deviceIndex &= 63; // top bit is used as a direction indicator
|
||||
|
||||
bool topologyChanged = false;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
auto nextMessageType = getMessageType (reader);
|
||||
|
|
@ -58,14 +56,9 @@ struct HostPacketDecoder
|
|||
if (nextMessageType == 0)
|
||||
break;
|
||||
|
||||
topologyChanged |= messageIncludesTopologyChange (nextMessageType);
|
||||
|
||||
if (! processNextMessage (handler, reader, (MessageFromDevice) nextMessageType, deviceIndex, packetTimestamp))
|
||||
break;
|
||||
}
|
||||
|
||||
if (topologyChanged)
|
||||
handler.notifyDetectorTopologyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -77,22 +70,6 @@ struct HostPacketDecoder
|
|||
return reader.read<MessageType>().get();
|
||||
}
|
||||
|
||||
static bool messageIncludesTopologyChange (uint32 messageType)
|
||||
{
|
||||
switch ((MessageFromDevice) messageType)
|
||||
{
|
||||
case MessageFromDevice::deviceTopology:
|
||||
case MessageFromDevice::deviceTopologyExtend:
|
||||
case MessageFromDevice::deviceTopologyEnd:
|
||||
case MessageFromDevice::deviceVersion:
|
||||
case MessageFromDevice::deviceName:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool processNextMessage (Handler& handler, Packed7BitArrayReader& reader,
|
||||
MessageFromDevice messageType, TopologyIndex deviceIndex,
|
||||
PacketTimestamp packetTimestamp)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue