├── .hgignore ├── AUTHORS.txt ├── CHANGELOG.rst ├── CMakeLists.txt ├── Makefile ├── README.md ├── Readme.txt ├── Readme_ja.txt ├── Releasenotes.txt ├── current ├── COPYRIGHT.txt ├── Doxyfile ├── Doxyfile_ja ├── Install.txt ├── Makefile ├── Makefile.release ├── build_rule.mk ├── dox │ ├── Makefile │ ├── connect_and_get.c │ ├── connect_ethernet.c │ ├── convert_xy.c │ ├── doxygen_stylesheet.css │ ├── get_scans.c │ ├── get_timestamp.c │ ├── library_sample.dox │ ├── library_tutorial.dox │ ├── mainpage.dox │ ├── multiecho_image.svg │ ├── sensor_angle_image.svg │ ├── sensor_index_image.svg │ ├── sensor_step_image.svg │ ├── set_parameter.c │ ├── skip_scan_image.svg │ ├── usage_gcc.dox │ ├── usage_windows_bat.dox │ └── usage_windows_vcproj.dox ├── include │ └── urg_c │ │ ├── urg_connection.h │ │ ├── urg_debug.h │ │ ├── urg_detect_os.h │ │ ├── urg_errno.h │ │ ├── urg_ring_buffer.h │ │ ├── urg_sensor.h │ │ ├── urg_serial.h │ │ ├── urg_serial_utils.h │ │ ├── urg_tcpclient.h │ │ ├── urg_time.h │ │ └── urg_utils.h ├── samples │ ├── Makefile │ ├── Makefile.release │ ├── angle_convert_test.c │ ├── calculate_xy.c │ ├── find_port.c │ ├── get_distance.c │ ├── get_distance_intensity.c │ ├── get_multiecho.c │ ├── get_multiecho_intensity.c │ ├── ld_setupapi.sh │ ├── ld_wsock.sh │ ├── open_urg_sensor.c │ ├── open_urg_sensor.h │ ├── reboot_test.c │ ├── sensor_parameter.c │ ├── sync_time_stamp.c │ └── timeout_test.c ├── src │ ├── Makefile │ ├── Makefile.release │ ├── urg_connection.c │ ├── urg_debug.c │ ├── urg_ring_buffer.c │ ├── urg_sensor.c │ ├── urg_serial.c │ ├── urg_serial_linux.c │ ├── urg_serial_utils.c │ ├── urg_serial_utils_linux.c │ ├── urg_serial_utils_windows.c │ ├── urg_serial_windows.c │ ├── urg_tcpclient.c │ ├── urg_time.c │ └── urg_utils.c ├── urg_c-config.in ├── viewers │ ├── Makefile │ └── viewer_sdl │ │ ├── Makefile │ │ ├── plotter_sdl.c │ │ ├── plotter_sdl.h │ │ └── viewer_sdl.c ├── visual_cpp │ ├── calculate_xy │ │ └── calculate_xy.vcproj │ ├── find_port │ │ └── find_port.vcproj │ ├── get_distance │ │ └── get_distance.vcproj │ ├── get_distance_intensity │ │ └── get_distance_intensity.vcproj │ ├── get_multiecho │ │ └── get_multiecho.vcproj │ ├── get_multiecho_intensity │ │ └── get_multiecho_intensity.vcproj │ ├── sensor_parameter │ │ └── sensor_parameter.vcproj │ ├── sync_time_stamp │ │ └── sync_time_stamp.vcproj │ ├── urg.sln │ └── urg │ │ └── urg.vcproj └── windowsexe │ ├── cleanobj.bat │ └── compile.bat ├── package.xml └── split_comment.rb /.hgignore: -------------------------------------------------------------------------------- 1 | syntax: glob 2 | *~ 3 | *.o 4 | *.a 5 | *.exe 6 | current/html 7 | current/html_ja 8 | 9 | current/dox/multiecho_image.png 10 | current/dox/sensor_angle_image.png 11 | current/dox/sensor_index_image.png 12 | current/dox/sensor_step_image.png 13 | current/dox/skip_scan_image.png 14 | 15 | release 16 | generated_html 17 | get_distance 18 | get_distance_intensity 19 | get_multiecho 20 | get_multiecho_intensity 21 | calculate_xy 22 | sync_time_stamp 23 | sensor_parameter 24 | find_port 25 | test/urg_sensor_test 26 | test/serial_test 27 | test/urg04lx_parameter_test 28 | viewer_sdl/viewer_sdl 29 | urg_library*.zip 30 | 31 | connect_and_get 32 | connect_ethernet 33 | convert_xy 34 | get_scans 35 | get_timestamp 36 | set_parameter 37 | reboot_test 38 | timeout_test 39 | angle_convert_test 40 | -------------------------------------------------------------------------------- /AUTHORS.txt: -------------------------------------------------------------------------------- 1 | Satofumi Kamimura 2 | Adrian Boeing 3 | -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package urg_c 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.0.4001 (2020-06-10) 6 | --------------------- 7 | * add maintainer for ros2 (`#13 `_) 8 | * Contributors: Michael Ferguson 9 | 10 | 1.0.4000 (2020-03-17) 11 | --------------------- 12 | * migrate ros2 devel (`#11 `_) 13 | * Contributors: Karsten Knese, Brett, Marc-Antoine Testier, Chris Lalancette 14 | 15 | 1.0.405 (2018-08-07) 16 | -------------------- 17 | * pass *pointer to* system timestamp, sync issue on quit 18 | * Adding new maintainer. 19 | * Contributors: Tony Baltovski, knickels 20 | 21 | 1.0.404 (2014-04-28) 22 | -------------------- 23 | * Merge pull request `#2 `_ from dawonn/master 24 | Issue `#1 `_ - missing libmath link 25 | * Ubuntu 14.04 Fix - missing libmath link 26 | * Fix build for Android. 27 | * Contributors: Chad Rockey, dawonn 28 | 29 | 1.0.403 (2013-08-21) 30 | -------------------- 31 | * No more Willow Garage email. 32 | * Contributors: Chad Rockey 33 | 34 | 1.0.402 (2013-04-04) 35 | -------------------- 36 | * Missing header for Ubuntu Raring 13.04 37 | * Contributors: chadrockey 38 | 39 | 1.0.401 (2013-03-03) 40 | -------------------- 41 | * Updated version to 1.0.401 42 | * Added files for catkin/bloom to release. 43 | * Added better system timestamp 44 | * Added more information functions. 45 | * Updated includes for urg_c folder. 46 | * Moving header files to be standardized for source builds. 47 | * fix document 48 | * fixed laser off fail when urg_close() has called 49 | * fixed tcpclient_open bug on Linux 50 | * added angle_convert_test.c 51 | * fixed for ethernet sensor 52 | * fixed windows.h include timing 53 | * fixed urg_c-config created 54 | * fixed ethernet open problem 55 | * fixed compile error 56 | * added reported user Adrian Boeing. thanks! 57 | * added releasenotes 58 | * removed rt link script 59 | * fixed for OSX 60 | * added AUTHORS.txt 61 | * fixed plotter's bug 62 | * fixed multiecho data's bug 63 | * fixed urg_tcpclient_open()'s bug 64 | * fixed receive_length data handling 65 | * fixed 'if' condition handling data store 66 | * fixed NULL pointer access bug 67 | * fixed QT after RB 68 | * fixed Gx stop bug 69 | * translated page titles 70 | * fixed urg_sensor_status() function's bug 71 | * fixed buffer size 72 | * remove duplicated file 73 | * fixed doxygen comment 74 | * fixed dependency 75 | * fixed closing time is too long. 76 | * added receive_command_response() internal function. 77 | * added document tag 78 | * sepalated urg_debug.[ch] 79 | * added samples 80 | * fixed download path document. 81 | * urg_sleep(), urg_wakeup, urg_is_stabl() are implemented. 82 | * fixed parameter receive method. 83 | * fixed localhost convert 84 | * fixed localhost ip_address 85 | * added type item 86 | * changed error handler return type 87 | * added urg_scip_decode() function. 88 | * added error handler 89 | * removed temporary image files 90 | * fixed OpenGL 1 support 91 | * fixed html mainpage 92 | * added sample compile check 93 | * translated some files. 94 | * translated mainpage.dox 95 | * fixed document. 96 | * added timestamp tutorial 97 | * added images 98 | * fixed indent 99 | * added doxygen comment 100 | * added document. 101 | * added tutorial samples 102 | * fixed dox comment 103 | * mainpage is created. 104 | * fixed document mainpage layout 105 | * added usage document. 106 | * adjusted mainpage.dox 107 | * modify how to build sample with Visual Studio on Readme_ja.txt 108 | * added install dox document 109 | * added install document 110 | * fixed laser_off handling 111 | * fixed connection timeout 112 | * fixed capture_times 113 | * fixed sample's bug 114 | * added visual studio samples. 115 | * added sensor_parameter vc project. 116 | * added visual studio 2005 project files. 117 | * windows compile.bat for winsock2 118 | * fixed for VC++ compile error. 119 | * omit stdbool.h . 120 | * changed UTF-8 -> CP932 121 | * fixed snprintf implementation. 122 | * New directory windowsexe to make windows exe files. 123 | * adjusted for cl.exe compile. 124 | * changed the character encoding SJIS 125 | * added connect timeout function. 126 | * fixed TCP/IP connect timeout 127 | * added CC=gcc 128 | * fixed information funciton's bug 129 | * fixed urg_firmware_version() fail at URG-04LX 130 | * fixed serial connection fail. 131 | * fixed sh scripts 132 | * fixed release package compile failed. 133 | * added comment. 134 | * added impelementation comment. 135 | * fixed winsock close 136 | * fixed Makefile error 137 | * adjusted open routine. 138 | * fixed link libraries 139 | * added mingw install setting 140 | * fixed sort bug. 141 | * fixed urg_serial_utils_windows.c 142 | * implemented urg_serial_utils_windows.c 143 | * implemented urg_serial_utils_linux.c 144 | * added urg_sensor_product_type() function 145 | * fixed scan times bug 146 | * fixed make clean rule 147 | * fixed link directory 148 | * added read/write function 149 | * fixed multiecho sample 150 | * fixed sample bug 151 | * urg_sensor_id() -> urg_sensor_serial_id() 152 | * fixed scan_skip timeout problem 153 | * added extern C 154 | * fixed viewer compile setting 155 | * fixed split script 156 | * fixed sample code's indent 157 | * fixed header indent 158 | * fixed urg_c-config 159 | * urg_c-config addes 160 | * include directory added 161 | * doxygen tag added 162 | * conflict COPYRIGHT and current/COPYRIGHT 163 | * Doxyfile added 164 | * fixed using OS env 165 | * fixed dist rule 166 | * printf debug message removed. 167 | * error output code removed 168 | * key zoom enabled 169 | * Readme.txt modified and COPYRIGHT added. 170 | * urg_tcpclient.h comments 171 | * fixed urg_index2rad()'s bug 172 | * remove debug print 173 | * Merge 174 | * fixed sample args parser 175 | * fixed urg_serial_windows.c compile error. 176 | * added ld_rt.sh 177 | * fixed multiecho intensity bug 178 | * plotter_sdl.c is implemented. 179 | * viewer_sdl debugging 180 | * viewer_sdl.c is implemented. 181 | * fixed struct name 182 | * fixed multiecho sample 183 | * fixed samples for -e option 184 | * adjusted for mingw. 185 | * fixed sh script 186 | * windows socket debugging 187 | * windows tcp debugging 188 | * windows tcp debugging 189 | * fixed mingw compile failed. 190 | * fixed ethernet sample error 191 | * removed -lrt option 192 | * fixed for mingw 193 | * 'urg_tcpclient.c urg_tcpclient.h modified and fixed.' 194 | * urg_tcpclient.c (tcpclient_readline() modified) 195 | * directories reaaranged. 196 | * Readme.txt modified. 197 | * tcpclient debugging. 198 | * urg_tcpclient.c was compiled by mingw gcc. 199 | * Merge 200 | * Merge 201 | * to commit. 202 | * removing urg_ethernet.* files 203 | * tcpclient module for linux. 204 | * added wait enter code 205 | * fixed sample output 206 | * fixed urg_time_stamp()'s bug 207 | * removed implemented todo task comment 208 | * urg_sensor.c:change_sensor_baudrate() is implemented. 209 | * added ethernet option 210 | * fixed sample output 211 | * fixed length data receive misstake 212 | * fixed errno misstake. 213 | * fixed gcc warning 214 | * added device selection ifdef 215 | * Merge 216 | * Merge 217 | * addes multiecho intensity sample 218 | * fixed error handling 219 | * Merge 220 | * Merge 221 | * fixed MD stop 222 | * fixed MD handling 223 | * fixed MD command handling 224 | * multiecho_intensity のテストを追加 225 | * HD command acceptable. 226 | * fixed multiecho parser 227 | * new directory configuration. 228 | * New directory configuration. 229 | * removed debug message 230 | * Merge 231 | * added files using win32 232 | * multiecho function is implemented. 233 | * applied scip_checksum() 234 | * get_distance*() functions were implemented. 235 | * urg_utils.c is implemented. 236 | * RB command is implemented. 237 | * get_distance.c is implemented. 238 | * removed debug code 239 | * added static receive_data_line() function 240 | * fixed infinity loop error 241 | * added parameter test program for URG-04LX 242 | * removed debug message 243 | * fixed indent 244 | * sensor_parameter.cpp is implemented. 245 | * urg_sensor_id() is implemented. 246 | * added debug comment 247 | * added debug comment 248 | * added URG_NOT_DETECT_BAUDRATE_ERROR 249 | * renamed variable 250 | * fixed doxygen comment 251 | * added urg_t variables 252 | * fixed indent 253 | * removed urg_ethernet_t.h 254 | * urg_communication.c is implemented. 255 | * urg_detect_os.h is implemented. 256 | * added urg_detect_os.h 257 | * added windows serial implementetion. 258 | * added serial_test.c 259 | * urg_serial_linux.c is implemented. 260 | * removed urg/Makefile 261 | * changed test function api 262 | * added test case 263 | * adjusted urg directory removed. 264 | * remove urg directory 265 | * add test directory 266 | * add urg_*_t.h 267 | * fixed character-code 268 | * Merge urg_connection 269 | * Merge urg_connection 270 | * Checksum function is implemented 271 | * fixed compile error 272 | * changed connection -> communication 273 | * renamed 274 | * fixed doxygen tag 275 | * added urg_reboot() 276 | * removed urg_connection_utils.h 277 | * added doxygen comment 278 | * added urg_connection.c functions 279 | * implemented some functions. 280 | * add internal functions 281 | * renamed 282 | * added urg_connection.h 283 | * added image 284 | * fix mainpage.dox link 285 | * added urg/sample/get_multiecho_intensity.c 286 | * added doxygen image tag 287 | * fixed urg c API 288 | * changed timestamp -> time_stamp 289 | * added doxygen comment 290 | * added doxygen comment 291 | * added doxygen comment 292 | * adjusted c/urg/*.c files API 293 | * changed C API 294 | * adjusted URG API 295 | * ライブラリの実装方法を追記 296 | * added library API 297 | * added sample programs 298 | * added package files 299 | * added dox files 300 | * add urg manual written in Japanese 301 | * add package files 302 | * Contributors: K. Kimoto, Kunihiro Yasuda, Satofumi KAMIMURA, chadrockey, hokuyo2@free53.hokuyo-aut.co.jp, hokuyo@free53.hokuyo-aut.co.jp, k-yasuda@1433-yasuda3, katsumik, satofumi 303 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(urg_c) 3 | 4 | find_package(ament_cmake REQUIRED) 5 | 6 | if(WIN32) 7 | message(WARNING "${PROJECT_NAME} is currently not supported on Windows") 8 | ament_package() 9 | return() 10 | endif() 11 | 12 | # Default to C99 13 | if(NOT CMAKE_C_STANDARD) 14 | set(CMAKE_C_STANDARD 99) 15 | endif() 16 | 17 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 18 | add_compile_options(-Wall -Wextra -Wpedantic) 19 | endif() 20 | 21 | # Set library locations to better handle if upstream locations change 22 | set(LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/current) 23 | set(LIBRARY_INCLUDE_DIR ${LIBRARY_DIR}/include) 24 | set(LIBRARY_SRC_DIR ${LIBRARY_DIR}/src) 25 | set(LIBRARY_SAMPLE_DIR ${LIBRARY_DIR}/samples) 26 | 27 | ################################################### 28 | ## Declare things to be passed to other projects ## 29 | ################################################### 30 | 31 | ########### 32 | ## Build ## 33 | ########### 34 | 35 | ## Declare libraries 36 | add_library(urg_c SHARED 37 | ${LIBRARY_SRC_DIR}/urg_sensor.c 38 | ${LIBRARY_SRC_DIR}/urg_utils.c 39 | ${LIBRARY_SRC_DIR}/urg_debug.c 40 | ${LIBRARY_SRC_DIR}/urg_connection.c 41 | ${LIBRARY_SRC_DIR}/urg_ring_buffer.c 42 | ${LIBRARY_SRC_DIR}/urg_serial.c 43 | ${LIBRARY_SRC_DIR}/urg_serial_utils.c 44 | ${LIBRARY_SRC_DIR}/urg_tcpclient.c 45 | ${LIBRARY_SRC_DIR}/urg_time.c 46 | ) 47 | target_include_directories(urg_c 48 | PUBLIC 49 | $ 50 | $ 51 | ) 52 | if(CMAKE_COMPILER_IS_GNUCXX) 53 | target_link_libraries(urg_c -lrt -lm) 54 | endif(CMAKE_COMPILER_IS_GNUCXX) 55 | 56 | add_library(open_urg_sensor ${LIBRARY_SAMPLE_DIR}/open_urg_sensor.c) 57 | target_link_libraries(open_urg_sensor -lm urg_c) 58 | 59 | ## Declare samples 60 | add_executable(angle_convert_test ${LIBRARY_SAMPLE_DIR}/angle_convert_test.c) 61 | target_link_libraries(angle_convert_test urg_c open_urg_sensor) 62 | 63 | add_executable(calculate_xy ${LIBRARY_SAMPLE_DIR}/calculate_xy.c) 64 | target_link_libraries(calculate_xy urg_c open_urg_sensor) 65 | 66 | add_executable(find_port ${LIBRARY_SAMPLE_DIR}/find_port.c) 67 | target_link_libraries(find_port urg_c open_urg_sensor) 68 | 69 | add_executable(get_distance ${LIBRARY_SAMPLE_DIR}/get_distance.c) 70 | target_link_libraries(get_distance urg_c open_urg_sensor) 71 | 72 | add_executable(get_distance_intensity ${LIBRARY_SAMPLE_DIR}/get_distance_intensity.c) 73 | target_link_libraries(get_distance_intensity urg_c open_urg_sensor) 74 | 75 | add_executable(get_multiecho ${LIBRARY_SAMPLE_DIR}/get_multiecho.c) 76 | target_link_libraries(get_multiecho urg_c open_urg_sensor) 77 | 78 | add_executable(get_multiecho_intensity ${LIBRARY_SAMPLE_DIR}/get_multiecho_intensity.c) 79 | target_link_libraries(get_multiecho_intensity urg_c open_urg_sensor) 80 | 81 | add_executable(reboot_test ${LIBRARY_SAMPLE_DIR}/reboot_test.c) 82 | target_link_libraries(reboot_test urg_c open_urg_sensor) 83 | 84 | add_executable(sensor_parameter ${LIBRARY_SAMPLE_DIR}/sensor_parameter.c) 85 | target_link_libraries(sensor_parameter urg_c open_urg_sensor) 86 | 87 | add_executable(sync_time_stamp ${LIBRARY_SAMPLE_DIR}/sync_time_stamp.c) 88 | target_link_libraries(sync_time_stamp urg_c open_urg_sensor) 89 | 90 | add_executable(timeout_test ${LIBRARY_SAMPLE_DIR}/timeout_test.c) 91 | target_link_libraries(timeout_test urg_c open_urg_sensor) 92 | 93 | ############# 94 | ## Install ## 95 | ############# 96 | 97 | ## Mark executables and/or libraries for installation 98 | install(TARGETS urg_c open_urg_sensor angle_convert_test calculate_xy find_port 99 | get_distance get_distance_intensity get_multiecho get_multiecho_intensity 100 | reboot_test sensor_parameter sync_time_stamp timeout_test 101 | ARCHIVE DESTINATION lib 102 | LIBRARY DESTINATION lib 103 | RUNTIME DESTINATION bin 104 | ) 105 | 106 | ## Mark cpp header files for installation 107 | install(DIRECTORY ${LIBRARY_INCLUDE_DIR}/ 108 | DESTINATION include 109 | ) 110 | 111 | ament_export_include_directories(include) 112 | ament_export_libraries(urg_c open_urg_sensor) 113 | ament_package() 114 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # urgwidget 2 | 3 | VERSION = 1.0.4 4 | RELEASE_DIR = release 5 | PACKAGE_EN_DIR = urg_library-$(VERSION) 6 | PACKAGE_JA_DIR = urg_library_ja-$(VERSION) 7 | 8 | 9 | all : 10 | cd current/ && $(MAKE) 11 | 12 | clean : release_clean 13 | cd current/ && $(MAKE) clean 14 | $(RM) -rf $(RELEASE_DIR) 15 | 16 | install : dist 17 | cd $(RELEASE_DIR)/$(PACKAGE_JA_DIR) && $(MAKE) install 18 | 19 | 20 | TARGET_DIR = $(PACKAGE_EN_DIR) $(PACKAGE_JA_DIR) 21 | dist : release_clean 22 | mkdir -p $(RELEASE_DIR) 23 | for i in $(TARGET_DIR) ; \ 24 | do \ 25 | mkdir -p $(RELEASE_DIR)/$$i; \ 26 | mkdir -p $(RELEASE_DIR)/$$i/include; \ 27 | mkdir -p $(RELEASE_DIR)/$$i/src; \ 28 | mkdir -p $(RELEASE_DIR)/$$i/windowsexe; \ 29 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp; \ 30 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/calculate_xy; \ 31 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/find_port; \ 32 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/get_distance; \ 33 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/get_multiecho; \ 34 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/get_multiecho_intensity; \ 35 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/sensor_parameter; \ 36 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/sync_time_stamp; \ 37 | mkdir -p $(RELEASE_DIR)/$$i/visual_cpp/urg; \ 38 | mkdir -p $(RELEASE_DIR)/$$i/samples; \ 39 | cp current/COPYRIGHT.txt current/Install.txt current/build_rule.mk Readme.txt AUTHORS.txt Releasenotes.txt $(RELEASE_DIR)/$$i/; \ 40 | cp current/Makefile.release $(RELEASE_DIR)/$$i/Makefile; \ 41 | cp current/src/Makefile.release $(RELEASE_DIR)/$$i/src/Makefile; \ 42 | cp current/samples/Makefile.release $(RELEASE_DIR)/$$i/samples/Makefile ; \ 43 | cp current/include/*.h $(RELEASE_DIR)/$$i/include/; \ 44 | cp current/src/*.c $(RELEASE_DIR)/$$i/src/; \ 45 | cp current/samples/*.sh $(RELEASE_DIR)/$$i/samples/; \ 46 | cp current/windowsexe/*.bat $(RELEASE_DIR)/$$i/windowsexe/; \ 47 | cp -r current/visual_cpp/ $(RELEASE_DIR)/$$i/; \ 48 | cat current/urg_c-config.in | sed -e "s/VERSION/$(VERSION)/g" > $(RELEASE_DIR)/$$i/urg_c-config.in ; \ 49 | done 50 | ruby split_comment.rb -e current/include/*.h $(RELEASE_DIR)/$(PACKAGE_EN_DIR)/include/ 51 | ruby split_comment.rb -e current/src/*.c $(RELEASE_DIR)/$(PACKAGE_EN_DIR)/src/ 52 | ruby split_comment.rb -e current/samples/*.c $(RELEASE_DIR)/$(PACKAGE_EN_DIR)/samples/ 53 | ruby split_comment.rb -e current/samples/*.h $(RELEASE_DIR)/$(PACKAGE_EN_DIR)/samples/ 54 | ruby split_comment.rb -j current/include/*.h $(RELEASE_DIR)/$(PACKAGE_JA_DIR)/include/ 55 | ruby split_comment.rb -j current/src/*.c $(RELEASE_DIR)/$(PACKAGE_JA_DIR)/src/ 56 | ruby split_comment.rb -j current/samples/*.c $(RELEASE_DIR)/$(PACKAGE_JA_DIR)/samples/ 57 | ruby split_comment.rb -j current/samples/*.h $(RELEASE_DIR)/$(PACKAGE_JA_DIR)/samples/ 58 | for i in $(TARGET_DIR) ; \ 59 | do \ 60 | cd $(PWD); \ 61 | cd $(RELEASE_DIR)/$$i && $(MAKE) && $(MAKE) clean; \ 62 | done 63 | for i in $(TARGET_DIR) ; \ 64 | do \ 65 | cd $(PWD); \ 66 | cd $(RELEASE_DIR)/ && (zip -r $$i.zip $$i) && mv $$i.zip ../; \ 67 | done 68 | 69 | release_clean : 70 | $(RM) -rf $(RELEASE_DIR)/$(PACKAGE_EN_DIR) $(RELEASE_DIR)/$(PACKAGE_JA_DIR) 71 | $(RM) $(PACKAGE_EN_DIR).zip $(PACKAGE_JA_DIR).zip 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Packaging for URG Helper / URG Widget / URG Library / urg_c 2 | 3 | Original Source at: 4 | http://sourceforge.net/projects/urgwidget 5 | 6 | This project introduces sample programs of the URG library. Applications using URG and URG library are also introduced here. URG is Scanning Laser Range Finder of Hokuyo Automatic Co., for robots, autonomous systems and security systems. 7 | -------------------------------------------------------------------------------- /Readme.txt: -------------------------------------------------------------------------------- 1 | URG C Library 2 | 3 | About this software: 4 | This software have been developed to provide a library to use 5 | scanning range sensors of Hokuyo Automatic Corporation. Samples 6 | will help to know how to use them. 7 | 8 | Authors: 9 | Satofumi Kamimura Design and implementation of the first version. 10 | Katsumi Kimoto 11 | 12 | License: 13 | Simplified BSD License. 14 | See COPYRIGHT file. 15 | 16 | 17 | Mailing list: 18 | urgwidget-users@lists.sourceforge.net 19 | 20 | 21 | Library usage: 22 | 23 | Visual Studio Solution (Windows) 24 | 25 | urg_library-X.X.X/visual_cpp/urg.sln をビルドします。 26 | 27 | ビルド後は、urg.lib のスタティックライブラリと各サンプルの 28 | 実行ファイルが生成されています。 29 | 30 | 31 | 32 | Visual Studio bat compile (Windows) 33 | 34 | *以下の作業はコマンドプロンプト上で行ってください* 35 | 36 | 1. 環境変数を設定するために Visual Studio が提供している bat ファイルを 37 | コピーします。 38 | 39 | Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat を 40 | urgwidget\current\windowsexeにコピーする。 41 | 42 | 43 | 2. 環境変数を設定後、コンパイル用のbatファイルを実行する。 44 | 45 | urgwidget\current\windowsexe\vsvars32.batを実行し 46 | urgwidget\current\windowsexe\compile.batを実行する。 47 | 48 | 49 | 3. 生成されたサンプルの実行ファイルを動かす。 50 | 51 | urgwidget\current\windowsexeに生成されるexeを実行する。 52 | 53 | 54 | 4. 生成されたサンプルの実行ファイルを削除する。 55 | 56 | urgwidget\current\windowsexe\cleanobj.batを実行し 57 | 生成された実行ファイルを削除する。 58 | 59 | 60 | gcc (Linux, MinGW) 61 | 62 | 必要ならば urg_library-X.X.X/Makefile の PREFIX を編集して 63 | インストール先を変更します。 64 | 65 | !!! 現状こうなっているので、他の場所にしたければ、変更して下さい。 66 | PREFIX = /usr/local 67 | #PREFIX = /mingw 68 | 69 | コンパイルとインストールを行います。 70 | 71 | % make 72 | # make install 73 | 74 | ライブラリの使い方は、urg-library-X.X.X/samples/ 中の Makefile をご覧下さい。 75 | 76 | !!! ライブラリの使い方は、もう少しちゃんと書きたい。 77 | -------------------------------------------------------------------------------- /Readme_ja.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/Readme_ja.txt -------------------------------------------------------------------------------- /Releasenotes.txt: -------------------------------------------------------------------------------- 1 | 2012-02-21 2 | * Fixed ethernet open problem. 3 | * Fixed laser off fail when "urg_close()" function has called. 4 | 5 | 2012-01-31 6 | * 1.0.3 released. 7 | * Fixed Macintosh implementation to work. (reported Adrian Boeing) 8 | -------------------------------------------------------------------------------- /current/COPYRIGHT.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010 urg helper project All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 1. Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | 2. Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 13 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 15 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 16 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 18 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 19 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 20 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 21 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 22 | SUCH DAMAGE. 23 | -------------------------------------------------------------------------------- /current/Doxyfile: -------------------------------------------------------------------------------- 1 | # Doxyfile 1.7.1 2 | 3 | # This file describes the settings to be used by the documentation system 4 | # doxygen (www.doxygen.org) for a project. 5 | # 6 | # All text after a hash (#) is considered a comment and will be ignored. 7 | # The format is: 8 | # TAG = value [value, ...] 9 | # For lists items can also be appended using: 10 | # TAG += value [value, ...] 11 | # Values that contain spaces should be placed between quotes (" "). 12 | 13 | #--------------------------------------------------------------------------- 14 | # Project related configuration options 15 | #--------------------------------------------------------------------------- 16 | 17 | # This tag specifies the encoding used for all characters in the config file 18 | # that follow. The default is UTF-8 which is also the encoding used for all 19 | # text before the first occurrence of this tag. Doxygen uses libiconv (or the 20 | # iconv built into libc) for the transcoding. See 21 | # http://www.gnu.org/software/libiconv for the list of possible encodings. 22 | 23 | DOXYFILE_ENCODING = CP932 24 | 25 | # The PROJECT_NAME tag is a single word (or a sequence of words surrounded 26 | # by quotes) that should identify the project. 27 | 28 | PROJECT_NAME = 29 | 30 | # The PROJECT_NUMBER tag can be used to enter a project or revision number. 31 | # This could be handy for archiving the generated documentation or 32 | # if some version control system is used. 33 | 34 | PROJECT_NUMBER = 35 | 36 | # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 37 | # base path where the generated documentation will be put. 38 | # If a relative path is entered, it will be relative to the location 39 | # where doxygen was started. If left blank the current directory will be used. 40 | 41 | OUTPUT_DIRECTORY = 42 | 43 | # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 44 | # 4096 sub-directories (in 2 levels) under the output directory of each output 45 | # format and will distribute the generated files over these directories. 46 | # Enabling this option can be useful when feeding doxygen a huge amount of 47 | # source files, where putting all generated files in the same directory would 48 | # otherwise cause performance problems for the file system. 49 | 50 | CREATE_SUBDIRS = NO 51 | 52 | # The OUTPUT_LANGUAGE tag is used to specify the language in which all 53 | # documentation generated by doxygen is written. Doxygen will use this 54 | # information to generate all constant output in the proper language. 55 | # The default language is English, other supported languages are: 56 | # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 57 | # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 58 | # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 59 | # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 60 | # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 61 | # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. 62 | 63 | OUTPUT_LANGUAGE = English 64 | 65 | # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 66 | # include brief member descriptions after the members that are listed in 67 | # the file and class documentation (similar to JavaDoc). 68 | # Set to NO to disable this. 69 | 70 | BRIEF_MEMBER_DESC = YES 71 | 72 | # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 73 | # the brief description of a member or function before the detailed description. 74 | # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 75 | # brief descriptions will be completely suppressed. 76 | 77 | REPEAT_BRIEF = YES 78 | 79 | # This tag implements a quasi-intelligent brief description abbreviator 80 | # that is used to form the text in various listings. Each string 81 | # in this list, if found as the leading text of the brief description, will be 82 | # stripped from the text and the result after processing the whole list, is 83 | # used as the annotated text. Otherwise, the brief description is used as-is. 84 | # If left blank, the following values are used ("$name" is automatically 85 | # replaced with the name of the entity): "The $name class" "The $name widget" 86 | # "The $name file" "is" "provides" "specifies" "contains" 87 | # "represents" "a" "an" "the" 88 | 89 | ABBREVIATE_BRIEF = 90 | 91 | # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 92 | # Doxygen will generate a detailed section even if there is only a brief 93 | # description. 94 | 95 | ALWAYS_DETAILED_SEC = NO 96 | 97 | # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 98 | # inherited members of a class in the documentation of that class as if those 99 | # members were ordinary class members. Constructors, destructors and assignment 100 | # operators of the base classes will not be shown. 101 | 102 | INLINE_INHERITED_MEMB = NO 103 | 104 | # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 105 | # path before files name in the file list and in the header files. If set 106 | # to NO the shortest path that makes the file name unique will be used. 107 | 108 | FULL_PATH_NAMES = YES 109 | 110 | # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 111 | # can be used to strip a user-defined part of the path. Stripping is 112 | # only done if one of the specified strings matches the left-hand part of 113 | # the path. The tag can be used to show relative paths in the file list. 114 | # If left blank the directory from which doxygen is run is used as the 115 | # path to strip. 116 | 117 | STRIP_FROM_PATH = 118 | 119 | # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 120 | # the path mentioned in the documentation of a class, which tells 121 | # the reader which header file to include in order to use a class. 122 | # If left blank only the name of the header file containing the class 123 | # definition is used. Otherwise one should specify the include paths that 124 | # are normally passed to the compiler using the -I flag. 125 | 126 | STRIP_FROM_INC_PATH = 127 | 128 | # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 129 | # (but less readable) file names. This can be useful if your file system 130 | # doesn't support long names like on DOS, Mac, or CD-ROM. 131 | 132 | SHORT_NAMES = NO 133 | 134 | # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 135 | # will interpret the first line (until the first dot) of a JavaDoc-style 136 | # comment as the brief description. If set to NO, the JavaDoc 137 | # comments will behave just like regular Qt-style comments 138 | # (thus requiring an explicit @brief command for a brief description.) 139 | 140 | JAVADOC_AUTOBRIEF = NO 141 | 142 | # If the QT_AUTOBRIEF tag is set to YES then Doxygen will 143 | # interpret the first line (until the first dot) of a Qt-style 144 | # comment as the brief description. If set to NO, the comments 145 | # will behave just like regular Qt-style comments (thus requiring 146 | # an explicit \brief command for a brief description.) 147 | 148 | QT_AUTOBRIEF = NO 149 | 150 | # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 151 | # treat a multi-line C++ special comment block (i.e. a block of //! or /// 152 | # comments) as a brief description. This used to be the default behaviour. 153 | # The new default is to treat a multi-line C++ comment block as a detailed 154 | # description. Set this tag to YES if you prefer the old behaviour instead. 155 | 156 | MULTILINE_CPP_IS_BRIEF = NO 157 | 158 | # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 159 | # member inherits the documentation from any documented member that it 160 | # re-implements. 161 | 162 | INHERIT_DOCS = YES 163 | 164 | # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 165 | # a new page for each member. If set to NO, the documentation of a member will 166 | # be part of the file/class/namespace that contains it. 167 | 168 | SEPARATE_MEMBER_PAGES = NO 169 | 170 | # The TAB_SIZE tag can be used to set the number of spaces in a tab. 171 | # Doxygen uses this value to replace tabs by spaces in code fragments. 172 | 173 | TAB_SIZE = 8 174 | 175 | # This tag can be used to specify a number of aliases that acts 176 | # as commands in the documentation. An alias has the form "name=value". 177 | # For example adding "sideeffect=\par Side Effects:\n" will allow you to 178 | # put the command \sideeffect (or @sideeffect) in the documentation, which 179 | # will result in a user-defined paragraph with heading "Side Effects:". 180 | # You can put \n's in the value part of an alias to insert newlines. 181 | 182 | ALIASES = 183 | 184 | # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 185 | # sources only. Doxygen will then generate output that is more tailored for C. 186 | # For instance, some of the names that are used will be different. The list 187 | # of all members will be omitted, etc. 188 | 189 | OPTIMIZE_OUTPUT_FOR_C = YES 190 | 191 | # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 192 | # sources only. Doxygen will then generate output that is more tailored for 193 | # Java. For instance, namespaces will be presented as packages, qualified 194 | # scopes will look different, etc. 195 | 196 | OPTIMIZE_OUTPUT_JAVA = NO 197 | 198 | # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 199 | # sources only. Doxygen will then generate output that is more tailored for 200 | # Fortran. 201 | 202 | OPTIMIZE_FOR_FORTRAN = NO 203 | 204 | # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 205 | # sources. Doxygen will then generate output that is tailored for 206 | # VHDL. 207 | 208 | OPTIMIZE_OUTPUT_VHDL = NO 209 | 210 | # Doxygen selects the parser to use depending on the extension of the files it 211 | # parses. With this tag you can assign which parser to use for a given extension. 212 | # Doxygen has a built-in mapping, but you can override or extend it using this 213 | # tag. The format is ext=language, where ext is a file extension, and language 214 | # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, 215 | # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make 216 | # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C 217 | # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions 218 | # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. 219 | 220 | EXTENSION_MAPPING = 221 | 222 | # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 223 | # to include (a tag file for) the STL sources as input, then you should 224 | # set this tag to YES in order to let doxygen match functions declarations and 225 | # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 226 | # func(std::string) {}). This also makes the inheritance and collaboration 227 | # diagrams that involve STL classes more complete and accurate. 228 | 229 | BUILTIN_STL_SUPPORT = NO 230 | 231 | # If you use Microsoft's C++/CLI language, you should set this option to YES to 232 | # enable parsing support. 233 | 234 | CPP_CLI_SUPPORT = NO 235 | 236 | # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 237 | # Doxygen will parse them like normal C++ but will assume all classes use public 238 | # instead of private inheritance when no explicit protection keyword is present. 239 | 240 | SIP_SUPPORT = NO 241 | 242 | # For Microsoft's IDL there are propget and propput attributes to indicate getter 243 | # and setter methods for a property. Setting this option to YES (the default) 244 | # will make doxygen replace the get and set methods by a property in the 245 | # documentation. This will only work if the methods are indeed getting or 246 | # setting a simple type. If this is not the case, or you want to show the 247 | # methods anyway, you should set this option to NO. 248 | 249 | IDL_PROPERTY_SUPPORT = YES 250 | 251 | # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 252 | # tag is set to YES, then doxygen will reuse the documentation of the first 253 | # member in the group (if any) for the other members of the group. By default 254 | # all members of a group must be documented explicitly. 255 | 256 | DISTRIBUTE_GROUP_DOC = NO 257 | 258 | # Set the SUBGROUPING tag to YES (the default) to allow class member groups of 259 | # the same type (for instance a group of public functions) to be put as a 260 | # subgroup of that type (e.g. under the Public Functions section). Set it to 261 | # NO to prevent subgrouping. Alternatively, this can be done per class using 262 | # the \nosubgrouping command. 263 | 264 | SUBGROUPING = YES 265 | 266 | # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 267 | # is documented as struct, union, or enum with the name of the typedef. So 268 | # typedef struct TypeS {} TypeT, will appear in the documentation as a struct 269 | # with name TypeT. When disabled the typedef will appear as a member of a file, 270 | # namespace, or class. And the struct will be named TypeS. This can typically 271 | # be useful for C code in case the coding convention dictates that all compound 272 | # types are typedef'ed and only the typedef is referenced, never the tag name. 273 | 274 | TYPEDEF_HIDES_STRUCT = NO 275 | 276 | # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 277 | # determine which symbols to keep in memory and which to flush to disk. 278 | # When the cache is full, less often used symbols will be written to disk. 279 | # For small to medium size projects (<1000 input files) the default value is 280 | # probably good enough. For larger projects a too small cache size can cause 281 | # doxygen to be busy swapping symbols to and from disk most of the time 282 | # causing a significant performance penality. 283 | # If the system has enough physical memory increasing the cache will improve the 284 | # performance by keeping more symbols in memory. Note that the value works on 285 | # a logarithmic scale so increasing the size by one will rougly double the 286 | # memory usage. The cache size is given by this formula: 287 | # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 288 | # corresponding to a cache size of 2^16 = 65536 symbols 289 | 290 | SYMBOL_CACHE_SIZE = 0 291 | 292 | #--------------------------------------------------------------------------- 293 | # Build related configuration options 294 | #--------------------------------------------------------------------------- 295 | 296 | # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 297 | # documentation are documented, even if no documentation was available. 298 | # Private class members and static file members will be hidden unless 299 | # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES 300 | 301 | EXTRACT_ALL = NO 302 | 303 | # If the EXTRACT_PRIVATE tag is set to YES all private members of a class 304 | # will be included in the documentation. 305 | 306 | EXTRACT_PRIVATE = NO 307 | 308 | # If the EXTRACT_STATIC tag is set to YES all static members of a file 309 | # will be included in the documentation. 310 | 311 | EXTRACT_STATIC = NO 312 | 313 | # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 314 | # defined locally in source files will be included in the documentation. 315 | # If set to NO only classes defined in header files are included. 316 | 317 | EXTRACT_LOCAL_CLASSES = YES 318 | 319 | # This flag is only useful for Objective-C code. When set to YES local 320 | # methods, which are defined in the implementation section but not in 321 | # the interface are included in the documentation. 322 | # If set to NO (the default) only methods in the interface are included. 323 | 324 | EXTRACT_LOCAL_METHODS = NO 325 | 326 | # If this flag is set to YES, the members of anonymous namespaces will be 327 | # extracted and appear in the documentation as a namespace called 328 | # 'anonymous_namespace{file}', where file will be replaced with the base 329 | # name of the file that contains the anonymous namespace. By default 330 | # anonymous namespaces are hidden. 331 | 332 | EXTRACT_ANON_NSPACES = NO 333 | 334 | # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 335 | # undocumented members of documented classes, files or namespaces. 336 | # If set to NO (the default) these members will be included in the 337 | # various overviews, but no documentation section is generated. 338 | # This option has no effect if EXTRACT_ALL is enabled. 339 | 340 | HIDE_UNDOC_MEMBERS = NO 341 | 342 | # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 343 | # undocumented classes that are normally visible in the class hierarchy. 344 | # If set to NO (the default) these classes will be included in the various 345 | # overviews. This option has no effect if EXTRACT_ALL is enabled. 346 | 347 | HIDE_UNDOC_CLASSES = NO 348 | 349 | # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 350 | # friend (class|struct|union) declarations. 351 | # If set to NO (the default) these declarations will be included in the 352 | # documentation. 353 | 354 | HIDE_FRIEND_COMPOUNDS = NO 355 | 356 | # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 357 | # documentation blocks found inside the body of a function. 358 | # If set to NO (the default) these blocks will be appended to the 359 | # function's detailed documentation block. 360 | 361 | HIDE_IN_BODY_DOCS = NO 362 | 363 | # The INTERNAL_DOCS tag determines if documentation 364 | # that is typed after a \internal command is included. If the tag is set 365 | # to NO (the default) then the documentation will be excluded. 366 | # Set it to YES to include the internal documentation. 367 | 368 | INTERNAL_DOCS = NO 369 | 370 | # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 371 | # file names in lower-case letters. If set to YES upper-case letters are also 372 | # allowed. This is useful if you have classes or files whose names only differ 373 | # in case and if your file system supports case sensitive file names. Windows 374 | # and Mac users are advised to set this option to NO. 375 | 376 | CASE_SENSE_NAMES = YES 377 | 378 | # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 379 | # will show members with their full class and namespace scopes in the 380 | # documentation. If set to YES the scope will be hidden. 381 | 382 | HIDE_SCOPE_NAMES = NO 383 | 384 | # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 385 | # will put a list of the files that are included by a file in the documentation 386 | # of that file. 387 | 388 | SHOW_INCLUDE_FILES = YES 389 | 390 | # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen 391 | # will list include files with double quotes in the documentation 392 | # rather than with sharp brackets. 393 | 394 | FORCE_LOCAL_INCLUDES = NO 395 | 396 | # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 397 | # is inserted in the documentation for inline members. 398 | 399 | INLINE_INFO = YES 400 | 401 | # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 402 | # will sort the (detailed) documentation of file and class members 403 | # alphabetically by member name. If set to NO the members will appear in 404 | # declaration order. 405 | 406 | SORT_MEMBER_DOCS = YES 407 | 408 | # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 409 | # brief documentation of file, namespace and class members alphabetically 410 | # by member name. If set to NO (the default) the members will appear in 411 | # declaration order. 412 | 413 | SORT_BRIEF_DOCS = NO 414 | 415 | # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen 416 | # will sort the (brief and detailed) documentation of class members so that 417 | # constructors and destructors are listed first. If set to NO (the default) 418 | # the constructors will appear in the respective orders defined by 419 | # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. 420 | # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO 421 | # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. 422 | 423 | SORT_MEMBERS_CTORS_1ST = NO 424 | 425 | # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 426 | # hierarchy of group names into alphabetical order. If set to NO (the default) 427 | # the group names will appear in their defined order. 428 | 429 | SORT_GROUP_NAMES = NO 430 | 431 | # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 432 | # sorted by fully-qualified names, including namespaces. If set to 433 | # NO (the default), the class list will be sorted only by class name, 434 | # not including the namespace part. 435 | # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 436 | # Note: This option applies only to the class list, not to the 437 | # alphabetical list. 438 | 439 | SORT_BY_SCOPE_NAME = NO 440 | 441 | # The GENERATE_TODOLIST tag can be used to enable (YES) or 442 | # disable (NO) the todo list. This list is created by putting \todo 443 | # commands in the documentation. 444 | 445 | GENERATE_TODOLIST = YES 446 | 447 | # The GENERATE_TESTLIST tag can be used to enable (YES) or 448 | # disable (NO) the test list. This list is created by putting \test 449 | # commands in the documentation. 450 | 451 | GENERATE_TESTLIST = YES 452 | 453 | # The GENERATE_BUGLIST tag can be used to enable (YES) or 454 | # disable (NO) the bug list. This list is created by putting \bug 455 | # commands in the documentation. 456 | 457 | GENERATE_BUGLIST = YES 458 | 459 | # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 460 | # disable (NO) the deprecated list. This list is created by putting 461 | # \deprecated commands in the documentation. 462 | 463 | GENERATE_DEPRECATEDLIST= YES 464 | 465 | # The ENABLED_SECTIONS tag can be used to enable conditional 466 | # documentation sections, marked by \if sectionname ... \endif. 467 | 468 | ENABLED_SECTIONS = 469 | 470 | # The MAX_INITIALIZER_LINES tag determines the maximum number of lines 471 | # the initial value of a variable or macro consists of for it to appear in 472 | # the documentation. If the initializer consists of more lines than specified 473 | # here it will be hidden. Use a value of 0 to hide initializers completely. 474 | # The appearance of the initializer of individual variables and macros in the 475 | # documentation can be controlled using \showinitializer or \hideinitializer 476 | # command in the documentation regardless of this setting. 477 | 478 | MAX_INITIALIZER_LINES = 30 479 | 480 | # Set the SHOW_USED_FILES tag to NO to disable the list of files generated 481 | # at the bottom of the documentation of classes and structs. If set to YES the 482 | # list will mention the files that were used to generate the documentation. 483 | 484 | SHOW_USED_FILES = YES 485 | 486 | # If the sources in your project are distributed over multiple directories 487 | # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 488 | # in the documentation. The default is NO. 489 | 490 | SHOW_DIRECTORIES = NO 491 | 492 | # Set the SHOW_FILES tag to NO to disable the generation of the Files page. 493 | # This will remove the Files entry from the Quick Index and from the 494 | # Folder Tree View (if specified). The default is YES. 495 | 496 | SHOW_FILES = YES 497 | 498 | # Set the SHOW_NAMESPACES tag to NO to disable the generation of the 499 | # Namespaces page. 500 | # This will remove the Namespaces entry from the Quick Index 501 | # and from the Folder Tree View (if specified). The default is YES. 502 | 503 | SHOW_NAMESPACES = YES 504 | 505 | # The FILE_VERSION_FILTER tag can be used to specify a program or script that 506 | # doxygen should invoke to get the current version for each file (typically from 507 | # the version control system). Doxygen will invoke the program by executing (via 508 | # popen()) the command , where is the value of 509 | # the FILE_VERSION_FILTER tag, and is the name of an input file 510 | # provided by doxygen. Whatever the program writes to standard output 511 | # is used as the file version. See the manual for examples. 512 | 513 | FILE_VERSION_FILTER = 514 | 515 | # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed 516 | # by doxygen. The layout file controls the global structure of the generated 517 | # output files in an output format independent way. The create the layout file 518 | # that represents doxygen's defaults, run doxygen with the -l option. 519 | # You can optionally specify a file name after the option, if omitted 520 | # DoxygenLayout.xml will be used as the name of the layout file. 521 | 522 | LAYOUT_FILE = 523 | 524 | #--------------------------------------------------------------------------- 525 | # configuration options related to warning and progress messages 526 | #--------------------------------------------------------------------------- 527 | 528 | # The QUIET tag can be used to turn on/off the messages that are generated 529 | # by doxygen. Possible values are YES and NO. If left blank NO is used. 530 | 531 | QUIET = NO 532 | 533 | # The WARNINGS tag can be used to turn on/off the warning messages that are 534 | # generated by doxygen. Possible values are YES and NO. If left blank 535 | # NO is used. 536 | 537 | WARNINGS = YES 538 | 539 | # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 540 | # for undocumented members. If EXTRACT_ALL is set to YES then this flag will 541 | # automatically be disabled. 542 | 543 | WARN_IF_UNDOCUMENTED = YES 544 | 545 | # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 546 | # potential errors in the documentation, such as not documenting some 547 | # parameters in a documented function, or documenting parameters that 548 | # don't exist or using markup commands wrongly. 549 | 550 | WARN_IF_DOC_ERROR = YES 551 | 552 | # The WARN_NO_PARAMDOC option can be abled to get warnings for 553 | # functions that are documented, but have no documentation for their parameters 554 | # or return value. If set to NO (the default) doxygen will only warn about 555 | # wrong or incomplete parameter documentation, but not about the absence of 556 | # documentation. 557 | 558 | WARN_NO_PARAMDOC = NO 559 | 560 | # The WARN_FORMAT tag determines the format of the warning messages that 561 | # doxygen can produce. The string should contain the $file, $line, and $text 562 | # tags, which will be replaced by the file and line number from which the 563 | # warning originated and the warning text. Optionally the format may contain 564 | # $version, which will be replaced by the version of the file (if it could 565 | # be obtained via FILE_VERSION_FILTER) 566 | 567 | WARN_FORMAT = "$file:$line: $text" 568 | 569 | # The WARN_LOGFILE tag can be used to specify a file to which warning 570 | # and error messages should be written. If left blank the output is written 571 | # to stderr. 572 | 573 | WARN_LOGFILE = 574 | 575 | #--------------------------------------------------------------------------- 576 | # configuration options related to the input files 577 | #--------------------------------------------------------------------------- 578 | 579 | # The INPUT tag can be used to specify the files and/or directories that contain 580 | # documented source files. You may enter file names like "myfile.cpp" or 581 | # directories like "/usr/src/myproject". Separate the files or directories 582 | # with spaces. 583 | 584 | INPUT = dox/ include/ samples/ 585 | 586 | # This tag can be used to specify the character encoding of the source files 587 | # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 588 | # also the default input encoding. Doxygen uses libiconv (or the iconv built 589 | # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 590 | # the list of possible encodings. 591 | 592 | INPUT_ENCODING = CP932 593 | 594 | # If the value of the INPUT tag contains directories, you can use the 595 | # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 596 | # and *.h) to filter out the source-files in the directories. If left 597 | # blank the following patterns are tested: 598 | # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 599 | # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 600 | 601 | FILE_PATTERNS = *.dox */include/*.h *.c 602 | 603 | # The RECURSIVE tag can be used to turn specify whether or not subdirectories 604 | # should be searched for input files as well. Possible values are YES and NO. 605 | # If left blank NO is used. 606 | 607 | RECURSIVE = NO 608 | 609 | # The EXCLUDE tag can be used to specify files and/or directories that should 610 | # excluded from the INPUT source files. This way you can easily exclude a 611 | # subdirectory from a directory tree whose root is specified with the INPUT tag. 612 | 613 | EXCLUDE = 614 | 615 | # The EXCLUDE_SYMLINKS tag can be used select whether or not files or 616 | # directories that are symbolic links (a Unix filesystem feature) are excluded 617 | # from the input. 618 | 619 | EXCLUDE_SYMLINKS = NO 620 | 621 | # If the value of the INPUT tag contains directories, you can use the 622 | # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 623 | # certain files from those directories. Note that the wildcards are matched 624 | # against the file with absolute path, so to exclude all test directories 625 | # for example use the pattern */test/* 626 | 627 | EXCLUDE_PATTERNS = */dox/*.c 628 | 629 | # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 630 | # (namespaces, classes, functions, etc.) that should be excluded from the 631 | # output. The symbol name can be a fully qualified name, a word, or if the 632 | # wildcard * is used, a substring. Examples: ANamespace, AClass, 633 | # AClass::ANamespace, ANamespace::*Test 634 | 635 | EXCLUDE_SYMBOLS = 636 | 637 | # The EXAMPLE_PATH tag can be used to specify one or more files or 638 | # directories that contain example code fragments that are included (see 639 | # the \include command). 640 | 641 | EXAMPLE_PATH = samples/ dox/ 642 | 643 | # If the value of the EXAMPLE_PATH tag contains directories, you can use the 644 | # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 645 | # and *.h) to filter out the source-files in the directories. If left 646 | # blank all files are included. 647 | 648 | EXAMPLE_PATTERNS = 649 | 650 | # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 651 | # searched for input files to be used with the \include or \dontinclude 652 | # commands irrespective of the value of the RECURSIVE tag. 653 | # Possible values are YES and NO. If left blank NO is used. 654 | 655 | EXAMPLE_RECURSIVE = NO 656 | 657 | # The IMAGE_PATH tag can be used to specify one or more files or 658 | # directories that contain image that are included in the documentation (see 659 | # the \image command). 660 | 661 | IMAGE_PATH = dox/ 662 | 663 | # The INPUT_FILTER tag can be used to specify a program that doxygen should 664 | # invoke to filter for each input file. Doxygen will invoke the filter program 665 | # by executing (via popen()) the command , where 666 | # is the value of the INPUT_FILTER tag, and is the name of an 667 | # input file. Doxygen will then use the output that the filter program writes 668 | # to standard output. 669 | # If FILTER_PATTERNS is specified, this tag will be 670 | # ignored. 671 | 672 | INPUT_FILTER = 673 | 674 | # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 675 | # basis. 676 | # Doxygen will compare the file name with each pattern and apply the 677 | # filter if there is a match. 678 | # The filters are a list of the form: 679 | # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 680 | # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 681 | # is applied to all files. 682 | 683 | FILTER_PATTERNS = 684 | 685 | # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 686 | # INPUT_FILTER) will be used to filter the input files when producing source 687 | # files to browse (i.e. when SOURCE_BROWSER is set to YES). 688 | 689 | FILTER_SOURCE_FILES = NO 690 | 691 | #--------------------------------------------------------------------------- 692 | # configuration options related to source browsing 693 | #--------------------------------------------------------------------------- 694 | 695 | # If the SOURCE_BROWSER tag is set to YES then a list of source files will 696 | # be generated. Documented entities will be cross-referenced with these sources. 697 | # Note: To get rid of all source code in the generated output, make sure also 698 | # VERBATIM_HEADERS is set to NO. 699 | 700 | SOURCE_BROWSER = NO 701 | 702 | # Setting the INLINE_SOURCES tag to YES will include the body 703 | # of functions and classes directly in the documentation. 704 | 705 | INLINE_SOURCES = NO 706 | 707 | # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 708 | # doxygen to hide any special comment blocks from generated source code 709 | # fragments. Normal C and C++ comments will always remain visible. 710 | 711 | STRIP_CODE_COMMENTS = YES 712 | 713 | # If the REFERENCED_BY_RELATION tag is set to YES 714 | # then for each documented function all documented 715 | # functions referencing it will be listed. 716 | 717 | REFERENCED_BY_RELATION = NO 718 | 719 | # If the REFERENCES_RELATION tag is set to YES 720 | # then for each documented function all documented entities 721 | # called/used by that function will be listed. 722 | 723 | REFERENCES_RELATION = NO 724 | 725 | # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 726 | # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 727 | # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 728 | # link to the source code. 729 | # Otherwise they will link to the documentation. 730 | 731 | REFERENCES_LINK_SOURCE = YES 732 | 733 | # If the USE_HTAGS tag is set to YES then the references to source code 734 | # will point to the HTML generated by the htags(1) tool instead of doxygen 735 | # built-in source browser. The htags tool is part of GNU's global source 736 | # tagging system (see http://www.gnu.org/software/global/global.html). You 737 | # will need version 4.8.6 or higher. 738 | 739 | USE_HTAGS = NO 740 | 741 | # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 742 | # will generate a verbatim copy of the header file for each class for 743 | # which an include is specified. Set to NO to disable this. 744 | 745 | VERBATIM_HEADERS = YES 746 | 747 | #--------------------------------------------------------------------------- 748 | # configuration options related to the alphabetical class index 749 | #--------------------------------------------------------------------------- 750 | 751 | # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 752 | # of all compounds will be generated. Enable this if the project 753 | # contains a lot of classes, structs, unions or interfaces. 754 | 755 | ALPHABETICAL_INDEX = YES 756 | 757 | # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 758 | # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 759 | # in which this list will be split (can be a number in the range [1..20]) 760 | 761 | COLS_IN_ALPHA_INDEX = 5 762 | 763 | # In case all classes in a project start with a common prefix, all 764 | # classes will be put under the same header in the alphabetical index. 765 | # The IGNORE_PREFIX tag can be used to specify one or more prefixes that 766 | # should be ignored while generating the index headers. 767 | 768 | IGNORE_PREFIX = 769 | 770 | #--------------------------------------------------------------------------- 771 | # configuration options related to the HTML output 772 | #--------------------------------------------------------------------------- 773 | 774 | # If the GENERATE_HTML tag is set to YES (the default) Doxygen will 775 | # generate HTML output. 776 | 777 | GENERATE_HTML = YES 778 | 779 | # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 780 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 781 | # put in front of it. If left blank `html' will be used as the default path. 782 | 783 | HTML_OUTPUT = html 784 | 785 | # The HTML_FILE_EXTENSION tag can be used to specify the file extension for 786 | # each generated HTML page (for example: .htm,.php,.asp). If it is left blank 787 | # doxygen will generate files with .html extension. 788 | 789 | HTML_FILE_EXTENSION = .html 790 | 791 | # The HTML_HEADER tag can be used to specify a personal HTML header for 792 | # each generated HTML page. If it is left blank doxygen will generate a 793 | # standard header. 794 | 795 | HTML_HEADER = 796 | 797 | # The HTML_FOOTER tag can be used to specify a personal HTML footer for 798 | # each generated HTML page. If it is left blank doxygen will generate a 799 | # standard footer. 800 | 801 | HTML_FOOTER = 802 | 803 | # The HTML_STYLESHEET tag can be used to specify a user-defined cascading 804 | # style sheet that is used by each HTML page. It can be used to 805 | # fine-tune the look of the HTML output. If the tag is left blank doxygen 806 | # will generate a default style sheet. Note that doxygen will try to copy 807 | # the style sheet file to the HTML output directory, so don't put your own 808 | # stylesheet in the HTML output directory as well, or it will be erased! 809 | 810 | HTML_STYLESHEET = dox/doxygen_stylesheet.css 811 | 812 | # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. 813 | # Doxygen will adjust the colors in the stylesheet and background images 814 | # according to this color. Hue is specified as an angle on a colorwheel, 815 | # see http://en.wikipedia.org/wiki/Hue for more information. 816 | # For instance the value 0 represents red, 60 is yellow, 120 is green, 817 | # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. 818 | # The allowed range is 0 to 359. 819 | 820 | HTML_COLORSTYLE_HUE = 220 821 | 822 | # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of 823 | # the colors in the HTML output. For a value of 0 the output will use 824 | # grayscales only. A value of 255 will produce the most vivid colors. 825 | 826 | HTML_COLORSTYLE_SAT = 100 827 | 828 | # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to 829 | # the luminance component of the colors in the HTML output. Values below 830 | # 100 gradually make the output lighter, whereas values above 100 make 831 | # the output darker. The value divided by 100 is the actual gamma applied, 832 | # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, 833 | # and 100 does not change the gamma. 834 | 835 | HTML_COLORSTYLE_GAMMA = 80 836 | 837 | # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML 838 | # page will contain the date and time when the page was generated. Setting 839 | # this to NO can help when comparing the output of multiple runs. 840 | 841 | HTML_TIMESTAMP = YES 842 | 843 | # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 844 | # files or namespaces will be aligned in HTML using tables. If set to 845 | # NO a bullet list will be used. 846 | 847 | HTML_ALIGN_MEMBERS = YES 848 | 849 | # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 850 | # documentation will contain sections that can be hidden and shown after the 851 | # page has loaded. For this to work a browser that supports 852 | # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 853 | # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). 854 | 855 | HTML_DYNAMIC_SECTIONS = NO 856 | 857 | # If the GENERATE_DOCSET tag is set to YES, additional index files 858 | # will be generated that can be used as input for Apple's Xcode 3 859 | # integrated development environment, introduced with OSX 10.5 (Leopard). 860 | # To create a documentation set, doxygen will generate a Makefile in the 861 | # HTML output directory. Running make will produce the docset in that 862 | # directory and running "make install" will install the docset in 863 | # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 864 | # it at startup. 865 | # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html 866 | # for more information. 867 | 868 | GENERATE_DOCSET = NO 869 | 870 | # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 871 | # feed. A documentation feed provides an umbrella under which multiple 872 | # documentation sets from a single provider (such as a company or product suite) 873 | # can be grouped. 874 | 875 | DOCSET_FEEDNAME = "Doxygen generated docs" 876 | 877 | # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 878 | # should uniquely identify the documentation set bundle. This should be a 879 | # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 880 | # will append .docset to the name. 881 | 882 | DOCSET_BUNDLE_ID = org.doxygen.Project 883 | 884 | # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify 885 | # the documentation publisher. This should be a reverse domain-name style 886 | # string, e.g. com.mycompany.MyDocSet.documentation. 887 | 888 | DOCSET_PUBLISHER_ID = org.doxygen.Publisher 889 | 890 | # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. 891 | 892 | DOCSET_PUBLISHER_NAME = Publisher 893 | 894 | # If the GENERATE_HTMLHELP tag is set to YES, additional index files 895 | # will be generated that can be used as input for tools like the 896 | # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 897 | # of the generated HTML documentation. 898 | 899 | GENERATE_HTMLHELP = NO 900 | 901 | # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 902 | # be used to specify the file name of the resulting .chm file. You 903 | # can add a path in front of the file if the result should not be 904 | # written to the html output directory. 905 | 906 | CHM_FILE = 907 | 908 | # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 909 | # be used to specify the location (absolute path including file name) of 910 | # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 911 | # the HTML help compiler on the generated index.hhp. 912 | 913 | HHC_LOCATION = 914 | 915 | # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 916 | # controls if a separate .chi index file is generated (YES) or that 917 | # it should be included in the master .chm file (NO). 918 | 919 | GENERATE_CHI = NO 920 | 921 | # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 922 | # is used to encode HtmlHelp index (hhk), content (hhc) and project file 923 | # content. 924 | 925 | CHM_INDEX_ENCODING = 926 | 927 | # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 928 | # controls whether a binary table of contents is generated (YES) or a 929 | # normal table of contents (NO) in the .chm file. 930 | 931 | BINARY_TOC = NO 932 | 933 | # The TOC_EXPAND flag can be set to YES to add extra items for group members 934 | # to the contents of the HTML help documentation and to the tree view. 935 | 936 | TOC_EXPAND = NO 937 | 938 | # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 939 | # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated 940 | # that can be used as input for Qt's qhelpgenerator to generate a 941 | # Qt Compressed Help (.qch) of the generated HTML documentation. 942 | 943 | GENERATE_QHP = NO 944 | 945 | # If the QHG_LOCATION tag is specified, the QCH_FILE tag can 946 | # be used to specify the file name of the resulting .qch file. 947 | # The path specified is relative to the HTML output folder. 948 | 949 | QCH_FILE = 950 | 951 | # The QHP_NAMESPACE tag specifies the namespace to use when generating 952 | # Qt Help Project output. For more information please see 953 | # http://doc.trolltech.com/qthelpproject.html#namespace 954 | 955 | QHP_NAMESPACE = org.doxygen.Project 956 | 957 | # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 958 | # Qt Help Project output. For more information please see 959 | # http://doc.trolltech.com/qthelpproject.html#virtual-folders 960 | 961 | QHP_VIRTUAL_FOLDER = doc 962 | 963 | # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to 964 | # add. For more information please see 965 | # http://doc.trolltech.com/qthelpproject.html#custom-filters 966 | 967 | QHP_CUST_FILTER_NAME = 968 | 969 | # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the 970 | # custom filter to add. For more information please see 971 | # 972 | # Qt Help Project / Custom Filters. 973 | 974 | QHP_CUST_FILTER_ATTRS = 975 | 976 | # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 977 | # project's 978 | # filter section matches. 979 | # 980 | # Qt Help Project / Filter Attributes. 981 | 982 | QHP_SECT_FILTER_ATTRS = 983 | 984 | # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 985 | # be used to specify the location of Qt's qhelpgenerator. 986 | # If non-empty doxygen will try to run qhelpgenerator on the generated 987 | # .qhp file. 988 | 989 | QHG_LOCATION = 990 | 991 | # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files 992 | # will be generated, which together with the HTML files, form an Eclipse help 993 | # plugin. To install this plugin and make it available under the help contents 994 | # menu in Eclipse, the contents of the directory containing the HTML and XML 995 | # files needs to be copied into the plugins directory of eclipse. The name of 996 | # the directory within the plugins directory should be the same as 997 | # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before 998 | # the help appears. 999 | 1000 | GENERATE_ECLIPSEHELP = NO 1001 | 1002 | # A unique identifier for the eclipse help plugin. When installing the plugin 1003 | # the directory name containing the HTML and XML files should also have 1004 | # this name. 1005 | 1006 | ECLIPSE_DOC_ID = org.doxygen.Project 1007 | 1008 | # The DISABLE_INDEX tag can be used to turn on/off the condensed index at 1009 | # top of each HTML page. The value NO (the default) enables the index and 1010 | # the value YES disables it. 1011 | 1012 | DISABLE_INDEX = NO 1013 | 1014 | # This tag can be used to set the number of enum values (range [1..20]) 1015 | # that doxygen will group on one line in the generated HTML documentation. 1016 | 1017 | ENUM_VALUES_PER_LINE = 4 1018 | 1019 | # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 1020 | # structure should be generated to display hierarchical information. 1021 | # If the tag value is set to YES, a side panel will be generated 1022 | # containing a tree-like index structure (just like the one that 1023 | # is generated for HTML Help). For this to work a browser that supports 1024 | # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). 1025 | # Windows users are probably better off using the HTML help feature. 1026 | 1027 | GENERATE_TREEVIEW = NO 1028 | 1029 | # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, 1030 | # and Class Hierarchy pages using a tree view instead of an ordered list. 1031 | 1032 | USE_INLINE_TREES = NO 1033 | 1034 | # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 1035 | # used to set the initial width (in pixels) of the frame in which the tree 1036 | # is shown. 1037 | 1038 | TREEVIEW_WIDTH = 250 1039 | 1040 | # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open 1041 | # links to external symbols imported via tag files in a separate window. 1042 | 1043 | EXT_LINKS_IN_WINDOW = NO 1044 | 1045 | # Use this tag to change the font size of Latex formulas included 1046 | # as images in the HTML documentation. The default is 10. Note that 1047 | # when you change the font size after a successful doxygen run you need 1048 | # to manually remove any form_*.png images from the HTML output directory 1049 | # to force them to be regenerated. 1050 | 1051 | FORMULA_FONTSIZE = 10 1052 | 1053 | # Use the FORMULA_TRANPARENT tag to determine whether or not the images 1054 | # generated for formulas are transparent PNGs. Transparent PNGs are 1055 | # not supported properly for IE 6.0, but are supported on all modern browsers. 1056 | # Note that when changing this option you need to delete any form_*.png files 1057 | # in the HTML output before the changes have effect. 1058 | 1059 | FORMULA_TRANSPARENT = YES 1060 | 1061 | # When the SEARCHENGINE tag is enabled doxygen will generate a search box 1062 | # for the HTML output. The underlying search engine uses javascript 1063 | # and DHTML and should work on any modern browser. Note that when using 1064 | # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets 1065 | # (GENERATE_DOCSET) there is already a search function so this one should 1066 | # typically be disabled. For large projects the javascript based search engine 1067 | # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. 1068 | 1069 | SEARCHENGINE = YES 1070 | 1071 | # When the SERVER_BASED_SEARCH tag is enabled the search engine will be 1072 | # implemented using a PHP enabled web server instead of at the web client 1073 | # using Javascript. Doxygen will generate the search PHP script and index 1074 | # file to put on the web server. The advantage of the server 1075 | # based approach is that it scales better to large projects and allows 1076 | # full text search. The disadvances is that it is more difficult to setup 1077 | # and does not have live searching capabilities. 1078 | 1079 | SERVER_BASED_SEARCH = NO 1080 | 1081 | #--------------------------------------------------------------------------- 1082 | # configuration options related to the LaTeX output 1083 | #--------------------------------------------------------------------------- 1084 | 1085 | # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 1086 | # generate Latex output. 1087 | 1088 | GENERATE_LATEX = NO 1089 | 1090 | # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 1091 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1092 | # put in front of it. If left blank `latex' will be used as the default path. 1093 | 1094 | LATEX_OUTPUT = latex 1095 | 1096 | # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 1097 | # invoked. If left blank `latex' will be used as the default command name. 1098 | # Note that when enabling USE_PDFLATEX this option is only used for 1099 | # generating bitmaps for formulas in the HTML output, but not in the 1100 | # Makefile that is written to the output directory. 1101 | 1102 | LATEX_CMD_NAME = latex 1103 | 1104 | # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 1105 | # generate index for LaTeX. If left blank `makeindex' will be used as the 1106 | # default command name. 1107 | 1108 | MAKEINDEX_CMD_NAME = makeindex 1109 | 1110 | # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 1111 | # LaTeX documents. This may be useful for small projects and may help to 1112 | # save some trees in general. 1113 | 1114 | COMPACT_LATEX = NO 1115 | 1116 | # The PAPER_TYPE tag can be used to set the paper type that is used 1117 | # by the printer. Possible values are: a4, a4wide, letter, legal and 1118 | # executive. If left blank a4wide will be used. 1119 | 1120 | PAPER_TYPE = a4wide 1121 | 1122 | # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 1123 | # packages that should be included in the LaTeX output. 1124 | 1125 | EXTRA_PACKAGES = 1126 | 1127 | # The LATEX_HEADER tag can be used to specify a personal LaTeX header for 1128 | # the generated latex document. The header should contain everything until 1129 | # the first chapter. If it is left blank doxygen will generate a 1130 | # standard header. Notice: only use this tag if you know what you are doing! 1131 | 1132 | LATEX_HEADER = 1133 | 1134 | # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 1135 | # is prepared for conversion to pdf (using ps2pdf). The pdf file will 1136 | # contain links (just like the HTML output) instead of page references 1137 | # This makes the output suitable for online browsing using a pdf viewer. 1138 | 1139 | PDF_HYPERLINKS = YES 1140 | 1141 | # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 1142 | # plain latex in the generated Makefile. Set this option to YES to get a 1143 | # higher quality PDF documentation. 1144 | 1145 | USE_PDFLATEX = YES 1146 | 1147 | # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 1148 | # command to the generated LaTeX files. This will instruct LaTeX to keep 1149 | # running if errors occur, instead of asking the user for help. 1150 | # This option is also used when generating formulas in HTML. 1151 | 1152 | LATEX_BATCHMODE = NO 1153 | 1154 | # If LATEX_HIDE_INDICES is set to YES then doxygen will not 1155 | # include the index chapters (such as File Index, Compound Index, etc.) 1156 | # in the output. 1157 | 1158 | LATEX_HIDE_INDICES = NO 1159 | 1160 | # If LATEX_SOURCE_CODE is set to YES then doxygen will include 1161 | # source code with syntax highlighting in the LaTeX output. 1162 | # Note that which sources are shown also depends on other settings 1163 | # such as SOURCE_BROWSER. 1164 | 1165 | LATEX_SOURCE_CODE = NO 1166 | 1167 | #--------------------------------------------------------------------------- 1168 | # configuration options related to the RTF output 1169 | #--------------------------------------------------------------------------- 1170 | 1171 | # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 1172 | # The RTF output is optimized for Word 97 and may not look very pretty with 1173 | # other RTF readers or editors. 1174 | 1175 | GENERATE_RTF = NO 1176 | 1177 | # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 1178 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1179 | # put in front of it. If left blank `rtf' will be used as the default path. 1180 | 1181 | RTF_OUTPUT = rtf 1182 | 1183 | # If the COMPACT_RTF tag is set to YES Doxygen generates more compact 1184 | # RTF documents. This may be useful for small projects and may help to 1185 | # save some trees in general. 1186 | 1187 | COMPACT_RTF = NO 1188 | 1189 | # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 1190 | # will contain hyperlink fields. The RTF file will 1191 | # contain links (just like the HTML output) instead of page references. 1192 | # This makes the output suitable for online browsing using WORD or other 1193 | # programs which support those fields. 1194 | # Note: wordpad (write) and others do not support links. 1195 | 1196 | RTF_HYPERLINKS = NO 1197 | 1198 | # Load stylesheet definitions from file. Syntax is similar to doxygen's 1199 | # config file, i.e. a series of assignments. You only have to provide 1200 | # replacements, missing definitions are set to their default value. 1201 | 1202 | RTF_STYLESHEET_FILE = 1203 | 1204 | # Set optional variables used in the generation of an rtf document. 1205 | # Syntax is similar to doxygen's config file. 1206 | 1207 | RTF_EXTENSIONS_FILE = 1208 | 1209 | #--------------------------------------------------------------------------- 1210 | # configuration options related to the man page output 1211 | #--------------------------------------------------------------------------- 1212 | 1213 | # If the GENERATE_MAN tag is set to YES (the default) Doxygen will 1214 | # generate man pages 1215 | 1216 | GENERATE_MAN = NO 1217 | 1218 | # The MAN_OUTPUT tag is used to specify where the man pages will be put. 1219 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1220 | # put in front of it. If left blank `man' will be used as the default path. 1221 | 1222 | MAN_OUTPUT = man 1223 | 1224 | # The MAN_EXTENSION tag determines the extension that is added to 1225 | # the generated man pages (default is the subroutine's section .3) 1226 | 1227 | MAN_EXTENSION = .3 1228 | 1229 | # If the MAN_LINKS tag is set to YES and Doxygen generates man output, 1230 | # then it will generate one additional man file for each entity 1231 | # documented in the real man page(s). These additional files 1232 | # only source the real man page, but without them the man command 1233 | # would be unable to find the correct page. The default is NO. 1234 | 1235 | MAN_LINKS = NO 1236 | 1237 | #--------------------------------------------------------------------------- 1238 | # configuration options related to the XML output 1239 | #--------------------------------------------------------------------------- 1240 | 1241 | # If the GENERATE_XML tag is set to YES Doxygen will 1242 | # generate an XML file that captures the structure of 1243 | # the code including all documentation. 1244 | 1245 | GENERATE_XML = NO 1246 | 1247 | # The XML_OUTPUT tag is used to specify where the XML pages will be put. 1248 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1249 | # put in front of it. If left blank `xml' will be used as the default path. 1250 | 1251 | XML_OUTPUT = xml 1252 | 1253 | # The XML_SCHEMA tag can be used to specify an XML schema, 1254 | # which can be used by a validating XML parser to check the 1255 | # syntax of the XML files. 1256 | 1257 | XML_SCHEMA = 1258 | 1259 | # The XML_DTD tag can be used to specify an XML DTD, 1260 | # which can be used by a validating XML parser to check the 1261 | # syntax of the XML files. 1262 | 1263 | XML_DTD = 1264 | 1265 | # If the XML_PROGRAMLISTING tag is set to YES Doxygen will 1266 | # dump the program listings (including syntax highlighting 1267 | # and cross-referencing information) to the XML output. Note that 1268 | # enabling this will significantly increase the size of the XML output. 1269 | 1270 | XML_PROGRAMLISTING = YES 1271 | 1272 | #--------------------------------------------------------------------------- 1273 | # configuration options for the AutoGen Definitions output 1274 | #--------------------------------------------------------------------------- 1275 | 1276 | # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 1277 | # generate an AutoGen Definitions (see autogen.sf.net) file 1278 | # that captures the structure of the code including all 1279 | # documentation. Note that this feature is still experimental 1280 | # and incomplete at the moment. 1281 | 1282 | GENERATE_AUTOGEN_DEF = NO 1283 | 1284 | #--------------------------------------------------------------------------- 1285 | # configuration options related to the Perl module output 1286 | #--------------------------------------------------------------------------- 1287 | 1288 | # If the GENERATE_PERLMOD tag is set to YES Doxygen will 1289 | # generate a Perl module file that captures the structure of 1290 | # the code including all documentation. Note that this 1291 | # feature is still experimental and incomplete at the 1292 | # moment. 1293 | 1294 | GENERATE_PERLMOD = NO 1295 | 1296 | # If the PERLMOD_LATEX tag is set to YES Doxygen will generate 1297 | # the necessary Makefile rules, Perl scripts and LaTeX code to be able 1298 | # to generate PDF and DVI output from the Perl module output. 1299 | 1300 | PERLMOD_LATEX = NO 1301 | 1302 | # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 1303 | # nicely formatted so it can be parsed by a human reader. 1304 | # This is useful 1305 | # if you want to understand what is going on. 1306 | # On the other hand, if this 1307 | # tag is set to NO the size of the Perl module output will be much smaller 1308 | # and Perl will parse it just the same. 1309 | 1310 | PERLMOD_PRETTY = YES 1311 | 1312 | # The names of the make variables in the generated doxyrules.make file 1313 | # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 1314 | # This is useful so different doxyrules.make files included by the same 1315 | # Makefile don't overwrite each other's variables. 1316 | 1317 | PERLMOD_MAKEVAR_PREFIX = 1318 | 1319 | #--------------------------------------------------------------------------- 1320 | # Configuration options related to the preprocessor 1321 | #--------------------------------------------------------------------------- 1322 | 1323 | # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 1324 | # evaluate all C-preprocessor directives found in the sources and include 1325 | # files. 1326 | 1327 | ENABLE_PREPROCESSING = YES 1328 | 1329 | # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 1330 | # names in the source code. If set to NO (the default) only conditional 1331 | # compilation will be performed. Macro expansion can be done in a controlled 1332 | # way by setting EXPAND_ONLY_PREDEF to YES. 1333 | 1334 | MACRO_EXPANSION = NO 1335 | 1336 | # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 1337 | # then the macro expansion is limited to the macros specified with the 1338 | # PREDEFINED and EXPAND_AS_DEFINED tags. 1339 | 1340 | EXPAND_ONLY_PREDEF = NO 1341 | 1342 | # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 1343 | # in the INCLUDE_PATH (see below) will be search if a #include is found. 1344 | 1345 | SEARCH_INCLUDES = YES 1346 | 1347 | # The INCLUDE_PATH tag can be used to specify one or more directories that 1348 | # contain include files that are not input files but should be processed by 1349 | # the preprocessor. 1350 | 1351 | INCLUDE_PATH = 1352 | 1353 | # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 1354 | # patterns (like *.h and *.hpp) to filter out the header-files in the 1355 | # directories. If left blank, the patterns specified with FILE_PATTERNS will 1356 | # be used. 1357 | 1358 | INCLUDE_FILE_PATTERNS = 1359 | 1360 | # The PREDEFINED tag can be used to specify one or more macro names that 1361 | # are defined before the preprocessor is started (similar to the -D option of 1362 | # gcc). The argument of the tag is a list of macros of the form: name 1363 | # or name=definition (no spaces). If the definition and the = are 1364 | # omitted =1 is assumed. To prevent a macro definition from being 1365 | # undefined via #undef or recursively expanded use the := operator 1366 | # instead of the = operator. 1367 | 1368 | PREDEFINED = 1369 | 1370 | # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 1371 | # this tag can be used to specify a list of macro names that should be expanded. 1372 | # The macro definition that is found in the sources will be used. 1373 | # Use the PREDEFINED tag if you want to use a different macro definition. 1374 | 1375 | EXPAND_AS_DEFINED = 1376 | 1377 | # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 1378 | # doxygen's preprocessor will remove all function-like macros that are alone 1379 | # on a line, have an all uppercase name, and do not end with a semicolon. Such 1380 | # function macros are typically used for boiler-plate code, and will confuse 1381 | # the parser if not removed. 1382 | 1383 | SKIP_FUNCTION_MACROS = YES 1384 | 1385 | #--------------------------------------------------------------------------- 1386 | # Configuration::additions related to external references 1387 | #--------------------------------------------------------------------------- 1388 | 1389 | # The TAGFILES option can be used to specify one or more tagfiles. 1390 | # Optionally an initial location of the external documentation 1391 | # can be added for each tagfile. The format of a tag file without 1392 | # this location is as follows: 1393 | # 1394 | # TAGFILES = file1 file2 ... 1395 | # Adding location for the tag files is done as follows: 1396 | # 1397 | # TAGFILES = file1=loc1 "file2 = loc2" ... 1398 | # where "loc1" and "loc2" can be relative or absolute paths or 1399 | # URLs. If a location is present for each tag, the installdox tool 1400 | # does not have to be run to correct the links. 1401 | # Note that each tag file must have a unique name 1402 | # (where the name does NOT include the path) 1403 | # If a tag file is not located in the directory in which doxygen 1404 | # is run, you must also specify the path to the tagfile here. 1405 | 1406 | TAGFILES = 1407 | 1408 | # When a file name is specified after GENERATE_TAGFILE, doxygen will create 1409 | # a tag file that is based on the input files it reads. 1410 | 1411 | GENERATE_TAGFILE = 1412 | 1413 | # If the ALLEXTERNALS tag is set to YES all external classes will be listed 1414 | # in the class index. If set to NO only the inherited external classes 1415 | # will be listed. 1416 | 1417 | ALLEXTERNALS = NO 1418 | 1419 | # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 1420 | # in the modules index. If set to NO, only the current project's groups will 1421 | # be listed. 1422 | 1423 | EXTERNAL_GROUPS = YES 1424 | 1425 | # The PERL_PATH should be the absolute path and name of the perl script 1426 | # interpreter (i.e. the result of `which perl'). 1427 | 1428 | PERL_PATH = /usr/bin/perl 1429 | 1430 | #--------------------------------------------------------------------------- 1431 | # Configuration options related to the dot tool 1432 | #--------------------------------------------------------------------------- 1433 | 1434 | # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 1435 | # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 1436 | # or super classes. Setting the tag to NO turns the diagrams off. Note that 1437 | # this option is superseded by the HAVE_DOT option below. This is only a 1438 | # fallback. It is recommended to install and use dot, since it yields more 1439 | # powerful graphs. 1440 | 1441 | CLASS_DIAGRAMS = YES 1442 | 1443 | # You can define message sequence charts within doxygen comments using the \msc 1444 | # command. Doxygen will then run the mscgen tool (see 1445 | # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 1446 | # documentation. The MSCGEN_PATH tag allows you to specify the directory where 1447 | # the mscgen tool resides. If left empty the tool is assumed to be found in the 1448 | # default search path. 1449 | 1450 | MSCGEN_PATH = 1451 | 1452 | # If set to YES, the inheritance and collaboration graphs will hide 1453 | # inheritance and usage relations if the target is undocumented 1454 | # or is not a class. 1455 | 1456 | HIDE_UNDOC_RELATIONS = YES 1457 | 1458 | # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 1459 | # available from the path. This tool is part of Graphviz, a graph visualization 1460 | # toolkit from AT&T and Lucent Bell Labs. The other options in this section 1461 | # have no effect if this option is set to NO (the default) 1462 | 1463 | HAVE_DOT = NO 1464 | 1465 | # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is 1466 | # allowed to run in parallel. When set to 0 (the default) doxygen will 1467 | # base this on the number of processors available in the system. You can set it 1468 | # explicitly to a value larger than 0 to get control over the balance 1469 | # between CPU load and processing speed. 1470 | 1471 | DOT_NUM_THREADS = 0 1472 | 1473 | # By default doxygen will write a font called FreeSans.ttf to the output 1474 | # directory and reference it in all dot files that doxygen generates. This 1475 | # font does not include all possible unicode characters however, so when you need 1476 | # these (or just want a differently looking font) you can specify the font name 1477 | # using DOT_FONTNAME. You need need to make sure dot is able to find the font, 1478 | # which can be done by putting it in a standard location or by setting the 1479 | # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 1480 | # containing the font. 1481 | 1482 | DOT_FONTNAME = FreeSans.ttf 1483 | 1484 | # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 1485 | # The default size is 10pt. 1486 | 1487 | DOT_FONTSIZE = 10 1488 | 1489 | # By default doxygen will tell dot to use the output directory to look for the 1490 | # FreeSans.ttf font (which doxygen will put there itself). If you specify a 1491 | # different font using DOT_FONTNAME you can set the path where dot 1492 | # can find it using this tag. 1493 | 1494 | DOT_FONTPATH = 1495 | 1496 | # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 1497 | # will generate a graph for each documented class showing the direct and 1498 | # indirect inheritance relations. Setting this tag to YES will force the 1499 | # the CLASS_DIAGRAMS tag to NO. 1500 | 1501 | CLASS_GRAPH = YES 1502 | 1503 | # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 1504 | # will generate a graph for each documented class showing the direct and 1505 | # indirect implementation dependencies (inheritance, containment, and 1506 | # class references variables) of the class with other documented classes. 1507 | 1508 | COLLABORATION_GRAPH = YES 1509 | 1510 | # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 1511 | # will generate a graph for groups, showing the direct groups dependencies 1512 | 1513 | GROUP_GRAPHS = YES 1514 | 1515 | # If the UML_LOOK tag is set to YES doxygen will generate inheritance and 1516 | # collaboration diagrams in a style similar to the OMG's Unified Modeling 1517 | # Language. 1518 | 1519 | UML_LOOK = NO 1520 | 1521 | # If set to YES, the inheritance and collaboration graphs will show the 1522 | # relations between templates and their instances. 1523 | 1524 | TEMPLATE_RELATIONS = NO 1525 | 1526 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 1527 | # tags are set to YES then doxygen will generate a graph for each documented 1528 | # file showing the direct and indirect include dependencies of the file with 1529 | # other documented files. 1530 | 1531 | INCLUDE_GRAPH = YES 1532 | 1533 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 1534 | # HAVE_DOT tags are set to YES then doxygen will generate a graph for each 1535 | # documented header file showing the documented files that directly or 1536 | # indirectly include this file. 1537 | 1538 | INCLUDED_BY_GRAPH = YES 1539 | 1540 | # If the CALL_GRAPH and HAVE_DOT options are set to YES then 1541 | # doxygen will generate a call dependency graph for every global function 1542 | # or class method. Note that enabling this option will significantly increase 1543 | # the time of a run. So in most cases it will be better to enable call graphs 1544 | # for selected functions only using the \callgraph command. 1545 | 1546 | CALL_GRAPH = NO 1547 | 1548 | # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 1549 | # doxygen will generate a caller dependency graph for every global function 1550 | # or class method. Note that enabling this option will significantly increase 1551 | # the time of a run. So in most cases it will be better to enable caller 1552 | # graphs for selected functions only using the \callergraph command. 1553 | 1554 | CALLER_GRAPH = NO 1555 | 1556 | # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 1557 | # will generate a graphical hierarchy of all classes instead of a textual one. 1558 | 1559 | GRAPHICAL_HIERARCHY = YES 1560 | 1561 | # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 1562 | # then doxygen will show the dependencies a directory has on other directories 1563 | # in a graphical way. The dependency relations are determined by the #include 1564 | # relations between the files in the directories. 1565 | 1566 | DIRECTORY_GRAPH = YES 1567 | 1568 | # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 1569 | # generated by dot. Possible values are png, jpg, or gif. 1570 | # If left blank png will be used. 1571 | 1572 | DOT_IMAGE_FORMAT = png 1573 | 1574 | # The tag DOT_PATH can be used to specify the path where the dot tool can be 1575 | # found. If left blank, it is assumed the dot tool can be found in the path. 1576 | 1577 | DOT_PATH = 1578 | 1579 | # The DOTFILE_DIRS tag can be used to specify one or more directories that 1580 | # contain dot files that are included in the documentation (see the 1581 | # \dotfile command). 1582 | 1583 | DOTFILE_DIRS = 1584 | 1585 | # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 1586 | # nodes that will be shown in the graph. If the number of nodes in a graph 1587 | # becomes larger than this value, doxygen will truncate the graph, which is 1588 | # visualized by representing a node as a red box. Note that doxygen if the 1589 | # number of direct children of the root node in a graph is already larger than 1590 | # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 1591 | # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. 1592 | 1593 | DOT_GRAPH_MAX_NODES = 50 1594 | 1595 | # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 1596 | # graphs generated by dot. A depth value of 3 means that only nodes reachable 1597 | # from the root by following a path via at most 3 edges will be shown. Nodes 1598 | # that lay further from the root node will be omitted. Note that setting this 1599 | # option to 1 or 2 may greatly reduce the computation time needed for large 1600 | # code bases. Also note that the size of a graph can be further restricted by 1601 | # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. 1602 | 1603 | MAX_DOT_GRAPH_DEPTH = 0 1604 | 1605 | # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 1606 | # background. This is disabled by default, because dot on Windows does not 1607 | # seem to support this out of the box. Warning: Depending on the platform used, 1608 | # enabling this option may lead to badly anti-aliased labels on the edges of 1609 | # a graph (i.e. they become hard to read). 1610 | 1611 | DOT_TRANSPARENT = NO 1612 | 1613 | # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 1614 | # files in one run (i.e. multiple -o and -T options on the command line). This 1615 | # makes dot run faster, but since only newer versions of dot (>1.8.10) 1616 | # support this, this feature is disabled by default. 1617 | 1618 | DOT_MULTI_TARGETS = NO 1619 | 1620 | # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 1621 | # generate a legend page explaining the meaning of the various boxes and 1622 | # arrows in the dot generated graphs. 1623 | 1624 | GENERATE_LEGEND = YES 1625 | 1626 | # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 1627 | # remove the intermediate dot files that are used to generate 1628 | # the various graphs. 1629 | 1630 | DOT_CLEANUP = YES 1631 | -------------------------------------------------------------------------------- /current/Install.txt: -------------------------------------------------------------------------------- 1 | Description for install. 2 | -------------------------------------------------------------------------------- /current/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for urgwidget 2 | 3 | OUTPUT_HTML_DIR = html 4 | OUTPUT_HTML_JA_DIR = html_ja 5 | 6 | all : 7 | cd src/ && $(MAKE) 8 | cd samples/ && $(MAKE) 9 | 10 | clean : 11 | $(RM) -rf html html_ja $(OUTPUT_HTML_DIR) $(OUTPUT_HTML_JA_DIR) 12 | cd src/ && $(MAKE) clean 13 | cd samples/ && $(MAKE) clean 14 | -cd viewers/ && $(MAKE) clean 15 | cd dox/ && $(MAKE) clean 16 | 17 | html : 18 | cd dox/ && $(MAKE) img 19 | doxygen Doxyfile_ja 20 | cp COPYRIGHT.txt $(OUTPUT_HTML_JA_DIR) 21 | doxygen Doxyfile 22 | cp COPYRIGHT.txt $(OUTPUT_HTML_DIR) 23 | 24 | .PHONY : all clean html 25 | ###################################################################### 26 | -------------------------------------------------------------------------------- /current/Makefile.release: -------------------------------------------------------------------------------- 1 | PREFIX = /usr/local 2 | #PREFIX = /mingw 3 | 4 | include build_rule.mk 5 | 6 | CONFIG_FILE = urg_c-config 7 | S_PREFIX = $(shell echo "$(PREFIX)" | sed "s/\//\\\\\\\\\//g") 8 | S_LIBS = $(shell if test x$(MSYSTEM) == x"MINGW32"; then echo "-lwsock32 -lsetupapi"; fi) 9 | all : $(CONFIG_FILE) 10 | cd src/ && $(MAKE) 11 | cd samples/ && $(MAKE) 12 | 13 | clean : 14 | $(RM) $(CONFIG_FILE) 15 | cd src/ && $(MAKE) clean 16 | cd samples/ && $(MAKE) clean 17 | 18 | install : all 19 | install -d $(PREFIX)/include/urg_c/ 20 | install -m 644 include/*.h $(PREFIX)/include/urg_c/ 21 | install -d $(PREFIX)/lib/ 22 | install -m 644 src/liburg_c.a $(PREFIX)/lib/ 23 | install -d $(PREFIX)/bin/ 24 | install -m 755 $(CONFIG_FILE) $(PREFIX)/bin/ 25 | 26 | $(CONFIG_FILE) : urg_c-config.in Makefile 27 | cat $(CONFIG_FILE).in | sed "s/PREFIX/$(S_PREFIX)/g" | sed "s/LIBS/$(S_LIBS)/g" > $(CONFIG_FILE) 28 | -------------------------------------------------------------------------------- /current/build_rule.mk: -------------------------------------------------------------------------------- 1 | ARCH = 2 | CC = $(ARCH)gcc 3 | CXX = $(ARCH)g++ 4 | AS = $(ARCH)as 5 | LD = $(ARCH)ld 6 | AR = $(ARCH)ar 7 | OBJ_COPY = $(ARCH)objcopy 8 | OBJ_DUMP = $(ARCH)objdump 9 | -------------------------------------------------------------------------------- /current/dox/Makefile: -------------------------------------------------------------------------------- 1 | # current/dox 2 | 3 | CFLAGS = -g -O0 -Wall -Werror -W `urg_c-config --cflags` 4 | LDFLAGS = 5 | LDLIBS = `urg_c-config --libs` -lm 6 | 7 | 8 | TARGET = \ 9 | connect_and_get \ 10 | connect_ethernet \ 11 | get_scans \ 12 | get_timestamp \ 13 | set_parameter \ 14 | convert_xy \ 15 | 16 | IMAGE_TARGET = \ 17 | multiecho_image.png \ 18 | sensor_angle_image.png \ 19 | sensor_index_image.png \ 20 | sensor_step_image.png \ 21 | skip_scan_image.png \ 22 | 23 | all : $(TARGET) img 24 | cd ../ && $(MAKE) html 25 | 26 | img : $(IMAGE_TARGET) 27 | 28 | clean : 29 | $(RM) $(TARGET) $(IMAGE_TARGET) 30 | 31 | .PHONY : all clean 32 | ###################################################################### 33 | .SUFFIXES: .png .svg 34 | .svg.png: 35 | convert $< $@ 36 | -------------------------------------------------------------------------------- /current/dox/connect_and_get.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/connect_and_get.c -------------------------------------------------------------------------------- /current/dox/connect_ethernet.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/connect_ethernet.c -------------------------------------------------------------------------------- /current/dox/convert_xy.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/convert_xy.c -------------------------------------------------------------------------------- /current/dox/doxygen_stylesheet.css: -------------------------------------------------------------------------------- 1 | /* The standard CSS for doxygen */ 2 | 3 | body, table, div, p, dl { 4 | font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; 5 | font-size: 12px; 6 | } 7 | 8 | /* @group Heading Levels */ 9 | 10 | h1 { 11 | font-size: 140%; 12 | } 13 | 14 | h2 { 15 | font-size: 130%; 16 | margin-top: 30px; 17 | } 18 | 19 | h3 { 20 | font-size: 120%; 21 | margin-top: 28px; 22 | } 23 | 24 | dt { 25 | font-weight: bold; 26 | } 27 | 28 | div.multicol { 29 | -moz-column-gap: 1em; 30 | -webkit-column-gap: 1em; 31 | -moz-column-count: 3; 32 | -webkit-column-count: 3; 33 | } 34 | 35 | p.startli, p.startdd, p.starttd { 36 | margin-top: 2px; 37 | } 38 | 39 | p.endli { 40 | margin-bottom: 0px; 41 | } 42 | 43 | p.enddd { 44 | margin-bottom: 4px; 45 | } 46 | 47 | p.endtd { 48 | margin-bottom: 2px; 49 | } 50 | 51 | /* @end */ 52 | 53 | caption { 54 | font-weight: bold; 55 | } 56 | 57 | span.legend { 58 | font-size: 70%; 59 | text-align: center; 60 | } 61 | 62 | h3.version { 63 | font-size: 90%; 64 | text-align: center; 65 | } 66 | 67 | div.qindex, div.navtab{ 68 | background-color: #EBEFF6; 69 | border: 1px solid #A3B4D7; 70 | text-align: center; 71 | margin: 2px; 72 | padding: 2px; 73 | } 74 | 75 | div.qindex, div.navpath { 76 | width: 100%; 77 | line-height: 140%; 78 | } 79 | 80 | div.navtab { 81 | margin-right: 15px; 82 | } 83 | 84 | /* @group Link Styling */ 85 | 86 | a { 87 | color: #3D578C; 88 | font-weight: normal; 89 | text-decoration: none; 90 | } 91 | 92 | .contents a:visited { 93 | color: #4665A2; 94 | } 95 | 96 | a:hover { 97 | text-decoration: underline; 98 | } 99 | 100 | a.qindex { 101 | font-weight: bold; 102 | } 103 | 104 | a.qindexHL { 105 | font-weight: bold; 106 | background-color: #9CAFD4; 107 | color: #ffffff; 108 | border: 1px double #869DCA; 109 | } 110 | 111 | .contents a.qindexHL:visited { 112 | color: #ffffff; 113 | } 114 | 115 | a.el { 116 | font-weight: bold; 117 | } 118 | 119 | a.elRef { 120 | } 121 | 122 | a.code { 123 | color: #4665A2; 124 | } 125 | 126 | a.codeRef { 127 | color: #4665A2; 128 | } 129 | 130 | /* @end */ 131 | 132 | dl.el { 133 | margin-left: -1cm; 134 | } 135 | 136 | .fragment { 137 | font-family: monospace, fixed; 138 | font-size: 105%; 139 | } 140 | 141 | pre.fragment { 142 | border: 1px solid #C4CFE5; 143 | background-color: #FBFCFD; 144 | padding: 4px 6px; 145 | margin: 4px 8px 4px 2px; 146 | overflow: auto; 147 | word-wrap: break-word; 148 | font-size: 9pt; 149 | line-height: 125%; 150 | } 151 | 152 | div.ah { 153 | background-color: black; 154 | font-weight: bold; 155 | color: #ffffff; 156 | margin-bottom: 3px; 157 | margin-top: 3px; 158 | padding: 0.2em; 159 | border: solid thin #333; 160 | border-radius: 0.5em; 161 | -webkit-border-radius: .5em; 162 | -moz-border-radius: .5em; 163 | box-shadow: 2px 2px 3px #999; 164 | -webkit-box-shadow: 2px 2px 3px #999; 165 | -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; 166 | background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); 167 | background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); 168 | } 169 | 170 | div.groupHeader { 171 | margin-left: 16px; 172 | margin-top: 12px; 173 | font-weight: bold; 174 | } 175 | 176 | div.groupText { 177 | margin-left: 16px; 178 | font-style: italic; 179 | } 180 | 181 | body { 182 | background: white; 183 | color: black; 184 | margin: 0; 185 | } 186 | 187 | div.contents { 188 | margin-top: 10px; 189 | margin-left: 10px; 190 | margin-right: 10px; 191 | } 192 | 193 | td.indexkey { 194 | background-color: #EBEFF6; 195 | font-weight: bold; 196 | border: 1px solid #C4CFE5; 197 | margin: 2px 0px 2px 0; 198 | padding: 2px 10px; 199 | } 200 | 201 | td.indexvalue { 202 | background-color: #EBEFF6; 203 | border: 1px solid #C4CFE5; 204 | padding: 2px 10px; 205 | margin: 2px 0px; 206 | } 207 | 208 | tr.memlist { 209 | background-color: #EEF1F7; 210 | } 211 | 212 | p.formulaDsp { 213 | text-align: center; 214 | } 215 | 216 | img.formulaDsp { 217 | 218 | } 219 | 220 | img.formulaInl { 221 | vertical-align: middle; 222 | } 223 | 224 | div.center { 225 | text-align: center; 226 | margin-top: 0px; 227 | margin-bottom: 0px; 228 | padding: 0px; 229 | } 230 | 231 | div.center img { 232 | border: 0px; 233 | } 234 | 235 | address.footer { 236 | text-align: right; 237 | padding-right: 12px; 238 | } 239 | 240 | img.footer { 241 | border: 0px; 242 | vertical-align: middle; 243 | } 244 | 245 | /* @group Code Colorization */ 246 | 247 | span.keyword { 248 | color: #008000 249 | } 250 | 251 | span.keywordtype { 252 | color: #604020 253 | } 254 | 255 | span.keywordflow { 256 | color: #e08000 257 | } 258 | 259 | span.comment { 260 | color: #800000 261 | } 262 | 263 | span.preprocessor { 264 | color: #806020 265 | } 266 | 267 | span.stringliteral { 268 | color: #002080 269 | } 270 | 271 | span.charliteral { 272 | color: #008080 273 | } 274 | 275 | span.vhdldigit { 276 | color: #ff00ff 277 | } 278 | 279 | span.vhdlchar { 280 | color: #000000 281 | } 282 | 283 | span.vhdlkeyword { 284 | color: #700070 285 | } 286 | 287 | span.vhdllogic { 288 | color: #ff0000 289 | } 290 | 291 | /* @end */ 292 | 293 | /* 294 | .search { 295 | color: #003399; 296 | font-weight: bold; 297 | } 298 | 299 | form.search { 300 | margin-bottom: 0px; 301 | margin-top: 0px; 302 | } 303 | 304 | input.search { 305 | font-size: 75%; 306 | color: #000080; 307 | font-weight: normal; 308 | background-color: #e8eef2; 309 | } 310 | */ 311 | 312 | td.tiny { 313 | font-size: 75%; 314 | } 315 | 316 | .dirtab { 317 | padding: 4px; 318 | border-collapse: collapse; 319 | border: 1px solid #A3B4D7; 320 | } 321 | 322 | th.dirtab { 323 | background: #EBEFF6; 324 | font-weight: bold; 325 | } 326 | 327 | hr { 328 | height: 0px; 329 | border: none; 330 | border-top: 1px solid #4A6AAA; 331 | } 332 | 333 | hr.footer { 334 | height: 1px; 335 | } 336 | 337 | /* @group Member Descriptions */ 338 | 339 | table.memberdecls { 340 | border-spacing: 0px; 341 | padding: 0px; 342 | } 343 | 344 | .mdescLeft, .mdescRight, 345 | .memItemLeft, .memItemRight, 346 | .memTemplItemLeft, .memTemplItemRight, .memTemplParams { 347 | background-color: #F9FAFC; 348 | border: none; 349 | margin: 4px; 350 | padding: 1px 0 0 8px; 351 | } 352 | 353 | .mdescLeft, .mdescRight { 354 | padding: 0px 8px 4px 8px; 355 | color: #555; 356 | } 357 | 358 | .memItemLeft, .memItemRight, .memTemplParams { 359 | border-top: 1px solid #C4CFE5; 360 | } 361 | 362 | .memItemLeft, .memTemplItemLeft { 363 | white-space: nowrap; 364 | } 365 | 366 | .memTemplParams { 367 | color: #4665A2; 368 | white-space: nowrap; 369 | } 370 | 371 | /* @end */ 372 | 373 | /* @group Member Details */ 374 | 375 | /* Styles for detailed member documentation */ 376 | 377 | .memtemplate { 378 | font-size: 80%; 379 | color: #4665A2; 380 | font-weight: normal; 381 | margin-left: 9px; 382 | } 383 | 384 | .memnav { 385 | background-color: #EBEFF6; 386 | border: 1px solid #A3B4D7; 387 | text-align: center; 388 | margin: 2px; 389 | margin-right: 15px; 390 | padding: 2px; 391 | } 392 | 393 | .memitem { 394 | padding: 0; 395 | margin-bottom: 10px; 396 | } 397 | 398 | .memname { 399 | white-space: nowrap; 400 | font-weight: bold; 401 | margin-left: 6px; 402 | } 403 | 404 | .memproto { 405 | border-top: 1px solid #A8B8D9; 406 | border-left: 1px solid #A8B8D9; 407 | border-right: 1px solid #A8B8D9; 408 | padding: 6px 0px 6px 0px; 409 | color: #253555; 410 | font-weight: bold; 411 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); 412 | /* opera specific markup */ 413 | box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 414 | border-top-right-radius: 8px; 415 | border-top-left-radius: 8px; 416 | /* firefox specific markup */ 417 | -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; 418 | -moz-border-radius-topright: 8px; 419 | -moz-border-radius-topleft: 8px; 420 | /* webkit specific markup */ 421 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 422 | -webkit-border-top-right-radius: 8px; 423 | -webkit-border-top-left-radius: 8px; 424 | background-image:url('nav_f.png'); 425 | background-repeat:repeat-x; 426 | background-color: #E2E8F2; 427 | 428 | } 429 | 430 | .memdoc { 431 | border-bottom: 1px solid #A8B8D9; 432 | border-left: 1px solid #A8B8D9; 433 | border-right: 1px solid #A8B8D9; 434 | padding: 2px 5px; 435 | background-color: #FBFCFD; 436 | border-top-width: 0; 437 | /* opera specific markup */ 438 | border-bottom-left-radius: 8px; 439 | border-bottom-right-radius: 8px; 440 | box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 441 | /* firefox specific markup */ 442 | -moz-border-radius-bottomleft: 8px; 443 | -moz-border-radius-bottomright: 8px; 444 | -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; 445 | background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); 446 | /* webkit specific markup */ 447 | -webkit-border-bottom-left-radius: 8px; 448 | -webkit-border-bottom-right-radius: 8px; 449 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 450 | background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); 451 | } 452 | 453 | .paramkey { 454 | text-align: right; 455 | } 456 | 457 | .paramtype { 458 | white-space: nowrap; 459 | } 460 | 461 | .paramname { 462 | color: #602020; 463 | white-space: nowrap; 464 | } 465 | .paramname em { 466 | font-style: normal; 467 | } 468 | 469 | .params, .retval, .exception, .tparams { 470 | border-spacing: 6px 2px; 471 | } 472 | 473 | .params .paramname, .retval .paramname { 474 | font-weight: bold; 475 | vertical-align: top; 476 | } 477 | 478 | .params .paramtype { 479 | font-style: italic; 480 | vertical-align: top; 481 | } 482 | 483 | .params .paramdir { 484 | font-family: "courier new",courier,monospace; 485 | vertical-align: top; 486 | } 487 | 488 | 489 | 490 | 491 | /* @end */ 492 | 493 | /* @group Directory (tree) */ 494 | 495 | /* for the tree view */ 496 | 497 | .ftvtree { 498 | font-family: sans-serif; 499 | margin: 0px; 500 | } 501 | 502 | /* these are for tree view when used as main index */ 503 | 504 | .directory { 505 | font-size: 9pt; 506 | font-weight: bold; 507 | margin: 5px; 508 | } 509 | 510 | .directory h3 { 511 | margin: 0px; 512 | margin-top: 1em; 513 | font-size: 11pt; 514 | } 515 | 516 | /* 517 | The following two styles can be used to replace the root node title 518 | with an image of your choice. Simply uncomment the next two styles, 519 | specify the name of your image and be sure to set 'height' to the 520 | proper pixel height of your image. 521 | */ 522 | 523 | /* 524 | .directory h3.swap { 525 | height: 61px; 526 | background-repeat: no-repeat; 527 | background-image: url("yourimage.gif"); 528 | } 529 | .directory h3.swap span { 530 | display: none; 531 | } 532 | */ 533 | 534 | .directory > h3 { 535 | margin-top: 0; 536 | } 537 | 538 | .directory p { 539 | margin: 0px; 540 | white-space: nowrap; 541 | } 542 | 543 | .directory div { 544 | display: none; 545 | margin: 0px; 546 | } 547 | 548 | .directory img { 549 | vertical-align: -30%; 550 | } 551 | 552 | /* these are for tree view when not used as main index */ 553 | 554 | .directory-alt { 555 | font-size: 100%; 556 | font-weight: bold; 557 | } 558 | 559 | .directory-alt h3 { 560 | margin: 0px; 561 | margin-top: 1em; 562 | font-size: 11pt; 563 | } 564 | 565 | .directory-alt > h3 { 566 | margin-top: 0; 567 | } 568 | 569 | .directory-alt p { 570 | margin: 0px; 571 | white-space: nowrap; 572 | } 573 | 574 | .directory-alt div { 575 | display: none; 576 | margin: 0px; 577 | } 578 | 579 | .directory-alt img { 580 | vertical-align: -30%; 581 | } 582 | 583 | /* @end */ 584 | 585 | div.dynheader { 586 | margin-top: 8px; 587 | } 588 | 589 | address { 590 | font-style: normal; 591 | color: #2A3D61; 592 | } 593 | 594 | table.doxtable { 595 | border-collapse:collapse; 596 | } 597 | 598 | table.doxtable td, table.doxtable th { 599 | border: 1px solid #2D4068; 600 | padding: 3px 7px 2px; 601 | } 602 | 603 | table.doxtable th { 604 | background-color: #374F7F; 605 | color: #FFFFFF; 606 | font-size: 110%; 607 | padding-bottom: 4px; 608 | padding-top: 5px; 609 | text-align:left; 610 | } 611 | 612 | .tabsearch { 613 | top: 0px; 614 | left: 10px; 615 | height: 36px; 616 | background-image: url('tab_b.png'); 617 | z-index: 101; 618 | overflow: hidden; 619 | font-size: 13px; 620 | } 621 | 622 | .navpath ul 623 | { 624 | font-size: 11px; 625 | background-image:url('tab_b.png'); 626 | background-repeat:repeat-x; 627 | height:30px; 628 | line-height:30px; 629 | color:#8AA0CC; 630 | border:solid 1px #C2CDE4; 631 | overflow:hidden; 632 | margin:0px; 633 | padding:0px; 634 | } 635 | 636 | .navpath li 637 | { 638 | list-style-type:none; 639 | float:left; 640 | padding-left:10px; 641 | padding-right: 15px; 642 | background-image:url('bc_s.png'); 643 | background-repeat:no-repeat; 644 | background-position:right; 645 | color:#364D7C; 646 | } 647 | 648 | .navpath a 649 | { 650 | height:32px; 651 | display:block; 652 | text-decoration: none; 653 | outline: none; 654 | } 655 | 656 | .navpath a:hover 657 | { 658 | color:#6884BD; 659 | } 660 | 661 | div.summary 662 | { 663 | float: right; 664 | font-size: 8pt; 665 | padding-right: 5px; 666 | width: 50%; 667 | text-align: right; 668 | } 669 | 670 | div.summary a 671 | { 672 | white-space: nowrap; 673 | } 674 | 675 | div.header 676 | { 677 | background-image:url('nav_h.png'); 678 | background-repeat:repeat-x; 679 | background-color: #F9FAFC; 680 | margin: 0px; 681 | border-bottom: 1px solid #C4CFE5; 682 | } 683 | 684 | div.headertitle 685 | { 686 | padding: 5px 5px 5px 10px; 687 | } 688 | 689 | -------------------------------------------------------------------------------- /current/dox/get_scans.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/get_scans.c -------------------------------------------------------------------------------- /current/dox/get_timestamp.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/get_timestamp.c -------------------------------------------------------------------------------- /current/dox/library_sample.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/library_sample.dox -------------------------------------------------------------------------------- /current/dox/library_tutorial.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/library_tutorial.dox -------------------------------------------------------------------------------- /current/dox/mainpage.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/mainpage.dox -------------------------------------------------------------------------------- /current/dox/multiecho_image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 27 | 28 | 46 | 53 | 54 | 56 | 57 | 59 | image/svg+xml 60 | 62 | 63 | 64 | 65 | 66 | 71 | 75 | 82 | 89 | 99 | sensor 110 | object 121 | object 132 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /current/dox/sensor_angle_image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 27 | 34 | 35 | 54 | 61 | 62 | 64 | 65 | 67 | image/svg+xml 68 | 70 | 71 | 72 | 73 | 74 | 79 | 87 | 99 | 109 | 113 | 117 | sensorback 131 | sensorfront 145 | sensorleft 159 | sensorright 173 | 0 183 | +PI/2 193 | -PI/2 203 | 207 | 211 | 212 | 213 | -------------------------------------------------------------------------------- /current/dox/sensor_index_image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 27 | 34 | 35 | 55 | 62 | 63 | 65 | 66 | 68 | image/svg+xml 69 | 71 | 72 | 73 | 74 | 75 | 80 | 88 | 100 | 110 | 114 | 118 | sensorback 132 | sensorfront 146 | sensorleft 160 | sensorright 174 | 0 184 | 188 | 192 | max index 206 | 207 | 208 | -------------------------------------------------------------------------------- /current/dox/sensor_step_image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 27 | 34 | 41 | 48 | 49 | 68 | 75 | 76 | 78 | 79 | 81 | image/svg+xml 82 | 84 | 85 | 86 | 87 | 88 | 93 | 100 | 112 | 122 | 126 | 130 | sensorback 144 | sensorfront 158 | sensorleft 172 | sensorright 186 | 0 196 | 200 | 204 | min step 214 | max step 224 | 225 | 226 | -------------------------------------------------------------------------------- /current/dox/set_parameter.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/set_parameter.c -------------------------------------------------------------------------------- /current/dox/skip_scan_image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 27 | 32 | 33 | 40 | 45 | 46 | 53 | 58 | 59 | 66 | 71 | 72 | 79 | 84 | 85 | 92 | 99 | 100 | 118 | 125 | 126 | 128 | 129 | 131 | image/svg+xml 132 | 134 | 135 | 136 | 137 | 138 | 143 | 150 | when skip scan == 2 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | 192 | 196 | 200 | 204 | 214 | 218 | 228 | 238 | 248 | { 259 | { 270 | { 281 | no scan 291 | no scan 301 | scan 311 | scan 321 | scan 331 | scan 341 | no scan 351 | 352 | 353 | -------------------------------------------------------------------------------- /current/dox/usage_gcc.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/usage_gcc.dox -------------------------------------------------------------------------------- /current/dox/usage_windows_bat.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/usage_windows_bat.dox -------------------------------------------------------------------------------- /current/dox/usage_windows_vcproj.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/dox/usage_windows_vcproj.dox -------------------------------------------------------------------------------- /current/include/urg_c/urg_connection.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_connection.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_debug.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_debug.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_detect_os.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_detect_os.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_errno.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_errno.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_ring_buffer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_ring_buffer.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_sensor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_sensor.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_serial.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_serial.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_serial_utils.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_serial_utils.h -------------------------------------------------------------------------------- /current/include/urg_c/urg_tcpclient.h: -------------------------------------------------------------------------------- 1 | #ifndef URG_TCPCLIENT_H 2 | #define URG_TCPCLIENT_H 3 | 4 | /*! 5 | \file 6 | \brief TCP/IP read/write functions 7 | 8 | \author Katsumi Kimoto 9 | 10 | $Id: urg_tcpclient.h,v 1d233c7a2240 2011/02/19 03:08:45 Satofumi $ 11 | */ 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | #include "urg_c/urg_ring_buffer.h" 18 | #include "urg_c/urg_detect_os.h" 19 | #include 20 | #if defined(URG_WINDOWS_OS) 21 | #include 22 | #else 23 | #include 24 | #include 25 | #include 26 | #endif 27 | 28 | 29 | // -- NOT INTERFACE, for internal use only -- 30 | // For urg_ringbuffer.h 31 | // The size of buffer must be specified by the power of 2 32 | // i.e. ring buffer size = two to the RB_BITSHIFT-th power. 33 | enum { 34 | RB_BITSHIFT = 8, 35 | RB_SIZE = 1 << RB_BITSHIFT, 36 | 37 | // caution ! available buffer size is less than the 38 | // size given to the ring buffer(RB_SIZE). 39 | BUFSIZE = RB_SIZE - 1, 40 | }; 41 | 42 | 43 | //! TCP/IP connection 44 | typedef struct { 45 | // socket 46 | struct sockaddr_in server_addr; 47 | int sock_desc; 48 | int sock_addr_size; 49 | 50 | // buffer 51 | ring_buffer_t rb; 52 | char buf[RB_SIZE]; 53 | 54 | // line reading functions 55 | int pushed_back; // for pushded back char 56 | 57 | } urg_tcpclient_t; 58 | // -- end of NON INTERFACE definitions -- 59 | 60 | 61 | // -- belows are MODULE INTERFACES -- 62 | /*! 63 | \brief constructor of tcp client module 64 | 65 | \param[in,out] cli tcp client type variable which must be allocated by a caller. 66 | \param[in] server_ip_str IP address expressed in string, i.e. "192.168.0.1" 67 | \param[in] port_num port number expressed in integer, i.e. port_num = 10200 68 | 69 | \retval 0 succeeded. 70 | \retval -1 error 71 | */ 72 | extern int tcpclient_open(urg_tcpclient_t* cli, 73 | const char* server_ip_str, int port_num); 74 | 75 | 76 | /*! 77 | \brief destructor of tcp client module 78 | 79 | \param[in,out] cli : tcp client type variable which must be deallocated by a caller after closing. 80 | */ 81 | extern void tcpclient_close(urg_tcpclient_t* cli); 82 | 83 | 84 | /*! 85 | \brief read from socket. 86 | 87 | \param[in,out] cli : tcp client type variable which must be deallocated by a caller after closing. 88 | \param[out] userbuf : buffer to store read data which must be allocated by a caller. 89 | \param[in] req_size: data size requested to read in byte. 90 | \param[in] timeout : time out specification which unit is microsecond. 91 | 92 | \return the number of data read, -1 when error. 93 | */ 94 | extern int tcpclient_read(urg_tcpclient_t* cli, 95 | char* userbuf, int req_size, int timeout); 96 | 97 | 98 | /*! 99 | \brief write to socket. 100 | 101 | \param[in,out] cli : tcp client type variable which must be deallocated by a caller after closing. 102 | \param[in] userbuf : data to write. 103 | \param[in] req_size: data size requested to write in byte. 104 | 105 | \return returns the number of data wrote, -1 when error. 106 | */ 107 | extern int tcpclient_write(urg_tcpclient_t* cli, 108 | const char* userbuf, int req_size); 109 | 110 | 111 | //! \attention not implemented yet. 112 | extern int tcpclient_error(urg_tcpclient_t* cli, 113 | char* error_message, int max_size); 114 | 115 | 116 | /*! 117 | \brief read one line from socket. 118 | 119 | \param[in,out] cli : tcp client type variable which must be deallocated by a caller after closing. 120 | \param[out] userbuf : buffer to store read data which must be allocated by a caller. 121 | \param[in] buf_size: data size requested to read in byte. 122 | \param[in] timeout : time out specification which unit is microsecond. 123 | 124 | \return the number of data read, -1 when error. 125 | */ 126 | extern int tcpclient_readline(urg_tcpclient_t* cli, 127 | char* userbuf, int buf_size, int timeout); 128 | 129 | #ifdef __cplusplus 130 | } 131 | #endif 132 | 133 | #endif /* !URG_TCPCLIENT_H */ 134 | -------------------------------------------------------------------------------- /current/include/urg_c/urg_time.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2010, Willow Garage, Inc. 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * * Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * * Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * * Neither the name of Willow Garage, Inc. nor the names of its 18 | * contributors may be used to endorse or promote products derived 19 | * from this software without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | * POSSIBILITY OF SUCH DAMAGE. 33 | *********************************************************************/ 34 | 35 | #ifndef URG_TIME_H 36 | #define URG_TIME_H 37 | 38 | #ifdef __cplusplus 39 | extern "C" { 40 | #endif 41 | 42 | #include 43 | #include 44 | #ifdef WIN32 45 | #include 46 | #else 47 | #include 48 | #endif 49 | 50 | #define HAS_CLOCK_GETTIME (_POSIX_C_SOURCE >= 199309L) 51 | 52 | extern void urg_get_walltime(unsigned long long *nsecs); 53 | 54 | #ifdef __cplusplus 55 | } 56 | #endif 57 | 58 | #endif /* !URG_TIME_H */ 59 | -------------------------------------------------------------------------------- /current/include/urg_c/urg_utils.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/include/urg_c/urg_utils.h -------------------------------------------------------------------------------- /current/samples/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for c/urg/samples 2 | # $Id: Makefile,v ef6863dc48c6 2010/12/02 06:08:48 Satofumi $ 3 | 4 | # Compile options 5 | SRCDIR = ../src 6 | INCLUDEDIR = ../include 7 | CC = gcc 8 | CFLAGS = -g -O0 -Wall -Werror -W $(INCLUDES) 9 | INCLUDES = -I$(INCLUDEDIR) 10 | LDFLAGS = 11 | LDLIBS = -lm `/bin/sh ld_wsock.sh` `/bin/sh ld_setupapi.sh` 12 | 13 | # Target 14 | TARGET = \ 15 | get_distance \ 16 | get_distance_intensity \ 17 | get_multiecho \ 18 | get_multiecho_intensity \ 19 | calculate_xy \ 20 | sync_time_stamp \ 21 | sensor_parameter \ 22 | find_port \ 23 | timeout_test \ 24 | reboot_test \ 25 | angle_convert_test \ 26 | 27 | all : $(TARGET) 28 | 29 | clean : 30 | $(RM) *.o $(TARGET) 31 | 32 | depend : 33 | makedepend -Y -- $(INCLUDES) -- $(wildcard *.h *.c) 34 | 35 | .PHONY : all depend clean 36 | ###################################################################### 37 | REQUIRE_LIB = $(SRCDIR)/liburg_c.a 38 | $(REQUIRE_LIB) : $(wildcard $(SRCDIR)/*.[ch]) 39 | cd $(@D)/ && $(MAKE) $(@F) 40 | 41 | get_distance get_distance_intensity get_multiecho get_multiecho_intensity calculate_xy sync_time_stamp sensor_parameter timeout_test reboot_test angle_convert_test : open_urg_sensor.o $(REQUIRE_LIB) 42 | find_port : $(REQUIRE_LIB) 43 | 44 | # DO NOT DELETE 45 | 46 | open_urg_sensor.o: ../include/urg_sensor.h ../include/urg_connection.h 47 | open_urg_sensor.o: ../include/urg_serial.h ../include/urg_detect_os.h 48 | open_urg_sensor.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 49 | angle_convert_test.o: ../include/urg_sensor.h ../include/urg_connection.h 50 | angle_convert_test.o: ../include/urg_serial.h ../include/urg_detect_os.h 51 | angle_convert_test.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 52 | angle_convert_test.o: ../include/urg_utils.h open_urg_sensor.h 53 | calculate_xy.o: ../include/urg_sensor.h ../include/urg_connection.h 54 | calculate_xy.o: ../include/urg_serial.h ../include/urg_detect_os.h 55 | calculate_xy.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 56 | calculate_xy.o: ../include/urg_utils.h open_urg_sensor.h 57 | find_port.o: ../include/urg_serial_utils.h 58 | get_distance.o: ../include/urg_sensor.h ../include/urg_connection.h 59 | get_distance.o: ../include/urg_serial.h ../include/urg_detect_os.h 60 | get_distance.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 61 | get_distance.o: ../include/urg_utils.h open_urg_sensor.h 62 | get_distance_intensity.o: ../include/urg_sensor.h ../include/urg_connection.h 63 | get_distance_intensity.o: ../include/urg_serial.h ../include/urg_detect_os.h 64 | get_distance_intensity.o: ../include/urg_ring_buffer.h 65 | get_distance_intensity.o: ../include/urg_tcpclient.h ../include/urg_utils.h 66 | get_distance_intensity.o: open_urg_sensor.h 67 | get_multiecho.o: ../include/urg_sensor.h ../include/urg_connection.h 68 | get_multiecho.o: ../include/urg_serial.h ../include/urg_detect_os.h 69 | get_multiecho.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 70 | get_multiecho.o: ../include/urg_utils.h open_urg_sensor.h 71 | get_multiecho_intensity.o: ../include/urg_sensor.h 72 | get_multiecho_intensity.o: ../include/urg_connection.h 73 | get_multiecho_intensity.o: ../include/urg_serial.h ../include/urg_detect_os.h 74 | get_multiecho_intensity.o: ../include/urg_ring_buffer.h 75 | get_multiecho_intensity.o: ../include/urg_tcpclient.h ../include/urg_utils.h 76 | get_multiecho_intensity.o: open_urg_sensor.h 77 | open_urg_sensor.o: open_urg_sensor.h ../include/urg_sensor.h 78 | open_urg_sensor.o: ../include/urg_connection.h ../include/urg_serial.h 79 | open_urg_sensor.o: ../include/urg_detect_os.h ../include/urg_ring_buffer.h 80 | open_urg_sensor.o: ../include/urg_tcpclient.h ../include/urg_utils.h 81 | reboot_test.o: ../include/urg_sensor.h ../include/urg_connection.h 82 | reboot_test.o: ../include/urg_serial.h ../include/urg_detect_os.h 83 | reboot_test.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 84 | reboot_test.o: ../include/urg_utils.h open_urg_sensor.h 85 | sensor_parameter.o: ../include/urg_sensor.h ../include/urg_connection.h 86 | sensor_parameter.o: ../include/urg_serial.h ../include/urg_detect_os.h 87 | sensor_parameter.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 88 | sensor_parameter.o: ../include/urg_utils.h open_urg_sensor.h 89 | sync_time_stamp.o: ../include/urg_sensor.h ../include/urg_connection.h 90 | sync_time_stamp.o: ../include/urg_serial.h ../include/urg_detect_os.h 91 | sync_time_stamp.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 92 | sync_time_stamp.o: ../include/urg_utils.h open_urg_sensor.h 93 | timeout_test.o: ../include/urg_sensor.h ../include/urg_connection.h 94 | timeout_test.o: ../include/urg_serial.h ../include/urg_detect_os.h 95 | timeout_test.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 96 | timeout_test.o: ../include/urg_utils.h ../include/urg_debug.h 97 | timeout_test.o: open_urg_sensor.h 98 | -------------------------------------------------------------------------------- /current/samples/Makefile.release: -------------------------------------------------------------------------------- 1 | TARGET = sensor_parameter get_distance get_distance_intensity get_multiecho get_multiecho_intensity sync_time_stamp calculate_xy find_port 2 | 3 | URG_LIB = ../src/liburg_c.a 4 | 5 | include ../build_rule.mk 6 | 7 | CFLAGS = -O2 $(INCLUDES) -I../include 8 | LDLIBS = -lm `/bin/sh ld_wsock.sh` `/bin/sh ld_setupapi.sh` 9 | 10 | all : $(TARGET) 11 | 12 | clean : 13 | $(RM) *.o $(TARGET) 14 | 15 | $(TARGET) : open_urg_sensor.o $(URG_LIB) 16 | 17 | $(URG_LIB) : 18 | cd $(@D)/ && $(MAKE) $(@F) 19 | -------------------------------------------------------------------------------- /current/samples/angle_convert_test.c: -------------------------------------------------------------------------------- 1 | /*! 2 | \~japanese 3 | \example angle_convert_test.c 角度変換の結果を表示する 4 | 5 | \author Satofumi KAMIMURA 6 | 7 | $Id: sync_time_stamp.c,v 799c195d046c 2011/01/14 05:10:38 hokuyo $ 8 | */ 9 | 10 | #include "urg_c/urg_sensor.h" 11 | #include "urg_c/urg_utils.h" 12 | #include "open_urg_sensor.h" 13 | #include 14 | 15 | 16 | int main(int argc, char *argv[]) 17 | { 18 | urg_t urg; 19 | int min_step; 20 | int max_step; 21 | 22 | if (open_urg_sensor(&urg, argc, argv) < 0) { 23 | return 1; 24 | } 25 | 26 | urg_step_min_max(&urg, &min_step, &max_step); 27 | 28 | printf("urg_step2deg(%d): %f\n", min_step, urg_step2deg(&urg, min_step)); 29 | printf("urg_step2deg(%d): %f\n", max_step, urg_step2deg(&urg, max_step)); 30 | 31 | printf("urg_step2rad(%d): %f\n", min_step, urg_step2rad(&urg, min_step)); 32 | printf("urg_step2rad(%d): %f\n", max_step, urg_step2rad(&urg, max_step)); 33 | 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /current/samples/calculate_xy.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/calculate_xy.c -------------------------------------------------------------------------------- /current/samples/find_port.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/find_port.c -------------------------------------------------------------------------------- /current/samples/get_distance.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/get_distance.c -------------------------------------------------------------------------------- /current/samples/get_distance_intensity.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/get_distance_intensity.c -------------------------------------------------------------------------------- /current/samples/get_multiecho.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/get_multiecho.c -------------------------------------------------------------------------------- /current/samples/get_multiecho_intensity.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/get_multiecho_intensity.c -------------------------------------------------------------------------------- /current/samples/ld_setupapi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ "${MSYSTEM}" = "MINGW32" ] ; then 4 | echo "-lsetupapi" 5 | fi 6 | -------------------------------------------------------------------------------- /current/samples/ld_wsock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ "${MSYSTEM}" = "MINGW32" ] ; then 4 | echo "-lwsock32" 5 | fi 6 | -------------------------------------------------------------------------------- /current/samples/open_urg_sensor.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/open_urg_sensor.c -------------------------------------------------------------------------------- /current/samples/open_urg_sensor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/open_urg_sensor.h -------------------------------------------------------------------------------- /current/samples/reboot_test.c: -------------------------------------------------------------------------------- 1 | /*! 2 | \example reboot_test.c reboot test 3 | 4 | \author Satofumi KAMIMURA 5 | 6 | $Id$ 7 | */ 8 | 9 | #include "urg_c/urg_sensor.h" 10 | #include "urg_c/urg_utils.h" 11 | #include "open_urg_sensor.h" 12 | #include 13 | 14 | 15 | int main(int argc, char *argv[]) 16 | { 17 | enum { DATA_SIZE = 1081 }; 18 | urg_t urg; 19 | 20 | if (open_urg_sensor(&urg, argc, argv) < 0) { 21 | return 1; 22 | } 23 | 24 | urg_reboot(&urg); 25 | 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /current/samples/sensor_parameter.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/sensor_parameter.c -------------------------------------------------------------------------------- /current/samples/sync_time_stamp.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/samples/sync_time_stamp.c -------------------------------------------------------------------------------- /current/samples/timeout_test.c: -------------------------------------------------------------------------------- 1 | /*! 2 | \example timeout_test.c timeout test 3 | 4 | \author Satofumi KAMIMURA 5 | 6 | $Id$ 7 | */ 8 | 9 | #include "urg_c/urg_sensor.h" 10 | #include "urg_c/urg_utils.h" 11 | #include "urg_c/urg_debug.h" 12 | #include "open_urg_sensor.h" 13 | #include 14 | 15 | 16 | int main(int argc, char *argv[]) 17 | { 18 | enum { TIMEOUT_MSEC = 3000 }; 19 | char buffer; 20 | int n; 21 | urg_t urg; 22 | 23 | if (open_urg_sensor(&urg, argc, argv) < 0) { 24 | return 1; 25 | } 26 | 27 | printf("read\n"); 28 | n = urg_raw_read(&urg, &buffer, 1, TIMEOUT_MSEC); 29 | printf("n = %d\n", n); 30 | 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /current/src/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for libs/c 2 | # $Id: Makefile,v 4537e5141a86 2011/02/17 07:10:04 Satofumi $ 3 | 4 | # Compile options 5 | CC = gcc 6 | #CFLAGS = -O2 -Wall -Werror -W $(INCLUDES) 7 | CFLAGS = -g -O0 -Wall -Werror -W $(INCLUDES) 8 | INCLUDES = -I../include 9 | LDFLAGS = 10 | LDLIBS = 11 | 12 | # Target 13 | URG_C_LIB = liburg_c.a 14 | TARGET = $(URG_C_LIB) 15 | 16 | all : $(TARGET) 17 | 18 | clean : 19 | $(RM) *.o $(TARGET) 20 | 21 | depend : 22 | makedepend -Y -- $(INCLUDES) -- $(wildcard *.h *.c) 23 | 24 | .PHONY : all clean depend 25 | ###################################################################### 26 | $(URG_C_LIB) : \ 27 | $(URG_C_LIB)(urg_sensor.o) \ 28 | $(URG_C_LIB)(urg_utils.o) \ 29 | $(URG_C_LIB)(urg_debug.o) \ 30 | $(URG_C_LIB)(urg_connection.o) \ 31 | $(URG_C_LIB)(urg_serial.o) \ 32 | $(URG_C_LIB)(urg_serial_utils.o) \ 33 | $(URG_C_LIB)(urg_tcpclient.o) \ 34 | $(URG_C_LIB)(urg_ring_buffer.o) \ 35 | 36 | urg_serial_utils.o : urg_serial_utils_windows.c urg_serial_utils_linux.c 37 | 38 | # DO NOT DELETE 39 | 40 | urg_connection.o: ../include/urg_connection.h ../include/urg_serial.h 41 | urg_connection.o: ../include/urg_detect_os.h ../include/urg_ring_buffer.h 42 | urg_connection.o: ../include/urg_tcpclient.h 43 | urg_debug.o: ../include/urg_debug.h ../include/urg_sensor.h 44 | urg_debug.o: ../include/urg_connection.h ../include/urg_serial.h 45 | urg_debug.o: ../include/urg_detect_os.h ../include/urg_ring_buffer.h 46 | urg_debug.o: ../include/urg_tcpclient.h 47 | urg_ring_buffer.o: ../include/urg_ring_buffer.h 48 | urg_sensor.o: ../include/urg_sensor.h ../include/urg_connection.h 49 | urg_sensor.o: ../include/urg_serial.h ../include/urg_detect_os.h 50 | urg_sensor.o: ../include/urg_ring_buffer.h ../include/urg_tcpclient.h 51 | urg_sensor.o: ../include/urg_errno.h 52 | urg_serial.o: ../include/urg_serial.h ../include/urg_detect_os.h 53 | urg_serial.o: ../include/urg_ring_buffer.h urg_serial_linux.c 54 | urg_serial_linux.o: ../include/urg_ring_buffer.h 55 | urg_serial_utils.o: ../include/urg_serial_utils.h ../include/urg_detect_os.h 56 | urg_serial_utils.o: urg_serial_utils_linux.c 57 | urg_serial_utils_linux.o: ../include/urg_serial_utils.h 58 | urg_serial_utils_windows.o: ../include/urg_serial_utils.h 59 | urg_serial_utils_windows.o: ../include/urg_detect_os.h 60 | urg_serial_windows.o: ../include/urg_serial.h ../include/urg_detect_os.h 61 | urg_serial_windows.o: ../include/urg_ring_buffer.h 62 | urg_tcpclient.o: ../include/urg_detect_os.h ../include/urg_tcpclient.h 63 | urg_tcpclient.o: ../include/urg_ring_buffer.h 64 | urg_utils.o: ../include/urg_utils.h ../include/urg_sensor.h 65 | urg_utils.o: ../include/urg_connection.h ../include/urg_serial.h 66 | urg_utils.o: ../include/urg_detect_os.h ../include/urg_ring_buffer.h 67 | urg_utils.o: ../include/urg_tcpclient.h ../include/urg_errno.h 68 | -------------------------------------------------------------------------------- /current/src/Makefile.release: -------------------------------------------------------------------------------- 1 | LIB_URG = liburg_c.a 2 | 3 | include ../build_rule.mk 4 | 5 | CFLAGS = -g -O2 $(INCLUDES) -I../include -fPIC 6 | 7 | all : $(LIB_URG) 8 | 9 | clean : 10 | $(RM) *.o $(LIB_URG) 11 | 12 | $(LIB_URG) : \ 13 | $(LIB_URG)(urg_sensor.o) \ 14 | $(LIB_URG)(urg_utils.o) \ 15 | $(LIB_URG)(urg_debug.o) \ 16 | $(LIB_URG)(urg_connection.o) \ 17 | $(LIB_URG)(urg_ring_buffer.o) \ 18 | $(LIB_URG)(urg_serial.o) \ 19 | $(LIB_URG)(urg_serial_utils.o) \ 20 | $(LIB_URG)(urg_tcpclient.o) \ 21 | -------------------------------------------------------------------------------- /current/src/urg_connection.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_connection.c -------------------------------------------------------------------------------- /current/src/urg_debug.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_debug.c -------------------------------------------------------------------------------- /current/src/urg_ring_buffer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_ring_buffer.c -------------------------------------------------------------------------------- /current/src/urg_sensor.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_sensor.c -------------------------------------------------------------------------------- /current/src/urg_serial.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_serial.c -------------------------------------------------------------------------------- /current/src/urg_serial_linux.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_serial_linux.c -------------------------------------------------------------------------------- /current/src/urg_serial_utils.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_serial_utils.c -------------------------------------------------------------------------------- /current/src/urg_serial_utils_linux.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_serial_utils_linux.c -------------------------------------------------------------------------------- /current/src/urg_serial_utils_windows.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_serial_utils_windows.c -------------------------------------------------------------------------------- /current/src/urg_serial_windows.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_serial_windows.c -------------------------------------------------------------------------------- /current/src/urg_tcpclient.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_tcpclient.c -------------------------------------------------------------------------------- /current/src/urg_time.c: -------------------------------------------------------------------------------- 1 | /*! 2 | \brief URG ƒZƒ“ƒT—p‚̕⏕ŠÖ” 3 | 4 | \author Satofumi KAMIMURA 5 | 6 | $Id: urg_utils.c,v da778fd816c2 2011/01/05 20:02:06 Satofumi $ 7 | */ 8 | 9 | #include "urg_c/urg_time.h" 10 | 11 | // Portable time function borrowed from ros::Time 12 | void urg_walltime(unsigned long *sec, unsigned long *nsec) 13 | { 14 | #ifndef WIN32 15 | #if HAS_CLOCK_GETTIME 16 | struct timespec start; 17 | clock_gettime(CLOCK_REALTIME, &start); 18 | *sec = start.tv_sec; 19 | *nsec = start.tv_nsec; 20 | #else 21 | struct timeval timeofday; 22 | gettimeofday(&timeofday,NULL); 23 | *sec = (unsigned long)timeofday.tv_sec; 24 | *nsec = timeofday.tv_usec * 1000; 25 | #endif 26 | #else 27 | // Win32 implementation 28 | // unless I've missed something obvious, the only way to get high-precision 29 | // time on Windows is via the QueryPerformanceCounter() call. However, 30 | // this is somewhat problematic in Windows XP on some processors, especially 31 | // AMD, because the Windows implementation can freak out when the CPU clocks 32 | // down to save power. Time can jump or even go backwards. Microsoft has 33 | // fixed this bug for most systems now, but it can still show up if you have 34 | // not installed the latest CPU drivers (an oxymoron). They fixed all these 35 | // problems in Windows Vista, and this API is by far the most accurate that 36 | // I know of in Windows, so I'll use it here despite all these caveats 37 | static LARGE_INTEGER cpu_freq, init_cpu_time; 38 | static uint32_t start_sec = 0; 39 | static uint32_t start_nsec = 0; 40 | if ( ( start_sec == 0 ) && ( start_nsec == 0 ) ) 41 | { 42 | QueryPerformanceFrequency(&cpu_freq); 43 | if (cpu_freq.QuadPart == 0) { 44 | throw NoHighPerformanceTimersException(); 45 | } 46 | QueryPerformanceCounter(&init_cpu_time); 47 | // compute an offset from the Epoch using the lower-performance timer API 48 | FILETIME ft; 49 | GetSystemTimeAsFileTime(&ft); 50 | LARGE_INTEGER start_li; 51 | start_li.LowPart = ft.dwLowDateTime; 52 | start_li.HighPart = ft.dwHighDateTime; 53 | // why did they choose 1601 as the time zero, instead of 1970? 54 | // there were no outstanding hard rock bands in 1601. 55 | #ifdef _MSC_VER 56 | start_li.QuadPart -= 116444736000000000Ui64; 57 | #else 58 | start_li.QuadPart -= 116444736000000000ULL; 59 | #endif 60 | start_sec = (uint32_t)(start_li.QuadPart / 10000000); // 100-ns units. odd. 61 | start_nsec = (start_li.LowPart % 10000000) * 100; 62 | } 63 | LARGE_INTEGER cur_time; 64 | QueryPerformanceCounter(&cur_time); 65 | LARGE_INTEGER delta_cpu_time; 66 | delta_cpu_time.QuadPart = cur_time.QuadPart - init_cpu_time.QuadPart; 67 | // todo: how to handle cpu clock drift. not sure it's a big deal for us. 68 | // also, think about clock wraparound. seems extremely unlikey, but possible 69 | double d_delta_cpu_time = delta_cpu_time.QuadPart / (double) cpu_freq.QuadPart; 70 | uint32_t delta_sec = (uint32_t) floor(d_delta_cpu_time); 71 | uint32_t delta_nsec = (uint32_t) boost::math::round((d_delta_cpu_time-delta_sec) * 1e9); 72 | 73 | int64_t sec_sum = (int64_t)start_sec + (int64_t)delta_sec; 74 | int64_t nsec_sum = (int64_t)start_nsec + (int64_t)delta_nsec; 75 | 76 | // Throws an exception if we go out of 32-bit range 77 | normalizeSecNSecUnsigned(sec_sum, nsec_sum); 78 | 79 | sec = sec_sum; 80 | nsec = nsec_sum; 81 | #endif 82 | } 83 | 84 | void urg_get_walltime(unsigned long long *nsecs){ 85 | unsigned long sec; 86 | unsigned long nsec; 87 | urg_walltime(&sec, &nsec); 88 | *nsecs = (unsigned long long)sec*1000000000ll + (unsigned long long)nsec; 89 | } 90 | -------------------------------------------------------------------------------- /current/src/urg_utils.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/src/urg_utils.c -------------------------------------------------------------------------------- /current/urg_c-config.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | version=VERSION 4 | prefix=PREFIX 5 | includedir=${prefix}/include/urg_c 6 | installlib=${prefix}/lib 7 | 8 | usage="Usage: urg_c-config [--version] [--cflags] [--libs]" 9 | 10 | if test $# -eq 0; then 11 | echo "${usage}" 1>&2 12 | exit 1 13 | fi 14 | 15 | while test $# -gt 0; do 16 | 17 | case $1 in 18 | --version) 19 | echo "${version}" 20 | ;; 21 | --cflags) 22 | echo -I${includedir} 23 | ;; 24 | --libs) 25 | echo -lurg_c LIBS 26 | ;; 27 | *) 28 | echo "${usage}" 1>&2 29 | exit 1 30 | ;; 31 | esac 32 | shift 33 | done 34 | -------------------------------------------------------------------------------- /current/viewers/Makefile: -------------------------------------------------------------------------------- 1 | # viewers/ 2 | 3 | all : 4 | 5 | clean : 6 | cd viewer_sdl/ && $(MAKE) clean 7 | -------------------------------------------------------------------------------- /current/viewers/viewer_sdl/Makefile: -------------------------------------------------------------------------------- 1 | # viewers/viewer_sdl/ 2 | 3 | # Compile options 4 | SRCDIR = ../../src 5 | INCLUDEDIR = ../../include 6 | CC = gcc 7 | #CFLAGS = -O2 -Wall -Werror -W $(INCLUDE) `sdl-config --cflags` 8 | CFLAGS = -g -O0 -Wall -Werror -W $(INCLUDE) `sdl-config --cflags` 9 | INCLUDE = -I$(INCLUDEDIR) 10 | LDFLAGS = -L/usr/X11/lib 11 | ifeq ($(OS),Windows_NT) 12 | LDLIBS = `sdl-config --libs` -lopengl32 -lwsock32 13 | else 14 | LDLIBS = `sdl-config --libs` -lGL 15 | endif 16 | 17 | 18 | TARGET = viewer_sdl 19 | 20 | all : $(TARGET) 21 | 22 | clean : 23 | $(RM) $(TARGET) *.o 24 | 25 | depend : 26 | makedepend -Y -- $(INCLUDES) -- $(wildcard *.h *.c) 27 | 28 | .PHONY : all clean depend 29 | ###################################################################### 30 | REQUIRE_LIB = $(SRCDIR)/liburg_c.a 31 | $(REQUIRE_LIB) : $(wildcard $(SRCDIR)/*.[ch]) 32 | cd $(@D)/ && $(MAKE) $(@F) 33 | 34 | viewer_sdl : plotter_sdl.o $(REQUIRE_LIB) 35 | 36 | # DO NOT DELETE 37 | 38 | plotter_sdl.o: plotter_sdl.h 39 | viewer_sdl.o: plotter_sdl.h 40 | -------------------------------------------------------------------------------- /current/viewers/viewer_sdl/plotter_sdl.c: -------------------------------------------------------------------------------- 1 | /*! 2 | \file 3 | \brief Plotter (SDL) 4 | 5 | \author Satofumi KAMIMURA 6 | 7 | $Id: plotter_sdl.c,v 540bc11f70c8 2011/05/08 23:04:49 satofumi $ 8 | 9 | \todo glDrawElements() を使うように修正する 10 | \todo MAX_POINTS の 1081 の数をセンサからの情報で初期化する 11 | */ 12 | 13 | //#define USE_GL_2 1 14 | 15 | #if defined(USE_GL_2) 16 | #define GL_GLEXT_PROTOTYPES 1 17 | #define GL3_PROTOTYPES 1 18 | #endif 19 | #include "plotter_sdl.h" 20 | #include 21 | #include 22 | 23 | 24 | enum { 25 | SCREEN_WIDTH = 640, 26 | SCREEN_HEIGHT = 480, 27 | }; 28 | 29 | 30 | typedef struct 31 | { 32 | GLfloat x; 33 | GLfloat y; 34 | } vector_t; 35 | 36 | 37 | static SDL_Surface *screen_ = NULL; 38 | static vector_t *points_ = NULL; 39 | static size_t max_points_size_ = 0; 40 | static size_t points_size_ = 0; 41 | static double draw_magnify_ = 0.1; 42 | 43 | 44 | static void opengl_initialize(void) 45 | { 46 | int bpp = SDL_GetVideoInfo()->vfmt->BitsPerPixel; 47 | 48 | // Initialize the display 49 | int rgb_size[3]; 50 | switch (bpp) { 51 | case 8: 52 | rgb_size[0] = 3; 53 | rgb_size[1] = 3; 54 | rgb_size[2] = 2; 55 | break; 56 | 57 | case 15: 58 | case 16: 59 | rgb_size[0] = 5; 60 | rgb_size[1] = 5; 61 | rgb_size[2] = 5; 62 | break; 63 | 64 | default: 65 | rgb_size[0] = 8; 66 | rgb_size[1] = 8; 67 | rgb_size[2] = 8; 68 | break; 69 | } 70 | SDL_GL_SetAttribute(SDL_GL_RED_SIZE, rgb_size[0]); 71 | SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, rgb_size[1]); 72 | SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, rgb_size[2]); 73 | SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); 74 | SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); 75 | //SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1); 76 | } 77 | 78 | 79 | static void opengl_setup(void) 80 | { 81 | glPushAttrib(GL_ENABLE_BIT); 82 | glDisable(GL_DEPTH_TEST); 83 | glDisable(GL_CULL_FACE); 84 | glEnable(GL_TEXTURE_2D); 85 | glEnable(GL_BLEND); 86 | glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 87 | 88 | glViewport(-1, -1, +1, +1); 89 | glMatrixMode(GL_PROJECTION); 90 | glLoadIdentity(); 91 | 92 | glOrtho(-1.0, +1.0, -1.0, +1.0, -10.0, +10.0); 93 | 94 | glMatrixMode(GL_MODELVIEW); 95 | glLoadIdentity(); 96 | 97 | glEnable(GL_DEPTH_TEST); 98 | glDepthFunc(GL_LESS); 99 | glShadeModel(GL_SMOOTH); 100 | } 101 | 102 | 103 | static void draw_points(void) 104 | { 105 | 106 | #if !defined(USE_GL_2) 107 | size_t i; 108 | 109 | glBegin(GL_POINTS); 110 | for (i = 0; i < points_size_; ++i) { 111 | glVertex2i(points_[i].x, points_[i].y); 112 | } 113 | glEnd(); 114 | 115 | points_size_ = 0; 116 | 117 | #else 118 | int memory_size = points_size * sizeof(points[0]); 119 | 120 | glEnableClientState(GL_VERTEX_ARRAY); 121 | glEnableClientState(GL_COLOR_ARRAY); 122 | 123 | glBindBuffer(GL_ARRAY_BUFFER, buffer_id); 124 | glBufferData(GL_ARRAY_BUFFER, memory_size, points, GL_STATIC_DRAW); 125 | 126 | glInterleavedArrays(GL_V2F, 0, NULL); 127 | glDrawArrays(GL_POINTS, 0, points_size); 128 | glBindBuffer(GL_ARRAY_BUFFER, 0); 129 | 130 | glDisableClientState(GL_COLOR_ARRAY); 131 | glDisableClientState(GL_VERTEX_ARRAY); 132 | 133 | points_size = 0; 134 | #endif 135 | } 136 | 137 | 138 | static void enter2D(void) 139 | { 140 | glViewport(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); 141 | 142 | glMatrixMode(GL_PROJECTION); 143 | glPushMatrix(); 144 | glLoadIdentity(); 145 | 146 | glOrtho(0.0, SCREEN_WIDTH - 1.0, 0.0, SCREEN_HEIGHT - 1.0, 0.0, 1.0); 147 | 148 | glMatrixMode(GL_MODELVIEW); 149 | glPushMatrix(); 150 | glLoadIdentity(); 151 | 152 | glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); 153 | 154 | glTranslatef(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, 0.0); 155 | } 156 | 157 | 158 | bool plotter_initialize(int data_size) 159 | { 160 | points_ = malloc(data_size * sizeof(vector_t)); 161 | if (!points_) { 162 | return false; 163 | } 164 | max_points_size_ = data_size; 165 | 166 | if (SDL_Init(SDL_INIT_VIDEO) < 0) { 167 | printf("SDL_Init: %s\n", SDL_GetError()); 168 | return false; 169 | } 170 | 171 | // 画面の作成 172 | opengl_initialize(); 173 | screen_ = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 0, SDL_OPENGL); 174 | if (!screen_) { 175 | return false; 176 | } 177 | opengl_setup(); 178 | 179 | // 描画設定 180 | glPointSize(2.0); 181 | #if defined(USE_GL_2) 182 | glGenBuffers(1, &buffer_id); 183 | #endif 184 | enter2D(); 185 | 186 | // データの確保 187 | // !!! 188 | 189 | return true; 190 | } 191 | 192 | 193 | void plotter_terminate(void) 194 | { 195 | SDL_Quit(); 196 | } 197 | 198 | 199 | void plotter_clear(void) 200 | { 201 | glClearColor(0x00, 0x00, 0x00, 0xff); 202 | glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 203 | } 204 | 205 | 206 | void plotter_swap(void) 207 | { 208 | // 表示を入れ換えるときに、まだ描画していない内容を描画する 209 | draw_points(); 210 | 211 | SDL_GL_SwapBuffers(); 212 | } 213 | 214 | 215 | void plotter_set_color(unsigned char r, unsigned g, unsigned b) 216 | { 217 | // 色を変更するときに、まとめて描画を行う 218 | draw_points(); 219 | 220 | glColor3f(r / 255.0, g / 255.0, b / 255.0); 221 | } 222 | 223 | 224 | void plotter_plot(float x, float y) 225 | { 226 | if (points_size_ >= max_points_size_) { 227 | return; 228 | } 229 | 230 | points_[points_size_].x = draw_magnify_ * x; 231 | points_[points_size_].y = draw_magnify_ * y; 232 | ++points_size_; 233 | } 234 | 235 | 236 | bool plotter_is_quit(void) 237 | { 238 | bool is_quit = false; 239 | int magnify = 0; 240 | 241 | SDL_Event event; 242 | while (SDL_PollEvent(&event)) { 243 | switch (event.type) { 244 | 245 | case SDL_QUIT: 246 | is_quit = true; 247 | break; 248 | 249 | case SDL_KEYDOWN: 250 | if ((event.key.keysym.sym == SDLK_q) || 251 | (event.key.keysym.sym == SDLK_F4)) { 252 | is_quit = true; 253 | } 254 | if (event.key.keysym.sym == SDLK_COMMA) { 255 | --magnify; 256 | } 257 | if (event.key.keysym.sym == SDLK_PERIOD) { 258 | ++magnify; 259 | } 260 | break; 261 | 262 | case SDL_MOUSEBUTTONDOWN: 263 | if (event.button.button == SDL_BUTTON_WHEELUP) { 264 | --magnify; 265 | } else if (event.button.button == SDL_BUTTON_WHEELDOWN) { 266 | ++magnify; 267 | } 268 | break; 269 | } 270 | } 271 | 272 | // 描画の拡大率を変更する 273 | while (magnify < 0) { 274 | draw_magnify_ *= 0.90; 275 | ++magnify; 276 | } 277 | while (magnify > 0) { 278 | draw_magnify_ *= 1.10; 279 | --magnify; 280 | } 281 | if (draw_magnify_ < 0.001) { 282 | draw_magnify_ = 0.001; 283 | } else if (draw_magnify_ > 10.0) { 284 | draw_magnify_ = 10.0; 285 | } 286 | 287 | return is_quit; 288 | } 289 | -------------------------------------------------------------------------------- /current/viewers/viewer_sdl/plotter_sdl.h: -------------------------------------------------------------------------------- 1 | #ifndef PLOTTER_SDL_H 2 | #define PLOTTER_SDL_H 3 | 4 | /*! 5 | \file 6 | \brief Plotter (SDL) 7 | 8 | \author Satofumi KAMIMURA 9 | 10 | $Id: plotter_sdl.h,v 2a8d923c70f3 2010/08/08 12:22:29 Satofumi $ 11 | */ 12 | 13 | #include 14 | 15 | 16 | extern bool plotter_initialize(int data_size); 17 | extern void plotter_terminate(void); 18 | extern void plotter_clear(void); 19 | extern void plotter_swap(void); 20 | extern void plotter_set_color(unsigned char r, unsigned g, unsigned b); 21 | extern void plotter_plot(float x, float y); 22 | extern bool plotter_is_quit(void); 23 | 24 | #endif /* !PLOTTER_SDL_H */ 25 | -------------------------------------------------------------------------------- /current/viewers/viewer_sdl/viewer_sdl.c: -------------------------------------------------------------------------------- 1 | /*! 2 | \file 3 | \brief Simple viewer (SDL) 4 | 5 | \author Satofumi KAMIMURA 6 | 7 | $Id: viewer_sdl.c,v d746d6f9127d 2011/05/08 23:10:44 satofumi $ 8 | */ 9 | 10 | #include "urg_sensor.h" 11 | #include "urg_utils.h" 12 | #include "urg_connection.h" 13 | #include "plotter_sdl.h" 14 | #include 15 | #include 16 | 17 | 18 | #if defined(URG_WINDOWS_OS) 19 | static const char *serial_device = "COM4"; 20 | #else 21 | static const char *serial_device = "/dev/ttyACM0"; 22 | #endif 23 | static const char *ethernet_address = "192.168.0.10"; 24 | //static const char *ethernet_address = "localhost"; 25 | 26 | 27 | typedef struct 28 | { 29 | urg_connection_type_t connection_type; 30 | const char *device; 31 | long baudrate_or_port; 32 | urg_measurement_type_t measurement_type; 33 | bool is_intensity; 34 | bool is_multiecho; 35 | } scan_mode_t; 36 | 37 | 38 | static void help_exit(const char *program_name) 39 | { 40 | printf("URG simple data viewer\n" 41 | "usage:\n" 42 | " %s [options]\n" 43 | "\n" 44 | "options:\n" 45 | " -h, --help display this help and exit\n" 46 | " -i, intensity mode\n" 47 | " -m, multiecho mode\n" 48 | "\n", 49 | program_name); 50 | } 51 | 52 | 53 | static void parse_args(scan_mode_t *mode, int argc, char *argv[]) 54 | { 55 | int i; 56 | 57 | mode->connection_type = URG_SERIAL; 58 | mode->device = serial_device; 59 | mode->baudrate_or_port = 115200; 60 | mode->is_multiecho = false; 61 | mode->is_intensity = false; 62 | 63 | for (i = 1; i < argc; ++i) { 64 | const char *token = argv[i]; 65 | 66 | if (!strcmp(token, "-h") || !strcmp(token, "--help")) { 67 | help_exit(argv[0]); 68 | 69 | } else if (!strcmp(token, "-e")) { 70 | mode->connection_type = URG_ETHERNET; 71 | mode->device = ethernet_address; 72 | mode->baudrate_or_port = 10940; 73 | 74 | } else if (!strcmp(token, "-m")) { 75 | mode->is_multiecho = true; 76 | } else if (!strcmp(token, "-i")) { 77 | mode->is_intensity = true; 78 | } 79 | } 80 | 81 | if (mode->is_multiecho) { 82 | mode->measurement_type = 83 | (mode->is_intensity) ? URG_MULTIECHO_INTENSITY : URG_MULTIECHO; 84 | } else { 85 | mode->measurement_type = 86 | (mode->is_intensity) ? URG_DISTANCE_INTENSITY : URG_DISTANCE; 87 | } 88 | } 89 | 90 | 91 | static void plot_data_point(urg_t *urg, long data[], unsigned short intensity[], 92 | int data_n, bool is_multiecho, int offset) 93 | { 94 | long min_distance; 95 | long max_distance; 96 | const double radian_offset = M_PI / 2.0; 97 | int step = (is_multiecho) ? 3 : 1; 98 | int i; 99 | 100 | urg_distance_min_max(urg, &min_distance, &max_distance); 101 | 102 | for (i = 0; i < data_n; ++i) { 103 | int index = (step * i) + offset; 104 | long l = (data) ? data[index] : intensity[index]; 105 | double rad; 106 | float x; 107 | float y; 108 | 109 | if ((l <= min_distance) || (l >= max_distance)) { 110 | continue; 111 | } 112 | 113 | rad = urg_index2rad(urg, i) + radian_offset; 114 | x = l * cos(rad); 115 | y = l * sin(rad); 116 | plotter_plot(x, y); 117 | } 118 | } 119 | 120 | 121 | static void plot_data(urg_t *urg, 122 | long data[], unsigned short intensity[], int data_n, 123 | bool is_multiecho) 124 | { 125 | plotter_clear(); 126 | 127 | // 距離 128 | plotter_set_color(0x00, 0xff, 0xff); 129 | plot_data_point(urg, data, NULL, data_n, is_multiecho, 0); 130 | 131 | if (is_multiecho) { 132 | plotter_set_color(0xff, 0x00, 0xff); 133 | plot_data_point(urg, data, NULL, data_n, is_multiecho, 1); 134 | 135 | plotter_set_color(0x00, 0x00, 0xff); 136 | plot_data_point(urg, data, NULL, data_n, is_multiecho, 2); 137 | } 138 | 139 | if (intensity) { 140 | // 強度 141 | plotter_set_color(0xff, 0xff, 0x00); 142 | plot_data_point(urg, NULL, intensity, data_n, is_multiecho, 0); 143 | 144 | if (is_multiecho) { 145 | plotter_set_color(0xff, 0x00, 0x00); 146 | plot_data_point(urg, NULL, intensity, data_n, is_multiecho, 1); 147 | 148 | plotter_set_color(0x00, 0xff, 0x00); 149 | plot_data_point(urg, NULL, intensity, data_n, is_multiecho, 2); 150 | } 151 | } 152 | 153 | plotter_swap(); 154 | } 155 | 156 | 157 | int main(int argc, char *argv[]) 158 | { 159 | scan_mode_t mode; 160 | urg_t urg; 161 | long *data = NULL; 162 | unsigned short *intensity = NULL; 163 | //long previous_timestamp = 0; 164 | long timestamp; 165 | int data_size; 166 | 167 | 168 | // 引数の解析 169 | parse_args(&mode, argc, argv); 170 | 171 | // URG に接続 172 | if (urg_open(&urg, mode.connection_type, 173 | mode.device, mode.baudrate_or_port)) { 174 | printf("urg_open: %s\n", urg_error(&urg)); 175 | return 1; 176 | } 177 | 178 | // データ取得の準備 179 | data_size = urg_max_data_size(&urg); 180 | if (mode.is_multiecho) { 181 | data_size *= 3; 182 | } 183 | data = malloc(data_size * sizeof(data[0])); 184 | if (mode.is_intensity) { 185 | intensity = malloc(data_size * sizeof(intensity[0])); 186 | } 187 | 188 | // 画面の作成 189 | if (!plotter_initialize(data_size * ((mode.is_intensity) ? 2 : 1))) { 190 | return 1; 191 | } 192 | 193 | // データの取得と描画 194 | urg_start_measurement(&urg, mode.measurement_type, URG_SCAN_INFINITY, 0); 195 | while (1) { 196 | int n; 197 | //urg_start_measurement(&urg, mode.measurement_type, 1, 0); 198 | switch (mode.measurement_type) { 199 | case URG_DISTANCE: 200 | n = urg_get_distance(&urg, data, ×tamp); 201 | break; 202 | 203 | case URG_DISTANCE_INTENSITY: 204 | n = urg_get_distance_intensity(&urg, data, intensity, ×tamp); 205 | break; 206 | 207 | case URG_MULTIECHO: 208 | n = urg_get_multiecho(&urg, data, ×tamp); 209 | break; 210 | 211 | case URG_MULTIECHO_INTENSITY: 212 | n = urg_get_multiecho_intensity(&urg, data, intensity, ×tamp); 213 | break; 214 | 215 | default: 216 | n = 0; 217 | break; 218 | } 219 | 220 | if (n <= 0) { 221 | printf("urg_get_function: %s\n", urg_error(&urg)); 222 | break; 223 | } 224 | 225 | //fprintf(stderr, "%ld, ", timestamp - previous_timestamp); 226 | //previous_timestamp = timestamp; 227 | 228 | plot_data(&urg, data, intensity, n, mode.is_multiecho); 229 | if (plotter_is_quit()) { 230 | break; 231 | } 232 | } 233 | 234 | // リソースの解放 235 | plotter_terminate(); 236 | free(intensity); 237 | free(data); 238 | urg_close(&urg); 239 | 240 | return 0; 241 | } 242 | -------------------------------------------------------------------------------- /current/visual_cpp/calculate_xy/calculate_xy.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/calculate_xy/calculate_xy.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/find_port/find_port.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/find_port/find_port.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/get_distance/get_distance.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/get_distance/get_distance.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/get_distance_intensity/get_distance_intensity.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/get_distance_intensity/get_distance_intensity.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/get_multiecho/get_multiecho.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/get_multiecho/get_multiecho.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/get_multiecho_intensity/get_multiecho_intensity.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/get_multiecho_intensity/get_multiecho_intensity.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/sensor_parameter/sensor_parameter.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/sensor_parameter/sensor_parameter.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/sync_time_stamp/sync_time_stamp.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/sync_time_stamp/sync_time_stamp.vcproj -------------------------------------------------------------------------------- /current/visual_cpp/urg.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 9.00 3 | # Visual Studio 2005 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "urg", "urg\urg.vcproj", "{269630A6-5F78-484F-A729-5CD301B5CABA}" 5 | EndProject 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sensor_parameter", "sensor_parameter\sensor_parameter.vcproj", "{3347DEB1-A1EC-4242-8079-233B9E5EB0C3}" 7 | ProjectSection(ProjectDependencies) = postProject 8 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 9 | EndProjectSection 10 | EndProject 11 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_distance", "get_distance\get_distance.vcproj", "{8F73522C-18D0-4436-B444-3E17A2A84788}" 12 | ProjectSection(ProjectDependencies) = postProject 13 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 14 | EndProjectSection 15 | EndProject 16 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_distance_intensity", "get_distance_intensity\get_distance_intensity.vcproj", "{17A43425-7F91-4D65-A28A-C90B3E22863F}" 17 | ProjectSection(ProjectDependencies) = postProject 18 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 19 | EndProjectSection 20 | EndProject 21 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_multiecho", "get_multiecho\get_multiecho.vcproj", "{0C8D756A-E46E-4EA0-8719-5807E6A7A5C0}" 22 | ProjectSection(ProjectDependencies) = postProject 23 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 24 | EndProjectSection 25 | EndProject 26 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_multiecho_intensity", "get_multiecho_intensity\get_multiecho_intensity.vcproj", "{AFB48029-6ADD-4F7A-A36C-6F0A67BC0D2C}" 27 | ProjectSection(ProjectDependencies) = postProject 28 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 29 | EndProjectSection 30 | EndProject 31 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "calculate_xy", "calculate_xy\calculate_xy.vcproj", "{64658378-45FE-4BA5-9C28-1A91CDC6C4EB}" 32 | ProjectSection(ProjectDependencies) = postProject 33 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 34 | EndProjectSection 35 | EndProject 36 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sync_time_stamp", "sync_time_stamp\sync_time_stamp.vcproj", "{EF96A9B9-81AE-4B35-81EC-68DB295963DB}" 37 | ProjectSection(ProjectDependencies) = postProject 38 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 39 | EndProjectSection 40 | EndProject 41 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "find_port", "find_port\find_port.vcproj", "{B1E1DC1F-F6C1-4A11-8A7D-D30E0211A18E}" 42 | ProjectSection(ProjectDependencies) = postProject 43 | {269630A6-5F78-484F-A729-5CD301B5CABA} = {269630A6-5F78-484F-A729-5CD301B5CABA} 44 | EndProjectSection 45 | EndProject 46 | Global 47 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 48 | Debug|Win32 = Debug|Win32 49 | Release|Win32 = Release|Win32 50 | EndGlobalSection 51 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 52 | {269630A6-5F78-484F-A729-5CD301B5CABA}.Debug|Win32.ActiveCfg = Debug|Win32 53 | {269630A6-5F78-484F-A729-5CD301B5CABA}.Debug|Win32.Build.0 = Debug|Win32 54 | {269630A6-5F78-484F-A729-5CD301B5CABA}.Release|Win32.ActiveCfg = Release|Win32 55 | {269630A6-5F78-484F-A729-5CD301B5CABA}.Release|Win32.Build.0 = Release|Win32 56 | {3347DEB1-A1EC-4242-8079-233B9E5EB0C3}.Debug|Win32.ActiveCfg = Debug|Win32 57 | {3347DEB1-A1EC-4242-8079-233B9E5EB0C3}.Debug|Win32.Build.0 = Debug|Win32 58 | {3347DEB1-A1EC-4242-8079-233B9E5EB0C3}.Release|Win32.ActiveCfg = Release|Win32 59 | {3347DEB1-A1EC-4242-8079-233B9E5EB0C3}.Release|Win32.Build.0 = Release|Win32 60 | {8F73522C-18D0-4436-B444-3E17A2A84788}.Debug|Win32.ActiveCfg = Debug|Win32 61 | {8F73522C-18D0-4436-B444-3E17A2A84788}.Debug|Win32.Build.0 = Debug|Win32 62 | {8F73522C-18D0-4436-B444-3E17A2A84788}.Release|Win32.ActiveCfg = Release|Win32 63 | {8F73522C-18D0-4436-B444-3E17A2A84788}.Release|Win32.Build.0 = Release|Win32 64 | {17A43425-7F91-4D65-A28A-C90B3E22863F}.Debug|Win32.ActiveCfg = Debug|Win32 65 | {17A43425-7F91-4D65-A28A-C90B3E22863F}.Debug|Win32.Build.0 = Debug|Win32 66 | {17A43425-7F91-4D65-A28A-C90B3E22863F}.Release|Win32.ActiveCfg = Release|Win32 67 | {17A43425-7F91-4D65-A28A-C90B3E22863F}.Release|Win32.Build.0 = Release|Win32 68 | {0C8D756A-E46E-4EA0-8719-5807E6A7A5C0}.Debug|Win32.ActiveCfg = Debug|Win32 69 | {0C8D756A-E46E-4EA0-8719-5807E6A7A5C0}.Debug|Win32.Build.0 = Debug|Win32 70 | {0C8D756A-E46E-4EA0-8719-5807E6A7A5C0}.Release|Win32.ActiveCfg = Release|Win32 71 | {0C8D756A-E46E-4EA0-8719-5807E6A7A5C0}.Release|Win32.Build.0 = Release|Win32 72 | {AFB48029-6ADD-4F7A-A36C-6F0A67BC0D2C}.Debug|Win32.ActiveCfg = Debug|Win32 73 | {AFB48029-6ADD-4F7A-A36C-6F0A67BC0D2C}.Debug|Win32.Build.0 = Debug|Win32 74 | {AFB48029-6ADD-4F7A-A36C-6F0A67BC0D2C}.Release|Win32.ActiveCfg = Release|Win32 75 | {AFB48029-6ADD-4F7A-A36C-6F0A67BC0D2C}.Release|Win32.Build.0 = Release|Win32 76 | {64658378-45FE-4BA5-9C28-1A91CDC6C4EB}.Debug|Win32.ActiveCfg = Debug|Win32 77 | {64658378-45FE-4BA5-9C28-1A91CDC6C4EB}.Debug|Win32.Build.0 = Debug|Win32 78 | {64658378-45FE-4BA5-9C28-1A91CDC6C4EB}.Release|Win32.ActiveCfg = Release|Win32 79 | {64658378-45FE-4BA5-9C28-1A91CDC6C4EB}.Release|Win32.Build.0 = Release|Win32 80 | {EF96A9B9-81AE-4B35-81EC-68DB295963DB}.Debug|Win32.ActiveCfg = Debug|Win32 81 | {EF96A9B9-81AE-4B35-81EC-68DB295963DB}.Debug|Win32.Build.0 = Debug|Win32 82 | {EF96A9B9-81AE-4B35-81EC-68DB295963DB}.Release|Win32.ActiveCfg = Release|Win32 83 | {EF96A9B9-81AE-4B35-81EC-68DB295963DB}.Release|Win32.Build.0 = Release|Win32 84 | {B1E1DC1F-F6C1-4A11-8A7D-D30E0211A18E}.Debug|Win32.ActiveCfg = Debug|Win32 85 | {B1E1DC1F-F6C1-4A11-8A7D-D30E0211A18E}.Debug|Win32.Build.0 = Debug|Win32 86 | {B1E1DC1F-F6C1-4A11-8A7D-D30E0211A18E}.Release|Win32.ActiveCfg = Release|Win32 87 | {B1E1DC1F-F6C1-4A11-8A7D-D30E0211A18E}.Release|Win32.Build.0 = Release|Win32 88 | EndGlobalSection 89 | GlobalSection(SolutionProperties) = preSolution 90 | HideSolutionNode = FALSE 91 | EndGlobalSection 92 | EndGlobal 93 | -------------------------------------------------------------------------------- /current/visual_cpp/urg/urg.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/current/visual_cpp/urg/urg.vcproj -------------------------------------------------------------------------------- /current/windowsexe/cleanobj.bat: -------------------------------------------------------------------------------- 1 | REM Cleaning obj, exe, and manifest files 2 | 3 | del *.obj *.exe *.manifest 4 | -------------------------------------------------------------------------------- /current/windowsexe/compile.bat: -------------------------------------------------------------------------------- 1 | REM Compile URG library 2 | 3 | cl.exe -c -MD -I../include ../src/urg_sensor.c 4 | cl.exe -c -MD -I../include ../src/urg_utils.c 5 | cl.exe -c -MD -I../include ../src/urg_connection.c 6 | cl.exe -c -MD -I../include ../src/urg_serial.c 7 | cl.exe -c -MD -I../include ../src/urg_serial_utils.c 8 | cl.exe -c -MD -I../include ../src/urg_tcpclient.c 9 | cl.exe -c -MD -I../include ../src/urg_ring_buffer.c 10 | 11 | REM Compile sample utility 12 | 13 | cl.exe -c -MD -I../include ../samples/open_urg_sensor.c 14 | 15 | REM Compile samples linking with ws2_32.lib setupapi.lib with /MD option. 16 | 17 | cl.exe /MD -I../include ../samples/sensor_parameter.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 18 | 19 | cl.exe /MD -I../include ../samples/calculate_xy.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 20 | 21 | cl.exe /MD -I../include ../samples/get_multiecho_intensity.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 22 | 23 | cl.exe /MD -I../include ../samples/find_port.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 24 | 25 | cl.exe /MD -I../include ../samples/get_distance.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 26 | 27 | cl.exe /MD -I../include ../samples/get_distance_intensity.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 28 | 29 | cl.exe /MD -I../include ../samples/sync_time_stamp.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 30 | 31 | cl.exe /MD -I../include ../samples/get_multiecho.c open_urg_sensor.obj urg_sensor.obj urg_utils.obj urg_connection.obj urg_serial.obj urg_serial_utils.obj urg_tcpclient.obj urg_ring_buffer.obj ws2_32.lib setupapi.lib 32 | 33 | -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | urg_c 4 | 1.0.4001 5 | The urg_c package 6 | 7 | Michael Ferguson 8 | Chad Rockey 9 | Tony Baltovski 10 | 11 | BSD 12 | 13 | http://sourceforge.net/projects/urgwidget/ 14 | https://github.com/ros-drivers/urg_c/issues 15 | https://github.com/ros-drivers/urg_c 16 | 17 | Satofumi Kamimura 18 | Katsumi Kimoto 19 | Adrian Boeing 20 | 21 | ament_cmake 22 | 23 | 24 | ament_cmake 25 | 26 | 27 | -------------------------------------------------------------------------------- /split_comment.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-drivers/urg_c/53136ab9cf6760317bb322b3b3a6a4a5a661ac94/split_comment.rb --------------------------------------------------------------------------------