Ivan Grokhotkov [Fri, 13 Apr 2018 08:49:00 +0000 (16:49 +0800)]
build: remove some debug lines printed when V=0
With V=0, build process would print “including .../Makefile.projbuild" lines, causing problems for print_flash_cmd target.
The issue was due to the way macro expansion works in make. To delay evaluation of info function until the execution of expanded block, two dollar signs are required.
Test for print_flash_cmd target added.
nvs: Fix page selection algo to consider free entry counts as well
Current page selection algorithm selects a page for compaction based on just erased counts
and gives up when it does not find any page with erased count greater than 0. This is
problematic since the current allocation procedure skips the active page if there is not
enough room for the item in that page leaving free chunks on the pages. This change modifies
the algorithm to consider both erased as well as free counts on the candidate pages.
konstantin [Tue, 20 Feb 2018 07:11:56 +0000 (12:11 +0500)]
nvs:Add functions for calculating used/free entries
Users needs functions to count the number of free and used entries.
1. `nvs_get_stats()` This function return structure of statistic about the uspace NVS.
(Struct: used_entries, free_entries, total_entries and namespace_count)
2. `nvs_get_used_entry_count()` The second function return amount of entries in the namespace (by handler)
3. Added unit tests.
1. fix a bug in initliazing map beacon interval.
2. fix not send MESH_EVENT_ROUTING_TABLE_REMOVE when MESH_NWK_CHILD_DISCONNECTED.
3. fix a bug in returning roots ie len.
Ivan Grokhotkov [Thu, 12 Apr 2018 06:15:41 +0000 (14:15 +0800)]
build: fix excluding source files outside of component root
Since !2190, source files located outside of the component root
produce object files inside build directory. This change fixes
handling of COMPONENT_OBJEXCLUDE variable for such files. Tests are
added.
Ivan Grokhotkov [Mon, 2 Apr 2018 10:33:01 +0000 (18:33 +0800)]
sdmmc: improve error handling during SPI mode init
- In SPI mode, the card will respond to the initial SDIO reset (done
using CMD52) with “invalid command” error. Handle this correctly.
- sdmmc_card_init had a hack where GO_IDLE_STATE (CMD0) command was
sent twice. Add explanation why this is done, and don’t expect
correct response from the card on first CMD0.
- improve logs printed at debug level by adding CMD index
Ivan Grokhotkov [Tue, 6 Mar 2018 10:03:53 +0000 (18:03 +0800)]
docs: update SDMMC and SDSPI documentation
- Split SDMMC page into pages about SDMMC/SDSPI hosts and a page about
the protocol layer.
- Use autogenerated API reference instead of manually generated one.
- Add information about SDIO APIs.
Ivan Grokhotkov [Tue, 6 Mar 2018 09:57:52 +0000 (17:57 +0800)]
sdmmc: add SDIO support
- Add SDIO support at protocol layer (probing, data transfer, interrupts)
- Add SDIO interrupts support in SDMMC host
- Add test (communicate with ESP32 in SDIO download mode)
Ivan Grokhotkov [Thu, 17 Aug 2017 16:28:56 +0000 (00:28 +0800)]
sdmmc: do expect CMD_DONE interrupt after response timeout
Existing code assumed that response timeout is not followed by CMD_DONE,
which was not true, in fact. Host datasheet states that CMD_DONE is sent
after an RTO.
Ivan Grokhotkov [Thu, 17 Aug 2017 16:25:17 +0000 (00:25 +0800)]
sdmmc: don't whitelist the opcodes when handling response timeout
All the commands which do not have a response must have their flags set
accordingly. Therefore the host will not send RTO interrupt if response
is not expected. It is a bug in the code logic if it happens otherwise.
Ivan Grokhotkov [Thu, 17 Aug 2017 16:18:55 +0000 (00:18 +0800)]
sdmmc: set highest possible host clock divider
SDMMC host suffers from an issue that it outputs data near the rising
edge of the card clock, which is the edge used by the card to sample
data. If sampling time constraint is not satisfied, card may read data
after the transition.
The phases of output/input data can, in fact, be adjusted. However this
adjustment happens in the clock generation block outside of the host.
So the maximum phase change which can be created this way is equal to
half of the host clock period. So if the host clock is set to the lowest
possible frequency (for the given card frequency), then the phase offset
(and hence the hold time) will be the highest. This change modifies the
logic used to determine clock dividers accordingly.
sdmmc host: set correct dout phase and print correct frequency
Ivan Grokhotkov [Thu, 17 Aug 2017 16:12:05 +0000 (00:12 +0800)]
sdmmc: don't set data_expected on SET_BUS_WIDTH command
SET_BUS_WIDTH is not a data transfer command. Extensive search in the
host datasheet and SD card spec did not reveal the origin of this hack
or 'feature'. Further testing showed that removing this does not lead to
regressions.
ReadTheDocs theme has an annoying bug of text not being wrapped inside table cells. Each row is extended to fit the text as a single line. For a table with multiple columns and long sentences the table may get wide, with long scrollbar underneath and is not convenient to read. This MR makes the text wrap inside table cells. There is an open PR to fix this issue - https://github.com/rtfd/sphinx_rtd_theme/pull/432.
Fixes exceptions LoadProhibited, when rmt tries read variable p_rmt on RX END which can be 0.
It happens after esp_reset() (OTA) and the rmt is not probably stopped by it.
In other words the routine rmt_driver_isr_default was called before second rx channel was registered.
Kedar Sovani [Thu, 23 Nov 2017 11:50:38 +0000 (17:20 +0530)]
Don't use 'port' number for DNS query
- In some cases where the HTTP URL contains the port number
(http://hostname:334), the DNS querier fails to resolve the hostname.
- Hence we have to populate the port number ourselves.
- This can only be done based on whether we get an IPv4 or IPv6
address.
Kedar Sovani [Sat, 3 Feb 2018 03:31:45 +0000 (09:01 +0530)]
esp-tls: Basic structure
Purpose:
1. TLS calls can be too many, and require a user to know the expected behaviour. A simple TLS socket wrapper that can be used in any higher level protocol.
2. Uses OpenSSL compatibility layer, so applications using esp-tls can be built on the host, and it should just work on ESP