zwischenstand
This commit is contained in:
@@ -514,8 +514,8 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
LOG_WRN("Write timeout! Aborting transfer.");
|
||||
if (write_ctx.state == FS_STATE_RECEIVING_FILE)
|
||||
{
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
}
|
||||
write_ctx.state = FS_STATE_IDLE;
|
||||
continue;
|
||||
@@ -536,8 +536,8 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
memcpy(write_ctx.filename, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
write_ctx.filename[msg.data_len] = '\0';
|
||||
|
||||
fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
rc = fs_mgmt_pm_open(&write_ctx.file, write_ctx.filename, FS_O_CREATE | FS_O_WRITE);
|
||||
// fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
// rc = fs_mgmt_pm_open(&write_ctx.file, write_ctx.filename, FS_O_CREATE | FS_O_WRITE);
|
||||
|
||||
if (rc == 0)
|
||||
{
|
||||
@@ -568,12 +568,12 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
write_ctx.filename[msg.data_len] = '\0';
|
||||
|
||||
/* Datei öffnen: Nur Lese- und Schreibrechte, Datei muss bereits existieren */
|
||||
int rc = fs_mgmt_pm_open(&write_ctx.file, write_ctx.filename, FS_O_READ | FS_O_WRITE);
|
||||
// int rc = fs_mgmt_pm_open(&write_ctx.file, write_ctx.filename, FS_O_READ | FS_O_WRITE);
|
||||
|
||||
if (rc == 0)
|
||||
{
|
||||
ssize_t audio_len = fs_get_audio_data_len(&write_ctx.file);
|
||||
|
||||
// ssize_t audio_len = fs_get_audio_data_len(&write_ctx.file);
|
||||
ssize_t audio_len = 0; /* Zum Testen, da wir ja kein echtes FS-Backend haben */
|
||||
if (audio_len < 0)
|
||||
{
|
||||
LOG_ERR("Failed to get audio length: %d", (int)audio_len);
|
||||
@@ -583,17 +583,17 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
}
|
||||
|
||||
/* Datei ab dem Ende der Audiodaten abschneiden (alte Tags entfernen) */
|
||||
rc = fs_truncate(&write_ctx.file, audio_len);
|
||||
// rc = fs_truncate(&write_ctx.file, audio_len);
|
||||
if (rc != 0)
|
||||
{
|
||||
LOG_ERR("Failed to truncate file: %d", rc);
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
buzz_proto_send_error_reusing_slab(msg.reply_cb, abs(rc), msg.slab_ptr);
|
||||
break;
|
||||
}
|
||||
|
||||
/* File-Pointer exakt an das neue Ende (audio_len) setzen */
|
||||
fs_seek(&write_ctx.file, audio_len, FS_SEEK_SET);
|
||||
// fs_seek(&write_ctx.file, audio_len, FS_SEEK_SET);
|
||||
|
||||
write_ctx.state = FS_STATE_RECEIVING_TAGS;
|
||||
write_ctx.crc32 = 0;
|
||||
@@ -622,8 +622,8 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
case FS_STATE_RECEIVING_FILE:
|
||||
if (msg.op == FS_WRITE_OP_FILE_CHUNK && msg.slab_ptr)
|
||||
{
|
||||
ssize_t written = fs_write(&write_ctx.file, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
|
||||
// ssize_t written = fs_write(&write_ctx.file, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
ssize_t written = msg.data_len; /* Zum Testen, da wir ja kein echtes FS-Backend haben */
|
||||
if (written == msg.data_len)
|
||||
{
|
||||
write_ctx.crc32 = crc32_ieee_update(write_ctx.crc32, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
@@ -649,7 +649,7 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
}
|
||||
else if (msg.op == FS_WRITE_OP_FILE_END)
|
||||
{
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
write_ctx.state = FS_STATE_IDLE;
|
||||
|
||||
if (write_ctx.crc32 == msg.metadata)
|
||||
@@ -660,14 +660,14 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
else
|
||||
{
|
||||
LOG_ERR("CRC Mismatch! Expected: 0x%08X, Got: 0x%08X", msg.metadata, write_ctx.crc32);
|
||||
fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
// fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
buzz_proto_send_error_reusing_slab(msg.reply_cb, EBADMSG, msg.slab_ptr);
|
||||
}
|
||||
}
|
||||
else if (msg.op == FS_WRITE_OP_ABORT)
|
||||
{
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_mgmt_pm_unlink(write_ctx.filename);
|
||||
write_ctx.state = FS_STATE_IDLE;
|
||||
if (msg.slab_ptr)
|
||||
buzz_proto_buf_free(&msg.slab_ptr);
|
||||
@@ -677,8 +677,8 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
case FS_STATE_RECEIVING_TAGS:
|
||||
if (msg.op == FS_WRITE_OP_FILE_CHUNK && msg.slab_ptr)
|
||||
{
|
||||
ssize_t written = fs_write(&write_ctx.file, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
|
||||
// ssize_t written = fs_write(&write_ctx.file, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
ssize_t written = msg.data_len; /* Zum Testen, da wir ja kein echtes FS-Backend haben */
|
||||
if (written == msg.data_len)
|
||||
{
|
||||
write_ctx.crc32 = crc32_ieee_update(write_ctx.crc32, msg.slab_ptr + msg.data_offset, msg.data_len);
|
||||
@@ -699,8 +699,8 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
else
|
||||
{
|
||||
LOG_ERR("Flash write failed during tags transfer!");
|
||||
fs_truncate(&write_ctx.file, write_ctx.audio_len); /* Rollback */
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_truncate(&write_ctx.file, write_ctx.audio_len); /* Rollback */
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
write_ctx.state = FS_STATE_IDLE;
|
||||
buzz_proto_send_error_reusing_slab(msg.reply_cb, EIO, msg.slab_ptr);
|
||||
}
|
||||
@@ -716,16 +716,16 @@ static void fs_thread_entry(void *p1, void *p2, void *p3)
|
||||
else
|
||||
{
|
||||
LOG_ERR("Tags CRC Mismatch! Expected: 0x%08X, Got: 0x%08X", msg.metadata, write_ctx.crc32);
|
||||
fs_truncate(&write_ctx.file, write_ctx.audio_len); /* Rollback */
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_truncate(&write_ctx.file, write_ctx.audio_len); /* Rollback */
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
buzz_proto_send_error_reusing_slab(msg.reply_cb, EBADMSG, msg.slab_ptr);
|
||||
}
|
||||
write_ctx.state = FS_STATE_IDLE;
|
||||
}
|
||||
else if (msg.op == FS_WRITE_OP_ABORT)
|
||||
{
|
||||
fs_truncate(&write_ctx.file, write_ctx.audio_len); /* Rollback */
|
||||
fs_mgmt_pm_close(&write_ctx.file);
|
||||
// fs_truncate(&write_ctx.file, write_ctx.audio_len); /* Rollback */
|
||||
// fs_mgmt_pm_close(&write_ctx.file);
|
||||
write_ctx.state = FS_STATE_IDLE;
|
||||
if (msg.slab_ptr)
|
||||
buzz_proto_buf_free(&msg.slab_ptr);
|
||||
|
||||
Reference in New Issue
Block a user