/* * -------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * , , * wrote this file. As long as you retain this notice you can do whatever you * want with this stuff. If you meet any of us some day, and you think this * stuff is worth it, you can buy us a beer in return. - The sys-clk authors * -------------------------------------------------------------------------- */ #pragma once #include #include typedef enum { SysClkConfigValue_PollingIntervalMs = 0, SysClkConfigValue_TempLogIntervalMs, SysClkConfigValue_FreqLogIntervalMs, SysClkConfigValue_PowerLogIntervalMs, SysClkConfigValue_CsvWriteIntervalMs, SysClkConfigValue_EnumMax, } SysClkConfigValue; typedef struct { uint64_t values[SysClkConfigValue_EnumMax]; } SysClkConfigValueList; static inline const char* sysclkFormatConfigValue(SysClkConfigValue val, bool pretty) { switch(val) { case SysClkConfigValue_PollingIntervalMs: return pretty ? "Polling Interval (ms)" : "poll_interval_ms"; case SysClkConfigValue_TempLogIntervalMs: return pretty ? "Temperature logging interval (ms)" : "temp_log_interval_ms"; case SysClkConfigValue_FreqLogIntervalMs: return pretty ? "Frequency logging interval (ms)" : "freq_log_interval_ms"; case SysClkConfigValue_PowerLogIntervalMs: return pretty ? "Power logging interval (ms)" : "power_log_interval_ms"; case SysClkConfigValue_CsvWriteIntervalMs: return pretty ? "CSV write interval (ms)" : "csv_write_interval_ms"; default: return NULL; } } static inline uint64_t sysclkDefaultConfigValue(SysClkConfigValue val) { switch(val) { case SysClkConfigValue_PollingIntervalMs: return 300ULL; case SysClkConfigValue_TempLogIntervalMs: case SysClkConfigValue_FreqLogIntervalMs: case SysClkConfigValue_PowerLogIntervalMs: case SysClkConfigValue_CsvWriteIntervalMs: return 0ULL; default: return 0ULL; } } static inline uint64_t sysclkValidConfigValue(SysClkConfigValue val, uint64_t input) { switch(val) { case SysClkConfigValue_PollingIntervalMs: return input > 0; case SysClkConfigValue_TempLogIntervalMs: case SysClkConfigValue_FreqLogIntervalMs: case SysClkConfigValue_PowerLogIntervalMs: case SysClkConfigValue_CsvWriteIntervalMs: return input >= 0; default: return false; } }