Commit Graph

172 Commits

Author SHA1 Message Date
morris
89d7f7bc89 doc/i2c-example: cleanup readme of i2c example
1. Update i2c README to add more detail according to the template.[TW#26530]
2. Move some specific configuration to KConfig
2018-10-12 10:24:39 +08:00
Angus Gratton
fc2230aeda Merge branch 'feature/error_check_without_abort' into 'master'
esp32: Add macro to check a condition without abort

See merge request idf/esp-idf!3348
2018-10-10 14:31:38 +08:00
Krzysztof Budzynski
cd5f8bcf74 MCPWM API doc update 2018-10-10 08:15:23 +08:00
Roland Dobai
d4e572bdb1 esp32: Add macro to check a condition without abort
Closes https://github.com/espressif/esp-idf/issues/2325
2018-10-09 08:57:23 +02:00
Angus Gratton
a95dd4712b Merge branch 'doc/rmt_readme_typo_fix' into 'master'
doc(rmt): fixed some typos in rmt example readme file

See merge request idf/esp-idf!3283
2018-10-08 07:25:10 +08:00
Krzysztof
bce5d7ba01 Implemented the first round of review comments 2018-09-28 14:04:22 +08:00
Krzysztof
cc52029d14 Updated sigma-delta example description to the latest template 2018-09-28 14:04:22 +08:00
Roland Dobai
17b7959de9 Examples: Add Python 2&3 support 2018-09-25 08:05:56 +02:00
Ivan Grokhotkov
2e6e87816c Merge branch 'feature/crosstool_backport' into 'master'
Backport of work of gcc8 toolchain to v3

See merge request idf/esp-idf!3154
2018-09-21 14:07:41 +08:00
Michael (Xiao Xufeng)
4af51833f3 spi_master: add new polling mode to decrease time cost each transaction 2018-09-20 19:46:46 +08:00
Anton Maklakov
43116e6e2d examples/sdio: Fix an uninitialized buffer which sometimes caused a test fail 2018-09-20 18:53:15 +08:00
kooho
50a5985b06 doc(rmt): fixed some typos in rmt example readme file 2018-09-17 10:21:07 +08:00
Angus Gratton
cbcc60ae5f Merge branch 'doc/rmt_example_doc_improve' into 'master'
doc(rmt): update README.md file of rmt related example.

See merge request idf/esp-idf!2636
2018-09-12 14:58:04 +08:00
Renz Christian Bagaporo
d9939cedd9 cmake: make main a component again 2018-09-11 09:44:12 +08:00
Angus Gratton
b355854d4d Merge branch 'master' into feature/cmake 2018-09-05 10:35:04 +08:00
Ivan Grokhotkov
97b2281c49 Merge branch 'bugfix/can_driver_multiple_bugs' into 'master'
CAN: Add pm_lock, fix gpio bug, update docs

See merge request idf/esp-idf!3138
2018-09-04 20:34:06 +08:00
Darian Leung
dc3fa14a26 CAN: Add pm_lock, fix gpio bug, update docs
This commit does the following

- Add power management lock to CAN driver so that APB frequency does not change
whilst CAN driver is in use
- Fix incorrect flag in can_transmit()
- Refactor can_driver_install() and can_driver_uninstall() so that critical sections
are shorter
- Fix CAN gpio configuration bug on RX pin. Closes #2302
- Add docs about multiple ID configuration and fix example links
2018-09-01 02:46:05 +08:00
Angus Gratton
a9c4ed7139 Merge branch 'master' into feature/cmake 2018-08-30 18:51:01 +08:00
Angus Gratton
5689e446dc cmake: Add missing example CMakeLists.txt files, CI check all examples have both 2018-08-29 20:22:55 +08:00
Michael (XIAO Xufeng)
0c64d8e822 spi: fix the misleading example, letting the master wait until slave is ready 2018-08-29 18:40:21 +08:00
Ivan Grokhotkov
c3123b00ae examples/spi_slave: check for truncation in snprintf call
Also fix character array initializer
2018-08-29 14:40:28 +08:00
Angus Gratton
ff2404a272 Merge branch 'master' into feature/cmake 2018-08-16 17:14:17 +10:00
kooho
01516abe5a Add some comments in pcnt.h. 2018-07-24 10:33:58 +08:00
Angus Gratton
2ae758ebcb Merge branch 'bugfix/spi_sdio_sdkconfig_include' into 'master'
sdio_example/spi: fix sdkconfig include issue

See merge request idf/esp-idf!2756
2018-07-16 08:00:15 +08:00
Hou Wen Xiang
733f73067c Update README.md 2018-07-15 12:56:23 +08:00
Hou Wen Xiang
fe238af249 Update README.md 2018-07-15 12:52:55 +08:00
Angus Gratton
a67d5d89e0 Replace all DOS line endings with Unix
Command run was:
git ls-tree -r HEAD --name-only | xargs dos2unix
2018-07-12 19:10:37 +08:00
Michael (XIAO Xufeng)
95dbfbe4c0 sdio_example/spi: fix sdkconfig include issue
(MINOR CHANGES)
2018-07-12 15:59:16 +08:00
michael
597eda5f0b fix(sdio_slave): improve sdio slave for high speed and 4 bit mode 2018-07-06 18:17:50 +08:00
michael
823ebba0f0 fix(sdio_slave): fix minor issues like return value of send function, output arg, etc. 2018-07-06 18:17:49 +08:00
Darian Leung
1d2727f4c8 CAN Driver
The following commit contains the first version of the ESP32 CAN Driver.

closes #544
2018-07-04 14:01:57 +08:00
Alex Lisitsyn
a9fca0c775 driver: add rs485 half duplex interface support to uart driver (fix after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag
uart.c/h: fix param errors
test_uart.c: Remove GCC warning supress
uart.rst: fix the notes
rs485_example.c: fix output
uart.c: remove reset using UART_RXFIFO_RST from driver.
readme.md: Update example description

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
ef5dc73f6f driver: add rs485 half duplex interface support to uart driver (update after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag
uart.c/h: fix param errors
test_uart.c: Remove GCC warning supress
uart.rst: fix the notes
rs485_example.c: fix output

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
51e9cf6848 driver: add rs485 half duplex interface support to uart driver (update after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
hou wen xiang
cb8ab7c6a8 driver(rmt): update README.md file of rmt related example. 2018-06-29 11:03:09 +08:00
Konstantin Kondrashov
899fa2dc55 assert: Fix. Move useful functions from wrapped assert functions
Moved useful functions from wrapped assert functions, because option `CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED=y` will remove this functions.

Closes https://github.com/espressif/esp-idf/issues/2068
2018-06-22 15:17:55 +05:00
Michael (XIAO Xufeng)
90345050b2 example(sdio): example to use sdmmc host to do SDIO communication with SDIO slave 2018-06-20 07:00:05 +00:00
fuzhibo
9a0d57b90b bugfix(touch pad): modify deep-sleep example and add note for sleep api.
Closes https://github.com/espressif/esp-idf/issues/2052
2018-06-20 10:57:26 +08:00
Angus Gratton
6b9784cc45 Merge branch 'master' into feature/cmake_update 2018-05-31 14:46:23 +10:00
Ivan Grokhotkov
cb649e452f remove executable permission from source files 2018-05-29 20:07:45 +08:00
Angus Gratton
c9f8470fdf Merge branch 'feature/rmt_translator' into 'master'
driver(rmt): Add API supports sending uint8_t type data

See merge request idf/esp-idf!1975
2018-05-23 07:27:14 +08:00
Angus Gratton
75c27202f7 Merge branch 'feature/update_touchpad_filter_process' into 'master'
driver(touchpad): Change the measuring mode, improve the software filter.

See merge request idf/esp-idf!2358
2018-05-22 09:56:55 +08:00
kooho
5bc8ae3b3a driver(rmt):Add API supports sending uint8_t type data. 2018-05-22 01:55:44 +00:00
Wangjialin
09181b7d94 driver(touchpad): improve touchpad filter mode and update examples. 2018-05-21 14:45:31 +08:00
Roland Dobai
18e83bcd53 Allow VFS file descriptors in select() 2018-05-18 08:06:33 +02:00
Angus Gratton
51aceaa030 Merge branch 'bugfix/idle_task_stack_size' into 'master'
freertos: Bump default idle task stack size to 1536 bytes

See merge request idf/esp-idf!2411
2018-05-18 10:10:13 +08:00
Zhang Zhao Xiang
9deb58859c fix i2s mix result and error code 2018-05-17 10:59:04 +08:00
Angus Gratton
4719bab2f3 freertos: Bump default idle task stack size to 1536 bytes
In situations where idle task runs a lot of idle hooks or cleanup code
(due to pthread local storage, etc) it can use more than 1KB of stack.

(I think the trigger is if a context switch happens at the right point
in the TLS cleanup).

Also removes an sdkconfig.default which accidentally set all config items,
including this stack size.
2018-05-17 10:37:24 +08:00
Jiang Jiang Jian
8128dd245d Merge branch 'bugfix/rmt_tx_cmd' into 'master'
example(rmt): tx cmd without negative coding

See merge request idf/esp-idf!1884
2018-05-16 17:39:04 +08:00
Michael (XIAO Xufeng)
dd91152589 example(spi_master): add descriptions about LCD example 2018-05-03 11:48:26 +08:00
Angus Gratton
381be65472 cmake: Build all examples in CI
Includes some fixes for compile errors/warnings in examples.
2018-04-30 10:18:33 +10:00
Angus Gratton
800bffb8b0 cmake: Add CMakeLists.txt files for all examples
Generating using convert_to_cmake.py, with some minor cleanup
2018-04-30 09:59:20 +10:00
Ivan Grokhotkov
6185e722c3 Revert "Merge branch 'feature/vfs_select' into 'master'"
This reverts merge request !2074
2018-04-20 11:51:41 +08:00
Roland Dobai
6852d653bd Allow VFS file descriptors in select() 2018-04-17 11:25:30 +02:00
Jeroen Domburg
e23cfb4038 Merge branch 'bugfix/spi_master_example_gfx' into 'master'
Spi_master: spiffier graphics

See merge request idf/esp-idf!2030
2018-04-10 12:08:01 +08:00
Jeroen Domburg
1c4ad79c00 Examples/spi_master: spiffier graphics 2018-03-26 17:07:32 +08:00
Roland Dobai
27a63c492f Examples: Demonstrate the usage of esp_err_to_name 2018-03-13 14:27:00 +01:00
krzychb
691b2ad8f3 Added / corrected README files for the SPI master / slave examples under peripherals 2018-03-12 05:56:35 +01:00
Ivan Grokhotkov
04ad0f79c0 Merge branch 'adc_calibration_update' into 'master'
ADC Calibraiton - Support new new calibration methods and eFuse functionality

See merge request idf/esp-idf!1846
2018-02-26 06:15:06 +08:00
Darian Leung
0c9e2c0fba esp_adc_cal/Remove lookup table
This commit removes the lookup table mode due to inferior performance when compared
to linear mode under attenuation 0, 1 and 2. However small portions of the lookup table
are kept for the higher voltages of atten 3 (above ADC reading 2880). That voltage range
in atten 3 has non linear characteristics making the LUT performan better than linear mode.
2018-02-22 20:01:41 +08:00
Tuan PM
7cda34c626 i2s: add support fixed_mclk configuration 2018-02-22 09:00:23 +07:00
Darian Leung
73cdfbfe79 esp_adc_cal/Add eFuse functionality
This commit updates the esp_adc_cal ocmponent to support new calibration methods
which utilize calibratoin values stored in eFuse. This commit includes LUT mode
2018-02-13 21:22:48 +08:00
Wangjialin
451f69cc2e driver(i2s): fix broken i2s adc mode
1. Move i2s reset code from i2s_stop to i2s_start.
2. add RTC API to set sw mode for ADC
3. add description for adc_power_always_on()
4. add lock for i2s dma and RTC ADC functions.
5. add ADC read task in example

reported from bbs:  https://esp32.com/viewtopic.php?f=13&t=3490&p=17522#p17522
reported from github: https://github.com/espressif/esp-idf/issues/1333
2018-02-07 17:17:20 +08:00
panfeng
a239e1359a bugfix(rmt): tx cmd without negative coding 2018-01-31 19:35:50 +08:00
Wangjialin
870efdb9d4 bugfix(uart): patten detect function
requirement from github(https://github.com/espressif/esp-idf/issues/805): to provide the position in the buffer of the pattern detected.

requirement from AT application: in AT app, when no hardware flow control is enabled, in some situation the rx buffer might be full, and the terminator “+++” might be lost, we can use pattern detect interrupt to avoid missing the terminator. When pattern detect interrupt happens, it will not send a data event at the same time.

1. Add API to get position of detected pattern in rx buffer
2. Modify UART event example
3. Add comments for uart_flush, add alias API uart_flush_input to clear the rx buffer
4. Modify the way rx_buffered_len is calculated
2018-01-22 13:33:51 +08:00
Angus Gratton
ec7cac5fe8 Merge branch 'feature/docs_update_rmt_api' into 'master'
RMT API docs update, new example

See merge request !1564
2017-12-27 09:23:47 +08:00
Angus Gratton
a4ef4cc376 Merge branch 'bugfix/gpio_config_block' into 'master'
driver(GPIO): use ULL for IO bit mask

See merge request !1627
2017-12-11 12:56:39 +08:00
panfeng
f60fef8136 bugfix: io setting useless when io_num > 32 2017-12-04 17:35:00 +08:00
krzychb
cdad1e8382 Implement review comments 2017-11-22 23:33:29 +01:00
krzychb
2ec35f60ca RMT API docs update, new example 2017-11-21 22:34:23 +01:00
krzychb
d488bb7bac Provided more meaningful parameter names by renaming 'bit_num' to 'duty_resolution' and 'div_num' to 'clock_divider' 2017-11-15 08:08:12 +01:00
Seppe Stas
264315ab81 Fix markdown and format of GPIO example README
Fixed headers so they work (requires space between hash and text) and have a sensible structure and removed trailing spaces.

Signed-off-by: krzychb
2017-11-07 20:27:10 +01:00
Angus Gratton
ffeecde9e2 Merge branch 'feature/docs_update_timer_api' into 'master'
Timer API docs update, refactored example

See merge request !1316
2017-10-27 13:31:18 +08:00
krzychb
9b7d5d76a7 Timer API docs update, refactored example 2017-10-27 07:13:59 +02:00
Angus Gratton
62e24370f1 Merge branch 'feature/uart_example_separate_tx_rx_tasks' into 'master'
Added an asynchronous UART example, using separate RX and TX tasks.

See merge request !1403
2017-10-27 13:13:24 +08:00
michael
d30f3e7aa8 example(adc2): add example and test case for adc2.
closes #461
2017-10-26 14:35:30 +08:00
Angus Gratton
01befe4d6a Merge branch 'bugfix/i2c_hw_fsm_recover' into 'master'
bugfix(i2c): add I2C hardware reset if the hw FSM get stuck

See merge request !1272
2017-10-23 10:16:02 +08:00
Ivan Grokhotkov
000a4f5941 Merge branch 'bugfix/rmt_thresh_check' into 'master'
bugfix(rmt): fix event thresh check issue

See merge request !1423
2017-10-22 12:35:44 +08:00
Wangjialin
ed1e32f583 bugfix(i2c): add I2C hardware reset if the hw FSM get stuck
Reported from different sources from github or bbs:

https://github.com/espressif/esp-idf/issues/680

https://github.com/espressif/esp-idf/issues/922

We tested reading several sensor or other I2C slave devices, if the power and SDA/SCL wires are in proper condition, everything works find with reading the slave.
If we remove the power supply for the slave during I2C is reading, or directly connect SDA or SCL to ground, this would  cause the I2C FSM get stuck in wrong state, all we can do is the reset the I2C hardware in this case.
After this commit, no matter whether the power supply of I2C slave is removed or SDA / SCL are shorted to ground, the driver can recover from wrong state.

We are not sure whether this the save issue with the reported one yet, but to make the driver more robust.

Further information:

1. For I2C master mode, we have tested different situations, e.g., to short the SDA/SCL directly to GND/VCC, to short the SDA to SCL, to un-plug the slave device, to power off the slave device. Under all of those situations, this version of driver can recover and keep working.
2. Some slave device will die by accident and keep the SDA in low level, in this case, master should send several clock to make the slave release the bus.
3. Slave mode of ESP32 might also get in wrong state that held the SDA low, in this case, master device could send a stop signal to make esp32 slave release the bus.

Modifications:

1. Disable I2C_MASTER_TRAN_COMP interrupt to void extra interrupt.
2. Disable un-used timeout interrupt for slave.
3. Add bus reset if error detected for master mode.
4. Add bus clear if SDA level is low when error detected.
5. Modify the argument type of i2c_set_pin.
6. add API to set timeout value
7. add parameter check for timing APIs
2017-10-21 02:10:59 +08:00
Ivan Grokhotkov
b6f37bda97 Merge branch 'feature/i2s_built_in_adc' into 'master'
feature(I2S-ADC): add ADC mode for I2S.

See merge request !1077
2017-10-20 15:52:56 +08:00
krzychb
61dcade807 Print out in hex format in case non printable data are received 2017-10-19 22:06:53 +02:00
Pieter du Preez
479ba94ef7 Added an asynchronous UART example, using separate RX and TX tasks.
Signed-off-by: krzychb <krzychb@gazeta.pl>
2017-10-19 21:46:09 +02:00
Wangjialin
ab1abff080 bugfix(rmt): fix event thresh check issue
reported from: https://github.com/espressif/esp-idf/issues/1011

1. Fix event thresh check issue
2. Change IO number in example in case it conflicts with GPIO16(psram cs pin).
2017-10-18 18:49:09 +08:00
Jiang Jiang Jian
8e47c355fa Merge branch 'feature/i2s_apll' into 'master'
driver/i2s: add support apll clock

See merge request !1115
2017-10-12 19:06:50 +08:00
Jeroen Domburg
a8131b14b0 Merge branch 'feature/docs_update_uart_api' into 'master'
Updated functional overview of UART API documentation

See merge request !1328
2017-10-10 14:06:08 +08:00
Jeroen Domburg
1835c3a213 Merge branch 'feature/docs_update_pcnt_api' into 'master'
Extended description of the Pulse Counter API and removed redundant comments from the example

See merge request !1312
2017-10-10 14:06:03 +08:00
krzychb
9107b47deb Updated UART API documentation and examples. Included a fix of #1091 from GitHub 2017-10-10 05:54:36 +02:00
Tuan PM
9d39881981 i2s: add support apll clock
using apll_param to setup APLL

new apll calculation method, much faster

validate freq calculation

Ensure that the i2s frequency is greater than the hardware limit

Add description of how to calculate apll clock, support apll for other 16-bits audio, check rev0 chip

correct space
2017-10-06 15:36:24 +07:00
krzychb
d60722c33d Updated example and descritpion of LED PWM Controller API 2017-10-06 08:34:27 +02:00
krzychb
e69691427c Extended description of the Pulse Counter API and removed redundant comments from the example 2017-09-26 22:44:46 +02:00
krzychb
b5e4c76bfe Updated sigma delta API documenation and example 2017-09-25 21:31:09 +02:00
Wangjialin
2fceec4d85 feature(I2S-ADC): add ADC mode for I2S.
1. Support built-in ADC for I2S.
2. Modify code of ADC, made no change to the original APIs.
3. Add APIs in I2S:
esp_err_t i2s_set_adc_mode(adc_unit_t adc_unit, adc1_channel_t adc_channel);
4. Add I2S ADC/DAC example code.
5. add old-fashion definition to make it more compatible
6. replase spi_flash_ APIs with esp_partition_ APIs
7. add example of generating audio table from wav
8. change example sound
2017-09-14 13:24:08 +08:00
krzychb
31eda99136 More detailed description of ADC API 2017-09-11 21:00:09 +02:00
Ivan Grokhotkov
3c470e7c43 Merge branch 'bugfix/rmt' into 'master'
RMT 2 fixes: Rename one API and specify wait_time in another API

See merge request !896
2017-09-07 18:03:08 +08:00
Ivan Grokhotkov
0d86db773c Merge branch 'feature/spi_lcd_autodetect' into 'master'
example(spi_master): add menuconfig to enable the auto detect of LCD type.

See merge request !1185
2017-09-07 17:47:00 +08:00
krzychb
672390c458 Mass replacement of http with https urls, fixed broken urls 2017-09-06 08:16:01 +02:00
michael
c9f065fd2b example(spi_master): add menuconfig to enable the auto detect of LCD type. 2017-09-06 11:41:07 +08:00
Wangjialin
1c9e821fb4 bugfix(timer group): remove floating-point in timer isr in example. 2017-08-30 23:30:53 +08:00
Darian Leung
88b05f9391 esp_adc_cal: Added ADC calibration component
Added component containg API that is able to correct raw ADC readings
into a voltage in mV. Also provided a helper function that combines
the process of getting the raw ADC1 reading then converting it to a
voltage in mV. In doing so, the adc1_get_voltage() function of the ADC
driver has been deprecated. Instead there is now adc1_get_raw to obtain
the raw ADC1 reading, and adc1_to_voltage() that gets the raw reading
and converts all in one function. Functions using the deprecated
adc1_get_voltage() have also been updated to use adc1_get_raw().

Conversion is based on ADC characteristics. The characteristics are based
on the ADC's v_ref, herefore the appropriate structure and functions have
been provided to obtain the ADC characteristics.

The existing ADC driver has also been modified by adding a function to
route the internal ADC reference voltage to a GPIO allowing users to measure
it manually.

Relevant documentation has also been updated
2017-08-29 18:43:14 +08:00
Wang Jia Lin
f1ecffb46c Merge branch 'bugfix/touch_pad_driver' into 'master'
driver(touch): fix bug and add more features

See merge request !1056
2017-08-23 19:12:39 +08:00