Hooking up streams to webserver.
This commit is contained in:
@ -106,31 +106,30 @@ window.onload = function() {
|
|||||||
| constant index-html
|
| constant index-html
|
||||||
|
|
||||||
variable webserver
|
variable webserver
|
||||||
|
500 constant out-size
|
||||||
|
200 stream input-stream
|
||||||
|
out-size dup stream output-stream
|
||||||
|
create out-string out-size 1+ allot align
|
||||||
|
|
||||||
: handle-index
|
: handle-index
|
||||||
( ." Handling index.html content length" cr
|
index-html z>s nip webserver @ WebServer.setContentLength
|
||||||
index-html z>s nip webserver @ WebServer.setContentLength )
|
|
||||||
." Handling index.html content length" cr
|
|
||||||
200 z" text/html" index-html webserver @ WebServer.send
|
200 z" text/html" index-html webserver @ WebServer.send
|
||||||
." Done! Handling index.html" cr
|
|
||||||
;
|
;
|
||||||
|
|
||||||
: handle-input
|
: handle-input
|
||||||
." Handling input" cr
|
|
||||||
z" cmd" webserver @ WebServer.hasArg if
|
z" cmd" webserver @ WebServer.hasArg if
|
||||||
." hasarg" cr
|
z" cmd" webserver @ WebServer.arg input-stream >stream
|
||||||
z" cmd" webserver @ WebServer.arg
|
out-string out-size output-stream stream>
|
||||||
." Got: " cr dup .
|
200 z" text/plain" out-string webserver @ WebServer.send
|
||||||
2dup type cr
|
|
||||||
['] evaluate catch drop
|
|
||||||
200 z" text/plain" z" nop" webserver @ WebServer.send
|
|
||||||
else
|
else
|
||||||
." not hasarg" cr
|
|
||||||
500 z" text/plain" z" Missing Input" webserver @ WebServer.send
|
500 z" text/plain" z" Missing Input" webserver @ WebServer.send
|
||||||
then
|
then
|
||||||
;
|
;
|
||||||
|
|
||||||
: serve
|
: serve-type ( a n -- ) output-stream >stream ;
|
||||||
|
: serve-key ( -- n ) input-stream stream>ch ;
|
||||||
|
|
||||||
|
: do-serve
|
||||||
80 WebServer.new webserver !
|
80 WebServer.new webserver !
|
||||||
z" /" ['] handle-index webserver @ WebServer.on
|
z" /" ['] handle-index webserver @ WebServer.on
|
||||||
z" /input" ['] handle-input webserver @ WebServer.on
|
z" /input" ['] handle-input webserver @ WebServer.on
|
||||||
@ -142,6 +141,14 @@ variable webserver
|
|||||||
again
|
again
|
||||||
;
|
;
|
||||||
|
|
||||||
|
' do-serve 10 10 task webserver-task
|
||||||
|
|
||||||
|
: serve
|
||||||
|
['] serve-type is type
|
||||||
|
['] serve-key is key
|
||||||
|
webserver-task start-task
|
||||||
|
;
|
||||||
|
|
||||||
: wifi ( z z -- )
|
: wifi ( z z -- )
|
||||||
WIFI_MODE_STA Wifi.mode
|
WIFI_MODE_STA Wifi.mode
|
||||||
WiFi.begin 1000 ms WiFi.localIP ip. cr
|
WiFi.begin 1000 ms WiFi.localIP ip. cr
|
||||||
|
|||||||
@ -18,3 +18,7 @@
|
|||||||
r@ >read @ 1+ r@ @ mod r> >read ! ;
|
r@ >read @ 1+ r@ @ mod r> >read ! ;
|
||||||
: >stream ( a n st -- )
|
: >stream ( a n st -- )
|
||||||
swap 0 do over c@ over ch>stream swap 1+ swap loop 2drop ;
|
swap 0 do over c@ over ch>stream swap 1+ swap loop 2drop ;
|
||||||
|
: stream> ( a n st -- )
|
||||||
|
begin over 1 > over empty? 0= and while
|
||||||
|
." ch "
|
||||||
|
dup stream>ch >r rot dup r> swap c! 1+ rot 1- rot repeat 2drop 0 swap c! ;
|
||||||
|
|||||||
@ -1,8 +1,14 @@
|
|||||||
( Cooperative Tasks )
|
( Cooperative Tasks )
|
||||||
|
|
||||||
|
: task ( xt rsz dsz "name" )
|
||||||
|
create here >r 0 , 0 , 0 ,
|
||||||
|
here cell+ r@ cell+ ! cells allot
|
||||||
|
here r@ 2 cells + ! cells allot
|
||||||
|
dup 0= if drop else >:body r@ 2 cells + @ ! then rdrop ;
|
||||||
|
|
||||||
variable task-list
|
variable task-list
|
||||||
|
|
||||||
: add-task ( t -- )
|
: start-task ( t -- )
|
||||||
task-list @ if
|
task-list @ if
|
||||||
task-list @ @ over !
|
task-list @ @ over !
|
||||||
task-list @ !
|
task-list @ !
|
||||||
@ -12,13 +18,6 @@ variable task-list
|
|||||||
then
|
then
|
||||||
;
|
;
|
||||||
|
|
||||||
: task ( xt rsz dsz "name" )
|
|
||||||
create here >r 0 , 0 , 0 ,
|
|
||||||
here cell+ r@ cell+ ! cells allot
|
|
||||||
here r@ 2 cells + ! cells allot
|
|
||||||
dup 0= if drop else >:body r@ 2 cells + @ ! then
|
|
||||||
r> add-task ;
|
|
||||||
|
|
||||||
: pause
|
: pause
|
||||||
rp@ task-list @ 2 cells + !
|
rp@ task-list @ 2 cells + !
|
||||||
sp@ task-list @ cell+ !
|
sp@ task-list @ cell+ !
|
||||||
@ -27,4 +26,4 @@ variable task-list
|
|||||||
task-list @ 2 cells + @ rp!
|
task-list @ 2 cells + @ rp!
|
||||||
;
|
;
|
||||||
|
|
||||||
0 0 0 task main-task
|
0 0 0 task main-task main-task start-task
|
||||||
|
|||||||
Reference in New Issue
Block a user