1600 test frame hitsogram working again
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 23 Feb 2017 03:51:22 +0000 (03:51 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 23 Feb 2017 03:51:22 +0000 (03:51 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3049 01035d8c-6547-0410-b346-abe4f91aad63

freedv-dev/src/fdmdv2_main.cpp

index 7321b10a3afd235faefa791252e6534a5ce88041..3ca8db1a03b4e229dc1fc30a1ac50702049373bb 100644 (file)
@@ -1305,19 +1305,23 @@ void MainFrame::OnTimer(wxTimerEvent &evt)
                             for(i=b; i<sz_error_pattern; i+= 2*g_Nc) {
                                 m_panelTestFrameErrors->add_new_sample(b, b + 0.8*error_pattern[i]);
                                 g_error_hist[b] += error_pattern[i];
+                                g_error_histn[b]++;
                             }
                             //if (b%2)
                             //    printf("g_error_hist[%d]: %d\n", b/2, g_error_hist[b/2]);
                         }
 
-                        int max_hist = 0;
-                        for(b=0; b<g_Nc; b++) {
-                            if (g_error_hist[b] > max_hist) {
-                                max_hist = g_error_hist[b];
-                            }
-                        }
+                         /* calculate BERs and send to plot */
 
-                        m_panelTestFrameErrorsHist->add_new_short_samples(0, g_error_hist, 2*FDMDV_NC_MAX, max_hist);
+                        float ber[2*FDMDV_NC_MAX];
+                        for(b=0; b<2*FDMDV_NC_MAX; b++) {
+                            ber[b] = 0.0;
+                        }
+                        for(b=0; b<g_Nc*2; b++) {
+                            ber[b+1] = (float)g_error_hist[b]/g_error_histn[b];
+                        }
+                        assert(g_Nc*2 <= 2*FDMDV_NC_MAX);
+                        m_panelTestFrameErrorsHist->add_new_samples(0, ber, 2*FDMDV_NC_MAX);
                     }
        
                     if ((freedv_get_mode(g_pfreedv) == FREEDV_MODE_700B) || (freedv_get_mode(g_pfreedv) == FREEDV_MODE_700C)) {