many improvements, fully working now
This commit is contained in:
parent
2bdb7084da
commit
86f42864ec
|
@ -41,7 +41,15 @@ CON
|
|||
_CLKMODE = XTAL1 + PLL16X
|
||||
_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
|
||||
|
||||
|
@ -50,6 +58,10 @@ VAR
|
|||
byte reqstr[32] ' request string
|
||||
byte webbuff[128] ' incoming header buffer
|
||||
|
||||
byte rtcAvailable
|
||||
|
||||
long hiveid
|
||||
|
||||
long cog, random_value
|
||||
|
||||
PUB main
|
||||
|
@ -70,10 +82,12 @@ PUB main
|
|||
ios.lanstart 'LAN-Treiber initialisieren (eigene IP-Adresse usw. setzen)
|
||||
handleidx := $FF
|
||||
|
||||
#ifdef __DEBUG
|
||||
ios.print(@strWaitConnection)
|
||||
#endif
|
||||
getcfg
|
||||
ios.print(@strMsgEnd)
|
||||
|
||||
repeat
|
||||
if ios.keystat > 0
|
||||
quit
|
||||
if (handleidx := ios.lan_listen(handleidx,80)) == $FF 'Empfangs-Socket auf Port 80 öffnen
|
||||
ios.print(@strErrorNoSock)
|
||||
quit
|
||||
|
@ -110,11 +124,15 @@ PRI webThread | i, j, uri, args
|
|||
sendStr(@ajaxjs)
|
||||
elseif indexOf(@reqstr, string("rand.cgi")) <> -1 ' rand.cgi
|
||||
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
|
||||
ios.lan_txdata(handleidx, 0, 32768)
|
||||
else
|
||||
' 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
|
||||
|
||||
|
@ -153,6 +171,109 @@ PRI indexOf(haystack, needle) | i, j
|
|||
|
||||
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
|
||||
{{
|
||||
┌───────────────────────────────────────────┬────────────────┬────────────────────────┬───────────────┐
|
||||
|
@ -268,47 +389,3 @@ entry movi ctra,#%00001_111 'set ctra to internal pl
|
|||
|
||||
_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