add common scheme definition
[mot-flash.git] / common.scm
blob6e15c4bbbaabbd7a2bcdf80d99550a5b222f02d0
1 (define STX (string #\stx))
2 (define RS (string #\rs))
3 (define ETX  (string #\etx))
5 (define (list-ref-with-default lst n def)
6   (if (< n (length lst))
7     (list-ref lst n)
8     def)
9   )
11 (define (string->u8vector s)
12   (let ((result (make-u8vector (string-length s))))
13     (array-map! result char->integer s)
14     result)
15   )
17 (define (u8vector->string v)
18   (apply string (map integer->char (u8vector->list v)))
19   )
21 (define (create-command cmd . args)
22   (let ((par (list-ref-with-default args 0 #f)))
23     (string->u8vector
24       (string-append STX cmd
25                      (if (eq? par #f)
26                        ""
27                        ((string-append RS par))
28                        )
29                      ETX
30                      )
31       )
32     )
33   )