From 7a751798c606cb22ffa5105b50fa33f3a0e03e26 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Thu, 9 Apr 2020 18:44:47 -0400 Subject: [PATCH 01/11] htmldoc: add CMake to use man2html to create html doc from man pages This will be included on gh-pages during the next release. Signed-off-by: Robin Getz --- man/CMakeLists.txt | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index 3ce3bf564..35d7dbc85 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -11,12 +11,35 @@ if (WITH_MAN) ${CMAKE_BINARY_DIR}/libiio.3.in ${CMAKE_BINARY_DIR}/man/libiio.3 @ONLY) + if (WITH_DOC) + find_program(MAN2HTML man2html) + if (NOT MAN2HTML) + message(FATAL_ERROR "Can not build html DOC from man without man2html") + endif() + message(STATUS "Building html doc pages with man2html") + file(MAKE_DIRECTORY ${CMAKE_HTML_DEST_DIR}/man3) + execute_process( + COMMAND ${MAN2HTML} -r + INPUT_FILE ${CMAKE_BINARY_DIR}/man/libiio.3 + OUTPUT_FILE ${CMAKE_HTML_DEST_DIR}/man3/libiio.3.html + ) + endif() if (WITH_TESTS) - configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/iio_attr.1.in ${CMAKE_BINARY_DIR}/man/iio_attr.1 @ONLY) - configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/iio_info.1.in ${CMAKE_BINARY_DIR}/man/iio_info.1 @ONLY) - configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/iio_readdev.1.in ${CMAKE_BINARY_DIR}/man/iio_readdev.1 @ONLY) - configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/iio_reg.1.in ${CMAKE_BINARY_DIR}/man/iio_reg.1 @ONLY) - configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/iio_writedev.1.in ${CMAKE_BINARY_DIR}/man/iio_writedev.1 @ONLY) + list(APPEND MAN1 iio_attr.1 iio_info.1 iio_readdev.1 iio_reg.1 iio_writedev.1) + foreach(_page ${MAN1}) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/${_page}.in + ${CMAKE_BINARY_DIR}/man/${_page} @ONLY) + endforeach() + if (WITH_DOC) + file(MAKE_DIRECTORY ${CMAKE_HTML_DEST_DIR}/man1) + foreach(_page ${MAN1}) + execute_process( + COMMAND ${MAN2HTML} -r + INPUT_FILE ${CMAKE_BINARY_DIR}/man/${_page} + OUTPUT_FILE ${CMAKE_HTML_DEST_DIR}/man1/${_page}.html + ) + endforeach() + endif() endif() # install man files into the BINARY directories, # section 3 = library functions From f27fc31378c40932d0e710eb950dd6b5843bb287 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Thu, 9 Apr 2020 18:50:04 -0400 Subject: [PATCH 02/11] travis-ci: install man2html and turn on man pages in CI so that the builds will have these included. Signed-off-by: Robin Getz --- CI/travis/before_install_linux | 9 +++++++-- CI/travis/make_linux | 14 +++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CI/travis/before_install_linux b/CI/travis/before_install_linux index e006cc589..7c8b7ad52 100755 --- a/CI/travis/before_install_linux +++ b/CI/travis/before_install_linux @@ -14,6 +14,11 @@ install_sphinx() { } handle_centos() { + # needed for man2html and a few other popular tools + yum search epel-release + yum info epel-release + yum -y install epel-release + # FIXME: see about adding `libserialport-dev` from EPEL ; maybe libusb-1.0.0-devel... yum -y groupinstall 'Development Tools' yum -y install cmake libxml2-devel libusb1-devel libaio-devel \ @@ -31,7 +36,7 @@ handle_centos() { # CENTOS 6 will has issues with sphinx if is_centos_at_least_ver "7" ; then - yum -y install doxygen + yum -y install doxygen man2html install_sphinx fi @@ -54,7 +59,7 @@ handle_default() { bzip2 gzip flex bison git lsb-release python3-pip if [ -n "${GH_DOC_TOKEN}" ] ; then - sudo apt-get install -y doxygen + sudo apt-get install -y doxygen man2html install_sphinx fi if [ `sudo apt-cache search libserialport-dev | wc -l` -gt 0 ] ; then diff --git a/CI/travis/make_linux b/CI/travis/make_linux index c808d74c5..0189a854d 100755 --- a/CI/travis/make_linux +++ b/CI/travis/make_linux @@ -9,10 +9,10 @@ handle_default() { mkdir -p build cd build - echo "### cmake -DENABLE_PACKAGING=ON -DDEB_DETECT_DEPENDENCIES=ON" - echo " -DPYTHON_BINDINGS=ON" - cmake -DENABLE_PACKAGING=ON -DDEB_DETECT_DEPENDENCIES=ON \ - -DPYTHON_BINDINGS=ON .. + FLAGS="-DENABLE_PACKAGING=ON -DDEB_DETECT_DEPENDENCIES=ON -DPYTHON_BINDINGS=ON" + + echo "### cmake ${FLAGS}" + cmake ${FLAGS} .. echo "### make" make @@ -27,9 +27,9 @@ handle_default() { if command_exists sphinx-build ; then # to build the python doc, libiio and py-iio need to be installed # so we need to re-do some minor things now that they are - echo "### enable -DWITH_DOC=ON" - cmake -DENABLE_PACKAGING=ON -DDEB_DETECT_DEPENDENCIES=ON \ - -DPYTHON_BINDINGS=ON -DWITH_DOC=ON .. + FLAGS="${FLAGS} -DWITH_DOC=ON -DWITH_MAN=ON" + echo "### cmake ${FLAGS}" + cmake ${FLAGS} .. echo "### make" make fi From 9d88efd078441cab7fd99b251014ab96f8303f3f Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Sat, 11 Apr 2020 01:04:11 -0400 Subject: [PATCH 03/11] gitignore: don't ignore directories named "html" That was put in there while we were building Doxygen in the source directory. Now that goes into the cmake destination directory. Signed-off-by: Robin Getz --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index bfe48718b..727d447b4 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,5 @@ install_manifest.txt Makefile build/ -html/ Doxyfile doxygen_sqlite3.db From 3b774a20a1d4b58b8545ba15f025c26f6f09a596 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Sat, 11 Apr 2020 01:07:45 -0400 Subject: [PATCH 04/11] html doc: add master index file for doc. This adds a hand created html file to act as a index page for the man, sphinx and doxygen generated pages. Signed-off-by: Robin Getz --- doc/html/img/ADI_Logo_AWP.png | Bin 0 -> 12437 bytes doc/html/img/Chromium-OS-Logo.png | Bin 0 -> 7846 bytes doc/html/img/GNURadio_logo.png | Bin 0 -> 11379 bytes doc/html/img/PyADI-IIO_Logo_72.png | Bin 0 -> 7425 bytes doc/html/img/ez.png | Bin 0 -> 1657 bytes doc/html/img/favicon.ico | Bin 0 -> 318 bytes doc/html/img/fb.png | Bin 0 -> 495 bytes doc/html/img/gp.png | Bin 0 -> 1257 bytes doc/html/img/ig.png | Bin 0 -> 700 bytes doc/html/img/iio_logo.png | Bin 0 -> 43064 bytes doc/html/img/legato_logo.png | Bin 0 -> 4260 bytes doc/html/img/li.png | Bin 0 -> 536 bytes doc/html/img/mangOH_logo.png | Bin 0 -> 6714 bytes doc/html/img/mathworks_logo.png | Bin 0 -> 10032 bytes doc/html/img/osc128.png | Bin 0 -> 2622 bytes doc/html/img/scopy.png | Bin 0 -> 1275 bytes doc/html/img/sdrangel.png | Bin 0 -> 6669 bytes doc/html/img/ss.png | Bin 0 -> 1794 bytes doc/html/img/style.css | 191 +++++++++ doc/html/img/sw.png | Bin 0 -> 785 bytes doc/html/img/tw.png | Bin 0 -> 849 bytes doc/html/img/yk.png | Bin 0 -> 888 bytes doc/html/img/yt.png | Bin 0 -> 653 bytes doc/html/index.html | 616 +++++++++++++++++++++++++++++ 24 files changed, 807 insertions(+) create mode 100644 doc/html/img/ADI_Logo_AWP.png create mode 100644 doc/html/img/Chromium-OS-Logo.png create mode 100644 doc/html/img/GNURadio_logo.png create mode 100644 doc/html/img/PyADI-IIO_Logo_72.png create mode 100644 doc/html/img/ez.png create mode 100644 doc/html/img/favicon.ico create mode 100644 doc/html/img/fb.png create mode 100644 doc/html/img/gp.png create mode 100644 doc/html/img/ig.png create mode 100644 doc/html/img/iio_logo.png create mode 100644 doc/html/img/legato_logo.png create mode 100644 doc/html/img/li.png create mode 100644 doc/html/img/mangOH_logo.png create mode 100644 doc/html/img/mathworks_logo.png create mode 100644 doc/html/img/osc128.png create mode 100644 doc/html/img/scopy.png create mode 100644 doc/html/img/sdrangel.png create mode 100644 doc/html/img/ss.png create mode 100644 doc/html/img/style.css create mode 100644 doc/html/img/sw.png create mode 100644 doc/html/img/tw.png create mode 100644 doc/html/img/yk.png create mode 100644 doc/html/img/yt.png create mode 100644 doc/html/index.html diff --git a/doc/html/img/ADI_Logo_AWP.png b/doc/html/img/ADI_Logo_AWP.png new file mode 100644 index 0000000000000000000000000000000000000000..231fa10875b8f8f8522784f2cf9368c122f05e05 GIT binary patch literal 12437 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�) literal 0 HcmV?d00001 diff --git a/doc/html/img/Chromium-OS-Logo.png b/doc/html/img/Chromium-OS-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e26ec35b877060e01739e91b437de43e3840bd1b GIT binary patch literal 7846 zcmV;X9$DduP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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≀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

U;It|fk+&)rIQtDkd=bGy%oP|gW{#{S_ zfl53>5w+6wNj?iP?A(L&iN_+9lB;dp=bYP&RN@yS?;@zj)n>#hJO>eEwGSFa1mPjl zyJQC;8jib_@o7kf1kxwJH%nZlh&5j={PU1uqo)wx@D^hE&bHk#NCoMp=TJn8cvd;C zs^uV?7`o-dZPnvs*IeBe{xPI0l>okn*fr)OeRUAETy-1%C**xxi?sObk$3$$GD6~u zpKz~2)X`kjAVV-ZwW`@Urfz+*n#>`q4bFK<$hmaW&Eclsf00L8>4uC8a9Gks*$o5N|7Lzq>CY{AwP|L0-ZEPWs;`H9Xb; zOd(ZpSCBb@1w`eZ?fh?YzN>D6uSQy8cY@CnL`8JtsX+wC6;5{q;(Wv&upa3HySsnh zguE-)XZl;nD2UopEF|6a@D3+k?m4d_-K5i<`+ndY8}8(RItl_(fX_x++}Viz#ZCW4 zGKG5{@}7@FS~9iUv)u{59I?aLPM-W0{jQ=5kXGJ}?+avj>mBF!+lZ#74r_KICCL9m zx^2rzFXL*Nt4I3GS0Y2Y7Sfft2zfsno#*yyU^5YCAX|{3-{N1^w> zZZH@O27|$1Fc=I5gTY`h7z_r3!C){LIyV0gYvATL>&0;}00000NkvXXu0mjf&qSci literal 0 HcmV?d00001 diff --git a/doc/html/img/ez.png b/doc/html/img/ez.png new file mode 100644 index 0000000000000000000000000000000000000000..66cc22f1c59fd21a4e42ea01768e1988c406f508 GIT binary patch literal 1657 zcmV-<28Q{GP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rd3k?7+B~sxejsO4v5MyCZb^rhYtpET4Q~&@0 ziU0rr*K)v*;{X5!JV``BR9M69muYMiWf;eQ@67JZ>~7oLw%eAYrBD`aK`9LqV^JfC z2LTdMj2Mq_1VljzCL}fSi12~KXb1))Dnun97%vWE6f}U5CURAfqe5GdQYgLI?$OAf%K%;+25wCjDp>C{G5_W5M#9C{B0o<;h<3STOF&M$5K{*>TEz!E%f0=|cy`D{7M4uoz2l!#6Ry9m zH%X`AtiW{gT?MSG-NujSDmmBHj9byj(=#bBvd|PKn&M=Tkxh=CiIgS{U5)HGSIN5C zt>n83m=&0w(%?v1fzkfK>}x&5?xrfDR)Y0omyl=pkhy>N0r)Y_{;@7e$@fNYFdL!E!cLQKsHk#1b+x!Yy zo($HES_}d#Y&y&!$Afj;?H`d6KvD}#OVSYylCTmughH1YqaoG;QXvBms!(Z-cW|h) zhVcW&lAGpbQSE9%i3qyTX^RFiExYdk0Je}wApnS2U1&}xO9L;lzGMkS>G?E9nt8PU z1I#UYlCK+f^X=IkxKtg7qGF5G#II=qfRqx+rRnAr4umb)(^kb1>Nwg_%b@gp-YuO^ zePdbH zYC{cFG_K%e=V^v}Z{uX}EX}c261GXcs~>k|l@f}lw$mpC*igHb8G#AR3_QlF6Ps95 zw*^aDmn@Njbj^*T2waNJ_6zlVQNINh2W45s%pNv{LRT)I)NJiLz^1d`U}!e80#D#K zynKJI65BHAOhh;qsv{H+V`1V|eT?)4a61hUDia5erQBc2nwqcJbapdv{eh4aAZ#XB zQN5n3_LIymdX9y~GsxCF)CAA)+Tr)P5NW{_78S)$F@4AcTFf>qTTl~hVcx!_?7Hw9 znxbQ<*B=MT2cfEA+ZNl;@8Lk(pJZ7PCghJ}?wv2W6&G9~{$R-V|v<}+Kd z6&Gz?VOkSyxD_KM@oNGAq-h>p(ja06IT8Gee%_(P%qT%KL|NwTEE@4VKey~C{j?E zUVxMm8;LFLl*M}mxDrGG+T!g5tq8B*F%!S=GkgDH>O)2kgf9Et9n<-J}^Ze@r^7EJoj#C}+@?H_G_ z12TjYe}S$I+yDRoC3HntbYx+4WjbSWWnpw>05UK!IV~_TEigD#Ff%$bGdeUjEig4Y zFfe#;MEd{$03~!qSaf7zbY(hiZ)9m^c>ppnF*q$TF)cAOR4_F5ChRb3=&ZQVnzlQAc-CP|Noz1=FFK4_V)G+X=!N;_wV0l z;OFOO*uQ^2Lw$Wc!~6H|8RX^V8T$MC8P=~~4_1S0(p?C+1gCH5f|!@?USpgKp&8nt zG=mdZ9H=`JBo8vB7DBVl1=B3LU~vvxh`LgUzMVh{D1H+}0ci-hqyz!V$ZjEr4FLH9 BX7~UA literal 0 HcmV?d00001 diff --git a/doc/html/img/fb.png b/doc/html/img/fb.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c8b5df7206441a419a60e3c12d6e08aafdfdc9 GIT binary patch literal 495 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp&sB9;`;yp|1$5MqNXKb zx%2E}X4*#0aEzUq+q~)8&AULUuiw5MK7C=~hF!k`?pp!1u#^P(1v4;&zj=R^ISR;U zO!9VjVd!9$^#F3%OFVsD*&lK9GU%xWJyhuf3JD}9`jr8dtp(x`Anpc=F@%dhQ~^>Y zo-U3d8t0P}7BC4Iaket1yH03`(qK|)Wbv8E(&Wgr&LFNbGlRo};S}%tIhMvIBAyGf z)Mh!T?>ca1rm@uo)8p#7>Pt`Q|Ei6yC4$wjF^iowXh&{EgHP}jgB z#K73f$k@unOxM8F%D|u^-{m)ohTQy=%(P071`Az7LtR7T5TH5}Gb>|rh=wJn=Ys-7 v5@bVgep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4`EHHSw`njxgN@xNAM$MHa literal 0 HcmV?d00001 diff --git a/doc/html/img/gp.png b/doc/html/img/gp.png new file mode 100644 index 0000000000000000000000000000000000000000..7eced6ee02fc58163919cf6bef62c416188ac283 GIT binary patch literal 1257 zcmY*Z3rv$&6uzP;;v=B=Kpex(F-eAL%e&Ol(g*!pTA?ptJl4_&8bPWQ6deorpz5YP z#M&^l8XJR~FJvQHNfhZnb`arE z5Ej{z9NV*Z*XMV`o~bG4hxaqHv(EQpXpX>^mF^rHb=$`Wv^8i}de1)9hkJKnS{%$w z9RAJVnf_!>#KFn2W)j{)jX@YhYZ`OB?cr$aO(cb6<+G-GUyuFSY$g*rGt+E8h-_HH zTp^O0Y!z|33*=sx>+|rCO}fo0V57Mr_oSom(2tg+Xc$WR`1G-7(&2G9+!GVsJ7wlA z1pDKMUYB!r23uaQ(>dC5-As)^vjzRf4_U}jFgt1dMaPWC`?5%BCgVr0HcfS*Gaiq3 zdU~=G89Jv!xXBL0Vt?9Z!LEpz*u6tC+;kDm6?SIuJ`WDS915I5dUNW;V58QO6!jt| zqEpQI^!nBKqx%SxWKCnd)i(^Bu7)A9l}mHL=8yO9_8+b6EiauOc=JlN9sNFi+|=fp zu=i;y`cG=??I!2wh}&+T?(G@-<9gQ)3Bn?Eia2Nn&$^XvWhbFxF1n42ic?Kz(^t&R zhMLb4fGYP9QZsKi7SGG$q|m`p-!E8Lu(*iHEXHz2F<$~kX_W1lvq%kb8H;+CE)Lij zT5`Ey{ajtCikgqrUBy%gOa$f#=CnX`sxbbUOmcpSM4orwU#Gj^pJAg^oL-d*A_A0) znloyHDh^jJ(8-T9$!KEmqRl@JJfLr?fDRhsGXlXSaHaa}sh@wy0X(=tYU&;?2^HJ#6gG8uf)iIp24Esyn+`sj^ShD%yq z>&a_1p-&c;mY0`q^eq_6URYN}WRlv#vo9$d$F7iuR%=~KzqlKjncb|euI84m#CT#t zQ-Z^I%Xs_1zNZ^r-g`S3`R>iL(YId)tTkL-w|>RC)uDmGt2&-97u*ZJ7!e%uI7DBw zX)ye9U43I+gZ5mlsajt_#oN}3#3GJW zb+glo#6?ehrJ)rHS`2c|&aARKhAa&px0ZhUZ=d7WTR1D08V^jKZ#Gq}hYPNdp5HC^ zt_TYmEYkbi;pR`76dT#zbpYSk8CyTqozu*H~mJ< z$WY6rY6VfYM}Yw#;PA1LctRv0L5RZ!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qA0*8#MQmP=l}ozHw{Zq zWKX>4+jPUE49LD=R({8^;myq5->*IX^YI%{!Q0t;9wkiq^Wp2?uRni1d-wD1iw|p0 z-1BLFlsNV6oIQ6O>fg-Tebc!7u4n7ddoTZf`gY5#;?MgpuP1N&cJ}VSUw^)xzyIUL z(|cZR|9=13s>r1dw4Jpi$S)X3hrgMpn_LKFFeZ7syDEuA6CIcRqPy?kkPMS%M zj%y13YkMs)j&fZ6xUPh&)-{H9H)HvDz>c9SU+|zCGLg?pV`9KuFqKY&oO~Z<4)9~Z)Pp?8M}66 zTL#>|dQ`-t)9ZyHXYVA9zoG?gKc1;up7nd3XXd**U{Af~l-R7i>)tEN!!}oWKH0zZ z_vS>m(<{?YKb`h;&a%>5_be^y&o9gV^S2OC z7#SE^>KYj88d!uF7+V<`TbY>Y8kkxc7*yoD{6^7`o1c=IRteHzp=)TUYiJw-RA*vl zWo!=7u;lc7518U}fi7AzZCsRR5iow&>&t;uc GLK6T_Q669b literal 0 HcmV?d00001 diff --git a/doc/html/img/iio_logo.png b/doc/html/img/iio_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2b91f7bdf80fe1d59b817fd86f994e08085817 GIT binary patch literal 43064 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

DG)2MJ&uogdBh>Xe5SL3{9$1~ zU6r=%fN;#}yFtA?-1iF+EK#MZ?(Xc~gZj8oL~e|RdFxWpQI$t+(1OQpA@nZAiq-gMqE!uG;>9P=zo!rQrL#b#@}-aaQq!~SSL>7sjH z%hswm>2vc6D9%C-B@ds~5Kg;Pa?Zxc9?5e3L2U>EZY2q~EeW?$7Yq}eQ|W;`tzF~m zUnolSir3CajTk9RA5_)f`_(-S!gQI-o+8-?tA@mn z$ewuOUsw|Hrb|PT=fOW=lOrv1`#;`g0K*@fw=c@+O00ismp2AAB+QnS5a)j07wMgE zbXlHy#wg@BEh^wHu8!JLUH|0hxd!#Yn{fp!LB7w-PLDFogDTN~xx57xHE{q}`*eM51rMvgjtz)TFS z_7Om=l|J5yT6IDsY4}BXZg-H+eN_E05`wRAr!~i~$y$Bze#Tf(W&R>2nk3QiZREpI zMTLQIbkN)VzYWNiU+FJfM*H>RyBO*DLS?40%Hw26^c5Y{pd@{QVDvmnu%sd3oW2;I zW5nh&E>K;jHdULS(~$N(Q}nUL2S*alX7!g?{Y1J4J#tsiZgwi{EA6#HpAAHUyy-4V zr6qHbgJ~I^ zXTjrv;jp1Aw%u=dLXKP!zToR%1CVV5dgkzx68?|zlFO#kKg80#`KOW4U;0^@8QkM5 z;j$;CqPaykqj&wWE=>Pgj`T7m)QgXPa%Pw9N1;jh@vPUO@|fythe4* zK1$#WaR{!=Yc4}t+zN@=J2pqoMX>V_svTum>}8c#KG?Fe5o%gR=j%S$vdsi0tY*7y zDhWiE$&raVcJA3`741L5-^_J{N$S55JqoQ0VMcfHwW;4=vvHJ{JhRP>)YxPl4z zS{cE+nF1QTskdqSZS3rlB}ZwYHJ@X~BWpyhcVS_7d`HQM$TiT;DW#g=i*L;ewiI=ez z*uiHV__;YZQbO|e_$B?n4N`mOVNU4oAc=L0Vb|c2Bg4Lf7}?HnH$(RCv#so3)s6d4 zN{j+Xq2{vo{N5W%*#oKP?0hhW1P#)Fj`)&0qkTkA`f@?%A3Nw<$awdTtc@_C1Mw}U zSlC^Gs#e$@9vu==x1)_jNk62;2#1visM%5YP*VqGe6Pc&(E+BJzYK`Sx3N`|Eq)W$ zyO-NJ*^qqm5QTdZ!Av4{Pik1J=Gm-b(gpbT4ZPI7_dxB0z>Esg+su*RJHl*{%9EB|x=Q7Z-aN#G*d5=hvji$ZMu z_+#~|KEf8!0omz?1-MDl%bTxG3gWfbOt%-1@L7LYJ6D0P&6}mG(Vh|}^9ul2Qk`CB z2S%tn90DK3P9;=cGTA+7Z8u=KaffTp+@Yd=sfx1%A@#r*{b#bYL~Rj&t!YdpYa0u33iC=bCu7N!D+tVmchL>4(HFDz+eAwO zZs0bc#SZ5wVk>o#(j@J{6?(%mCNUCvX5+2RNKYu$jwb{n)v#Yb8v8Gam7=A~>8w-w zAl!JBVlmy~x$6&2>;+>7@pBq{(*xN)r3vs_Hc)zshj+s}H|6GzNu`VVfT+lai2Zw;=e`V(*bFHb)*8eHlRs(CLd7R2%kh!$3YRg4AjIuEU3Ho|dm zS+h zT?ay5a(G7GcO@K(hp zrt;rzo;?XU7z)z>pVvD5*w2NUIECVGhkEGV3Gp~307?y|rmUu^tgdOVuAz(4(bd#B zmAYzbnzZD_|1ty+@IIcA|8G!NMycDYYwDsjbv4n-YFeiTq)?9JsR3}=#2QkY7 literal 0 HcmV?d00001 diff --git a/doc/html/img/li.png b/doc/html/img/li.png new file mode 100644 index 0000000000000000000000000000000000000000..fd12daf40f3c4f7a8349b3078da088c4d30faf21 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10!Ysfi#P$FG{|vKs2Ta+b z-oBNkW-CMWR<_!$_Onma9lDot_y$n+(Bt=4-@T7tc~^AK?#UM)uDJ2y>6f2U8r%gy z6Ie=u{DK)6!r#2V${YpcGbVYvyD)UH%6b4f>?NMQuI!Jvc^ULngC45%0fhvT6aC77 z%GLsL2oQGx#T;Z-cd`KKK2I0N5R21SFCXMP*b6jLjh$mYkjs3MxsE4Z-|EExUB#H literal 0 HcmV?d00001 diff --git a/doc/html/img/mangOH_logo.png b/doc/html/img/mangOH_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7162378cec717b24427e7de617c12372ff321470 GIT binary patch literal 6714 zcmV-A8pY*_P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 E2h4PKy#N3J literal 0 HcmV?d00001 diff --git a/doc/html/img/osc128.png b/doc/html/img/osc128.png new file mode 100644 index 0000000000000000000000000000000000000000..cc85232ddd615d494f86aa75a68471ba8744175b GIT binary patch literal 2622 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 NMC2zCR4-Iy{0j=hb6)@e literal 0 HcmV?d00001 diff --git a/doc/html/img/sdrangel.png b/doc/html/img/sdrangel.png new file mode 100644 index 0000000000000000000000000000000000000000..d29e063fdbf53cf1261b4a49e5ad7f35bbf14421 GIT binary patch literal 6669 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 VKY?c-ne#vZs48hGewMe2{2%kni5vg` literal 0 HcmV?d00001 diff --git a/doc/html/img/ss.png b/doc/html/img/ss.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7df963e9ee9291a48e3db2dc05231d463dbddc GIT binary patch literal 1794 zcmV+d2mSboP)pF8FWQhbW?9;ba!ELWdK2BZ(?O2No`?g zWm08fWO;GPWjp`?27gIJK~z{r?N@tHR8<)N@{x@xAWn+=xC<%DpyuRQrs0&OI6cPE zUSm09InzwzRAbtdro=-x)@2{Cur3b~!c|~Po)M2$c7=VgD3~Z>2>77FC#(Ux(BeH` z=PoxJ9V%PtKYuf4?(TQ?{C>ahyXSmo79LZ6vo&9%05zK-Gb z*7fGv+EHA6TF3Ddc(m5Kg_jx` zH5U6Ji>j@V8Wno&TMy5h?o!EiTIYl zpv2a&i7CGX@{!xPZv&p}xl2jas#5mI>ho;j;%0WAK-Q}a~m+47aGXnYY-KOZrBHhqR5yI-uqD0nD9?|ySmxoc2# z*ol7oFX6b%%LwURgOJ+!4o`7^1~6~&HY|GF^e{ghC3?ob$B%DXQ4|i#G5Jx zZzPDR5eX8-^h-^$XXZh+yI@R47Zs<%oPqe`2ubbK$QctTJ0IaVyap^*;|YgN<0ZWt zMB_J^r1`&WHIWv2a-1ZX*PrD!t@aAQ!v;kXAo5(I4BkBF&f5$w)=fZ zqXsk`RJ4f`rq%cfLE8KwPXV|V##kodD1?ajX|1@?RL>d@Ga%R-C6|Z7*X+oX3 z^w1rxm}teTS&hWuk}*9u)hQ?JI@u0!C%3^` z!|hENW3W%zQrKXeUp9b{*<*q|4SxL8Ul_`eM3NjqJLb+pHh)n$`8HzxU|vLM=O+TM zTk;W1c5R=!uxoQ*n0LY5*m_I^U!GnBo7^Jqt0>wuAvCWmOk}vWaoVA))#DD(eUfqg z4CsE1@cw=zcy!D{k}a&nf>6Z63y>I|>L4Z0m9fPy>?Pl?j3VWcpOVVR9c;xa1u2^Q z8Z5)HP)uGAExoB`O8TS5mXNKnIqIl4@{GEv1+I#qgI6vEeA9>H^V|sgt`>p1Eu5G7 zdk~di%B@Vn=WLdw4fQkWkqbjKEJQ4P2C;YRFAJBgRLHw09mbw_5=p4DJyV$Vk|0j+woSm1WzR|K%v}$puXUOl#V#i{4C@t|2u9S zT>KU(TJG`ag3-+hYsB8+N)ls#qQt|d3S30{FpJu8h}sEQmoN_(Neu|9PK3l(7bLW- zvwXEJYyZG`#V5!fr_4|f^Ea% zvPJ}DEB$;{#Z&nP%wL?1xlefCyNimuX!(29V*EXc8c6a#{c)mvBc%U!9`@4Cr#dw( z&b8#PXg8FfrAE%Ec`DyP@)xNvcRn>Bq6Qf3Ph#+0QvLpax_C&07?T_o#sm(9qWF zEj`VC_c4SxY9O}313T*1@KnB`U&~Bq56o%6>=5i#iLgf@#%nS$I^(H1iYEY#2T9KSAXFliYhm&-P0tk=J9yGx+c@cAsG&p?MW8 k`x1yYkLrJl{}BLx0ONI*{Nr4c1poj507*qoM6N<$g6rK~&Hw-a literal 0 HcmV?d00001 diff --git a/doc/html/img/style.css b/doc/html/img/style.css new file mode 100644 index 000000000..7696a31c6 --- /dev/null +++ b/doc/html/img/style.css @@ -0,0 +1,191 @@ +body{ + font-family: "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3em; + color: #636363; + padding: 0 20px 0; + max-width: 1024px; + margin: auto; +} +hr{ + color: #ccc; + margin: 0px 0 20px; +} +h1, h3{ + font-family: "Arial Regular", sans-serif; + font-weight: bold; + margin-bottom:0; +} +h1{ + font-size: 32px; + color: #1e4056; + margin-bottom: 40px; +} +h3{ + font-size: 24px; +} +header{ + margin-bottom: 20px; +} +header img{ + margin-top: 10px; + margin-bottom: 0px; + height: 75px; + vertical-align: middle +} +nav{ + margin-bottom: 20px; +} +ul{ + margin-top: 0px; + padding-left: 20px; +} +table{ + width: 100%; +} +th{ + background-color: #33b3ca; + color: #fff; + font-weight: normal; + padding: 10px; + text-align: left; +} +td{ + background-color: #f5f5f5; + font-size: 14px; + padding: 5px 10px; +} +th:first-of-type, +td:first-of-type{ + width: 25%; + font-weight: bold; +} +#versiontest{ + color: #27B34F; +} +a{ + color: #33b3ca; + text-decoration: none; +} +.button{ + background-color: #33b3ca; + border-radius: 15px; + color: #ffffff; + margin: 15px 10px 15px 10px; + padding: 5px 15px; + cursor: pointer; +} +.buttons{ + text-align: justify; + display: inline-block; + width: 100%; + top: 1.25em; + margin-bottom: 0em; +} +.buttons:after { + content: ''; + display: inline-block; + margin-bottom: 0; + width: 100%; +} +.buttons:before { + content: ''; + display: block; +} +.foo{ + display: inline-block; + font: 1em/1.5 sans-serif; + margin-right: -.25em; + position: relative; + top: 1.25em; +} +.dropdown { + position: relative; + text-align: left; + display: inline-block; +} +.dropdown-content { + display: none; + position: absolute; + background-color: #f9f9f9; + min-width: 200px; + border-radius: 15px; + box-shadow: 0px 8px 24px 0px rgba(0,0,0,0.2); + padding: 10px 10px; + z-index: 1; +} +.dropdown:hover .dropdown-content { + display: block; +} +.download{ + background-image: url("download.png"); + padding: 1em 1em .5em 70px; + margin-bottom: 1.5em; + min-height: 68px; + background-position: 10px 50%; + background-repeat: no-repeat; + color: #000; + overflow: hidden; + box-sizing: border-box; + background-color: #d6efc2; + border-radius: 1.4em; +} +.quicklinks{ + float: right; + -webkit-column-count: 2; /* Chrome, Safari, Opera */ + -moz-column-count: 2; /* Firefox */ + column-count: 2; + -webkit-column-gap: 20px; /* Chrome, Safari, Opera */ + -moz-column-gap: 20px; /* Firefox */ + column-gap: 20px; + -webkit-column-rule: 1px solid lightblue; /* Chrome, Safari, Opera */ + -moz-column-rule: 1px solid lightblue; /* Firefox */ + column-rule: 1px solid lightblue; + list-style: none; + list-style-type: none; + list-style-image: none; + list-style-position: outside; + font-size: 12px; + line-height: 18px; + font-family: Helvetica,Arial,sans-serif; + margin-top: 2em; + margin-bottom: 0em; +} +.colLeft, .colRight{ + float: left; +} +.colLeft{ + width: 60%; +} +.colRight{ + width: 40%; + text-align: center; +} +.anchor{ + float: right; +} +.boxed { + box-sizing: border-box; + padding: 10px; + border: 1px solid; + border-color: #636363; + border-radius: 5px; +} +pre { + display: inline; + margin: 0; +} +.xterm { + color:#333; + display:block; + font-family:Monaco,Menlo,Consolas,"Courier New",monospace; + padding:9.5px; + margin:0 0 10px; + font-size:13px; + word-break:break-all; + word-wrap:break-word; + background-color:#f5f5f5; + border:1px solid #ccc; + border-radius:4px; +} diff --git a/doc/html/img/sw.png b/doc/html/img/sw.png new file mode 100644 index 0000000000000000000000000000000000000000..50aa946f0300c05724ecfa9b97cf29b6342f02d0 GIT binary patch literal 785 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10Vsd~_i0gkicysgr=CuF& z8~#5#^Z(4u|1*vM|NQj-=H|a2K7H<<_R`q>nV9bT+?xOQ_y7O&?B~(b|K~gWKi2bq zP2|rV8~^VtexYjhCLrniw!QzC`Tn|m<6}+dw-p=yJbL>6{rmm<_ct^&yo=9&?G!S9 z{(J!e0gyu#6waSN@8IAN5D;KsV33fIuzvmef`WoCGZ*JMsIvf7FqH)P1vAVSQ+9p} zIh^@!ZpA>c4j_9M!-Ofhe}N445>H=O_6Izi0xEK)D|2K(>dFcn z(}C*N0&xh#Nh7ycK!%*Bi(`nz>7$b~gPR?A+HP-XJy66U=dd(@ukl*k|Nqx#KDgA> zac+h2zWJL@ZuT^r9INxs$$Q4dAV!1L^O=RFgjXPor;lr{%UkIZr2fOHTH({_*#cUqinA zx%$_<6%kS%%by0A0fSGq#5JNMC9x#cD!C{XNHG{07@FxC8tEEYh8P%FnOIsG80s3B zS{WEfD?Bqo(U6;;l9^Ts*I-~7VrXV%3`7PH4aLcub^|p?f@}!RPb(=;EJ|f?Ovz75 eRq)JBOiv9;O-!jQJedkgrwpF1elF{r5}E+IOhGOH literal 0 HcmV?d00001 diff --git a/doc/html/img/tw.png b/doc/html/img/tw.png new file mode 100644 index 0000000000000000000000000000000000000000..afab2a9892a698e6a916e00d36fb740f6e1baa96 GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10;%9(Qh^u>n&;S4bWfy)z zMw-h$hwuD)_SK(1|Nejd{cq#_-{xyR`)vKHxaiaE4}a~~e@Wc??e9OJzW=Yk|9kS~ z?}JZ&)s}v?UH9efkAJ>fzbY*H^z_TW&G&y#zVy?2-Irf~|974Hp}gdi*OsrRUjC6^ z^y%5xe=ooN>plO&al;q6g`WzJeE;zC-`$UYfBgCHvH8oHSAQOT{`>jYznzbMcbxlC zck;)y%Rhhr`)|DJbIX|@SKj_zedkxewy)p+{I^{DC2jw=%H!WvmwZ}v=hwXJKlN68 z&N}$*^h=<_|4+F1^YQ1uSKs{&-SJgr$)~)--#6X=ef{0v#W#ON?D~4>_>XvCAh4AL z`2{mD80`G@?OlJ$MxY2|lDE4H<9{aIdq56*iKnkC`y*~%20hiFhbnzQA%WyXzcQe* zwLlyK#9cr!g+R#{F+etxr;B5V#p$(^)58xLh_r3gozA57+DLS%g7c{f4;frjR_FZt z-@nm;%lA@{{fC+pCwIOtE;7oK;mg+B_U5?oA9n#4P79U53#H%l;a~ z>nL-Dg}?6Qnv-z5Xq#{L?Qh%UpYzmzHmSd5rIztNK4NFeX_W){;1lbUrpH@!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10Vtas3h^u>n&;S4bwY2mX ztX%i%)vHI39-TgY`rd;_*KXcDclO-Dg9k5NzLJxi`seT8|Ns8~`uX$s<161T9RB+4 z+m9pDUvAy{{N4Na?>}69_x^EV;S*ie*RNk+N>un(DR?J1;I4+!t9mo1?Pux^-P`u) zjpCLkLAx)mxbfogljl#myYIyYKVCThrHO0G;Tw+&^e10@c-g`9s+aw|dGmJf-p#CR zos^VRP*~{d?wOjJ%4Ohw`1FOw#>PpLCaqbs2Iyec{(XCZUf?YW@(X5QU=G`I?dIQq z|1SRZTJd1*8K4AXlDE4H<9{aIdq56*iKnkC`y*~%20hiFhbnzQA%WyXzcQe*wLlyK z#9ctKZ+0u^?*+0`JY5_^EKaYz%p2TfAaS7Zv#Qy0Rqx!xQ4bpuU5p+oo_zm*?=7Di z&po?V|1UJp`+d;x-LqwYP28+;4m(ZRWka*47uK<5omB-{$^W$LprI zRJpw5`6a`pB}NM;zqDQYy@X$)e6M7E#S@>3%gfX2^_VR=pKf8hJ~1Hq+|=VN-(%!h zj5wC2uX`<3QFvxYz`RErw^w*B`Qj{jw%=ikK#blN4!sI*_|;bq8P!N9@zm@DF;v4dGc3*$54 zRsF^Zc9qOOrMgaS;_})(ce447Sj8pg9E;jUWZ8c~vxSdwa$T$Bo=7>o=I zEp-hHbqy>+42-RejIB(}bPY_c3=AsrU4Elz$jwj5OsfQGu+TL$)HO5?0je`Gvobb^ zXjpQ3z6Vf)B*=!~{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq|>?7-mZ>gTe~DWM4f DOzVR& literal 0 HcmV?d00001 diff --git a/doc/html/img/yt.png b/doc/html/img/yt.png new file mode 100644 index 0000000000000000000000000000000000000000..566a3bba680dea3eba037ba9cc07a289c31e8506 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10A~wJ$#MQmP=l}oz|8iMY zN;{s*Ou6ahvenFTYjo^m1C1xTs*jAc?rJDq^|HSg8~k|T{IB1>y?_7Vabe+;?(UOv za`zrQx)U7m_{sB^Ten_zFx@RC`TF(iZNlQ)#H6-K$^wl&#}FS0w1}f5$S)X3Glai+ z6Yj=nauUd7O!9VjVf@dedk@HAFY)wsWq-uY%b=$k^iZV_C?t@a=vM|*wibv(fVc}N zHfQoV@!vrDhNp{Th{fr(lV1xpDG0dfIv(IwSkgBAd;M7zGgqe7Gx^T#IxJ^*Ts|do zR`=1X!utf)aRh&3JNkl)Nh@-SP-8gw882%(Ho=kl5PIY$GD2 z_{3~$tTe}|cU}?OH2g1UpPKvFoI~K$yDFyg=hkbhu77lph$;GBbX0)rljrjHcS;v7 zxKqZQuNfM1!;-^owwXv&ZjXA#U2n@>7c*wZv2!j9Zf1|KPxm)4REs{x^10i2OC z7#SE^>KYj88d!uF7+V<`TbY>Y8kkxc7*yoDfC2@fAvZrIGp!P&!9v&2P}k5n1gOr$ z%*xmtqG8GD`5r(Gk{}y`^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0tk(g=g6tDnm{ Hr-UW|YB1_W literal 0 HcmV?d00001 diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 000000000..179da299c --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,616 @@ + + + + + + + + the libIIO documentation + + + + + + + + + +

+ +
+
+

Welcome to the libIIO

+

Thanks for your interest in the libIIO, a + C/C++ library that provides generic access to Industrial Input Output (IIO) + devices. IIO started as a Linux + kernel subsystem to support for devices that that included + analog-to-digital convertors (ADCs) and/or digital-to-analog convertors + (DACs). While the libIIO continues to provide an easy interface to the + Linux kernel IIO subsystem, it has also expanded beyond that, and is now + just as common to see this used inside an embedded system or hypervisor as + it is on a host PC.

+

It is portable: Using a single cross-platform + API, it provides access to IIO devices on Linux, macOS, Windows, etc across + local and remote (USB, Network, Serial) devices. The library is composed by + one high-level API, and several backends:

+
    +
  • the local backend, which interfaces the Linux kernel + through the sysfs virtual filesystem,
  • +
  • the remote backend, which communicates to an + iiod server through a network, usb or serial (wired, USB + CDC, or + Bluetooth SPP) link. The iiod server can run on a: +
      +
    • Linux host (an IIO + daemon is included part of libIIO), this would typically + communicate to a libIIO client over the network or USB; or +
    • +
    • a deeply embedded, resource constrained system (like Arduino) + managed separately as tiny-iiod; this + would typically communicate to a libIIO client over the network, or + serial. +
    • +
    +
  • +
+

It is entirely user-mode: No special privilege or elevation is required + for the application to communicate with a device. One of the most powerful + things about libiio is its Remote Procedure + Call style interface. Moving backends from USB to Networking to local + embedded does not require any code changes. The users of the libIIO do not + need to code any differently for the remote interaction, making it easy to + move from remote (debug on PC over Ethernet) to local (deployed on embedded + Linux).

+

What platforms are supported?

+

Any host running Linux, macOS, Windows, or OpenBSD/NetBSD, should be + trivial to get libIIO running on. If you are interested in porting to other + hosts that support either networking (socket interface), libusb or serial, it should be very + straightforward. Pull Requests are + always reviewed, and well written ones are normally accepted.

+

The local backend and Linux daemon can run on any embedded Linux based + system, from purpose built systems like PlutoSDR or ADALM2000 to Raspberry Pi or BeagleBoard to Jetson. + tiny-iiod + requires a modern C compiler and is known to work on a variety of non-Linux + frameworks including Mbed and FreeRTOS.

+

Sounds good! How do I get started?

+

If you are using Linux, chances are your distribution already includes + libIIO, so you probably just need to reference the iio.h + header in your source.

+

For other platforms, you are encouraged to use one of our release + builds. If if you want to use the very latest, you have the option to + use a nightly build or build from source. Please check the Downloads + menu.

+

If you prefer, you can also access the source directly from github.

+

Once you have secured your access to the library and its header, please + check the libIIO API or the libIIO examples.

+

Where is (insert my favourite language) support?

+

The mainline library is built in C, can be used in C++, and has built in + bindings for Python and C# (C-Sharp). Node.js and Rust are maintained + outside the main repo. If you are interested in creating more language + bindings, please reach out to the + developers by posting an issue on github.

+
+
+

Help and Support

+

If you have any questions regarding the libIIO or are experiencing any + problems following the documentation, or examples, feel free to ask us a + question. Generic libIIO questions can be asked on Github Issue + tracker. Since libIIO provides connectivity to the kernel's IIO + framework - many times the problem is actually in the driver. In this case, + contact your favourite kernel developer. If you are using an Analog Devices' component, feel free + to ask on their Linux support + forums.

+
+
+
+ Back to top +

Frameworks

+

Use the libIIO with your favourite open source or commercial signal + processing framework, visualization tool or application.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Frameworks or Applications which use libIIOOSDescription
+ + IIO Command Line Tools + Windows, Linux, macOS + + iio_info, + iio_attr, + iio_readdev, + iio_writedev, + iio_reg for interacting with IIO devices from your favorite + shell. These are included in the default builds, but many + distributions package them into a separate libiio-utils package. + When you want to try a simple example, check these out. +
+ Peyote logo + Windows, Linux, macOS + Pyadi-iio + (pronounced peyote) is a python abstraction module for ADI hardware + with IIO drivers to make them easier to use. The libIIO interface, + although extremely flexible, can be cumbersome to use due to the + amount of boilerplate code required. This Python module has custom + interfaces classes for specific parts and development systems which + can generally make them easier to understand and use. +
+ + Chromium OS Logo + Chrome OS + the + libmems provides a set of wrapper and test helpers around + libIIO. + It is meant to provide a common foundation for Chrome OS to access + and interface IIO sensors +
+ MathWorks logo + + Windows, + Linux, macOS + + Use libIIO to Connect MATLAB® and Simulink® to + PlutoSDR, ADRV9361-Z7035 + RF SoM, or AD9361 based evaluation boards, and other + RF + platforms, high + speed converters, and sensors + to prototype, verify, and test practical systems. Request a + + zero-cost trial and then explore and experiment with a variety + of + signal processing and radio examples. +
+ GNU Radio logo + Linux, macOS + GNU Radio is a Free and Open-Source Toolkit for Software Radio, + primarily supported on Linux operating systems. It has both + + generic IIO blocks, and blocks for specific IIO devices like + the PlutoSDR +
+ + + IIO + Oscilloscope + Windows, LinuxThe IIO Oscilloscope is an application, which demonstrates how to + interface various IIO devices to different visualization methods on + Linux and Windows
+ SDRAngel logo + Windows, Linux + SDRangel is + an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend + to various hardware. Check the discussion group and wiki. While SDRangel + seeks to be approachable, it is targeted towards the experienced + SDR user with some digital signal processing understanding. It + supports libIIO for the PlutoSDR, and can be extended to support + many other IIO devices. +
+ + Scopy + Windows, Linux, macOS + Scopy is a multi-functional software toolset that supports + traditional instrument interfaces with Oscilloscope, Spectrum + Analyzer, Network Analyzer, Signal Generator, Logic Analyzer, + Pattern Generator, Digital IO, Voltmeter, Power Supply interfaces + for the ADALM2000. It + is built in Qt5 in C++, and is available under a open source + license on github. +
+ + + + The Legato Application Framework started out as an initiative by + Sierra Wireless Inc. to provide an open, secure and easy to use + Application Framework to grow the "Internet of + Everything". Legato uses libIIO + to interface with real world sensors. +
+ + + + From idea to prototype to product, mangOH® is industrial-grade open + source hardware designed to address common IoT pain points and + deliver 90% of your prototype out-of-the-box so you can focus your + time and resources building the next killer IoT application and + bringing your products to market sooner. mangOH uses libIIO to interface with + real world sensors. +
Reference on this page to any specific open source, or + commercial product, project, process, or service, or the use of any trade, + firm or corporation name is for the information and convenience of the + public, and does not constitute endorsement, recommendation, or favoring by + any libIIO developer. If you want to add your project to this doc, please + send a pull + request +
+
+
+ +

Contributors

+
+

+ The libIIO would not exist without the generous + support of Analog Devices (Nasdaq: + ADI), a leading global + high-performance analog technology company dedicated to solving the + toughest engineering challenges. While many of the developers + are full time ADI employees, libIIO is released and distributed as an + open source (LGPL and GPL) library for all to use (under the terms and + obligations of the License).

+
+
+

Follow Analog Devices on your favourite social media site:

+
+
+

+ + + + Google+ Logo + + + + + + SlideShare Logo

+
+
+
+
+

© 2020 ANALOG DEVICES, INC.

+
+ + From 8daedcee55902a5c2ffc389b2a610265ead8691a Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Sat, 11 Apr 2020 01:09:22 -0400 Subject: [PATCH 05/11] cmake: Add top level html index file to build system and put it, and the css and images needed into the correct output directories. Signed-off-by: Robin Getz --- CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 53658d95f..413177b49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -396,7 +396,10 @@ if(WITH_DOC) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/CI/travis/generateDocumentationAndDeploy.sh.in ${CMAKE_CURRENT_BINARY_DIR}/generateDocumentationAndDeploy.sh @ONLY) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doc DESTINATION ${CMAKE_HTML_DEST_DIR}/${CMAKE_API_DEST_DIR}) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doc + DESTINATION ${CMAKE_HTML_DEST_DIR}/${CMAKE_API_DEST_DIR} + FILES_MATCHING PATTERN "*.svg") + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doc/html/ DESTINATION ${CMAKE_HTML_DEST_DIR}) add_custom_command(TARGET iio POST_BUILD COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile From 9960759f746c6fcd9f21f54b87359995091bae22 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Wed, 15 Apr 2020 13:36:16 -0400 Subject: [PATCH 06/11] gitignore: add conf.py to gitignore The cmake leaves this file in the directory when building doc, so ignore it. Signed-off-by: Robin Getz --- bindings/python/doc/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 bindings/python/doc/.gitignore diff --git a/bindings/python/doc/.gitignore b/bindings/python/doc/.gitignore new file mode 100644 index 000000000..e508cfeb9 --- /dev/null +++ b/bindings/python/doc/.gitignore @@ -0,0 +1,2 @@ +# Cmake leaves a file in the source dir, so ignore it +conf.py From f99017d1fdaadeb387f82644dca39acafdbfd2f5 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Wed, 15 Apr 2020 14:03:24 -0400 Subject: [PATCH 07/11] sphinx: set up the examples so they show up in the generated doc This tweaks the conf.py.in config so that examples shows up in the examples section of the doc. Note: These are examples, not tools, as tools are deployed, and examples are not. Since they are not deployed, just call them examples. Also include iio_info to the list. Signed-off-by: Robin Getz --- bindings/python/doc/conf.py.in | 1 + bindings/python/doc/examples.rst | 12 ++++++++++++ bindings/python/doc/iio_info.rst | 8 ++++++++ bindings/python/doc/iio_readdev.rst | 2 +- bindings/python/doc/iio_writedev.rst | 2 +- bindings/python/doc/index.rst | 3 +-- bindings/python/doc/tools.rst | 8 -------- 7 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 bindings/python/doc/iio_info.rst delete mode 100644 bindings/python/doc/tools.rst diff --git a/bindings/python/doc/conf.py.in b/bindings/python/doc/conf.py.in index da18eff02..33160cb4e 100644 --- a/bindings/python/doc/conf.py.in +++ b/bindings/python/doc/conf.py.in @@ -13,6 +13,7 @@ import os import sys sys.path.insert(0, os.path.abspath('../.')) +sys.path.insert(0, os.path.abspath('../examples')) import sphinx_rtd_theme diff --git a/bindings/python/doc/examples.rst b/bindings/python/doc/examples.rst index c7ad8f3fe..74f9a0453 100644 --- a/bindings/python/doc/examples.rst +++ b/bindings/python/doc/examples.rst @@ -1,6 +1,18 @@ Examples ================== + +Complete Application Examples +------------------------------ +.. toctree:: + iio_readdev + iio_writedev + iio_info + + +Code Snippets +----------------------------- + Scan contexts and list channels of each device .. code-block:: python diff --git a/bindings/python/doc/iio_info.rst b/bindings/python/doc/iio_info.rst new file mode 100644 index 000000000..025a4e0c7 --- /dev/null +++ b/bindings/python/doc/iio_info.rst @@ -0,0 +1,8 @@ +iio_info +===================== +| iio_info is part of the Libiio package, a library that has been developed to ease the development of software interfacing Linux Industrial I/O (IIO) devices. +| This tool is written using the libiio Python bindings. It works in the same way as the base iio_info works. You can find more informations about it on this `page `_. + +.. automodule:: iio_info + :members: + :undoc-members: diff --git a/bindings/python/doc/iio_readdev.rst b/bindings/python/doc/iio_readdev.rst index d6eda73ad..013618b83 100644 --- a/bindings/python/doc/iio_readdev.rst +++ b/bindings/python/doc/iio_readdev.rst @@ -3,5 +3,5 @@ iio_readdev | iio_readdev is part of the Libiio package, a library that has been developed to ease the development of software interfacing Linux Industrial I/O (IIO) devices. | This tool is written using the libiio Python bindings. It works in the same way as the base iio_readdev works. You can find more informations about it on this `page `_. -.. automodule:: examples.iio_readdev +.. automodule:: iio_readdev :members: diff --git a/bindings/python/doc/iio_writedev.rst b/bindings/python/doc/iio_writedev.rst index 73935287f..4f069e0d7 100644 --- a/bindings/python/doc/iio_writedev.rst +++ b/bindings/python/doc/iio_writedev.rst @@ -3,5 +3,5 @@ iio_writedev | iio_writedev is part of the Libiio package, a library that has been developed to ease the development of software interfacing Linux Industrial I/O (IIO) devices. | This tool is written using the libiio Python bindings. It works in the same way as the base iio_writedev works. You can find more informations about it on this `page `_. -.. automodule:: examples.iio_writedev +.. automodule:: iio_writedev :members: diff --git a/bindings/python/doc/index.rst b/bindings/python/doc/index.rst index 0e45e8bb9..107f8e88b 100644 --- a/bindings/python/doc/index.rst +++ b/bindings/python/doc/index.rst @@ -1,7 +1,7 @@ libiio Python Bindings ================================== -Python bindings for the Industrial I/O interface library. +Python bindings for the `Industrial I/O <../index.html>`_ interface library. Installation ================== @@ -43,7 +43,6 @@ Components channel trigger examples - tools Indices and tables ================== diff --git a/bindings/python/doc/tools.rst b/bindings/python/doc/tools.rst deleted file mode 100644 index e2504d220..000000000 --- a/bindings/python/doc/tools.rst +++ /dev/null @@ -1,8 +0,0 @@ -Tools -====================== - -Components ----------------------- -.. toctree:: - iio_readdev - iio_writedev From bb2020a6b8fb270c3c031c2ea982f7134b519469 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Thu, 16 Apr 2020 14:24:04 -0400 Subject: [PATCH 08/11] Doxyfile.in: capture warnings when creating libiio api doc And eventually check it on CI to make sure we are documenting everything. Signed-off-by: Robin Getz --- Doxyfile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doxyfile.in b/Doxyfile.in index fcea71978..f053f8b5e 100644 --- a/Doxyfile.in +++ b/Doxyfile.in @@ -616,7 +616,7 @@ WARN_FORMAT = "$file:$line: $text" # messages should be written. If left blank the output is written to standard # error (stderr). -WARN_LOGFILE = +WARN_LOGFILE = @CMAKE_BINARY_DIR@/Dox_output_@PROJECT_NAME@ #--------------------------------------------------------------------------- # Configuration options related to the input files From 5fb5d4aebcad7d3513e23bda60245ff8ab6200e8 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Thu, 16 Apr 2020 14:27:24 -0400 Subject: [PATCH 09/11] main libiio api doc: Add "back" url at the top of the mainpage Signed-off-by: Robin Getz --- mainpage.dox | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mainpage.dox b/mainpage.dox index 4ea3913c6..cb33802a4 100644 --- a/mainpage.dox +++ b/mainpage.dox @@ -3,6 +3,8 @@ @tableofcontents +Back to libIIO + @section license License Libiio has been developed and is released under the terms of the GNU Lesser General Public License, version 2 or (at your option) any later version. From 9a14cc557bb74faf0efe77610a1a8d97feb73da7 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Thu, 16 Apr 2020 14:28:18 -0400 Subject: [PATCH 10/11] C#: Document missing c# class/methods Signed-off-by: Robin Getz --- bindings/csharp/Context.cs | 1 + bindings/csharp/IOBuffer.cs | 1 + bindings/csharp/Trigger.cs | 2 ++ 3 files changed, 4 insertions(+) diff --git a/bindings/csharp/Context.cs b/bindings/csharp/Context.cs index e5c478fcf..38bef5b94 100644 --- a/bindings/csharp/Context.cs +++ b/bindings/csharp/Context.cs @@ -100,6 +100,7 @@ private static extern IntPtr iio_create_context_from_uri( /// Retrieve a human-readable information string about the current context. public readonly string description; + /// Retrieve a information about the version context. public readonly Version library_version, backend_version; /// A List of all the IIO devices present on the current context. diff --git a/bindings/csharp/IOBuffer.cs b/bindings/csharp/IOBuffer.cs index c003fd6c6..85c788c50 100644 --- a/bindings/csharp/IOBuffer.cs +++ b/bindings/csharp/IOBuffer.cs @@ -103,6 +103,7 @@ public void push(uint samples_count) circular_buffer_pushed = true; } + /// Submit all the samples contained in this buffer to the hardware. public void push() { push(this.samples_count); diff --git a/bindings/csharp/Trigger.cs b/bindings/csharp/Trigger.cs index 4614143bc..80fe2e787 100644 --- a/bindings/csharp/Trigger.cs +++ b/bindings/csharp/Trigger.cs @@ -54,11 +54,13 @@ public ulong get_rate() throw new Exception("Trigger has no frequency?"); } + /// Set Trigger. public new void set_trigger(Trigger trig) { throw new InvalidComObjectException("Device is already a trigger"); } + /// Get trigger. public new Trigger get_trigger() { throw new InvalidComObjectException("Device is already a trigger"); From 1bf5d6ab01007572a0743fbb1aadcb4fabc3f9cb Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Thu, 16 Apr 2020 14:29:27 -0400 Subject: [PATCH 11/11] C#: Add autogenerated Doxygen for C# bindings Signed-off-by: Robin Getz --- CMakeLists.txt | 7 + bindings/csharp/Doxyfile.in | 1853 ++++++++++++++++++++++++++++++++++ bindings/csharp/mainpage.dox | 82 ++ 3 files changed, 1942 insertions(+) create mode 100644 bindings/csharp/Doxyfile.in create mode 100644 bindings/csharp/mainpage.dox diff --git a/CMakeLists.txt b/CMakeLists.txt index 413177b49..3b44a415b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -393,6 +393,9 @@ if(WITH_DOC) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/bindings/csharp/Doxyfile.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_csharp @ONLY) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/CI/travis/generateDocumentationAndDeploy.sh.in ${CMAKE_CURRENT_BINARY_DIR}/generateDocumentationAndDeploy.sh @ONLY) @@ -405,6 +408,10 @@ if(WITH_DOC) COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM) + add_custom_command(TARGET iio POST_BUILD + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_csharp + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating C# documentation with Doxygen" VERBATIM) if(NOT SKIP_INSTALL_ALL) install(DIRECTORY ${HTML_DEST_DIR} diff --git a/bindings/csharp/Doxyfile.in b/bindings/csharp/Doxyfile.in new file mode 100644 index 000000000..07585db2d --- /dev/null +++ b/bindings/csharp/Doxyfile.in @@ -0,0 +1,1853 @@ +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "C# bindings for libiio" +PROJECT_NUMBER = @LIBIIO_VERSION_MAJOR@.@LIBIIO_VERSION_MINOR@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "C# bindings for libIIO" + +# With the PROJECT_LOGO tag one can specify an logo or icon that is included in +# the documentation. The maximum height of the logo should not exceed 55 pixels +# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo +# to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = @CMAKE_HTML_DEST_DIR@ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a +# new page for each member. If set to NO, the documentation of a member will be +# part of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. +# +# Note For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO these classes will be included in the various overviews. This option has +# no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = @CMAKE_CASE_SENSITIVE_FILESYSTEM@ + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the +# todo list. This list is created by putting \todo commands in the +# documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the +# test list. This list is created by putting \test commands in the +# documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES the list +# will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. Do not use file names with spaces, bibtex cannot handle them. See +# also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO doxygen will only warn about wrong or incomplete parameter +# documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = @CMAKE_BINARY_DIR@/Dox_output_csharp + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = @CMAKE_SOURCE_DIR@/bindings/csharp/ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = *.cs *.dox + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/bindings/csharp/examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER ) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES, then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = csharp + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- +# defined cascading style sheet that is included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefor more robust against future updates. +# Doxygen will copy the style sheet file to the output directory. For an example +# see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the stylesheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler ( hhc.exe). If non-empty +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated ( +# YES) or that it should be included in the master .chm file ( NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated ( +# YES) or a normal table of contents ( NO) in the .chm file. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using prerendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
+ IIO logo A cross-platform user + library to access Industrial Input Output (IIO) devices +