about to clen up, renamef from ra_enc.c
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 12 Sep 2016 07:32:11 +0000 (07:32 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 12 Sep 2016 07:32:11 +0000 (07:32 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2855 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/ldpc_enc.c [new file with mode: 0644]

diff --git a/codec2-dev/src/ldpc_enc.c b/codec2-dev/src/ldpc_enc.c
new file mode 100644 (file)
index 0000000..c7d0331
--- /dev/null
@@ -0,0 +1,68 @@
+/* RA encoder  program;  Bill,  March 2016 
+   Using the elegant back substitution of RA LDPC codes. 
+   This version does not store the data in bytes! */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define Nibits 2064
+#define Npbits 516
+#define Nwt     12
+
+/* generated by ldpc_fsk_lib.m:ldpc_decode() */
+
+#include "ldpc_code.h"
+
+unsigned char  ibits[Nibits];    // info array 
+unsigned char  pbits[Npbits];    // parity array 
+
+void encode()   {
+    unsigned int   p, i, tmp, par, prev=0;
+    int ind;
+
+    for (p=0; p<Npbits; p++) {
+        par = 0; 
+
+        for (i=0; i<Nwt; i++) {
+            ind = (int)H_rows[p + i*Npbits];
+            par = par + ibits[ind-1];
+        }
+
+        tmp = par + prev;
+
+        tmp &= 1;    // only retain the lsb 
+        prev = tmp; 
+        pbits[p] =tmp; 
+    }
+}
+
+int main(void)
+{
+  short  k;
+  unsigned int x;
+
+  printf("Test C Encoder\n");
+  
+  FILE *infp, *opfp;
+  infp = fopen("dat_in2064.txt", "r");   // read info bits from file   
+  if (infp == NULL) {printf("Unable to open file.\n"); exit(1);} 
+  for (k=0; k<Nibits; k++)     { 
+      fscanf(infp, "%u\n", &x);
+      ibits[k] = x; 
+    }
+  fclose(infp);  
+
+  encode();  
+
+  opfp = fopen("dat_op2064.bin", "wb");   // write par bits to file
+  if (opfp == NULL) {printf("Unable to output file.\n"); exit(1);}  
+  for (k=0; k<Nibits; k++)
+      fwrite(&ibits[k], sizeof(char), 1, opfp); 
+  for (k=0; k<Npbits; k++)
+      fwrite(&pbits[k], sizeof(char), 1, opfp); 
+  fclose(opfp); 
+
+  return 1;
+}