many improvements, fully working now
This commit is contained in:
parent
2bdb7084da
commit
86f42864ec
|
@ -41,7 +41,15 @@ CON
|
||||||
_CLKMODE = XTAL1 + PLL16X
|
_CLKMODE = XTAL1 + PLL16X
|
||||||
_XINFREQ = 5_000_000
|
_XINFREQ = 5_000_000
|
||||||
|
|
||||||
#define __DEBUG
|
CON 'NVRAM Konstanten --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#4, NVRAM_IPADDR
|
||||||
|
#24, NVRAM_HIVE ' 4 Bytes
|
||||||
|
|
||||||
|
DAT
|
||||||
|
|
||||||
|
strNVRAMFile byte "nvram.sav",0 'contains the 56 bytes of NVRAM, if RTC is not available
|
||||||
|
|
||||||
|
|
||||||
VAR
|
VAR
|
||||||
|
|
||||||
|
@ -50,6 +58,10 @@ VAR
|
||||||
byte reqstr[32] ' request string
|
byte reqstr[32] ' request string
|
||||||
byte webbuff[128] ' incoming header buffer
|
byte webbuff[128] ' incoming header buffer
|
||||||
|
|
||||||
|
byte rtcAvailable
|
||||||
|
|
||||||
|
long hiveid
|
||||||
|
|
||||||
long cog, random_value
|
long cog, random_value
|
||||||
|
|
||||||
PUB main
|
PUB main
|
||||||
|
@ -70,10 +82,12 @@ PUB main
|
||||||
ios.lanstart 'LAN-Treiber initialisieren (eigene IP-Adresse usw. setzen)
|
ios.lanstart 'LAN-Treiber initialisieren (eigene IP-Adresse usw. setzen)
|
||||||
handleidx := $FF
|
handleidx := $FF
|
||||||
|
|
||||||
#ifdef __DEBUG
|
getcfg
|
||||||
ios.print(@strWaitConnection)
|
ios.print(@strMsgEnd)
|
||||||
#endif
|
|
||||||
repeat
|
repeat
|
||||||
|
if ios.keystat > 0
|
||||||
|
quit
|
||||||
if (handleidx := ios.lan_listen(handleidx,80)) == $FF 'Empfangs-Socket auf Port 80 öffnen
|
if (handleidx := ios.lan_listen(handleidx,80)) == $FF 'Empfangs-Socket auf Port 80 öffnen
|
||||||
ios.print(@strErrorNoSock)
|
ios.print(@strErrorNoSock)
|
||||||
quit
|
quit
|
||||||
|
@ -110,11 +124,15 @@ PRI webThread | i, j, uri, args
|
||||||
sendStr(@ajaxjs)
|
sendStr(@ajaxjs)
|
||||||
elseif indexOf(@reqstr, string("rand.cgi")) <> -1 ' rand.cgi
|
elseif indexOf(@reqstr, string("rand.cgi")) <> -1 ' rand.cgi
|
||||||
sendStr(str.trimCharacters(num.ToStr(long[rr_random_ptr], num#DEC)))
|
sendStr(str.trimCharacters(num.ToStr(long[rr_random_ptr], num#DEC)))
|
||||||
|
elseif indexOf(@reqstr, string("id.cgi")) <> -1 ' id.cgi
|
||||||
|
sendStr(str.trimCharacters(num.ToStr(hiveid, num#DEC)))
|
||||||
elseif indexOf(@reqstr, string("img.bin")) <> -1 ' img.bin
|
elseif indexOf(@reqstr, string("img.bin")) <> -1 ' img.bin
|
||||||
ios.lan_txdata(handleidx, 0, 32768)
|
ios.lan_txdata(handleidx, 0, 32768)
|
||||||
else
|
else
|
||||||
' default page
|
' default page
|
||||||
sendStr(string("<html><body><script language=javascript src=ajax.js></script><b>It Works!<br><br>Random Number:</b><div id=a></div><script language=javascript>ajax('rand.cgi', 'a', 10);</script></body></html>"))
|
sendStr(@strDefPage1)
|
||||||
|
sendStr(str.trimCharacters(num.ToStr(hiveid, num#DEC)))
|
||||||
|
sendStr(@strDefPage2)
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@ -153,6 +171,109 @@ PRI indexOf(haystack, needle) | i, j
|
||||||
|
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
PRI getcfg 'nvram: IP-Konfiguration anzeigen
|
||||||
|
|
||||||
|
if ios.rtcTest 'RTC chip available?
|
||||||
|
rtcAvailable := TRUE
|
||||||
|
else 'use configfile
|
||||||
|
rtcAvailable := FALSE
|
||||||
|
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
||||||
|
ios.sddmact(ios#DM_SYSTEM) 's-marker aktivieren
|
||||||
|
if ios.sdopen("R",@strNVRAMFile)
|
||||||
|
ios.print(@strErrorOpen)
|
||||||
|
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
||||||
|
return
|
||||||
|
|
||||||
|
ios.print(@strAddr)
|
||||||
|
listaddr(NVRAM_IPADDR)
|
||||||
|
ios.printnl
|
||||||
|
|
||||||
|
if rtcAvailable
|
||||||
|
hiveid := ios.getNVSRAM(NVRAM_HIVE)
|
||||||
|
hiveid += ios.getNVSRAM(NVRAM_HIVE+1) << 8
|
||||||
|
hiveid += ios.getNVSRAM(NVRAM_HIVE+2) << 16
|
||||||
|
hiveid += ios.getNVSRAM(NVRAM_HIVE+3) << 24
|
||||||
|
else
|
||||||
|
ios.sdseek(NVRAM_HIVE)
|
||||||
|
hiveid := ios.sdgetc
|
||||||
|
hiveid += ios.sdgetc << 8
|
||||||
|
hiveid += ios.sdgetc << 16
|
||||||
|
hiveid += ios.sdgetc << 24
|
||||||
|
|
||||||
|
ifnot rtcAvailable
|
||||||
|
ios.sdclose
|
||||||
|
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
||||||
|
|
||||||
|
PRI listaddr (nvidx) | count 'IP-Adresse anzeigen
|
||||||
|
|
||||||
|
ifnot rtcAvailable
|
||||||
|
ios.sdseek(nvidx)
|
||||||
|
|
||||||
|
repeat count from 0 to 3
|
||||||
|
if(count)
|
||||||
|
ios.print(string("."))
|
||||||
|
if rtcAvailable
|
||||||
|
ios.print(str.trimCharacters(num.ToStr(ios.getNVSRAM(nvidx+count), num#DEC)))
|
||||||
|
else
|
||||||
|
ios.print(str.trimCharacters(num.ToStr(ios.sdgetc, num#DEC)))
|
||||||
|
|
||||||
|
DAT ' Locale
|
||||||
|
|
||||||
|
#ifdef __LANG_EN
|
||||||
|
'locale: english
|
||||||
|
|
||||||
|
strNoNetwork byte 13,"Administra doesn't provide network functions!",13,"Please load admnet.",13,0
|
||||||
|
strWaitConnection byte "Waiting for client connection...",13,0
|
||||||
|
strConnected byte "Client connected...",13,0
|
||||||
|
strErrorNoSock byte "No free socket.",13,0
|
||||||
|
strErrorOpen byte "Can't open configuration file",13,0
|
||||||
|
strAddr byte 13,"Webserver startet, please use this URL to connect:",13," http://",0
|
||||||
|
strDefPage1 byte "<html><body><script language=javascript src=ajax.js></script><b>It Works!<br><br>Hive-ID: ",0
|
||||||
|
strDefPage2 byte "<br><br>Random Number:</b><div id=a></div><script language=javascript>ajax('rand.cgi', 'a', 10);</script></body></html>",0
|
||||||
|
strMsgEnd byte 13,13,"Press any key to quit",13,0
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
'default locale: german
|
||||||
|
|
||||||
|
strNoNetwork byte 13,"Administra stellt keine Netzwerk-Funktionen zur Verfügung!",13,"Bitte admnet laden.",13,0
|
||||||
|
strWaitConnection byte "Warte auf Client-Verbindung...",13,0
|
||||||
|
strConnected byte "Client verbunden...",13,0
|
||||||
|
strErrorNoSock byte "Kein Socket frei...",13,0
|
||||||
|
strErrorOpen byte "Kann Konfigurationsdatei nicht öffnen.",13,0
|
||||||
|
strAddr byte 13,"Webserver gestartet, zum Verbinden folgende URL verwenden:",13," http://",0
|
||||||
|
strDefPage1 byte "<html><body><script language=javascript src=ajax.js></script><b>Es funktioniert!<br><br>Hive-ID: ",0
|
||||||
|
strDefPage2 byte "<br><br>Zufallszahl:</b><div id=a></div><script language=javascript>ajax('rand.cgi', 'a', 10);</script></body></html>",0
|
||||||
|
strMsgEnd byte 13,13,"Zum Beenden beliebige Taste drücken",13,0
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ajaxjs byte "var ajaxBusy=false;function ajax(a,b,c){if(ajaxBusy){return}ajaxBusy=true;var d;try{d=new XMLHttpRequest()}catch(e){d=new ActiveXObject('Microsoft.XMLHTTP')}var f=function(){if(d.readyState==4){if(b){document.getElementById(b).innerHTML=d.responseText}ajaxBusy=false;if(c>0){setTimeout('ajax(\''+a+'\',\''+b+'\','+c+')',c)}}};d.open('GET',a+'?'+(new Date()).getTime(),true);d.onreadystatechange=f;d.send(null)}"
|
||||||
|
byte 0
|
||||||
|
|
||||||
|
DAT 'lizenz
|
||||||
|
|
||||||
|
{{
|
||||||
|
|
||||||
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ TERMS OF USE: MIT License │
|
||||||
|
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
|
||||||
|
│files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
|
||||||
|
│modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
|
||||||
|
│is furnished to do so, subject to the following conditions: │
|
||||||
|
│ │
|
||||||
|
│The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
|
||||||
|
│ │
|
||||||
|
│THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
|
||||||
|
│WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
|
||||||
|
│COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
|
||||||
|
│ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
|
||||||
|
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DAT
|
DAT
|
||||||
{{
|
{{
|
||||||
┌───────────────────────────────────────────┬────────────────┬────────────────────────┬───────────────┐
|
┌───────────────────────────────────────────┬────────────────┬────────────────────────┬───────────────┐
|
||||||
|
@ -268,47 +389,3 @@ entry movi ctra,#%00001_111 'set ctra to internal pl
|
||||||
|
|
||||||
_random_value res 1
|
_random_value res 1
|
||||||
|
|
||||||
DAT
|
|
||||||
ajaxjs byte "var ajaxBusy=false;function ajax(a,b,c){if(ajaxBusy){return}ajaxBusy=true;var d;try{d=new XMLHttpRequest()}catch(e){d=new ActiveXObject('Microsoft.XMLHTTP')}var f=function(){if(d.readyState==4){if(b){document.getElementById(b).innerHTML=d.responseText}ajaxBusy=false;if(c>0){setTimeout('ajax(\''+a+'\',\''+b+'\','+c+')',c)}}};d.open('GET',a+'?'+(new Date()).getTime(),true);d.onreadystatechange=f;d.send(null)}"
|
|
||||||
byte 0
|
|
||||||
|
|
||||||
DAT ' Locale
|
|
||||||
|
|
||||||
#ifdef __LANG_EN
|
|
||||||
'locale: english
|
|
||||||
|
|
||||||
strNoNetwork byte 13,"Administra doesn't provide network functions!",13,"Please load admnet.",13,0
|
|
||||||
strWaitConnection byte "Waiting for client connection...",13,0
|
|
||||||
strConnected byte "Client connected...",13,0
|
|
||||||
strErrorNoSock byte "No free socket.",13,0
|
|
||||||
|
|
||||||
#else
|
|
||||||
'default locale: german
|
|
||||||
|
|
||||||
strNoNetwork byte 13,"Administra stellt keine Netzwerk-Funktionen zur Verfügung!",13,"Bitte admnet laden.",13,0
|
|
||||||
strWaitConnection byte "Warte auf Client-Verbindung...",13,0
|
|
||||||
strConnected byte "Client verbunden...",13,0
|
|
||||||
strErrorNoSock byte "Kein Socket frei...",13,0
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DAT 'lizenz
|
|
||||||
|
|
||||||
{{
|
|
||||||
|
|
||||||
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
||||||
│ TERMS OF USE: MIT License │
|
|
||||||
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
|
||||||
│Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
|
|
||||||
│files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
|
|
||||||
│modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
|
|
||||||
│is furnished to do so, subject to the following conditions: │
|
|
||||||
│ │
|
|
||||||
│The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
|
|
||||||
│ │
|
|
||||||
│THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
|
|
||||||
│WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
|
|
||||||
│COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
|
|
||||||
│ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
|
|
||||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
||||||
}}
|
|
||||||
|
|
Loading…
Reference in New Issue