Added ts_to_age and get_cfg_float to c lib

This commit is contained in:
Benjamin Vedder 2022-09-19 11:50:26 +02:00
parent 856184d822
commit 3199dd2605
2 changed files with 59 additions and 0 deletions

View File

@ -143,6 +143,23 @@ typedef enum {
VESC_PIN_MODE_ANALOG,
} VESC_PIN_MODE;
typedef enum {
CFG_PARAM_l_current_max = 0,
CFG_PARAM_l_current_min,
CFG_PARAM_l_in_current_max,
CFG_PARAM_l_in_current_min,
CFG_PARAM_l_abs_current_max,
CFG_PARAM_l_min_erpm,
CFG_PARAM_l_max_erpm,
CFG_PARAM_l_erpm_start,
CFG_PARAM_l_max_erpm_fbrake,
CFG_PARAM_l_max_erpm_fbrake_cc,
CFG_PARAM_l_min_vin,
CFG_PARAM_l_max_vin,
CFG_PARAM_l_battery_cut_start,
CFG_PARAM_l_battery_cut_end,
} CFG_PARAM;
#ifndef PACKET_MAX_PL_LEN
#define PACKET_MAX_PL_LEN 512
#endif
@ -366,6 +383,12 @@ typedef struct {
// Send app data (which can be received by QML)
void (*send_app_data)(unsigned char *data, unsigned int len);
// Age of timestamp in seconds
float (*ts_to_age_s)(systime_t ts);
// Settings (TODO: Add more types and also setters)
float (*get_cfg_float)(CFG_PARAM p);
} vesc_c_if;
typedef struct {

View File

@ -365,6 +365,36 @@ static int32_t lib_uart_read(void) {
return sdGetTimeout(&HW_UART_DEV, TIME_IMMEDIATE);
}
static float lib_ts_to_age_s(systime_t ts) {
return UTILS_AGE_S(ts);
}
static float lib_get_cfg_float(CFG_PARAM p) {
float res = 0.0;
const volatile mc_configuration *conf = mc_interface_get_configuration();
switch (p) {
case CFG_PARAM_l_current_max: res = conf->l_current_max; break;
case CFG_PARAM_l_current_min: res = conf->l_current_min; break;
case CFG_PARAM_l_in_current_max: res = conf->l_in_current_max; break;
case CFG_PARAM_l_in_current_min: res = conf->l_in_current_min; break;
case CFG_PARAM_l_abs_current_max: res = conf->l_abs_current_max; break;
case CFG_PARAM_l_min_erpm: res = conf->l_min_erpm; break;
case CFG_PARAM_l_max_erpm: res = conf->l_max_erpm; break;
case CFG_PARAM_l_erpm_start: res = conf->l_erpm_start; break;
case CFG_PARAM_l_max_erpm_fbrake: res = conf->l_max_erpm_fbrake; break;
case CFG_PARAM_l_max_erpm_fbrake_cc: res = conf->l_max_erpm_fbrake_cc; break;
case CFG_PARAM_l_min_vin: res = conf->l_min_vin; break;
case CFG_PARAM_l_max_vin: res = conf->l_max_vin; break;
case CFG_PARAM_l_battery_cut_start: res = conf->l_battery_cut_start; break;
case CFG_PARAM_l_battery_cut_end: res = conf->l_battery_cut_end; break;
default: break;
}
return res;
}
lbm_value ext_load_native_lib(lbm_value *args, lbm_uint argn) {
lbm_value res = lbm_enc_sym(SYM_EERROR);
@ -572,6 +602,12 @@ lbm_value ext_load_native_lib(lbm_value *args, lbm_uint argn) {
// App data
cif.cif.send_app_data = commands_send_app_data;
// Age of timestamp in seconds
cif.cif.ts_to_age_s = lib_ts_to_age_s;
// Settings
cif.cif.get_cfg_float = lib_get_cfg_float;
lib_init_done = true;
}