logging of live data structs was: data points #3614

YES! we now expose fragments
This commit is contained in:
rusefillc 2022-04-14 22:41:46 -04:00
parent b718d059ac
commit f0a055345e
3 changed files with 19 additions and 5 deletions

View File

@ -49,7 +49,15 @@ void TunerStudio::cmdOutputChannels(TsChannelBase* tsChannel, uint16_t offset, u
updateTunerStudioState(); updateTunerStudioState();
tsChannel->assertPacketSize(count, false); tsChannel->assertPacketSize(count, false);
// this method is invoked too often to print any debug information // this method is invoked too often to print any debug information
tsChannel->writeCrcPacketSmall(TS_RESPONSE_OK, reinterpret_cast<const uint8_t*>(&engine->outputChannels) + offset, count); uint8_t * scratchBuffer = (uint8_t *)tsChannel->scratchBuffer;
/**
* collect data from all models
*/
copyRange(scratchBuffer + 3,
getFragments(), getFragmentsCount(),
offset, count);
tsChannel->crcAndWriteBuffer(TS_RESPONSE_OK, count);
} }
#endif // EFI_TUNER_STUDIO #endif // EFI_TUNER_STUDIO

View File

@ -19,11 +19,11 @@ size_t TsChannelBase::read(uint8_t* buffer, size_t size) {
} }
#endif #endif
void TsChannelBase::writeCrcPacketSmall(uint8_t responseCode, const uint8_t* buf, size_t size) { void TsChannelBase::copyAndWriteSmallCrcPacket(uint8_t responseCode, const uint8_t* buf, size_t size) {
auto scratchBuffer = this->scratchBuffer; auto scratchBuffer = this->scratchBuffer;
// don't transmit too large a buffer // don't transmit too large a buffer
efiAssertVoid(OBD_PCM_Processor_Fault, size <= BLOCKING_FACTOR + 7, "writeCrcPacketSmall tried to transmit too large a packet") efiAssertVoid(OBD_PCM_Processor_Fault, size <= BLOCKING_FACTOR + 7, "copyAndWriteSmallCrcPacket tried to transmit too large a packet")
// If transmitting data, copy it in to place in the scratch buffer // If transmitting data, copy it in to place in the scratch buffer
// We want to prevent the data changing itself (higher priority threads could write // We want to prevent the data changing itself (higher priority threads could write
@ -33,6 +33,11 @@ void TsChannelBase::writeCrcPacketSmall(uint8_t responseCode, const uint8_t* buf
memcpy(scratchBuffer + 3, buf, size); memcpy(scratchBuffer + 3, buf, size);
} }
crcAndWriteBuffer(responseCode, size);
}
void TsChannelBase::crcAndWriteBuffer(uint8_t responseCode, size_t size) {
auto scratchBuffer = this->scratchBuffer;
// Index 0/1 = packet size (big endian) // Index 0/1 = packet size (big endian)
*(uint16_t*)scratchBuffer = SWAP_UINT16(size + 1); *(uint16_t*)scratchBuffer = SWAP_UINT16(size + 1);
// Index 2 = response code // Index 2 = response code
@ -103,7 +108,7 @@ void TsChannelBase::writeCrcPacket(uint8_t responseCode, const uint8_t* buf, siz
writeCrcPacketLarge(responseCode, buf, size); writeCrcPacketLarge(responseCode, buf, size);
} else { } else {
// for small packets we use a buffer for CRC calculation // for small packets we use a buffer for CRC calculation
writeCrcPacketSmall(responseCode, buf, size); copyAndWriteSmallCrcPacket(responseCode, buf, size);
} }
} }

View File

@ -59,7 +59,8 @@ public:
const char *name; const char *name;
void assertPacketSize(size_t size, bool allowLongPackets); void assertPacketSize(size_t size, bool allowLongPackets);
void writeCrcPacketSmall(uint8_t responseCode, const uint8_t* buf, size_t size); void crcAndWriteBuffer(uint8_t responseCode, size_t size);
void copyAndWriteSmallCrcPacket(uint8_t responseCode, const uint8_t* buf, size_t size);
private: private:
void writeCrcPacketLarge(uint8_t responseCode, const uint8_t* buf, size_t size); void writeCrcPacketLarge(uint8_t responseCode, const uint8_t* buf, size_t size);