benchlab-pytools 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- benchlab/__init__.py +14 -0
- benchlab/__main__.py +21 -0
- benchlab/config/README.md +325 -0
- benchlab/config/__init__.py +9 -0
- benchlab/config/config_client.py +631 -0
- benchlab/config/config_manager.py +495 -0
- benchlab/config/config_tool.py +358 -0
- benchlab/config/diff.py +163 -0
- benchlab/config/examples/complete_config.json +56 -0
- benchlab/config/examples/rgb_lighting.json +24 -0
- benchlab/config/examples/simple_fan.json +32 -0
- benchlab/config/schema.py +138 -0
- benchlab/core/README.md +154 -0
- benchlab/core/__init__.py +78 -0
- benchlab/core/config.py +145 -0
- benchlab/core/datasource.py +1209 -0
- benchlab/core/datasource_manager.py +418 -0
- benchlab/core/device_registry.py +206 -0
- benchlab/core/discovery.py +92 -0
- benchlab/core/infrastructure.py +309 -0
- benchlab/core/process_manager.py +356 -0
- benchlab/core/retry.py +85 -0
- benchlab/core/shared_serial.py +235 -0
- benchlab/core/statistics.py +224 -0
- benchlab/csv_log/README.md +206 -0
- benchlab/csv_log/__init__.py +5 -0
- benchlab/csv_log/csv_logger_enhanced.py +416 -0
- benchlab/csv_log/message_batcher.py +361 -0
- benchlab/csv_log/requirements.txt +3 -0
- benchlab/csv_log/smart_retry.py +466 -0
- benchlab/graph/README.md +117 -0
- benchlab/graph/__init__.py +5 -0
- benchlab/graph/app.py +353 -0
- benchlab/graph/requirements.txt +2 -0
- benchlab/graph/runner.py +42 -0
- benchlab/graph/ui.py +288 -0
- benchlab/hwinfo/README.md +135 -0
- benchlab/hwinfo/__init__.py +5 -0
- benchlab/hwinfo/hwinfo_export.py +386 -0
- benchlab/hwinfo/requirements.txt +1 -0
- benchlab/launcher.py +387 -0
- benchlab/link/.env.EXAMPLE +10 -0
- benchlab/link/README.md +172 -0
- benchlab/link/__init__.py +1 -0
- benchlab/link/link_main.py +479 -0
- benchlab/main.py +462 -0
- benchlab/menu.py +729 -0
- benchlab/menu_classic.py +410 -0
- benchlab/mqtt/README.md +201 -0
- benchlab/mqtt/__init__.py +5 -0
- benchlab/mqtt/mqtt.config_template +2 -0
- benchlab/mqtt/mqtt_publisher.py +540 -0
- benchlab/mqtt/requirements.txt +3 -0
- benchlab/prefs.py +67 -0
- benchlab/restapi/.env.example +17 -0
- benchlab/restapi/__init__.py +5 -0
- benchlab/restapi/favicon.ico +0 -0
- benchlab/restapi/readme.md +202 -0
- benchlab/restapi/requirements.txt +5 -0
- benchlab/restapi/telemetry_api.py +808 -0
- benchlab/sources.py +515 -0
- benchlab/tools.py +147 -0
- benchlab/tui/README.md +266 -0
- benchlab/tui/__init__.py +5 -0
- benchlab/tui/config.py +477 -0
- benchlab/tui/requirements.txt +2 -0
- benchlab/tui/tui_core.py +1298 -0
- benchlab/tui/tui_main.py +418 -0
- benchlab/vu/README.md +64 -0
- benchlab/vu/VU-Server/NOTICE.md +13 -0
- benchlab/vu/VU-Server/README.md +80 -0
- benchlab/vu/VU-Server/Running_from_source_on_linux.md +97 -0
- benchlab/vu/VU-Server/__init__.py +0 -0
- benchlab/vu/VU-Server/assets/vu1_hello_world.png +0 -0
- benchlab/vu/VU-Server/community_applications.md +13 -0
- benchlab/vu/VU-Server/config.yaml +9 -0
- benchlab/vu/VU-Server/database.py +256 -0
- benchlab/vu/VU-Server/dial_driver.py +534 -0
- benchlab/vu/VU-Server/dials/Comms_Hub_Gauge.py +78 -0
- benchlab/vu/VU-Server/dials/Comms_Hub_Server.py +100 -0
- benchlab/vu/VU-Server/dials/__init__.py +0 -0
- benchlab/vu/VU-Server/dials/base_logger.py +100 -0
- benchlab/vu/VU-Server/installer/inc/icon.ico +0 -0
- benchlab/vu/VU-Server/installer/install.nsi +148 -0
- benchlab/vu/VU-Server/make_version.py +40 -0
- benchlab/vu/VU-Server/pylintrc +628 -0
- benchlab/vu/VU-Server/requirements.txt +9 -0
- benchlab/vu/VU-Server/serial_driver.py +244 -0
- benchlab/vu/VU-Server/server.py +670 -0
- benchlab/vu/VU-Server/server_config.py +255 -0
- benchlab/vu/VU-Server/server_dial_handler.py +334 -0
- benchlab/vu/VU-Server/vu_notifications.py +24 -0
- benchlab/vu/VU-Server/www/android-chrome-192x192.png +0 -0
- benchlab/vu/VU-Server/www/android-chrome-512x512.png +0 -0
- benchlab/vu/VU-Server/www/apple-touch-icon.png +0 -0
- benchlab/vu/VU-Server/www/assets/css/demo.css +291 -0
- benchlab/vu/VU-Server/www/assets/css/demo.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/demo.rtl.css +276 -0
- benchlab/vu/VU-Server/www/assets/css/demo.rtl.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-flags.css +1084 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-flags.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.css +1084 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-payments.css +528 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-payments.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.css +528 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-social.css +10 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-social.min.css +8 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.css +10 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.min.css +8 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-vendors.css +1504 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-vendors.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.css +1504 -0
- benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.min.css +9 -0
- benchlab/vu/VU-Server/www/assets/css/tabler.css +25813 -0
- benchlab/vu/VU-Server/www/assets/css/tabler.min.css +13 -0
- benchlab/vu/VU-Server/www/assets/css/tabler.rtl.css +25777 -0
- benchlab/vu/VU-Server/www/assets/css/tabler.rtl.min.css +13 -0
- benchlab/vu/VU-Server/www/assets/css/theme.min.css +261 -0
- benchlab/vu/VU-Server/www/assets/img/header.png +0 -0
- benchlab/vu/VU-Server/www/assets/img/logo.png +0 -0
- benchlab/vu/VU-Server/www/assets/js/dark-theme.js +35 -0
- benchlab/vu/VU-Server/www/assets/js/dark-theme.min.js +9 -0
- benchlab/vu/VU-Server/www/assets/js/demo.js +132 -0
- benchlab/vu/VU-Server/www/assets/js/demo.min.js +9 -0
- benchlab/vu/VU-Server/www/assets/js/jquery.min.js +2 -0
- benchlab/vu/VU-Server/www/assets/js/tabler.esm.js +7482 -0
- benchlab/vu/VU-Server/www/assets/js/tabler.esm.min.js +15 -0
- benchlab/vu/VU-Server/www/assets/js/tabler.js +7543 -0
- benchlab/vu/VU-Server/www/assets/js/tabler.min.js +15 -0
- benchlab/vu/VU-Server/www/assets/js/vu1_api.js +68 -0
- benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_key_settings.js +167 -0
- benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_keys.js +138 -0
- benchlab/vu/VU-Server/www/assets/js/vu1_gui_dial.js +179 -0
- benchlab/vu/VU-Server/www/assets/js/vu1_gui_home.js +60 -0
- benchlab/vu/VU-Server/www/assets/js/vu1_gui_root.js +125 -0
- benchlab/vu/VU-Server/www/favicon-16x16.png +0 -0
- benchlab/vu/VU-Server/www/favicon-32x32.png +0 -0
- benchlab/vu/VU-Server/www/favicon.ico +0 -0
- benchlab/vu/VU-Server/www/favicon.png +0 -0
- benchlab/vu/VU-Server/www/index.html +47 -0
- benchlab/vu/VU-Server/www/views/api_keys.html +151 -0
- benchlab/vu/VU-Server/www/views/dial.html +286 -0
- benchlab/vu/VU-Server/www/views/footer.html +27 -0
- benchlab/vu/VU-Server/www/views/header.html +86 -0
- benchlab/vu/VU-Server/www/views/key_settings.html +132 -0
- benchlab/vu/VU-Server/www/views/start.html +124 -0
- benchlab/vu/__init__.py +5 -0
- benchlab/vu/assets/Barlow-Bold.ttf +0 -0
- benchlab/vu/assets/bl_dial_144x200.png +0 -0
- benchlab/vu/assets/bl_logo_144x200.png +0 -0
- benchlab/vu/devices.py +166 -0
- benchlab/vu/requirements.txt +24 -0
- benchlab/vu/sensors.py +18 -0
- benchlab/vu/vu_dial.config_template +90 -0
- benchlab/vu/vu_logo_gen.py +97 -0
- benchlab/vu/vu_server.config_template +5 -0
- benchlab/vu/vu_server_config.py +40 -0
- benchlab/vu/vu_server_manager.py +192 -0
- benchlab/vu/vu_tui.py +919 -0
- benchlab/vu/vu_updater.py +540 -0
- benchlab/wigidash/README.md +182 -0
- benchlab/wigidash/__init__.py +5 -0
- benchlab/wigidash/assets/Inter-Bold.ttf +0 -0
- benchlab/wigidash/assets/Inter.ttf +0 -0
- benchlab/wigidash/assets/benchlab.png +0 -0
- benchlab/wigidash/benchlab_fleet.py +150 -0
- benchlab/wigidash/benchlab_graph.py +517 -0
- benchlab/wigidash/benchlab_overview.py +426 -0
- benchlab/wigidash/benchlab_telemetry.py +105 -0
- benchlab/wigidash/benchlab_ui.py +190 -0
- benchlab/wigidash/benchlab_utils.py +182 -0
- benchlab/wigidash/requirements.txt +9 -0
- benchlab/wigidash/wigidash_device.py +541 -0
- benchlab/wigidash/wigidash_manager.py +342 -0
- benchlab/wigidash/wigidash_session.py +355 -0
- benchlab/wigidash/wigidash_usb.py +247 -0
- benchlab/wigidash/wigidash_widget.py +88 -0
- benchlab_pytools-3.0.0.dist-info/METADATA +239 -0
- benchlab_pytools-3.0.0.dist-info/RECORD +184 -0
- benchlab_pytools-3.0.0.dist-info/WHEEL +4 -0
- benchlab_pytools-3.0.0.dist-info/entry_points.txt +2 -0
- benchlab_pytools-3.0.0.dist-info/licenses/LICENSE +21 -0
benchlab/tui/README.md
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# BENCHLAB Enhanced TUI
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The BENCHLAB Enhanced TUI provides a modern, feature-rich curses-based interface for real-time telemetry monitoring of BENCHLAB devices. This enhanced version includes significant improvements over the original implementation with better visuals, enhanced functionality, and improved user experience.
|
|
6
|
+
|
|
7
|
+
## 🚀 Key Features
|
|
8
|
+
|
|
9
|
+
### **Visual Enhancements**
|
|
10
|
+
- **Rich Color Scheme**: Color-coded telemetry data for better readability
|
|
11
|
+
- **Progress Bars**: Visual indicators for power, temperature, voltage, and fan duty cycles
|
|
12
|
+
- **Status Indicators**: Clear visual feedback for connection status and warnings
|
|
13
|
+
- **Enhanced Layout**: Better spacing, alignment, and information hierarchy
|
|
14
|
+
|
|
15
|
+
### **Advanced Telemetry Features**
|
|
16
|
+
- **Real-time Statistics**: Min/max/average values for power and temperature
|
|
17
|
+
- **Efficiency Monitoring**: System efficiency calculations and display
|
|
18
|
+
- **Thermal Status**: Automatic thermal status classification (NORMAL/WARNING/CRITICAL)
|
|
19
|
+
- **Voltage Status**: Color-coded voltage status indicators
|
|
20
|
+
- **Fan Statistics**: Average duty cycles and RPM monitoring
|
|
21
|
+
|
|
22
|
+
### **Enhanced Navigation & Interaction**
|
|
23
|
+
- **Multiple Navigation Methods**: Vim-style (hjkl) and arrow key navigation
|
|
24
|
+
- **Help System**: Built-in help modal with keybindings reference
|
|
25
|
+
- **Statistics Reset**: Quick reset of min/max statistics
|
|
26
|
+
- **Device Management**: Enhanced fleet management with connection status
|
|
27
|
+
|
|
28
|
+
### **Robustness & Error Handling**
|
|
29
|
+
- **Better Connection Recovery**: More graceful handling of disconnections
|
|
30
|
+
- **Enhanced Error Messages**: Clear error indicators and status messages
|
|
31
|
+
- **Connection Uptime**: Real-time connection duration tracking
|
|
32
|
+
- **Device Statistics**: Comprehensive device connection and performance stats
|
|
33
|
+
|
|
34
|
+
## 📊 Telemetry Tabs
|
|
35
|
+
|
|
36
|
+
The TUI has 8 tabs: `Fleet`, `Device`, `System`, `Motherboard`, `12VHPWR`, `Voltage`, `Temperature`, `Fans` (in this order; see `Config.TAB_NAMES` in `benchlab/tui/config.py`). Tabs can also be jumped to directly with the number keys `0`-`7`.
|
|
37
|
+
|
|
38
|
+
### **Fleet Tab (Tab 0)**
|
|
39
|
+
- Device list with connection status indicators
|
|
40
|
+
- Active device highlighting
|
|
41
|
+
- Connection uptime display
|
|
42
|
+
- Device selection and management
|
|
43
|
+
|
|
44
|
+
### **Device Tab (Tab 1)**
|
|
45
|
+
- Connection details and port information
|
|
46
|
+
- Device identification (Model, Vendor ID, Product ID, UID)
|
|
47
|
+
- Firmware version display
|
|
48
|
+
- TUI refresh interval
|
|
49
|
+
|
|
50
|
+
### **System / Motherboard / 12VHPWR Tabs (Tabs 2-4)**
|
|
51
|
+
- Real-time power consumption with progress bars
|
|
52
|
+
- Component power monitoring, split across dedicated System, Motherboard, and 12VHPWR tabs
|
|
53
|
+
- Efficiency calculations and display
|
|
54
|
+
- Min/max power statistics
|
|
55
|
+
- Power progress bars with color coding
|
|
56
|
+
|
|
57
|
+
### **Voltage Tab (Tab 5)**
|
|
58
|
+
- Vdd and Vref voltage monitoring with status
|
|
59
|
+
- VIN channel voltage display with progress bars
|
|
60
|
+
- Voltage status indicators (OK/LOW/HIGH)
|
|
61
|
+
- Average voltage calculations
|
|
62
|
+
- Color-coded voltage readings
|
|
63
|
+
|
|
64
|
+
### **Temperature Tab (Tab 6)**
|
|
65
|
+
- Chip and ambient temperature monitoring
|
|
66
|
+
- Temperature progress bars with thermal status
|
|
67
|
+
- Multiple temperature sensor readings
|
|
68
|
+
- Humidity monitoring
|
|
69
|
+
- Thermal status classification (NORMAL/WARNING/CRITICAL)
|
|
70
|
+
- Min/max temperature statistics
|
|
71
|
+
|
|
72
|
+
### **Fans Tab (Tab 7)**
|
|
73
|
+
- Fan duty cycle monitoring with progress bars
|
|
74
|
+
- RPM readings for each fan
|
|
75
|
+
- Fan enable/disable status
|
|
76
|
+
- External fan duty monitoring
|
|
77
|
+
- Fan statistics (average duty, max RPM, active count)
|
|
78
|
+
|
|
79
|
+
## 🎮 Keyboard Shortcuts
|
|
80
|
+
|
|
81
|
+
### **Navigation**
|
|
82
|
+
- `h`, `←` - Move to previous tab
|
|
83
|
+
- `l`, `→` - Move to next tab
|
|
84
|
+
- `0`-`7` - Jump directly to a tab by index
|
|
85
|
+
- `q`, `Q` - Quit application
|
|
86
|
+
- `?` - Show/hide help modal
|
|
87
|
+
|
|
88
|
+
### **Fleet Tab Specific**
|
|
89
|
+
- `↑`, `↓` - Navigate device list
|
|
90
|
+
- `Enter` - Select active device
|
|
91
|
+
|
|
92
|
+
### **Global Commands**
|
|
93
|
+
- `r`, `R` - Reset min/max statistics
|
|
94
|
+
- `f` - Rescan the fleet for devices
|
|
95
|
+
|
|
96
|
+
Note: navigation is arrow-key and `h`/`l` only — there is no vim-style `j`/`k` tab switching or full vim keybinding scheme.
|
|
97
|
+
|
|
98
|
+
## 🎨 Color Coding
|
|
99
|
+
|
|
100
|
+
- **Green**: Normal operation / Connected / OK status
|
|
101
|
+
- **Red**: Warnings / Errors / Disconnected / Critical status
|
|
102
|
+
- **Yellow**: High values / Caution / Warning status
|
|
103
|
+
- **Blue**: Information / Voltage readings
|
|
104
|
+
- **Cyan**: Temperature readings
|
|
105
|
+
- **White**: Headers and active elements
|
|
106
|
+
|
|
107
|
+
## 📈 Enhanced Features
|
|
108
|
+
|
|
109
|
+
### **Progress Bars**
|
|
110
|
+
All major telemetry values now include visual progress bars:
|
|
111
|
+
- Power consumption (0-500W scale)
|
|
112
|
+
- Temperature readings (0-100°C scale)
|
|
113
|
+
- Voltage levels (0-12V scale for VIN channels)
|
|
114
|
+
- Fan duty cycles (0-100% scale)
|
|
115
|
+
|
|
116
|
+
### **Statistics Tracking**
|
|
117
|
+
- **Power Statistics**: Track minimum and maximum power consumption
|
|
118
|
+
- **Temperature Statistics**: Monitor thermal performance over time
|
|
119
|
+
- **Connection Statistics**: Track uptime and connection history
|
|
120
|
+
- **Reset Functionality**: Quickly reset statistics with 'r' key
|
|
121
|
+
|
|
122
|
+
### **Status Indicators**
|
|
123
|
+
- **Connection Status**: Real-time connection monitoring
|
|
124
|
+
- **Thermal Status**: Automatic thermal classification
|
|
125
|
+
- **Voltage Status**: Per-channel voltage health monitoring
|
|
126
|
+
- **Fan Status**: Individual fan health and operation status
|
|
127
|
+
|
|
128
|
+
### **Enhanced Error Handling**
|
|
129
|
+
- Graceful handling of device disconnections
|
|
130
|
+
- Clear error messages and status indicators
|
|
131
|
+
- Automatic reconnection attempts
|
|
132
|
+
- Robust serial communication error recovery
|
|
133
|
+
|
|
134
|
+
## 🛠️ Installation
|
|
135
|
+
|
|
136
|
+
Ensure your environment has required dependencies:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pip install -r requirements.txt
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Dependencies (see `requirements.txt`):
|
|
143
|
+
- `pyserial>=3.5`
|
|
144
|
+
- `windows-curses>=2.4.1` (Windows only — the Python standard library's `curses` module isn't available on Windows, so this package provides it)
|
|
145
|
+
|
|
146
|
+
On Linux/macOS, `curses` ships with the Python standard library, so no extra curses package is needed there.
|
|
147
|
+
|
|
148
|
+
## 🚀 Usage
|
|
149
|
+
|
|
150
|
+
### Launch the Enhanced TUI
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
python -m benchlab -tui
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Running `python -m benchlab` with no flags at all also launches the interactive menu, from which the TUI can be selected; `-tui` is otherwise the default consumer tool.
|
|
157
|
+
|
|
158
|
+
### Configuration
|
|
159
|
+
|
|
160
|
+
- `-i`, `--interval` - Telemetry refresh interval in seconds (default: `1.0`)
|
|
161
|
+
- `--source` - Data source to read telemetry from: `direct` (serial, default), `fastapi`, `fastapi_custom`, `mqtt`, `named_pipe`, or `service_http`
|
|
162
|
+
- `--api-port` - FastAPI server port, used when `--source fastapi` (default: `8000`)
|
|
163
|
+
- `--mqtt-broker`, `--mqtt-port` - MQTT broker host/port, used when `--source mqtt` (defaults: `localhost` / `1883`)
|
|
164
|
+
- `--service-url` - C# BenchLab service HTTP API URL, used when `--source service_http` (default: `http://localhost:8585`)
|
|
165
|
+
|
|
166
|
+
Example:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
python -m benchlab -tui --source fastapi --api-port 8000 --interval 0.5
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## 📋 Requirements
|
|
173
|
+
|
|
174
|
+
- **Minimum Terminal Size**: 100x35 characters
|
|
175
|
+
- **Python 3.6+** with curses support
|
|
176
|
+
- **BENCHLAB devices** connected via USB
|
|
177
|
+
- **Serial port access** permissions (Linux: `dialout` group)
|
|
178
|
+
|
|
179
|
+
## 🔧 Technical Details
|
|
180
|
+
|
|
181
|
+
### **Enhanced Data Storage**
|
|
182
|
+
- **Telemetry History**: 100-point rolling history per device
|
|
183
|
+
- **Device Statistics**: Comprehensive performance tracking
|
|
184
|
+
- **Connection Tracking**: Uptime and disconnect monitoring
|
|
185
|
+
- **Memory Efficient**: Automatic cleanup and bounded storage
|
|
186
|
+
|
|
187
|
+
### **Performance Optimizations**
|
|
188
|
+
- **Efficient Redrawing**: Minimal screen updates
|
|
189
|
+
- **Smart Refresh**: Different refresh rates per tab
|
|
190
|
+
- **Memory Management**: Prevents memory leaks in long sessions
|
|
191
|
+
- **Resource Monitoring**: TUI resource usage tracking
|
|
192
|
+
|
|
193
|
+
### **Cross-Platform Support**
|
|
194
|
+
- **Windows**: Full COM port support
|
|
195
|
+
- **Linux**: ttyUSB/ttyACM/ttyS port detection
|
|
196
|
+
- **macOS**: Serial port compatibility
|
|
197
|
+
- **Terminal Compatibility**: Works with most terminal emulators
|
|
198
|
+
|
|
199
|
+
## 🎯 Comparison with Original TUI
|
|
200
|
+
|
|
201
|
+
| Feature | Original | Enhanced |
|
|
202
|
+
|---------|----------|----------|
|
|
203
|
+
| Color Scheme | Basic | Rich, semantic colors |
|
|
204
|
+
| Progress Bars | None | Comprehensive visual indicators |
|
|
205
|
+
| Statistics | None | Min/max/average tracking |
|
|
206
|
+
| Help System | None | Built-in help modal |
|
|
207
|
+
| Error Handling | Basic | Enhanced with clear indicators |
|
|
208
|
+
| Navigation | Arrow keys only | Arrow keys + `h`/`l` |
|
|
209
|
+
| Status Indicators | Text only | Color-coded + text |
|
|
210
|
+
| Connection Monitoring | Basic | Uptime + status tracking |
|
|
211
|
+
| Statistics Reset | None | Quick reset functionality |
|
|
212
|
+
| Visual Layout | Basic | Enhanced spacing and hierarchy |
|
|
213
|
+
|
|
214
|
+
## 🐛 Troubleshooting
|
|
215
|
+
|
|
216
|
+
### **Common Issues**
|
|
217
|
+
|
|
218
|
+
1. **Terminal too small**
|
|
219
|
+
- Resize terminal to at least 100x35 characters
|
|
220
|
+
- Message will appear if terminal is too small
|
|
221
|
+
|
|
222
|
+
2. **No devices found**
|
|
223
|
+
- Check USB connections
|
|
224
|
+
- Verify device firmware
|
|
225
|
+
- Check serial port permissions (Linux: `sudo usermod -a -G dialout $USER`)
|
|
226
|
+
|
|
227
|
+
3. **Permission errors**
|
|
228
|
+
- On Linux, add user to `dialout` group
|
|
229
|
+
- Restart terminal or reboot after group changes
|
|
230
|
+
|
|
231
|
+
4. **Connection issues**
|
|
232
|
+
- Check device power and connections
|
|
233
|
+
- Verify device is in correct mode
|
|
234
|
+
- Check for conflicting applications using the port
|
|
235
|
+
|
|
236
|
+
### **Debug Mode**
|
|
237
|
+
Enable debug logging for troubleshooting:
|
|
238
|
+
```bash
|
|
239
|
+
LOG_LEVEL=DEBUG python -m benchlab -tui
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## 🔄 Development
|
|
243
|
+
|
|
244
|
+
### **Adding New Features**
|
|
245
|
+
1. **New Telemetry Fields**: Update `translate_sensor_struct` to expose new metrics
|
|
246
|
+
2. **Custom Tabs**: Add to `TAB_NAMES` and implement tab logic
|
|
247
|
+
3. **Enhanced Visuals**: Leverage curses color pairs and formatting
|
|
248
|
+
4. **Statistics**: Extend `device_stats` structure
|
|
249
|
+
|
|
250
|
+
### **Customization**
|
|
251
|
+
- **Color Schemes**: Modify `curses.init_pair()` calls
|
|
252
|
+
- **Progress Bar Scales**: Adjust scaling factors in tab implementations
|
|
253
|
+
- **Status Thresholds**: Update temperature and voltage status logic
|
|
254
|
+
- **Keyboard Shortcuts**: Add to key handling section
|
|
255
|
+
|
|
256
|
+
## 📚 References
|
|
257
|
+
|
|
258
|
+
- [Python curses documentation](https://docs.python.org/3/library/curses.html)
|
|
259
|
+
|
|
260
|
+
## 🤝 Contributing
|
|
261
|
+
|
|
262
|
+
Enhancements and improvements are welcome! Please follow the existing code patterns and ensure backward compatibility where possible.
|
|
263
|
+
|
|
264
|
+
## 📄 License
|
|
265
|
+
|
|
266
|
+
This project is part of the BenchLab suite. See the main project license for details.
|