diff --git a/lib/genmsk144.f90 b/lib/genmsk144.f90 index 2782a26b0..49f5faeda 100644 --- a/lib/genmsk144.f90 +++ b/lib/genmsk144.f90 @@ -1,4 +1,4 @@ -subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype,pchk_file) +subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype,pchk_file,ldpc_msg) !!!!!!!!!!!!!!!!!! Experimental small blocklength ldpc version ! s8 + 48bits + s8 + 80 bits = 144 bits (72ms message duration) @@ -22,7 +22,9 @@ subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype,pchk_file) use iso_c_binding, only: c_loc,c_size_t use packjt use hashing - character*512 pchk_file,gen_file + character*512 pchk_file,gen_file,ldpc_msg,ldpc_cw + character*120 fname1,fname2 + character*2048 cmnd character*22 msg0 character*22 message !Message to be generated character*22 msgsent !Message as it will be received @@ -50,7 +52,16 @@ subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype,pchk_file) i=index(pchk_file,".pchk") gen_file=pchk_file(1:i-1)//".gen" - call init_ldpc(trim(pchk_file)//char(0),trim(gen_file)//char(0)) + i=index(ldpc_msg,'ldpc_msg"') + ldpc_cw=ldpc_msg(1:i-1)//'ldpc_cw"' +! fname1=trim(ldpc_msg) +! fname2=trim(ldpc_cw) +! print*,'A ',fname1 + fname1="ldpc_msg" + fname2="ldpc_cw" +! print*,'B ',fname1 + +! call init_ldpc(trim(pchk_file)//char(0),trim(gen_file)//char(0)) if( first ) then first=.false. @@ -82,7 +93,8 @@ subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype,pchk_file) enddo if(message(1:1).eq.'<') then - call genmsk40(message,msgsent,ichk,i4tone,itype,pchk_file) + call genmsk40(message,msgsent,ichk,i4tone,itype,pchk_file, & + fname1,fname2) if(itype.lt.0) go to 999 i4tone(41)=-40 go to 999 @@ -122,7 +134,19 @@ subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype,pchk_file) enddo enddo - call ldpc_encode(msgbits,codeword) +! call ldpc_encode(msgbits,codeword) + + open(19,file=fname1,status='unknown') + write(19,1010) msgbits +1010 format(80i1) + close(19) + cmnd='encode '//trim(pchk_file)//' '//trim(gen_file)//' ' & + //trim(fname1)//' '//trim(fname2) + call system(cmnd) + open(19,file=fname2,status='old') + read(19,1020) codeword +1020 format(128i1) + close(19) !Create 144-bit channel vector: !8-bit sync word + 48 bits + 8-bit sync word + 80 bits diff --git a/lib/genmsk40.f90 b/lib/genmsk40.f90 index f0ddcc4dd..354feadee 100644 --- a/lib/genmsk40.f90 +++ b/lib/genmsk40.f90 @@ -1,4 +1,4 @@ -subroutine genmsk40(msg,msgsent,ichk,itone,itype,pchk_file) +subroutine genmsk40(msg,msgsent,ichk,itone,itype,pchk_file,fname1,fname2) use hashing character*22 msg,msgsent,hashmsg @@ -7,6 +7,8 @@ subroutine genmsk40(msg,msgsent,ichk,itone,itype,pchk_file) character*4 crpt,rpt(0:63) character*512 pchk_file,gen_file character*512 pchk_file40,gen_file40 + character*120 fname1,fname2 + character*2048 cmnd logical first integer itone(144) integer*1 message(16),codeword(32),bitseq(40) @@ -35,7 +37,7 @@ subroutine genmsk40(msg,msgsent,ichk,itone,itype,pchk_file) pchk_file40=pchk_file(1:i-1)//"32-16"//pchk_file(i+6:) i=index(pchk_file40,".pchk") gen_file40=pchk_file40(1:i-1)//".gen" - call init_ldpc(trim(pchk_file40)//char(0),trim(gen_file40)//char(0)) +! call init_ldpc(trim(pchk_file40)//char(0),trim(gen_file40)//char(0)) itype=-1 msgsent='*** bad message ***' itone=0 @@ -61,7 +63,19 @@ subroutine genmsk40(msg,msgsent,ichk,itone,itype,pchk_file) do i=1,16 message(i)=iand(1,ishft(ig,1-i)) enddo - call ldpc_encode(message,codeword) + +! call ldpc_encode(message,codeword) + open(19,file=fname1,status='unknown') + write(19,1010) message +1010 format(16i1) + close(19) + cmnd='encode '//trim(pchk_file)//' '//trim(gen_file)//' ' & + //trim(fname1)//' '//trim(fname2) + call system(cmnd) + open(19,file=fname2,status='old') + read(19,1020) codeword +1020 format(32i1) + close(19) cwstring=" " do i=1,32 diff --git a/mainwindow.cpp b/mainwindow.cpp index 9815c877b..2b92ad123 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -78,7 +78,8 @@ extern "C" { int* itext, int len1, int len2); void genmsk144_(char* msg, int* ichk, char* msgsent, int itone[], - int* itext, char pchkFile[], int len1, int len2, int len3); + int* itext, char pchkFile[], char ldpcMsgFile[], + int len1, int len2, int len3, int len4); void gen65_(char* msg, int* ichk, char* msgsent, int itone[], int* itext, int len1, int len2); @@ -836,6 +837,14 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, if(i<pchkFile.length()) m_pchkFile[i]=ba[i]; } + QString ldpcMsgFile = m_config.temp_dir().absoluteFilePath("ldpc_msg"); + ldpcMsgFile = '"' + ldpcMsgFile + '"'; + ba = ldpcMsgFile.toLocal8Bit(); + for(int i=0; i<512; i++) { + m_ldpcMsgFile[i]=32; + if(i<ldpcMsgFile.length()) m_ldpcMsgFile[i]=ba[i]; + } + statusChanged(); //### The following is temporary ### { @@ -2745,7 +2754,8 @@ void MainWindow::guiUpdate() &m_currentMessageType, len1, len1); if(m_modeTx=="MSK144") { genmsk144_(message, &ichk, msgsent, const_cast<int *> (itone), - &m_currentMessageType, &m_pchkFile[0], len1, len1, 512); + &m_currentMessageType, &m_pchkFile[0], &m_ldpcMsgFile[0], + len1, len1, 512, 512); if(m_restart) { int nsym=144; if(itone[40]==-40) nsym=40; diff --git a/mainwindow.h b/mainwindow.h index 1badd416a..8a9b1f919 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -426,6 +426,7 @@ private: char m_msg[100][80]; char m_pchkFile[512]; + char m_ldpcMsgFile[512]; // labels in status bar QLabel tx_status_label;