Added app data handler to c-if and check function pointer

This commit is contained in:
Benjamin Vedder 2022-09-19 23:17:04 +02:00
parent 3199dd2605
commit a5ba6b79f1
4 changed files with 14 additions and 3 deletions

View File

@ -1723,8 +1723,13 @@ disp_pos_mode commands_get_disp_pos_mode(void) {
return display_position_mode; return display_position_mode;
} }
void commands_set_app_data_handler(void(*func)(unsigned char *data, unsigned int len)) { bool commands_set_app_data_handler(void(*func)(unsigned char *data, unsigned int len)) {
appdata_func = func; if (utils_is_func_valid(func)) {
appdata_func = func;
return true;
}
return false;
} }
void commands_set_hw_data_handler(void(*func)(unsigned char *data, unsigned int len)) { void commands_set_hw_data_handler(void(*func)(unsigned char *data, unsigned int len)) {

View File

@ -37,7 +37,7 @@ void commands_send_rotor_pos(float rotor_pos);
void commands_send_experiment_samples(float *samples, int len); void commands_send_experiment_samples(float *samples, int len);
void commands_fwd_can_frame(int len, unsigned char *data, uint32_t id, bool is_extended); void commands_fwd_can_frame(int len, unsigned char *data, uint32_t id, bool is_extended);
disp_pos_mode commands_get_disp_pos_mode(void); disp_pos_mode commands_get_disp_pos_mode(void);
void commands_set_app_data_handler(void(*func)(unsigned char *data, unsigned int len)); bool commands_set_app_data_handler(void(*func)(unsigned char *data, unsigned int len));
void commands_set_hw_data_handler(void(*func)(unsigned char *data, unsigned int len)); void commands_set_hw_data_handler(void(*func)(unsigned char *data, unsigned int len));
void commands_send_app_data(unsigned char *data, unsigned int len); void commands_send_app_data(unsigned char *data, unsigned int len);
void commands_send_hw_data(unsigned char *data, unsigned int len); void commands_send_hw_data(unsigned char *data, unsigned int len);

View File

@ -389,6 +389,9 @@ typedef struct {
// Settings (TODO: Add more types and also setters) // Settings (TODO: Add more types and also setters)
float (*get_cfg_float)(CFG_PARAM p); float (*get_cfg_float)(CFG_PARAM p);
// Add handler for received app data
bool (*set_app_data_handler)(void(*func)(unsigned char *data, unsigned int len));
} vesc_c_if; } vesc_c_if;
typedef struct { typedef struct {

View File

@ -608,6 +608,9 @@ lbm_value ext_load_native_lib(lbm_value *args, lbm_uint argn) {
// Settings // Settings
cif.cif.get_cfg_float = lib_get_cfg_float; cif.cif.get_cfg_float = lib_get_cfg_float;
// Add handler for received app data
cif.cif.set_app_data_handler = commands_set_app_data_handler;
lib_init_done = true; lib_init_done = true;
} }