@@ -144,7 +144,8 @@ esp_err_t DataBase::load_database_from_storage(int feat_len)
144144 return ESP_OK ;
145145}
146146
147- esp_err_t DataBase::enroll_feat (dl::TensorBase *feat, const char *name, uint16_t *out_id) {
147+ esp_err_t DataBase::enroll_feat (dl::TensorBase *feat, const char *name, uint16_t *new_id)
148+ {
148149 ESP_LOGI (TAG , " Enrolling feature." );
149150 if (feat->dtype != dl::DATA_TYPE_FLOAT ) {
150151 ESP_LOGE (TAG , " Only support float feature." );
@@ -159,9 +160,11 @@ esp_err_t DataBase::enroll_feat(dl::TensorBase *feat, const char *name, uint16_t
159160 float *feat_copy = (float *)heap_caps_malloc (m_meta.feat_len * sizeof (float ), MALLOC_CAP_SPIRAM );
160161 memcpy (feat_copy, feat->data , feat->get_bytes ());
161162
163+ // Neue ID generieren
164+ uint16_t id = m_meta.num_feats_total + 1 ;
165+
162166 // Füge das Feature zur internen Liste hinzu
163- uint16_t new_id = m_meta.num_feats_total + 1 ;
164- m_feats.emplace_back (new_id, feat_copy, name);
167+ m_feats.emplace_back (id, feat_copy, name);
165168 m_meta.num_feats_total ++;
166169 m_meta.num_feats_valid ++;
167170
@@ -188,7 +191,7 @@ esp_err_t DataBase::enroll_feat(dl::TensorBase *feat, const char *name, uint16_t
188191 }
189192
190193 // Schreibe die Feature-ID in die Datei
191- size = mp_write (f, &new_id , sizeof (uint16_t ));
194+ size = mp_write (f, &m_feats. back (). id , sizeof (uint16_t ));
192195 if (size != sizeof (uint16_t )) {
193196 ESP_LOGE (TAG , " Failed to write feature id." );
194197 mp_close (f);
@@ -211,14 +214,11 @@ esp_err_t DataBase::enroll_feat(dl::TensorBase *feat, const char *name, uint16_t
211214 return ESP_FAIL ;
212215 }
213216
214- // Schließe die Datei
215217 mp_close (f);
216-
217- // Setze die neue ID zurück
218- if (out_id) {
219- *out_id = new_id;
220- }
221-
218+
219+ // Setze die neue ID
220+ *new_id = id;
221+
222222 return ESP_OK ;
223223}
224224
0 commit comments