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

SPI Programming Examples
SPI Programming Manual427506-006
E-62
Example E-12: A Simple SPI Server in C
#pragma PAGE "PROC process_requests"
/*
*==================================================================
* Proc : process_requests =
* Function : This procedure will process the requests received =
* on $RECEIVE. =
*==================================================================
*/
void process_requests(void)
{
/* Read in the spi_command received */
READUPDATEX (rcv_file_num, (char *) &req_buffer[0], max_bufsize,
&spi_buffer_size);
FILEINFO (rcv_file_num, &last_file_err);
switch (last_file_err) /* data was found in the buffer */
{
case 6 : /* system message */
/* first word of req_buffer is message type. */
switch (req_buffer[0])
{
case -30 : /* OPEN message */
if (memcmp((char *) &req_buffer[9], "#ZSPI ", 8))
{
/* Reject the open with file error 11. */
file_error = 11;
}
break;
default :
memcpy (res_buffer, req_buffer, max_bufsize);
break;
}
break;
case 0 : /* non-system message */
/* first word of msg (Z_MSGCODE) is a -28 for a SPI msg. */
switch (req_buffer[0])
{
case -28 :
process_spi_buffer();
break;
default :
memcpy (res_buffer, req_buffer, max_bufsize);
break;
}
break;
default : /* unexpected message not a SPI or system message */
memcpy (res_buffer, req_buffer, max_bufsize);
continue_flag = false;
break;
} /* of switch (last_file_err) */
} /* of PROC process_requests */
Example E-12. C File: A Simple SPI Server (page 8 of 12)