bowen liu
/
mbed-os-example-blinky
ex
Fork of mbed-os-example-mbed5-blinky by
Embed:
(wiki syntax)
Show/hide line numbers
baidu_recorder.h
00001 // Copyright 2017 Baidu Inc. All Rights Reserved. 00002 // Author: tai xiurong (taixiurong@baidu.com) 00003 // 00004 // Description: 00005 00006 #ifndef BAIDU_IOT_TINYDU_IOT_OS_SRC_RECORDER_BAIDU_OS_RECORDER_H 00007 #define BAIDU_IOT_TINYDU_IOT_OS_SRC_RECORDER_BAIDU_OS_RECORDER_H 00008 00009 #include <mbed.h> 00010 00011 #include "baidu_ca_adapter.h" 00012 00013 // #define O_BUFFER_LEN (800) 00014 // #define I_BUFFER_LEN ((O_BUFFER_LEN - 1) / 4 * 3) 00015 00016 //#define REC_LOG(_fmt, ...) //LOG("[REC]"_fmt, ##__VA_ARGS__) 00017 00018 namespace duer { 00019 static const unsigned int s_o_buffer_len = 800; 00020 static const unsigned int s_i_buffer_len = (s_o_buffer_len -1)/4 *3; 00021 class Recorder { 00022 public: 00023 00024 class IPlugin { 00025 public: 00026 00027 virtual int start_record() = 0; 00028 00029 virtual size_t read(void* data, size_t size) = 0; 00030 00031 virtual int stop_record() = 0; 00032 00033 virtual ~IPlugin() = 0; 00034 00035 }; 00036 00037 class IListener { 00038 public: 00039 00040 virtual int on_start() = 0; 00041 00042 virtual int on_resume() = 0; 00043 00044 virtual int on_data(const void* data, size_t size) = 0; 00045 00046 virtual int on_pause() = 0; 00047 00048 virtual int on_stop() = 0; 00049 00050 virtual ~IListener() = 0; 00051 00052 }; 00053 00054 class MiddleWare: public IListener { 00055 public: 00056 00057 MiddleWare(); 00058 00059 virtual ~MiddleWare(); 00060 00061 int set_listener(IListener* listener); 00062 00063 protected: 00064 00065 int process_start(); 00066 00067 int process_resume(); 00068 00069 int process_data(const void* data, size_t size); 00070 00071 int process_pause(); 00072 00073 int process_stop(); 00074 00075 private: 00076 00077 IListener* _listener; 00078 }; 00079 00080 Recorder(IPlugin* plugin, size_t size, void* data); 00081 Recorder(IPlugin* plugin, size_t size); 00082 Recorder(IPlugin* plugin); 00083 00084 virtual ~Recorder(); 00085 00086 int start(); 00087 00088 int resume(); 00089 00090 int pause(); 00091 00092 int stop(); 00093 00094 int set_listener(IListener* listener); 00095 00096 static void add_drop_invalid_record(); 00097 00098 private: 00099 void run(); 00100 IPlugin* _plugin; 00101 IListener* _listener; 00102 rtos::Thread _thread; 00103 int _state; 00104 size_t _capacity; 00105 void* _buff; 00106 00107 }; 00108 00109 }//duer 00110 00111 #endif // BAIDU_IOT_TINYDU_IOT_OS_SRC_RECORDER_BAIDU_OS_RECORDER_H
Generated on Tue Jul 12 2022 16:28:53 by 1.7.2