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

SPI Programming Examples
SPI Programming Manual427506-006
E-46
Example E-11: A Simple SPI Server in TAL
?SOURCE SETCUTIL
?PAGE "PROC build^hdr^response"
PROC build^hdr^response;
!=======================================================================!
! Proc : build^hdr^response !
! Function : This procedure will build the header for responses. !
!=======================================================================!
BEGIN
object^type := zspi^val^null^object^type;
!Initialize response buffer
IF err := ssinit (res^buffer, max^bufsize, my^ssid,
zspi^val^cmdhdr, spi^command, object^type) THEN
CALL display^spi^error (err, zspi^val^ssinit, 0d, true);
! Put in server version token
IF err := ssputtkn (req^buffer, zspi^tkn^server^version,
my^version) THEN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^server^version, true);
END; ! End of build^hdr^response procedure
?PAGE "PROC error^response"
PROC error^response (p^err^num);
!=======================================================================!
! Proc : error^response !
! Function : This procedure will format responses for unsuccessful !
! processing of spi^command. !
!=======================================================================!
INT p^err^num; ! error number
! max^resp token from SPI buffer must be previously set.
! tkn^code of the token which caused error must be previously set.
BEGIN
STRUCT .EXT l^err^def (zspi^ddl^error^def);
STRUCT .EXT l^parm^err^def (zspi^ddl^parm^err^def);
CALL build^hdr^response;
source^idx := 1;
dest^idx := 1;
tkn^count := 1;
! Start Data list only IF zspi^tkn^maxresp is not = 0
IF max^resp THEN
IF err := ssputtkn (res^buffer, zspi^tkn^datalist) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^datalist, false);
RETURN;
END;
!Put return code token in response buffer
IF err := ssputtkn (res^buffer, zspi^tkn^retcode, p^err^num) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^retcode, false);
RETURN;
END;
Example E-11. TAL File: A Simple SPI Server (page 2 of 10)