Merge branch 'feature/NewVoices' into develop closes #60

develop
Geoffrey Merck 1 month ago
commit d50e3d15a4

11
.vscode/tasks.json vendored

@ -10,13 +10,9 @@
"args": [
"-j9",
"ENABLE_DEBUG=1",
"USE_GPSD=1",
"all"
],
"group": {
"kind": "build",
"isDefault": true
},
"group": "build",
"problemMatcher": []
},
{
@ -94,7 +90,10 @@
"ENABLE_DEBUG=1",
"USE_GPSD=1"
],
"group": "build",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]

@ -83,7 +83,7 @@ bool CAPRSGPSDIdFrameProvider::buildAPRSFramesInt(const CAPRSEntry * entry, std:
#elif GPSD_API_MAJOR_VERSION <= 16
if(m_gpsdData.fix.status == STATUS_UNK)
return false;
#elif
#else
#error Unsupported GPSD_API_MAJOR_VERSION
#endif

@ -72,6 +72,10 @@ void CAudioUnit::setLanguage(const std::string & dir, TEXT_LANG language)
ambeFileName = "fr_FR.ambe";
indxFileName = "fr_FR.indx";
break;
case TL_FRANCAIS_2:
ambeFileName = "fr_FR2.ambe";
indxFileName = "fr_FR2.indx";
break;
case TL_ESPANOL:
ambeFileName = "es_ES.ambe";
indxFileName = "es_ES.indx";

@ -91,6 +91,7 @@ enum TEXT_LANG {
TL_DEUTSCH,
TL_DANSK,
TL_FRANCAIS,
TL_FRANCAIS_2,
TL_ITALIANO,
TL_POLSKI,
TL_ENGLISH_US,

@ -2468,6 +2468,7 @@ void CRepeaterHandler::writeLinkingTo(const std::string &callsign)
text = CStringUtils::string_format("Linker til %s", callsign.c_str());
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = CStringUtils::string_format("Connexion a %s", callsign.c_str());
break;
case TL_ITALIANO:
@ -2523,6 +2524,7 @@ void CRepeaterHandler::writeLinkedTo(const std::string &callsign)
text = CStringUtils::string_format("Linket til %s", callsign.c_str());
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = CStringUtils::string_format("Connecte a %s", callsign.c_str());
break;
case TL_ITALIANO:
@ -2578,6 +2580,7 @@ void CRepeaterHandler::writeNotLinked()
text = "Ikke forbundet";
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = "Non connecte";
break;
case TL_ITALIANO:
@ -2636,6 +2639,7 @@ void CRepeaterHandler::writeIsBusy(const std::string& callsign)
tempText = CStringUtils::string_format("Optaget fra %s", callsign.c_str());
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = "Non connecte";
tempText = CStringUtils::string_format("Occupe par %s", callsign.c_str());
break;
@ -2704,6 +2708,7 @@ void CRepeaterHandler::ccsLinkMade(const std::string& callsign, DIRECTION direct
text = CStringUtils::string_format("Linket til %s", callsign.c_str());
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = CStringUtils::string_format("Connecte a %s", callsign.c_str());
break;
case TL_ITALIANO:
@ -2769,6 +2774,7 @@ void CRepeaterHandler::ccsLinkEnded(const std::string&, DIRECTION direction)
tempText = "CCS er afsluttet";
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = "Non connecte";
tempText = "CCS a pris fin";
break;
@ -2848,6 +2854,7 @@ void CRepeaterHandler::ccsLinkFailed(const std::string& dtmf, DIRECTION directio
tempText = CStringUtils::string_format("%s unknown", dtmf.c_str());
break;
case TL_FRANCAIS:
case TL_FRANCAIS_2:
text = "Non connecte";
tempText = CStringUtils::string_format("%s inconnu", dtmf.c_str());
break;

@ -112,7 +112,7 @@ bool CTimeServerConfig::loadTimeServer(const CConfig & cfg)
else if(format == "text") m_timeServer.format = FORMAT_TEXT_TIME;
std::string lang;
ret = cfg.getValue("timeserver", "language", lang, "english_uk_1", {"english_uk_1", "english_uk_2", "english_us_1", "english_us_2", "deutsch_1", "deutsch_2", "francais", "nederlands", "svenska", "espanol", "norsk", "portugues"}) && ret;;
ret = cfg.getValue("timeserver", "language", lang, "english_uk_1", {"english_uk_1", "english_uk_2", "english_us_1", "english_us_2", "deutsch_1", "deutsch_2", "francais", "francais_2", "nederlands", "svenska", "espanol", "norsk", "portugues"}) && ret;;
if (lang == "english_uk_1") m_timeServer.language = LANG_ENGLISH_UK_1;
else if(lang == "english_uk_2") m_timeServer.language = LANG_ENGLISH_UK_2;
else if(lang == "english_us_1") m_timeServer.language = LANG_ENGLISH_US_1;
@ -120,6 +120,7 @@ bool CTimeServerConfig::loadTimeServer(const CConfig & cfg)
else if(lang == "deutsch_1" ) m_timeServer.language = LANG_DEUTSCH_1;
else if(lang == "detusch_2" ) m_timeServer.language = LANG_DEUTSCH_2;
else if(lang == "francais" ) m_timeServer.language = LANG_FRANCAIS;
else if(lang == "francais_2" ) m_timeServer.language = LANG_FRANCAIS_2;
else if(lang == "nederlands" ) m_timeServer.language = LANG_NEDERLANDS;
else if(lang == "svenska" ) m_timeServer.language = LANG_SVENSKA;
else if(lang == "espanol" ) m_timeServer.language = LANG_ESPANOL;

@ -29,6 +29,7 @@ enum LANGUAGE {
LANG_DEUTSCH_1,
LANG_DEUTSCH_2,
LANG_FRANCAIS,
LANG_FRANCAIS_2,
LANG_NEDERLANDS,
LANG_SVENSKA,
LANG_ESPANOL,

@ -186,6 +186,7 @@ void CTimeServerThread::sendTime(unsigned int hour, unsigned int min)
words = sendTimeDeDE2(hour, min);
break;
case LANG_FRANCAIS:
case LANG_FRANCAIS_2:
words = sendTimeFrFR(hour, min);
break;
case LANG_NEDERLANDS:
@ -953,6 +954,10 @@ bool CTimeServerThread::loadAMBE()
ambeFileName = "TIME_fr_FR.ambe";
indxFileName = "TIME_fr_FR.indx";
break;
case LANG_FRANCAIS_2:
ambeFileName = "TIME_fr_FR2.ambe";
indxFileName = "TIME_fr_FR2.indx";
break;
case LANG_NEDERLANDS:
ambeFileName = "TIME_nl_NL.ambe";
indxFileName = "TIME_nl_NL.indx";
@ -1093,6 +1098,7 @@ bool CTimeServerThread::send(const std::vector<std::string> &words, unsigned int
slowData = CStringUtils::string_format(("Es ist %02u:%02u Uhr"), hour, min);
break;
case LANG_FRANCAIS:
case LANG_FRANCAIS_2:
header.setMyCall2(("TIME"));
slowData = CStringUtils::string_format(("Il est %02u:%02u"), hour, min);
break;

@ -2,7 +2,7 @@
callsign= # call of the gateway to send time beacons without G letter
address= # address of the gateway, defaults to 127.0.0.1
format= # possible values are voice, text, defaults to voice. note that voice also sends text along.
language= # valid values: english_uk_1, english_uk_2, english_us_1, english_us_2, deutsch_1, deutsch_2, francais, nederlands, svenska, espanol, norsk, portugues. Defaults to english_uk_1
language= # valid values: english_uk_1, english_uk_2, english_us_1, english_us_2, deutsch, francais, francais_2, nederlands, svenska, espanol, norsk, portugues. Defaults to english_uk_1
interval= # valid values are 15, 30 and 60, defaults to 30
[Paths]

@ -141,7 +141,7 @@ bool CAMBEFileReader::readIndex()
unsigned long start = std::stoul(strt);
unsigned long length = std::stoul(leng);
if (start >= m_ambeLength || (start + length) >= m_ambeLength)
if (start >= m_ambeLength || (start + length) > m_ambeLength)
CLog::logInfo("The start or end for *%s* is out of range, start: %lu, end: %lu\n", name.c_str(), start, start + length);
else
m_index[name] = new CIndexRecord(name, start + SILENCE_LENGTH, length);

@ -348,12 +348,13 @@ bool CDStarGatewayConfig::loadGateway(const CConfig & cfg)
std::string lang;
ret = cfg.getValue("gateway", "language", lang, "english_uk",
{"english_uk", "deutsch", "dansk", "francais", "italiano", "polski",
{"english_uk", "deutsch", "dansk", "francais", "francais_2", "italiano", "polski",
"english_us", "espanol", "svenska", "nederlands_nl", "nederlands_be", "norsk", "portugues"}) && ret;;
if(lang == "english_uk") m_gateway.language = TL_ENGLISH_UK;
else if(lang == "deutsch") m_gateway.language = TL_DEUTSCH;
else if(lang == "dansk") m_gateway.language = TL_DANSK;
else if(lang == "francais") m_gateway.language = TL_FRANCAIS;
else if(lang == "francais_2") m_gateway.language = TL_FRANCAIS_2;
else if(lang == "italiano") m_gateway.language = TL_ITALIANO;
else if(lang == "polski") m_gateway.language = TL_POLSKI;
else if(lang == "english_us") m_gateway.language = TL_ENGLISH_US;

@ -13,6 +13,8 @@ install:
@install -g bin -o dstar -m 0664 TIME_en_US.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 TIME_fr_FR.ambe $(DATA_DIR)
@install -g bin -o dstar -m 0664 TIME_fr_FR.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 TIME_fr_FR2.ambe $(DATA_DIR)
@install -g bin -o dstar -m 0664 TIME_fr_FR2.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 TIME_se_SE.ambe $(DATA_DIR)
@install -g bin -o dstar -m 0664 TIME_se_SE.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 de_DE.ambe $(DATA_DIR)
@ -27,6 +29,8 @@ install:
@install -g bin -o dstar -m 0664 es_ES.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 fr_FR.ambe $(DATA_DIR)
@install -g bin -o dstar -m 0664 fr_FR.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 fr_FR2.ambe $(DATA_DIR)
@install -g bin -o dstar -m 0664 fr_FR2.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 it_IT.ambe $(DATA_DIR)
@install -g bin -o dstar -m 0664 it_IT.indx $(DATA_DIR)
@install -g bin -o dstar -m 0664 no_NO.ambe $(DATA_DIR)

Binary file not shown.

@ -1,20 +1,20 @@
bonjour 0 79
cinq 80 48
deux 129 42
dix 172 55
et_demie 228 69
et_quart 298 71
heure 370 64
heures 435 64
huit 500 47
il_est 548 58
midi 607 73
minuit 681 68
moins_le_quart 750 89
neuf 840 46
onze 887 65
quatre 953 45
sept 999 49
six 1049 53
trois 1103 43
une 1147 72
bonjour 0 70
cinq 70 53
deux 123 45
dix 168 50
et_demie 218 53
et_quart 271 54
heure 325 45
heures 370 45
huit 415 46
il_est 461 47
midi 508 53
minuit 561 53
moins_le_quart 614 69
neuf 683 51
onze 734 46
quatre 780 48
sept 828 49
six 877 50
trois 927 45
une 972 46

@ -0,0 +1,20 @@
bonjour ...
cinq ...
deux ...
dix ...
et demie ...
et quart ...
heure ...
heures ...
huit ...
il est ...
midi ...
minuit ...
moins le quart ...
neuf ...
onze ...
quatre ...
sept ...
six ...
trois ...
une ...

Binary file not shown.

@ -0,0 +1,20 @@
bonjour 0 69
cinq 69 53
deux 122 46
dix 168 53
et_demie 221 52
et_quart 273 57
heure 330 49
heures 379 48
huit 427 49
il_est 476 45
midi 521 53
minuit 574 54
moins_le_quart 628 70
neuf 698 53
onze 751 50
quatre 801 48
sept 849 48
six 897 53
trois 950 44
une 994 47

Binary file not shown.

@ -1,44 +1,44 @@
0 94 29
1 140 16
2 173 20
3 215 19
4 255 24
5 298 29
6 344 34
7 398 25
8 440 24
9 481 23
alpha 521 29
bravo 568 27
charlie 615 30
delta 666 30
A 714 21
B 753 27
C 796 34
D 848 30
E 895 23
F 936 27
G 982 27
H 1026 30
I 1075 20
J 1113 29
K 1162 22
L 1201 28
M 1248 28
N 1295 28
O 1341 23
P 1386 21
Q 1426 23
R 1466 28
S 1511 31
T 1567 21
U 1606 22
V 1646 30
W 1693 46
X 1756 31
Y 1806 21
Z 1844 14
linkedto 1858 35
notlinked 1941 46
linkingto 2008 38
isbusy 2091 47
0 0 58
1 58 44
2 102 45
3 147 44
4 191 49
5 240 53
6 293 54
7 347 49
8 396 47
9 443 52
alpha 495 54
bravo 549 52
charlie 601 55
delta 656 53
A 709 41
B 750 52
C 802 53
D 855 51
E 906 45
F 951 48
G 999 56
H 1055 52
I 1107 46
J 1153 45
K 1198 41
L 1239 47
M 1286 49
N 1335 46
O 1381 46
P 1427 46
Q 1473 43
R 1516 51
S 1567 48
T 1615 47
U 1662 46
V 1708 54
W 1762 65
X 1827 49
Y 1876 55
Z 1931 51
linkedto 1982 65
notlinked 2047 65
linkingto 2112 97
isbusy 2209 58

@ -0,0 +1,44 @@
0 ...
1 ...
2 ...
3 ...
4 ...
5 ...
6 ...
7 ...
8 ...
9 ...
alpha ...
bravo. ...
charlie ...
delta ...
haa ...
Béé ...
Céé ...
Déé ...
Ee ...
aiffe ...
Géé ...
H ...
iii ...
j ...
Ka ...
aile ...
aimme ...
ainne ...
Oo ...
Péé ...
Kuu ...
air ...
S ...
Téé ...
Uu ...
Véé ...
double véé ...
X ...
i Grec ...
Zed ...
Connecté à ...
Non connecté. ...
Tentative de connexion à ...
Est occupé ...

Binary file not shown.

@ -0,0 +1,44 @@
0 94 29
1 140 16
2 173 20
3 215 19
4 255 24
5 298 29
6 344 34
7 398 25
8 440 24
9 481 23
alpha 521 29
bravo 568 27
charlie 615 30
delta 666 30
A 714 21
B 753 27
C 796 34
D 848 30
E 895 23
F 936 27
G 982 27
H 1026 30
I 1075 20
J 1113 29
K 1162 22
L 1201 28
M 1248 28
N 1295 28
O 1341 23
P 1386 21
Q 1426 23
R 1466 28
S 1511 31
T 1567 21
U 1606 22
V 1646 30
W 1693 46
X 1756 31
Y 1806 21
Z 1844 14
linkedto 1858 35
notlinked 1941 46
linkingto 2008 38
isbusy 2091 47

@ -159,6 +159,8 @@ The testing framwework used is Google Test.
# 6. Version History
## 6.1. Version 1.0
- [**Bugfix**] Fix decoding of DTMF commands with leading 0 ([#61](https://github.com/F4FXL/DStarGateway/issues/61))
- [**Improvement**] Add second French voice ([#60](https://github.com/F4FXL/DStarGateway/issues/60))
- [**Improvement**] Clarify French "Linking to" announcement ([#60](https://github.com/F4FXL/DStarGateway/issues/60))
- [**Improvement**] Improve threading handling ([#58](https://github.com/F4FXL/DStarGateway/issues/58))
- [**Improvement**] Add Add an option to disable logging of ircddb traffic ([#59](https://github.com/F4FXL/DStarGateway/issues/59))
- [**Bugfix**] Fix repeater not reverting to startup reflector after issueing a command through remote control. ([#57](https://github.com/F4FXL/DStarGateway/issues/57))

@ -0,0 +1,20 @@
bonjour 0 66
cinq 66 50
deux 116 43
dix 159 53
et_demie 212 52
et_quart 264 53
heure 317 44
heures 361 44
huit 405 49
il_est 454 44
midi 498 50
minuit 548 50
moins_le_quart 598 64
neuf 662 51
onze 713 47
quatre 760 49
sept 809 46
six 855 52
trois 907 41
une 948 45

@ -71,30 +71,47 @@ namespace AMBEFileReaderTests
std::vector<CAMBEData *> data;
res = reader.lookup("0", data);
EXPECT_FALSE(res) << "read shall return false on non existent file";
for(auto d : data) {
delete d;
}
for(auto d : data) delete d;
}
TEST_F(AMBEFileReader_lookup, validId)
class AMBEFileReader_lookup_Param : public ::testing::TestWithParam<std::string> {};
TEST_P(AMBEFileReader_lookup_Param, validId)
{
std::string indexFile = std::string(std::filesystem::current_path()) + "/AMBEFileReader/fr_FR.indx";
std::string ambeFile = std::string(std::filesystem::current_path()) + "/AMBEFileReader/fr_FR.ambe";
std::string indexFile = (std::filesystem::current_path() / "AMBEFileReader/TIME_fr_FR2.indx").string();
std::string ambeFile = (std::filesystem::current_path() / "AMBEFileReader/TIME_fr_FR2.ambe").string();
CAMBEFileReader reader(indexFile, ambeFile);
bool res = reader.read();
EXPECT_TRUE(res) << "read shall return true on existent files";
ASSERT_TRUE(res) << "read shall return true on existent files";
std::vector<CAMBEData *> data;
res = reader.lookup("0", data);
EXPECT_TRUE(res) << "read shall return true on existent files and valid Id";
EXPECT_NE(data.size(), 0U) << "Vector shall contain data";
std::vector<CAMBEData*> data;
const std::string& id = GetParam();
for(auto d : data) {
delete d;
}
res = reader.lookup(id, data);
EXPECT_TRUE(res) << "lookup shall return true on valid Id: " << id;
EXPECT_NE(data.size(), 0U) << "Vector shall contain data for Id: " << id;
for (auto* d : data) delete d;
}
static std::string ParamName(
const ::testing::TestParamInfo<std::string>& info)
{
return info.param;
}
INSTANTIATE_TEST_SUITE_P(
AmbeFileReader_lookup_validIds,
AMBEFileReader_lookup_Param,
::testing::Values(
"bonjour", "cinq", "deux", "dix", "et_demie", "et_quart",
"heure", "heures", "huit", "il_est", "midi", "minuit",
"moins_le_quart", "neuf", "onze", "quatre", "sept",
"six", "trois", "une"
),
ParamName
);
TEST_F(AMBEFileReader_lookup, invalidId)
{
std::string indexFile = std::string(std::filesystem::current_path()) + "/AMBEFileReader/fr_FR.indx";

Loading…
Cancel
Save

Powered by TurnKey Linux.