server implementation for Nordic.
void captureEventLog(uint16_t value)
{
int ret;
gxEventLogData row;
// Profile generic Capture is called. Save data to the buffer.
// Ring buffer is used here.
row.time = time_current();
row.event = value;
ret = SERIALIZER_SAVE(SETTINGS_BUFFER_SIZE + LOAD_PROFILE_BUFFER_SIZE + eventLogRowIndex * sizeof(gxEventLogData), sizeof(gxEventLogData), &row);
// Update how many entries is used until buffer is full.
if (eventLog.entriesInUse != eventLog.profileEntries)
{
++eventLog.entriesInUse;
}
// Update row index where next row is added.
++eventLogRowIndex;
eventLogRowIndex = eventLogRowIndex % eventLog.profileEntries;
saveSettings(BASE(eventLog), GET_ATTRIBUTE(7));
}
void updateState(uint16_t value)
{
GX_UINT16(eventCode.value) = value;
captureEventLog(value);
// Update Entries in use for event log.
saveSettings(BASE(eventLog), GET_ATTRIBUTE(7));
}
called saveSettings when updateState called, and again saveSettings called in captureEventLog. is it not double called?