JUCE  v5.4.1-191-g0ab5e696f
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
littlefoot::LittleFootRemoteHeap< ImplementationClass > Struct Template Reference

This class manages the synchronisation of a remote block of heap memory used by a littlefoot program running on a block. More...

#include <juce_LittleFootRemoteHeap.h>

Collaboration diagram for littlefoot::LittleFootRemoteHeap< ImplementationClass >:

Classes

struct  ChangeMessage
 
struct  Diff
 

Public Member Functions

 LittleFootRemoteHeap (uint32 blockSizeToUse) noexcept
 
void clear () noexcept
 
uint8 getByte (size_t offset) noexcept
 
void handleACKFromDevice (ImplementationClass &bi, uint32 packetIndex) noexcept
 
void invalidateData () noexcept
 
bool isFullySynced () const noexcept
 
bool isProgramLoaded () noexcept
 
void resetDataRangeToUnknown (size_t offset, size_t size) noexcept
 
void resetDeviceStateToUnknown ()
 
void sendChanges (ImplementationClass &bi, bool forceSend)
 
void setBits (uint32 startBit, uint32 numBits, uint32 value) noexcept
 
void setByte (size_t offset, uint8 value) noexcept
 
void setBytes (size_t offset, const uint8 *data, size_t num) noexcept
 

Static Public Member Functions

static bool isAllZero (const uint8 *data, size_t size) noexcept
 

Public Attributes

const size_t blockSize
 

Static Public Attributes

static constexpr uint16 unknownByte = 0x100
 

Private Member Functions

void dumpStatus ()
 
uint16getLatestExpectedDataState () noexcept
 
int getTotalSizeOfMessagesSent () const noexcept
 

Private Attributes

uint16 deviceState [ImplementationClass::maxBlockSize] = { 0 }
 
uint32 lastPacketIndexReceived = 0
 
OwnedArray< ChangeMessagemessagesSent
 
bool needsSyncing = true
 
bool programLoaded = false
 
uint32 programSize = 0
 
bool programStateKnown = true
 
uint8 targetData [ImplementationClass::maxBlockSize] = { 0 }
 

Detailed Description

template<typename ImplementationClass>
struct littlefoot::LittleFootRemoteHeap< ImplementationClass >

This class manages the synchronisation of a remote block of heap memory used by a littlefoot program running on a block.

Data in the block can be changed by calling setByte, setBytes, setBits etc, and these changes will be flushed to the device when sendChanges is called.

{Blocks}

Constructor & Destructor Documentation

◆ LittleFootRemoteHeap()

template<typename ImplementationClass >
littlefoot::LittleFootRemoteHeap< ImplementationClass >::LittleFootRemoteHeap ( uint32  blockSizeToUse)
inlinenoexcept

Member Function Documentation

◆ clear()

◆ dumpStatus()

◆ getByte()

template<typename ImplementationClass >
uint8 littlefoot::LittleFootRemoteHeap< ImplementationClass >::getByte ( size_t  offset)
inlinenoexcept

◆ getLatestExpectedDataState()

◆ getTotalSizeOfMessagesSent()

template<typename ImplementationClass >
int littlefoot::LittleFootRemoteHeap< ImplementationClass >::getTotalSizeOfMessagesSent ( ) const
inlineprivatenoexcept

◆ handleACKFromDevice()

◆ invalidateData()

◆ isAllZero()

template<typename ImplementationClass >
static bool littlefoot::LittleFootRemoteHeap< ImplementationClass >::isAllZero ( const uint8 data,
size_t  size 
)
inlinestaticnoexcept

◆ isFullySynced()

template<typename ImplementationClass >
bool littlefoot::LittleFootRemoteHeap< ImplementationClass >::isFullySynced ( ) const
inlinenoexcept

◆ isProgramLoaded()

◆ resetDataRangeToUnknown()

template<typename ImplementationClass >
void littlefoot::LittleFootRemoteHeap< ImplementationClass >::resetDataRangeToUnknown ( size_t  offset,
size_t  size 
)
inlinenoexcept

◆ resetDeviceStateToUnknown()

◆ sendChanges()

◆ setBits()

◆ setByte()

◆ setBytes()

template<typename ImplementationClass >
void littlefoot::LittleFootRemoteHeap< ImplementationClass >::setBytes ( size_t  offset,
const uint8 data,
size_t  num 
)
inlinenoexcept

Member Data Documentation

◆ blockSize

◆ deviceState

◆ lastPacketIndexReceived

template<typename ImplementationClass >
uint32 littlefoot::LittleFootRemoteHeap< ImplementationClass >::lastPacketIndexReceived = 0
private

◆ messagesSent

◆ needsSyncing

◆ programLoaded

template<typename ImplementationClass >
bool littlefoot::LittleFootRemoteHeap< ImplementationClass >::programLoaded = false
private

◆ programSize

◆ programStateKnown

◆ targetData

◆ unknownByte

template<typename ImplementationClass >
constexpr uint16 littlefoot::LittleFootRemoteHeap< ImplementationClass >::unknownByte = 0x100
static

The documentation for this struct was generated from the following file: