WIP: fsm_journal_init (&glogos, "start fsm_init()") in fsm/dispatch

This commit is contained in:
Jean Sirmai 2024-09-11 10:23:07 +02:00
parent 5aa8c84ade
commit e5e674b194
Signed by: jean
GPG Key ID: FB3115C340E057E3
5 changed files with 63 additions and 53 deletions

View File

@ -47,21 +47,21 @@ typedef struct data_list {int value; struct data_list *suiv;} data_list ;
typedef struct disp_list {int value; struct disp_list *suiv;} disp_list ; typedef struct disp_list {int value; struct disp_list *suiv;} disp_list ;
// --------------------------------------------------------------- WIP ------ // --------------------------------------------------------------- WIP ------
void fsm_get_time(); void fsm_get_time(char *message);
// --------------------------------------------------------------- WIP ------ // --------------------------------------------------------------- WIP ------
typedef struct unit {int event; struct unit *prev; struct unit *next;} unit; typedef struct unit {int event; struct unit *prev; struct unit *next;} unit;
typedef struct {unit *first; unit *last;} journal; // structure d'accès au journal typedef struct {unit *first; unit *last;} journal; // structure d'accès au journal
void fsm_journal_init (journal *jj); // initialise void fsm_journal_init (journal *jj, char *message); // initialise
void fsm_journal_clear (journal *jj); // vide tout le journal void fsm_journal_clear (journal *jj, char *message); // vide tout le journal
int fsm_journal_push_back (journal *jj, int event); // ajoute un évènement en fin de journal int fsm_journal_push_back (journal *jj, int event, char *message); // ajoute un évènement en fin de journal
int fsm_journal_push_front (journal *jj, int event); // ajoute un évènement en début de journal int fsm_journal_push_front (journal *jj, int event, char *message); // ajoute un évènement en début de journal
int fsm_journal_pop_back (journal *jj); // retire un évènement en fin de journal int fsm_journal_pop_back (journal *jj, char *message); // retire un évènement en fin de journal
int fsm_journal_pop_front (journal *jj); // retire un évènement en début de journal int fsm_journal_pop_front (journal *jj, char *message); // retire un évènement en début de journal
int fsm_journal_length (journal jj); // nombre d'évènements dans le journal int fsm_journal_length (journal jj, char *message); // nombre d'évènements dans le journal
void fsm_journal_seek (journal jj, int event); // recherche un évènement dans le journal void fsm_journal_seek (journal jj, int event, char *message); // recherche un évènement dans le journal
void fsm_journal_view (journal jj); // affiche tout le journal void fsm_journal_view (journal jj, char *message); // affiche tout le journal
void fsm_journal_test(); void fsm_journal_test(char *message);
// --------------------------------------------------------------- WIP ------ // --------------------------------------------------------------- WIP ------
// ref: sudo cat /var/log/messages // ref: sudo cat /var/log/messages
// --------------------------------------------------------------- WIP ------ // --------------------------------------------------------------- WIP ------

View File

@ -54,13 +54,19 @@
/******************************************************************************/ /******************************************************************************/
/* F S M I N I T */ /* F S M I N I T */
/******************************************************************************/ /******************************************************************************/
// --------------------------------------------------------------- WIP ------
journal glogos; // gg_logs, should be, but 'glogos' is funny 2024-09-11
void fsm_init() void fsm_init()
{ {
fsm_measures_list_init(); fsm_journal_init (&glogos, "start fsm_init()");
fsm_results_list_init();
fsm_displayable_list_init(); fsm_measures_list_init(); fsm_journal_push_front (&glogos, 1, "measures");
fsm_preferences_init(); fsm_results_list_init(); fsm_journal_push_front (&glogos, 2, "results");
fsm_displayable_list_init(); fsm_journal_push_front (&glogos, 3, "display");
fsm_preferences_init(); fsm_journal_push_front (&glogos, 4, "prefer");
fsm_journal_length (glogos, "end fsm_init()");
} }

View File

@ -36,28 +36,29 @@
/******************************************************************************/ /******************************************************************************/
void fsm_get_time() void fsm_get_time (char *message)
{ {
struct timeval tv; struct timeval tv;
gettimeofday(&tv, NULL); gettimeofday(&tv, NULL);
printf(" Seconds since Jan. 1, 1970: %ld\n", tv.tv_sec); printf(" Seconds since Jan. 1, 1970: %ld %s\n", tv.tv_sec, message);
/*
time_t current_time = time(NULL); time_t current_time = time(NULL);
// Check if the time retrieval was successful // Check if the time retrieval was successful
if (current_time == ((time_t)-1)) printf("Error getting current time.\n"); if (current_time == ((time_t)-1)) printf("Error getting current time.\n");
// Convert to local time format and print // Convert to local time format and print
printf(" Current timestamp: %ld\n", current_time); printf(" Current timestamp: %ld %s\n", current_time, message);
printf(" Current time: %s", ctime(&current_time)); printf(" Current time: %s", ctime(&current_time));
*/
} }
void fsm_journal_init (journal *jj) void fsm_journal_init (journal *jj, char *message)
{ {
jj->first = NULL; jj->first = NULL;
jj->last = NULL; jj->last = NULL;
fsm_get_time(); fsm_get_time (message);
} }
void fsm_journal_clear (journal *jj) void fsm_journal_clear (journal *jj, char *message)
{ {
unit *tmp; unit *tmp;
unit *a_unit = jj->first; unit *a_unit = jj->first;
@ -71,7 +72,7 @@ void fsm_journal_clear (journal *jj)
jj->last = NULL; jj->last = NULL;
} }
int fsm_journal_push_back (journal *jj, int event) int fsm_journal_push_back (journal *jj, int event, char *message)
{ {
unit *new_unit = malloc (sizeof(unit)); unit *new_unit = malloc (sizeof(unit));
if (! new_unit) exit (EXIT_FAILURE); if (! new_unit) exit (EXIT_FAILURE);
@ -84,7 +85,7 @@ int fsm_journal_push_back (journal *jj, int event)
return event; return event;
} }
int fsm_journal_push_front (journal *jj, int event) int fsm_journal_push_front (journal *jj, int event, char *message)
{ {
unit *new_unit = malloc(sizeof(unit)); unit *new_unit = malloc(sizeof(unit));
if (! new_unit) exit (EXIT_FAILURE); if (! new_unit) exit (EXIT_FAILURE);
@ -97,7 +98,7 @@ int fsm_journal_push_front (journal *jj, int event)
return event; return event;
} }
int fsm_journal_pop_back (journal *jj) int fsm_journal_pop_back (journal *jj, char *message)
{ {
int event; int event;
unit *tmp = jj->last; unit *tmp = jj->last;
@ -110,7 +111,7 @@ int fsm_journal_pop_back (journal *jj)
return event; // retourne l'évènement retiré du journal. return event; // retourne l'évènement retiré du journal.
} }
int fsm_journal_pop_front (journal *jj) int fsm_journal_pop_front (journal *jj, char *message)
{ {
int event; int event;
unit *tmp = jj->first; unit *tmp = jj->first;
@ -123,7 +124,7 @@ int fsm_journal_pop_front (journal *jj)
return event; // retourne l'évènement retiré du journal. return event; // retourne l'évènement retiré du journal.
} }
int fsm_journal_length (journal jj) int fsm_journal_length (journal jj, char *message)
{ {
unit *a_unit = jj.first; unit *a_unit = jj.first;
int nb = 0; int nb = 0;
@ -132,10 +133,12 @@ int fsm_journal_length (journal jj)
nb ++; nb ++;
a_unit = a_unit->next; a_unit = a_unit->next;
} }
printf (" fsm_journal_length (n = %d) %s\n", nb, "");
fsm_get_time (message);
return nb; return nb;
} }
void fsm_journal_seek (journal jj, int event) void fsm_journal_seek (journal jj, int event, char *message)
{ {
unit *a_unit = jj.first; unit *a_unit = jj.first;
int nb = 0; int nb = 0;
@ -146,12 +149,12 @@ void fsm_journal_seek (journal jj, int event)
} }
if (nb > 0) printf ("> event %d found %d times in journal\n", event, nb); if (nb > 0) printf ("> event %d found %d times in journal\n", event, nb);
else printf ("> event %d not found in journal\n", event); else printf ("> event %d not found in journal\n", event);
fsm_get_time(); fsm_get_time (message);
} }
void fsm_journal_view (journal jj) void fsm_journal_view (journal jj, char *message)
{ {
printf ("view journal (n = %d)\n", fsm_journal_length (jj)); printf ("view journal (n = %d)\n", fsm_journal_length (jj, message));
unit *a_unit = jj.first; unit *a_unit = jj.first;
while (a_unit) while (a_unit)
{ {
@ -161,35 +164,35 @@ void fsm_journal_view (journal jj)
puts ("------"); puts ("------");
} }
void fsm_journal_test() void fsm_journal_test(char *message) // call: widget/dispatch
{ {
journal exemple; journal exemple;
fsm_journal_init (&exemple); fsm_journal_init (&exemple, message);
printf ("push front > %d\n", fsm_journal_push_front (&exemple, 10)); printf ("push front > %d\n", fsm_journal_push_front (&exemple, 10, ""));
printf ("push back > %d\n", fsm_journal_push_back (&exemple, 100)); printf ("push back > %d\n", fsm_journal_push_back (&exemple, 100, ""));
printf ("push back > %d\n", fsm_journal_push_back (&exemple, 1000)); printf ("push back > %d\n", fsm_journal_push_back (&exemple, 1000, ""));
printf ("push front > %d\n", fsm_journal_push_front (&exemple, 1)); printf ("push front > %d\n", fsm_journal_push_front (&exemple, 1, ""));
fsm_journal_view (exemple); fsm_journal_view (exemple, "");
fsm_journal_seek (exemple, 2); fsm_journal_seek (exemple, 2, "");
printf ("pop back > %d\n", fsm_journal_pop_back (&exemple)); printf ("pop back > %d\n", fsm_journal_pop_back (&exemple, ""));
printf ("pop back > %d\n", fsm_journal_pop_back (&exemple)); printf ("pop back > %d\n", fsm_journal_pop_back (&exemple, ""));
printf ("pop back > %d\n", fsm_journal_pop_back (&exemple)); printf ("pop back > %d\n", fsm_journal_pop_back (&exemple, ""));
printf ("push back > %d\n", fsm_journal_push_back (&exemple, 2)); printf ("push back > %d\n", fsm_journal_push_back (&exemple, 2, ""));
fsm_journal_view (exemple); fsm_journal_view (exemple, "");
printf ("push back > %d\n", fsm_journal_push_back (&exemple, 3)); printf ("push back > %d\n", fsm_journal_push_back (&exemple, 3, ""));
printf ("push front > %d\n", fsm_journal_push_front (&exemple, 0)); printf ("push front > %d\n", fsm_journal_push_front (&exemple, 0, ""));
fsm_journal_view (exemple); fsm_journal_view (exemple, "");
fsm_journal_seek (exemple, 2); fsm_journal_seek (exemple, 2, "");
printf ("clear list\n"); fsm_journal_clear (&exemple); printf ("clear list\n"); fsm_journal_clear (&exemple, "");
fsm_journal_view (exemple); fsm_journal_view (exemple, message);
} }

View File

@ -132,9 +132,10 @@
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
fsm_init (); // fsm = finite state machine (see : src/fsm/dispatch.c) fsm_init (); // def: src/fsm/dispatch.c fsm = finite state machine
GtkApplication *app = gtk_application_new ("org.gem-graph", G_APPLICATION_DEFAULT_FLAGS); GtkApplication *app = gtk_application_new ("org.gem-graph",
G_APPLICATION_DEFAULT_FLAGS);
g_signal_connect (app, "startup", G_CALLBACK (on_windows_startup), NULL); g_signal_connect (app, "startup", G_CALLBACK (on_windows_startup), NULL);
g_signal_connect (app, "activate", G_CALLBACK (on_windows_activation), NULL); g_signal_connect (app, "activate", G_CALLBACK (on_windows_activation), NULL);
// ! WARNING ! 'on_windows_activation()' // ! WARNING ! 'on_windows_activation()'

View File

@ -92,7 +92,7 @@ void on_windows_activation (GtkApplication *app)
widget_design_text_window (main_window, text_window); widget_design_text_window (main_window, text_window);
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
util_trigger_test(); // then go to util/tests.c and change if (0) to if (1)... util_trigger_test(); // then go to util/tests.c and change if (0) to if (1)...
fsm_journal_test(); if (0) fsm_journal_test("<> fsm_journal_test() in widget / dispatch");