g4klx / DMRGateway

A multi-network DMR gateway for the MMDVM.
GNU General Public License v2.0
142 stars 91 forks source link

TS_FLOOD options #78

Closed d51r3verse closed 5 years ago

d51r3verse commented 5 years ago

Now I am struggling multiple network enabled + TS_FLOOD *TS_FLOOD: If target RF slot busy(TS[slotNo].RF[TX]) and next slot(slotNo==1?:2:1) is idle? then , flood network data to idle RF slot temporay. instead of discard network traffic.

my changes below : every network->rf codes( m_repeater->write(data) ) DMRGW_STATUS order changed: DMRGWS_NONE=0, DMRGWS_XLXREFLECTOR=1, DMRGWS_DMRNETWORK1=2, DMRGWS_DMRNETWORK2=3, DMRGWS_DMRNETWORK3=4

status[slotNo] = DMRGWS_DMRNETWORKx; timer[slotNo]->setTimeout(netTimeout); timer[slotNo]->start(); } else if (trace) { LogWarning("DMR Network x -> RF Failed(COLLISION)! \tNetwork %u still using RF(TX) Slot=%u", status[slotNo] - 1U, slotNo); #if defined(FLOOD_TS) unsigned int nextSlot = slotNo==1?2:1; data.setSlotNo(nextSlot); if (status[nextSlot] == DMRGWS_NONE || status[nextSlot] == DMRGWS_DMRNETWORKx) { m_repeater->write(data); status[nextSlot] = DMRGWS_DMRNETWORKx; timer[nextSlot]->setTimeout(netTimeout); timer[nextSlot]->start(); LogWarning("DMR Network x -> RF FLOOD \tSlot=%u->%u Src=%u Dst=%s%u", slotNo, nextSlot, srcId, flco == FLCO_GROUP ? "TG" : "", dstId); }else LogWarning("DMR Network x -> RF FLOOD \tFAILED(DISCARD) BOTH TS1&TS2 BUSY!"); #endif }

Results: When nextSlot idle, then flood expected!( Nextion&Transceiver ) ### But just 0.1secs only Why this changes triggers MMDVMHost's watchdog expiration???

g4klx commented 5 years ago

I am very unhappy about this proposal. I can see what you are trying to achieve, but I think it is wrong. Sorry.

d51r3verse commented 5 years ago

Let my duplex hotspot's RF:TS1 for reflector/TG control while RXing at TS2 RF:TG1-1000@TS1orTS2 => NET1:TG1-1000@TS2 RF:TG2001-3000@TS1orTS2 => NET2:TG1-1000@TS2 RF:TG3001-4000@TS1orTS2 => NET3:TG1-1000@TS2 NET1:TG1-1000@TS1orTS2 => RF:TG1-1000@TS2 NET2:TG1-1000@TS1orTS2 => RF:TG2001-3000@TS2 NET3:TG1-1000@TS1orTS2 => RF:TG3001-4000@TS2

But, If I connect TG777(SCAN) at tgif.network or some local reflectors when congested time... RX pop, RX pop, RX pop, within 1 seconds. I can't send disconnect(TG4000) signals while they talking. So, DMRGateway discards my main IPSC2 traffics until I restart DMRGateway. -I suspect reason that does not separates queue for net2rf, rf2net, does not tracks RF/NET status of each TS correctly. Therefore TX while RXing, sometimes slot status messed[DMRGateway discard RF->NET traffic. Even if TX to TS1 while RXing at TS2]

I think its related opened prio/hold feature request. I'm testing similar feature with simplest way[TS_FLOOD] Another network's traffic discard(conflict) chance could be more easily. cuz you accpets [DMR Network 4] recent pull request. Just asking you 'why this(DMRGateway's target RF slot change) influences MMDVMHost?' I am not beg you 'feature request' or suggesting... why you saying 'its wrong'

Thank you for your advice, I am always wrong. you are always right! correct :100: I really apologize for spend time to reading this useless issues. Dear greatest implementator that duplex traffic handling with single queue.