From 3650ca00b14957c38d78d686f4cb49698b32d343 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 10 Jun 2017 22:59:45 +0200 Subject: [PATCH] SDRdaemonSink documentation --- doc/img/SDRdaemonSink_plugin.png | Bin 0 -> 26007 bytes doc/img/SDRdaemonSink_plugin_04.png | Bin 0 -> 4908 bytes doc/img/SDRdaemonSink_plugin_06.png | Bin 0 -> 8319 bytes doc/img/SDRdaemonSink_plugin_07.png | Bin 0 -> 6105 bytes plugins/samplesink/sdrdaemonsink/readme.md | 123 ++++++++++++++---- .../samplesource/sdrdaemonsource/readme.md | 8 +- 6 files changed, 99 insertions(+), 32 deletions(-) create mode 100644 doc/img/SDRdaemonSink_plugin.png create mode 100644 doc/img/SDRdaemonSink_plugin_04.png create mode 100644 doc/img/SDRdaemonSink_plugin_06.png create mode 100644 doc/img/SDRdaemonSink_plugin_07.png diff --git a/doc/img/SDRdaemonSink_plugin.png b/doc/img/SDRdaemonSink_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..e6ffbdf9c0abf3c53a827d86653604b435b3d6b6 GIT binary patch literal 26007 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 literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonSink_plugin_06.png b/doc/img/SDRdaemonSink_plugin_06.png new file mode 100644 index 0000000000000000000000000000000000000000..c69e557f0ffae2f23d9c2fc66aac7b30ceefd140 GIT binary patch literal 8319 zcmaia1z1#FxGtcAiiC)yf-Q9?Ql1fPqAt5z%cSwUUbPh2NT|*5L zck!R|oOADe?tc%@v)Oz0UTf_&>-*mKd%yL~=MNBRg1c0Av9PcR-oKMn!otEH0@nez zal!wfj?Wa}gli-#EeX!x4I{ zOsNJN+@f@OtKlMHZ)VbshSXi{E_mXc^JZ84% zJ#|!FFHiR;b!)eJo`nTGW6DZWT2`}CN>0v3#>FR@A(gaZ7a0K^m9Ho9Wvy?=EKF|?iFFS)Em%Yl+TU; z>H_04l#3&G`)M$7)|)Y^zG|)& zSal;^au5-cm}B8DyHnyrl-Cj*xhru3fvEHh&>D`*zT&$3YZGzH{`=(P;}X0`vUHD0 z%T4!=hQ88Vkx<@GF*JF^gq0_Y2`x2*YPq4iAG`HK*_&NMXw2FB7n$!lFg;Xjx!II{ z^TZ6IS(6?5;%JTAN=V%z5AEab8c?^g)NF^?#{L`C=6w~y9{acyg7xdJhaO?!=n853 zuj5C-=BPJ?nFueUxuZBvh3vqZJbueeR~q7pTj^Rq&eO{$*1u4Y+?F+K)xN41sVQ8# zh?AN&zVYNY(VR}^u5PL8*Bkg>_nWp5*TWs3Mb(^N7~n=E;kVd);(ZEHo7!j!pNlQ^ z!`;$Yb2&O2fj;4)UbrB=T(%(~7Sew|(@v|_bVrapZ1DzMG~j`zgSn80b@`16(*ysw zuVEMZJ%nt)@w#8IsfsG3x*i01;RV{ue)t)9H}B;HesufAeCA(`{8tNpv%{-j5t{_- zd4`?bFSuTyPx9J!b7uscBMIw8f1IZ>1u6sgAUv3%K%&KjQY-UTm+YxK_fF&PiCY!AzUy4iD+R#H!REKl z5yKj+)tCz*lN3v?QK&3B-hJIJ#i+h+!ARf7)M5Xy#%c}N?_?G0Fi`Z$1I7YSh z`<+m?7d2VuUJEb3XwJ^cGkGULPL5-FC-17bjO6xSdPv?$9k(a_c|LCfGp}~1&h+Vf zRSXz!YaI-#P(`ISpqN{bOcc=Hval+iE~m&a5@z^`Rp$9~wDbq-cvNMSW)X`}<$SJY z@dEBjNE;*CU<0RTAgJ1KZ>b6&dh)1J`T3I!9@0PJzi2Sc^bU8QNvJaGZHG&M~+wGRbw&y)4@;-!s9c=q2_7*i4`6zsMh!w z>z)r~){gRyGfPh(bj1*@y|*clVtz6JT|zi|T;8{UD|zPss`-nEyF2=RK z?6l1>_V*l*ZTjI`C`YJd7~E2<#1Q)3H`J#a_*iN26a~^Zv|4UBckBFoY_{M(sq!fL z=L&sW*7{h^jnIb2GXWM^9j96QDm|LEPdg*e#-c)_t)Al?`@~2@I=2(*uwRD<)Huh) ze(`0cq$!CwHzlVEvmLBeV40x%Pu(40u6GC*$kz@=B~k{)F`G6a=6H=^Nu#VU$peBp zx!x7y>=e?XyNnZDUl$23XctD>R?e(G{) zp2ROVo#}Kk3aUP6-$Tn=L>gG{*td9_<}AnCLSxOkGUs0shCc=4S>B(`(1y>7S2HYj zd5Znru`f&ie9q?2yf7^wU%-Lopx_{Q;?0oB+*ijM_2TFH!Vj7gJI>AL5>;6t%sJ|{ zN|^f341LVrw7;^%vQI{oZJ4U%lbP6s@kRFg(iO@g{HEv}1k0C}!hXHZS;DM>g3o>5zPS&DS zw)uL*&m+mVD`{nMRY|?tOXt*=;fD2^ zWK~wi4GhSY%jZ(fW;IdKRPo?$jh~h*ytZYEEZDTI#Q{+@i$FoYTX0X$90X3uDehsn z^~mq;645en3vLe&j|}+whr)4+d$?b|e0jmn-fhB}sn*}nWRHg%i>*+_h>|VFlXs64 z;t=JCu;2)~9etZA;$iA}SDd-7`37 zt0LIk+$LsZ^(U~7Sa7c*k&YW@uf@`n$v4GavjLw!Egir|<##2tuF z**(v&RY1Otl+}o@Q+7(``zp6390f|d3P0!_i z9c&SYEn={tOgxVrbpC{o)^8|)XyPR-Cbsp?o?Y_%w_`N=xu9V3*XPnkuPA^4YWRta zxv2(~htowY#|s`p{mx$ILDJeyIG2`}pJ_Wj5S>yNLs+X&o#7qkPQFc+1ybdlcOQZ><=VC=w0dZn@fk2)Ztef-IL=17zB>CQK z{*G56G|N5Rw=@mjucW0V^Y-m6hS=U`8dQ-|XzWVhTx6_Tdz}vyh{?#Lz_W)BAG+xt z?aVh+I3Z=e#l}uIdOAlU;du(?v(>gge*7qP-BkM(_1KyxZ5^H$o1EOI>prh)JZ%p3 zl>!a0YgeL#PS>)d-@Sith#E?ZcqDL8-+zwyNK|e&FQ}xXG*x9y?u;7h>hA7t^qHx& z9Ds@~mK^)q3a`oMN=GrU@%R! z*lfPu^?cW#CuQyi9^q=!$-<2%!osQ1Vwd0J;z)UIre4?BC7d`P?k++HQ}|-PeQPf_ z?Z18ZZh8J>&7xn5i1%@+aW`SQ$MR>~%GZ9@!79+Xxw-E=)@1sA82Zgg7-}h$w&cjZ zn8&1Gr{6Wcu*4PT`zu472Dj~J0s=|X73Pyd$*XJU8-*ul2Zbfo=MoYUo+tC}({;{_ zy}iAiU0ow3x($Nxa?G((^z<+@)DbF?vXrq|>{Bw8KL9-)~O|vv2O^aOZjcq)d(B`?^>1BjU!X~xlTl8D}wicSGtF#7# zZsGI0tPul?nskH^u;|nh+uI{)>JbQo1y9uD1UB8ij5i-^J@%jZWBT<6*5%R!<1;dz zgb+~wilF2=?V!DUEhi@@GOpoGoXTxU0t|0{xHbaZ61u3Q!=cpJC zM)El5WlR$G`wbckK< zM{B`Cs=JSsXx-J3=%X%&vquzt@xw{stckLS${UeV5{YcO*Bl)wRjI`ac+!HKN`)z2 z;DZ`LzUoI5c>=77iFn1O3Arn&sC0g#mtC7ErhfYLY5urX2;t+t zFAtfoUw~-)*xB8U-s>P*oN9YpY}OipeeJhFK{$l8q62)3J{>VnB}#;fdwP1b`c)?d zv4PJKr}%M_Ccr z?im|f6!5rYK6}Cd03KNL8Izx%AK{`NQ*qrywU77RN-J!wNKU!GlZkN{>l$EmYIk?{ ztgNg7)XT{t&5nNdmVsm*>)#gKWP#;YSUgE`I!#{j0RdQOjJ!9|K~T1m@G-_IygLZLDx_4sBGq+H#RkH76F#EhUZ3h5w9PuE&|bUfJWE(V9Es?qA0mS zz=}-Ud;jb%^jG&v={RdkvNf2(2m1n)M*dP9qwEZi531nWuY( zfFpN8aBZfFnagYd>&c53VPRpn_53iV5UA+jH4AO(U-hAf#TGN1PS4Ji)YQzXCIKJQ z&(zrK+f&7(mZ&yQ_g6^C$dW@vqaO(B(fE5u$FjE=J2yWqa@*{KSrFVowBuwiWWFj`d>c;2`dz@80iTSe)j|a_L{3Vo zaj#0y$-8Wd=;BF660$MCtk1{%w~2QuQ+(f}Q%EX*AS6#BdjzquA!BC7z!YB~r2sd0 z_1!xI_hTUNO>U}4C*j7=ZOX7o=cV>rZaZ_I)e24LY90Te@e9>qB}X*%G$LLOr+bDa zdQEp*#|zb`%Z%~5qaI7ZCM$d}PFdO6FcCeN->qA>fJxDq@&bTYyI5}w)kY-WLaPNg zrvu{k+0kZqrbMVlrG;X4s8u0e^YVd_+Esb-ElYfUMVBl?%Q>vr-cDqHVsB3mVkKJ4 ztS#skkQa#M<#rI}HfNkP*=N|JtEW}_lTQ%G+t(I5S1 z5Q7rC>Yb^wo^JN_PV1)8wr4-W^pkqn-rEwm?Ji7cck&w5{S+C)c~#s?!oQu{*qGX% z$gZrW_N&%$Wk7ups9vDl!u4P^x4+?jY!i0TrgQ-s)Or$~!Z-8eHUYt{4D;di#=UlY zIy$k7ZOC1%XXR*S{esOCppoRoIgx z0OUl^o6o+w%z28# z7J02zKz2)O1v(D167n8VnXRbAAX{_>-A>78f61 z=CN;-3rXt(k!|nb;2F@kKmtIS)k}bQpP<@Qb;X(0edGdg5<)~96&+1fQc@y(JY}3J z;2ct3ULL|Y8le3?Xg=tUBYvCm_WL+@mBEbZ)>*|drYa0aG*#p;VH}*j)*D2>i?#WH zUbC35=W+fs@RXT3JT>)Ec|`>XAYmAxbS`s3sqC+c*-~HA(}#eZla-PA;+ekR(g&o9UFwX20K>}xxdC`yE?qbYNV=HV*pDL?bfTi^pC2$TudGOb zoZ>n@X;<4=eu%C+Q&CiG1EQHi$c<%TVL|fkTMmO(EYJ?tP?O~NEPKLfyb6K^@{$!G zBk7+#3jz@}-S=2C+;-f`k20!%*o1RjbN2|TezBZUe_%gRMCs`02y|r%;Et4&!M;MP zLj6Z3uIk5Z zNCM8!nEu$D_1OUswGGnJVD!a&}k4`}^P10OQ0l>);G3ky%R_={DT4>y+_*v-}6 z2OJOZ{awsoRI4}vpkseIoL%eQ$i2scae&B@{f7q!k(r@1S-^)tbkS;JUGX~Kw)Zy% z`qyTr@=mdutd$NPe5Q3B3?h)GDq-@m_uM?|w4udc_D2s>ye2+;Sxc-SfovtMkcW4N4nz)KY= z2Ng}@Tk!a3-*S;qRK#+5+AWq`g9LdXhxf6Kp7%Bn&W#%a4v2uRx+Nmf(*Up&KtfBa z00x##WTWTdsai<)w%u$3G?A+S9Rkw*_vTTNPTe=)AY+&`4Ri;Q81anAuvOiLb{@#& zf7iQOi=M4L*U{0LYW5YP^*vNfD?IF2pzXoG?W*DDI_~X@QPq1?>4fa_Lhr)!h=3%? z1{^_l5*+mD46Gv1k2S*}8T&~2dlPbcI=r_b{+~OHmDc^yvIrFo?`@57 zPrkiVk=R~IJ3BTYn=-*NUvFxxkLFMb!*~tx0SiuBLe;5QFYSlj=drKJ(zemL#2GVP7VM9w0URX3rTQ{y|HkLsGAgt$q zarBGcsC-nS(y1&O7nv?!C1cw(sWo|}U%~E58~dkgOdEP6;C1*y#Ov_Y$%gmgTAR>r zqwzi;*kf3(Ls_-R3cq~WJ9neX4YKJ)t?c@el@&S2w`k)ci2E^f=pVoUrr^dSGarC8 zd%>7nHpubDPUv)ajI)R0pE`beuNf~&&09Ps^U>v@!ktvN$2fyP zbZ^317`VCPVq%D$?JK+xMdvQ=?%lJqDL_zbHLkbam#D6GyFB*<`vF_&3dmxPk&%&9 zkX}y|&@qe9D_8a8DO!6}UsRZER(#(3lHU@#+G^bcm`0<_=u=lu&)`p~*g>}RSZT5^ zX=1NWI9|Eqbh-rpe)57PFb=wurVtk%Oy{s*5MBO;IdA-1TH0W}>!!z6S$Ei%FIgEG z0p;bK=m&u+Ob-F=fyn&<7^wXdex1jD7DgvYD!Yz;F;1!J)dcAYy>@!xb3)!hkZs6&8hi_D}xMzsgiA9I>iO74=O%+MIkqLo)mar$3c&_R!a7gsq$Ouk&(P4H<*slL=aTg)$tWn^si~2HkOLA3D)Jiw2h)Y^ zWjb93m>!K9);U%1fmP@DH*xKY^dMM z4kwT)+^o;kBWIAgM{iuABZ9WFg$%DRp(8*v?V9qA>kNV{W_ULRe7}Sy3IiV8P9#;8EuE zFjOl?Do1U4d*Xq)nQdtExcgSUn+~*Jlmb2ft|3+GbA2ZR#*<29|9t#G6_n`AN`W@w zGZOor0ZBQC*?e^YT!|8*zTqI%dhJnM=aFGVEv%TaNlf1(k2&eQk z&%x=xU;VRx%x9NDH3jT;li_(uN6646bbfPtk`~j1N}l6YBJ~PG^dHZQj|OZN5jR#m zR`u_`z4TqeNsz$j?(48e4t8&t9(naw6Z4IPdA|B*f8SEnCYjNdJ@}CSQ|+xB`u5zE z7*I3zx-JQKZp-X&ll@aJ{$b-QU9ef{9kq9|FO^v%FO?tGW35Hq5r3<_Vq;m zz2^Pj)BJx`#Q*#0f7HYO&wBa)^;Gh~(G|9Cd%N!n&p|i%T>#emw-Ct^af6`$1>Uxl ANB{r; literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonSink_plugin_07.png b/doc/img/SDRdaemonSink_plugin_07.png new file mode 100644 index 0000000000000000000000000000000000000000..949d697b00e972e9e1853843a12d6e552cdf4aed GIT binary patch literal 6105 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 literal 0 HcmV?d00001 diff --git a/plugins/samplesink/sdrdaemonsink/readme.md b/plugins/samplesink/sdrdaemonsink/readme.md index cede1d66b..9f1d0aea9 100644 --- a/plugins/samplesink/sdrdaemonsink/readme.md +++ b/plugins/samplesink/sdrdaemonsink/readme.md @@ -1,59 +1,126 @@ -

File sink plugin

+

SDRdaemon sink plugin

Introduction

-This output sample sink plugin sends its samples to file in the SDRangel .sdriq format. +This output sample sink plugin sends its samples over tbe network to a SDRdaemon transmitter server using UDP connection. SDRdaemon refers to the SDRdaemon utility `sdrdaemontx`found in [this](https://github.com/f4exb/sdrdaemon) Github repostory. -The format is S16LE I/Q samples. Thus there are 4 bytes per sample. I and Q values are 16 bit signed integers. The file starts with a context header containing information about center frequency, sample rate and timestamp of the start of the recording. This header has a length which is a multiple of a sample size (normally 24 bytes thus 6 samples). Thus this file can be used as a raw I/Q file with S16LE samples tolerating a glitch at the start corresponding to the 6 "random" samples. For example in GNURadio you can simply specify your file source format as short complex. - -You can also zap the 24 bytes header with this Linux command: `tail -c +25 myfile.sdriq > myfile.raw` - -To convert in another format you may use the sox utility. For example to convert to 32 bit (float) complex samples do: `sox -r 48k −b 16 −e signed-integer -c 2 myfile.raw -e float -c 2 myfilec.raw` - -Note that you have to specify the sampling rate and use .raw for the file extensions. +Forward Error Correction with a Cauchy MDS block erasure codec is used to prevent block loss. This can make the UDP transmission more robust particularly over WiFi links.

Build

-The plugin is always built. +The plugin will be built only if `libnanomsg` and the [CM256cc library](https://github.com/f4exb/cm256cc) is installed in your system. `libnanomasg` is present in most distributions and the dev version can be installed using the package manager. For CM256cc library you will have to specify the include and library paths on the cmake command line. Say if you install cm256cc in `/opt/install/cm256cc` you will have to add `-DCM256CC_INCLUDE_DIR=/opt/install/cm256cc/include/cm256cc -DCM256CC_LIBRARIES=/opt/install/cm256cc/lib/libcm256cc.so` to the cmake commands.

Interface

-![File sink plugin GUI](../../../doc/img/FileSink_plugin.png) +![SDR Daemon sink output plugin GUI](../../../doc/img/SDRdaemonSink_plugin.png)

1: Start/Stop

Device start / stop button. - Blue triangle icon: device is ready and can be started - - Red square icon: device is running and can be stopped - - Magenta (or pink) square icon: an error occured + - Green square icon: device is running and can be stopped -

2: File stream sample rate

+

2: Stream sample rate

+ +Stream I/Q sample rate in kS/s over the network. -This is the file stream sample rate in kS/s after interpolation (4) from the baseband stream. Thus this is the sample rate (7) multiplied by the interpolation factor (6). -

3: Frequency

-This is the center frequency in kHz that will be put in the file header. +This is the center frequency in kHz sent to the remote device. -

4: Output file selection

+

4: Sample rate

-Use this file dialog to specify the output file. +![SDR Daemon sink output sample rate GUI](../../../doc/img/SDRdaemonSink_plugin_04.png) -

5: File name

+

4.1: Network stream sample rate

-This is the file path of the output file. +This is the I/Q stream sample rate transmitted via UDP over the network -

6: Interpolation factor

+

4.2: Remote interpolation factor

-The baseband stream is interpolated by this value before being written to file. It can vary in powers of two from 1 (no interpolation) to 64. +This is the interpolation set in the remote `sdrdaemontx` server instance. -

7: Baseband sample rate

+

5: Delay between UDP blocks transmission

-This is the baseband sample rate before interpolation in S/s. +This sets the minimum delay between transmission of an UDP block (send datagram) and the next. This allows throttling of the UDP transmission that is otherwise uncontrolled and causes network congestion. -Use the wheels to adjust the sample rate. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arroews. Pressing shift simultanoeusly moves digit by 5 and pressing control moves it by 2. +The value is a percentage of the nominal time it takes to process a block of samples corresponding to one UDP block (512 bytes). This is calculated as follows: -

8: Time counter

+ - Sample rate on the network: _SR_ + - Delay percentage: _d_ + - Number of FEC blocks: _F_ + - There are 127 blocks of I/Q data per frame (1 meta block for 128 blocks) and each I/Q data block of 512 bytes (128 samples) has a 4 bytes header (1 sample) thus there are 127 samples remaining effectively. This gives the constant 127*127 = 16219 samples per frame in the formula + +Formula: ((127 ✕ 127 ✕ _d_) / _SR_) / (128 + _F_) -This is the recording time count in HH:MM:SS.SSS \ No newline at end of file +

6: Forward Error Correction setting and status

+ +![SDR Daemon sink output FEC GUI](../../../doc/img/SDRdaemonSink_plugin_06.png) + +

6.1: Desired number of FEC blocks per frame

+ +This sets the number of FEC blocks per frame. A frame consists of 128 data blocks (1 meta data block followed by 127 I/Q data blocks) and a variable number of FEC blocks used to protect the UDP transmission with a Cauchy MDS block erasure correction. The two numbers next are the total number of blocks and the number of FEC blocks separated by a slash (/). + +

6.2: Distant transmitter queue length

+ +This is the samples queue length reported from the distant transmitter. This is a numnber of vectors of 127 ✕ 127 ✕ _I_ samples where _I_ is the interpolation factor. This corresponds to a block of 127 ✕ 127 samples sent over the network. This numbers serves to thottle the sample generator so that the queue length is close to 8 vectors. + +

6.3: Stream status

+ +The color of the icon indicates stream status: + + - Green: all original blocks have been received for all frames during the last polling timeframe (ex: 134) + - No color: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe (ex: between 128 and 133) + - Red: some original blocks were definitely lost for some frames during the last polling timeframe (ex: less than 128) + +

6.4: Frames recovery status

+ +These are two numbers separated by a slash (/): + + - first: minimum total number of blocks per frame during the last polling period. If all blocks were received for all frames then this number is the nominal number of original blocks plus FEC blocks (Green lock icon). In our example this is 128+6 = 134. + - second: maximum number of FEC blocks used for original blocks recovery during the last polling timeframe. Ideally this should be 0 when no blocks are lost but the system is able to correct lost blocks up to the nominal number of FEC blocks (Neutral lock icon). + +

6.5: Reset events counters

+ +This push button can be used to reset the events counters (6.6 and 6.7) and reset the event counts timer (6.8) + +

6.6: Unrecoverable error events counter

+ +This counter counts the unrecoverable error conditions found (i.e. 6.4 lower than 128) since the last counters reset. + +

6.7: Recoverable error events counter

+ +This counter counts the unrecoverable error conditions found (i.e. 6.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset. + +

6.8: events counters timer

+ +This hh:mm:ss time display shows the time since the reset evetnts counters button (4.6) was pushed. + +

7: Network parameters

+ +![SDR Daemon sink output network GUI](../../../doc/img/SDRdaemonSink_plugin_07.png) + +

7.1: Distant interface IP address

+ +Address of the network interface on the distance (server) machine where the SDRdaemon Tx server runs and receives samples. + +

7.2: Distant data port

+ +UDP port on the distant (server) machine where the SDRdaemon Tx server runs and receives samples. + +

7.3 Distant configuration port

+ +TCP port on the distant machine hosting the SDRdaemon Tx instance to send control messages to and receive status messages from. + +

7.4: Validation button

+ +When the return key is hit within the address (7.1), data port (7.2) or configuration port (7.3) boxes the changes are effective immediately. You can also use this button to set again these values. + +

8: Other parameters hardware specific

+ +These are the parameters that are specific to the hardware attached to the distant SDRdaemon instance. You have to know which device is attached to send the proper parameters. Please refer to the SDRdaemon documentation or its line help to get information on these parameters. + +

9: Send data to the distant SDRdaemon Rx instance

+ +When any of the parameters change they get immediately transmitted to the distant server over the TCP link. You can however use this button to send again the complete configuration. This is handy if for some reason you are unsure of the parameters set in the distant server. diff --git a/plugins/samplesource/sdrdaemonsource/readme.md b/plugins/samplesource/sdrdaemonsource/readme.md index bc7e957a4..36d72f053 100644 --- a/plugins/samplesource/sdrdaemonsource/readme.md +++ b/plugins/samplesource/sdrdaemonsource/readme.md @@ -112,15 +112,15 @@ Maximum number of FEC blocks used for original blocks recovery during the last p This push button can be used to reset the events counters (4.7 and 4.8) and reset the event counts timer (4.9) -

4.6: Unrecoverable error events counter

+

4.7: Unrecoverable error events counter

This counter counts the unrecoverable error conditions found (i.e. 4.4 lower than 128) since the last counters reset. -

4.6: Recoverable error events counter

+

4.8: Recoverable error events counter

This counter counts the unrecoverable error conditions found (i.e. 4.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset. -

4.6: events counters timer

+

4.9: events counters timer

This hh:mm:ss time display shows the time since the reset evetnts counters button (4.6) was pushed. @@ -161,7 +161,7 @@ The value is a percentage of the nominal time it takes to process a block of sam - Number of FEC blocks: _F_ - There are 127 blocks of I/Q data per frame (1 meta block for 128 blocks) and each I/Q data block of 512 bytes (128 samples) has a 4 bytes header (1 sample) thus there are 127 samples remaining effectively. This gives the constant 127*127 = 16219 samples per frame in the formula -Formula: ((127 * 127) * _d_ / _SR_) / (128 + _F_) +Formula: ((127 ✕ 127 ✕ _d_) / _SR_) / (128 + _F_)

8: Desired distant device sample rate