This commit is contained in:
Miguel Fuertes committed 2025-10-19 17:03:39 +02:00
1 parent 2b3385261b
commit 7156e0a506
2 files changed
+24 -18

No files matched your search

@@ -11,23 +11,22 @@ VMIN=$(cat "$BMS_PATH/voltage_min_design" 2>/dev/null)
# Check charging status
CHARGING_STATUS=$(cat "$BMS_PATH/status" 2>/dev/null)
CHARGING_PREFIX=""
CHARGING_FLAG=""
if [ "$CHARGING_STATUS" = "Charging" ] || [ "$CHARGING_STATUS" = "Full" ]; then
CHARGING_PREFIX="+"
CHARGING_FLAG="-c"
fi
if [ -n "$VOLTAGE" ] && [ -n "$VMAX" ] && [ -n "$VMIN" ]; then
BATTERY_PCT=$(awk "BEGIN {pct = (($VOLTAGE - $VMIN) / ($VMAX - $VMIN)) * 100; if(pct < 0) pct=0; if(pct > 100) pct=100; printf \"%.0f\", pct}")
BATTERY="${CHARGING_PREFIX}${BATTERY_PCT}"
BATTERY=$(awk "BEGIN {pct = (($VOLTAGE - $VMIN) / ($VMAX - $VMIN)) * 100; if(pct < 0) pct=0; if(pct > 100) pct=100; printf \"%.0f\", pct}")
else
BATTERY="${CHARGING_PREFIX}100"
BATTERY=100
fi
# === WiFi AP ===
SHOW_QR=0
QR_FLAG=""
if ip link show phy0-ap0 2>/dev/null | grep -q "state UP"; then
SHOW_QR=1
QR_FLAG="-q"
fi
# === MODEM (OPTIMIZED - single mmcli call + operator cache) ===
@@ -87,8 +86,4 @@ PASSWORD=$(uci get wireless.@wifi-iface[0].key 2>/dev/null || echo "")
HOSTNAME=$(uci get system.@system[0].hostname 2>/dev/null || echo "Router")
# === Update Display ===
if [ "$SHOW_QR" -eq 1 ]; then
/usr/bin/router-display -q -b "$BATTERY" -n "$OPERATOR" -t "$NETWORK" -s "$SSID" -p "$PASSWORD" -h "$HOSTNAME" > /dev/fb0
else
/usr/bin/router-display -b "$BATTERY" -n "$OPERATOR" -t "$NETWORK" -s "$SSID" -p "$PASSWORD" -h "$HOSTNAME" > /dev/fb0
fi
/usr/bin/router-display $QR_FLAG $CHARGING_FLAG -b "$BATTERY" -n "$OPERATOR" -t "$NETWORK" -s "$SSID" -p "$PASSWORD" -h "$HOSTNAME" > /dev/fb0
+17 -6
View File
@@ -27,6 +27,7 @@ typedef struct {
typedef struct {
int battery;
int charging; // NEW: charging flag
char operator[32];
char network_type[8];
char ssid[64];
@@ -206,27 +207,36 @@ void generate_display(Framebuffer *fb, DisplayConfig *cfg, FT_Face face) {
fb_draw_text(fb, face, hostname_text, 2, line2_y, fontsz);
char battery_text[8];
snprintf(battery_text, sizeof(battery_text), "%d%%", cfg->battery);
// NEW: Format battery with charging indicator
char battery_text[16];
if (cfg->charging) {
snprintf(battery_text, sizeof(battery_text), "+%d%%", cfg->battery);
} else {
snprintf(battery_text, sizeof(battery_text), "%d%%", cfg->battery);
}
int battery_width = fb_get_text_width(face, battery_text, fontsz);
fb_draw_text(fb, face, battery_text, WIDTH - battery_width - 2, line2_y, fontsz);
}
void print_usage(const char *prog) {
fprintf(stderr, "Usage: %s [OPTIONS]\n", prog);
fprintf(stderr, " -b NUM Battery (0-100)\n");
fprintf(stderr, " -b NUM Battery percentage (0-100)\n");
fprintf(stderr, " -c Charging indicator (adds + prefix)\n");
fprintf(stderr, " -n NAME Operator name\n");
fprintf(stderr, " -t TYPE Network type (4G, LTE)\n");
fprintf(stderr, " -s SSID WiFi SSID\n");
fprintf(stderr, " -p PASS WiFi password\n");
fprintf(stderr, " -h HOST Hostname\n");
fprintf(stderr, " -q Show QR code (default: show logo)\n");
fprintf(stderr, " -c Convert text to UPPERCASE\n");
fprintf(stderr, " -u Convert text to UPPERCASE\n");
}
int main(int argc, char *argv[]) {
DisplayConfig cfg = {
.battery = 100,
.charging = 0, // NEW: default not charging
.operator = "Unknown",
.network_type = "4G",
.ssid = "WiFi",
@@ -237,16 +247,17 @@ int main(int argc, char *argv[]) {
};
int opt;
while ((opt = getopt(argc, argv, "b:n:t:s:p:h:qc")) != -1) {
while ((opt = getopt(argc, argv, "b:Cn:t:s:p:h:qc")) != -1) { // NEW: Added 'C' flag
switch (opt) {
case 'b': cfg.battery = atoi(optarg); break;
case 'c': cfg.charging = 1; break; // NEW: charging flag
case 'n': strncpy(cfg.operator, optarg, 31); break;
case 't': strncpy(cfg.network_type, optarg, 7); break;
case 's': strncpy(cfg.ssid, optarg, 63); break;
case 'p': strncpy(cfg.password, optarg, 63); break;
case 'h': strncpy(cfg.hostname, optarg, 31); break;
case 'q': cfg.show_qr = 1; break;
case 'c': cfg.uppercase = 1; break;
case 'u': cfg.uppercase = 1; break;
default:
print_usage(argv[0]);
return 1;