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

SPI Programming Examples
SPI Programming Manual427506-006
E-33
Example E-9: A Simple SPI Requester in TAL
PROC requester MAIN;
BEGIN
LABEL SEND^IT;
CALL initialization; ! Open files
my^ssid ':=' [zspi^val^tandem,
zspi^ssn^null, version];
spi^command := zspi^cmd^getversion;
!Send a GETVERSION
IF err := ssinit (req^buffer, max^bufsize, my^ssid,
zspi^val^cmdhdr, spi^command) THEN
CALL display^spi^error (err, zspi^val^ssinit, 0d, true);
IF display^spi^buffer THEN
BEGIN
sline ':=' "SPI buffer sent:" -> @sp;
CALL writex (term, sline, @sp '-' @sline);
CALL dump^buf (req^buffer);
END;
CALL writereadx (srvr^file^num, req^buffer, max^bufsize,
$OCCURS (req^buffer), read^count);
IF <> THEN CALL get^file^error (srvr^file^num);
file^num := -1; ! Don't Cancel
CALL awaitiox (file^num, !buffer!, read^count, !tag!, time^to^wait);
IF < THEN
BEGIN
CALL get^file^error (file^num);
END;
IF display^spi^buffer THEN
BEGIN
sline ':=' "SPI buffer received:" -> @sp;
CALL writex (term, sline, @sp '-' @sline);
CALL dump^buf (req^buffer);
END;
! Reset the buffer
buflen := max^bufsize;
IF err := ssputtkn (req^buffer, zspi^tkn^reset^buffer,
buflen) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^reset^buffer, false);
sline ':=' "Bad SPI buffer returned! Cannot reset the buffer." -> @sp;
CALL writex (term, sline, @sp '-' @sline);
CALL stop (process^id); ! Stop the server.
CALL stop;
END;
! Get and display the BANNER.
IF err := ssgettkn (req^buffer, zspi^tkn^server^banner,
server^banner, 1) THEN
BEGIN
sline ':=' "No Server Banner found!" -> @sp;
END ELSE
BEGIN
sline ':=' "Using: " -> @sp;
sp ':=' server^banner FOR 50 BYTES;
@sp := @sp '+' 50;
Example E-9. TAL File: A Simple SPI Requester (page 6 of 8)