ex
Fork of mbed-os-example-mbed5-blinky by
Diff: DuerOS-Light-SDK-v1.1.0/duer-os-light/src/recorder/baidu_recorder.h
- Revision:
- 47:9e361da97763
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/DuerOS-Light-SDK-v1.1.0/duer-os-light/src/recorder/baidu_recorder.h Tue Jul 18 16:54:45 2017 +0800
@@ -0,0 +1,111 @@
+// Copyright 2017 Baidu Inc. All Rights Reserved.
+// Author: tai xiurong (taixiurong@baidu.com)
+//
+// Description:
+
+#ifndef BAIDU_IOT_TINYDU_IOT_OS_SRC_RECORDER_BAIDU_OS_RECORDER_H
+#define BAIDU_IOT_TINYDU_IOT_OS_SRC_RECORDER_BAIDU_OS_RECORDER_H
+
+#include <mbed.h>
+
+#include "baidu_ca_adapter.h"
+
+// #define O_BUFFER_LEN (800)
+// #define I_BUFFER_LEN ((O_BUFFER_LEN - 1) / 4 * 3)
+
+//#define REC_LOG(_fmt, ...) //LOG("[REC]"_fmt, ##__VA_ARGS__)
+
+namespace duer {
+static const unsigned int s_o_buffer_len = 800;
+static const unsigned int s_i_buffer_len = (s_o_buffer_len -1)/4 *3;
+class Recorder {
+public:
+
+ class IPlugin {
+ public:
+
+ virtual int start_record() = 0;
+
+ virtual size_t read(void* data, size_t size) = 0;
+
+ virtual int stop_record() = 0;
+
+ virtual ~IPlugin() = 0;
+
+ };
+
+ class IListener {
+ public:
+
+ virtual int on_start() = 0;
+
+ virtual int on_resume() = 0;
+
+ virtual int on_data(const void* data, size_t size) = 0;
+
+ virtual int on_pause() = 0;
+
+ virtual int on_stop() = 0;
+
+ virtual ~IListener() = 0;
+
+ };
+
+ class MiddleWare: public IListener {
+ public:
+
+ MiddleWare();
+
+ virtual ~MiddleWare();
+
+ int set_listener(IListener* listener);
+
+ protected:
+
+ int process_start();
+
+ int process_resume();
+
+ int process_data(const void* data, size_t size);
+
+ int process_pause();
+
+ int process_stop();
+
+ private:
+
+ IListener* _listener;
+ };
+
+ Recorder(IPlugin* plugin, size_t size, void* data);
+ Recorder(IPlugin* plugin, size_t size);
+ Recorder(IPlugin* plugin);
+
+ virtual ~Recorder();
+
+ int start();
+
+ int resume();
+
+ int pause();
+
+ int stop();
+
+ int set_listener(IListener* listener);
+
+ static void add_drop_invalid_record();
+
+private:
+ void run();
+ IPlugin* _plugin;
+ IListener* _listener;
+ rtos::Thread _thread;
+ int _state;
+ size_t _capacity;
+ void* _buff;
+
+};
+
+}//duer
+
+#endif // BAIDU_IOT_TINYDU_IOT_OS_SRC_RECORDER_BAIDU_OS_RECORDER_H
