diff --git a/gui/preload-chat.js b/gui/preload-chat.js index e3181cc1..ad214ad4 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -831,6 +831,10 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); + // check for messages which failed and try to transmit them + if (config.enable_auto_retry.toUpperCase() == "TRUE") { + checkForWaitingMessages(obj.dxcallsign); + } // handle ping-ack } else if (item.ping == "acknowledge") { @@ -869,7 +873,10 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.new = 0; add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); - + // check for messages which failed and try to transmit them + if (config.enable_auto_retry.toUpperCase() == "TRUE") { + checkForWaitingMessages(obj.dxcallsign); + } // handle ARQ transmission } else if (item.arq == "transmission" && item.status == "received") { //var encoded_data = atob(item.data); @@ -1068,7 +1075,11 @@ update_chat = function (obj) { } // check if wrong status message - if (obj.status == "transmit" && obj.type == "transmit" && obj.percent < 100) { + if ( + obj.status == "transmitting" && + obj.type == "transmit" && + obj.percent < 100 + ) { var TimeDifference = new Date().getTime() / 1000 - obj.timestamp; if (TimeDifference > 21600) { //Six hours @@ -1291,6 +1302,17 @@ update_chat = function (obj) { //get user information getSetUserInformation(selected_callsign); getSetUserSharedFolder(selected_callsign); + if (selected_callsign.startsWith("BC-")) { + document + .getElementById("chatModuleMessage") + .setAttribute("maxlength", 16); + //console.log("Setting max message size to 16") + } else { + document + .getElementById("chatModuleMessage") + .setAttribute("maxlength", 524288); + //console.log("Setting max message size to big#") + } }); // if callsign entry already exists - update @@ -1319,10 +1341,6 @@ update_chat = function (obj) { if (!document.getElementById("msg-" + obj._id)) { if (obj.type == "ping") { - // check for messages which failed and try to transmit them - if (config.enable_auto_retry.toUpperCase() == "TRUE") { - checkForWaitingMessages(obj.dxcallsign); - } //if (obj.new == 1) //{ // showOsPopUp("Ping from " + obj.dxcallsign,"You've been ping'd!"); @@ -1341,10 +1359,6 @@ update_chat = function (obj) { `; } if (obj.type == "beacon") { - // check for messages which failed and try to transmit them - if (config.enable_auto_retry.toUpperCase() == "TRUE") { - checkForWaitingMessages(obj.dxcallsign); - } var new_message = `

snr: ${obj.snr} - ${timestamp}

@@ -2500,14 +2514,8 @@ function getSetUserInformation(selected_callsign) { if (selected_callsign.startsWith("BC-")) { var userIcon = defaultGroupIcon; - document - .getElementById("chatModuleMessage") - .setAttribute("maxlength", 16); } else { var userIcon = defaultUserIcon; - document - .getElementById("chatModuleMessage") - .setAttribute("maxlength", 524288); } document.getElementById("user-image-" + selected_callsign).src = @@ -2569,15 +2577,9 @@ function getSetUserInformation(selected_callsign) { console.log(err); if (selected_callsign.startsWith("BC-")) { - document - .getElementById("chatModuleMessage") - .setAttribute("maxlength", 16); var userIcon = defaultGroupIcon; } else { var userIcon = defaultUserIcon; - document - .getElementById("chatModuleMessage") - .setAttribute("maxlength", 524288); } // Callsign list elements @@ -2810,7 +2812,6 @@ function changeGuiDesign(design) { } function checkForWaitingMessages(dxcall) { - console.log(dxcall); db.find({ selector: { dxcallsign: dxcall, @@ -2820,6 +2821,9 @@ function checkForWaitingMessages(dxcall) { }, }) .then(function (result) { + console.log( + "Found " + result.docs.length + " messages waiting for " + dxcall, + ); // handle result if (result.docs.length > 0) { // only want to process the first available item object, then return @@ -2854,7 +2858,7 @@ function checkForWaitingMessages(dxcall) { } return; } else { - console.log("nope"); + //console.log("nope"); } }) .catch(function (err) { diff --git a/tnc/modem.py b/tnc/modem.py index 182222e3..a68d1f97 100644 --- a/tnc/modem.py +++ b/tnc/modem.py @@ -875,7 +875,10 @@ class RF: # we need to disable this if in testmode as its causing problems with FIFO it seems if not TESTMODE: ModemParam.is_codec2_traffic = True - + if not ModemParam.channel_busy: + self.log.debug("[MDM] Setting channel_busy since codec2 data detected") + ModemParam.channel_busy=True + ModemParam.channel_busy_delay+=10 self.log.debug( "[MDM] [demod_audio] modem state", mode=mode_name, rx_status=rx_status, sync_flag=codec2.api.rx_sync_flags_to_text[rx_status] @@ -1261,7 +1264,7 @@ class RF: whether the channel is "busy." """ # Initialize channel_busy_delay counter - channel_busy_delay = 0 + #channel_busy_delay = 0 # Initialize dbfs counter rms_counter = 0 @@ -1343,6 +1346,9 @@ class RF: slot3 = [120, 176] slot4 = [176, 231] slot5 = [231, len(dfftlist)] + + # Set to true if we should increment delay count; else false to decrement + addDelay=False for range in [slot1, slot2, slot3, slot4, slot5]: range_start = range[0] @@ -1354,22 +1360,23 @@ class RF: # If we have a signal, increment our channel_busy delay counter # so we have a smoother state toggle if np.sum(slotdfft[slotdfft > avg + 15]) >= 200 and not TNC.transmitting: - ModemParam.channel_busy = True + addDelay=True ModemParam.channel_busy_slot[slot] = True - # Limit delay counter to a maximum of 200. The higher this value, - # the longer we will wait until releasing state - channel_busy_delay = min(channel_busy_delay + 10, 200) else: - # Decrement channel busy counter if no signal has been detected. - channel_busy_delay = max(channel_busy_delay - 1, 0) - # When our channel busy counter reaches 0, toggle state to False - if channel_busy_delay == 0: - ModemParam.channel_busy = False - ModemParam.channel_busy_slot[slot] = False - + ModemParam.channel_busy_slot[slot] = False # increment slot slot += 1 - + if (addDelay): + # Limit delay counter to a maximum of 200. The higher this value, + # the longer we will wait until releasing state + ModemParam.channel_busy = True + ModemParam.channel_busy_delay = min(ModemParam.channel_busy_delay + 10, 200) + else: + # Decrement channel busy counter if no signal has been detected. + ModemParam.channel_busy_delay = max(ModemParam.channel_busy_delay - 1, 0) + # When our channel busy counter reaches 0, toggle state to False + if ModemParam.channel_busy_delay == 0: + ModemParam.channel_busy = False AudioParam.fft = dfftlist[:315] # 315 --> bandwidth 3200 except Exception as err: self.log.error(f"[MDM] calculate_fft: Exception: {err}") diff --git a/tnc/static.py b/tnc/static.py index 05b8819e..6e6d3def 100644 --- a/tnc/static.py +++ b/tnc/static.py @@ -106,6 +106,7 @@ class ModemParam: tx_delay: int = 0 # delay in ms before sending modulation for triggering VOX for example or slow PTT radios enable_scatter: bool = False scatter = [] + channel_busy_delay = 0 @dataclass class Station: