mirror of https://gerrit.osmocom.org/libosmocore
fsm: add LOGPFSML to pass explicit logging level
Provide one central LOGPFSML to print FSM information, take the FSM logging subsystem from the FSM instance but use an explicitly provided log level instead of the FSM's default level. Use to replace some, essentially, duplications of the LOGPFSM macro. In effect, the fsm_test's expected error changes, since the previous code dup for logging events used round braces to indicate the fi's state, while the central macro uses curly braces. Change-Id: If295fdabb3f31a0fd9490d1e0df57794c75ae547
This commit is contained in:
parent
886d6fdec6
commit
6a13e7f563
|
@ -110,11 +110,14 @@ struct osmo_fsm_inst {
|
|||
|
||||
void osmo_fsm_log_addr(bool log_addr);
|
||||
|
||||
#define LOGPFSM(fi, fmt, args...) \
|
||||
LOGP((fi)->fsm->log_subsys, (fi)->log_level, "%s{%s}: " fmt, \
|
||||
#define LOGPFSML(fi, level, fmt, args...) \
|
||||
LOGP((fi)->fsm->log_subsys, level, "%s{%s}: " fmt, \
|
||||
osmo_fsm_inst_name(fi), \
|
||||
osmo_fsm_state_name((fi)->fsm, (fi)->state), ## args)
|
||||
|
||||
#define LOGPFSM(fi, fmt, args...) \
|
||||
LOGPFSML(fi, (fi)->log_level, fmt, ## args)
|
||||
|
||||
int osmo_fsm_register(struct osmo_fsm *fsm);
|
||||
void osmo_fsm_unregister(struct osmo_fsm *fsm);
|
||||
struct osmo_fsm_inst *osmo_fsm_inst_alloc(struct osmo_fsm *fsm, void *ctx, void *priv,
|
||||
|
|
15
src/fsm.c
15
src/fsm.c
|
@ -311,11 +311,9 @@ int osmo_fsm_inst_state_chg(struct osmo_fsm_inst *fi, uint32_t new_state,
|
|||
|
||||
/* validate if new_state is a valid state */
|
||||
if (!(st->out_state_mask & (1 << new_state))) {
|
||||
LOGP(fsm->log_subsys, LOGL_ERROR, "%s(%s): transition to "
|
||||
"state %s not permitted!\n",
|
||||
osmo_fsm_inst_name(fi),
|
||||
osmo_fsm_state_name(fsm, fi->state),
|
||||
osmo_fsm_state_name(fsm, new_state));
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"transition to state %s not permitted!\n",
|
||||
osmo_fsm_state_name(fsm, new_state));
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
|
@ -376,10 +374,9 @@ int osmo_fsm_inst_dispatch(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
|||
}
|
||||
|
||||
if (!((1 << event) & fs->in_event_mask)) {
|
||||
LOGP(fsm->log_subsys, LOGL_ERROR, "%s(%s): Event %s not "
|
||||
"permitted\n", osmo_fsm_inst_name(fi),
|
||||
osmo_fsm_state_name(fsm, fi->state),
|
||||
osmo_fsm_event_name(fsm, event));
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"Event %s not permitted\n",
|
||||
osmo_fsm_event_name(fsm, event));
|
||||
return -1;
|
||||
}
|
||||
fs->action(fi, event, data);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Checking FSM allocation
|
||||
[0;mTest FSM{NULL}: Allocated
|
||||
[0;mTest FSM{NULL}: Received Event 1
|
||||
[0;mTest FSM(NULL): Event 1 not permitted
|
||||
[0;mTest FSM{NULL}: Event 1 not permitted
|
||||
[0;mTest FSM{NULL}: Received Event 0
|
||||
[0;mTest FSM{NULL}: state_chg to ONE
|
||||
[0;mTest FSM{ONE}: Received Event 1
|
||||
|
|
Loading…
Reference in New Issue