From 317708dc1fc56de22828ec0b3c26d585807bfcd8 Mon Sep 17 00:00:00 2001 From: MCorange Date: Thu, 23 May 2024 03:13:43 +0300 Subject: [PATCH] Made polling dependant on if the plugin is ready or not --- src/include/plug.h | 12 +++++++----- src/modules/battery.c | 2 ++ src/modules/clock.c | 3 ++- src/plug.c | 9 +++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/include/plug.h b/src/include/plug.h index a685769..9b467ad 100644 --- a/src/include/plug.h +++ b/src/include/plug.h @@ -3,15 +3,17 @@ #define _H_PLUG #include +#include -typedef void (*plug_init_f) (); -typedef void (*plug_reload_f) (); +typedef void (*plug_init_f) (void); +typedef void (*plug_reload_f) (void); typedef void (*plug_poll_f) (char*, size_t); -typedef void (*plug_free_f) (); +typedef void (*plug_free_f) (void); typedef struct plug_t { char* name; char* version; + bool is_ready; } plug_t; typedef struct plug_int_t { @@ -23,8 +25,8 @@ typedef struct plug_int_t { } plug_int_t; void setup_plugins(char* plugin_path); -char* poll_plugins(); -void free_plugins(); +char* poll_plugins(char* sep); +void free_plugins(void); #endif diff --git a/src/modules/battery.c b/src/modules/battery.c index 4ba38d3..1d7cf55 100644 --- a/src/modules/battery.c +++ b/src/modules/battery.c @@ -28,6 +28,8 @@ void plug_init(void) { printf("MODULE: ERROR: Unable to find battery\n"); return; } + + PLUG.is_ready = true; } void plug_reload(void) { /* Unused */ } diff --git a/src/modules/clock.c b/src/modules/clock.c index 032b35e..d46e37a 100644 --- a/src/modules/clock.c +++ b/src/modules/clock.c @@ -1,11 +1,12 @@ #include "plug.h" -#include #include + plug_t PLUG = {0}; void plug_init(void) { PLUG.name = "time"; PLUG.version = "0.0.1"; + PLUG.is_ready = true; } void plug_reload(void) { /* Unused */ } diff --git a/src/plug.c b/src/plug.c index b1be267..592f8d2 100644 --- a/src/plug.c +++ b/src/plug.c @@ -124,7 +124,7 @@ void setup_plugins(char* plugin_path) { } } -void free_plugins() { +void free_plugins(void) { for (size_t i = 0; i < PLUGMAN.plug_count; i++) { plug_int_t* plug = PLUGMAN.plugs[i]; (plug->f_free)(); @@ -146,10 +146,11 @@ char* poll_plugins(char* sep) { } for (size_t i = 0; i < PLUGMAN.plug_count; i++) { - plug_int_t* plug = PLUGMAN.plugs[i]; - - printf("Polling plug id %zu\n", i); + plug_int_t* plug = PLUGMAN.plugs[i]; + if (!plug->s_plug_info->is_ready) continue; + + printf("Polling plug id %zu\n", i); size_t len = strlen(buf); (plug->f_poll)(buf + len, PLUG_POLL_BUF_SZ - len);