From 5b40a2dcf5847cb8fbd547d5981495766c661393 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 17 Oct 2016 23:44:45 +0100 Subject: [PATCH] Add speech prompts. --- P25Gateway/Conf.cpp | 8 + P25Gateway/Conf.h | 2 + P25Gateway/Makefile | 2 +- P25Gateway/Makefile.Solaris | 2 +- P25Gateway/P25Gateway.cpp | 16 ++ P25Gateway/P25Gateway.ini | 1 + P25Gateway/P25Gateway.vcxproj | 7 + P25Gateway/P25Gateway.vcxproj.filters | 21 ++ P25Gateway/Speech.cpp | 320 ++++++++++++++++++++++++++ P25Gateway/Speech.h | 57 +++++ P25Gateway/SpeechDefault.h | 120 ++++++++++ P25Gateway/SpeechEU.h | 93 ++++++++ P25Gateway/SpeechNA.h | 93 ++++++++ P25Gateway/SpeechPacific.h | 84 +++++++ P25Gateway/SpeechWW.h | 93 ++++++++ 15 files changed, 917 insertions(+), 2 deletions(-) create mode 100644 P25Gateway/Speech.cpp create mode 100644 P25Gateway/Speech.h create mode 100644 P25Gateway/SpeechDefault.h create mode 100644 P25Gateway/SpeechEU.h create mode 100644 P25Gateway/SpeechNA.h create mode 100644 P25Gateway/SpeechPacific.h create mode 100644 P25Gateway/SpeechWW.h diff --git a/P25Gateway/Conf.cpp b/P25Gateway/Conf.cpp index d11f5cb..f078617 100644 --- a/P25Gateway/Conf.cpp +++ b/P25Gateway/Conf.cpp @@ -40,6 +40,7 @@ m_callsign(), m_rptAddress(), m_rptPort(0U), m_myPort(0U), +m_announcements(true), m_daemon(false), m_lookupName(), m_lookupTime(0U), @@ -106,6 +107,8 @@ bool CConf::read() m_rptPort = (unsigned int)::atoi(value); else if (::strcmp(key, "LocalPort") == 0) m_myPort = (unsigned int)::atoi(value); + else if (::strcmp(key, "Announcements") == 0) + m_announcements = ::atoi(value) == 1; else if (::strcmp(key, "Daemon") == 0) m_daemon = ::atoi(value) == 1; } else if (section == SECTION_ID_LOOKUP) { @@ -161,6 +164,11 @@ unsigned int CConf::getMyPort() const return m_myPort; } +bool CConf::getAnnouncements() const +{ + return m_announcements; +} + bool CConf::getDaemon() const { return m_daemon; diff --git a/P25Gateway/Conf.h b/P25Gateway/Conf.h index 01a682b..24623b5 100644 --- a/P25Gateway/Conf.h +++ b/P25Gateway/Conf.h @@ -35,6 +35,7 @@ public: std::string getRptAddress() const; unsigned int getRptPort() const; unsigned int getMyPort() const; + bool getAnnouncements() const; bool getDaemon() const; // The Id Lookup section @@ -60,6 +61,7 @@ private: std::string m_rptAddress; unsigned int m_rptPort; unsigned int m_myPort; + bool m_announcements; bool m_daemon; std::string m_lookupName; diff --git a/P25Gateway/Makefile b/P25Gateway/Makefile index ebe616c..0ea4418 100644 --- a/P25Gateway/Makefile +++ b/P25Gateway/Makefile @@ -4,7 +4,7 @@ CFLAGS = -g -O3 -Wall -std=c++0x -pthread LIBS = -lpthread LDFLAGS = -g -OBJECTS = Conf.o DMRLookup.o Log.o Mutex.o Network.o P25Gateway.o Reflectors.o StopWatch.o Thread.o Timer.o UDPSocket.o Utils.o +OBJECTS = Conf.o DMRLookup.o Log.o Mutex.o Network.o P25Gateway.o Reflectors.o Speech.o StopWatch.o Thread.o Timer.o UDPSocket.o Utils.o all: P25Gateway diff --git a/P25Gateway/Makefile.Solaris b/P25Gateway/Makefile.Solaris index 9d5610c..f7b1b01 100644 --- a/P25Gateway/Makefile.Solaris +++ b/P25Gateway/Makefile.Solaris @@ -4,7 +4,7 @@ CFLAGS = -g -O3 -Wall -std=c++0x -pthread LIBS = -lsocket -lpthread LDFLAGS = -g -OBJECTS = Conf.o DMRLookup.o Log.o Mutex.o Network.o P25Gateway.o Reflectors.o StopWatch.o Thread.o Timer.o UDPSocket.o Utils.o +OBJECTS = Conf.o DMRLookup.o Log.o Mutex.o Network.o P25Gateway.o Reflectors.o Speech.o StopWatch.o Thread.o Timer.o UDPSocket.o Utils.o all: P25Gateway diff --git a/P25Gateway/P25Gateway.cpp b/P25Gateway/P25Gateway.cpp index 2c6743c..19a12fb 100644 --- a/P25Gateway/P25Gateway.cpp +++ b/P25Gateway/P25Gateway.cpp @@ -22,6 +22,7 @@ #include "DMRLookup.h" #include "Network.h" #include "Version.h" +#include "Speech.h" #include "Log.h" #if defined(_WIN32) || defined(_WIN64) @@ -189,6 +190,10 @@ void CP25Gateway::run() CStopWatch stopWatch; stopWatch.start(); + CSpeech* speech = NULL; + if (m_conf.getAnnouncements()) + speech = new CSpeech(localNetwork, rptAddr, rptPort); + LogMessage("Starting P25Gateway-%s", VERSION); unsigned int srcId = 0U; @@ -293,10 +298,16 @@ void CP25Gateway::run() remoteNetwork.writePoll(currentAddr, currentPort); remoteNetwork.writePoll(currentAddr, currentPort); + if (speech != NULL) + speech->announce(dstId); + pollTimer.start(); lostTimer.start(); } } + } else if (buffer[0U] == 0x6AU || buffer[0U] == 0x73U) { + if (buffer[15U] == 0x00U && speech != NULL) + speech->eof(); } // If we're linked and we have a network, send it on @@ -319,6 +330,9 @@ void CP25Gateway::run() reflectors.clock(ms); + if (speech != NULL) + speech->clock(ms); + pollTimer.clock(ms); if (pollTimer.isRunning() && pollTimer.hasExpired()) { if (currentId != 9999U) @@ -345,6 +359,8 @@ void CP25Gateway::run() } } + delete speech; + localNetwork.close(); remoteNetwork.close(); diff --git a/P25Gateway/P25Gateway.ini b/P25Gateway/P25Gateway.ini index 5a7bf05..c2dc737 100644 --- a/P25Gateway/P25Gateway.ini +++ b/P25Gateway/P25Gateway.ini @@ -3,6 +3,7 @@ Callsign=G9BF RptAddress=127.0.0.1 RptPort=32010 LocalPort=42020 +Announcements=1 Daemon=1 [Id Lookup] diff --git a/P25Gateway/P25Gateway.vcxproj b/P25Gateway/P25Gateway.vcxproj index 9d3a934..c4b7e34 100644 --- a/P25Gateway/P25Gateway.vcxproj +++ b/P25Gateway/P25Gateway.vcxproj @@ -153,6 +153,12 @@ + + + + + + @@ -168,6 +174,7 @@ + diff --git a/P25Gateway/P25Gateway.vcxproj.filters b/P25Gateway/P25Gateway.vcxproj.filters index 9719a60..225e069 100644 --- a/P25Gateway/P25Gateway.vcxproj.filters +++ b/P25Gateway/P25Gateway.vcxproj.filters @@ -50,6 +50,24 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + @@ -88,5 +106,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/P25Gateway/Speech.cpp b/P25Gateway/Speech.cpp new file mode 100644 index 0000000..525eded --- /dev/null +++ b/P25Gateway/Speech.cpp @@ -0,0 +1,320 @@ +/* +* Copyright (C) 2016 by Jonathan Naylor G4KLX +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "Speech.h" + +#include "SpeechDefault.h" +#include "SpeechEU.h" +#include "SpeechNA.h" +#include "SpeechPacific.h" +#include "SpeechWW.h" + +#include +#include + +const unsigned int SRC_ID = 10999U; + +const unsigned char STARTICW[] = { + 0x00U, 0x02U, 0x02U, 0x0CU, 0x0BU, 0x35U, 0xA3U, 0x00U, 0x00U, 0x00U }; + +const unsigned char VHDR1[] = { + 0x60U, 0x02U, 0x02U, 0x0CU, 0x0BU, 0x35U, 0xA3U, 0x1AU, 0x65U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x08U, 0x00U, 0x00U, 0x00U, 0x00U, 0x02U, 0x2EU }; + +const unsigned char VHDR2[] = { + 0x61U, 0x1DU, 0x35U, 0x34U, 0x37U, 0x0AU, 0x22U, 0x35U, 0x3EU, 0x00U, 0x10U, 0x02U, 0x11U, 0x28U, 0x1DU, 0x21U, + 0x03U, 0x1BU, 0x00U, 0x35U, 0x23U, 0x02U }; + +const unsigned char REC62[] = { + 0x62U, 0x02U, 0x02U, 0x0CU, 0x0BU, 0x35U, 0xA3U, 0x1AU, 0x65U, 0x80U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x02U }; + +const unsigned char REC6B[] = { + 0x6BU, 0x02U, 0x02U, 0x0CU, 0x0BU, 0x35U, 0xA3U, 0x1AU, 0x64U, 0x9CU, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x02U }; + +CSpeech::CSpeech(CNetwork& network, const in_addr& address, unsigned int port) : +m_network(network), +m_address(address), +m_port(port), +m_state(SS_NONE), +m_id(0U), +m_speech(NULL), +m_count(0U), +m_timer(1000U, 1U), +m_stopWatch(), +m_pos(0U), +m_n(0x00U) +{ + assert(port > 0U); +} + +CSpeech::~CSpeech() +{ +} + +void CSpeech::announce(unsigned int id) +{ + switch (id) { + case 10100U: + m_speech = SPEECH_WW; + m_count = SPEECH_WW_COUNT; + m_id = 10100U; + break; + case 10200U: + m_speech = SPEECH_NA; + m_count = SPEECH_NA_COUNT; + m_id = 10200U; + break; + case 10300U: + m_speech = SPEECH_EU; + m_count = SPEECH_EU_COUNT; + m_id = 10300U; + break; + case 10400U: + m_speech = SPEECH_PACIFIC; + m_count = SPEECH_PACIFIC_COUNT; + m_id = 10400U; + break; + case 9999U: + m_speech = SPEECH_DEFAULT; + m_count = SPEECH_DEFAULT_COUNT; + m_id = 9999U; + break; + default: + m_speech = NULL; + m_count = 0U; + m_id = 0U; + break; + } +} + +void CSpeech::eof() +{ + if (m_id == 0U) + return; + + m_state = SS_WAIT; + + m_timer.start(); +} + +void CSpeech::clock(unsigned int ms) +{ + if (m_state == SS_WAIT) { + m_timer.clock(ms); + if (m_timer.isRunning() && m_timer.hasExpired()) { + if (m_id > 0U) { + m_state = SS_RUN; + m_stopWatch.start(); + m_timer.stop(); + m_pos = 0U; + m_n = 0x62U; + m_network.writeData(STARTICW, 10U, m_address, m_port); + m_network.writeData(VHDR1, 30U, m_address, m_port); + m_network.writeData(VHDR2, 22U, m_address, m_port); + } else { + m_state = SS_NONE; + m_timer.stop(); + } + } + } + + if (m_state == SS_RUN) { + unsigned int n = m_stopWatch.elapsed() / 20U; + while (m_pos < n) { + unsigned char buffer[22U]; + + switch (m_n) { + case 0x62U: + ::memcpy(buffer, REC62, 22U); + ::memcpy(buffer + 10U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 22U, m_address, m_port); + m_n = 0x63U; + break; + case 0x63U: + ::memset(buffer, 0x00U, 14U); + buffer[0U] = 0x63U; + buffer[13U] = 0x7AU; + ::memcpy(buffer + 1U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 14U, m_address, m_port); + m_n = 0x64U; + break; + case 0x64U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x64U; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x65U; + break; + case 0x65U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x65U; + buffer[1U] = (m_id >> 16) & 0xFFU; + buffer[2U] = (m_id >> 8) & 0xFFU; + buffer[3U] = (m_id >> 0) & 0xFFU; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x66U; + break; + case 0x66U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x66U; + buffer[1U] = (SRC_ID >> 16) & 0xFFU; + buffer[2U] = (SRC_ID >> 8) & 0xFFU; + buffer[3U] = (SRC_ID >> 0) & 0xFFU; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x67U; + break; + case 0x67U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x67U; + buffer[1U] = 0x28U; // XXX ??? + buffer[2U] = 0xD6U; // XXX ??? + buffer[3U] = 0x58U; // XXX ??? + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x68U; + break; + case 0x68U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x68U; + buffer[1U] = 0xA0U; // XXX ??? + buffer[2U] = 0x81U; // XXX ??? + buffer[3U] = 0x9CU; // XXX ??? + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x69U; + break; + case 0x69U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x69U; + buffer[1U] = 0x0EU; // XXX ??? + buffer[2U] = 0x74U; // XXX ??? + buffer[3U] = 0xBCU; // XXX ??? + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x6AU; + break; + case 0x6AU: + ::memset(buffer, 0x00U, 16U); + buffer[0U] = 0x6AU; + buffer[3U] = 0x0EU; // XXX ??? + buffer[15U] = (m_pos == (m_count - 1U)) ? 0x00U : 0x02U; + ::memcpy(buffer + 4U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 16U, m_address, m_port); + m_n = 0x6BU; + break; + case 0x6BU: + ::memcpy(buffer, REC6B, 22U); + ::memcpy(buffer + 10U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 22U, m_address, m_port); + m_n = 0x6CU; + break; + case 0x6CU: + ::memset(buffer, 0x00U, 14U); + buffer[0U] = 0x6CU; + buffer[12U] = 0x02U; + buffer[13U] = 0xF6U; + ::memcpy(buffer + 1U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 14U, m_address, m_port); + m_n = 0x6DU; + break; + case 0x6DU: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x6DU; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x6EU; + break; + case 0x6EU: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x6EU; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x6FU; + break; + case 0x6FU: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x6FU; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x70U; + break; + case 0x70U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x70U; + buffer[1U] = 0x80U; + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x71U; + break; + case 0x71U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x71U; + buffer[1U] = 0xACU; // XXX ??? + buffer[2U] = 0xB8U; // XXX ??? + buffer[3U] = 0xA4U; // XXX ??? + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x72U; + break; + case 0x72U: + ::memset(buffer, 0x00U, 17U); + buffer[0U] = 0x72U; + buffer[1U] = 0x9BU; // XXX ??? + buffer[2U] = 0xDCU; // XXX ??? + buffer[3U] = 0x75U; // XXX ??? + buffer[16U] = 0x02U; + ::memcpy(buffer + 5U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 17U, m_address, m_port); + m_n = 0x73U; + break; + default: + ::memset(buffer, 0x00U, 16U); + buffer[0U] = 0x73U; + buffer[3U] = 0x06U; // XXX ??? + buffer[15U] = (m_pos == (m_count - 1U)) ? 0x00U : 0x02U; + ::memcpy(buffer + 4U, m_speech + (m_pos * 11U), 11U); + m_network.writeData(buffer, 16U, m_address, m_port); + m_n = 0x62U; + break; + } + + if (m_pos == (m_count - 1U)) { + m_state = SS_NONE; + m_id = 0U; + return; + } + + m_pos++; + } + } +} diff --git a/P25Gateway/Speech.h b/P25Gateway/Speech.h new file mode 100644 index 0000000..2cf10c5 --- /dev/null +++ b/P25Gateway/Speech.h @@ -0,0 +1,57 @@ +/* +* Copyright (C) 2016 by Jonathan Naylor G4KLX +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#if !defined(SPEECH_H) +#define SPEECH_H + +#include "StopWatch.h" +#include "Network.h" +#include "Timer.h" + +enum SPEECH_STATE { + SS_NONE, + SS_WAIT, + SS_RUN +}; + +class CSpeech { +public: + CSpeech(CNetwork& network, const in_addr& address, unsigned int port); + ~CSpeech(); + + void announce(unsigned int id); + + void eof(); + + void clock(unsigned int ms); + +private: + CNetwork& m_network; + in_addr m_address; + unsigned int m_port; + SPEECH_STATE m_state; + unsigned int m_id; + const unsigned char* m_speech; + unsigned int m_count; + CTimer m_timer; + CStopWatch m_stopWatch; + unsigned int m_pos; + unsigned char m_n; +}; + +#endif diff --git a/P25Gateway/SpeechDefault.h b/P25Gateway/SpeechDefault.h new file mode 100644 index 0000000..8f0dc53 --- /dev/null +++ b/P25Gateway/SpeechDefault.h @@ -0,0 +1,120 @@ +const unsigned char SPEECH_DEFAULT[] = { + 0x08, 0x25, 0x9f, 0xe1, 0xa8, 0xaf, 0x07, 0x63, 0x15, 0x11, 0x3a, + 0x74, 0x51, 0x6e, 0x5a, 0x64, 0xca, 0x60, 0x00, 0xd4, 0x3a, 0x5f, + 0x5c, 0x62, 0x58, 0x74, 0x09, 0x3f, 0x00, 0x00, 0xd0, 0xf8, 0xda, + 0x78, 0xa8, 0x99, 0x30, 0xbc, 0xf7, 0x50, 0x01, 0x2b, 0x29, 0x93, + 0xa0, 0x60, 0xf6, 0x36, 0x4e, 0xc6, 0x80, 0x0a, 0xf3, 0x86, 0xf0, + 0xa0, 0x7e, 0x21, 0x6c, 0x3e, 0xa5, 0x00, 0x04, 0x3e, 0xa9, 0x59, + 0xa0, 0x55, 0x18, 0xda, 0xaa, 0x13, 0xd9, 0x0a, 0xe8, 0x71, 0x98, + 0x98, 0x50, 0x49, 0xb8, 0xaf, 0x51, 0x00, 0x06, 0xf1, 0x7d, 0x63, + 0x78, 0x44, 0x36, 0xa1, 0x3a, 0x73, 0x75, 0x0a, 0x4b, 0x13, 0x92, + 0x94, 0x5e, 0x15, 0xd4, 0x5a, 0x83, 0x00, 0x09, 0xc7, 0x77, 0x31, + 0xa0, 0x55, 0x1d, 0x6a, 0xb0, 0xb5, 0x00, 0x07, 0xec, 0x68, 0xc8, + 0xc8, 0x5a, 0x99, 0x25, 0xb9, 0x95, 0x00, 0x0b, 0xb1, 0x4a, 0xe9, + 0xc8, 0x5b, 0x0a, 0xd7, 0x1c, 0x97, 0x55, 0x2a, 0x3a, 0xd0, 0x79, + 0x78, 0x54, 0x10, 0x31, 0x3a, 0xc6, 0x70, 0x0a, 0x47, 0xd4, 0x50, + 0x78, 0x4b, 0xa9, 0x5c, 0x9d, 0xb6, 0x00, 0x04, 0x3e, 0x1a, 0x99, + 0x78, 0x48, 0x2e, 0xb3, 0x11, 0x7a, 0x50, 0x05, 0x7b, 0xfc, 0xfc, + 0x78, 0x5b, 0x88, 0x00, 0x79, 0x35, 0x00, 0x07, 0x35, 0x44, 0x81, + 0x78, 0x56, 0x54, 0xf1, 0x12, 0x2e, 0x00, 0x07, 0x47, 0x62, 0x78, + 0xa0, 0x17, 0x14, 0xed, 0x9c, 0x82, 0x00, 0x0a, 0x16, 0xbd, 0x03, + 0xa0, 0x41, 0xbf, 0x67, 0xe8, 0xe5, 0x18, 0x88, 0xc5, 0x89, 0xd0, + 0x9c, 0x29, 0xb9, 0x5d, 0xc6, 0x51, 0x00, 0x07, 0x79, 0xb6, 0x7b, + 0xa0, 0x55, 0x50, 0x4b, 0x1a, 0x8f, 0xc8, 0x4b, 0xf0, 0x38, 0xf0, + 0xa0, 0x7c, 0x2d, 0x32, 0x06, 0x37, 0x00, 0x0b, 0x8a, 0xbe, 0x2d, + 0xa0, 0x4d, 0xcc, 0x5e, 0xd5, 0xb0, 0x00, 0x06, 0xe2, 0xc6, 0xc8, + 0x78, 0x58, 0x5a, 0x29, 0xb1, 0xf5, 0x00, 0x05, 0x4f, 0x0c, 0xf9, + 0x78, 0x43, 0xb8, 0xc6, 0x1f, 0xbb, 0x00, 0x09, 0x3b, 0xdb, 0x18, + 0x78, 0x44, 0x37, 0x31, 0x06, 0x13, 0x00, 0x04, 0xa4, 0x13, 0x79, + 0x78, 0x4b, 0xa8, 0xc4, 0xf7, 0x85, 0x40, 0x0a, 0x5b, 0x65, 0x8c, + 0x78, 0x51, 0x12, 0x13, 0x99, 0x74, 0x20, 0x0a, 0x4f, 0x9a, 0xd9, + 0xc8, 0x5b, 0x92, 0xcd, 0x3c, 0x0d, 0x80, 0x07, 0x30, 0xc8, 0x68, + 0x9c, 0x50, 0x7b, 0x5e, 0xa0, 0x7b, 0x58, 0x4b, 0x71, 0x5f, 0xd7, + 0xa0, 0x51, 0x3a, 0x2b, 0x8e, 0x37, 0x98, 0x4a, 0xe6, 0xa4, 0xd0, + 0xa0, 0x45, 0x84, 0x26, 0xfd, 0x3a, 0x00, 0x07, 0x9e, 0xdc, 0x2b, + 0xac, 0x78, 0x3b, 0x48, 0x38, 0xf2, 0x00, 0x0b, 0x87, 0x57, 0x44, + 0xa0, 0x55, 0x1d, 0x6b, 0xba, 0xcd, 0x80, 0x08, 0xdd, 0xa1, 0xb1, + 0xa0, 0x70, 0x16, 0x66, 0x3f, 0x32, 0x00, 0x08, 0xa6, 0x72, 0x50, + 0xa0, 0x55, 0x30, 0x6b, 0xb8, 0xbd, 0xd8, 0x4d, 0x78, 0xa4, 0xf1, + 0x84, 0x3b, 0xc8, 0x4d, 0xb9, 0x35, 0x00, 0x0b, 0x9e, 0x8c, 0x46, + 0x78, 0x47, 0xf0, 0x94, 0x0a, 0xb8, 0x00, 0x0a, 0x1e, 0x67, 0x63, + 0x84, 0x33, 0xdd, 0x09, 0xfa, 0x25, 0x00, 0x09, 0x98, 0xaf, 0x52, + 0x3c, 0x4d, 0x79, 0x22, 0x6b, 0x66, 0x00, 0xbd, 0x37, 0x3b, 0xcb, + 0x39, 0x7e, 0xb7, 0x23, 0x1a, 0xc6, 0x80, 0xfd, 0xbf, 0xe6, 0xe6, + 0x39, 0xf6, 0xf8, 0x50, 0xa0, 0xdc, 0xf8, 0xbf, 0xff, 0x4a, 0x5b, + 0x3d, 0xd9, 0x9f, 0x6e, 0xfc, 0xac, 0xc2, 0x5f, 0x03, 0x25, 0xd4, + 0x4a, 0x4e, 0x2a, 0xc4, 0x35, 0x66, 0xfe, 0x37, 0x8a, 0xdd, 0x55, + 0x51, 0xd4, 0xff, 0x98, 0x69, 0x80, 0x80, 0x68, 0x16, 0xed, 0x66, + 0x56, 0x83, 0xfd, 0x34, 0xb5, 0xce, 0x80, 0x02, 0xe1, 0x37, 0xb3, + 0x3e, 0xdd, 0x87, 0xbe, 0x70, 0x0f, 0x99, 0x1c, 0x8d, 0x91, 0xb8, + 0x3e, 0xdb, 0x9e, 0x56, 0xa0, 0xed, 0xd0, 0x18, 0xfb, 0xbe, 0xd9, + 0x42, 0xbb, 0x58, 0xc9, 0xed, 0xdb, 0xfe, 0x7d, 0xc5, 0x0b, 0x6a, + 0x46, 0xdb, 0xa0, 0x3c, 0xbf, 0x1f, 0xe4, 0x53, 0x92, 0x62, 0x21, + 0x46, 0xbb, 0xec, 0x01, 0xae, 0xf6, 0xf7, 0x57, 0xdd, 0x14, 0x16, + 0x4a, 0xdf, 0x00, 0x7b, 0x9c, 0x0e, 0xff, 0xb6, 0xb6, 0x80, 0x45, + 0x4e, 0xde, 0x70, 0x84, 0x73, 0xf6, 0xff, 0xa8, 0x25, 0x78, 0xdc, + 0x56, 0xd9, 0xc6, 0x55, 0x96, 0x7d, 0xff, 0x06, 0x6d, 0x83, 0xfb, + 0x5a, 0x52, 0xe9, 0x37, 0xd8, 0xeb, 0x80, 0x23, 0xf1, 0x12, 0x88, + 0x42, 0x26, 0x32, 0x77, 0x4f, 0x2a, 0x00, 0x64, 0xb0, 0x82, 0xff, + 0x56, 0x1b, 0x0f, 0xcc, 0x45, 0x1f, 0x80, 0x1a, 0x1f, 0x78, 0x3c, + 0x39, 0xe1, 0x39, 0xb1, 0xcc, 0xc5, 0x00, 0x0f, 0xdc, 0x1c, 0x51, + 0x2e, 0x5f, 0x25, 0xc4, 0x11, 0x5d, 0x00, 0xcf, 0x12, 0xc4, 0x06, + 0x2e, 0xf7, 0xf0, 0xc1, 0xfe, 0xeb, 0xe0, 0x30, 0xae, 0x98, 0x4d, + 0x36, 0x6f, 0xe2, 0x07, 0xf8, 0x95, 0x83, 0xa4, 0x7f, 0x67, 0x42, + 0x32, 0xd7, 0x50, 0xd9, 0x63, 0xac, 0xfc, 0xb7, 0x8d, 0x5d, 0xc7, + 0x2e, 0x74, 0x63, 0xd7, 0xf8, 0x76, 0xd1, 0x8f, 0xd0, 0x66, 0x14, + 0x2e, 0x76, 0x61, 0xa7, 0x1a, 0x8e, 0xf1, 0x85, 0x8a, 0xca, 0x7b, + 0x2a, 0x71, 0xde, 0x99, 0xc8, 0x4c, 0xc2, 0x0e, 0xbb, 0x2e, 0x4c, + 0x2a, 0x73, 0x5c, 0x51, 0x77, 0xa1, 0xe2, 0xc1, 0x2e, 0xa8, 0x6f, + 0x2a, 0x7d, 0x40, 0x58, 0xf1, 0x16, 0xf3, 0xcb, 0x10, 0xca, 0xf0, + 0x2a, 0x7d, 0xe2, 0x14, 0xe3, 0x30, 0xd0, 0xb3, 0x75, 0x1c, 0xd5, + 0x2d, 0xfe, 0x41, 0xad, 0x18, 0xd6, 0xd1, 0x8e, 0xb7, 0x11, 0x70, + 0x36, 0x36, 0x69, 0x67, 0xcc, 0x84, 0x87, 0x6b, 0xbf, 0x5c, 0xc1, + 0x39, 0xde, 0xb2, 0xd3, 0x5d, 0x97, 0xea, 0xbc, 0x5d, 0xb1, 0xc0, + 0x45, 0xba, 0xcb, 0x8e, 0x78, 0xca, 0x00, 0x49, 0x87, 0x03, 0x57, + 0xce, 0x04, 0x1f, 0x77, 0x9c, 0xc0, 0xff, 0xff, 0xf0, 0x0e, 0x78, + 0x46, 0x5f, 0x0f, 0x75, 0x1f, 0x0f, 0xf6, 0x98, 0x47, 0x81, 0x7b, + 0x4a, 0x4e, 0x7d, 0xa3, 0x47, 0x6b, 0x80, 0x55, 0xc5, 0x7a, 0xb6, + 0x4a, 0x5a, 0x09, 0xb6, 0xf9, 0x72, 0xa6, 0x2f, 0x62, 0xf2, 0xf5, + 0x52, 0x78, 0x2e, 0x2f, 0x45, 0xf8, 0xe0, 0x93, 0x02, 0xe9, 0x3a, + 0x52, 0x4e, 0xe1, 0xf8, 0x7b, 0x9f, 0xf9, 0xd5, 0x88, 0xdb, 0xcd, + 0x52, 0xdc, 0x62, 0x12, 0xb6, 0x2f, 0xff, 0x92, 0xe0, 0x6e, 0xba, + 0x52, 0xde, 0x31, 0x98, 0x93, 0x45, 0xff, 0xbb, 0xe1, 0x5c, 0x21, + 0x52, 0xde, 0xc0, 0x06, 0x97, 0x9e, 0xff, 0xa7, 0xfc, 0xfd, 0x1a, + 0x52, 0xdf, 0x31, 0x98, 0x82, 0x78, 0xf4, 0x93, 0xf5, 0xa3, 0xf5, + 0x5a, 0x78, 0xf1, 0x28, 0x24, 0xfa, 0xff, 0xf1, 0x0e, 0xd2, 0x8a, + 0x62, 0x4e, 0xe3, 0x09, 0xe5, 0xf1, 0xe5, 0x4b, 0xa3, 0xb0, 0x9d, + 0x6d, 0xbd, 0x23, 0x79, 0x1e, 0x71, 0xff, 0xfc, 0x22, 0x61, 0xfc, + 0x65, 0xcb, 0xd1, 0x58, 0x6c, 0xbe, 0x8c, 0x19, 0xbb, 0x6c, 0x33, + 0x46, 0x5b, 0x03, 0x5c, 0x63, 0x9d, 0x87, 0xfe, 0x08, 0x2c, 0x1a, + 0x46, 0xee, 0xe2, 0x29, 0x76, 0x27, 0xfc, 0xe1, 0x8f, 0x12, 0xed, + 0x47, 0x4d, 0xe5, 0x29, 0x32, 0x55, 0xfd, 0x38, 0xe3, 0x7e, 0x08, + 0x3e, 0xe4, 0xad, 0xd0, 0xfc, 0xdf, 0xf2, 0xcb, 0xf1, 0x15, 0x45, + 0x3e, 0xed, 0x89, 0x1d, 0x93, 0x5d, 0xd1, 0x85, 0x4a, 0x26, 0xea, + 0x3a, 0xe7, 0x7c, 0x61, 0x61, 0x46, 0xff, 0x89, 0xfc, 0xbc, 0x53, + 0x3a, 0xf6, 0xf8, 0x00, 0xdc, 0x08, 0xca, 0x2f, 0xb0, 0x43, 0xd4, + 0x3a, 0x5f, 0x72, 0x21, 0xed, 0x16, 0xf9, 0xca, 0x78, 0x9e, 0x3b, + 0x3e, 0x6f, 0xca, 0x41, 0x29, 0x0f, 0xfb, 0xdf, 0x43, 0xdb, 0x9c, + 0x4a, 0x6b, 0x50, 0x2d, 0xed, 0x51, 0xfa, 0x57, 0x3a, 0xed, 0xe1, + 0x56, 0x7c, 0xca, 0xec, 0x0c, 0x1c, 0xc9, 0x9c, 0x61, 0xec, 0x24, + 0x6a, 0x4f, 0x1d, 0x32, 0x9e, 0x06, 0xfd, 0x49, 0x91, 0xe9, 0xa5, + 0x75, 0xcd, 0x3e, 0xde, 0x97, 0x00, 0xf7, 0x7d, 0xa5, 0xd2, 0x9c, + 0x79, 0xdf, 0x10, 0x81, 0x22, 0xee, 0xfb, 0x5e, 0xbf, 0xb3, 0x9b, + 0x71, 0xbf, 0x38, 0x9f, 0xfd, 0x86, 0xff, 0xff, 0x02, 0xb9, 0xb2, + 0x75, 0x2b, 0x75, 0xf2, 0x0e, 0x87, 0x00, 0x0a, 0x3e, 0xd7, 0xa7, + 0x74, 0xd3, 0x48, 0x19, 0xd4, 0x1b, 0x00, 0x05, 0xc2, 0xa1, 0xd6, + 0x78, 0xc9, 0x2b, 0x5f, 0x9c, 0xe4, 0x00, 0x01, 0xce, 0xfb, 0x0b, + 0x5c, 0xab, 0x1b, 0xdf, 0x58, 0xb0, 0x00, 0x0f, 0x29, 0x59, 0x30, + 0x34, 0xd2, 0x1e, 0xfe, 0x1a, 0x69, 0x00, 0xf5, 0xde, 0x64, 0x55, + 0x95, 0xa9, 0xb3, 0xa2, 0x6a, 0x5d, 0x80, 0x0d, 0xd7, 0xb2, 0xcc, + 0x19, 0xd7, 0x41, 0xe4, 0x0d, 0x36, 0x07, 0x7a, 0x23, 0x6a, 0x43, + 0x11, 0x4e, 0xc2, 0x03, 0x63, 0x2a, 0x0d, 0x54, 0x98, 0xb4, 0xde, + 0x14, 0xd5, 0x35, 0x42, 0xed, 0xca, 0x04, 0x21, 0x23, 0xd7, 0xaf, + 0x9c, 0x5d, 0x19, 0x36, 0x9b, 0x5d, 0x80, 0x0f, 0x77, 0xbb, 0xe6, + 0xa0, 0x55, 0x1c, 0x62, 0xac, 0xf5, 0x00, 0x04, 0xf2, 0x9f, 0x79, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45}; + +const unsigned int SPEECH_DEFAULT_COUNT = 117U; diff --git a/P25Gateway/SpeechEU.h b/P25Gateway/SpeechEU.h new file mode 100644 index 0000000..2f1ae7c --- /dev/null +++ b/P25Gateway/SpeechEU.h @@ -0,0 +1,93 @@ +const unsigned char SPEECH_EU[] = { + 0x90, 0x44, 0xcd, 0xf5, 0x97, 0x20, 0x08, 0x4a, 0x73, 0xa4, 0xd7, + 0x94, 0x5a, 0x1e, 0x18, 0x88, 0xcd, 0x00, 0x0c, 0x50, 0xee, 0x32, + 0xa0, 0x41, 0x92, 0xff, 0x6c, 0xf7, 0x10, 0x4a, 0xe0, 0x8a, 0x51, + 0xa0, 0x59, 0x65, 0x1e, 0x9b, 0x29, 0x58, 0x0b, 0xf8, 0x96, 0x24, + 0xa0, 0x45, 0x98, 0xee, 0xc2, 0x9c, 0xc8, 0x0b, 0x70, 0x7c, 0xc5, + 0x90, 0x54, 0x46, 0xdd, 0x2e, 0x70, 0x18, 0x8a, 0x37, 0x33, 0x74, + 0x90, 0x4c, 0x96, 0x83, 0xd2, 0x2b, 0x98, 0x4a, 0x6f, 0xa0, 0x97, + 0x84, 0x51, 0x1a, 0x4f, 0x62, 0x45, 0x98, 0x8b, 0x76, 0x9f, 0xda, + 0x90, 0x4c, 0x87, 0xde, 0x46, 0x7c, 0x18, 0x4d, 0x30, 0x80, 0x8f, + 0x90, 0x50, 0x4c, 0xb8, 0xee, 0x53, 0x14, 0x08, 0x47, 0xbe, 0x1c, + 0x94, 0x48, 0xaa, 0xd5, 0xe2, 0x1c, 0x18, 0x0e, 0x87, 0x85, 0x11, + 0x90, 0x44, 0xd4, 0xd9, 0x18, 0x65, 0x00, 0x4a, 0x2f, 0x9e, 0xf6, + 0x90, 0x4d, 0x83, 0x8b, 0x55, 0x97, 0x00, 0x07, 0x54, 0x29, 0x5f, + 0xa0, 0x13, 0x1b, 0xeb, 0x3b, 0xdc, 0x08, 0x49, 0x2f, 0xa8, 0xd8, + 0x90, 0x50, 0x58, 0x9d, 0xe4, 0xa7, 0x10, 0x4e, 0x08, 0x84, 0x67, + 0x90, 0x4e, 0x89, 0x7b, 0xd3, 0xfa, 0xbc, 0x4c, 0x2a, 0x21, 0x56, + 0xa0, 0x51, 0x5e, 0xeb, 0xa0, 0x96, 0x08, 0x49, 0x70, 0xe2, 0x19, + 0x90, 0x50, 0x5e, 0xdd, 0x4d, 0x31, 0x00, 0x0b, 0x47, 0x2a, 0x36, + 0x90, 0x40, 0xca, 0xf4, 0xdf, 0xac, 0x08, 0x88, 0x5b, 0xb7, 0x57, + 0xa0, 0x1a, 0x03, 0x4f, 0x85, 0x69, 0x1a, 0x4d, 0xf8, 0x11, 0x50, + 0x90, 0x57, 0x63, 0x13, 0x9a, 0xda, 0x11, 0x4a, 0x3c, 0x82, 0xff, + 0x90, 0x4c, 0x92, 0xc8, 0x71, 0xe5, 0x00, 0x0b, 0xf3, 0xad, 0x16, + 0x90, 0x50, 0x4e, 0x9d, 0x6c, 0xa1, 0x18, 0x4d, 0x0d, 0xa8, 0xe7, + 0x90, 0x4a, 0x99, 0x7d, 0x98, 0x58, 0x00, 0x06, 0x83, 0x91, 0x0e, + 0x84, 0x46, 0xb0, 0x3d, 0x3c, 0xf0, 0x18, 0x89, 0x3b, 0xed, 0x8b, + 0x84, 0x28, 0xea, 0x74, 0xe8, 0xbe, 0x18, 0x8a, 0x6c, 0x03, 0xba, + 0x90, 0x5c, 0x12, 0xb1, 0xf9, 0x9a, 0x98, 0x4e, 0x58, 0x25, 0x47, + 0xa4, 0x45, 0xdc, 0x42, 0x71, 0x74, 0x00, 0x0b, 0x83, 0x44, 0x00, + 0x90, 0x54, 0x44, 0x93, 0xcb, 0x51, 0x00, 0x09, 0x3c, 0x95, 0x77, + 0x90, 0x40, 0xeb, 0xfd, 0x6b, 0x4a, 0x08, 0x48, 0x32, 0x20, 0x76, + 0xa0, 0x5d, 0x00, 0xcd, 0x85, 0x17, 0x10, 0x45, 0xf4, 0x81, 0x19, + 0xa0, 0x59, 0x26, 0xea, 0xad, 0x58, 0x90, 0x4e, 0xa0, 0x60, 0x00, + 0xa0, 0x60, 0x8e, 0x36, 0x7c, 0xb5, 0x10, 0x4a, 0x1a, 0xb2, 0x5b, + 0x90, 0x4c, 0x94, 0xf9, 0x74, 0x6e, 0x00, 0x0c, 0x36, 0xa1, 0x56, + 0xa0, 0x13, 0x11, 0xeb, 0xa4, 0xed, 0x88, 0x08, 0xc4, 0xa1, 0x59, + 0x90, 0x50, 0x49, 0xdd, 0xaf, 0x76, 0x00, 0x06, 0x7c, 0xa2, 0xfe, + 0x90, 0x46, 0xce, 0x48, 0x7e, 0xa0, 0x08, 0x0b, 0x33, 0x0d, 0x9f, + 0x90, 0x40, 0xcd, 0xb1, 0x9b, 0x94, 0x14, 0x4e, 0xef, 0xef, 0x9e, + 0x90, 0x48, 0x8a, 0xff, 0x7f, 0x08, 0x10, 0x4b, 0x00, 0xbe, 0x57, + 0x90, 0x56, 0x47, 0x0c, 0x42, 0x8b, 0x18, 0x48, 0x34, 0x78, 0x3e, + 0xa0, 0x55, 0x5d, 0xcb, 0xd9, 0xcd, 0x00, 0x08, 0xbc, 0xfc, 0x15, + 0x90, 0x40, 0xca, 0x19, 0x1c, 0x8f, 0x18, 0x4f, 0x35, 0x28, 0x86, + 0x90, 0x55, 0x57, 0x81, 0xc9, 0x17, 0x58, 0x4c, 0xf2, 0x23, 0x57, + 0xa0, 0x13, 0x12, 0x4b, 0x3f, 0xad, 0x18, 0x49, 0xfc, 0xe3, 0x48, + 0x90, 0x4c, 0x94, 0x7d, 0xd5, 0xc7, 0x18, 0x4b, 0x1d, 0xa5, 0x57, + 0xa0, 0x64, 0xd0, 0xab, 0x50, 0x85, 0x91, 0x4a, 0x75, 0x9e, 0xc0, + 0xa0, 0x41, 0x97, 0xc6, 0x7f, 0x63, 0x5a, 0x4d, 0xf8, 0x10, 0x13, + 0xa0, 0x49, 0x8a, 0x7e, 0xf2, 0x0f, 0x18, 0x1c, 0xe2, 0x25, 0xec, + 0xa0, 0x59, 0x2a, 0x68, 0x4d, 0xbd, 0x18, 0x05, 0xcd, 0x8b, 0x99, + 0x90, 0x52, 0x4b, 0x59, 0xce, 0x2b, 0x00, 0x0e, 0x9f, 0x05, 0x16, + 0x20, 0xff, 0xf7, 0xa9, 0x14, 0x9c, 0x03, 0x4c, 0x87, 0x6e, 0xb5, + 0x25, 0xfd, 0xca, 0x7b, 0x96, 0xd3, 0xc0, 0xa0, 0x96, 0x42, 0x94, + 0x21, 0xfd, 0xea, 0x16, 0xad, 0x65, 0x83, 0x45, 0x62, 0xf8, 0x99, + 0x1a, 0xf6, 0x92, 0x1f, 0xa5, 0x57, 0xc1, 0x12, 0xf3, 0xc6, 0xa2, + 0x17, 0x7c, 0xa1, 0x44, 0x03, 0xde, 0xf4, 0xa3, 0xde, 0x0e, 0x2b, + 0x13, 0x66, 0x7a, 0x72, 0x35, 0x8d, 0xe8, 0x0d, 0xcc, 0x16, 0x0c, + 0x13, 0x77, 0x10, 0xa8, 0xfb, 0x6e, 0xe7, 0xc7, 0x6f, 0x11, 0x3b, + 0x12, 0xd7, 0xf1, 0x65, 0x1e, 0x3b, 0xed, 0x58, 0xb3, 0xab, 0x4e, + 0x1a, 0xdd, 0xd4, 0x9d, 0xac, 0x46, 0xc5, 0x0b, 0x27, 0x6c, 0x97, + 0x22, 0xd7, 0x52, 0x7f, 0xa4, 0x1e, 0xe2, 0x95, 0x85, 0x3e, 0xde, + 0x2a, 0xe7, 0xba, 0xb7, 0x09, 0x1c, 0xe1, 0x15, 0xb6, 0x07, 0xab, + 0x32, 0xea, 0x8d, 0xbe, 0x96, 0xbb, 0xf1, 0x1e, 0x5c, 0x10, 0x48, + 0x36, 0xed, 0x22, 0x77, 0x7b, 0x55, 0xf1, 0x54, 0x0f, 0x08, 0xf7, + 0x3a, 0xdd, 0xe2, 0x87, 0xd2, 0x41, 0xf8, 0x47, 0x7a, 0xab, 0xd2, + 0x36, 0xed, 0xa0, 0x57, 0xa8, 0x17, 0xf0, 0xfc, 0xee, 0xa4, 0x7f, + 0x32, 0xf6, 0x35, 0x10, 0xab, 0x95, 0xe0, 0xee, 0x56, 0x32, 0x4e, + 0x2e, 0x5f, 0xa1, 0xc5, 0x83, 0x69, 0xc1, 0x85, 0x87, 0x8e, 0xa7, + 0x29, 0xff, 0xc0, 0x14, 0xe0, 0x3e, 0x81, 0x8f, 0x41, 0xbe, 0x16, + 0x20, 0xdd, 0x07, 0x71, 0x52, 0x9f, 0x03, 0xa6, 0x89, 0x73, 0x27, + 0x28, 0xda, 0x65, 0x53, 0x72, 0xc5, 0x01, 0x24, 0x1e, 0xbf, 0x78, + 0x34, 0xcb, 0x67, 0xfc, 0x5a, 0x98, 0x00, 0x6e, 0x60, 0x19, 0x0d, + 0x29, 0xce, 0x11, 0x60, 0x35, 0x79, 0x03, 0x2a, 0x4a, 0xfe, 0x12, + 0x2d, 0x5d, 0x2f, 0x2c, 0xab, 0x2e, 0x00, 0xf5, 0x8f, 0x9a, 0x2d, + 0x0c, 0xe4, 0x96, 0xf6, 0x98, 0xd5, 0x00, 0x6d, 0xa3, 0xe4, 0xec, + 0xac, 0x41, 0x88, 0x42, 0x60, 0xde, 0x00, 0x05, 0x5f, 0x50, 0xdd, + 0xa0, 0x4d, 0xac, 0x6e, 0xca, 0x29, 0x90, 0x08, 0xfe, 0x82, 0x90, + 0x90, 0x40, 0xcc, 0x97, 0x6d, 0x7b, 0x99, 0x48, 0x5c, 0xa6, 0x7f, + 0x90, 0x58, 0x0a, 0xb9, 0xcd, 0xf3, 0x18, 0x49, 0x31, 0x23, 0x16, + 0xa0, 0x4d, 0xa4, 0x2c, 0x0d, 0x1c, 0x18, 0x0a, 0x7e, 0xc7, 0xdd, + 0x90, 0x48, 0xa8, 0x1f, 0xf2, 0xd2, 0x9c, 0x4b, 0x28, 0x23, 0x9e, + 0xa0, 0x74, 0x10, 0x08, 0x4e, 0xbd, 0x00, 0x0b, 0xf1, 0xa7, 0x5d, + 0x90, 0x44, 0xd7, 0x59, 0x50, 0x3d, 0x08, 0x4d, 0xf5, 0x2f, 0x56, + 0x94, 0x4c, 0xa6, 0xb3, 0xcc, 0x4d, 0x00, 0x0f, 0xc5, 0x44, 0xd9, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44}; + +const unsigned int SPEECH_EU_COUNT = 90U; diff --git a/P25Gateway/SpeechNA.h b/P25Gateway/SpeechNA.h new file mode 100644 index 0000000..fee708d --- /dev/null +++ b/P25Gateway/SpeechNA.h @@ -0,0 +1,93 @@ +const unsigned char SPEECH_NA[] = { + 0x94, 0x4c, 0x82, 0x8e, 0x6d, 0x65, 0x00, 0x0e, 0x09, 0x6f, 0xd8, + 0x94, 0x58, 0x2e, 0xb8, 0xc6, 0x4d, 0xd8, 0x0f, 0x66, 0xd5, 0x49, + 0x90, 0xc0, 0xcc, 0xd1, 0x95, 0x7d, 0x1c, 0x40, 0x6d, 0xa9, 0x86, + 0x90, 0x5c, 0x04, 0x85, 0x6e, 0x79, 0x90, 0x4e, 0x54, 0x2e, 0x37, + 0x90, 0x23, 0xfc, 0x7f, 0x7a, 0x6b, 0x00, 0x0f, 0x1a, 0x4e, 0x5e, + 0xa0, 0x51, 0x1c, 0x2e, 0x99, 0xa9, 0x00, 0x0e, 0xf8, 0xc4, 0xd5, + 0xa0, 0x5d, 0x15, 0x73, 0xa0, 0x0f, 0x9c, 0x8f, 0x6a, 0xba, 0xbc, + 0x84, 0x48, 0xae, 0x2e, 0x74, 0xb7, 0x18, 0x0f, 0x37, 0xae, 0x1d, + 0x90, 0x54, 0x44, 0x98, 0x44, 0xcf, 0x58, 0x48, 0x3b, 0xbd, 0x7e, + 0x90, 0x43, 0xda, 0x6f, 0x59, 0xe0, 0x58, 0x4f, 0x14, 0xee, 0x4f, + 0x90, 0x39, 0x2f, 0xdd, 0x63, 0x30, 0x00, 0x0c, 0x03, 0x18, 0x04, + 0x90, 0x4f, 0x94, 0x71, 0xd4, 0x68, 0x00, 0x0d, 0xf2, 0x45, 0x77, + 0x84, 0x49, 0xaa, 0x4c, 0x94, 0xc5, 0x00, 0x0f, 0x3b, 0xfb, 0x0c, + 0x94, 0x4c, 0x82, 0x05, 0x25, 0x1f, 0x98, 0x2c, 0xa8, 0x45, 0x3b, + 0x94, 0x40, 0xef, 0xf8, 0xbf, 0x07, 0x08, 0x8e, 0x7e, 0x8e, 0x0a, + 0x84, 0x51, 0x1a, 0x83, 0xfa, 0xe8, 0x00, 0x0c, 0xdc, 0x8f, 0x7b, + 0x50, 0x48, 0x9e, 0xd5, 0x39, 0x36, 0x00, 0x67, 0x5e, 0x1c, 0x14, + 0x50, 0x44, 0xc2, 0x9e, 0xfe, 0x9d, 0x20, 0x70, 0x9a, 0xd5, 0x49, + 0x4c, 0x50, 0x7d, 0xf2, 0x58, 0x9a, 0x00, 0x71, 0x90, 0xa0, 0xfe, + 0x50, 0xca, 0x88, 0xd7, 0xfb, 0x5b, 0x00, 0x0f, 0x21, 0x27, 0xa3, + 0x5c, 0x54, 0x64, 0x36, 0x47, 0xbb, 0x00, 0x38, 0xb3, 0x9b, 0x04, + 0x50, 0x52, 0x59, 0x99, 0xab, 0xd2, 0x00, 0x6d, 0x81, 0x95, 0x99, + 0x14, 0xc9, 0x8d, 0xe9, 0xf3, 0xff, 0x00, 0xaf, 0x99, 0x6b, 0xd8, + 0x25, 0xff, 0xdc, 0x67, 0xdf, 0x9c, 0x81, 0xa4, 0xfe, 0xae, 0x87, + 0x2a, 0x5b, 0xe4, 0x1f, 0x63, 0xdc, 0xc3, 0x30, 0x46, 0x50, 0x7c, + 0x2a, 0xe7, 0xfa, 0x14, 0x60, 0xec, 0xe1, 0xcf, 0x34, 0x10, 0xa5, + 0x2e, 0xdd, 0x17, 0xc0, 0xb2, 0xd8, 0xff, 0xb6, 0xfc, 0x25, 0x48, + 0x2f, 0x6c, 0x97, 0xe8, 0x8b, 0x69, 0xfc, 0x36, 0xe9, 0x0a, 0x93, + 0x2f, 0x4f, 0xa5, 0xd4, 0x37, 0x98, 0xfe, 0x9b, 0x79, 0x48, 0x0a, + 0x2b, 0x6f, 0xc0, 0x87, 0x94, 0x70, 0xf9, 0x17, 0x08, 0x6e, 0xaf, + 0x2a, 0xff, 0xc0, 0x95, 0x13, 0xe1, 0xe3, 0x08, 0xfc, 0x15, 0xa6, + 0x32, 0x5e, 0xb9, 0xd5, 0x13, 0x06, 0xc9, 0x97, 0x60, 0x46, 0x53, + 0x41, 0xcb, 0xa9, 0xac, 0xc8, 0x44, 0x80, 0xbe, 0x96, 0xbe, 0xa2, + 0x35, 0x70, 0xee, 0x0c, 0x3e, 0x18, 0x81, 0xb4, 0x91, 0x6a, 0x53, + 0x31, 0xbb, 0x2c, 0x44, 0x72, 0x15, 0x01, 0xc4, 0x0a, 0x61, 0x6a, + 0x1e, 0x6d, 0x48, 0xfd, 0x47, 0x8d, 0x02, 0x14, 0x4d, 0x38, 0x5b, + 0x2a, 0xff, 0xe2, 0x0a, 0x65, 0xf2, 0xe0, 0xd9, 0x54, 0x9c, 0x38, + 0x2e, 0x6d, 0xb3, 0xb9, 0x8b, 0x47, 0xf1, 0xd4, 0x52, 0x7a, 0xfb, + 0x2e, 0x6e, 0xd1, 0x3f, 0xc2, 0xab, 0xf9, 0x0e, 0xbb, 0x1c, 0x5a, + 0x26, 0x77, 0xe8, 0x14, 0xe8, 0x5f, 0xa2, 0xd6, 0xdb, 0x65, 0x2d, + 0x27, 0x4c, 0xfb, 0x09, 0xe2, 0xb4, 0x80, 0xf7, 0x13, 0xba, 0xae, + 0x2b, 0x48, 0x9f, 0xa5, 0x5d, 0x23, 0xff, 0xfb, 0x46, 0xd5, 0x25, + 0x2b, 0x59, 0xa6, 0xb3, 0x89, 0x50, 0xfe, 0x49, 0xf6, 0xf6, 0x1c, + 0x2b, 0x69, 0xde, 0x94, 0x92, 0xc4, 0xf9, 0x24, 0x55, 0x0b, 0xdb, + 0x2b, 0x6d, 0x90, 0xa9, 0x8e, 0xfe, 0xf1, 0x65, 0x73, 0xea, 0x62, + 0x2b, 0x6f, 0xd0, 0x89, 0x05, 0x40, 0xfc, 0xda, 0x9b, 0x22, 0x29, + 0x2b, 0x6e, 0xd1, 0x8b, 0x4d, 0x51, 0xfc, 0x4c, 0xe8, 0xed, 0xf8, + 0x2b, 0x4d, 0xfa, 0x8a, 0x06, 0xe6, 0xfd, 0x45, 0x78, 0x66, 0xb3, + 0x2b, 0x4a, 0xbd, 0xb5, 0x40, 0x7d, 0xfd, 0x7f, 0x7c, 0x37, 0x5a, + 0x2e, 0xdf, 0x70, 0x71, 0x61, 0xe4, 0x80, 0x76, 0xca, 0xb2, 0xc5, + 0x39, 0x4e, 0xc3, 0x4f, 0xf4, 0x34, 0x00, 0xdd, 0x8b, 0x60, 0x36, + 0x29, 0x5f, 0x70, 0xd2, 0x98, 0x84, 0x00, 0x4d, 0x49, 0x4e, 0xc3, + 0x38, 0xcf, 0x8f, 0x15, 0x51, 0xcf, 0x80, 0xc4, 0xbb, 0x15, 0x48, + 0x22, 0x97, 0x10, 0x20, 0xd9, 0xbe, 0x00, 0x6f, 0x1f, 0x30, 0xd9, + 0x2e, 0x5f, 0xf5, 0x82, 0x17, 0x05, 0x00, 0x89, 0x63, 0x04, 0x1e, + 0x32, 0xfe, 0x45, 0x84, 0x13, 0x7b, 0xfd, 0x97, 0x58, 0x82, 0x43, + 0x37, 0x65, 0x3a, 0x63, 0x38, 0xc7, 0xd8, 0x15, 0x0a, 0x55, 0xcc, + 0x3e, 0xd3, 0x35, 0x39, 0xb7, 0x93, 0xf4, 0x99, 0xe8, 0x3e, 0xef, + 0x42, 0xd4, 0xde, 0x98, 0x1c, 0x1d, 0xfc, 0x74, 0x70, 0x38, 0x68, + 0x3e, 0xd5, 0x55, 0x23, 0xeb, 0x65, 0xfe, 0x3a, 0x3f, 0x80, 0xdf, + 0x42, 0x53, 0x59, 0x43, 0x62, 0xf9, 0xfd, 0xc5, 0xbc, 0x9f, 0x42, + 0x42, 0x3f, 0x4a, 0xf9, 0x05, 0x14, 0x80, 0xf2, 0x4c, 0x69, 0xf9, + 0x41, 0xfb, 0x0c, 0xfc, 0x2d, 0x0f, 0x80, 0xd7, 0x15, 0x39, 0xb2, + 0x41, 0xd7, 0x52, 0x59, 0x07, 0x9e, 0xb2, 0xb9, 0xdf, 0x15, 0xdb, + 0x45, 0x5f, 0x03, 0xd7, 0x61, 0xa1, 0x80, 0xcb, 0x8e, 0x76, 0x06, + 0x40, 0xa9, 0x6d, 0xe9, 0x00, 0x3b, 0x00, 0x36, 0x51, 0x39, 0xad, + 0xa0, 0x07, 0x80, 0x6b, 0x4b, 0x39, 0x80, 0x0d, 0xff, 0x88, 0x50, + 0x90, 0xd8, 0x0e, 0xf9, 0xc2, 0x08, 0x38, 0x40, 0x3c, 0xa0, 0x77, + 0x90, 0xcc, 0xa6, 0x98, 0x93, 0x36, 0x00, 0x01, 0x27, 0xb7, 0xd6, + 0x90, 0x44, 0xc0, 0x9e, 0x6e, 0x57, 0x00, 0x0e, 0x32, 0xcf, 0x25, + 0x90, 0xd8, 0x18, 0xeb, 0xe4, 0xec, 0x5c, 0x40, 0x28, 0xa0, 0x56, + 0x94, 0x46, 0xc5, 0x15, 0xfb, 0xc7, 0x00, 0x0e, 0x8d, 0x43, 0x61, + 0x94, 0x50, 0x46, 0xde, 0x96, 0x5a, 0x38, 0x0c, 0x3d, 0x58, 0x8a, + 0x84, 0x4a, 0xae, 0x21, 0x6b, 0x19, 0x98, 0x0d, 0x1a, 0xef, 0x8b, + 0x94, 0x31, 0x56, 0x38, 0xd2, 0xef, 0x18, 0x0b, 0xbe, 0x53, 0x9a, + 0x94, 0x4a, 0x8c, 0x57, 0x6e, 0x5a, 0x00, 0x0c, 0x46, 0x7f, 0x7f, + 0x90, 0x55, 0x66, 0x99, 0x43, 0x0e, 0x18, 0x4c, 0x66, 0x00, 0x96, + 0x90, 0x48, 0x8b, 0xf7, 0x87, 0xb4, 0x00, 0x0b, 0xd9, 0xbf, 0x7f, + 0xa0, 0xdd, 0x00, 0x6b, 0xbe, 0x15, 0x81, 0x40, 0xf3, 0x8f, 0x10, + 0x90, 0x3d, 0x20, 0x97, 0x60, 0x5e, 0x80, 0x0c, 0x78, 0x2e, 0x4d, + 0x90, 0xc0, 0xde, 0xb9, 0xa9, 0xbf, 0x98, 0x42, 0x17, 0x23, 0xb6, + 0x84, 0x58, 0x8b, 0x3f, 0x11, 0xd3, 0x00, 0x0c, 0x1f, 0xbb, 0x4d, + 0x84, 0xd1, 0x9b, 0xc5, 0x7b, 0xcc, 0x98, 0xa3, 0x1a, 0x4d, 0x12, + 0x90, 0x44, 0xc2, 0x09, 0xce, 0x2d, 0x18, 0xce, 0x3d, 0x05, 0x77, + 0x94, 0x5a, 0x08, 0x74, 0x8f, 0x95, 0x08, 0x0e, 0x9b, 0xd4, 0x98, + 0x90, 0x48, 0x8c, 0xd9, 0x77, 0x95, 0x00, 0x0e, 0x2d, 0xbc, 0x17, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45}; + +const unsigned int SPEECH_NA_COUNT = 90U; diff --git a/P25Gateway/SpeechPacific.h b/P25Gateway/SpeechPacific.h new file mode 100644 index 0000000..444ecdc --- /dev/null +++ b/P25Gateway/SpeechPacific.h @@ -0,0 +1,84 @@ +const unsigned char SPEECH_PACIFIC[] = { + 0xa0, 0x03, 0xb3, 0xef, 0xe8, 0x87, 0x00, 0x0c, 0xd5, 0x81, 0x2d, + 0x90, 0x55, 0x46, 0x9d, 0x8c, 0x37, 0x18, 0x4c, 0x33, 0xa5, 0xc6, + 0x90, 0x4a, 0xab, 0x73, 0x52, 0xee, 0x00, 0x0b, 0x36, 0x2c, 0x65, + 0x84, 0x4a, 0xad, 0x0d, 0x34, 0x63, 0x00, 0x07, 0xf3, 0x0d, 0xfe, + 0x94, 0x53, 0x48, 0x40, 0x1e, 0xeb, 0x00, 0x0d, 0x92, 0x7d, 0x21, + 0x90, 0x4c, 0x02, 0x1b, 0xd6, 0xa2, 0x89, 0x0b, 0x3a, 0x65, 0x6a, + 0xa0, 0x74, 0x50, 0xbf, 0x0c, 0x37, 0x80, 0x08, 0x6a, 0x84, 0x0d, + 0x90, 0x31, 0x4f, 0xdd, 0x2b, 0x3f, 0x00, 0x0a, 0x6e, 0x2e, 0x9e, + 0x50, 0x4c, 0x82, 0xd7, 0xfa, 0x65, 0x00, 0x52, 0x33, 0x1f, 0xcd, + 0x4c, 0x58, 0x1d, 0x41, 0x4d, 0x4c, 0x00, 0x5a, 0xab, 0x70, 0x6c, + 0xc4, 0x5a, 0x4a, 0x56, 0xd8, 0xc5, 0x80, 0x0d, 0x38, 0x4a, 0xb5, + 0xa0, 0x51, 0x13, 0xe6, 0xb7, 0x3d, 0x52, 0x0c, 0xfe, 0x00, 0x1a, + 0x90, 0x44, 0xe3, 0x7d, 0x5b, 0xdd, 0xd8, 0x4a, 0x1d, 0xae, 0x5d, + 0x90, 0x5a, 0x0c, 0x5f, 0x83, 0x44, 0x00, 0x08, 0x08, 0x90, 0xa6, + 0x90, 0x45, 0xc6, 0xcc, 0xde, 0xbd, 0x00, 0x0e, 0x97, 0x26, 0x3d, + 0x90, 0x40, 0xe8, 0xf5, 0x5b, 0x40, 0x00, 0x08, 0x4d, 0xcd, 0x7e, + 0x94, 0x5e, 0x03, 0x51, 0xd1, 0x10, 0x00, 0x0e, 0xbb, 0x45, 0x31, + 0x90, 0x4c, 0x86, 0x39, 0x96, 0x30, 0x1a, 0x4a, 0x74, 0x06, 0xb6, + 0x94, 0x42, 0xc9, 0x5f, 0xfd, 0xa3, 0x00, 0x0a, 0x0c, 0x86, 0x39, + 0x18, 0xf0, 0x8e, 0x2a, 0x17, 0xb1, 0x00, 0x7f, 0xd0, 0x60, 0x46, + 0x11, 0x7f, 0x5d, 0x12, 0x79, 0xe3, 0x96, 0x0f, 0x98, 0xa2, 0x45, + 0x10, 0xff, 0x48, 0x20, 0x48, 0xf9, 0x8e, 0x01, 0x6b, 0x94, 0x54, + 0x26, 0x4f, 0x8a, 0x67, 0x8f, 0x1e, 0x81, 0x24, 0xe4, 0x5d, 0x71, + 0x16, 0xff, 0xc8, 0x26, 0x3e, 0xc9, 0x80, 0x0a, 0x23, 0x98, 0x2c, + 0x1a, 0xdf, 0xc4, 0xc0, 0xac, 0xd5, 0xe7, 0xa5, 0xa2, 0xa8, 0x79, + 0x1a, 0xff, 0x05, 0x29, 0x01, 0x17, 0xe3, 0x9d, 0xf7, 0x21, 0x94, + 0x1d, 0xef, 0x35, 0xea, 0x11, 0x9d, 0x86, 0x18, 0xd6, 0x81, 0x5f, + 0x19, 0xc7, 0xe0, 0xc1, 0xbe, 0xec, 0x02, 0x40, 0x4d, 0xdb, 0xc6, + 0x19, 0xd7, 0xc0, 0xdc, 0x2b, 0x6e, 0x80, 0xa4, 0x4e, 0x3d, 0x25, + 0x15, 0x8b, 0xcb, 0xac, 0xd3, 0x47, 0x03, 0xe4, 0x49, 0x79, 0x5e, + 0x21, 0xfc, 0x20, 0xd4, 0xd3, 0xcc, 0x02, 0x87, 0xd1, 0x9d, 0xc3, + 0x1a, 0x77, 0x9c, 0xb1, 0x4c, 0x82, 0x00, 0x96, 0x6c, 0x30, 0xc2, + 0x1b, 0x56, 0xda, 0xa6, 0x85, 0x83, 0xfc, 0x14, 0xb9, 0xfb, 0xf7, + 0x1f, 0x6d, 0x6d, 0x88, 0x0c, 0x1f, 0xfd, 0x6b, 0x89, 0x4e, 0x24, + 0x1f, 0x6c, 0x4f, 0xd2, 0x3e, 0x17, 0xf4, 0xbe, 0x8d, 0x7d, 0x5f, + 0x23, 0x74, 0xb2, 0xd6, 0x57, 0x2f, 0xf9, 0x9d, 0x5d, 0xea, 0x28, + 0x2a, 0x5d, 0xae, 0x3c, 0xe9, 0x07, 0x82, 0xab, 0xf8, 0xd2, 0x4d, + 0x3d, 0xbe, 0x60, 0xeb, 0xe2, 0xb2, 0x00, 0xcb, 0x17, 0x07, 0xde, + 0x49, 0xb9, 0x1d, 0x6e, 0x01, 0x15, 0x00, 0x47, 0xd1, 0x4d, 0x73, + 0x39, 0xc8, 0xcd, 0xfd, 0x9e, 0x20, 0x00, 0x17, 0xa2, 0x0b, 0x0c, + 0x31, 0xce, 0x91, 0x39, 0x66, 0x84, 0x00, 0x7b, 0x14, 0x28, 0x43, + 0x2e, 0xff, 0xe5, 0x84, 0x91, 0xb9, 0x80, 0x0f, 0xed, 0x84, 0xd4, + 0x36, 0xde, 0x16, 0x7a, 0x08, 0xa9, 0xf1, 0x59, 0x68, 0xf3, 0x5d, + 0x3a, 0xe4, 0xb7, 0x5b, 0x1a, 0xb0, 0xec, 0x3f, 0x94, 0x8c, 0xd2, + 0x3a, 0xce, 0xe6, 0x4f, 0x78, 0x36, 0xf9, 0x19, 0xbb, 0xf4, 0x61, + 0x3a, 0x64, 0xa5, 0x57, 0x54, 0xd0, 0xc8, 0xef, 0xa1, 0x9c, 0xd4, + 0x46, 0x59, 0x0d, 0x7f, 0x33, 0x88, 0xe8, 0xb2, 0x0d, 0x04, 0x67, + 0x59, 0xf9, 0x66, 0xe5, 0xb2, 0x73, 0x80, 0x2a, 0xb5, 0x7a, 0x9c, + 0x29, 0x58, 0xcf, 0x99, 0xc0, 0xf0, 0x02, 0x6b, 0x14, 0xe6, 0x3d, + 0x34, 0xd2, 0xfe, 0xe2, 0x7e, 0x30, 0x01, 0x2c, 0x81, 0xe0, 0x60, + 0x3c, 0xd5, 0x45, 0x6e, 0xab, 0x26, 0x00, 0x15, 0x34, 0xb8, 0x53, + 0x40, 0xcb, 0x29, 0xe9, 0xa2, 0x77, 0x84, 0x5a, 0xb7, 0x68, 0x16, + 0x50, 0x40, 0xca, 0x9b, 0x0a, 0xc0, 0x00, 0x6f, 0xd7, 0xed, 0xc3, + 0x90, 0x21, 0x9c, 0x1b, 0xed, 0xd7, 0x98, 0x4c, 0x35, 0x25, 0xbe, + 0x90, 0x5a, 0x2a, 0x75, 0x69, 0x2b, 0x00, 0x0c, 0x62, 0xcb, 0x57, + 0x90, 0x44, 0xc0, 0x88, 0xa3, 0xbf, 0x18, 0x4f, 0x19, 0xac, 0xe6, + 0x94, 0x5f, 0x27, 0x59, 0xa4, 0x11, 0x9c, 0x0e, 0xd3, 0x4f, 0x71, + 0x90, 0x21, 0xcb, 0xb7, 0x2c, 0xc6, 0x00, 0x0e, 0x17, 0x69, 0x94, + 0x90, 0x42, 0xd8, 0x0c, 0x7d, 0x9a, 0x00, 0x0a, 0x10, 0xbe, 0xf7, + 0xa0, 0x5d, 0x25, 0xea, 0x85, 0x05, 0x00, 0x0c, 0xf6, 0x2e, 0x34, + 0x50, 0x21, 0xff, 0xb8, 0xc9, 0xb5, 0x00, 0x7b, 0x49, 0xdf, 0x41, + 0x90, 0x54, 0x40, 0xf7, 0x2f, 0x28, 0x98, 0x2f, 0x74, 0x3b, 0xd6, + 0x90, 0x4a, 0x8e, 0x08, 0x69, 0x26, 0x00, 0x0a, 0xb9, 0xe8, 0x6f, + 0x90, 0xc2, 0xcc, 0x7d, 0xdf, 0x70, 0x38, 0x40, 0x23, 0x25, 0xa6, + 0x5c, 0x62, 0xa8, 0x68, 0x1a, 0x96, 0x12, 0x3a, 0xbc, 0x8e, 0xed, + 0x50, 0x4c, 0x82, 0x07, 0xff, 0x94, 0x00, 0x5c, 0x76, 0x92, 0x18, + 0x50, 0x52, 0x49, 0xef, 0xc8, 0x2e, 0x00, 0x66, 0x8e, 0x6f, 0xa3, + 0x5c, 0x54, 0x24, 0xba, 0xc1, 0x6d, 0x00, 0x38, 0x16, 0xdf, 0x4e, + 0x50, 0x46, 0xd2, 0x5c, 0xdc, 0x5d, 0x00, 0x67, 0x9f, 0x93, 0x71, + 0xa0, 0x51, 0x12, 0x60, 0xad, 0xd9, 0x00, 0x0d, 0xfd, 0xb1, 0x10, + 0xa0, 0x59, 0x0f, 0xee, 0xba, 0x45, 0x89, 0x4f, 0x4d, 0x8e, 0x91, + 0xa0, 0x5d, 0x00, 0x2a, 0xb4, 0x3b, 0x98, 0x4b, 0xb6, 0xb3, 0x78, + 0x84, 0x54, 0x17, 0xfe, 0x9a, 0x94, 0x00, 0x0f, 0x38, 0xfd, 0x5b, + 0x90, 0x4e, 0x80, 0x79, 0x9a, 0x9a, 0x80, 0x0e, 0x22, 0x34, 0xa6, + 0x90, 0x44, 0xc7, 0x0d, 0x7e, 0x6e, 0x18, 0x4a, 0x7d, 0x29, 0x57, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x45}; + +const unsigned int SPEECH_PACIFIC_COUNT = 81U; diff --git a/P25Gateway/SpeechWW.h b/P25Gateway/SpeechWW.h new file mode 100644 index 0000000..f16bb92 --- /dev/null +++ b/P25Gateway/SpeechWW.h @@ -0,0 +1,93 @@ +const unsigned char SPEECH_WW[] = { + 0x9c, 0x48, 0x9a, 0x6b, 0xd6, 0xbb, 0x00, 0x0b, 0xf1, 0xdb, 0x4e, + 0x90, 0x33, 0x48, 0x70, 0xae, 0x0a, 0x68, 0x0f, 0x79, 0x30, 0xaf, + 0x90, 0x48, 0x8f, 0xd7, 0x67, 0x95, 0x68, 0x4f, 0x5e, 0xcf, 0x3e, + 0x90, 0xd4, 0x6d, 0xe9, 0xc2, 0x5e, 0x08, 0x40, 0x76, 0x65, 0x47, + 0xa0, 0x55, 0x18, 0xea, 0x66, 0x1f, 0x80, 0x0c, 0x5e, 0x6c, 0x30, + 0xa0, 0x59, 0x27, 0x73, 0x82, 0xe9, 0x00, 0x0d, 0xb2, 0xc2, 0xc1, + 0x90, 0xd6, 0x65, 0x51, 0xca, 0x48, 0x80, 0x00, 0xee, 0x24, 0x16, + 0x90, 0x40, 0xc8, 0x8b, 0xbf, 0x55, 0x00, 0x0f, 0x72, 0x34, 0xe7, + 0xa0, 0x49, 0xa2, 0xca, 0x6f, 0x57, 0x10, 0x4f, 0xff, 0xb5, 0x30, + 0xa0, 0x55, 0x1c, 0x67, 0xe4, 0x9d, 0x11, 0x4d, 0x16, 0xca, 0x41, + 0xa0, 0x03, 0xb3, 0xeb, 0x48, 0xa1, 0x18, 0x4c, 0xeb, 0x6c, 0xb8, + 0xa0, 0x78, 0x6f, 0x45, 0x01, 0x69, 0x00, 0x0d, 0xd6, 0xb3, 0xc1, + 0xa0, 0x41, 0xd7, 0xba, 0xc8, 0xb7, 0x09, 0xcf, 0xc8, 0xa9, 0xd8, + 0xa0, 0x4d, 0x80, 0x6a, 0xd7, 0xcb, 0x00, 0x0d, 0xe7, 0x93, 0x41, + 0x90, 0x4c, 0x96, 0x99, 0xb4, 0x63, 0x18, 0x4c, 0x6b, 0xa5, 0xd6, + 0x90, 0x4a, 0x8e, 0x5d, 0x9a, 0x79, 0x00, 0x0f, 0x94, 0x05, 0x97, + 0x90, 0x54, 0x60, 0xfb, 0xe8, 0xc4, 0xd8, 0x4d, 0x2c, 0x2a, 0xfc, + 0x90, 0x21, 0xcc, 0x94, 0x73, 0x97, 0x58, 0x0c, 0x5f, 0x35, 0x07, + 0x90, 0x4c, 0xb3, 0x1f, 0xb4, 0x44, 0x55, 0x0c, 0x20, 0xc3, 0xfe, + 0xa0, 0x55, 0x1b, 0x22, 0x8b, 0x8d, 0x00, 0x0f, 0xe4, 0x83, 0xd1, + 0xa0, 0x59, 0x0e, 0xce, 0x3c, 0x57, 0x1a, 0xce, 0x9e, 0x9e, 0x30, + 0xa0, 0x68, 0xa7, 0x26, 0x74, 0x48, 0x18, 0x4f, 0xde, 0xc8, 0x5b, + 0x90, 0x5a, 0x08, 0x5c, 0x4d, 0xbe, 0x00, 0x0f, 0x05, 0xec, 0x5e, + 0xa0, 0x49, 0xcf, 0xaf, 0xd9, 0x25, 0x80, 0x09, 0xe7, 0x92, 0xc9, + 0xa0, 0x02, 0x9a, 0xfb, 0x50, 0xb5, 0x1b, 0x4e, 0xa0, 0xec, 0x18, + 0x90, 0x50, 0x6a, 0xc9, 0xf3, 0x15, 0x38, 0x0e, 0x3d, 0xb5, 0xdf, + 0x90, 0x4f, 0x03, 0x38, 0x9f, 0xba, 0x00, 0x0e, 0x25, 0x00, 0x76, + 0x90, 0x31, 0x44, 0x9d, 0x29, 0x0b, 0x18, 0x4d, 0x03, 0x28, 0x97, + 0x90, 0x57, 0x6c, 0x55, 0xca, 0xe8, 0x80, 0x0c, 0xff, 0x87, 0x16, + 0x84, 0x41, 0x38, 0x1e, 0xb2, 0xf9, 0x08, 0x8d, 0x7d, 0x85, 0xab, + 0xa0, 0xf8, 0x3c, 0xe2, 0x62, 0x66, 0x98, 0x02, 0x5a, 0xb0, 0xb6, + 0x90, 0x42, 0xd9, 0x7d, 0xc4, 0x68, 0x18, 0x8e, 0x13, 0xc1, 0x5f, + 0x90, 0x5c, 0x06, 0x8d, 0x08, 0x53, 0x18, 0x4e, 0x19, 0xbb, 0xee, + 0xa0, 0x45, 0xfd, 0xcb, 0xcc, 0x25, 0x80, 0x0d, 0xff, 0x21, 0x51, + 0xa0, 0x45, 0x90, 0x24, 0xef, 0xd5, 0x00, 0x0e, 0xce, 0xd3, 0x08, + 0x90, 0x4c, 0x85, 0x99, 0xf7, 0x1d, 0x80, 0x0e, 0xb1, 0x39, 0x5f, + 0x29, 0x7f, 0xd9, 0x19, 0xe2, 0x8b, 0x00, 0x45, 0x41, 0xcb, 0xc8, + 0x2e, 0x7f, 0x75, 0x80, 0x0f, 0x41, 0x80, 0x50, 0x1e, 0xc0, 0xe9, + 0x29, 0xf9, 0xf6, 0x58, 0xe3, 0x06, 0xc3, 0x73, 0x57, 0xb5, 0x9a, + 0x26, 0x75, 0x3a, 0xdf, 0x38, 0x38, 0xc1, 0xc9, 0x2f, 0x31, 0x1d, + 0x26, 0xdf, 0xe8, 0x1a, 0xa0, 0xfd, 0xf9, 0x1b, 0x00, 0x9a, 0x9c, + 0x26, 0xf5, 0xe6, 0x16, 0x6b, 0x71, 0xfb, 0x10, 0x70, 0x82, 0xb3, + 0x26, 0xf3, 0xec, 0x14, 0xc0, 0x5d, 0xef, 0xb0, 0x02, 0x6f, 0xc8, + 0x26, 0xdf, 0xe8, 0x06, 0x0f, 0x7d, 0xeb, 0x03, 0x7e, 0xcb, 0x29, + 0x27, 0x73, 0xe4, 0x10, 0x89, 0xec, 0xf4, 0x57, 0xc1, 0x83, 0x1a, + 0x26, 0xf9, 0xee, 0x16, 0x63, 0x54, 0xca, 0xa9, 0x32, 0x3c, 0x29, + 0x26, 0x7a, 0x5d, 0xbc, 0xb7, 0x21, 0xc7, 0xd4, 0x69, 0x7d, 0x0c, + 0x26, 0x7e, 0x81, 0x67, 0x6e, 0x42, 0xe6, 0xbd, 0x8d, 0x8e, 0xc5, + 0x29, 0xd9, 0x3f, 0xf9, 0x9b, 0x0e, 0x81, 0x43, 0x55, 0x5a, 0x72, + 0x31, 0x5f, 0x75, 0x06, 0x6e, 0x7a, 0x81, 0xe1, 0x30, 0x1d, 0xfb, + 0x26, 0x6e, 0xc3, 0x26, 0x27, 0x1a, 0x82, 0x5d, 0xd1, 0x8e, 0x78, + 0x22, 0x6a, 0xef, 0x8c, 0xfe, 0xdd, 0xc2, 0x83, 0x93, 0x9d, 0x11, + 0x22, 0x7b, 0x2e, 0x49, 0x93, 0x84, 0xc2, 0xc4, 0xe0, 0xdd, 0xf2, + 0x26, 0x78, 0xef, 0x19, 0xc2, 0xfd, 0xde, 0x24, 0xc0, 0xf6, 0xf7, + 0x2a, 0xf8, 0x87, 0xb8, 0xc9, 0x17, 0xfc, 0x72, 0xee, 0xcd, 0xaa, + 0x2a, 0xf1, 0x46, 0xdf, 0x87, 0xb7, 0xc6, 0x41, 0x7b, 0x2e, 0xd5, + 0x32, 0xe6, 0xd0, 0x9d, 0x4b, 0xe4, 0xf5, 0xa3, 0xbf, 0x7f, 0x6a, + 0x36, 0xc7, 0x6c, 0xe6, 0xaa, 0xf7, 0xf1, 0xde, 0xb3, 0xce, 0xf1, + 0x3a, 0xdd, 0xfa, 0xc0, 0x50, 0x1f, 0xfc, 0x99, 0x48, 0x48, 0x62, + 0x3a, 0xf3, 0xb9, 0x11, 0x97, 0xa0, 0xf0, 0x17, 0x08, 0x7b, 0x97, + 0x3e, 0xd9, 0x33, 0x30, 0xab, 0xeb, 0xfc, 0x39, 0xbb, 0xd0, 0x74, + 0x42, 0x5b, 0xc1, 0x96, 0xd0, 0xba, 0xe6, 0xdd, 0xa1, 0x28, 0xf1, + 0x3e, 0x4d, 0x58, 0x27, 0xfb, 0x67, 0xfa, 0xd8, 0x9f, 0xb1, 0x4e, + 0x42, 0xcf, 0xb1, 0x11, 0x3b, 0xb7, 0xfc, 0x3a, 0x2a, 0xa6, 0x93, + 0x42, 0xdb, 0x98, 0xd9, 0x6c, 0x9c, 0xfe, 0x18, 0xd1, 0x63, 0x76, + 0x46, 0x5d, 0xd4, 0x90, 0x95, 0xb1, 0xfe, 0x94, 0xb6, 0x7b, 0xe9, + 0x42, 0x59, 0x9d, 0xa1, 0xf1, 0x7e, 0xfe, 0x7f, 0xe3, 0x84, 0xf6, + 0x41, 0xd9, 0xdc, 0x8d, 0xb5, 0xdd, 0xe0, 0xd2, 0xf3, 0x0f, 0x47, + 0x4d, 0xdf, 0x72, 0xc8, 0x61, 0xfd, 0xc0, 0x0b, 0x52, 0x18, 0x60, + 0x4d, 0x5d, 0xb9, 0xb2, 0xb1, 0xc0, 0xf2, 0x1b, 0x64, 0x01, 0x9f, + 0x49, 0x3f, 0xa5, 0x72, 0x28, 0x3b, 0x80, 0x31, 0x2d, 0xb9, 0xa4, + 0x35, 0x79, 0x12, 0x21, 0x59, 0xbd, 0x01, 0xd7, 0xd5, 0xc4, 0xad, + 0x49, 0x56, 0xaf, 0x18, 0x3b, 0x91, 0x10, 0x00, 0xee, 0x7d, 0xac, + 0x18, 0xc0, 0xee, 0xec, 0x50, 0x41, 0x00, 0xe7, 0x54, 0x9d, 0x0f, + 0xa0, 0x51, 0x12, 0xaa, 0x2b, 0x35, 0x00, 0x0f, 0xf8, 0xff, 0x94, + 0x90, 0x50, 0x48, 0xdf, 0xc5, 0x45, 0x30, 0x4c, 0x58, 0x36, 0x9d, + 0x90, 0x4c, 0x97, 0xdc, 0x34, 0x59, 0x00, 0x0d, 0xec, 0xa9, 0xb6, + 0xa0, 0x51, 0x52, 0x2a, 0xdc, 0x39, 0x80, 0x0e, 0xec, 0x60, 0xc5, + 0xa0, 0x4d, 0x89, 0x39, 0x9f, 0x4b, 0x80, 0x0e, 0xfe, 0x8b, 0x3c, + 0xa0, 0x03, 0xa7, 0xef, 0xe8, 0xf7, 0x08, 0x4f, 0x62, 0x31, 0x99, + 0x90, 0x46, 0xec, 0x7a, 0x1b, 0x68, 0x00, 0x0e, 0xaa, 0x8a, 0x3e, + 0x90, 0x51, 0x47, 0xfd, 0x5e, 0x58, 0x50, 0x4f, 0x64, 0x28, 0xdf, + 0xa0, 0x1f, 0x00, 0xa5, 0x39, 0x65, 0x80, 0x0b, 0xd4, 0x89, 0x7a, + 0x5c, 0xe2, 0x60, 0x73, 0xe8, 0x75, 0x00, 0x0a, 0x17, 0xd5, 0x53, + 0xa0, 0x51, 0x12, 0xca, 0x38, 0x35, 0x00, 0x0c, 0xfc, 0x1a, 0x1c, + 0x90, 0x50, 0x4e, 0xdd, 0xc7, 0xbe, 0x00, 0x0e, 0x1b, 0x27, 0x75, + 0xa0, 0x5d, 0x24, 0x6b, 0x85, 0x1d, 0x98, 0x4d, 0x70, 0xa2, 0x58, + 0xa0, 0x26, 0xc4, 0xc3, 0x5b, 0x99, 0x00, 0x09, 0xbe, 0x24, 0xed, + 0x94, 0x4d, 0xa6, 0x3d, 0xa4, 0x76, 0x88, 0x4e, 0x3b, 0xfc, 0x38, + 0x04, 0x0c, 0xfd, 0x7b, 0xfb, 0x7d, 0xf2, 0x7b, 0x3d, 0x9e, 0x44}; + +const unsigned int SPEECH_WW_COUNT = 90U; \ No newline at end of file