Browse Source

www: show build info on status screen; prep for unified build info

Show the current build information on the status screen in the web
GUI. Add some infrastructure to distribute common build information
everywhere.
H. Peter Anvin 2 năm trước cách đây
mục cha
commit
8df4011a1e

+ 13 - 6
Makefile

@@ -21,16 +21,23 @@ $(SUBDIRS):
 
 .PHONY: version.mk
 version.mk:
-	if [ -d '$(GIT_DIR)' ]; then \
-	    TZ=UTC0 git log -n 1 --date=local --abbrev=8 \
-		--pretty='format:COMMIT_VERSION=$(PROJECT)-%(describe:abbrev=6)%nCOMMIT_ID=%H%nCOMMIT_MAGIC=%h%nCOMMIT_DATE=%cd UTC%n' > $@.tmp ; \
-		if cmp -q '$@' '$@.tmp' 2>/dev/null; then \
-			rm -f $@.tmp; else mv -f $@.tmp $@; fi \
-	fi
+	if git log -n 1 --date=iso --pretty="format:\
+PROJECT=$(PROJECT)%n\
+COMMIT_VERSION=%(describe:abbrev=6)%n\
+COMMIT_ID=%H%nCOMMIT_MAGIC=%h%n\
+COMMIT_DATE=%ci%n\
+COMMIT_TIME=%ct%n\
+COMMIT_AUTHOR=%an <%ae>%n\
+" > '$@.tmp' 2>/dev/null && \
+	! cmp -s '$@' '$@.tmp' 2>/dev/null; then \
+	mv -f '$@.tmp' '$@'; else rm -f '$@.tmp'; fi
 
 version.%: version.mk version.%.sed
 	sed -f $@.sed $< > $@
 
+.PHONY: version
+version: version.mk version.h version.vh
+
 $(SUBDIRS): version.mk
 
 esp32: version.h

+ 1 - 2
esp32/.gitignore

@@ -9,5 +9,4 @@ cache/
 *.partitions.bin
 *.elf
 *.map
-
-
+www/version

+ 3 - 0
esp32/Makefile

@@ -33,6 +33,9 @@ $(TARGET): $(shell find $(SKETCH) -type f) $(GENFILES)
 .PHONY: zip
 zip: zipexclude
 	mkdir -p zip
+	if ! cmp -q ../version.mk www/version 2>/dev/null; then \
+		cp -f ../version.mk www/version; \
+	fi
 	cd www && \
 		TZ=GMT0 \
 		$(ZIP) -9DrpX -FS ../zip/www.zip . -x@../zipexclude

BIN
esp32/output/max80.ino.bin


+ 1 - 1
esp32/www/config.html

@@ -18,7 +18,7 @@
 	<label class="wifi-psk">
 	  <span>Network password (PSK):</span>
 	  <input class="mono" type="password" name="wifi.psk" />
-	  <button type="button" class="show" onclick="showpwd()"><span class="show">show</span><span class="hide">hide</span></button>
+	  <button type="button" class="show" onclick="showpwd()"><span class="show">Show</span><span class="hide">Hide</span></button>
 	</label>
       </fieldset>
       <fieldset class="datetime">

+ 6 - 4
esp32/www/lang/sv

@@ -5,8 +5,7 @@ body .update=Uppdatera
 title.status=MAX80: Status
 title.config=MAX80: Konfiguration
 title.update=MAX80: Uppdatera
-.firmware legend=Mjukvara
-.firmware .submit=Uppdatera mjukvara
+.fw legend=Mjukvara
 .network legend=Nätverk
 .wifi-ssid span=Nätverksnamn (SSID):
 .wifi-psk span=Lösenord (PSK):
@@ -27,8 +26,10 @@ button .hide=Göm
 .onerr .console=Se serieport för mer detaljerad status
 .wifi-sta legend=Wifi-klient (normal)
 .wifi-ap legend=Wifi-accesspunkt (backup)
-.hwver span=Hårdvaruversion:
-.fwdate span=Mjukvaran kompilerad:
+.hw .ver span=Hårdvaruversion:
+.fw .ver span=Mjukvaruversion:
+.fw .date span=Commitdatum:
+.fw .commit span=Commit-ID:
 .fpgaok span=FPGA aktiv:
 .net-connected span=Ansluten:
 .net-connected-clients span=Anslutna klienter:
@@ -41,3 +42,4 @@ button .hide=Göm
 .localtime span=Systemklocka:
 .refresh legend=Statusuppdatering
 .refresh label span:first-child=Intervall:
+button.fromfile=Uppdatera från fil

+ 1 - 1
esp32/www/max80.css

@@ -147,7 +147,7 @@ output {
     font-weight: bold;
     text-decoration: underline;
 }
-.getstatus :disabled {
+.ro input:disabled {
     font-family: inherit;
     font-size: inherit;
     background: inherit;

+ 21 - 7
esp32/www/status.html

@@ -17,28 +17,42 @@
 		  const when = parseInt(valval(rt)) * 1000;
 		  ref_tmr = setTimeout(ref_status, when);
 	      });
+	  fetchconfig('version')
+	      .then((map) => initform('getstatus',map,true))
+	      .catch(err => {});
       }
     </script>
   </head>
   <body>
     <x-inc src="head.html"></x-inc>
     <h1 class="status">Status</h1>
-    <form class="getstatus" id="getstatus">
-      <fieldset class="status-max80">
+    <form id="getstatus" class="ro">
+      <fieldset class="hw">
 	<legend>MAX80</legend>
-	<label class="hwver">
+	<label class="ver">
 	  <span>Hardware version:</span>
 	  <input type="text" name="max80.hw.ver" />
 	</label>
-	<label class="fwdate">
-	  <span>Firmware build date:</span>
-	  <input type="text" name="max80.fw.date" />
-	</label>
 	<label class="fpgaok">
 	  <span>FPGA online:</span>
 	  <input type="checkbox" name="max80.fpga" />
 	</label>
       </fieldset>
+      <fieldset class="fw">
+	<legend>Firmware</legend>
+	<label class="ver">
+	  <span>Firmware version:</span>
+	  <input type="text" name="COMMIT_VERSION" />
+	</label>
+	<label class="date">
+	  <span>Firmware commit date:</span>
+	  <input type="text" name="COMMIT_DATE" />
+	</label>
+	<label class="commit">
+	  <span>Firmware commit ID:</span>
+	  <input type="text" name="COMMIT_ID" />
+	</label>
+      </fieldset>
       <fieldset class="wifi-sta">
 	<legend>Wifi Client</legend>
 	<label class="net-connected">

+ 3 - 3
esp32/www/update.html

@@ -10,11 +10,11 @@
     <h1 class="update">Update</h1>
     <form id="upload" action="sys/fwupdate" method="post"
 	  onsubmit="uploadfile()" data-ref="10" data-ref-url="status.html">
-      <fieldset class="firmware">
+      <fieldset class="fw">
 	<legend>Firmware</legend>
 	<input type="file" name="file" hidden accept=".fw" onchange="uploadfile()" />
-	<button class="submit" type="submit" id="upload.start"
-		onclick="sib(this,'input').value=''">Update firmware</button>
+	<button type="submit" class="fromfile" id="upload.start"
+		onclick="sib(this,'input').value=''">Update from file</button>
 	<progress value="0"></progress>
       </fieldset>
       <output></output>

BIN
fpga/output/v1.fw


BIN
fpga/output/v2.fw


+ 3 - 0
version.h.sed

@@ -1,5 +1,8 @@
 /^COMMIT_MAGIC=/s/=/ 0x/
+/^COMMIT_TIME=/s/=/ /
 t def
+s/\\/\\\\/g
+s/"/\\"/g
 s/=/ "/
 s/$/"/
 : def

+ 3 - 0
version.vh.sed

@@ -1,5 +1,8 @@
 /^COMMIT_MAGIC=/s/=/ 32'h/
+/^COMMIT_TIME=/s/=/ 32'd/
 t def
+s/\\/\\\\/g
+s/"/\\"/g
 s/=/ "/
 s/$/"/
 : def