Ver Fonte

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 há 2 anos atrás
pai
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