Added idle ellipsis during band fades

This commit is contained in:
Jordan Sherer 2018-12-22 22:47:48 -05:00
parent 03b2b11938
commit 478a909b90
2 changed files with 78 additions and 25 deletions

View File

@ -4852,8 +4852,8 @@ void MainWindow::guiUpdate()
// update repeat button text once per second..
updateRepeatButtonDisplay();
// once per second...but not when we're transmitting
if(!m_transmitting){
// once per second...but not when we're transmitting, unless it's in the first second...
if(!m_transmitting || (m_sec0 % (m_TRperiod))){
// process all received activity...
processActivity(forceDirty);
@ -8934,6 +8934,9 @@ void MainWindow::processActivity(bool force) {
// Recent Rx Activity
processRxActivity();
// Process Idle Activity
processIdleActivity();
// Grouped Compound Activity
processCompoundActivity();
@ -8974,6 +8977,47 @@ void MainWindow::resetTimeDeltaAverage(){
observeTimeDeltaForAverage(0);
}
void MainWindow::processIdleActivity() {
auto now = DriftingDateTime::currentDateTimeUtc();
// if we detect an idle offset, insert an ellipsis into the activity queue and band activity
foreach(auto offset, m_bandActivity.keys()){
auto details = m_bandActivity[offset];
if(details.isEmpty()){
continue;
}
auto last = details.last();
if((last.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast){
continue;
}
if(last.utcTimestamp.secsTo(now) < m_TRperiod){
continue;
}
if(last.text == " . . . "){
continue;
}
ActivityDetail d = {};
d.text = " . . . ";
d.isFree = true;
d.utcTimestamp = last.utcTimestamp;
d.snr = last.snr;
d.tdrift = last.tdrift;
d.freq = last.freq;
if(hasExistingMessageBuffer(offset, false, nullptr)){
m_messageBuffer[offset].msgs.append(d);
}
m_rxActivityQueue.append(d);
m_bandActivity[offset].append(d);
}
}
void MainWindow::processRxActivity() {
if(m_rxActivityQueue.isEmpty()){
return;
@ -9026,24 +9070,6 @@ void MainWindow::processRxActivity() {
}
}
#if 0
// if this is a recent non-directed offset, bump the cache and display...
if(isRecentOffset(d.freq)){
markOffsetRecent(d.freq);
shouldDisplay = true;
}
#endif
#if 0
// if this is a (recent) directed offset, bump the cache, and display...
// this will allow a directed free text command followed by non-buffered data frames.
bool isDirectedAllCall = false;
if(isDirectedOffset(d.freq, &isDirectedAllCall)){
markOffsetDirected(d.freq, isDirectedAllCall);
shouldDisplay = shouldDisplay || !isDirectedAllCall;
}
#endif
// TODO: incremental printing of directed messages
// Display if:
// 1) this is a directed message header "to" us and should be buffered...
@ -9053,11 +9079,6 @@ void MainWindow::processRxActivity() {
continue;
}
#if 0
// ok, we're good to display...let's cache that fact and then display!
markOffsetRecent(d.freq);
#endif
bool isFirst = (d.bits & Varicode::JS8CallFirst) == Varicode::JS8CallFirst;
bool isLast = (d.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast;
@ -9083,6 +9104,37 @@ void MainWindow::processRxActivity() {
m_rxFrameBlockNumbers.remove(d.freq);
}
}
#if 0
// TODO: this works but should also print in the rx window.
foreach(auto offset, m_bandActivity.keys()){
if(seen.contains(offset)){
continue;
}
if(m_bandActivity[offset].isEmpty()){
continue;
}
auto last = m_bandActivity[offset].last();
if((last.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast){
continue;
}
auto now = DriftingDateTime::currentDateTimeUtc();
if(last.utcTimestamp.secsTo(now) < m_TRperiod){
continue;
}
ActivityDetail d = {};
d.text = " . . . ";
d.isFree = true;
d.utcTimestamp = now;
d.snr = -99;
m_bandActivity[offset].append(d);
}
#endif
}
void MainWindow::processCompoundActivity() {

View File

@ -935,6 +935,7 @@ private:
void observeTimeDeltaForAverage(float delta);
void resetTimeDeltaAverage();
void processRxActivity();
void processIdleActivity();
void processCompoundActivity();
void processBufferedActivity();
void processCommandActivity();