diff --git a/src/corel8/corel8.cpp b/src/corel8/corel8.cpp new file mode 100644 index 0000000..9db042f --- /dev/null +++ b/src/corel8/corel8.cpp @@ -0,0 +1,127 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../librpitx/src/librpitx.h" +#include "costas8.h" + +float frequency=14.07e6; +bool running=true; + +//ngfmdmasync *fmmod; +fskburst *fsk; +static double GlobalTuningFrequency=00000.0; + + +void Encode(char Symbol,unsigned char *Tab,int Upsample) +{ + for(int i=0;i<8;i++) + { + + fprintf(stderr,"freq %d -> %c\n",4*(Costas8[Symbol][i]-1),Symbol); + for(int j=0;jtm_min % minute) == 0 && ptm->tm_sec == 0) break; + usleep(1000); + } + usleep(1000000); // wait another second +} + +static void +terminate(int num) +{ + running=false; + fprintf(stderr,"Caught signal - Terminating\n"); + +} + + +int main(int argc, char **argv) +{ + char *Message="F5OEO"; + int SampleRate=4; + if (argc >2 ) + { + frequency=atof(argv[1]); + Message=argv[2]; + } + + if(argc<=2) + { + printf("usage : corel8 frequency(Hz) Message\n"); + exit(0); + } + + for (int i = 0; i < 64; i++) { + struct sigaction sa; + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = terminate; + sigaction(i, &sa, NULL); + } + + + + short VCOFreq; + + + int NbSymbol=5; + + int SR = 4*100; + float Deviation = 4; + int Upsample=100; + int FifoSize = 8*(20+1)*Upsample; //8 symbols * 20 caracters max, 1 Symbol SYNC + fsk=new fskburst(frequency, SR, Deviation, 14, FifoSize); + + unsigned char TabSymbol[FifoSize]; + NbSymbol=strlen(Message); + fprintf(stderr,"Nb Symbols=%d\n",NbSymbol); + dbg_setlevel(1); + while(running) + { + fprintf(stderr,"Wait next minute\n"); + wait_every(1); + if(!running) break; + fprintf(stderr,"Begin Tx\n"); + unsigned char *TabChar=TabSymbol; + Encode(1,TabChar,Upsample); + TabChar+=8*Upsample; + for(int symbol=0;(symbolSetSymbols(TabSymbol, (NbSymbol+1)*8*Upsample); + fsk->stop(); + } + delete fsk; + return 0; +} + + + + diff --git a/src/corel8/costas8.h b/src/corel8/costas8.h new file mode 100644 index 0000000..753528e --- /dev/null +++ b/src/corel8/costas8.h @@ -0,0 +1,187 @@ +unsigned char Costas8[184][8]= +{ +{1,3,6,2,7,8,5,4}, +{1,3,6,7,5,2,8,4}, +{1,3,6,7,5,4,8,2}, +{1,4,2,8,7,3,5,6}, +{1,4,5,7,6,3,8,2}, +{1,5,3,8,7,4,6,2}, +{1,5,7,4,3,8,6,2}, +{1,5,8,4,2,7,6,3}, +{1,6,2,8,5,3,4,7}, +{1,6,4,7,8,3,5,2}, +{1,6,4,8,5,7,2,3}, +{1,6,5,3,7,8,2,4}, +{1,6,5,8,3,7,4,2}, +{1,7,3,8,6,5,2,4}, +{1,7,4,3,5,8,2,6}, +{1,7,4,8,3,2,5,6}, +{1,7,8,3,5,2,6,4}, +{1,8,2,6,5,3,4,7}, +{1,8,3,6,2,7,5,4}, +{1,8,5,4,2,7,3,6}, +{1,8,5,7,3,2,6,4}, +{1,8,6,2,3,5,4,7}, +{1,8,6,3,7,2,4,5}, +{2,1,6,7,4,8,3,5}, +{2,1,7,5,8,3,4,6}, +{2,4,7,3,8,5,6,1}, +{2,5,3,8,7,4,6,1}, +{2,5,4,6,7,3,1,8}, +{2,5,6,4,1,7,3,8}, +{2,5,6,4,3,7,1,8}, +{2,6,3,8,7,5,1,4}, +{2,6,4,1,7,8,3,5}, +{2,6,4,7,8,3,5,1}, +{2,6,8,3,4,7,5,1}, +{2,6,8,7,1,4,5,3}, +{2,7,3,6,1,8,5,4}, +{2,7,3,6,8,1,5,4}, +{2,7,5,4,1,8,3,6}, +{2,7,6,4,8,5,1,3}, +{2,7,6,8,1,5,3,4}, +{2,8,1,5,3,6,7,4}, +{2,8,3,6,7,5,4,1}, +{2,8,4,5,7,6,3,1}, +{2,8,6,1,3,7,4,5}, +{3,1,5,8,4,6,7,2}, +{3,2,7,5,8,4,6,1}, +{3,2,7,8,5,1,4,6}, +{3,4,2,7,6,8,1,5}, +{3,4,6,2,1,7,5,8}, +{3,4,7,1,6,2,8,5}, +{3,4,7,6,1,5,2,8}, +{3,5,1,8,2,7,6,4}, +{3,5,4,1,7,8,6,2}, +{3,5,6,1,4,2,8,7}, +{3,5,8,1,7,4,2,6}, +{3,5,8,2,6,1,7,4}, +{3,5,8,4,1,2,7,6}, +{3,6,1,8,5,4,2,7}, +{3,6,2,7,5,4,1,8}, +{3,6,7,2,4,8,5,1}, +{3,7,1,4,6,5,2,8}, +{3,7,1,6,5,2,8,4}, +{3,7,5,2,1,6,8,4}, +{3,7,5,2,8,1,4,6}, +{3,7,8,2,4,1,6,5}, +{3,8,6,1,2,5,7,4}, +{4,1,5,7,8,3,6,2}, +{4,1,7,3,8,2,5,6}, +{4,2,3,6,8,7,1,5}, +{4,2,5,6,8,3,7,1}, +{4,2,8,7,3,5,6,1}, +{4,3,5,1,8,6,7,2}, +{4,3,8,5,7,1,2,6}, +{4,5,1,8,6,3,7,2}, +{4,5,2,6,8,3,1,7}, +{4,5,7,2,6,3,1,8}, +{4,5,7,2,6,3,8,1}, +{4,5,8,1,6,3,7,2}, +{4,5,8,7,2,6,3,1}, +{4,6,1,2,8,5,3,7}, +{4,6,1,5,2,3,8,7}, +{4,6,2,3,7,5,8,1}, +{4,6,2,5,3,8,7,1}, +{4,6,7,2,8,1,5,3}, +{4,7,1,6,2,8,5,3}, +{4,7,5,2,1,6,8,3}, +{4,7,6,3,5,1,8,2}, +{4,8,1,3,2,7,5,6}, +{4,8,2,1,3,6,7,5}, +{4,8,2,5,6,1,7,3}, +{4,8,2,5,7,6,3,1}, +{4,8,6,1,2,5,7,3}, +{5,1,3,8,7,4,2,6}, +{5,1,7,4,2,3,6,8}, +{5,1,7,4,3,8,2,6}, +{5,1,7,8,6,3,2,4}, +{5,1,8,6,7,2,4,3}, +{5,2,3,6,4,8,1,7}, +{5,2,4,7,8,3,1,6}, +{5,2,8,3,7,1,4,6}, +{5,3,2,7,1,8,4,6}, +{5,3,7,4,6,1,2,8}, +{5,3,7,6,2,4,1,8}, +{5,3,8,4,7,6,1,2}, +{5,3,8,7,1,4,6,2}, +{5,4,1,2,7,3,6,8}, +{5,4,1,8,3,6,2,7}, +{5,4,2,7,3,6,1,8}, +{5,4,2,7,3,6,8,1}, +{5,4,7,3,1,6,8,2}, +{5,4,8,1,3,6,2,7}, +{5,6,1,4,2,8,7,3}, +{5,6,4,8,1,3,2,7}, +{5,7,1,2,6,4,3,8}, +{5,7,4,3,1,6,2,8}, +{5,7,6,3,1,2,8,4}, +{5,8,2,6,1,7,4,3}, +{5,8,4,2,1,6,3,7}, +{6,1,3,8,7,4,2,5}, +{6,2,1,7,5,8,3,4}, +{6,2,4,7,1,8,5,3}, +{6,2,4,7,8,3,1,5}, +{6,2,8,3,4,7,1,5}, +{6,2,8,5,3,4,7,1}, +{6,3,2,7,5,1,4,8}, +{6,3,7,2,4,5,8,1}, +{6,3,8,1,4,5,7,2}, +{6,4,1,5,8,7,2,3}, +{6,4,1,7,3,8,2,5}, +{6,4,1,8,2,5,7,3}, +{6,4,3,8,5,7,1,2}, +{6,4,5,8,2,1,3,7}, +{6,4,8,1,7,2,3,5}, +{6,5,2,3,8,4,7,1}, +{6,5,2,8,3,7,1,4}, +{6,5,3,7,8,2,4,1}, +{6,5,7,2,3,1,8,4}, +{6,7,2,1,4,8,5,3}, +{6,7,2,4,1,5,3,8}, +{6,8,4,1,5,3,2,7}, +{7,1,3,8,6,2,5,4}, +{7,1,5,4,2,3,6,8}, +{7,1,6,3,2,4,5,8}, +{7,1,8,4,6,3,2,5}, +{7,2,3,1,8,4,6,5}, +{7,2,3,5,1,4,8,6}, +{7,2,4,5,8,1,6,3}, +{7,2,6,3,1,8,4,5}, +{7,2,6,3,8,1,4,5}, +{7,3,1,2,8,5,4,6}, +{7,3,1,6,5,2,4,8}, +{7,3,5,2,1,6,4,8}, +{7,3,5,8,2,1,6,4}, +{7,3,6,1,2,4,8,5}, +{7,4,3,5,6,2,8,1}, +{7,4,3,5,8,2,6,1}, +{7,4,5,3,2,6,8,1}, +{7,4,6,1,2,5,3,8}, +{7,5,2,6,1,4,3,8}, +{7,8,2,4,1,6,5,3}, +{7,8,3,2,5,1,6,4}, +{8,1,3,6,2,7,5,4}, +{8,1,3,7,6,4,5,2}, +{8,1,4,2,6,7,3,5}, +{8,1,4,5,7,2,6,3}, +{8,1,6,3,7,2,4,5}, +{8,1,7,3,4,6,5,2}, +{8,2,1,6,4,7,3,5}, +{8,2,5,1,6,7,4,3}, +{8,2,5,6,4,1,7,3}, +{8,2,6,1,3,4,7,5}, +{8,3,4,1,6,2,5,7}, +{8,3,4,6,2,1,7,5}, +{8,3,5,1,4,2,7,6}, +{8,3,5,2,1,6,4,7}, +{8,3,7,1,4,6,5,2}, +{8,4,1,5,7,2,3,6}, +{8,4,2,5,6,1,3,7}, +{8,4,6,1,2,5,3,7}, +{8,5,4,2,3,6,1,7}, +{8,5,7,1,2,6,4,3}, +{8,6,3,2,4,5,1,7}, +{8,6,3,2,4,7,1,5}, +{8,6,3,7,2,1,4,5} +}; \ No newline at end of file