From 54b92b878ebb1f8ede278f8e3f01601ad909e95a Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 26 Nov 2013 15:25:00 -0800 Subject: [PATCH] TMXR: Support loopback when using packet APIs even if a connection is not active --- sim_tmxr.c | 4 ++-- sim_tmxr.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sim_tmxr.c b/sim_tmxr.c index eb5e194b..ade7d647 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -1830,7 +1830,7 @@ t_stat r; size_t fc_size = (frame_byte ? 1 : 0); size_t pktlen_size = (lp->datagram ? 0 : 2); -if (!lp->conn) +if ((!lp->conn) && (!lp->loopback)) return SCPE_LOST; if (lp->txppoffset < lp->txppsize) { tmxr_debug (TMXR_DBG_PXMT, lp, "Skipped Sending Packet - Transmit Busy", (char *)&lp->txpb[3], size); @@ -1854,7 +1854,7 @@ while ((lp->txppoffset < lp->txppsize) && (SCPE_OK == (r = tmxr_putc_ln (lp, lp->txpb[lp->txppoffset])))) ++lp->txppoffset; tmxr_send_buffered_data (lp); -return lp->conn ? SCPE_OK : SCPE_LOST; +return (lp->conn || lp->loopback) ? SCPE_OK : SCPE_LOST; } /* Poll for output diff --git a/sim_tmxr.h b/sim_tmxr.h index 32b8ac33..4c437a71 100644 --- a/sim_tmxr.h +++ b/sim_tmxr.h @@ -242,8 +242,8 @@ t_stat tmxr_start_poll (void); t_stat tmxr_stop_poll (void); void _tmxr_debug (uint32 dbits, TMLN *lp, const char *msg, char *buf, int bufsize); extern FILE *sim_deb; /* debug file */ -#define tmxr_debug(dbits, lp, msg, buf, bufsize) if (sim_deb && (lp)->mp->dptr && ((dbits) & (lp)->mp->dptr->dctrl)) _tmxr_debug (dbits, lp, msg, buf, bufsize); else (void)0 -#define tmxr_debug_return(lp, val) if (sim_deb && (val) && (lp)->mp->dptr && (TMXR_DBG_RET & (lp)->mp->dptr->dctrl)) sim_debug (TMXR_DBG_RET, (lp)->mp->dptr, "Ln%d: 0x%x\n", (int)((lp)-(lp)->mp->ldsc), val); else (void)0 +#define tmxr_debug(dbits, lp, msg, buf, bufsize) if (sim_deb && (lp)->mp && (lp)->mp->dptr && ((dbits) & (lp)->mp->dptr->dctrl)) _tmxr_debug (dbits, lp, msg, buf, bufsize); else (void)0 +#define tmxr_debug_return(lp, val) if (sim_deb && (val) && (lp)->mp && (lp)->mp->dptr && (TMXR_DBG_RET & (lp)->mp->dptr->dctrl)) sim_debug (TMXR_DBG_RET, (lp)->mp->dptr, "Ln%d: 0x%x\n", (int)((lp)-(lp)->mp->ldsc), val); else (void)0 #define tmxr_debug_trace(mp, msg) if (sim_deb && (mp)->dptr && (TMXR_DBG_TRC & (mp)->dptr->dctrl)) sim_debug (TMXR_DBG_TRC, mp->dptr, "%s\n", (msg)); else (void)0 #define tmxr_debug_trace_line(lp, msg) if (sim_deb && (lp)->mp && (lp)->mp->dptr && (TMXR_DBG_TRC & (lp)->mp->dptr->dctrl)) sim_debug (TMXR_DBG_TRC, (lp)->mp->dptr, "Ln%d:%s\n", (int)((lp)-(lp)->mp->ldsc), (msg)); else (void)0 #define tmxr_debug_connect(mp, msg) if (sim_deb && (mp)->dptr && (TMXR_DBG_CON & (mp)->dptr->dctrl)) sim_debug (TMXR_DBG_CON, mp->dptr, "%s\n", (msg)); else (void)0