changes
This commit is contained in:
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
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user