Porównaj commity
57 Commity
refs/heads
...
master
Autor | SHA1 | Data |
---|---|---|
![]() |
e4e82c9043 | |
![]() |
8fbaab750b | |
![]() |
f88fe7b8cf | |
![]() |
d25692b209 | |
![]() |
769896ae3f | |
![]() |
591662cb64 | |
![]() |
3c645ca232 | |
![]() |
bfa18ff5eb | |
![]() |
307aeb0c80 | |
![]() |
88c7994e47 | |
![]() |
7dc1c3c728 | |
![]() |
a8cf5ce0a1 | |
![]() |
f5d114b400 | |
![]() |
19136a6405 | |
![]() |
64d397835e | |
![]() |
85236cda21 | |
![]() |
c68cf822e6 | |
![]() |
65f10b62e7 | |
![]() |
7aa902c4e4 | |
![]() |
5e67590004 | |
![]() |
0042ca48b7 | |
![]() |
9f6e6d9ee4 | |
![]() |
a121c6b8c7 | |
![]() |
55018abf7b | |
![]() |
4746266cce | |
![]() |
46f37ba4d0 | |
![]() |
9b66a4cc07 | |
![]() |
08997f5720 | |
![]() |
5acc023193 | |
![]() |
17c278c53b | |
![]() |
57c2d372c0 | |
![]() |
e50a214c38 | |
![]() |
db1ee46dc1 | |
![]() |
7ad89c177c | |
![]() |
0d06bac161 | |
![]() |
7dbacac67c | |
![]() |
3344a44b89 | |
![]() |
02dedd3517 | |
![]() |
5a1a6d7d5a | |
![]() |
61f4fe9528 | |
![]() |
4a5a8251f3 | |
![]() |
d833835e16 | |
![]() |
a00555f9cc | |
![]() |
52096d7a45 | |
![]() |
31fb53ca1e | |
![]() |
8f6a308c50 | |
![]() |
883c9f84cb | |
![]() |
c8d7a6c71f | |
![]() |
5bcb7ef0c6 | |
![]() |
aa37003826 | |
![]() |
30c2cf8b68 | |
![]() |
fe20713a8a | |
![]() |
91f86a5456 | |
![]() |
18c0a2e583 | |
![]() |
d892cf5206 | |
![]() |
2c2ebfb051 | |
![]() |
6c485f5a52 |
|
@ -14,6 +14,7 @@
|
|||
"lora_rx_en": true,
|
||||
"lora_tx_en": true,
|
||||
"txPower": 23,
|
||||
"preambleLen": 8,
|
||||
"lora_cradapt": false,
|
||||
"lora_rssi2p": 34,
|
||||
"snraprsis": true,
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
</div>
|
||||
<article>
|
||||
<form action="/save_wifi_cfg" method="post">
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container full">
|
||||
<div>
|
||||
<label for="wifi_en">Enable Wifi</label>
|
||||
<select id="wifi_en" name="wifi_en">
|
||||
|
@ -29,41 +29,14 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div id="wifi_list">
|
||||
<label for="wifi_ssid">Network</label>
|
||||
<input type="button" value="Scan WiFi" id="scan_wifi_btn" onclick="scanWifi();">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="wifi_ssid">WiFi SSID</label>
|
||||
<input class="u-full-width" type="text" name="wifi_ssid" placeholder="Your Wifi SSID" title="Your Wifi SSID" id="wifi_ssid">
|
||||
</div>
|
||||
<div>
|
||||
<label for="wifi_password">WiFi Password</label>
|
||||
<input class="u-full-width" type="password" name="wifi_password" id="wifi_password" placeholder="Your WiFi Password" title="Your WiFi Password, 8 characters minimum">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="wifi_pwrSTA">TXPWR as STA</label>
|
||||
<select id="wifi_pwrSTA" name="wifi_pwrSTA">
|
||||
<option value="80">Max (20dBm, 100mW, suggested)</option>
|
||||
<option value="8">Min (2dBm, 2mW)</option>
|
||||
<option value="44">Low (11dBm, 12mW)</option>
|
||||
<option value="60">Mid (15dBm, 32mW)</option>
|
||||
<option value="72">High (18dBm, 63mW)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">AP settings</h5>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="ap_password">AUTO AP Password</label>
|
||||
<input class="u-full-width" type="password" name="ap_password" id="ap_password" placeholder="AUTO AP Password" title="AUTO AP Password, 8 characters minimum">
|
||||
<input type="password" name="ap_password" id="ap_password" placeholder="AUTO AP Password" title="AUTO AP Password, 8 characters minimum">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="wifi_pwrAP">TXPWR as AP</label>
|
||||
<select id="wifi_pwrAP" name="wifi_pwrAP">
|
||||
|
@ -75,18 +48,46 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">STA settings</h5>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<div id="wifi_list">
|
||||
<label for="wifi_ssid">Network</label>
|
||||
<input type="button" value="Scan WiFi" id="scan_wifi_btn" onclick="scanWifi();">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="wifi_ssid">WiFi SSID</label>
|
||||
<input type="text" name="wifi_ssid" placeholder="Your Wifi SSID" title="Your Wifi SSID" id="wifi_ssid">
|
||||
</div>
|
||||
<div>
|
||||
<label for="wifi_password">WiFi Password</label>
|
||||
<input type="password" name="wifi_password" id="wifi_password" placeholder="Your WiFi Password" title="Your WiFi Password, 8 characters minimum">
|
||||
</div>
|
||||
<div>
|
||||
<label for="wifi_pwrSTA">TXPWR as STA</label>
|
||||
<select id="wifi_pwrSTA" name="wifi_pwrSTA">
|
||||
<option value="80">Max (20dBm, 100mW, suggested)</option>
|
||||
<option value="8">Min (2dBm, 2mW)</option>
|
||||
<option value="44">Low (11dBm, 12mW)</option>
|
||||
<option value="60">Mid (15dBm, 32mW)</option>
|
||||
<option value="72">High (18dBm, 63mW)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="ntp_server">NTP Server</label>
|
||||
<input type="text" name="ntp_server" id="ntp_server" placeholder="pool.ntp.org" title="NTP Server name or IP Address. I.e. pool.ntp.org. If your igate is in the HAMNET, use ntp.hc.r1.ampr.org.">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="syslog_server">Syslog Server</label>
|
||||
<input type="text" name="syslog_server" id="syslog_server" placeholder="" title="Syslog Server name or IP Address. Leave empty to switch off. If unsure, you may use the broadcast address 255.255.255.255. Syslog needs do be compiled in (it's by default now)">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="wifi_failAP">Allow failback to Mode AP</label>
|
||||
<input name="wifi_failAP" id="wifi_failAP" type="checkbox" value="1" title="
|
||||
|
@ -103,7 +104,7 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
</div>
|
||||
<div>
|
||||
<label for="tncsrvr_en">Enable TNC-Server</label>
|
||||
<input name="tncsrvr_en" id="tncsrvr_en" type="checkbox" value="1" title="Enable TNC-Server (KISS over TCP) on port tcp 8001. If your device in open networks like HAMNET, enable it only when needed and consider firewalling.">
|
||||
<input name="tncsrvr_en" id="tncsrvr_en" type="checkbox" value="1" title="Enable TNC-Server (KISS over TCP) on port tcp 8001. If your device in open networks like HAMNET, enable it only when needed and consider firewalling. If you use aprsdroid connected to this devices in WiFi-mode-AP, configure: 'Protocol' 'TNC (KISS)', 'Connection type' 'TCP/IP' and 'Server' '192.168.4.1:8001'">
|
||||
</div>
|
||||
<div>
|
||||
<label for="gpssrv_en">Enable GPS-Server</label>
|
||||
|
@ -128,7 +129,7 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="lora_freq">Main Frequency [MHz]</label>
|
||||
<input name="lora_freq" id="lora_freq" type="number" min="433.0000" max="928.0000" step="0.0001" title="LoRa center frequency between 433.0001 and 928.0000. I.e. 433.775">
|
||||
<input name="lora_freq" id="lora_freq" type="number" min="430.1000" max="928.0000" step="0.0001" title="LoRa center frequency between 430.1000 and 928.0000. I.e. 433.775">
|
||||
</div>
|
||||
<div>
|
||||
<label for="lora_speed">Speed</label>
|
||||
|
@ -143,7 +144,7 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
</div>
|
||||
<div>
|
||||
<label for="lora_tx_en">Enable LoRa transmitter</label>
|
||||
<input name="lora_tx_en" id="lora_tx_en" type="checkbox" value="1" title="Allow TX on LoRa. Disable this if you like to prevent TX under all circumstances (i.e. if your tracker is behind an rx-amplifier)">
|
||||
<input name="lora_tx_en" id="lora_tx_en" type="checkbox" value="1" title="Allow TX on LoRa. Disable this if you like to prevent TX under all circumstances (i.e. if your tracker is behind an rx-amplifier). If this checkbox keeps off after trying to enable, you might check if your configured CALLSIGN-SSID is correct (see explanation there).">
|
||||
</div>
|
||||
<div>
|
||||
<label for="lora_rx_en">Enable LoRa receiver</label>
|
||||
|
@ -153,6 +154,10 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<label for="txPower">TX power [dBm]</label>
|
||||
<input name="txPower" id="txPower" type="number" min="0" max="23" title="LoRa TX Power. Range 0 to 23dBm">
|
||||
</div>
|
||||
<div>
|
||||
<label for="preambleLen">TX preamble length [symbols]</label>
|
||||
<input name="preambleLen" id="preambleLen" type="number" min="8" max="4096" title="A larger preamble size improves packet detection but increases transmission time. Range 8 to 4096 symbols. 8 is default. Please experiment with 12. This setting only affects transmission on Main frequency." placeholder="8">
|
||||
</div>
|
||||
<div>
|
||||
<label for="lora_cradapt">Automatic CodeRate adaption on TX</label>
|
||||
<input name="lora_cradapt" id="lora_cradapt" type="checkbox" value="1" title="Enable automatic CR adaption. Has only influence on TX (RX can decode every CR). Use this only if you are not a WIDE1 or WIDE2 digi (here you like to send always with higher speed). Still testing, if it behaves good to our network. Currently works only for SF12 modes, because for SF 10 and lower the code for programming CR+SF+BW-combination has not been written yet">
|
||||
|
@ -183,16 +188,16 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<option value="56">To APRSIS* and RF* and KISS* (also a good setting!)</option>
|
||||
<option value="35">To APRSIS* and RF and KISS (~)</option>
|
||||
<option value="49">To APRSIS* and RF and KISS* (~)</option>
|
||||
<option value="57">!Too much options. GUI needs redisign!</option>
|
||||
<option value="9">!I.e. To RF* and RF would not make any sense!<option>
|
||||
<option value="57">!Too much options. GUI needs redesign!</option>
|
||||
<option value="9">!I.e. To RF* and RF would not make any sense!</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
More info for SNR/RSSI path encoding see documentation section below
|
||||
<div>
|
||||
<label for="snraprsis">SNR/RSSI-encoding on kiss: compatible to APRS-IS?</label>
|
||||
<input name="snraprsis" id="snraprsis" type="checkbox" value=1 title="Add snr+rssi at last digipeater, without digipeated flag. Use this for APRS-IS connections. If you have connected a digipeater software to kiss, this option has to be switched off">
|
||||
<div>
|
||||
More info for SNR/RSSI path encoding see documentation section below
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
|
@ -201,7 +206,7 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="aprs_callsign">Callsign and SSID *</label>
|
||||
<input class="u-full-width" type="text" minlength="3" maxlength="9" name="aprs_callsign" placeholder="NOCALL-1" id="aprs_callsign" title="your callsign with SSID">
|
||||
<input class="u-full-width" type="text" minlength="3" maxlength="9" name="aprs_callsign" placeholder="NOCALL-1" id="aprs_callsign" title="your callsign with SSID. SSID is optional and should be in the range of -1 to -15. SSIDs like '-L4' are ok for aprs-is, but should not be sent on RF; thus LoRa TX will be disabled.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_relay_path">Relay Path</label>
|
||||
|
@ -215,9 +220,13 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<label for="aprs_symbol">Symbol</label>
|
||||
<input class="u-full-width" type="text" minlength="1" maxlength="1" name="aprs_symbol" id="aprs_symbol" title="select an icon, for example: [ - jogger, Y - jacht, > - car, b - bike">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_objnam">ObjectName (optional)</label>
|
||||
<input class="u-full-width" type="text" minlength="0" maxlength="9" name="aprs_objnam" id="aprs_objnam" title="This is optional; most users will leave this empty. If you set this to DL1AAA-L4 because like to see your gateway as DL1AAA-L4 on the map (and also like to send on RF), we'll send our position as type APRS Object (instead of a normal aprs position), with the configured Callsign you configured above.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_alt_r">Altitude ratio [%]</label>
|
||||
<input name="aprs_alt_r" id="aprs_alt_r" type="number" min="0" max="100" title="Altitude ratio every n'th packet.. Use 100 for every packet, 0 for no altitude, or any number in between. Recommended: 10 (altitude every tenth's frame). If you use compression ('Send Course/Speed along with Altitude switched off') for reducing airtime (-> then n% altitude-encoding packets are sent, and 100-n% course/speed-encoded packets), you may choose 50 for ballons, where speed/dir and altitude are of equal interrest; if you choose 10, then 90 % of your transmissions encode speed/direction. Cave: if you set it to 100 and switch next option 'Always send CSE/SPD and ALT' to off, then only altitude packets are sen; if you switch the next option on, then altitude is always sent and this configured Altitude ratio is ignored. If you configure 0, altitude is never sent (-> only compressed speed). If ratio is < 100 and gps altitude is not refreshed, only encoded speed is sent." placeholder="10">
|
||||
<input name="aprs_alt_r" id="aprs_alt_r" type="number" min="0" max="100" title="Altitude ratio every n'th packet.. Use 100 for every packet, 0 for no altitude, or any number in between. Recommended: 10 (altitude every tenth's beacon). If you use compression ('Send Course/Speed along with Altitude switched off') for reducing airtime (-> then n% altitude-encoding packets are sent, and 100-n% course/speed-encoded packets), you may choose 50 for ballons, where speed/dir and altitude are of equal interrest; if you choose 10, then 90 % of your transmissions encode speed/direction. Cave: if you set it to 100 and switch next option 'Always send CSE/SPD and ALT' to off, then only altitude packets are sen; if you switch the next option on, then altitude is always sent and this configured Altitude ratio is ignored. If you configure 0, altitude is never sent (-> only compressed speed). If ratio is < 100 and gps altitude is not refreshed, only encoded speed is sent." placeholder="10">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_CSandA">Always send CSE/SPD and ALT</label>
|
||||
|
@ -240,13 +249,25 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<input name="aprs_batt" id="aprs_batt" type="checkbox" value="1" title=" show battery voltage after personal comment">
|
||||
</div>
|
||||
<div>
|
||||
*) requires reboot only if connection to aprs-is enabled
|
||||
<label for="aprs_stat_wl">Add winlink notification to position comment once/hour</label>
|
||||
<select id="aprs_stat_wl" name="aprs_stat_wl">
|
||||
<option value="0">off (default)</option>
|
||||
<option value="1">on, if bluetooth kiss device is connected</option>
|
||||
<option value="2">on</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_stat_qrt">Send Status-packet on shutdown</label>
|
||||
<input name="aprs_stat_qrt" id="aprs_stat_qrt" type="checkbox" value="1" title=" Send status packet 'QRT' right before shutdown on RF. See also option 'Auto power off' if external power is switched off">
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">Telemetry Settings</h5>
|
||||
<div>
|
||||
*) requires reboot only if connection to aprs-is enabled
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">Telemetry Settings</h5>
|
||||
</div>
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="tnc_tel">Enable Self Telemetry</label>
|
||||
<input name="tnc_tel" id="tnc_tel" type="checkbox" value="1" title="send self telemetry data">
|
||||
|
@ -281,34 +302,34 @@ You like to enable, if you use your tracker portable and it should automatically
|
|||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">Fixed Beaconing Settings</h5>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="aprs_fixed_beac">Fixed Beacon</label>
|
||||
<input name="aprs_fixed_beac" id="aprs_fixed_beac" type="checkbox" value="1" title="enable fixed beacon when GPS is disabled or no fix">
|
||||
<input name="aprs_fixed_beac" id="aprs_fixed_beac" type="checkbox" value="1" title="enable fixed beacon when GPS is disabled or no fix". If set to off, your tracker will not send the configured fixed position (but only the current GPS position, after GPS-fix), except: if you maually send a position-beacon (using middle button, web-interface, cli), it starts sending in Fixed Beacon Interval (like Fixed Beacon would be enabled)>
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_fb_interv">Fixed Beacon Interval [s]</label>
|
||||
<input name="aprs_fb_interv" id="aprs_fb_interv" type="number" min="120" title="time between sending a beacon if Fixed Beacon option is selected. 1800 or 3600 is recommended for users; 900 or 1800 for digis. Min 120. This beacon value is also used if GPS is lost when smart-beacooning. If it is >= sb_max_intervall, this value is used.">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="aprs_lat_p">Latitude</label>
|
||||
<input class="u-full-width" type="text" minlength="0" name="aprs_lat_p" id="aprs_lat_p" title="latitude for fixed beacon, APRS format for example: 5215.00N (this is ddmm.mmN). 'dd.nnnnN', '-dd.nnnn', 'dd mm[.nnn]' and 'dd mm ss' and 'dd mm' ss"' and 'dd-mm[.nn]N' are also supported. If position is south, you can prefix '-' instead of writing 'S' behind the coordinate. '-nnS' does not make sense. If you like to add a locator, add it here and leave longitude field blank. If GPS is enabled and a valid position has been received, that one will be used instead of the configured one, until the next system reboot">
|
||||
<input type="text" minlength="0" name="aprs_lat_p" id="aprs_lat_p" title="latitude for fixed beacon, APRS format for example: 5215.00N (this is ddmm.mmN). 'dd.nnnnN', '-dd.nnnn', 'dd mm[.nnn]' and 'dd mm ss' and 'dd mm' ss"' and 'dd-mm[.nn]N' are also supported. If position is south, you can prefix '-' instead of writing 'S' behind the coordinate. '-nnS' does not make sense. If you like to add a locator, add it here and leave longitude field blank. APRS spec defindes a special notation for null-position: 0000.00N 00000.00W (W, not E). If GPS is enabled and a valid position has been received, that one will be used instead of the configured one, until the next system reboot">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprs_lon_p">Longitude</label>
|
||||
<input class="u-full-width" type="text" minlength="0" name="aprs_lon_p" id="aprs_lon_p" title="longtitude for fixed beacon, APRS format for example 02050.59Ei (this is ddd.mmE). 'ddd.nnnnE', '-ddd.nnnn', 'ddd mm[.nnn]' and 'ddd mm ss' and 'ddd mm' ss"' and 'ddd-mm[.nn]E' are also supported. If position is west, you can prefix '-' instead of writing 'W' behind the coordinate. '-nnW' does not make sense.. If you like to add a locator, add it to the latitude field and leave this field blank.">
|
||||
<input type="text" minlength="0" name="aprs_lon_p" id="aprs_lon_p" title="longtitude for fixed beacon, APRS format for example 02050.59Ei (this is ddd.mmE). 'ddd.nnnnE', '-ddd.nnnn', 'ddd mm[.nnn]' and 'ddd mm ss' and 'ddd mm' ss"' and 'ddd-mm[.nn]E' are also supported. If position is west, you can prefix '-' instead of writing 'W' behind the coordinate. '-nnW' does not make sense.. If you like to add a locator, add it to the latitude field and leave this field blank. APRS spec defindes a special notation for null-position: 0000.00N 00000.00W (W, not E). If GPS is enabled and a valid position has been received, that one will be used instead of the configured one, until the next system reboot">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="aprs_llfgps">Use lat/lon of current GPS position</label>
|
||||
<label for="aprs_llfgps">Instead, store current GPS position</label>
|
||||
<input name="aprs_llfgps" id="aprs_llfgps" type="checkbox" value="1" title="Use lat/lon of current GPS position. Overwrites Latitude / Longitude settings above. Requires valid GPS position.">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">Position format and precision / ambiguity</h5>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container full">
|
||||
<div>
|
||||
<label for="pos_amb">Position precision *</label>
|
||||
<select id="pos_amb" name="pos_amb" title="Position precision / Ambiguity
|
||||
|
@ -337,27 +358,25 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="sb_min_interv">Min interval [s]</label>
|
||||
<input name="sb_min_interv" id="sb_min_interv" type="number" min="10" title="Minimal time for Smart Beaconing. 60 is recommended. Min 10.">
|
||||
<input class="u-full-width" name="sb_min_interv" id="sb_min_interv" type="number" min="10" title="Minimal time for Smart Beaconing. 60 is recommended. Min 10.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="sb_max_interv">Max interval [s]</label>
|
||||
<input name="sb_max_interv" id="sb_max_interv" type="number" min="90" title="Maximal time for Smart Beaconing. 1800 is recommended. Min 90.">
|
||||
<input class="u-full-width" name="sb_max_interv" id="sb_max_interv" type="number" min="90" title="Maximal time for Smart Beaconing. 1800 is recommended. Min 90.">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div>
|
||||
<label for="sb_min_speed">Min speed [km/h]</label>
|
||||
<input name="sb_min_speed" id="sb_min_speed" type="number" min="0" title="Minimal speed for Smart Beaconing. Min 0.">
|
||||
<input class="u-full-width" name="sb_min_speed" id="sb_min_speed" type="number" min="0" title="Minimal speed for Smart Beaconing. Min 0.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="sb_max_speed">Max speed [km/h]</label>
|
||||
<input name="sb_max_speed" id="sb_max_speed" type="number" min="1" title="Maximal speed for Smart Beaconing. Min 1.">
|
||||
<input class="u-full-width" name="sb_max_speed" id="sb_max_speed" type="number" min="1" title="Maximal speed for Smart Beaconing. Min 1.">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="sb_angle">Course change [degrees]</label>
|
||||
<input name="sb_angle" id="sb_angle" type="number" min="5" max="360" title="Angle of course change to speed up beacon transmission. Recommended value: 28. Range 0 to 360.">
|
||||
<input name="sb_angle" id="sb_angle" type="number" min="5" max="360" title="Angle of course change to speed up beacon transmission. Recommended value: 28. Range 5 to 360.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="sb_turn_slope">Turn Slope [degrees]</label>
|
||||
|
@ -373,6 +392,14 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
<label for="gps_enabled">GPS enabled *</label>
|
||||
<input name="gps_enabled" id="gps_enabled" type="checkbox" value="1" title="enable or disable GPS">
|
||||
</div>
|
||||
<div>
|
||||
<label for="gps_pwrsve">GPS powersaving mode</label>
|
||||
<select id="gps_pwrsve" name="gps_pwrsve" title="If there's no GPS fix, allow GPS to go to sleep (chip powered off; taskGPS will suspend). Chip awakes for 1 minute, looking for a fix; if no ifx, sleeps again. Sleep interval is: 1min, 2min, 4min, 8min, 1min, ... You can decide if it may always sleep, or only when you run on battery (default), or if GPS should always be on (according to GPS enabled setting).">
|
||||
<option value="1">GPS may sleep when running on battery (default)</option>
|
||||
<option value="2">GPS always may sleep</option>
|
||||
<option value="0">Ignore this feature</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="kiss_myloc_ok">Accept own positions via KISS</label>
|
||||
<input name="kiss_myloc_ok" id="kiss_myloc_ok" type="checkbox" value="1" title="If set to true, we'll stop sending own position beacons if we heard a position from our call via kiss. Uncheck this, if you like to filter out those positions and keep sending it by this device.">
|
||||
|
@ -386,20 +413,20 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
</div>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<h6 class="u-full-width">Additional settings for secondary frequency:<br/>EXPERIMANTAL - USE WITH CARE!</h6>
|
||||
<h6 class="u-full-width">Additional settings for secondary frequency:<br/>EXPERIMENTAL - USE WITH CARE!</h6>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="lora_freq_x">Secondary Frequency [MHz]</label>
|
||||
(for cross-repeating or listening transmissions from igates)</label>
|
||||
<input name="lora_freq_x" id="lora_freq_x" type="number" min="0.0000" max="928.0000" step="0.0001" title="LoRa center frequency - must be different from main frequency and between 433.0001 and 928.0000 or 0 if not needed. I.e. 433.900">
|
||||
<input name="lora_freq_x" id="lora_freq_x" type="number" min="430.1000" max="928.0000" step="0.0001" title="LoRa center frequency - must be different from main frequency and between 430.0000 and 928.0000 or 0 if not needed. I.e. 433.900">
|
||||
</div>
|
||||
<div>
|
||||
<label for="txPower_x">TX power on secondary frequency [dBm]</label>
|
||||
<input name="txPower_x" id="txPower_x" type="number" min="0" max="23" title="LoRa TX Power on secondary frequency. Range 0 to 23dBm">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div class="grid-container full">
|
||||
<div>
|
||||
<label for="lora_speed_x">Speed on secondary frequency</label>
|
||||
<select id="lora_speed_x" name="lora_speed_x">
|
||||
|
@ -428,9 +455,9 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
</div>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<h6 class="u-full-width">Additional settings for mode repater:<br/>EXPERIMANTAL - USE WITH CARE!</h6>
|
||||
<h6 class="u-full-width">Additional settings for mode repater:<br/>EXPERIMENTAL - USE WITH CARE!</h6>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div class="grid-container full">
|
||||
<div>
|
||||
<label for="lora_dig_mode">LoRa Repater Mode</label>
|
||||
<select id="lora_dig_mode" name="lora_dig_mode">
|
||||
|
@ -441,25 +468,30 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<div>
|
||||
<label for="lora_myalias">My alias for digipeating (optional)</label>
|
||||
<input class="u-full-width" type="text" minlength="0" maxlength="9" name="lora_myalias" id="lora_myalias" title="My alias for digipeting (empty recommended). Kenwood users know it as UITRACE. We repeat this alias, if found in first position of the path and if it is not already repeated. Don't set this to WIDEn-m. This option is only active in LoRa Repeater Mode >= 1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="lora_dig_x_m">Digipeat heard stations from MAIN frequency to which frequencies</label>
|
||||
(If LoRa Repeater Mode has not been set to off)
|
||||
<select id="lora_dig_x_m" name="lora_dig_x_m">
|
||||
<select class="u-full-width" id="lora_dig_x_m" name="lora_dig_x_m">
|
||||
<option value="0">Repeat only to main frequency (default)</option>
|
||||
<option value="1">Repeat to both frequencies</option>
|
||||
<option value="2">Repeat only to cross-digi frequency</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="tx_qrg_bc">TX our beacon from this device or from-kiss to frequencies</label>
|
||||
(Only honored, if we are configured as WIDE1 or WIDE2 digi)
|
||||
<select id="tx_qrg_bc" name="tx_qrg_bc">
|
||||
<select class="u-full-width" id="tx_qrg_bc" name="tx_qrg_bc">
|
||||
<option value="1">TX on main frequency</option>
|
||||
<option value="2">TX on secondary frequency</option>
|
||||
<option value="3">TX on both frequencies</option>
|
||||
<option value="5">(TX on both frequencies as USER - not recommended, needed in SP)</option>
|
||||
<option value="0">Don't send our beacon on RF (but only to kiss and to APRS-IS)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
@ -490,9 +522,17 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
<input type="password" name="aprsis_pw" id="aprsis_pw" title="Your password for the APRS-IS connection.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprsis_fltr">Filter (optional)</label>
|
||||
<label for="aprsis_fltr">Filter (server-site, optional)</label>
|
||||
<input type="text" name="aprsis_fltr" id="aprsis_fltr" title="Request server-site filter (may be left empty). See http://www.aprs-is.net/javAPRSFilter.aspx ; Example: 't/mqs/YOURCALL/50' -> Gate only messages, query and status messages to RF, from a circle of 50km around your last known position. w, o and i may be of interest, but some people on 2m APRS or APRS-IS may send those packets much too frequently. Please trace the effect! Perhaps in combination with '-e/DB0FRI-10'. In our case, the digi positioning beacon from DB0FRI-10 (which is also an igate nearby, APRS-IS path qAI,DB0FRI-10) came from APRS-IS to us and we gated his beacon, encoded as third-party-trafffic, back to RF (which makes no sense: 1. His direct RF beacon is much better heard than ours -> all RF users heard it. 2. We needless consumed airtime). -> Using -e/IGATE1/IGATE2/.. , everything heard (and sent to APRS-IS) by our neighbor igates like DB0FRI-10 will not be re-gated by us. Please also check, if '-d/..' instead of (or additional to) '-e/..' is more suitiable in your environment; you may also consider -/b/.. ." placeholder="may be left blank">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprsis_fli">Filter type (local, optional)</label>
|
||||
<input type="text" name="aprsis_fli" id="aprsis_fli" title="Local aprsis-filter incoming for packet-types. This is a positive-filter, i.e. 'ms', which means: accept aprs-text-message and status packets. You can invert the filter ('all except ...') by adding a leading '-', i.e. '-mws'. Valid packet type filters are: poimqstunwb (Position packets, objects, items, message, query, status, telemetry, user-defined, NWS, weather, bulletin (bulletins are aprs-messages prefixed with BLN'). If you leave this field empty, aprsis local filter is disabled. Reason for this local filter: We observed that if you have a server-site filter, i.e. for receiving onöly private text messages for hams a radius 20km around you (t/m/MYCALL/20), aprsis sends also some location positions of users (if you heard them on RF), and even if \>20km away. Also we have seen packets of type objects telemetry, etc. With this option, you can filter incoming aprsis-packets localy in order to prevent them from gating to RF." placeholder="[-]poimqstunwb">
|
||||
</div>
|
||||
<div>
|
||||
<label for="aprsis_fliw">Filter 'words' (local, optional)</label>
|
||||
<input type="text" name="aprsis_fliw" id="aprsis_fliw" title="Local aprsis-filter incoming for 'words': if this word is part of the header or message body of a packet coming from aprsis, the packet is filtered out. You can sepearate multiple word-filters by space. Leave empty to disable a word filter." placeholder="">
|
||||
</div>
|
||||
<div>
|
||||
<label for="tx_aprsis_sm">Send status-message to APRS-IS</label>
|
||||
<input name="tx_aprsis_sm" id="tx_aprsis_sm" type="checkbox" value="1" title="Send APRS-status-message about new tcp connectioni, -attepts or your requested shutdown/reboot to APRS-IS. This helps you to trace reboots and unexpected loss of wifi- or internet-access.">
|
||||
|
@ -551,8 +591,12 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
<option value="0">1. KISS (default)</option>
|
||||
<option value="1">2. Serial logging</option>
|
||||
<option value="2">3. Trace packets from LoRa (TNC-trace-format)</option>
|
||||
<option value="3">4. 2) and 3)</option>
|
||||
<option value="4">5. No KISS, no logging, no tnc-trace.</option>
|
||||
<option value="4">4. NMEA GPS data</option>
|
||||
<option value="3">5. 2) and 3)</option>
|
||||
<option value="5">6. 4) and 2)</option>
|
||||
<option value="6">7. 4) and 3)</option>
|
||||
<option value="7">8. 4) and 2) and 3)</option>
|
||||
<option value="128">8. No KISS, no logging, no tnc-trace, no NMEA.</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
|
@ -571,17 +615,17 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
</div>
|
||||
<div>
|
||||
<label for="shutdown_act">Auto power off</label>
|
||||
<input name="shutdown_act" id="shutdown_act" type="checkbox" value="1" title="activate auto shutdown after usb plug off (not for T-BEAM 0.7). The power off the device will be switched off.">
|
||||
<input name="shutdown_act" id="shutdown_act" type="checkbox" value="1" title="activate auto shutdown after usb plug off (not for T-BEAM 0.7). The device will powered down. You can interrupt this by pressing the middle button in time (right after pluging of or short before it powers down). Default: 'yes' (power off). Consider if you need to switch it to 'no' (keep power on), i.e. if you are an additionaly battery-connected igate, or if you have a not reliable power source. Please also look at the option 'Send Status-packet when shutdown' above.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="shutdown_dt">Auto power off delay [s]</label>
|
||||
<input name="shutdown_dt" id="shutdown_dt" type="number" min="3" max="3600" title="auto shutdown delay in seconds. Range 3 to 3600.">
|
||||
<input name="shutdown_dt" id="shutdown_dt" type="number" min="3" max="3600" title="auto shutdown delay in seconds. Range 3 to 3600. You can interrupt the timer by pressing the middle-button.">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="sh_rxtime">Display show RX time [s]</label>
|
||||
<input name="sh_rxtime" id="sh_rxtime" type="number" min="0" max="45" title="show RX packet for seconds, refresh rate for OLED. Range 0 to 45.">
|
||||
<label for="sh_rxtime">Seconds to show RX packets [s]</label>
|
||||
<input name="sh_rxtime" id="sh_rxtime" type="number" min="0" max="45" title="show a received packet for seconds, refresh rate for OLED. Range 0 to 45.">
|
||||
</div>
|
||||
<div>
|
||||
<label for="sh_oledtime">Display timeout [s]</label>
|
||||
|
@ -598,7 +642,7 @@ III: Values above are referring to latitude; distance between two latitudes is a
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container quarters">
|
||||
<div class="grid-container thirds">
|
||||
<div>
|
||||
<label for="oledl3l4fmt">OLED Line3 and Line4 Format</label>
|
||||
<select id="oledl3l4fmt" name="oledl3l4fmt" title="A: (default): Original format, L3: Lat/Lon; L4: speed, course, altitude. Lat/Lon in APRS format. Good for learning how aprs works.
|
||||
|
@ -618,10 +662,10 @@ See also the option beneath about showing maidenhead grid locator.">
|
|||
<option value="1">B1: Lat/Lon in classic notation</option>
|
||||
<option value="2">B2: Lat/Lon in nautical notation</option>
|
||||
<option value="3">C1: Lat/Lon in classic notation, left side</option>
|
||||
<option value="4">C1: Lat/Lon in nautical notation, left side</option>
|
||||
<option value="4">C2: Lat/Lon in nautical notation, left side</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<label for="oledlocator">Maidenhead Locator</label>
|
||||
<select id="oledlocator" name="oledlocator" title="Show Maidenhead grid locator: always (instead of Lat/Lon), never, alternating. Alternating:
|
||||
0: Never
|
||||
|
@ -664,40 +708,6 @@ Hard readable lengths / too long for our display:
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="UptimeMinutes">Uptime of Device [min]</label>
|
||||
<input type="text" name="UptimeMinutes" id="UptimeMinutes" readonly title="uptime device in minutes">
|
||||
</div>
|
||||
<div>
|
||||
<label for="curPos">Current Position</label>
|
||||
<input type="text" name="curPos" id="curPos" readonly title="Current Position of device [P if fixed mode; p, if gps is invalid and used as temporary preset]">
|
||||
</div>
|
||||
<div>
|
||||
<label for="OledLine5">Satellite & Batt Info</label>
|
||||
<input type="text" name="OledLine5" id="OledLine5" readonly title="Satellite (#Sats/HDOP) [more sats are good, lowest HDOP is best. Should be < 8], and Batt Info [B means Battery; P means external pwr. Positive current is battery-charge-current, while prefixed with 'B', and battery voltage shown.]">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="OledLine1">OledLine1</label>
|
||||
<input type="text" name="OledLine1" id="OledLine1" readonly title="OledLine1">
|
||||
</div>
|
||||
<div>
|
||||
<label for="OledLine2">OledLine2</label>
|
||||
<input type="text" name="OledLine2" id="OledLine2" readonly title="OledLine2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="OledLine3">OledLine3</label>
|
||||
<input type="text" name="OledLine3" id="OledLine3" readonly title="OledLine3">
|
||||
</div>
|
||||
<div>
|
||||
<label for="OledLine4">OledLine4</label>
|
||||
<input type="text" name="OledLine4" id="OledLine4" readonly title="OledLine4">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<div>
|
||||
<input class="button-primary u-full-width" type="submit" value="Save" title="save settings, remember reboot tracker after save">
|
||||
|
@ -706,12 +716,51 @@ Hard readable lengths / too long for our display:
|
|||
</form>
|
||||
</article>
|
||||
</section>
|
||||
<section>
|
||||
<div class="grid-container full">
|
||||
<h2 class="u-full-width">Device Info</h2>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="UptimeMinutes">Uptime of Device [min]</label>
|
||||
<input type="text" name="UptimeMinutes" id="UptimeMinutes" readonly title="uptime device in minutes">
|
||||
</div>
|
||||
<div>
|
||||
<label for="curPos">Current Position</label>
|
||||
<input type="text" name="curPos" id="curPos" readonly title="Current Position of device [P if fixed mode; p, if gps is invalid and used as temporary preset]">
|
||||
</div>
|
||||
<div>
|
||||
<label for="OledLine5">Satellite & Batt Info</label>
|
||||
<input type="text" name="OledLine5" id="OledLine5" readonly title="Satellite (#Sats/HDOP) [more sats are good, lowest HDOP is best. Should be < 8], and Batt Info [B means Battery; P means external pwr. Positive current is battery-charge-current, while prefixed with 'B', and battery voltage shown.]">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="OledLine1">OledLine1</label>
|
||||
<input type="text" name="OledLine1" id="OledLine1" readonly title="OledLine1">
|
||||
</div>
|
||||
<div>
|
||||
<label for="OledLine2">OledLine2</label>
|
||||
<input type="text" name="OledLine2" id="OledLine2" readonly title="OledLine2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-container halves">
|
||||
<div>
|
||||
<label for="OledLine3">OledLine3</label>
|
||||
<input type="text" name="OledLine3" id="OledLine3" readonly title="OledLine3">
|
||||
</div>
|
||||
<div>
|
||||
<label for="OledLine4">OledLine4</label>
|
||||
<input type="text" name="OledLine4" id="OledLine4" readonly title="OledLine4">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="grid-container full">
|
||||
<h2 class="u-full-width">Received</h2>
|
||||
</div>
|
||||
<article>
|
||||
<table class="u-full-width">
|
||||
<article style="overflow-x:auto;">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Time (UTC)</th>
|
||||
|
@ -827,22 +876,26 @@ Hard readable lengths / too long for our display:
|
|||
Use with care; resulting longer path consumes a bit more airtime.
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
<h5 class="u-full-width">TTGO T-Beam middle hardware-button: User key functions:</h5>
|
||||
<h5 class="u-full-width">TTGO T-Beam <b>middle</b> hardware-button<br>(User key functions):</h5>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="u-full-width">short press</h6>
|
||||
If OLED is enabled and OLED is OFF:<br/>
|
||||
<ul>
|
||||
<li>a short press will wake it up and show current data (as "Display Timeout" seconds</li>
|
||||
<li>a short press will wake it up and show current data (as long as your configured "Display Timeout")</li>
|
||||
</ul>
|
||||
If OLED is disabled or OLED is ON:<br>
|
||||
<ul>
|
||||
<li>with GPS-FIX immediate sending of a frame with the position from the GPS</li>
|
||||
<li>without GPS-FIX, immediate sending of the frame with the position saved in the configuration</li>
|
||||
<li>flip through the available pages</li>
|
||||
<li>1. press: show lastheard list (Call, time, distance, direction). Distance and direction based on your current (or last known) position.</li>
|
||||
<li>2. press: show current build number</li>
|
||||
<li>3. - 5. press: show last 3 received packets (raw)</li>
|
||||
<li>6a. press, if you have GPS-FIX: immediate send a beacon with the position from the GPS</li>
|
||||
<li>6b. press, if you don't have a GPS-FIX: immediate send a beacon with the position saved in the configuration (or last known position)</li>
|
||||
</ul>
|
||||
<h6 class="u-full-width">long press</h6>
|
||||
<ul>
|
||||
<li>toggle on or off WiFi and WebServer</li>
|
||||
<li>toggle on or off WiFi and WebServer. Switching off WebServer will cause the device to reboot (or on a heltec wireless tracker device: shutdown (deep sleep)).</li>
|
||||
<li><b>Cave</b>: if you long-press during boot, your <b>settings are purged!</b></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -871,7 +924,7 @@ Hard readable lengths / too long for our display:
|
|||
</ul>
|
||||
Fixed Beacon off:<br>
|
||||
<ul>
|
||||
<li>Smart Beaconing is activated, if there is no fixed beacon</li>
|
||||
<li>Smart Beaconing is activated and GPS position is sent (if GPS fix is available). There is no fixed beacon. Beaconing starts after first GPS-fix (or if you manualy send a fixed beacon). If GPS-fix is lost, the last GPS position is sent in Fixed Beacon Interval.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="grid-container full">
|
||||
|
@ -956,6 +1009,10 @@ Hard readable lengths / too long for our display:
|
|||
<center><b>This version runs the DL9SAU/DL3EL fork:</b> <a href=https://github.com/DL9SAU/TTGO-T-Beam-LoRa-APRS>https://github.com/DL9SAU/TTGO-T-Beam-LoRa-APRS</a></center>
|
||||
<center><b>Licensed under:</b> CC BY-NC-SA</center>
|
||||
<center><!--VERSION--></center>
|
||||
<center>
|
||||
<label for="CompileFlags">Hardware / compiled with features:</label>
|
||||
<input type="text" name="CompileFlags" id="CompileFlags" readonly title="CompileFlags">
|
||||
</center>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -37,6 +37,8 @@ static const char *const PREF_LORA_TX_ENABLE_INIT = "lora_tx_en_i";
|
|||
static const char *const PREF_LORA_TX_ENABLE = "lora_tx_en";
|
||||
static const char *const PREF_LORA_TX_POWER_INIT = "txPower_i";
|
||||
static const char *const PREF_LORA_TX_POWER = "txPower";
|
||||
static const char *const PREF_LORA_TX_PREAMBLE_LEN_INIT = "preambleLen_i";
|
||||
static const char *const PREF_LORA_TX_PREAMBLE_LEN = "preambleLen";
|
||||
static const char *const PREF_LORA_ADD_SNR_RSSI_TO_PATH_PRESET_INIT = "lora_rssi2p_i";
|
||||
static const char *const PREF_LORA_ADD_SNR_RSSI_TO_PATH_PRESET = "lora_rssi2p";
|
||||
static const char *const PREF_LORA_ADD_SNR_RSSI_TO_PATH_END_AT_KISS_PRESET_INIT = "snraprsis_i";
|
||||
|
@ -59,6 +61,8 @@ static const char *const PREF_LORA_AUTOMATIC_CR_ADAPTION_PRESET_INIT = "lora_cra
|
|||
static const char *const PREF_LORA_AUTOMATIC_CR_ADAPTION_PRESET = "lora_cradapt";
|
||||
static const char *const PREF_APRS_DIGIPEATING_MODE_PRESET_INIT = "lora_dig_mode_i";
|
||||
static const char *const PREF_APRS_DIGIPEATING_MODE_PRESET = "lora_dig_mode";
|
||||
static const char *const PREF_APRS_DIGIPEATING_MYALIAS_INIT = "lora_myalias_i";
|
||||
static const char *const PREF_APRS_DIGIPEATING_MYALIAS = "lora_myalias";
|
||||
static const char *const PREF_APRS_CROSS_DIGIPEATING_MODE_PRESET_INIT = "lora_dig_x_m_i";
|
||||
static const char *const PREF_APRS_CROSS_DIGIPEATING_MODE_PRESET = "lora_dig_x_m";
|
||||
|
||||
|
@ -68,6 +72,8 @@ static const char *const PREF_APRS_RELAY_PATH = "aprs_relay_path";
|
|||
static const char *const PREF_APRS_RELAY_PATH_INIT = "aprs_relay_init";
|
||||
static const char *const PREF_APRS_SYMBOL_TABLE = "aprs_s_table";
|
||||
static const char *const PREF_APRS_SYMBOL = "aprs_symbol";
|
||||
static const char *const PREF_APRS_OBJECT_NAME = "aprs_objnam";
|
||||
static const char *const PREF_APRS_OBJECT_NAME_INIT = "aprs_objnam_i";
|
||||
static const char *const PREF_APRS_COMMENT = "aprs_comment";
|
||||
static const char *const PREF_APRS_COMMENT_INIT = "aprs_comm_init";
|
||||
static const char *const PREF_APRS_COMMENT_RATELIMIT_PRESET = "aprs_comm_rt";
|
||||
|
@ -81,6 +87,10 @@ static const char *const PREF_APRS_ALWAYS_SEND_CSE_SPEED_AND_ALTITUDE_INIT = "ap
|
|||
|
||||
static const char *const PREF_APRS_SHOW_BATTERY = "aprs_batt";
|
||||
static const char *const PREF_APRS_SHOW_BATTERY_INIT = "aprs_batt_init";
|
||||
static const char *const PREF_APRS_STATUS_WINLINK_NOTIFICATION = "aprs_stat_wl";
|
||||
static const char *const PREF_APRS_STATUS_WINLINK_NOTIFICATION_INIT = "aprs_stat_wl_i";
|
||||
static const char *const PREF_APRS_STATUS_SHUTDOWN_NOTIFICATION = "aprs_stat_qrt";
|
||||
static const char *const PREF_APRS_STATUS_SHUTDOWN_NOTIFICATION_INIT = "aprs_stat_qrt_i";
|
||||
static const char *const PREF_APRS_LATITUDE_PRESET = "aprs_lat_p";
|
||||
static const char *const PREF_APRS_LATITUDE_PRESET_INIT = "aprs_lat_p_init";
|
||||
static const char *const PREF_APRS_LATLON_FROM_GPS = "aprs_llfgps"; // no _INIT needed. Checkbox is evaluated on "save" in the Web interface
|
||||
|
@ -126,6 +136,8 @@ static const char *const PREF_APRS_SB_TURN_TIME_PRESET_INIT = "sb_turn_time_i";
|
|||
// Device settings
|
||||
static const char *const PREF_APRS_GPS_EN = "gps_enabled";
|
||||
static const char *const PREF_APRS_GPS_EN_INIT = "gps_state_init";
|
||||
static const char *const PREF_GPS_POWERSAVE = "gps_pwrsve";
|
||||
static const char *const PREF_GPS_POWERSAVE_INIT = "gps_pwrsve_i";
|
||||
static const char *const PREF_ACCEPT_OWN_POSITION_REPORTS_VIA_KISS = "kiss_myloc_ok";
|
||||
static const char *const PREF_ACCEPT_OWN_POSITION_REPORTS_VIA_KISS_INIT = "kiss_myloc_ok_i";
|
||||
static const char *const PREF_GPS_ALLOW_SLEEP_WHILE_KISS = "gps_sleep_ok";
|
||||
|
@ -171,6 +183,10 @@ static const char *const PREF_APRSIS_SERVER_PORT_INIT = "aprsis_srv_p_i";
|
|||
static const char *const PREF_APRSIS_SERVER_PORT = "aprsis_srv_p";
|
||||
static const char *const PREF_APRSIS_FILTER_INIT = "aprsis_fltr_i";
|
||||
static const char *const PREF_APRSIS_FILTER = "aprsis_fltr";
|
||||
static const char *const PREF_APRSIS_FILTER_LOCAL_INCOMING_INIT = "aprsis_fli_i";
|
||||
static const char *const PREF_APRSIS_FILTER_LOCAL_INCOMING = "aprsis_fli";
|
||||
static const char *const PREF_APRSIS_FILTER_LOCAL_WORDS_INCOMING_INIT = "aprsis_fliw_i";
|
||||
static const char *const PREF_APRSIS_FILTER_LOCAL_WORDS_INCOMING = "aprsis_fliw";
|
||||
static const char *const PREF_APRSIS_CALLSIGN_INIT = "aprsis_call_i";
|
||||
static const char *const PREF_APRSIS_CALLSIGN = "aprsis_call";
|
||||
static const char *const PREF_APRSIS_PASSWORD_INIT = "aprsis_pw_i";
|
||||
|
|
|
@ -3,13 +3,21 @@
|
|||
#include <WebServer.h>
|
||||
#include <ESPmDNS.h>
|
||||
#include <Update.h>
|
||||
#include <BG_RF95.h>
|
||||
#include <esp_wifi.h>
|
||||
|
||||
#ifndef TASK_WEBSERVER
|
||||
#define TASK_WEBSERVER
|
||||
|
||||
extern BG_RF95 rf95;
|
||||
#ifdef HAS_SX127X
|
||||
#include <BG_RF95.h>
|
||||
extern BG_RF95 rf95;
|
||||
#elif HAS_SX126X
|
||||
#include <RadioLib.h>
|
||||
#if defined(HELTEC_WIRELESS_TRACKER)
|
||||
extern SX1262 radio;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef KISS_PROTOCOL
|
||||
extern WiFiServer tncServer;
|
||||
#endif
|
||||
|
|
164
platformio.ini
164
platformio.ini
|
@ -11,25 +11,24 @@
|
|||
[env]
|
||||
framework = arduino
|
||||
monitor_speed = 115200
|
||||
monitor_filters = esp32_exception_decoder
|
||||
board_build.partitions = partitions.csv
|
||||
board_build.embed_files =
|
||||
board_build.embed_files =
|
||||
data_embed/index.html.out
|
||||
data_embed/style.css.out
|
||||
data_embed/js.js.out
|
||||
extra_scripts =
|
||||
extra_scripts =
|
||||
pre:tools/buildscript_versioning.py
|
||||
pre:tools/remove_comment_from_files_data_embed.py
|
||||
pre:tools/compress_assets.py
|
||||
lib_deps =
|
||||
RadioHead
|
||||
lib_deps =
|
||||
TinyGPSPlus
|
||||
Adafruit SSD1306
|
||||
Adafruit GFX Library
|
||||
Adafruit Unified Sensor
|
||||
Adafruit BusIO
|
||||
https://github.com/SQ9MDD/AXP202X_Library.git
|
||||
SparkFun u-blox Arduino Library
|
||||
bblanchon/ArduinoJson
|
||||
arcao/Syslog
|
||||
|
||||
build_flags =
|
||||
-Wl,--gc-sections,--relax
|
||||
-D 'KISS_PROTOCOL' ; leave enabled
|
||||
|
@ -42,6 +41,7 @@ build_flags =
|
|||
-D 'LONGITUDE_PRESET="00000.00W"' ; can be set from www interface
|
||||
-D 'APRS_SYMBOL_TABLE="/"' ; can be set from www interface. Hint: if you need Symbol "&", you need to escape: "\&"
|
||||
-D 'APRS_SYMBOL="["' ; can be set from www interface. Hint: if you need Symbol "&", you need to escape: "\&"
|
||||
-D 'APRS_OBJECT_NAME=""' ; can be set from www interface
|
||||
-D 'MY_COMMENT="Lora Tracker/iGate"' ; can be set from www interface
|
||||
-D 'SHOW_ALT' ; can be set from www interface
|
||||
; -D 'SHOW_BATT' ; can be set from www interface
|
||||
|
@ -62,72 +62,179 @@ build_flags =
|
|||
-D 'TNC_SELF_TELEMETRY_INTERVAL=3600L' ; can be set from www interface (seconds)
|
||||
-D 'SHOW_OLED_TIME=15000' ; can be set from www interface (OLED Timeout)
|
||||
|
||||
[env:ttgo-t-beam-v1.0]
|
||||
[libs_AXP192]
|
||||
lib_deps =
|
||||
https://github.com/SQ9MDD/AXP202X_Library.git
|
||||
[libs_AXP2101]
|
||||
lib_deps =
|
||||
https://github.com/lewisxhe/XPowersLib
|
||||
[libs_SSD1306]
|
||||
lib_deps =
|
||||
Adafruit SSD1306
|
||||
Adafruit GFX Library
|
||||
[libs_TFT]
|
||||
lib_deps =
|
||||
bodmer/TFT_eSPI@^2.5.43
|
||||
[libs_SX127X]
|
||||
lib_deps =
|
||||
RadioHead
|
||||
[libs_SX126X]
|
||||
lib_deps =
|
||||
jgromes/RadioLib @ 6.1.0
|
||||
|
||||
|
||||
[env:ttgo-t-beam-v1_0]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D T_BEAM_V1_0
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D ENABLE_BLUETOOTH
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_AXP192.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:ttgo-t-beam-v0.7]
|
||||
[env:ttgo-t-beam-v1_2]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D T_BEAM_V1_2
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
#-D ENABLE_BLUETOOTH
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_AXP2101.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:ttgo-t-beam-v0_7]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D T_BEAM_V0_7
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:ttgo-lora32-v2.1]
|
||||
[env:ttgo-lora32-v2_1]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-lora32-v21
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D LORA32_21
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D ENABLE_BLUETOOTH
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:ttgo-lora32-v2]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-lora32-v2
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D LORA32_2
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:ttgo-lora32-v1]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-lora32-v1
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D LORA32_1
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:Heltec-WiFi-v1]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = heltec_wifi_kit_32
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D HELTEC_V1
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:Heltec-WiFi-v2]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = heltec_wifi_kit_32_v2
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
-D HELTEC_V2
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
||||
[env:ttgo-t-beam-v1.0-development]
|
||||
[env:heltec-wireless-tracker]
|
||||
platform = espressif32 @ 6.3.1
|
||||
board = esp32-s3-devkitc-1
|
||||
board_build.mcu = esp32s3
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D HELTEC_WIRELESS_TRACKER
|
||||
-D HAS_SX126X
|
||||
-D ENABLE_WIFI
|
||||
-D ENABLE_SYSLOG
|
||||
#-D ENABLE_BLUETOOTH
|
||||
-D SPI_FREQUENCY=27000000
|
||||
-D USE_HSPI_PORT
|
||||
-D ARDUINO_USB_MODE=1 # needed for serial console else you'd have to call USBSerial.printf instead of Serial.printf
|
||||
-D ARDUINO_USB_CDC_ON_BOOT=1 #
|
||||
-D HAS_TFT
|
||||
-D USER_SETUP_LOADED
|
||||
-D TFT_WIDTH=80
|
||||
-D TFT_HEIGHT=160
|
||||
-D ST7735_DRIVER
|
||||
-D ST7735_GREENTAB160x80
|
||||
-D TFT_RGB_ORDER=TFT_BGR
|
||||
-D TFT_MOSI=42
|
||||
-D TFT_SCLK=41
|
||||
-D TFT_CS=38
|
||||
-D TFT_DC=40
|
||||
-D TFT_RST=39
|
||||
-D TFT_BL=21
|
||||
-D TFT_BACKLIGHT_ON=1
|
||||
-D TOUCH_CS=-1
|
||||
-D LOAD_GLCD
|
||||
-D LOAD_FONT2
|
||||
-D LOAD_FONT4
|
||||
-D LOAD_FONT6
|
||||
-D LOAD_FONT7
|
||||
-D LOAD_FONT8
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_SX126X.lib_deps}
|
||||
${libs_SX127X.lib_deps} # needed for compiler dependencies (../lib/BG_RF95/)
|
||||
${libs_TFT.lib_deps}
|
||||
|
||||
[env:ttgo-t-beam-v1_0-development]
|
||||
platform = espressif32 @ 3.5.0
|
||||
board = ttgo-t-beam
|
||||
build_flags =
|
||||
|
@ -138,5 +245,8 @@ build_flags =
|
|||
-D ENABLE_SYSLOG
|
||||
-D 'SYSLOG_IP="255.255.255.255"'
|
||||
-D DEVELOPMENT_DEBUG
|
||||
#lib_deps =
|
||||
#${env.lib_deps}
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libs_AXP192.lib_deps}
|
||||
${libs_SX127X.lib_deps}
|
||||
${libs_SSD1306.lib_deps}
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -6,6 +6,9 @@
|
|||
|
||||
SFE_UBLOX_GPS myGPS;
|
||||
|
||||
extern uint8_t usb_serial_data_type;
|
||||
extern volatile boolean gps_task_enabled;
|
||||
|
||||
#ifdef ENABLE_WIFI
|
||||
#include "wifi_clients.h"
|
||||
#define MAX_GPS_WIFI_CLIENTS 6
|
||||
|
@ -13,18 +16,30 @@ SFE_UBLOX_GPS myGPS;
|
|||
#endif
|
||||
|
||||
// Pins for GPS
|
||||
#ifdef T_BEAM_V1_0
|
||||
#if defined(T_BEAM_V1_0) || defined(T_BEAM_V1_2)
|
||||
static const int RXPin = 12, TXPin = 34;
|
||||
#else
|
||||
#elif defined(HELTEC_WIRELESS_TRACKER)
|
||||
static const int RXPin = 34, TXPin = 33;
|
||||
#else /* i.e. T_BEAM_V0_7, or lora32-device-with-self-attached-GPS */
|
||||
static const int RXPin = 15, TXPin = 12;
|
||||
#endif
|
||||
static const uint32_t GPSBaud = 9600; //GPS
|
||||
#ifdef LORA32_21
|
||||
/* one user played with self-attached GPS on his LORA32 device. TODO: gps speed choosable in Web-Interface */
|
||||
static const uint32_t GPSBaud = 57600; //GPS
|
||||
#elif HELTEC_WIRELESS_TRACKER
|
||||
static const uint32_t GPSBaud = 115200; //GPS
|
||||
#else
|
||||
static const uint32_t GPSBaud = 9600; //GPS
|
||||
#endif
|
||||
HardwareSerial gpsSerial(1); // TTGO has HW serial
|
||||
TinyGPSPlus gps; // The TinyGPS++ object
|
||||
bool gpsInitialized = false;
|
||||
|
||||
[[noreturn]] void taskGPS(void *parameter) {
|
||||
|
||||
reinitialize:
|
||||
if (!gpsInitialized){
|
||||
|
||||
gpsSerial.begin(GPSBaud, SERIAL_8N1, TXPin, RXPin); //Startup HW serial for GPS
|
||||
|
||||
// set GPS parameters on restart
|
||||
|
@ -43,13 +58,20 @@ bool gpsInitialized = false;
|
|||
delay(1000);
|
||||
}
|
||||
}
|
||||
gps_task_enabled = true;
|
||||
|
||||
|
||||
esp_task_wdt_init(120, true); //enable panic so ESP32 restarts
|
||||
// esp_task_wdt_init() has already been done in main task during setup()
|
||||
esp_task_wdt_add(NULL); //add current thread to WDT watch
|
||||
|
||||
String gpsDataBuffer = " ";
|
||||
for (;;) {
|
||||
if (!gps_task_enabled) {
|
||||
//gpsSerial.end(); // No, raises exception
|
||||
esp_task_wdt_delete(NULL);
|
||||
gpsInitialized = false;
|
||||
vTaskSuspend(NULL);
|
||||
goto reinitialize;
|
||||
}
|
||||
esp_task_wdt_reset();
|
||||
#ifdef ENABLE_WIFI
|
||||
check_for_new_clients(&gpsServer, gps_clients, MAX_GPS_WIFI_CLIENTS);
|
||||
|
@ -57,23 +79,25 @@ bool gpsInitialized = false;
|
|||
while (gpsSerial.available() > 0) {
|
||||
char gpsChar = (char)gpsSerial.read();
|
||||
gps.encode(gpsChar);
|
||||
#ifdef ENABLE_WIFI
|
||||
if (gpsChar == '$') {
|
||||
gpsDataBuffer = String(gpsChar);
|
||||
} else {
|
||||
gpsDataBuffer += String(gpsChar);
|
||||
|
||||
if (gpsChar == '\n') {
|
||||
if ((usb_serial_data_type & 4))
|
||||
Serial.print(gpsDataBuffer);
|
||||
#ifdef ENABLE_WIFI
|
||||
iterateWifiClients([](WiFiClient *client, int clientIdx, const String *data){
|
||||
if (client->connected()){
|
||||
client->print(*data);
|
||||
client->flush();
|
||||
}
|
||||
}, &gpsDataBuffer, gps_clients, MAX_GPS_WIFI_CLIENTS);
|
||||
#endif
|
||||
gpsDataBuffer = "";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
|
|
@ -2,11 +2,12 @@
|
|||
#include <esp_task_wdt.h>
|
||||
|
||||
|
||||
extern boolean enable_bluetooth;
|
||||
extern uint8_t usb_serial_data_type;
|
||||
extern boolean enable_bluetooth;
|
||||
|
||||
#ifdef ENABLE_BLUETOOTH
|
||||
BluetoothSerial SerialBT;
|
||||
extern boolean serial_bt_client_is_connected;
|
||||
#endif
|
||||
|
||||
QueueHandle_t tncReceivedQueue = nullptr;
|
||||
|
@ -46,7 +47,7 @@ void handleKISSData(char character, int bufferIndex) {
|
|||
Serial.print(inTNCData);
|
||||
}
|
||||
#ifdef ENABLE_BLUETOOTH
|
||||
if (enable_bluetooth && SerialBT.hasClient()) {
|
||||
if (enable_bluetooth && serial_bt_client_is_connected) {
|
||||
SerialBT.print(inTNCData);
|
||||
}
|
||||
#endif
|
||||
|
@ -79,7 +80,7 @@ void handleKISSData(char character, int bufferIndex) {
|
|||
tncReceivedQueue = xQueueCreate(4,sizeof(String *));
|
||||
String *loraReceivedFrameString = nullptr;
|
||||
|
||||
esp_task_wdt_init(120, true); //enable panic so ESP32 restarts
|
||||
// esp_task_wdt_init() has already been done in main task during setup()
|
||||
esp_task_wdt_add(NULL); //add current thread to WDT watch
|
||||
|
||||
while (true) {
|
||||
|
@ -91,7 +92,7 @@ void handleKISSData(char character, int bufferIndex) {
|
|||
}
|
||||
}
|
||||
#ifdef ENABLE_BLUETOOTH
|
||||
if (enable_bluetooth && SerialBT.hasClient()) {
|
||||
if (enable_bluetooth && serial_bt_client_is_connected) {
|
||||
while (SerialBT.available() > 0) {
|
||||
char character = SerialBT.read();
|
||||
handleKISSData(character, 1);
|
||||
|
@ -114,7 +115,7 @@ void handleKISSData(char character, int bufferIndex) {
|
|||
if (!usb_serial_data_type)
|
||||
Serial.print(kissEncoded);
|
||||
#ifdef ENABLE_BLUETOOTH
|
||||
if (enable_bluetooth && SerialBT.hasClient()){
|
||||
if (enable_bluetooth && serial_bt_client_is_connected){
|
||||
SerialBT.print(kissEncoded);
|
||||
}
|
||||
#endif
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -22,9 +22,22 @@ try:
|
|||
git_id = Popen('git rev-parse --short HEAD', stdout=PIPE, shell=True).stdout.read().strip().decode('ascii')
|
||||
version_full = "%s-%s" % (version_full, git_id)
|
||||
except:
|
||||
#git_id = "0000000"
|
||||
git_id = "No_GIT.."
|
||||
pass
|
||||
|
||||
version_string = "{} - {}".format(version_full, datetime.datetime.now())
|
||||
date_now = "%.16s" % datetime.datetime.now()
|
||||
version_string = "{} - {}".format(version_full, date_now)
|
||||
|
||||
# dl9sau: build_no in base62 -> base62 (0-9, a-z, A-Z)
|
||||
# This gives us room for (62**2)-1 = 3843 builds between git commits. Should be enough
|
||||
# git_id: length of 5 has hopefully enough entropy.
|
||||
# VERS_XXSHORT_BN may also be sent on RF -> We keep it short. 8 bytes now, instead of typically 3 bytes before.
|
||||
s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
bnA=s[(int(build_no / len(s))) % len(s)]
|
||||
bnB=s[build_no % len(s)]
|
||||
vers_xxshort_bn="%.5s.%c%c" % (git_id, bnA, bnB)
|
||||
|
||||
hf = """
|
||||
#ifndef BUILD_NUMBER
|
||||
#define BUILD_NUMBER "{}"
|
||||
|
@ -35,7 +48,10 @@ hf = """
|
|||
#ifndef VERSION_SHORT
|
||||
#define VERSION_SHORT "{}"
|
||||
#endif
|
||||
""".format(build_no, version_string, version_full)
|
||||
#ifndef VERS_XXSHORT_BN
|
||||
#define VERS_XXSHORT_BN "{}"
|
||||
#endif
|
||||
""".format(build_no, version_string, version_full, vers_xxshort_bn)
|
||||
with open(FILENAME_VERSION_H, 'w+') as f:
|
||||
f.write(hf)
|
||||
|
||||
|
@ -44,5 +60,5 @@ with open("data_embed/index.html", "r") as f:
|
|||
|
||||
index_html_content = index_html_content.replace('<!--VERSION-->', version_string)
|
||||
|
||||
with open("data_embed/index.html.out", "w") as f:
|
||||
with open("data_embed/index.html.tmp", "w") as f:
|
||||
f.write(index_html_content)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import gzip
|
||||
assets_list = {
|
||||
'data_embed/index.html.out': 'data_embed/index.html.out',
|
||||
'data_embed/js.js': 'data_embed/js.js.out',
|
||||
'data_embed/style.css': 'data_embed/style.css.out',
|
||||
'data_embed/index.html.tmp2': 'data_embed/index.html.out',
|
||||
'data_embed/js.js.tmp': 'data_embed/js.js.out',
|
||||
'data_embed/style.css.tmp': 'data_embed/style.css.out',
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,125 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
# remove-comment-from-code.py
|
||||
# removes comments and indents.
|
||||
# works as a filter and reads from stdin.
|
||||
# keeps lines with copyright or license information
|
||||
# reason: on a smal esp32 device we needed to gain space for
|
||||
# flash storage, in concrete: style.css
|
||||
# options: -d "// ^#", meaning also one-line-comments like //,
|
||||
# and lines beginning with '#'
|
||||
#
|
||||
# usage: remove-comment-from-code.py < style.css.orig > style.css
|
||||
#
|
||||
# examples:
|
||||
# remove-comment-from-code.py -d "// ^#"
|
||||
# in out
|
||||
# -----------------------+-------------
|
||||
# foo /* bar */ abc foo abc
|
||||
# foo // bar abc foo
|
||||
# // bar abc line ignored
|
||||
# /* this is a comment */ line ignored
|
||||
# foo /* this is a foo bar
|
||||
# comment text */ bar
|
||||
# # foo line ignored
|
||||
# foo # bar foo
|
||||
# foo bar foo bar
|
||||
#
|
||||
# (c) 2024-03-19 Thomas Osterried <dl9sau@darc.de>. License: GPL
|
||||
|
||||
import sys
|
||||
|
||||
one_line_comment_chars = []
|
||||
|
||||
def usage():
|
||||
sys.stderr.write("usage: %s [-d x]\n" % sys.argv[0])
|
||||
sys.stderr.write(" with x i.e. \"// ^#\", meaning also one-line-comments)\n")
|
||||
sys.stderr.write(" like //, and lines beginning with '#'\n")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def remove_tabs_and_reduce_blanks_to_one_and_strip(s):
|
||||
return s.replace("\t", " ").replace(" ", " ").replace(" ", " ").strip()
|
||||
|
||||
|
||||
def set_one_line_comment_chars(s):
|
||||
global one_line_comment_chars
|
||||
if type(s) == list and len(s):
|
||||
one_line_comment_chars = s
|
||||
elif type(s) == str and len(s):
|
||||
one_line_comment_chars = s.split(" ")
|
||||
else:
|
||||
one_line_comment_chars = []
|
||||
|
||||
|
||||
def do_remove_comment_from_code(file_in = None, file_out = None):
|
||||
commentStart = -1
|
||||
line_out = ""
|
||||
|
||||
if not file_in:
|
||||
file_in = sys.stdin
|
||||
if not file_out:
|
||||
file_out = sys.stdout
|
||||
|
||||
while True:
|
||||
line_in = file_in.readline()
|
||||
if line_in == "": break
|
||||
line_in = line_in.rstrip()
|
||||
|
||||
if commentStart == -1:
|
||||
commentStart = line_in.find("/*")
|
||||
if commentStart > -1:
|
||||
if len(line_out) > 0 and not line_out[len(line_out)-1].isspace():
|
||||
line_out = line_out + " "
|
||||
line_out = line_out + line_in
|
||||
commentEnd = line_out.find("*/")
|
||||
if commentEnd == -1:
|
||||
continue
|
||||
comment = line_out[commentStart+2:commentEnd]
|
||||
comment = comment.lower()
|
||||
if comment.find("license") == -1 and comment.find("copyright") == -1:
|
||||
line_out = line_out[:commentStart] + " " + line_out[commentEnd+2:]
|
||||
# else:
|
||||
# leave comment as is
|
||||
commentStart = -1
|
||||
else:
|
||||
line_out = line_in
|
||||
for s in one_line_comment_chars:
|
||||
if s[0] == '^':
|
||||
if line_in.startswith(s[1:]):
|
||||
line_out = ""
|
||||
break
|
||||
else:
|
||||
comment_pos = line_in.find(s)
|
||||
if comment_pos > -1:
|
||||
line_out = line_in[:comment_pos]
|
||||
break
|
||||
|
||||
line_out = remove_tabs_and_reduce_blanks_to_one_and_strip(line_out)
|
||||
if len(line_out) > 0:
|
||||
file_out.write(line_out + "\n")
|
||||
line_out = ""
|
||||
|
||||
|
||||
# main()
|
||||
|
||||
if __name__ == '__main__':
|
||||
argc = len(sys.argv)
|
||||
if argc > 1:
|
||||
if argc > 2:
|
||||
if sys.argv[1] == "-d":
|
||||
set_one_line_comment_chars(sys.argv[2])
|
||||
# cave: not valid for css, because ^# is a valid part of syntax
|
||||
for s in one_line_comment_chars:
|
||||
if s[0] == "^" and len(s) < 2:
|
||||
usage()
|
||||
else:
|
||||
if len(s) < 1:
|
||||
usage()
|
||||
else:
|
||||
usage()
|
||||
else:
|
||||
usage()
|
||||
|
||||
do_remove_comment_from_code()
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
import remove_comment_from_code
|
||||
|
||||
assets_list = {
|
||||
'data_embed/index.html.tmp': 'data_embed/index.html.tmp2',
|
||||
'data_embed/js.js': 'data_embed/js.js.tmp',
|
||||
'data_embed/style.css': 'data_embed/style.css.tmp'
|
||||
}
|
||||
|
||||
|
||||
for src_file_name, out_file_name in assets_list.items():
|
||||
file_in = open(src_file_name, 'r')
|
||||
file_out = open(out_file_name, 'w')
|
||||
try:
|
||||
if src_file_name.find(".js") > -1:
|
||||
remove_comment_from_code.set_one_line_comment_chars("//")
|
||||
else:
|
||||
remove_comment_from_code.set_one_line_comment_chars([])
|
||||
remove_comment_from_code.do_remove_comment_from_code(file_in, file_out)
|
||||
except:
|
||||
file_out.write(file_in.read())
|
Ładowanie…
Reference in New Issue