/tools` 目录,其提供一些有用的脚本和程序。
-
-## 依赖
-
-* [OpenCV](https://opencv.org/),部分工具需要。
- * 编译前,可在系统终端(Windows 命令提示符)里如下指定 OpenCV 路径,其为 `OpenCVConfig.cmake` 目录:
-
-```bash
-# Linux, macOS
-export OpenCV_DIR=~/opencv
-
-# Windows
-set OpenCV_DIR=C:\opencv
-```
-
-* Python 第三方库,脚本需要。
-
-```bash
-cd tools/
-sudo pip install -r requirements.txt
-```
-
-## 编译
-
-```bash
-make tools
-```
-
-## 录制数据集
-
-```bash
-./tools/_output/bin/dataset/record
-
-# Windows
-.\tools\_output\bin\dataset\record.bat
-```
-
-默认录制进 `dataset` 目录,加参数可指定该目录。
-
-## 分析数据集
-
-分析 IMU 数据,
-
-```bash
-python tools/analytics/imu_analytics.py -i dataset -c tools/config/mynteye/mynteye_config.yaml \
--al=-1.2,1.2 -gl= -gdu=d -gsu=d -kl=
-```
-
-![imu analytics](imu_analytics.png)
-
-\latexonly
-\includegraphics[width=0.6\textwidth,keepaspectratio]{imu_analytics.png}
-\endlatexonly
-
-分析图像 & IMU 时间戳,
-
-```bash
-python tools/analytics/stamp_analytics.py -i dataset -c tools/config/mynteye/mynteye_config.yaml
-```
-
-![stamp analytics](stamp_analytics.png)
-
-\latexonly
-\includegraphics[width=0.6\textwidth,keepaspectratio]{stamp_analytics.png}
-\endlatexonly
-
-> 如果用 ROS ,分析脚本也支持 ROS Bag 格式。
-
-## 结语
-
-设备信息读写、校验码等更多工具的说明,请见 `tools/README.md` 。
diff --git a/doc/zh-Hans/guides.md b/doc/zh-Hans/guides.md
deleted file mode 100644
index 39ae5c4..0000000
--- a/doc/zh-Hans/guides.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# SDK 指导 {#guides}
-
-* @subpage guide_build_linux
-* @subpage guide_build_win
-* @subpage guide_samples
-* @subpage guide_tools
-* @subpage guide_log
-* @subpage guide_opencv
-* @subpage guide_ros
diff --git a/doc/zh-Hans/mainpage.md b/doc/zh-Hans/mainpage.md
deleted file mode 100644
index 6b45b5a..0000000
--- a/doc/zh-Hans/mainpage.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# MYNT EYE S SDK {#mainpage}
-
-* API 类
-* API 模块
- * \link enumerations 枚举类型\endlink
- * \link datatypes 数据类型\endlink
- * \link utils 工具函数\endlink
- * \link calibration 内参与外参\endlink
-* 设备说明
- * @subpage specs_data
- * @subpage specs_ctrl
diff --git a/doc/zh-Hans/spec_control_api.md b/doc/zh-Hans/spec_control_api.md
deleted file mode 100644
index 6c1f9a8..0000000
--- a/doc/zh-Hans/spec_control_api.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 控制 API 说明 {#spec_control_api}
-
-控制有两种实现方式,一是通过 UVC 标准协议,二是通过 UVC 拓展通道自定义协议。
-
-## 标准协议
-
-| 名称 | 字段 | 字节数 | 默认值 | 最小值 | 最大值 | 是否储存 | Flash 地址 | 说明 |
-| :----- | :----- | :-------- | :-------- | :-------- | :-------- | :----------- | :----------- | :----- |
-| 亮度 | brightness | 2 | 192 | 0 | 255 | √ | 0x14 | 关闭自动曝光,手动设定的参数 |
-
-> UVC 标准协议实现的控制,有现成的 API 进行 Get & Set ,包括 Min, Max, Default 。
-
-## 自定义协议
-
-| 名称 | 字段 | 字节数 | 默认值 | 最小值 | 最大值 | 是否储存 | Flash 地址 | 所属通道 | 通道地址 | 说明 |
-| :----- | :----- | :-------- | :-------- | :-------- | :-------- | :----------- | :----------- | :----------- | :----------- | :----- |
-| 曝光模式 | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0x0100 | 0:开启自动曝光; 1:关闭 |
-| 最大增益 | max_gain | 2 | 8 | 0 | 255 | √ | 0x1D | XU_CAM_CTRL | 0x0100 | 开始自动曝光,可设定的阈值 |
-| 最大曝光时间 | max_exposure_time | 2 | 333 | 0 | 1000 | √ | 0x1B | XU_CAM_CTRL | 0x0100 | 开始自动曝光,可设定的阈值 |
-| 期望亮度 | desired_brightness | 2 | 122 | 1 | 255 | √ | 0x19 | XU_CAM_CTRL | 0x0100 | |
-| 擦除芯片 | erase_chip | | - | - | - | × | - | XU_HALF_DUPLEX | 0x0200 | |
-| 最小曝光时间 | min_exposure_time | 2 | 0 | 0 | 1000 | √ | - | XU_CAM_CTRL | 0x0100 | 开始自动曝光,可设定的阈值 |
-| 加速度计量程 | accelerometer_range | 2 | 12 | 6 | 48 | √ | - | XU_CAM_CTRL | 0x0100 | |
-| 陀螺仪量程 | gyroscope_range | 2 | 1000 | 250 | 4000 | √ | - | XU_CAM_CTRL | 0x0100 | |
-| 加速度计低通滤波 | accelerometer_low_pass_filter | 2 | 2 | 0 | 2 | √ | - | XU_CAM_CTRL | 0x0100 | |
-| 陀螺仪低通滤波 | gyroscope__low_pass_filter | 2 | 64 | 23 | 64 | √ | - | XU_CAM_CTRL | 0x0100 | |
-
diff --git a/doc/zh-Hans/spec_control_channel.md b/doc/zh-Hans/spec_control_channel.md
deleted file mode 100644
index b232943..0000000
--- a/doc/zh-Hans/spec_control_channel.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# 拓展通道说明 {#spec_control_channel}
-
-| 名称 | 字段 | 地址 | 带宽 | 说明 |
-| :----- | :----- | :----- | :----- | :----- |
-| 相机控制通道 | XU_CAM_CTRL_CHANNEL | 1 | 3 | |
-| 半双工通道 | XU_HALF_DUPLEX_CHANNEL | 2 | 20 | |
-| IMU 请求通道 | XU_IMUDATA_WRITE_CHANNEL | 3 | 5 | |
-| IMU 响应通道 | XU_IMUDATA_READ_CHANNEL | 4 | 2000 | |
-| 文件通道 | XU_FILE_CHANNEL | 5 | 2000 | |
-
-## 相机控制通道
-
-相机控制通道是那些需要 Get & Set & Query 的控制通道,其中 Query 细分为 Min, Max, Default 。
-
-## 半双工通道
-
-半双工通道是那些仅需 Set 的控制通道,如请求零漂矫正。
-
-## IMU 通道
-
-用来请求和响应 IMU 数据的通道,可参见 @ref spec_imu_data 。
-
-## 文件通道
-
-用来读写硬件信息、图像参数、 IMU 参数的通道。
-
-| Name | Header | Size | File | Checksum |
-| :--- | :----- | :--- | :--- | :-------- |
-| 字节数 | 1 | 2 | - | 1 |
-| 类型 | uint8_t | uint16_t | - | uint8_t |
-| 描述 | 标识 | 文件内容大小 | 文件内容 | 校验码(文件内容所有字节异或) |
-
-| Header Bit Subscript | Description |
-| :------------------- | :---------- |
-| 0 | 硬件信息 |
-| 1 | 图像参数 |
-| 2 | IMU 参数 |
-| 3~6 | 未定义 |
-| 7 | 0: Get; 1: Set |
-
-### 文件内容包
-
-| Name | ID | Size | Content |
-| :--- | :- | :--- | :------ |
-| 字节数 | 1 | 2 | - |
-| 类型 | uint8_t | uint16_t | - |
-| 描述 | 内容 ID | 内容大小 | 内容 |
-
-| File | ID | Max Size |
-| :--- | :- | :------- |
-| 硬件信息 | 1 | 250 |
-| 图像参数 | 2 | 404 |
-| IMU 参数 | 4 | 500 |
diff --git a/doc/zh-Hans/spec_hardware_info.md b/doc/zh-Hans/spec_hardware_info.md
deleted file mode 100644
index ba2dd41..0000000
--- a/doc/zh-Hans/spec_hardware_info.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# 硬件信息说明 {#spec_hardware_info}
-
-| 名称 | 字段 | 固定值 | 描述符获取 | 拓展通道获取 | 字节数 | 说明 |
-| :----- | :----- | :-------- | :-------------- | :----------------- | :-------- | :----- |
-| VID | vid | 0x04B4 | √ | × | 2 | |
-| PID | pid | 0x00F9 | √ | × | 2 | |
-| 设备名称 | name | MYNT-EYE-? | √ | √ Get | 16 | MYNT-EYE-S1000 |
-| 序列号 | serial_number | - | √ | √ Get | 16 | |
-| 固件版本 | firmware_version | - | √ | √ Get | 2 | major,minor |
-| 硬件版本 | hardware_version | - | × | √ Get | 3 | major,minor,flag |
-| 协议版本 | spec_version | - | × | √ Get | 2 | major,minor |
-| 镜头类型 | lens_type | - | × | √ Get/Set | 4 | vendor(2),product(2) ,未 Set 默认 0 |
-| IMU 类型 | imu_type | - | × | √ Get/Set | 4 | vendor(2),product(2) ,未 Set 默认 0 |
-| 基线长度 | nominal_baseline | - | × | √ Get/Set | 2 | 单位 mm ,未 set 默认 0 |
-| 辅助芯片版本 | auxiliary_chip_version | - | × | √ Get | 2 | major,minor |
-| ISP版本 | isp_version | - | × | √ Get | 2 | major,minor |
-
-* 描述符获取:指通用 USB 设备信息,可用工具查看。
-* 拓展通道获取:指通过拓展通道(UVC Extension Unit)问硬件获取到的信息,需要读取。
diff --git a/doc/zh-Hans/spec_image_data.md b/doc/zh-Hans/spec_image_data.md
deleted file mode 100644
index bb5261d..0000000
--- a/doc/zh-Hans/spec_image_data.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# 图像数据说明 {#spec_image_data}
-
-| 名称 | 字段 | 单位 | 字节数 | 说明 |
-| :----- | :----- | :----- | :-------- | :----- |
-| 帧 ID | frame_id | - | 2 | uint16_t; [0,65535] |
-| 时间戳 | timestamp | 1 us | 8 | uint64_t |
-| 曝光时间 | exposure_time | 1 us | 2 | uint16_t |
-
-> 图像数据传输方式:倒序排在图像尾部。
-
-## 图像数据包
-
-| Name | Header | Size | FrameID | Timestamp | ExposureTime | Checksum |
-| :--- | :----- | :--- | :------ | :-------- | :----------- | :------- |
-| 字节数 | 1 | 1 | 2 | 8 | 2 | 1 |
-| 类型 | uint8_t | uint8_t | uint16_t | uint64_t | uint16_t | uint8_t |
-| 描述 | 0x3B | 0x10 (数据内容大小) | 帧 ID | 时间戳 | 曝光时间 | 校验码(数据内容所有字节异或) |
-
-* 数据包校验不过,会丢弃该帧。
-* 时间的单位精度为: 1 us 。
-* 时间累计是从上电时从开始,而不是从打开时开始。
diff --git a/doc/zh-Hans/spec_image_params.md b/doc/zh-Hans/spec_image_params.md
deleted file mode 100644
index dad04f8..0000000
--- a/doc/zh-Hans/spec_image_params.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 图像参数说明 {#spec_image_params}
-
-## 图像内参
-
-| 名称 | 字段 | 单位 | 字节数 | 说明 |
-| :----- | :----- | :----- | :-------- | :----- |
-| 宽度 | width | px | 2 | uint16_t; [0,65535] |
-| 高度 | height | px | 2 | uint16_t; [0,65535] |
-| 焦距 | fx | - | 8 | double |
-| ^ | fy | - | 8 | double |
-| 图像中心 | cx | - | 8 | double |
-| ^ | cy | - | 8 | double |
-| 畸变模型 | model | - | 1 | uint8_t; pinhole,... |
-| 畸变参数 | coeffs[5] | - | 40 | double; k1,k2,p1,p2,k3 |
-
-> 图像分辨率不同,内参不同。多分辨率的话,需有多个内参。
-
-## 图像外参
-
-Left Image 到 Right Image 的变换矩阵。
-
-| 名称 | 字段 | 单位 | 字节数 | 说明 |
-| :----- | :----- | :----- | :-------- | :----- |
-| 旋转矩阵 | rotation[3][3] | - | 72 | double |
-| 平移矩阵 | translation[3] | - | 24 | double |
diff --git a/doc/zh-Hans/spec_imu_data.md b/doc/zh-Hans/spec_imu_data.md
deleted file mode 100644
index 34f3490..0000000
--- a/doc/zh-Hans/spec_imu_data.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# IMU 数据说明 {#spec_imu_data}
-
-## IMU 请求数据包
-
-| Name | Header | Serial Number |
-| :--- | :----- | :------------ |
-| 字节数 | 1 | 4 |
-| 类型 | uint8_t | uint32_t |
-| 描述 | 0x5A | 首次请求写 0 ,不然写上次响应数据包最后一个 IMU 包的序列号 |
-
-## IMU 响应数据包
-
-IMU 响应数据包里会包含1个 IMU 包,而每个 IMU 包又带有多个 IMU 段。
-
-| Name | Header | State | Size | IMU Packets | Checksum |
-| :--- | :----- | :---- | :--- | :---------- | :------- |
-| 字节数 | 1 | 1 | 2 | ... | 1 |
-| 类型 | uint8_t | uint8_t | uint16_t | - | uint8_t |
-| 描述 | 0x5B | 正常状态为 0 ,否则错误 | 数据内容大小 | 所包含的 IMU 包 | 校验码(数据内容所有字节异或) |
-
-### IMU 包
-
-IMU 包/小包,是一组 IMU 数据。
-
-| Name | Count | IMU Datas |
-| :--- | :-----| :-------- |
-| 字节数 | 2 | ... |
-| 类型 | uint16_t | - |
-| 描述 | IMU 段数量 | 所包含的 IMU 段 |
-
-### IMU 段
-
-| Name | Serial Number | Timestamp | flag | Temperature | Accelerometer or Gyroscope |
-| :--- | :------------ | :-------- | :----| :----------- | :------------------------- |
-| 字节数 | 4 | 8 | 1 | 2 | 6 |
-| 类型 | uint32_t | uint64_t | int8_t | int16_t | int16_t * 3 |
-| Description | 序列号 | 时间戳 | 指定传感器类型 | IMU 的温度 | 陀螺仪或陀螺仪 x y z 三轴的值 |
-
-* 加速度计和陀螺仪的计量值换算成物理值公式: **real = data * range / 0x10000** 。
- * 加速度计量程默认值为 **12 g** ,陀螺仪量程默认值为 **1000 deg/s** 。
-* 温度计量值换算成物理值公式: **real = data / ratio + offset** 。
- * ``ratio`` 默认值为 **326.8** , ``offset`` 默认值为 **25℃** 。
diff --git a/doc/zh-Hans/spec_imu_params.md b/doc/zh-Hans/spec_imu_params.md
deleted file mode 100644
index 18dbc66..0000000
--- a/doc/zh-Hans/spec_imu_params.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# IMU 参数说明 {#spec_imu_params}
-
-## IMU 内参
-
-| 名称 | 字段 | 单位 | 字节数 | 说明 |
-| :----- | :----- | :----- | :-------- | :----- |
-| 比例因子 | acc_scale[3][3] | - | 72 | double |
-| ^ | gyro_scale[3][3] | - | 72 | double |
-| 零漂 | acc_drift[3] | - | 24 | double |
-| ^ | gyro_drift[3] | - | 24 | double |
-| 噪声密度 | acc_noise[3] | - | 24 | double |
-| ^ | gyro_noise[3] | - | 24 | double |
-| 随机游走 | acc_bias[3] | - | 24 | double |
-| ^ | gyro_bias[3] | - | 24 | double |
-
-## IMU 外参
-
-Left Image 到 IMU 的变换矩阵。
-
-| 名称 | 字段 | 单位 | 字节数 | 说明 |
-| :----- | :----- | :----- | :-------- | :----- |
-| 旋转矩阵 | rotation[3][3] | - | 72 | double |
-| 平移矩阵 | translation[3] | - | 24 | double |
diff --git a/doc/zh-Hans/specs_ctrl.md b/doc/zh-Hans/specs_ctrl.md
deleted file mode 100644
index 8232e93..0000000
--- a/doc/zh-Hans/specs_ctrl.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 设备控制说明 {#specs_ctrl}
-
-* @subpage spec_control_api
-* @subpage spec_control_channel
diff --git a/doc/zh-Hans/specs_data.md b/doc/zh-Hans/specs_data.md
deleted file mode 100644
index a963b6b..0000000
--- a/doc/zh-Hans/specs_data.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# 设备数据说明 {#specs_data}
-
-* @subpage spec_hardware_info
-* @subpage spec_image_params
-* @subpage spec_imu_params
-* @subpage spec_image_data
-* @subpage spec_imu_data
diff --git a/doc/en/api.doxyfile b/docs/Doxyfile
similarity index 99%
rename from doc/en/api.doxyfile
rename to docs/Doxyfile
index 72e3fd4..745eed7 100644
--- a/doc/en/api.doxyfile
+++ b/docs/Doxyfile
@@ -38,27 +38,27 @@ PROJECT_NAME = "MYNT EYE S SDK"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 2.3.3
+PROJECT_NUMBER = 2.3.4
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF = http://www.myntai.com/mynteye/standard
+PROJECT_BRIEF = https://www.myntai.com/mynteye/standard
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
-PROJECT_LOGO = ../static/images/icon.png
+PROJECT_LOGO =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = ../_output/en
+OUTPUT_DIRECTORY = _doxygen
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -791,17 +791,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
-INPUT = mainpage.md \
- specs_data.md \
- spec_hardware_info.md \
- spec_image_params.md \
- spec_imu_params.md \
- spec_image_data.md \
- spec_imu_data.md \
- specs_ctrl.md \
- spec_control_api.md \
- spec_control_channel.md \
- /usr/local/include/mynteye
+INPUT = ../include/mynteye
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -938,7 +928,7 @@ EXAMPLE_RECURSIVE = NO
# that contain images that are to be included in the documentation (see the
# \image command).
-IMAGE_PATH = ../static/images
+IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
@@ -1115,7 +1105,7 @@ IGNORE_PREFIX =
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES.
-GENERATE_HTML = YES
+GENERATE_HTML = NO
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1185,7 +1175,7 @@ HTML_STYLESHEET =
# list). For an example see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_STYLESHEET = ../static/custom.css
+HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
@@ -1667,7 +1657,7 @@ EXTRA_SEARCH_MAPPINGS =
# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES.
-GENERATE_LATEX = YES
+GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1947,7 +1937,7 @@ MAN_LINKS = NO
# captures the structure of the code including all documentation.
# The default value is: NO.
-GENERATE_XML = NO
+GENERATE_XML = YES
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -2102,7 +2092,8 @@ INCLUDE_FILE_PATTERNS =
PREDEFINED = DOXYGEN_WORKING \
"MYNTEYE_BEGIN_NAMESPACE=namespace mynteye {" \
- "MYNTEYE_END_NAMESPACE=}"
+ "MYNTEYE_END_NAMESPACE=}" \
+ "MYNTEYE_API=" "LAST="
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..298ea9e
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,19 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+SOURCEDIR = .
+BUILDDIR = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/docs/api/api.rst b/docs/api/api.rst
new file mode 100644
index 0000000..aebeac5
--- /dev/null
+++ b/docs/api/api.rst
@@ -0,0 +1,23 @@
+API
+===
+
+API
+---
+
+.. doxygenclass:: mynteye::API
+ :project: mynteyes
+ :members:
+
+api::StreamData
+---------------
+
+.. doxygenstruct:: mynteye::api::StreamData
+ :project: mynteyes
+ :members:
+
+api::MotionData
+---------------
+
+.. doxygenstruct:: mynteye::api::MotionData
+ :project: mynteyes
+ :members:
diff --git a/docs/api/device.rst b/docs/api/device.rst
new file mode 100644
index 0000000..bb4e193
--- /dev/null
+++ b/docs/api/device.rst
@@ -0,0 +1,30 @@
+Device
+======
+
+Device
+------
+
+.. doxygenclass:: mynteye::Device
+ :project: mynteyes
+ :members:
+
+device::Frame
+-------------
+
+.. doxygenclass:: mynteye::device::Frame
+ :project: mynteyes
+ :members:
+
+device::StreamData
+------------------
+
+.. doxygenstruct:: mynteye::device::StreamData
+ :project: mynteyes
+ :members:
+
+device::MotionData
+------------------
+
+.. doxygenstruct:: mynteye::device::MotionData
+ :project: mynteyes
+ :members:
diff --git a/docs/api/enums.rst b/docs/api/enums.rst
new file mode 100644
index 0000000..29e02da
--- /dev/null
+++ b/docs/api/enums.rst
@@ -0,0 +1,67 @@
+Enums
+=====
+
+..
+ .. doxygengroup:: enumerations
+ :project: mynteyes
+
+Model
+-----
+
+.. doxygenenum:: mynteye::Model
+ :project: mynteyes
+
+Stream
+------
+
+.. doxygenenum:: mynteye::Stream
+ :project: mynteyes
+
+
+Capabilities
+------------
+
+.. doxygenenum:: mynteye::Capabilities
+ :project: mynteyes
+
+Info
+----
+
+.. doxygenenum:: mynteye::Info
+ :project: mynteyes
+
+Option
+------
+
+.. doxygenenum:: mynteye::Option
+ :project: mynteyes
+
+Source
+------
+
+.. doxygenenum:: mynteye::Source
+ :project: mynteyes
+
+AddOns
+------
+
+.. doxygenenum:: mynteye::AddOns
+ :project: mynteyes
+
+Format
+------
+
+.. doxygenenum:: mynteye::Format
+ :project: mynteyes
+
+CalibrationModel
+----------------
+
+.. doxygenenum:: mynteye::CalibrationModel
+ :project: mynteyes
+
+DisparityComputingMethod
+------------------------
+
+.. doxygenenum:: mynteye::DisparityComputingMethod
+ :project: mynteyes
diff --git a/docs/api/types.rst b/docs/api/types.rst
new file mode 100644
index 0000000..3fa342a
--- /dev/null
+++ b/docs/api/types.rst
@@ -0,0 +1,75 @@
+Types
+=====
+
+OptionInfo
+----------
+
+.. doxygenstruct:: mynteye::OptionInfo
+ :project: mynteyes
+ :members:
+
+Resolution
+----------
+
+.. doxygenstruct:: mynteye::Resolution
+ :project: mynteyes
+ :members:
+
+StreamRequest
+-------------
+
+.. doxygenstruct:: mynteye::StreamRequest
+ :project: mynteyes
+ :members:
+
+Intrinsics
+----------
+
+IntrinsicsPinhole
+~~~~~~~~~~~~~~~~~
+
+.. doxygenstruct:: mynteye::IntrinsicsPinhole
+ :project: mynteyes
+ :members:
+
+IntrinsicsEquidistant
+~~~~~~~~~~~~~~~~~~~~~
+
+.. doxygenstruct:: mynteye::IntrinsicsEquidistant
+ :project: mynteyes
+ :members:
+
+ImuIntrinsics
+~~~~~~~~~~~~~
+
+.. doxygenstruct:: mynteye::ImuIntrinsics
+ :project: mynteyes
+ :members:
+
+MotionIntrinsics
+~~~~~~~~~~~~~~~~~
+
+.. doxygenstruct:: mynteye::MotionIntrinsics
+ :project: mynteyes
+ :members:
+
+Extrinsics
+----------
+
+.. doxygenstruct:: mynteye::Extrinsics
+ :project: mynteyes
+ :members:
+
+ImgData
+-------
+
+.. doxygenstruct:: mynteye::ImgData
+ :project: mynteyes
+ :members:
+
+ImuData
+-------
+
+.. doxygenstruct:: mynteye::ImuData
+ :project: mynteyes
+ :members:
diff --git a/docs/api/utils.rst b/docs/api/utils.rst
new file mode 100644
index 0000000..443278e
--- /dev/null
+++ b/docs/api/utils.rst
@@ -0,0 +1,32 @@
+Utils
+=====
+
+select
+------
+
+.. doxygenfunction:: select
+ :project: mynteyes
+
+select_request
+--------------
+
+.. doxygenfunction:: select_request
+ :project: mynteyes
+
+get_real_exposure_time
+----------------------
+
+.. doxygenfunction:: get_real_exposure_time
+ :project: mynteyes
+
+get_sdk_root_dir
+----------------
+
+.. doxygenfunction:: get_sdk_root_dir
+ :project: mynteyes
+
+get_sdk_install_dir
+-------------------
+
+.. doxygenfunction:: get_sdk_install_dir
+ :project: mynteyes
diff --git a/doc/arch.graphml b/docs/arch.graphml
similarity index 100%
rename from doc/arch.graphml
rename to docs/arch.graphml
diff --git a/doc/arch.jpg b/docs/arch.jpg
similarity index 100%
rename from doc/arch.jpg
rename to docs/arch.jpg
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..3312174
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,194 @@
+# -*- coding: utf-8 -*-
+#
+# Configuration file for the Sphinx documentation builder.
+#
+# This file does only contain a selection of the most common options. For a
+# full list see the documentation:
+# http://www.sphinx-doc.org/en/master/config
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+
+# -- Project information -----------------------------------------------------
+
+project = 'MYNT® EYE S SDK'
+copyright = '2018, MYNTAI'
+author = 'MYNTAI'
+
+# The short X.Y version
+version = '2.3.4'
+# The full version, including alpha/beta/rc tags
+release = version
+
+
+# -- General configuration ---------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+ 'breathe',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = 'en'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = None
+
+
+# on_rtd is whether we are on readthedocs.org
+import os
+on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+
+import subprocess
+subprocess.call('doxygen', shell=True)
+
+
+# -- Options for HTML output -------------------------------------------------
+
+if not on_rtd: # only import and set the theme if we're building docs locally
+ import sphinx_rtd_theme
+
+ # The theme to use for HTML and HTML Help pages. See the documentation for
+ # a list of builtin themes.
+ #
+ # html_theme = 'alabaster'
+ html_theme = 'sphinx_rtd_theme'
+ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+
+ # Theme options are theme-specific and customize the look and feel of a theme
+ # further. For a list of options available for each theme, see the
+ # documentation.
+ #
+ # html_theme_options = {}
+
+ # Add any paths that contain custom static files (such as style sheets) here,
+ # relative to this directory. They are copied after the builtin static files,
+ # so a file named "default.css" will overwrite the builtin "default.css".
+ # html_static_path = ['_static']
+
+ # Custom sidebar templates, must be a dictionary that maps document names
+ # to template names.
+ #
+ # The default sidebars (for documents that don't match any pattern) are
+ # defined by theme itself. Builtin themes are using these templates by
+ # default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
+ # 'searchbox.html']``.
+ #
+ # html_sidebars = {}
+
+# otherwise, readthedocs.org uses their theme by default, so no need to specify it
+
+
+# -- Options for HTMLHelp output ---------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'MYNTEYESSDKdoc'
+
+
+# -- Options for LaTeX output ------------------------------------------------
+
+latex_elements = {
+ # The paper size ('letterpaper' or 'a4paper').
+ #
+ # 'papersize': 'letterpaper',
+
+ # The font size ('10pt', '11pt' or '12pt').
+ #
+ # 'pointsize': '10pt',
+
+ # Additional stuff for the LaTeX preamble.
+ #
+ # 'preamble': '',
+
+ # Latex figure (float) alignment
+ #
+ # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ (master_doc, 'MYNTEYESSDK.tex', 'MYNT® EYE S SDK Documentation',
+ 'MYNTAI', 'manual'),
+]
+
+
+# -- Options for manual page output ------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ (master_doc, 'mynteyessdk', 'MYNT® EYE S SDK Documentation',
+ [author], 1)
+]
+
+
+# -- Options for Texinfo output ----------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ (master_doc, 'MYNTEYESSDK', 'MYNT® EYE S SDK Documentation',
+ author, 'MYNTEYESSDK', 'One line description of project.',
+ 'Miscellaneous'),
+]
+
+
+# -- Options for Epub output -------------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = project
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#
+# epub_identifier = ''
+
+# A unique identification for the text.
+#
+# epub_uid = ''
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ['search.html']
+
+
+# -- Extension configuration -------------------------------------------------
+
+breathe_projects = { 'mynteyes': '_doxygen/xml' }
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..4dfd886
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,25 @@
+.. MYNT® EYE S SDK documentation master file, created by
+ sphinx-quickstart on Mon Mar 11 08:59:35 2019.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+MYNT® EYE S SDK
+===============
+
+.. toctree::
+ :caption: API REFERENCE
+ :maxdepth: 2
+
+ api/api
+ api/device
+ api/enums
+ api/types
+ api/utils
+
+..
+ Indices and tables
+ ==================
+
+ * :ref:`genindex`
+ * :ref:`modindex`
+ * :ref:`search`
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 0000000..7893348
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,35 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+ echo.
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+ echo.installed, then set the SPHINXBUILD environment variable to point
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
+ echo.may add the Sphinx directory to PATH.
+ echo.
+ echo.If you don't have Sphinx installed, grab it from
+ echo.http://sphinx-doc.org/
+ exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+
+:end
+popd
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 0000000..f3eb52c
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,5 @@
+breathe>=4.11.1
+restructuredtext-lint>=1.1.3
+Sphinx>=1.8.1
+sphinx-intl>=0.9.11
+sphinx-rtd-theme>=0.4.2
diff --git a/include/mynteye/types.h b/include/mynteye/types.h
index adf52c8..27a4358 100644
--- a/include/mynteye/types.h
+++ b/include/mynteye/types.h
@@ -137,109 +137,125 @@ enum class Info : std::uint8_t {
enum class Option : std::uint8_t {
/**
* Image gain, valid if manual-exposure
- *
+ *
* range: [0,48], default: 24
+ *
*/
GAIN,
/**
* Image brightness, valid if manual-exposure
- *
+ *
* range: [0,240], default: 120
+ *
*/
BRIGHTNESS,
/**
* Image contrast, valid if manual-exposure
- *
+ *
* range: [0,255], default: 127
+ *
*/
CONTRAST,
/**
* Image frame rate, must set IMU_FREQUENCY together
- *
+ *
* values: {10,15,20,25,30,35,40,45,50,55,60}, default: 25
+ *
*/
FRAME_RATE,
/**
* IMU frequency, must set FRAME_RATE together
- *
+ *
* values: {100,200,250,333,500}, default: 200
+ *
*/
IMU_FREQUENCY,
/**
* Exposure mode
- *
- * 0: enable auto-exposure
+ *
+ * 0: enable auto-exposure
* 1: disable auto-exposure (manual-exposure)
+ *
*/
EXPOSURE_MODE,
/**
* Max gain, valid if auto-exposure
- *
- * range of standard 1: [0,48], default: 48
+ *
+ * range of standard 1: [0,48], default: 48
* range of standard 2: [0,255], default: 8
+ *
*/
MAX_GAIN,
/**
* Max exposure time, valid if auto-exposure
- *
- * range of standard 1: [0,240], default: 240
+ *
+ * range of standard 1: [0,240], default: 240
* range of standard 2: [0,1000], default: 333
+ *
*/
MAX_EXPOSURE_TIME,
/**
* min exposure time, valid if auto-exposure
- *
- * range: [0,1000], default: 0
+ *
+ * range: [0,1000], default: 0
+ *
*/
MIN_EXPOSURE_TIME,
/**
* Desired brightness, valid if auto-exposure
- *
- * range of standard 1: [0,255], default: 192
+ *
+ * range of standard 1: [0,255], default: 192
* range of standard 2: [1,255], default: 122
+ *
*/
DESIRED_BRIGHTNESS,
/**
* IR control
- *
- * range: [0,160], default: 0
+ *
+ * range: [0,160], default: 0
+ *
*/
IR_CONTROL,
/**
* HDR mode
- *
- * 0: 10-bit
+ *
+ * 0: 10-bit
* 1: 12-bit
+ *
*/
HDR_MODE,
/**
* The range of accelerometer
- *
- * value of standard 1: {4,8,16,32}, default: 8
+ *
+ * value of standard 1: {4,8,16,32}, default: 8
* value of standard 2: {6,12,24,48}, default: 12
+ *
*/
ACCELEROMETER_RANGE,
/**
* The range of gyroscope
- *
- * value of standard 1: {500,1000,2000,4000}, default: 1000
+ *
+ * value of standard 1: {500,1000,2000,4000}, default: 1000
* value of standard 2: {250,500,1000,2000,4000}, default: 1000
+ *
*/
GYROSCOPE_RANGE,
/**
* The parameter of accelerometer low pass filter
- *
+ *
* values: {0,1,2}, default: 2
+ *
*/
ACCELEROMETER_LOW_PASS_FILTER,
/**
* The parameter of gyroscope low pass filter
- *
+ *
* values: {23,64}, default: 64
+ *
*/
GYROSCOPE_LOW_PASS_FILTER,
@@ -608,10 +624,11 @@ struct MYNTEYE_API ImuData {
std::uint32_t frame_id;
/**
* IMU accel or gyro flag
- *
- * 0: accel and gyro are both valid
- * 1: accel is valid
+ *
+ * 0: accel and gyro are both valid
+ * 1: accel is valid
* 2: gyro is valid
+ *
*/
std::uint8_t flag;
/** IMU timestamp in 1us */