Commit Graph

2168 Commits

Author SHA1 Message Date
Angus Gratton
e82eac4354 cmake: Apply cmakelint fixes 2020-11-11 07:36:35 +00:00
Vikram Dattu
c2b5744ae7 Fixed content type of attachment
Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2020-11-10 11:57:20 +05:30
Vikram Dattu
5fc644ac27 Add newline separator to fix wrong attachment sent
Issue:

Missing newline between header and attachment

Issue seen with email clients viz., AppleMail and YahooMail. Attachment is not renderable.
Some clients like Google mail, Samsung mail tolerate the issue.

Fix:
Added newline between header and attachment.

Closes https://github.com/espressif/esp-idf/issues/6098

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2020-11-10 10:58:17 +05:30
nx518
9207c6ca8e lwip: Added description to Kconfig option on IPv6 SLAAC
Closes https://github.com/espressif/esp-idf/issues/6076
Merges https://github.com/espressif/esp-idf/pull/6078
2020-11-09 22:10:32 +00:00
David Cermak
cfbcb9f21e examples, esp_mesh: Fix internal ip mesh example to use transmit wrap function
Fixed regression caused by recent refactoring of WiFi Tx. If  wasn't defined all transmits end up in a crash.

Closes https://github.com/espressif/esp-idf/issues/6067
2020-11-09 20:32:58 +01:00
Ivan Grokhotkov
5dd16db1d6 Merge branch 'feature/esp_event_cxx' into 'master'
C++: ESP Event wrapper classes

Closes IDF-1048 and IDF-232

See merge request espressif/esp-idf!9602
2020-11-06 17:24:34 +08:00
dongyou
b55bb0a61f WIFI: Iperf example's parameter opt was uninitialized, may leads setsockoption invalide if it equal to 0 2020-10-29 02:50:31 +00:00
Jiang Jiang Jian
6bed9ec70c Merge branch 'bugfix/fix_ag_outging_callback_not_triggered' into 'master'
Bugfix/Fix Ag Example Outgoing Callback Not Triggered

Closes BTCI-50

See merge request espressif/esp-idf!10828
2020-10-28 19:57:02 +08:00
David Cermak
8a143fcf40 esp-netif: Fix PPP netif event posting to include esp_netif data
Closes https://github.com/espressif/esp-idf/issues/6009
2020-10-26 16:00:42 +00:00
Michael (XIAO Xufeng)
bcb5c3506d Merge branch 'feature/dedicated_gpio' into 'master'
Dedicated GPIO driver on ESP32-S2 and ESP32-S3

Closes IDF-1672

See merge request espressif/esp-idf!8716
2020-10-26 15:33:33 +08:00
Jiang Jiang Jian
090dbc5550 Merge branch 'feature/add_ipv6_ping' into 'master'
lw-ip:add feature for ipv6 ping

Closes WIFI-2535

See merge request espressif/esp-idf!9530
2020-10-26 15:16:23 +08:00
Mahavir Jain
df7fe00df7 Merge branch 'fix/use_cli_for_espefuse_in_configure_ds' into 'master'
esp32s2-ssl_ds: Use CLI interface for espefuse in configure_ds.py

See merge request espressif/esp-idf!10919
2020-10-23 22:14:17 +08:00
lly
73d22d8ed9 ble_mesh: example: Update sdkconfig test files for disabling Health Server model 2020-10-23 02:04:21 +00:00
lly
72d96c4e81 ble_mesh: example: Fix fast provisioning compile error 2020-10-23 02:04:21 +00:00
lly
d268e0fdb1 ble_mesh: ci: Add disabling mesh model sdkconfig test files 2020-10-23 02:04:21 +00:00
lly
b0f5e4b4ee ble_mesh: ci: Add disabling mesh deinit sdkconfig test files 2020-10-23 02:04:21 +00:00
Aditya Patwardhan
19df6529b2 esp32s2-ssl_ds: Use CLI interface for espefuse in configure_ds.py
* make the project CMakelists to flash the external partition "pre_prov"
    * Remove the dependancy of configure_ds.py on esptool.py
    * Updated README
    * Fix the help menu
2020-10-22 17:25:23 +05:30
xueyunfei
79fc027830 lwip:add feature for ipv6 ping 2020-10-22 15:01:59 +08:00
Jakob Hasse
f835bead45 C++: ESP Event wrapper classes
* Provide easy interface to esp_event in C++
* Extended functionality linke synchronous
  waiting for events

* Closes IDF-1048
* Closes IDF-232
2020-10-22 09:56:52 +08:00
morris
d51a62e33a dedicated gpio: matrix keyboard example 2020-10-20 21:06:10 +08:00
Michael (XIAO Xufeng)
2e681f4cb5 Merge branch 'bugfix/fix_rs485_ut_fail' into 'master'
Bugfix/fix RS485 ut fail

See merge request espressif/esp-idf!9448
2020-10-19 16:17:23 +08:00
Alex Lisitsyn
8737584789 Bugfix/fix RS485 ut fail 2020-10-19 16:17:19 +08:00
morris
906dd0ad84 pcnt: replace isr register with isr service in example 2020-10-19 11:56:18 +08:00
morris
153e819e8a pcnt: add rotary encoder example 2020-10-19 11:56:18 +08:00
Michael (XIAO Xufeng)
647dea9395 soc: combine xxx_caps.h into one soc_caps.h
During HAL layer refactoring and new chip bringup, we have several
caps.h for each part, to reduce the conflicts to minimum. But this is
The capabilities headers will be relataive stable once completely
written (maybe after the featues are supported by drivers).

Now ESP32 and ESP32-S2 drivers are relative stable, making it a good
time to combine all these caps.h into one soc_caps.h

This cleanup also move HAL config and pin config into separated files,
to make the responsibilities of these headers more clear. This is
helpful for the stabilities of soc_caps.h because we want to make it
public some day.
2020-10-17 16:10:15 +08:00
Angus Gratton
2e5ca433f9 Merge branch 'bugfix/cmake_example_sdkconfig_path' into 'master'
cmake/example: Move idf_as_lib sdkconfig path to project, document configuring project

See merge request espressif/esp-idf!8649
2020-10-16 07:10:08 +08:00
Angus Gratton
c90d6ae9af examples: Move idf_as_lib sdkconfig file to the project directory
Also add some explanation about configuring the project in the README

Previously with the default build-esp32.sh script, the build directory was
deleted and recreated so the project would always be built with default config.
2020-10-14 19:30:30 +11:00
liqigan
743c1c1f20 fix ag example outgoing callback not triggered
Closes https://github.com/espressif/esp-idf/issues/4967
2020-10-14 09:47:16 +08:00
Felipe Neves
a3c90bf59a freertos: merged freertos 10 kernel files into IDF
freertos/port: update the port files and split into xtensa and riscv ports

freertos: separated cpu files from rest of the kernel sources

freertos/port_xtensa: separated private include files into a folder

freertos/tasks: added task create pinned to core function do not break current IDF API

freertos/tasks: mimiced task create pinned function into tasks.c to do not break the IDF API.

freertos: freertos component now compiling

freertos: freertos component now building

freertos: moved critical sections outside from FR kernel section to portable section

portmacro_xtensa: add void indentifier on functions that take no arguments

freertos: fix critical sections implementation to match with their function prototype

freertos: add cmake changes of freertos into make

freertos: remove portDONT_DISCARD attribute from switch context function, it was breaking the docs building.

freertos: fix conflicitng types of vApplicationSleep function

license: update the license of freertos

freertos: Doxygen comments refactored to render them correctly on docs

freertos: added new functions of freertos into the documentation

freertos: added message buffers and stream buffers to documentation

sysview: update freertos system view to the compatible with version 10

freertos: fixed event group  documentation rendering

freertos:  update static task structure to match the actual tcb size

freertos: removed backported test functions

freertos/smp: brought SMP code to  FreeRTOS 10 port

freertos/portmacro: added missing crosscore interrupt for yielding tasks

freertos: replaced soft-critical sections with hard-critical sections used by SMP

freertos: placed muxes inside of kernel objects

freertos: replaced original FR critical sections with SMP enabled spinlocks critical sections

freertos: moved xtensa port files to a separated folder

freertos: added multiple instance of global variables required to SMP

freertos: added SMP modifications on specific tasks module functions

freertos: added TLS deletion function to task module

freertos/tls: initialize TLS deletion callback to avoid crashing when calling task delete

freertos: modified vTaskDelete to do not erase current task that runs on other core

freertos: reverted taskhandle and timerhandle as void* type

freertos: fixed de-referencing void pointer to get run time counter

freertos: fix system view trace enter macro arguments

freertos: Replaced soft critical sections with spinlocks on event_groups

freertos: fixed tick function to avoid calling tick hooks twice

freertos: Nofity give checking per CPU if schedule is suspended

freertos: added mpu release on TCB deletion

freertos: Added SMP changes when deleting a TCB on idle task

freertos/license: update freertos license in COPYRIGHT.rst

freertos: unicore configurations can use task create pinned to core, it will be always pinned to core 0

freertos/portmacro: added cpu_hal_get_core_id() function instead of inline assembly

freertos/xtensa:  update xtensa specific files used in master branch

newlib/locks: revert the preemption checking in lock acquisition and release

ref_clock: fix initial state of ref_clock interrupt handler

freertos: added missing critical sections and yielding checkings

freertos: remove magic numbers in vTaskDelete

freertos: added missing critical section in prvIsQueueEmpty
2020-10-13 23:52:03 +00:00
Shubham Kulkarni
76860cc939 example_test.py: In ota example_test, open file in binary mode to avoid UnicodeDecodeError 2020-10-10 06:18:30 +00:00
Angus Gratton
e456af6537 Merge branch 'bugfix/fix_example_mapping' into 'master'
examples: fix eeprom ldgen mapping

See merge request espressif/esp-idf!10654
2020-10-06 16:20:51 +08:00
Mahavir Jain
20af94ff53 Coredump config option rename throughout IDF 2020-09-30 20:22:27 +05:30
Renz Bagaporo
0e1b1f7c69 examples: fix eeprom ldgen mapping 2020-09-28 15:29:38 +08:00
Cao Sen Miao
4065872a88 http_server: The example adds a new function about file saving to SDcard 2020-09-28 12:09:46 +08:00
Krzysztof Budzynski
068690e604 Merge branch 'docs/fix_formatting_issues_in_idf_monitor' into 'master'
docs: fix formatting issues in api-guides

Closes DOC-489, DOC-406, and DOC-487

See merge request espressif/esp-idf!10459
2020-09-24 15:30:33 +08:00
Wang Fang
00a99cfb9d docs: fix formatting issues in api-guides 2020-09-24 15:30:28 +08:00
Mahavir Jain
4a3b5b73a8 Merge branch 'feature/esp_ds_sw_support' into 'master'
Added support for  RSA  sign using DS peripheral (only for ESP32-S2)

Closes IDF-1626

See merge request espressif/esp-idf!9477
2020-09-23 20:39:04 +08:00
Angus Gratton
afe1413c9c Merge branch 'feature/bringup_esp32s3_fpga' into 'master'
esp32-s3 (beta2) chip bringup

Closes IDF-958

See merge request espressif/esp-idf!9978
2020-09-23 10:10:27 +08:00
Ivan Grokhotkov
2626f19500 Merge branch 'feature/add-command-idf-new-project' into 'master'
Add command for creating project and component with minimal required files

Closes IDF-1596

See merge request espressif/esp-idf!10156
2020-09-23 04:27:30 +08:00
Aditya Patwardhan
b5c2fa632d esp32s2/esp_ds: Added mqtt example for TLS using Digital Signature 2020-09-22 18:31:31 +05:30
morris
9fa06719fa global: enable build uinit test for esp32-s3 2020-09-22 15:15:03 +08:00
martin.gano
b599f127b5 add new command to idf 2020-09-21 23:38:52 +02:00
Mahavir Jain
48e96e8eb8 Merge branch 'feature/esp_cryptoauthlib_sub_update' into 'master'
esp-cryptoauthlib: Update submodule pointer to add a new feature.

See merge request espressif/esp-idf!10526
2020-09-21 13:38:01 +08:00
Ivan Grokhotkov
5925d21346 Merge branch 'feature/power_consumption_graphs' into 'master'
Power consumption graphs

Closes IDF-208

See merge request espressif/esp-idf!10476
2020-09-20 21:16:29 +08:00
Aditya Patwardhan
3988cf854d esp-cryptoauthlib: Update submodule pointer to add a new feature. 2020-09-19 09:48:18 +05:30
Michael (XIAO Xufeng)
8b1d39bf53 Merge branch 'bugfix/fix_mcpwm_period_calculation_bug' into 'master'
mcpwm_example: fix  period calculation bug in high frequency

See merge request espressif/esp-idf!10152
2020-09-18 02:02:32 +08:00
Ivan Grokhotkov
a62c6b6b05 Merge branch 'bugfix/flash_encryption_example_espsecure_public' into 'master'
examples: fix flash encryption example test (third version)

See merge request espressif/esp-idf!10480
2020-09-18 01:08:55 +08:00
Martin Valik
815d9ec6bd Power consumption graphs were added to ulp and wifi power save examples
Closes IDF-208
2020-09-17 13:20:09 +02:00
Mahavir Jain
d82b9275b5 Merge branch 'bugfix/provisioning_example_warning_with_O2_optimization' into 'master'
provisioning: use memcpy instead of strncpy for copying SSID

Closes IDFGH-3983

See merge request espressif/esp-idf!10467
2020-09-17 17:56:37 +08:00
Mahavir Jain
6a3d50c952 provisioning: use memcpy instead of strncpy for copying SSID
Per WiFi library requirement, SSID can be non-null terminated string
if its length goes to 32 bytes (maximum). Use of strncpy in this case,
along with compiler optimization level -O2 results in some warnings
for potential use of non-null terminated strings.

Fix here ensures use of memcpy to copy SSID string upto appropriate
desired length. This helps to avoid compiler specific workaround
flags added earlier.

Closes https://github.com/espressif/esp-idf/issues/5866
Closes IDFGH-3983
2020-09-17 12:59:22 +05:30
Mahavir Jain
6d14bdf068 Merge branch 'feature/ota_example_test' into 'master'
Add OTA example test on Flash Encrypted runner

Closes IDFCI-73

See merge request espressif/esp-idf!9423
2020-09-17 12:39:41 +08:00
Ivan Grokhotkov
cdb4b3b889 examples: fix flash encryption example test
Commit 5e8795eebe has changed the partition table offset, which
has resulted in the ciphertext not matching the one expected in the
example test.
Fix by calculating the ciphertext using espsecure.py.
2020-09-17 13:27:57 +10:00
Ivan Grokhotkov
77b03ff800 Merge branch 'bugfix/fix_partition_table_in_flash_encryption_example' into 'master'
example/flash_encryption: Fix partition table

See merge request espressif/esp-idf!10133
2020-09-16 15:58:38 +08:00
Shubham Kulkarni
b930f7a96d simple_ota_example: Add example test with flash encryption enabled 2020-09-14 13:47:39 +00:00
lly
f2ae5f6e32 ble_mesh: ci: Enable settings in sdkconfig.ci.xxx 2020-09-14 08:40:12 +00:00
Roland Dobai
6358f3fb8a CI: Fix regex in ulp_adc example test 2020-09-11 10:45:41 +02:00
Ivan Grokhotkov
00072fe2e2 Merge branch 'ci/standalone_unit_test_app' into 'master'
CI: add standalone unit test app for esp_netif

See merge request espressif/esp-idf!10102
2020-09-11 15:50:54 +08:00
David Čermák
6f7ae1d751 Merge branch 'bugfix/fix_netsuite_tx_wrap' into 'master'
CI: esp_netif tests: Fix netsuite driver layer per wifi optimization changes

See merge request espressif/esp-idf!10344
2020-09-11 02:15:56 +08:00
Krzysztof Budzynski
0640181b46 Merge branch 'feature/explain_hello_world_files' into 'master'
docs: Add explanation of hello_world folder contents

Closes DOC-456

See merge request espressif/esp-idf!10319
2020-09-10 22:29:27 +08:00
Krzysztof Budzynski
2d4e0a4496 docs: Add explanation of hello_world folder contents 2020-09-10 22:29:24 +08:00
David Cermak
59471c9f3f CI: esp_netif tests: Fix netsuite driver layer per wifi optimization changes
esp-wifi introcuded wifi tx optimization in !9147 . Update needed in netsuite to pass the tx data using  function
2020-09-10 11:52:01 +02:00
Ivan Grokhotkov
b6467257b9 Merge branch 'feature/cmock_component' into 'master'
cmock as component replacing unity

See merge request espressif/esp-idf!9859
2020-09-10 16:06:20 +08:00
Ivan Grokhotkov
287bfeb7fd Merge branch 'bugfix/parttool_example_test_fail' into 'master'
fix multiple example test failures

Closes IDFCI-39 and IDFCI-124

See merge request espressif/esp-idf!10350
2020-09-10 00:27:07 +08:00
David Čermák
e6f0087448 Merge branch 'bugfix/httpd_ws_sock_type' into 'master'
https_server: Added WSS server example and some http(s)+ws updates

Closes IDFGH-3822, IDFGH-3668, IDFGH-3766, and IDFGH-3444

See merge request espressif/esp-idf!10262
2020-09-09 20:57:11 +08:00
David Cermak
6f3fa81863 http_server: Simplified httpd_get_client_list() to return clients in int array 2020-09-09 08:00:20 +02:00
David Cermak
2f22a43a5d http_server example test: Simplify client code in the test to use ws package 2020-09-09 08:00:20 +02:00
David Cermak
5e1e5f8be9 http_server: Add a flag to enable using control frames in user handlers 2020-09-09 08:00:20 +02:00
David Cermak
76ca826758 https_server example: Add new WSS server example
Added a new https server example with WS support which runs
* keep-alive thread to send PINGs to clients
* async message to all active WS clients
Moved the existing https-server example to a subfolder

Closes https://github.com/espressif/esp-idf/issues/5733
Closes https://github.com/espressif/esp-idf/issues/5686
2020-09-09 08:00:38 +02:00
Ivan Grokhotkov
fb43cfbf6a examples/parttool: fix the test to work on parallel test runner
Pass the DUT port to parttool_example.py as an argument.
2020-09-08 17:35:15 +02:00
Anton Maklakov
2b7e02c9ed Merge branch 'revert-983220e2' into 'master'
ci: enable RS485 related tests again

See merge request espressif/esp-idf!10277
2020-09-07 20:47:04 +08:00
Fu Hanxi
bd83088ba5 fix blehr queue python 2 3 compatibility 2020-09-07 12:16:06 +08:00
Mahavir Jain
228adfa6b1 Merge branch 'feature/ota_incremental_erase_during_write' into 'master'
Feature/ota incremental erase during write

See merge request espressif/esp-idf!9726
2020-09-04 20:00:07 +08:00
Island
4e27fbc99a Merge branch 'bugfix/ble_mesh_sensor_example_fix' into 'master'
ble_mesh: example: Fix sensor data wrong iteration

Closes BMCI-112

See merge request espressif/esp-idf!10272
2020-09-04 16:54:26 +08:00
Mahavir Jain
33d0024034 esp_https_ota: change erase to incremental during flash write 2020-09-04 12:05:06 +05:30
Michael (XIAO Xufeng)
4941cf58d0 Revert "ci: temporarily disable RS485 related tests"
This reverts commit 983220e216
2020-09-04 12:57:08 +08:00
lly
01617303dd ble_mesh: example: Fix sensor data wrong iteration 2020-09-04 11:44:59 +08:00
David Cermak
5dae28069f esp-netif: Fix SLIP interface to start with correct IPv6 addr
Merges https://github.com/espressif/esp-idf/pull/4985
2020-09-03 18:11:09 +00:00
David Čermák
9e8f4e51b2 Merge branch 'bugfix/mdns_query_id' into 'master'
mdns: Responding: Fix query ID, add questions if not strict mode

Closes IDFGH-3639 and IDFGH-3577

See merge request espressif/esp-idf!9795
2020-09-03 14:57:47 +08:00
David Cermak
81e89476fe mdns test: Add test to resolve esp32 hostname with DiG 2020-09-02 11:12:08 +02:00
David Cermak
52a7721bf7 examples: Common connect component: Unregister shutdown handler on disconnection
To be able to connect smoothly after disconnecting, we have to unregister all handlers including shutdown handler on disconnection
2020-09-02 11:12:08 +02:00
Jakob Hasse
20c068ef3b cmock: added cmock as component
* changing dependencies from unity->cmock
* added component.mk and Makefile.projbuild
* ignore test dir in gen_esp_err_to_name.py
* added some brief introduction of CMock in IDF
2020-09-02 16:38:37 +08:00
Mahavir Jain
ae15603c91 Merge branch 'bugfix/ota_documentation' into 'master'
Update OTA README, set custom headers in esp_https_ota

Closes IDFGH-3535 and IDFGH-3619

See merge request espressif/esp-idf!10053
2020-09-01 15:36:06 +08:00
Island
03f5d2fec8 Merge branch 'bugfix/ble_mesh_example_compile_warn' into 'master'
ble_mesh: example: Fix example compile warning

Closes BMCI-108

See merge request espressif/esp-idf!10081
2020-09-01 14:05:37 +08:00
lly
b6308e4a1b ble_mesh: example: Remove some useless included header files 2020-08-31 11:37:34 +00:00
Carlos Sobrinho
c2491c86b1 Fix compilation warnings about portmacro being already define. 2020-08-31 11:37:34 +00:00
David Cermak
6f1b8fe062 esp-modem: Remove esp-netif destroy from modem network glue code
To be in line with other interfaces, when deleting the driver and it's glue layer to esp-netif, we DO NOT delete the related esp-netif (since is was allocated and created outside of the glue code and it works the same way in esp-eth and esp-wifi driver/glue layers).

Closes https://github.com/espressif/esp-idf/issues/5486
2020-08-31 06:47:01 +00:00
Shubham Kulkarni
78356d1336 advanced_https_ota_example: Demonstrate use of init_complete_callback to set custom headers 2020-08-29 09:05:52 +00:00
Shubham Kulkarni
7d3618a86c Update OTA README to mention advanced_https_ota example and add reference to API documentation of esp_https_ota component
Closes: https://github.com/espressif/esp-idf/issues/5487
2020-08-29 09:05:52 +00:00
KonstantinKondrashov
5e8795eebe example/flash_encryption: Fix partition table and sdkconfig.defaults
When the flash encryption is enabled then we do not need to change the partition table.
The partition_example.csv should not have fixed offsets for partitions because we want to move the whole table.
The fixed offsets in the table were cleared.
2020-08-26 19:37:33 +08:00
Chen Yi Qun
b45b3de1fa mcpwm_example: Fix MCPWM period calculation bug in high frequency
mcpwm_basic_config example calculates period incorrectly in high
frequency. The period calculation will move to ISR and the method of
calculation will be changed.
2020-08-25 19:39:27 +08:00
Roland Dobai
6a73c74d71 Follow-up improvements for the gcov example test 2020-08-24 08:29:03 +00:00
David Čermák
a80b25ebbb Merge branch 'feature/ws_client_close_frame' into 'master'
ws_client: Added support for close frame, closing connection gracefully

Closes IDF-1915

See merge request espressif/esp-idf!9677
2020-08-21 14:36:18 +08:00
He Yin Ling
685c3fc70c Merge branch 'test/merge_ble_mesh_node_and_provioner_in_console' into 'master'
Test:merge ble mesh node and provioner in console

See merge request espressif/esp-idf!8897
2020-08-21 11:01:37 +08:00
Lu Chang Jie
cd3cf630a5 Test: merge ble mesh node and provioner in console 2020-08-21 11:01:37 +08:00
Angus Gratton
7547820393 Merge branch 'refactor/sleep_modes' into 'master'
Refactor sleep modes code

Closes IDF-1119

See merge request espressif/esp-idf!8404
2020-08-19 12:51:43 +08:00
David Cermak
44c553fd14 ws_client tests: Updated example test to use WebsSocket package
Added a new test for closing connection with close frames
2020-08-18 06:42:22 +00:00
David Cermak
b213f2c6d3 ws_client: Added support for close frame, closing connection gracefully 2020-08-18 06:42:22 +00:00
David Čermák
30845ed47e Merge branch 'bugfix/mqtt_mutual_auth_example' into 'master'
MQTT: add server side authentication to mutual auth example

See merge request espressif/esp-idf!10014
2020-08-18 14:10:32 +08:00
Renz Bagaporo
b30522f701 esp32, esp32s2: move sleep modes code to esp_system 2020-08-17 19:09:23 +08:00
Jiang Jiang Jian
9c1b2820a1 Merge branch 'feature/btdm_mode_change_event' into 'master'
components/bt: Add mode change event

Closes BT-981

See merge request espressif/esp-idf!9720
2020-08-17 14:53:46 +08:00