From 81d4e59aeb234df60ef09c63d30f2551ff4b3f9a Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Tue, 21 Jun 2016 11:53:07 -0700 Subject: [PATCH] Add CaptureThread success_callback. --- firmware/application/capture_thread.cpp | 2 ++ firmware/application/capture_thread.hpp | 6 ++++++ firmware/application/ui_record_view.cpp | 4 ++++ firmware/common/message.hpp | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/firmware/application/capture_thread.cpp b/firmware/application/capture_thread.cpp index f4935e7c0..47ea252e7 100644 --- a/firmware/application/capture_thread.cpp +++ b/firmware/application/capture_thread.cpp @@ -78,9 +78,11 @@ CaptureThread::CaptureThread( std::unique_ptr writer, size_t write_size, size_t buffer_count, + std::function success_callback, std::function error_callback ) : config { write_size, buffer_count }, writer { std::move(writer) }, + success_callback { std::move(success_callback) }, error_callback { std::move(error_callback) } { // Need significant stack for FATFS diff --git a/firmware/application/capture_thread.hpp b/firmware/application/capture_thread.hpp index 8facb5219..7fddd1f5f 100644 --- a/firmware/application/capture_thread.hpp +++ b/firmware/application/capture_thread.hpp @@ -45,6 +45,7 @@ public: std::unique_ptr writer, size_t write_size, size_t buffer_count, + std::function success_callback, std::function error_callback ); ~CaptureThread(); @@ -60,6 +61,7 @@ private: CaptureConfig config; std::unique_ptr writer; + std::function success_callback; std::function error_callback; static Thread* thread; @@ -68,6 +70,10 @@ private: const auto error = obj->run(); if( error.is_valid() && obj->error_callback ) { obj->error_callback(error.value()); + } else { + if( obj->success_callback ) { + obj->success_callback(); + } } return 0; } diff --git a/firmware/application/ui_record_view.cpp b/firmware/application/ui_record_view.cpp index 6fb74e667..c049ec84b 100644 --- a/firmware/application/ui_record_view.cpp +++ b/firmware/application/ui_record_view.cpp @@ -285,6 +285,10 @@ void RecordView::start() { capture_thread = std::make_unique( std::move(writer), write_size, buffer_count, + []() { + CaptureThreadErrorMessage message { }; + EventDispatcher::send_message(message); + }, [](File::Error error) { CaptureThreadErrorMessage message { error.code() }; EventDispatcher::send_message(message); diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index 8ee6cfe70..c4864adc4 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -498,7 +498,7 @@ public: class CaptureThreadErrorMessage : public Message { public: constexpr CaptureThreadErrorMessage( - uint32_t error + uint32_t error = 0 ) : Message { ID::CaptureThreadError }, error { error } {