Skip to content

Commit

Permalink
dlog fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
mvladic committed Oct 4, 2019
1 parent c24a6f8 commit 886897f
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 15 deletions.
3 changes: 3 additions & 0 deletions src/eez/apps/psu/conf_advanced.h
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,9 @@
/// Change to 1 if you want to add jitter column in DLOG file
#define CONF_DLOG_JITTER 0

/// During data logging call file.sync every N seconds
#define CONF_DLOG_SYNC_FILE_TIME 10 // 10 seconds

/// Size of serial port output buffer
#define CONF_SERIAL_BUFFER_SIZE 1024

Expand Down
22 changes: 18 additions & 4 deletions src/eez/apps/psu/dlog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,13 @@ uint32_t g_micros;
uint32_t g_iSample;
double g_currentTime;
double g_nextTime;
uint32_t g_lastSyncTickCount;

static const unsigned int BUFFER_SIZE = 4096;
uint8_t g_buffers[2][BUFFER_SIZE];
int g_selectedbufferIndex;
int g_bufferIndex;
int g_lastBufferSize;

void setState(State newState) {
if (g_state != newState) {
Expand Down Expand Up @@ -159,7 +161,7 @@ void executeDiskOperation(int diskOperation) {
break;

case DISK_OPERATION_WRITE:
g_file.write(&g_buffers[g_selectedbufferIndex ? 0 : 1][0], BUFFER_SIZE);
g_file.write(&g_buffers[g_selectedbufferIndex ? 0 : 1][0], g_lastBufferSize);
break;

case DISK_OPERATION_CLOSE:
Expand All @@ -179,12 +181,18 @@ void queueDiskOperation(int diskOperation) {
}
}

void flushData() {
g_selectedbufferIndex = g_selectedbufferIndex ? 0 : 1;
g_lastBufferSize = g_bufferIndex;
g_bufferIndex = 0;
queueDiskOperation(DISK_OPERATION_WRITE);
}

void writeUint8(uint8_t value) {
g_buffers[g_selectedbufferIndex][g_bufferIndex] = value;
if (++g_bufferIndex == BUFFER_SIZE) {
g_selectedbufferIndex = g_selectedbufferIndex ? 0 : 1;
g_bufferIndex = 0;
queueDiskOperation(DISK_OPERATION_WRITE);
g_lastSyncTickCount = micros();
flushData();
}
}

Expand Down Expand Up @@ -344,6 +352,12 @@ void log(uint32_t tickCount) {

if (g_nextTime > g_time) {
finishLogging();
} else {
int32_t diff = tickCount - g_lastSyncTickCount;
if (diff > CONF_DLOG_SYNC_FILE_TIME * 1000000L) {
g_lastSyncTickCount = tickCount;
flushData();
}
}
}
}
Expand Down
22 changes: 11 additions & 11 deletions src/eez/modules/dcm220/channel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,8 @@ struct Channel : ChannelInterface {
#if defined(EEZ_PLATFORM_SIMULATOR)
if (channel.isOutputEnabled()) {
if (channel.simulator.getLoadEnabled()) {
float u_set_v = uSet[channel.channelIndex];
float i_set_a = iSet[channel.channelIndex];
float u_set_v = uSet[channel.subchannelIndex];
float i_set_a = iSet[channel.subchannelIndex];

float u_mon_v = i_set_a * channel.simulator.load;
float i_mon_a = i_set_a;
Expand All @@ -247,20 +247,20 @@ struct Channel : ChannelInterface {
simulator::setCC(channel.channelIndex, true);
}

uMon[channel.channelIndex] = u_mon_v;
iMon[channel.channelIndex] = i_mon_a;
uMon[channel.subchannelIndex] = u_mon_v;
iMon[channel.subchannelIndex] = i_mon_a;
} else {
uMon[channel.channelIndex] = uSet[channel.channelIndex];
iMon[channel.channelIndex] = 0;
if (uSet[channel.channelIndex] > 0 && iSet[channel.channelIndex] > 0) {
uMon[channel.subchannelIndex] = uSet[channel.subchannelIndex];
iMon[channel.subchannelIndex] = 0;
if (uSet[channel.subchannelIndex] > 0 && iSet[channel.subchannelIndex] > 0) {
simulator::setCC(channel.channelIndex, false);
} else {
simulator::setCC(channel.channelIndex, true);
}
}
} else {
uMon[channel.channelIndex] = 0;
iMon[channel.channelIndex] = 0;
uMon[channel.subchannelIndex] = 0;
iMon[channel.subchannelIndex] = 0;
simulator::setCC(channel.channelIndex, false);
}
#endif
Expand All @@ -284,8 +284,8 @@ struct Channel : ChannelInterface {
#endif

#if defined(EEZ_PLATFORM_SIMULATOR)
channel.onAdcData(ADC_DATA_TYPE_U_MON, uMon[channel.channelIndex]);
channel.onAdcData(ADC_DATA_TYPE_I_MON, iMon[channel.channelIndex]);
channel.onAdcData(ADC_DATA_TYPE_U_MON, uMon[channel.subchannelIndex]);
channel.onAdcData(ADC_DATA_TYPE_I_MON, iMon[channel.subchannelIndex]);
#endif

// PWRGOOD
Expand Down

0 comments on commit 886897f

Please sign in to comment.