9 changed files with 180 additions and 56 deletions
-
3.vscode/settings.json
-
48CMakeLists.txt
-
2dep/iflytopcpp
-
24sh/envsetup_rk3328.sh
-
2sh/iflytool.sh
-
2sh/packet.sh
-
59src/audio_recorder.cpp
-
50src/main.cpp
-
46src/zmain.hpp
@ -1 +1 @@ |
|||||
Subproject commit ea4118ddeb8238ccc065a2c11237ad7be056f89e |
|
||||
|
Subproject commit 2ae150407bb2beb45b2d3155a114992bdb59798e |
@ -1,11 +1,27 @@ |
|||||
#!/bin/bash |
#!/bin/bash |
||||
# 下载编译器 |
# 下载编译器 |
||||
cd ${PROJECT_PATH}/build |
cd ${PROJECT_PATH}/build |
||||
wget -c "ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/gnu_gcc_release/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
|
||||
tar -xvf "gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
|
||||
|
|
||||
|
wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
||||
|
rm -rf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu |
||||
|
tar -xvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz |
||||
|
|
||||
|
BUILD_TOOLS_PATH=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/ |
||||
|
|
||||
|
# alsa 支持 |
||||
|
wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/libasound2_dev1.1.3-5ubuntu0.6.tar.gz" |
||||
|
rm -rf libasound2_dev1.1.3-5ubuntu0.6 |
||||
|
tar -xvf libasound2_dev1.1.3-5ubuntu0.6.tar.gz |
||||
|
mkdir -p ${BUILD_TOOLS_PATH}/pkgconfig/ |
||||
|
mkdir -p ${BUILD_TOOLS_PATH}/include/sys/ |
||||
|
|
||||
|
mv libasound2_dev1.1.3-5ubuntu0.6/unpack/usr/lib/aarch64-linux-gnu/libasound.* ${BUILD_TOOLS_PATH}/lib/ |
||||
|
mv libasound2_dev1.1.3-5ubuntu0.6/unpack/usr/lib/aarch64-linux-gnu/pkgconfig/alsa.pc ${BUILD_TOOLS_PATH}/pkgconfig/ |
||||
|
mv libasound2_dev1.1.3-5ubuntu0.6/unpack/usr/include/alsa ${BUILD_TOOLS_PATH}/include/ |
||||
|
mv libasound2_dev1.1.3-5ubuntu0.6/unpack/usr/include/sys/* ${BUILD_TOOLS_PATH}/include/sys/ |
||||
|
|
||||
# 构造build.sh |
# 构造build.sh |
||||
echo "cmake ../ \\" >${PROJECT_PATH}/build/build.sh |
echo "cmake ../ \\" >${PROJECT_PATH}/build/build.sh |
||||
echo "-DCMAKE_C_COMPILER=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \\" >>${PROJECT_PATH}/build/build.sh |
|
||||
echo "-DCMAKE_CXX_COMPILER=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \\" >>${PROJECT_PATH}/build/build.sh |
|
||||
|
echo "-DCMAKE_C_COMPILER=ccache ${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \\" >>${PROJECT_PATH}/build/build.sh |
||||
|
echo "-DCMAKE_CXX_COMPILER=ccache ${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \\" >>${PROJECT_PATH}/build/build.sh |
||||
chmod +x ${PROJECT_PATH}/build/build.sh |
chmod +x ${PROJECT_PATH}/build/build.sh |
@ -0,0 +1,59 @@ |
|||||
|
#include "zmain.hpp"
|
||||
|
//
|
||||
|
#include "configs/config.hpp"
|
||||
|
#include "iflytopcpp/core/spdlogfactory/logger.hpp"
|
||||
|
#include "iflytopcpp/core/thread/thread.hpp"
|
||||
|
#include "spdlog/spdlog.h"
|
||||
|
#include "version.hpp"
|
||||
|
#include "zlinuxcomponents/audio/audio_recoder.hpp"
|
||||
|
#include "zlinuxcomponents/rootfs_auto_update.hpp"
|
||||
|
#include "zservice_container/zservice_container.hpp"
|
||||
|
//
|
||||
|
using namespace iflytop; |
||||
|
using namespace core; |
||||
|
using namespace std; |
||||
|
using namespace clipp; |
||||
|
|
||||
|
/***********************************************************************/ |
||||
|
/***********************************************************************/ |
||||
|
/***********************************************************************/ |
||||
|
/***********************************************************************/ |
||||
|
ZMAIN(); |
||||
|
/**
|
||||
|
* @brief ctrl+C 回调 |
||||
|
*/ |
||||
|
ofstream outputwav("audio_recorder.wav", ios::binary | ios::trunc); |
||||
|
void Main::onSIGINT() { |
||||
|
logger->info("save audio to {}", "audio_recorder.wav"); |
||||
|
exit(0); |
||||
|
} |
||||
|
|
||||
|
int Main::main(int argc, char *argv[]) { |
||||
|
string g_host_server_ip; |
||||
|
string g_device_id; |
||||
|
|
||||
|
int channel = 0; |
||||
|
int rate = 0; |
||||
|
#if 1
|
||||
|
auto cli = ( //
|
||||
|
(required("-c") & value("c", channel)).doc("channel"), //
|
||||
|
(required("-r") & value("r", rate)).doc("rate") //
|
||||
|
); |
||||
|
if (!parse(argc, argv, cli)) { |
||||
|
cout << make_man_page(cli, argv[0]); |
||||
|
exit(-1); |
||||
|
} |
||||
|
#endif
|
||||
|
|
||||
|
shared_ptr<AudioRecoder> audioRecoder(new AudioRecoder()); |
||||
|
audioRecoder->onRecordData.connect([&](shared_ptr<AudioClip> audioclip) { |
||||
|
logger->info("on audio {}", audioclip->toString()); |
||||
|
// 保存语音到文件
|
||||
|
outputwav.write((char *)audioclip->getVoice(), audioclip->getVoiceLen()); |
||||
|
}); |
||||
|
|
||||
|
audioRecoder->initialize("recorder", channel, rate, SND_PCM_FORMAT_S16_LE); |
||||
|
audioRecoder->startRecord(); |
||||
|
logger->info("system setup end."); |
||||
|
while (true) sleep(1000); |
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
|
||||
|
#include <pthread.h>
|
||||
|
#include <stdio.h>
|
||||
|
#include <sys/types.h>
|
||||
|
#include <sys/wait.h>
|
||||
|
#include <unistd.h>
|
||||
|
|
||||
|
#include "zclipp/include/clipp.h"
|
||||
|
|
||||
|
#define ZMAIN() \
|
||||
|
class Main { \ |
||||
|
ENABLE_LOGGER(Main); \ |
||||
|
\ |
||||
|
private: \ |
||||
|
unique_ptr<Thread> thread; \ |
||||
|
\ |
||||
|
private: \ |
||||
|
int main(int argc, char *argv[]); \ |
||||
|
\ |
||||
|
public: \ |
||||
|
Main(/* args */) {} \ |
||||
|
~Main() {} \ |
||||
|
void run(int argc, char *argv[]) { \ |
||||
|
thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); })); \ |
||||
|
while (true) sleep(1000); \ |
||||
|
} \ |
||||
|
void onSIGINT(); \ |
||||
|
}; \ |
||||
|
Main *g_main; \ |
||||
|
void onsignal(int signo) { g_main->onSIGINT(); } \ |
||||
|
int main(int argc, char *argv[]) { \ |
||||
|
Main main; \ |
||||
|
g_main = &main; \ |
||||
|
::signal(SIGINT, onsignal); \ |
||||
|
main.run(argc, argv); \ |
||||
|
} |
||||
|
|
||||
|
#define BUILD_AND_REG_SERRVICE(type, ...) \
|
||||
|
logger->info("build {}.....", #type); \ |
||||
|
shared_ptr<type> type##_val(new type(__VA_ARGS__)); \ |
||||
|
ServiceContrainer::get().regService(type##_val); |
||||
|
|
||||
|
#define BUILD_AND_REG_MOCK_SERRVICE(type, mocktype, ...) \
|
||||
|
logger->info("build {}.....", #type); \ |
||||
|
shared_ptr<type> type##_val(new mocktype(__VA_ARGS__)); \ |
||||
|
ServiceContrainer::get().regService(type##_val); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue