prototype 1600 wide mode
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 24 Mar 2013 05:47:15 +0000 (05:47 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 24 Mar 2013 05:47:15 +0000 (05:47 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1224 01035d8c-6547-0410-b346-abe4f91aad63

fdmdv2/src/fdmdv2_defines.h
fdmdv2/src/fdmdv2_main.cpp
fdmdv2/src/topFrame.cpp
fdmdv2/src/topFrame.h
fdmdv2/src/version.h

index ded419b32c3c08bcf4856672dfee0e3f4ee49945..93380e961942723a3ef02f6f30237cad01da35a7 100644 (file)
@@ -97,7 +97,10 @@ enum
 
 #define MODE_1400_V0_91  0   // Legacy 1400 from Dec 2012 V0.91 release with incorrect QPSK mapping
 #define MODE_1400        1   // 1400 bit/s codec, no FEC
-#define MODE_1600        2   // 1600 bit/s codec, no FEC
+#define MODE_1600        2   // 1300 bit/s codec, + 300 bit/s FEC
 #define MODE_2000        3   // 1400 bit/s codec, 600 bit/s FEC on most sensitive bits, 2000 bit/s total
+#define MODE_1600_WIDE   4   // As per 2 but wide carrier spacing
+
+#define FSEP_WIDE      125
 
 #endif  //__FDMDV2_DEFINES__
index 97cec47fdd08a6f982bedfd960ed8f19d6396879..d71b894cda255db472d7c641274f317edb29a547 100644 (file)
@@ -1597,19 +1597,22 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)
             codec2_mode = CODEC2_MODE_1400;
         }
        
-#ifdef DISABLED_FEATURE
-        if (m_rb1400->GetValue()) {
-            g_mode = MODE_1400;
-            g_Nc = 14;
-            codec2_mode = CODEC2_MODE_1400;
-        }
-#endif
         if (m_rb1600->GetValue()) {
             g_mode = MODE_1600;
             g_Nc = 16;
             codec2_mode = CODEC2_MODE_1300;
         }
+        if (m_rb1600Wide->GetValue()) {
+            g_mode = MODE_1600_WIDE;
+            g_Nc = 16;
+            codec2_mode = CODEC2_MODE_1300;
+        }
 #ifdef DISABLED_FEATURE
+        if (m_rb1400->GetValue()) {
+            g_mode = MODE_1400;
+            g_Nc = 14;
+            codec2_mode = CODEC2_MODE_1400;
+        }
         if (m_rb2000->GetValue()) {
             g_mode = MODE_2000;
             g_Nc = 20;
@@ -1631,6 +1634,8 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)
 
         if (g_mode == MODE_1400_V0_91)
             fdmdv_use_old_qpsk_mapping(g_pFDMDV);
+        if (g_mode == MODE_1600_WIDE)
+            fdmdv_set_fsep(g_pFDMDV, FSEP_WIDE);
 
         // adjust scatter diagram for Number of FDM carriers
 
@@ -2677,7 +2682,7 @@ void per_frame_rx_processing(
                         }
                     }
 
-                    if (g_mode == MODE_1600) {
+                    if ((g_mode == MODE_1600) || (g_mode == MODE_1600_WIDE)) {
                         int recd_codeword, codeword1, j;
 
                         recd_codeword = 0;
@@ -2855,7 +2860,7 @@ void per_frame_tx_processing(
         assert(i <= 2*bits_per_fdmdv_frame);
     }
 
-    if (g_mode == MODE_1600) {
+    if ((g_mode == MODE_1600) || (g_mode == MODE_1600_WIDE)) {
         int data, codeword1;
 
         /* Protect first 12 out of first 16 excitation bits with (23,12) Golay Code:
index 0875cedc9aa601c55cb44e027b37156190955aa7..3d9e20fa1e9733dc14e3092f17eaef2e73091d33 100644 (file)
@@ -312,6 +312,8 @@ TopFrame::TopFrame(wxWindow* parent, wxWindowID id, const wxString& title, const
 #endif
     m_rb1600 = new wxRadioButton( this, wxID_ANY, wxT("1600"), wxDefaultPosition, wxDefaultSize, 0);
     sbSizer_mode->Add(m_rb1600, 0, wxALIGN_LEFT|wxALL, 1);
+    m_rb1600Wide = new wxRadioButton( this, wxID_ANY, wxT("1600 Wide"), wxDefaultPosition, wxDefaultSize, 0);
+    sbSizer_mode->Add(m_rb1600Wide, 0, wxALIGN_LEFT|wxALL, 1);
 #ifdef DISABLED_FEATURE
     m_rb2000 = new wxRadioButton( this, wxID_ANY, wxT("2000"), wxDefaultPosition, wxDefaultSize, 0);
     sbSizer_mode->Add(m_rb2000, 0, wxALIGN_LEFT|wxALL, 1);
index e5979a13c67dbc6ad70e5b61d95685dc2e5af4a3..2151a0e5e0fbf7240aaba906243361b88af1c69a 100644 (file)
@@ -106,6 +106,7 @@ class TopFrame : public wxFrame
         wxRadioButton *m_rb1400;
         wxRadioButton *m_rb1600;
         wxRadioButton *m_rb2000;
+        wxRadioButton *m_rb1600Wide;
 
         // Virtual event handlers, overide them in your derived class
         virtual void topFrame_OnClose( wxCloseEvent& event ) { event.Skip(); }
index 02acabbabdad0b865cba820a45b65650ad6f8c6c..d5f43d54f791f3ab5fb95ad931f4ab021c6ea17c 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef FREEDV_VER_DOT_H
 #define FREEDV_VER_DOT_H 1
 
-#define FREEDV_VERSION "0.96 Beta"
+#define FREEDV_VERSION "0.961 Beta"
 
 #endif //FREEDV_VER_DOT_H