SPI Programming Manual (G06.24+, H06.03+, J06.03+)

SPI Programming Examples
SPI Programming Manual427506-006
E-49
Example E-11: A Simple SPI Server in TAL
! Start Data list only IF zspi^tkn^maxresp is not = 0
IF max^resp THEN
BEGIN
IF err := ssputtkn (res^buffer, zspi^tkn^datalist) THEN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^datalist, true);
END;
l^start^idx := 0;
! Check for CONTEXT token.
IF context^count THEN
BEGIN
! Here the CONTEXT token was sent. Copy the passed context.
out^string.len := the^context.con^string.len;
out^string.data ':=' the^context.con^string.data FOR
out^string.len BYTES;
l^start^idx := the^context.index;
END;
! Now perform the spi^command
tkn^retcode := zspi^err^ok;
CASE spi^command OF
BEGIN
zspi^cmd^getversion ->
! Put SERVER BANNER token in response buffer
IF (err := ssputtkn (res^buffer, zspi^tkn^server^banner,
server^banner)) THEN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^server^banner, true);
1 -> ! STRING to reverse.
l^len := in^string.len;
FOR l^idx := l^start^idx TO l^len - 1 DO
BEGIN
out^string.data [l^len - l^idx - 1] := in^string.data [l^idx];
END;
out^string.len := in^string.len;
IF err := ssputtkn (res^buffer, zspi^tkn^comment,
out^string) THEN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^comment, true);
2 -> ! Shift string to uppercase
! This could be done in one operation, but to show the use of
! the CONTEXT token, it will be done one character at a time.
l^len := in^string.len;
out^string.data [l^start^idx] := in^string.data [l^start^idx];
CALL shiftstring (out^string.data [l^start^idx],
1 ! only one byte at a time!,
0 !upshift!); ! Change to upper-case
l^start^idx := l^start^idx + 1;
out^string.len := l^start^idx;
Example E-11. TAL File: A Simple SPI Server (page 5 of 10)