diff options
-rwxr-xr-x | ebus-racket/inserter.rkt | 18 | ||||
-rw-r--r-- | ebus-racket/layer2.rkt | 5 |
2 files changed, 12 insertions, 11 deletions
diff --git a/ebus-racket/inserter.rkt b/ebus-racket/inserter.rkt index a2ee1a0..bd23e04 100755 --- a/ebus-racket/inserter.rkt +++ b/ebus-racket/inserter.rkt @@ -2,7 +2,6 @@ #lang racket/base (require racket/cmdline racket/tcp - racket/pretty racket/match "db.rkt" "layer7.rkt" @@ -22,12 +21,15 @@ (log-message logger 'info (format "Field: ~a" field) #t) (when (insert?) (apply db-insert-field field)))) - -(define (read-ebus-loop7 input-port) - (let ([fields (layer7-read-ebus (current-input-port))]) - (when (not (or (void? fields) (eof-object? fields))) - (handle-fields fields)) - (cond ((not (eof-object? fields)) (read-ebus-loop7 input-port))))) + +(define (make-ebus-loop7 input-port) + (lambda () + (let loop () + (let ([fields (layer7-read-ebus (current-input-port))]) + (when (not (or (void? fields) (eof-object? fields))) + (handle-fields fields)) + (when (not (eof-object? fields)) + (loop)))))) ;; Start Thread that observe all given log-receivers (define (start-logger-thread receiver1 . receiverN) @@ -88,7 +90,7 @@ (current-input-port cin))) ;; Process Ebus Packets - (read-ebus-loop7 (current-input-port)) + ((make-ebus-loop7 (current-input-port)) ) ) (exit (main)) diff --git a/ebus-racket/layer2.rkt b/ebus-racket/layer2.rkt index 9ed2118..3dd881c 100644 --- a/ebus-racket/layer2.rkt +++ b/ebus-racket/layer2.rkt @@ -55,8 +55,6 @@ synSlave <- ebus-const-syn ;; SYN des Senders (return (ebus-body-masterslave crc payloadSlaveLength payloadSlave crcSlave))))) -(define parse-ebus-master-or-slave (token (choice parse-ebus-mastermaster parse-ebus-masterslave))) - (define parse-ebus-paket (token (seq source <- any-byte destination <- any-byte @@ -65,7 +63,8 @@ payloadLength <- any-byte payload <- (repeat ebus-payload payloadLength payloadLength) body <- (cond ((= destination ebus-const-broadcastaddr) parse-ebus-broadcast) - (else parse-ebus-master-or-slave)) + (else (choice parse-ebus-mastermaster + parse-ebus-masterslave))) (return (ebus-paket source destination primaryCommand |