Low Level Controller
}
}
/***************************************************************************/
/*
/*
/*
/*
/*
/*
/*
*/
*/
*/
*/
*/
*/
*/
Function: RX_ICC ()
Parms : ’pt’ pointer to the assigned PEITAB array element
’rpf’ = 1 if RPF interrupt
purpose : handle interrupts generated by the receiver of an
ICC (ISAC-S, ISAC-P)
/***************************************************************************/
LOCAL void
RX_ICC (rpf, pt)
BOOLEAN
register PEITAB
rpf;
*pt;
{
WORD
RecCnt, ctrl;
FPTR
ptr;
BYTE
pei = pt->pt_pei;
BYTE
BOOLEAN
rsta, tei, sapi, frame_status = VALID;
Two, AutoM, CR_of_I_valid = TRUE;
/* RPF interrupt:
*/
/* 32 bytes of a frame longer than */
/* 32 bytes have been received
/* and are now available in the
/* RFIFO.
*/
*/
*/
*/
/* The message is not complete.
if (rpf)
RecCnt = 32;
else
{
/* RME interrupt:
/* Receive message end. The RFIFO
/* contains a complete frame
*/
*/
*/
/* (length <= 32 byte) or the last */
/* bytes or a frame (length > 32) */
/* ================================ */
/* read byte count register(s) to
/* get the number of currently
/* received bytes
/* please note that ICC / ISAC-S
/* version Axx had only one byte
/* count register !!!
*/
*/
*/
*/
*/
*/
if (pt->pt_device == PT_ICC || pt->pt_device == PT_ISAC_S)
RecCnt = (BYTE) inp (pt->pt_r_rfbc);
else
RecCnt = (WORD) inp (pt->pt_r_rbcl) |
(WORD) (inp (pt->pt_r_rbch) & 0x0F) << 8;
if (RecCnt && !(RecCnt &= 0x1F))
RecCnt = 32;
}
/* ’RecCnt’ now contains the number */
/* of bytes actually received
*/
Semiconductor Group
300