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

SPI Programming Examples
SPI Programming Manual427506-006
E-54
Example E-11: A Simple SPI Server in TAL
! header type must be a complete header
! SSGET of zspi^tkn^hdrtype returns a token value of zspi^val^cmdhdr
IF err := ssgettkn (req^buffer, zspi^tkn^hdrtype, tkn^value,
,tkn^count) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssgettkn,
zspi^tkn^hdrtype, false);
RETURN (zspi^err^invbuf);
END;
IF tkn^value <> zspi^val^cmdhdr THEN
RETURN (zspi^err^invbuf);
tkn^code := zspi^tkn^hdrtype;
RETURN (err);
END; ! procedure verify^msg
?PAGE "PROC server MAIN"
!======================================================================!
! MAINLINE ROUTINE STARTS HERE. !
! !
!======================================================================!
PROC server MAIN;
BEGIN
INT l^reply^length;
CALL initialization;
continue := true;
WHILE continue = true DO
BEGIN
! Clear important fields
res^buffer ':=' 0 & res^buffer FOR $OCCURS (res^buffer) - 1 WORDS;
req^buffer ':=' 0 & req^buffer FOR $OCCURS (req^buffer) - 1 WORDS;
! Read a request message from $RECEIVE
CALL process^requests;
! SEND reply buffer to $RECEIVE
l^reply^length := max^bufsize;
IF file^error THEN
BEGIN
l^reply^length := 0;
END;
CALL replyx (res^buffer, l^reply^length, !count^sent!,
!tag!, file^error);
IF < THEN
BEGIN
CALL get^file^error (rcv^file^num);
continue := false;
END;
! Clear important fields
file^error := 0;
END; ! End of WHILE continue DO
CALL stop;
END; -- of PROC server
Example E-11. TAL File: A Simple SPI Server (page 10 of 10)