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

SPI Programming Examples
SPI Programming Manual427506-006
E-41
Example E-10: A Simple SPI Requester in C
l_status = CLOSE (srvr_file_num);
if (l_status != CCE)
{
FILEINFO (srvr_file_num, &file_error);
printf ("File system error (%d) on CLOSE of the SERVER\n", file_error);
return;
}
/* Re-open the server */
open_flags = 0x0001; /* NOWAIT IO */
/* Open the server using SPI */
memcpy (&l_process_id_zspi[8], "#ZSPI ", 8);
l_status = OPEN ((short *) &l_process_id_zspi[0],
&srvr_file_num, open_flags);
if (l_status != CCE)
{
FILEINFO (-1, &file_error);
printf ("File system error (%d) on REOPEN to the SERVER\n", file_error);
return;
}
/* Fix the process ID */
memcpy (&l_process_id_zspi[8], " ", 8);
server_up = true;
} /* of PROC open_server */
#pragma PAGE "PROC requester MAIN"
/*
*==========================================================================
* MAINLINE ROUTINE STARTS HERE.
*
*==========================================================================
*/
main(/* int argc, char *argv[] */)
{
short l_status;
debug_flag = false;
/* Server’s process name. */
memcpy ((char *) &process_name[0], "$SPIX ", 6);
/* Server’s object */
memcpy ((char *) &server_name[8], "SECSERVO", 8);
initialization(); /* Open files */
spi_command = ZSPI_CMD_GETVERSION;
/* Send a GETVERSION */
if (err = SSINIT (req_buffer, max_bufsize, (short *) &my_ssid,
ZSPI_VAL_CMDHDR, spi_command))
display_spi_error (err, ZSPI_VAL_SSINIT, 0L, true);
if (display_spi_buffer)
{
printf ("SPI buffer sent:\n");
dump_buf (req_buffer);
}
Example E-10. C File: A Simple SPI Requester (page 5 of 8)