extern_interface/include/defines.h

234 lines
7.6 KiB
C++
Executable File

#ifndef VOIX_DEFINES_H
#define VOIX_DEFINES_H
#include <queue>
#include <set>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/time.h>
#include <cstring>
#include <netinet/in.h>
#include <atomic>
#include <map>
using namespace std;
#define PrintFilePos() //printf("\nfile:%s, line:%2d---",__FILE__,__LINE__);
#define CHUNK_SIZE 512 // 512 samples per frame
#define SAMPLE_RATE 16000 // ReSpeaker Mic Array V2.0 support SampleRate from 16kHz to 48kHz
#define RECORD_SECONDS 200000
#define ASR_RESULT_LEN 1024
#define WAKE_CHUNK_SIZE 512
#define ASR_CHUNCK_SIZE 8000
#define CHUNK_SIZE 512 // 512 samples per frame
#define SAMPLE_RATE 16000 // ReSpeaker Mic Array V2.0 support g_iSampleRate from 16kHz to 48kHz
#define RECORD_SECONDS 200000
#define ASR_RESULT_LEN 1024
#define ASR_CHUNCK_SIZE 8000
#define LAST_FRAME_ENERGY_ARRAY_SIZE 15
//-------------------host telemetry defines start --------------------------
#define CMD_CODE_TELEMETRY_LOW_CABIN_TEMPERATURE 0x2F01
#define CMD_TEXT_TELEMETRY_LOW_CABIN_TEMPERATURE "设置低舱温"
#define CMD_CODE_TELEMETRY_MODERATE_CABIN_TEMPERATURE 0x2F02
#define CMD_TEXT_TELEMETRY_MODERATE_CABIN_TEMPERATURE "设置舱温适中"
#define CMD_CODE_TELEMETRY_HIGH_CABIN_TEMPERATURE 0x2F04
#define CMD_TEXT_TELEMETRY_HIGH_CABIN_TEMPERATURE "设置高舱温"
#define CMD_CODE_TURN_OFF_AMBIENT_LIGHT 0x2F07
#define CMD_TEXT_TURN_OFF_AMBIENT_LIGHT "关氛围灯"
#define CMD_CODE_TURN_ON_AMBIENT_LIGHT 0x2F08
#define CMD_TEXT_TURN_ON_AMBIENT_LIGHT "开氛围灯"
#define CMD_CODE_CONTROL_TOP_LIGHT 0x2F0B
#define CMD_TEXT_CONTROL_TOP_LIGHT "控制顶部照明灯"
#define CMD_CODE_CONTROL_SHOULDER_LIGHT 0x2F0D
#define CMD_TEXT_CONTROL_SHOULDER_LIGHT "控制肩部照明灯"
#define CMD_CODE_USE_RESTROOM 0x2F0E
#define CMD_TEXT_USE_RESTROOM "使用卫生间"
#define CMD_CODE_RESTROOM_USE_FINISHED 0x2F10
#define CMD_TEXT_RESTROOM_USE_FINISHED "卫生间使用结束"
extern std::map<std::string, uint16_t> g_telemetryText2Code;
//==============Queue============================================
typedef void* voidPtr;
extern void* g_pStatusLog, * g_pProcessLog, * g_pResultLog, * g_pDebugLog;
//==========================================================
extern void** g_pDataQueue;
extern void* g_pRecordQueue;
extern volatile bool g_bCloseASR;
extern volatile bool g_bCall;
extern volatile uint32_t g_iPlayedCallFrameCnt, g_iPlayedCallSampleCnt;
extern volatile uint32_t g_iCallRcvFrameCnt;//本次通话接收的帧数量
extern volatile uint32_t g_iInsertSlientSegCnt;
extern uint8_t g_iAlarmCode[4]; // 报警码 gejp 2024.10.03
extern uint8_t g_i5cmdNum[5]; // 5 info of cmd in history added by gejp 2024.10.03
extern uint16_t g_i5cmdCode[5];
extern uint8_t g_i5cmdOutcodes[5][6];
extern uint8_t g_i5cmdSendAbsTime[5][5];
extern uint32_t g_iCmdCount;
// gejp 2024.10.09
extern uint8_t g_iSysVerHigh;
extern uint8_t g_iSysVerLow;
extern uint8_t g_iAppVerHigh;
extern uint8_t g_iAppVerLow;
// gejp 2024.10.10
extern uint8_t g_iEnableAlarmCode;
// tangyc 2024.10.25
extern long g_iExternTimeDifference;
#define getCodeInfo() getCodeLine(__FILE__, __LINE__)
extern bool g_bPrintResultLog;
extern int32_t g_outputBaseNum;
//int LoadLogQueueModule(char* strModulePath);
int32_t openLogAndQueues(char *config_file_path);
void ProcQueueFull(int i, bool bClear = true);
extern int g_iQueueCnt;
extern long g_iRcvNackedPCM;
extern bool g_bGPIO_Open;
extern int g_iGPIOWakeNum;
extern int g_iGPIOVolumeNum;
extern int g_iGPIOWakePressTime;
extern bool g_bTelemetry_Open;
extern bool g_bHostInfoTrans_Open;
extern int g_iUseTeleComForTelemetry;
extern int g_iUseHostComForTelemetry;
extern double g_fSilEnergy;
extern long g_iMicDataQueueMB;
extern void* g_pLogQueueModuleHandle;
extern long g_iPcmBlockBytes;
extern long g_iCallBytesPerBlockMS;
extern long g_iCallSampleRateMS;
extern char g_strPCM_ComPath[128];
extern int g_iPcmCom_tty_id;
extern long g_iPCMCom_BaudRate;
extern char g_strHostInfo_ComPath[128];
extern int g_iHostCom_tty_id;
extern long g_iHostInfoCom_BaudRate;
extern char g_strTelemetry_ComPath[128];
extern int g_iTelemetry_Com_tty_id;
extern long g_iTelemetryCom_BaudRate;
enum QueueIndex { // 数据类型
RECORD_DATA_QUEUE = 0,
PCM_QUEUE_FOR_KWS,
PCM_QUEUE_FOR_ASR,//
TEXT_QUEUE_FOR_TTS,//
TEXT_QUEUE_FOR_TTS_URGENT,
AUDIO_QUEUE_FOR_PLAY,//
AUDIO_QUEUE_FOR_PLAY_URGENT,
ORDER_INFO_QUEUE,// to upper host
ASSISTANT_INFO_QUEUE,// to upper host
HOST_INFO_QUEUE, //from upper host
AUDIO_FOR_HOST, // to upper host
DATA_QUEUE_COUNT
};
//extern void* SystemTimer_old(void* p);
extern void* SystemTimer(void* p);
extern char g_strCurTime[50], g_strStartTime[50];
//------------ input audio parameters -----------------------
extern long g_iInputType;// 0--com 1--mic 2--udp
extern char g_strRcvPCM_UDP_IP[64];
extern long g_iUdpPort4RcvPCM;
extern char g_strPCM_ComPath[128];
extern long g_iPCMCom_BaudRate;
extern long g_iPCMCom_Proto;
extern int g_iPcmCom_tty_id;
//------------ upper host parameters -----------------------
extern long g_iHostInfoTransMode; //0--com, 1--udp, 2--unix socket
extern char g_strHostInfo_ComPath[128];
extern long g_iHostInfoCom_BaudRate;
extern int g_iHostCom_tty_id;
extern char g_strSndUnixSocket[500];
extern char g_strRcvUnixSocket[500];
extern char g_strUpperHostIP[64];
extern long g_iSndUdpPort4HostInfo; //port of upper host to receive
extern long g_iRcvUdpPort4HostInfo; //port to receive upper host info
//---------------------------------------------------------------
extern long g_iWakeWhenStart;
extern long g_iStatusLogInterval;
//extern volatile long g_iConfirmRemainSeconds;//remain time to finish confirm, seconds
//extern volatile long g_iNoEffectiveResultSeconds;// record total time lenght there is no effective result
extern volatile uint64_t g_iLastWakeTime;
extern volatile uint64_t g_iLastResultTime;
extern volatile uint64_t g_iEndPlayTime;
//extern volatile uint64_t g_iToSleepTime;
extern volatile int g_iWaitType;
extern volatile uint64_t g_iWaitTimeMS[5];
extern volatile long g_iSilentSampleCnt, g_iSoundSampleCnt;
extern volatile long g_iSilentSampleCnt2FetchResul;
extern char g_strSystemLogPath[500];
extern char g_strPCMSavePath[500];
extern struct tm g_tCurLocalTime;
extern bool g_bKeepSysRuning;
extern long g_iSaveInputAudio;
extern long g_iSaveTTSAudio;
extern long g_iSaveHostAudio;
extern long g_iSavePlaySound;
extern long g_iPlaySound;
extern uint32_t g_iQueueFullTimes[DATA_QUEUE_COUNT];
extern volatile uint64_t g_iComRcvBytes[2];
extern long g_iUseASR2Wake;
extern void set_signal_handler(int n);
void setSysSleep(char* pSrc);//pSrc: by whom, kws,asr, button or start
void setSysWake(char *pSrc);//pSrc: by whom, kws,asr, button or start
void SayHello(char* pNoticeStr);
extern std::atomic<int> g_iSysState;
extern bool g_bKeepSysRunning;
extern unsigned int g_iOrderCnt;
extern unsigned int g_iOrderExeSuccCnt;
extern unsigned int g_iOrderExeFailCnt;
extern unsigned int g_iOrderSndSuccCnt;
extern unsigned int g_iOrderSndFailCnt;
extern unsigned int g_iOrderResultCnt;
extern unsigned int g_iAssistantCnt;
extern unsigned int g_iQuerySndSuccCnt;
extern unsigned int g_iQuerySndFailCnt;
extern unsigned int g_iQueryResultCnt;
extern unsigned int g_iRcvResultErr[2];
extern uint16_t volatile g_iTelemetryOrderSndSuccCnt;
extern uint8_t volatile g_last_send_command[6];
//extern int64_t g_iPreWakeTime;
extern std::atomic<int> g_iOrdinaryPlayStop;
extern bool g_bVolumeKeyState;
extern bool g_bWakeupKeyState;
extern bool g_bVolumeKeyPressed;
extern bool g_bWakeupKeyPressed;
#endif //AUDIOSERVER_AUDIODATAUNIT_H