Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/azholtikov/zh_vector
ESP32 ESP-IDF and ESP8266 RTOS SDK component for vector (dynamic array).
https://github.com/azholtikov/zh_vector
array component dynamic-array esp-idf esp32 esp8266 rtos-sdk vector
Last synced: about 1 month ago
JSON representation
ESP32 ESP-IDF and ESP8266 RTOS SDK component for vector (dynamic array).
- Host: GitHub
- URL: https://github.com/azholtikov/zh_vector
- Owner: aZholtikov
- License: apache-2.0
- Created: 2024-03-08T07:26:42.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-07-21T03:07:57.000Z (5 months ago)
- Last Synced: 2024-07-21T04:21:40.533Z (5 months ago)
- Topics: array, component, dynamic-array, esp-idf, esp32, esp8266, rtos-sdk, vector
- Language: C
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ESP32 ESP-IDF and ESP8266 RTOS SDK component for vector (dynamic array)
## Tested on
1. ESP8266 RTOS_SDK v3.4
2. ESP32 ESP-IDF v5.2## Features
1. Support for any data types.
2. The maximum size of the veсtor is 65536 elements.
3. Support external SPI RAM for ESP32 with external, SPI-connected RAM only.## Attention
1. Do not enable SPI RAM support unless you are sure that SPI RAM is present in your ESP32 module and it is properly configured via menuconfig.
2. If SPI RAM is present via menuconfig select Component Config -> ESP PSRAM -> Support for external, SPI-connected RAM and select SPI RAM config -> SPI RAM access method -> Make RAM allocatable using heap_caps_malloc(…, MALLOC_CAP_SPIRAM).## Using
In an existing project, run the following command to install the component:
```text
cd ../your_project/components
git clone https://github.com/aZholtikov/zh_vector.git
```In the application, add the component:
```c
#include "zh_vector.h"
```## Example
Create, add, read, modify and delete items:
```c
#include "zh_vector.h"zh_vector_t vector = {0};
char example[10] = {0};
void app_main(void)
{
esp_log_level_set("zh_vector", ESP_LOG_NONE);
zh_vector_init(&vector, sizeof(example), false);
printf("Initial vector size is: %d\n", zh_vector_get_size(&vector));
strcpy(example, "Item 1");
zh_vector_push_back(&vector, &example);
strcpy(example, "Item 2");
zh_vector_push_back(&vector, &example);
strcpy(example, "Item 3");
zh_vector_push_back(&vector, &example);
strcpy(example, "Item 4");
zh_vector_push_back(&vector, &example);
strcpy(example, "Item 5");
zh_vector_push_back(&vector, &example);
printf("Add 5 items. New vector size is: %d\n", zh_vector_get_size(&vector));
for (uint16_t i = 0; i < zh_vector_get_size(&vector); ++i)
{
printf("Item position %d is: %s\n", i, (char *)zh_vector_get_item(&vector, i));
}
strcpy(example, "Item 6");
zh_vector_change_item(&vector, 3, &example);
printf("Change item on 3 position.\n");
for (uint16_t i = 0; i < zh_vector_get_size(&vector); ++i)
{
printf("Item position %d is: %s\n", i, (char *)zh_vector_get_item(&vector, i));
}
zh_vector_delete_item(&vector, 2);
printf("Delete item on 2 position. New vector size is: %d\n", zh_vector_get_size(&vector));
for (uint16_t i = 0; i < zh_vector_get_size(&vector); ++i)
{
printf("Item position %d is: %s\n", i, (char *)zh_vector_get_item(&vector, i));
}
zh_vector_free(&vector);
}
```Any [feedback](mailto:[email protected]) will be gladly accepted.