Air Quality Monitor
Portable C application for collecting, storing, and analyzing air quality sensor readings
Loading...
Searching...
No Matches
sensor_info.c
1#include "core/globals.h"
2#include "sensor/sensor_loader.h"
3#include "sensor/sensor_utils.h"
4#include <stdio.h>
5#include <stdlib.h>
6#include <string.h>
7
8static void show_single_sensor_info(const char *mode, const char *plugin_path) {
9 printf("\n========================================\n");
10 printf(" SINGLE SENSOR MODE (Legacy)\n");
11 printf("========================================\n");
12 printf(" Sensor mode: %s\n", mode);
13 printf(" Plugins enabled: %s\n", sensor_plugins_enabled ? "yes" : "no");
14 printf(" Plugin path: %s\n", (plugin_path && plugin_path[0]) ? plugin_path : "(not set)");
15
16 if (!sensor_plugins_enabled || !plugin_path || !plugin_path[0]) {
17 printf("\n Status: Using builtin mock generator\n");
18 return;
19 }
20
21 SensorModule module;
22 if (sensor_module_load(plugin_path, &module) != 0) {
23 printf("\n Status: FAILED to load plugin\n");
24 return;
25 }
26
27 printf("\n Plugin Information:\n");
28 printf(" -------------------\n");
29 printf(" Name: %s\n", module.plugin->name ? module.plugin->name : "N/A");
30 printf(" Version: %s\n", module.plugin->plugin_version ? module.plugin->plugin_version : "N/A");
31 printf(" API Version: %d\n", module.plugin->api_version);
32 printf(" Sensor ID: %d\n", module.plugin->sensor_id);
33 printf(" Description: %s\n", module.plugin->description ? module.plugin->description : "N/A");
34 printf(" Status: Loaded successfully\n");
35
36 sensor_module_unload(&module);
37}
38
39static void show_multi_sensor_info(void) {
40 printf("\n========================================\n");
41 printf(" MULTI-SENSOR MODE\n");
42 printf("========================================\n");
43 printf(" Total sensors configured: %d (max: %d)\n", active_sensor_count, MAX_SENSORS);
44 printf(" Plugins enabled globally: %s\n", sensor_plugins_enabled ? "yes" : "no");
45
46 if (active_sensor_count == 0) {
47 printf("\n No sensors configured. Use option 12 (Auto-detect) or 13 (Configure multi-sensor).\n");
48 return;
49 }
50
51 printf("\n Configured Sensors:\n");
52 printf(" ===================\n\n");
53
54 for (int i = 0; i < active_sensor_count; i++) {
55 SensorConfig *config = &sensor_configs[i];
56 const char *plugin_path = config->plugin_path[0] ? config->plugin_path : resolve_default_plugin_path(config->mode);
57
58 printf(" [%d] Sensor: %s\n", i + 1, config->mode);
59 printf(" Status: %s\n", config->enabled ? "ENABLED" : "DISABLED");
60 printf(" Plugin: %s\n", plugin_path ? plugin_path : "(default path)");
61
62 if (sensor_plugins_enabled && plugin_path && plugin_path[0]) {
63 SensorModule module;
64 if (sensor_module_load(plugin_path, &module) == 0) {
65 printf(" Name: %s\n", module.plugin->name ? module.plugin->name : "N/A");
66 printf(" Version: %s\n", module.plugin->plugin_version ? module.plugin->plugin_version : "N/A");
67 printf(" API Ver: %d\n", module.plugin->api_version);
68 printf(" Sensor ID: %d\n", module.plugin->sensor_id);
69 printf(" Load: OK\n");
70 sensor_module_unload(&module);
71 } else {
72 printf(" Load: FAILED\n");
73 }
74 } else {
75 printf(" Load: SKIPPED (plugins disabled)\n");
76 }
77
78 if (i < active_sensor_count - 1) {
79 printf("\n");
80 }
81 }
82
83 printf("\n========================================\n");
84 printf(" Active for data collection: %d sensor(s)\n", active_sensor_count);
85 printf("========================================\n");
86}
87
88void show_sensor_runtime_info(void) {
89 if (active_sensor_count > 0) {
90 show_multi_sensor_info();
91 } else {
92 const char *mode = sensor_mode[0] ? sensor_mode : "mock";
93 const char *plugin_path = sensor_plugin_path[0] ? sensor_plugin_path : resolve_default_plugin_path(mode);
94 show_single_sensor_info(mode, plugin_path);
95 }
96}
97
Configuration for one sensor slot in multi-sensor mode.
Definition globals.h:48
char mode[32]
Sensor mode identifier, e.g.
Definition globals.h:50
char plugin_path[256]
Path to the plugin library; empty string means use the default resolved by resolve_default_plugin_pat...
Definition globals.h:53
int enabled
Non-zero if this sensor slot is active for data collection.
Definition globals.h:55
A dynamically loaded sensor plugin and its OS-level handle.