rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
tunerstudio_commands.cpp
Go to the documentation of this file.
1#include "pch.h"
2
3#include "tunerstudio_impl.h"
4#include "tunerstudio.h"
5#include "tunerstudio_io.h"
6
7#include "live_data.h"
8
9#include "status_loop.h"
10
11#if EFI_TUNER_STUDIO
12
14
16 return channelsRequestTimer.getElapsedSeconds();
17}
18
19/**
20 * @brief 'Output' command sends out a snapshot of current values
21 * Gauges refresh
22 */
23void TunerStudio::cmdOutputChannels(TsChannelBase* tsChannel, uint16_t offset, uint16_t count) {
24 if (offset + count > TS_TOTAL_OUTPUT_SIZE) {
25 efiPrintf("TS: Version Mismatch? Too much outputs requested offset=%d + count=%d/total=%d", offset, count,
26 TS_TOTAL_OUTPUT_SIZE);
27 sendErrorCode(tsChannel, TS_RESPONSE_OUT_OF_RANGE, "cmd_size");
28 return;
29 }
30
31 if (offset < BLOCKING_FACTOR) {
34 }
35
38 // this method is invoked too often to print any debug information
39 uint8_t * scratchBuffer = (uint8_t *)tsChannel->scratchBuffer;
40 /**
41 * collect data from all models
42 */
43 FragmentList list = getLiveDataFragments();
44
45 uint32_t crc = tsChannel->writePacketHeader(TS_RESPONSE_OK, count);
46
47 while (count) {
48 size_t chunkSize = minI(count, sizeof(tsChannel->scratchBuffer));
49 /**
50 * collect data from all models
51 */
52 size_t actualSize = copyRange(scratchBuffer, list, offset, chunkSize);
53 crc = tsChannel->writePacketBody(scratchBuffer, actualSize, crc);
54
55 count -= chunkSize;
56 offset += chunkSize;
57 }
58
59 tsChannel->writeCrcPacketTail(crc);
60}
61
62#endif // EFI_TUNER_STUDIO
TunerStudioOutputChannels outputChannels
Definition engine.h:113
char scratchBuffer[scratchBuffer_SIZE+30]
uint32_t writePacketHeader(const uint8_t responseCode, const size_t size)
uint32_t writePacketBody(const uint8_t *buf, const size_t size, uint32_t crc)
void writeCrcPacketTail(uint32_t crc)
void sendErrorCode(TsChannelBase *tsChannel, uint8_t code, const char *msg="")
void cmdOutputChannels(TsChannelBase *tsChannel, uint16_t offset, uint16_t count) override
'Output' command sends out a snapshot of current values Gauges refresh
static EngineAccessor engine
Definition engine.h:421
FragmentList getLiveDataFragments()
tunerstudio_counters_s tsState
void updateTunerStudioState()
uint16_t offset
Definition tunerstudio.h:0
uint16_t count
Definition tunerstudio.h:1
static Timer channelsRequestTimer
int getSecondsSinceChannelsRequest()