/* arm a disabled timer, then disarm a live timer */
- g_flash_guard_default_ops.start(); // Disables flash cache
+ spi_flash_guard_get()->start(); // Disables flash cache
ets_timer_arm(&timer1, INTERVAL, false);
// redundant call is deliberate (test code path if already armed)
ets_timer_arm(&timer1, INTERVAL, false);
ets_timer_disarm(&timer1);
- g_flash_guard_default_ops.end(); // Re-enables flash cache
+ spi_flash_guard_get()->end(); // Re-enables flash cache
TEST_ASSERT_FALSE(flag); // didn't expire yet
/* do the same thing but wait for the timer to expire */
- g_flash_guard_default_ops.start();
+ spi_flash_guard_get()->start();
ets_timer_arm(&timer1, INTERVAL, false);
- g_flash_guard_default_ops.end();
+ spi_flash_guard_get()->end();
vTaskDelay(2 * INTERVAL / portTICK_PERIOD_MS);
TEST_ASSERT_TRUE(flag);
- g_flash_guard_default_ops.start();
+ spi_flash_guard_get()->start();
ets_timer_disarm(&timer1);
- g_flash_guard_default_ops.end();
+ spi_flash_guard_get()->end();
}
*/
static IRAM_ATTR __attribute__((noinline)) bool iram_malloc_test()
{
- g_flash_guard_default_ops.start(); // Disables flash cache
+ spi_flash_guard_get()->start(); // Disables flash cache
bool result = true;
void *x = heap_caps_malloc(64, MALLOC_CAP_32BIT);
result = result && (y != NULL);
heap_caps_free(y);
- g_flash_guard_default_ops.end(); // Re-enables flash cache
+ spi_flash_guard_get()->end(); // Re-enables flash cache
return result;
}
void IRAM_ATTR spi_flash_disable_interrupts_caches_and_other_cpu()
{
- spi_flash_op_lockspi_flash_op_lock();
+ spi_flash_op_lock();
esp_intr_noniram_disable();
spi_flash_disable_cache(0, &s_flash_op_cache_state[0]);
}
s_flash_guard_ops = funcs;
}
+const spi_flash_guard_funcs_t *IRAM_ATTR spi_flash_guard_get()
+{
+ return s_flash_guard_ops;
+}
+
size_t IRAM_ATTR spi_flash_get_chip_size()
{
return g_rom_flashchip.chip_size;
*/
void spi_flash_guard_set(const spi_flash_guard_funcs_t* funcs);
+
+/**
+ * @brief Get the guard functions used for flash access
+ *
+ * @return The guard functions that were set via spi_flash_guard_set(). These functions
+ * can be called if implementing custom low-level SPI flash operations.
+ */
+const spi_flash_guard_funcs_t *spi_flash_guard_get();
+
/**
* @brief Default OS-aware flash access guard functions
*/