# HG changeset patch # User Mychaela Falconia # Date 1511475858 0 # Node ID 63c5bb42eca5b1d2549453621f01bb7f8ea16abd # Parent 9f2e0c34fe33ea54b6182c7b282cfe38661c5379 osmo2psi test program written diff -r 9f2e0c34fe33 -r 63c5bb42eca5 .hgignore --- a/.hgignore Fri Nov 17 19:58:07 2017 +0000 +++ b/.hgignore Thu Nov 23 22:24:18 2017 +0000 @@ -34,6 +34,7 @@ ^miscprog/imeibrute$ ^miscprog/memwrite-grep$ ^miscprog/mokosrec2bin$ +^miscprog/osmo2psi$ ^miscprog/pircalextr$ ^miscprog/pircksum$ ^miscprog/pircksum2$ diff -r 9f2e0c34fe33 -r 63c5bb42eca5 miscprog/Makefile --- a/miscprog/Makefile Fri Nov 17 19:58:07 2017 +0000 +++ b/miscprog/Makefile Thu Nov 23 22:24:18 2017 +0000 @@ -1,7 +1,7 @@ CC= gcc CFLAGS= -O2 STD= atsc calextract factdiff ftmdump grokdsn memwrite-grep mokosrec2bin \ - pircalextr pircksum pircksum2 rfcap-grep + osmo2psi pircalextr pircksum pircksum2 rfcap-grep CRYPTO= imeibrute pirimei PROGS= ${STD} ${CRYPTO} @@ -21,6 +21,7 @@ imeibrute: imeibrute.c memwrite-grep: memwrite-grep.c mokosrec2bin: mokosrec2bin.c +osmo2psi: osmo2psi.c pircalextr: pircalextr.c pircksum: pircksum.c pircksum2: pircksum2.c diff -r 9f2e0c34fe33 -r 63c5bb42eca5 miscprog/osmo2psi.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/miscprog/osmo2psi.c Thu Nov 23 22:24:18 2017 +0000 @@ -0,0 +1,34 @@ +/* + * This test program seeks to help figure out the mapping between OsmocomBB's + * AFC_SLOPE constant and the Psi constants used by TI's AFC implementation, + * as our fc-rfcal-vcxo tool would compute them from CMU200 measurements. + */ + +#include +#include +#include + +main(argc, argv) + char **argv; +{ + int afc_slope; + float lin_a; + float Psi_sta, Psi_st; + + if (argc != 2) { + fprintf(stderr, "usage: %s osmo-afc-slope\n", argv[0]); + exit(1); + } + afc_slope = atoi(argv[1]); + lin_a = (float)afc_slope / 32768.0f * 898.0f; + + /* Psi computations */ + Psi_sta = 2.0f * (float)M_PI * lin_a / 270833.0f; + Psi_st = Psi_sta * 0.8f; + + printf("Psi_sta_inv = %u\n", (unsigned)(1.0f / Psi_sta)); + printf("Psi_st = %u\n", (unsigned)(Psi_st * 65536.0f)); + printf("Psi_st_32 = %u\n", (unsigned)(Psi_st * 65536.0f * 65536.0f)); + printf("Psi_st_inv = %u\n", (unsigned)(1.0f / Psi_st)); + exit(0); +}