Total found: 319 videos (page 3)
If the feature is periodic, spawn a FreeRTOS task:
nvs_handle_t h; ESP_ERROR_CHECK(nvs_open("my_feat", NVS_READWRITE, &h)); ESP_ERROR_CHECK(nvs_set_blob(h, "threshold", &thr, sizeof(thr))); ESP_ERROR_CHECK(nvs_commit(h)); nvs_close(h); return ESP_OK;
// registration – called from at_init() void at_register_my_feature(void) Dwi259eti Firmware
void my_feature_task(void *arg)
// Save a float threshold to NVS esp_err_t my_feature_save_threshold(float thr) If the feature is periodic, spawn a FreeRTOS
Add the registration call in the AT subsystem init routine (often at_init.c ). If the feature needs user‑configurable thresholds:
/* Example: read a temperature sensor on I2C address 0x48 */ int my_feature_get_temperature(float *temp_c) I2C_MASTER_READ, true); i2c_master_read_byte(cmd, &raw[0], I2C_MASTER_ACK); i2c_master_read_byte(cmd, &raw[1], I2C_MASTER_NACK); i2c_master_stop(cmd); err = i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_PERIOD_MS); i2c_cmd_link_delete(cmd); if (err != ESP_OK) return -1; If the feature is periodic
static const char *TAG = "my_feature";