Wed, 24 Apr 2024 20:36:06 +0200
Finished save fermenter uit edit.
/** * @brief State table macro's */ #ifndef STATETBL_H #define STATETBL_H #define SM_DECL(proc,name) \ int proc(void)\ {\ int sm_success=0;\ char *sm_name=name; #define SM_STATES \ enum { #define SM_NAMES \ } sm_state; \ char * sm_sname[] = { #define SM_EDECL \ }; #define SM_START(x) \ sm_state=x;\ if (debug)\ syslog(LOG_NOTICE, "SM (%s): Start => %s", sm_name, sm_sname[sm_state]); \ while (!sm_success) switch (sm_state)\ {\ default: syslog(LOG_WARNING, "Statemachine %s error: state=%d",sm_name,sm_state);\ sm_success=-1; #define SM_STATE(x) \ break;\ case x: #define SM_END \ }\ #define SM_RETURN \ return (sm_success != 1);\ } #define SM_PROCEED(x) \ if (x != sm_state && debug) {\ syslog(LOG_NOTICE, "SM (%s): %s => %s", sm_name, sm_sname[sm_state], sm_sname[x]);\ }\ sm_state=x; break; #define SM_SUCCESS \ if (debug)\ syslog(LOG_NOTICE, "SM (%s): %s => Success", sm_name, sm_sname[sm_state]);\ sm_success=1; break; #define SM_ERROR \ syslog(LOG_WARNING, "SM (%s): %s => Error", sm_name, sm_sname[sm_state]);\ sm_success=-1; break; #endif