add hook for setting default values

Add set_defaults_hook to let application override default values.
pull/52/head
Hans-Erik Floryd 2019-04-02 14:16:26 +02:00
parent 55df56821a
commit 236a02bfb4
4 changed files with 11 additions and 0 deletions

View File

@ -42,6 +42,7 @@ int main (void)
.user_arg = NULL,
.use_interrupt = 1,
.watchdog_cnt = INT32_MAX, /* Use HW SM watchdog instead */
.set_defaults_hook = NULL,
.pre_state_change_hook = NULL,
.post_state_change_hook = NULL,
.application_hook = NULL,

View File

@ -1158,6 +1158,7 @@ void ESC_config (esc_cfg_t * cfg)
ESCvar.mbboot[0] = mbboot0;
ESCvar.mbboot[1] = mbboot1;
ESCvar.set_defaults_hook = cfg->set_defaults_hook;
ESCvar.pre_state_change_hook = cfg->pre_state_change_hook;
ESCvar.post_state_change_hook = cfg->post_state_change_hook;
ESCvar.application_hook = cfg->application_hook;

View File

@ -238,6 +238,7 @@ typedef struct esc_cfg
void * user_arg;
int use_interrupt;
int watchdog_cnt;
void (*set_defaults_hook) (void);
void (*pre_state_change_hook) (uint8_t * as, uint8_t * an);
void (*post_state_change_hook) (uint8_t * as, uint8_t * an);
void (*application_hook) (void);
@ -352,6 +353,7 @@ typedef struct
int use_interrupt;
sm_cfg_t mb[2];
sm_cfg_t mbboot[2];
void (*set_defaults_hook) (void);
void (*pre_state_change_hook) (uint8_t * as, uint8_t * an);
void (*post_state_change_hook) (uint8_t * as, uint8_t * an);
void (*application_hook) (void);

View File

@ -1076,6 +1076,7 @@ void COE_initDefaultValues (void)
int n;
uint8_t maxsub;
/* Set default values from object descriptor */
for (n = 0; SDOobjects[n].index != 0xffff; n++)
{
objd = SDOobjects[n].objdesc;
@ -1092,6 +1093,12 @@ void COE_initDefaultValues (void)
}
} while (objd[i++].subindex < maxsub);
}
/* Let application override default values */
if (ESCvar.set_defaults_hook != NULL)
{
ESCvar.set_defaults_hook();
}
}
/**