Low Level Controller
if (pt->pt_op_mode == PT_MD_AUTO)
{
/* UI frame sent while waiting for */
/* I frame acknowledge ?
*/
if (pt->pt_state & UI_SENT_WHILE_WAITING_FOR_ACK)
{
/* the UI frame was sent out if the */
/* XFIFO is empty (write enable)
if (inp(pt->pt_r_star) & STAR_XFW)
*/
TX_ACKNOWLEDGE (pt->pt_pei, pt->pt_tx_frame);
pt->pt_state &= ~UI_SENT_WHILE_WAITING_FOR_ACK;
/* if we are in timer recovery
/* status the TREC status check
/* procedure is activated. The
/* transmit acknowledge for the I
*/
*/
*/
*/
/* frame must not be generated !!! */
if (inp (pt->pt_r_star2) & STAR2_TREC)
ENABLE_TREC_STATUS_CHECK ();
else
TX_ACKNOWLEDGE (pt->pt_pei, (BYTE) PT_FR_I);
}
else
{
/* if we are in timer recovery
*/
/* status and the last frame was an */
/* I frame the TREC status check
/* procedure is activated.
/* If not an transmit acknowledge
/* is generated
*/
*/
*/
*/
if (pt->pt_tx_frame == PT_FR_I &&
(inp (pt->pt_r_star2) & STAR2_TREC))
ENABLE_TREC_STATUS_CHECK ();
else
TX_ACKNOWLEDGE (pt->pt_pei, pt->pt_tx_frame);
}
}
else
/* In all other operating modes
*/
/* (non automode, transparent mode, */
/* ...) the transmit acknowledge
/* can be generated at once.
*/
*/
TX_ACKNOWLEDGE (pt->pt_pei, pt->pt_tx_frame);
/* transmit byte count and status
/* flag are reset and any
/* MMU buffer used for temporary
/* transmit data storage is
/* released if necessary
*/
*/
*/
*/
*/
pt->pt_tx_cnt = 0;
pt->pt_state &= ~PT_TX_ACTIVE;
if (pt->pt_state & PT_TX_MMU_FREE)
{
MMU_free (pt->pt_tx_start);
Semiconductor Group
297