From 967af60cbe3eb4198caeb93651f3d78a037ff31e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 17 Feb 2014 23:26:12 +0100 Subject: [PATCH] Vario improvements --- companion/src/eeprominterface.h | 2 + .../src/firmwares/opentx/opentxeeprom.cpp | 2 + radio/src/audio_arm.cpp | 212 +++++++++--------- radio/src/audio_arm.h | 4 +- radio/src/gui/menu_general.cpp | 14 +- radio/src/maths.cpp | 79 ++++--- radio/src/myeeprom.h | 2 + radio/src/opentx.cpp | 6 +- radio/src/opentx.h | 4 + radio/src/telemetry/frsky_sport.cpp | 4 + radio/util/sinus.py | 4 +- 11 files changed, 182 insertions(+), 151 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 60f99b41a..7138836c1 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -462,6 +462,8 @@ class GeneralSettings { int beepVolume; int wavVolume; int varioVolume; + int varioPitch; + int varioRange; int backgroundVolume; unsigned int mavbaud; unsigned int switchUnlockStates; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 92b5c4b3e..ca70d75f1 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2370,6 +2370,8 @@ Open9xGeneralDataNew::Open9xGeneralDataNew(GeneralSettings & generalData, BoardE internalField.Append(new SignedField<8>(generalData.beepVolume)); internalField.Append(new SignedField<8>(generalData.wavVolume)); internalField.Append(new SignedField<8>(generalData.varioVolume)); + internalField.Append(new SignedField<8>(generalData.varioPitch)); + internalField.Append(new SignedField<8>(generalData.varioRange)); internalField.Append(new SignedField<8>(generalData.backgroundVolume)); } if (IS_TARANIS(board) && version >= 216) { diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 55c216afa..371f69ea7 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -41,109 +41,109 @@ extern OS_MutexID audioMutex; const int16_t sineValues[] = { - 0, 207, 414, 621, 829, 1036, 1243, 1450, 1657, 1864, - 2071, 2278, 2485, 2691, 2898, 3104, 3310, 3516, 3722, 3928, - 4133, 4338, 4543, 4748, 4953, 5157, 5361, 5565, 5769, 5972, - 6175, 6378, 6580, 6783, 6984, 7186, 7387, 7588, 7788, 7988, - 8188, 8387, 8586, 8785, 8983, 9180, 9378, 9574, 9771, 9967, - 10162, 10357, 10551, 10745, 10939, 11132, 11324, 11516, 11707, 11898, - 12088, 12278, 12467, 12656, 12844, 13031, 13218, 13404, 13589, 13774, - 13959, 14142, 14325, 14507, 14689, 14870, 15050, 15230, 15409, 15587, - 15764, 15941, 16117, 16293, 16467, 16641, 16814, 16986, 17158, 17329, - 17498, 17668, 17836, 18004, 18170, 18336, 18502, 18666, 18829, 18992, - 19154, 19315, 19475, 19634, 19793, 19950, 20107, 20262, 20417, 20571, - 20724, 20876, 21028, 21178, 21327, 21476, 21623, 21770, 21916, 22060, - 22204, 22347, 22489, 22630, 22770, 22909, 23047, 23184, 23320, 23455, - 23589, 23722, 23854, 23985, 24115, 24244, 24372, 24499, 24624, 24749, - 24873, 24996, 25118, 25239, 25358, 25477, 25595, 25711, 25827, 25941, - 26054, 26167, 26278, 26388, 26497, 26605, 26712, 26818, 26923, 27026, - 27129, 27231, 27331, 27430, 27529, 27626, 27722, 27817, 27910, 28003, - 28095, 28185, 28275, 28363, 28450, 28536, 28621, 28705, 28788, 28869, - 28950, 29029, 29107, 29184, 29260, 29335, 29409, 29481, 29553, 29623, - 29692, 29760, 29827, 29893, 29958, 30021, 30084, 30145, 30205, 30264, - 30322, 30378, 30434, 30488, 30542, 30594, 30645, 30694, 30743, 30791, - 30837, 30882, 30927, 30970, 31011, 31052, 31092, 31130, 31167, 31204, - 31239, 31272, 31305, 31337, 31367, 31397, 31425, 31452, 31478, 31502, - 31526, 31549, 31570, 31590, 31609, 31627, 31644, 31660, 31674, 31688, - 31700, 31711, 31721, 31730, 31738, 31744, 31750, 31754, 31757, 31760, - 31761, 31760, 31759, 31757, 31753, 31749, 31743, 31736, 31728, 31719, - 31709, 31698, 31685, 31672, 31657, 31641, 31624, 31606, 31587, 31567, - 31546, 31524, 31500, 31475, 31450, 31423, 31395, 31366, 31336, 31305, - 31273, 31239, 31205, 31169, 31133, 31095, 31056, 31016, 30975, 30933, - 30890, 30846, 30801, 30754, 30707, 30659, 30609, 30558, 30507, 30454, - 30400, 30345, 30289, 30232, 30174, 30115, 30055, 29994, 29932, 29868, - 29804, 29738, 29672, 29605, 29536, 29466, 29396, 29324, 29252, 29178, - 29103, 29027, 28951, 28873, 28794, 28714, 28633, 28552, 28469, 28385, - 28300, 28214, 28127, 28039, 27950, 27861, 27770, 27678, 27585, 27491, - 27396, 27301, 27204, 27106, 27007, 26908, 26807, 26705, 26603, 26499, - 26395, 26289, 26183, 26076, 25967, 25858, 25748, 25637, 25525, 25412, - 25298, 25183, 25067, 24951, 24833, 24715, 24595, 24475, 24354, 24232, - 24109, 23985, 23860, 23735, 23608, 23481, 23353, 23223, 23093, 22963, - 22831, 22698, 22565, 22431, 22296, 22160, 22023, 21885, 21747, 21608, - 21468, 21327, 21185, 21043, 20899, 20755, 20611, 20465, 20319, 20171, - 20023, 19875, 19725, 19575, 19424, 19272, 19120, 18967, 18813, 18658, - 18503, 18347, 18190, 18032, 17874, 17715, 17556, 17395, 17234, 17073, - 16910, 16747, 16584, 16420, 16255, 16089, 15923, 15756, 15589, 15421, - 15252, 15083, 14913, 14743, 14572, 14400, 14228, 14055, 13882, 13708, - 13534, 13359, 13183, 13007, 12831, 12654, 12476, 12298, 12120, 11941, - 11761, 11581, 11401, 11220, 11039, 10857, 10675, 10492, 10309, 10125, - 9941, 9757, 9572, 9387, 9202, 9016, 8830, 8643, 8456, 8269, - 8081, 7894, 7705, 7517, 7328, 7139, 6949, 6759, 6569, 6379, - 6189, 5998, 5807, 5615, 5424, 5232, 5040, 4848, 4656, 4463, - 4270, 4077, 3884, 3691, 3498, 3304, 3110, 2917, 2723, 2529, - 2334, 2140, 1946, 1752, 1557, 1362, 1168, 973, 779, 584, - 389, 194, 0, -194, -389, -584, -779, -973, -1168, -1362, - -1557, -1752, -1946, -2140, -2334, -2529, -2723, -2917, -3110, -3304, - -3498, -3691, -3884, -4077, -4270, -4463, -4656, -4848, -5040, -5232, - -5424, -5615, -5807, -5998, -6189, -6379, -6569, -6759, -6949, -7139, - -7328, -7517, -7705, -7894, -8081, -8269, -8456, -8643, -8830, -9016, - -9202, -9387, -9572, -9757, -9941, -10125, -10309, -10492, -10675, -10857, - -11039, -11220, -11401, -11581, -11761, -11941, -12120, -12298, -12476, -12654, - -12831, -13007, -13183, -13359, -13534, -13708, -13882, -14055, -14228, -14400, - -14572, -14743, -14913, -15083, -15252, -15421, -15589, -15756, -15923, -16089, - -16255, -16420, -16584, -16747, -16910, -17073, -17234, -17395, -17556, -17715, - -17874, -18032, -18190, -18347, -18503, -18658, -18813, -18967, -19120, -19272, - -19424, -19575, -19725, -19875, -20023, -20171, -20319, -20465, -20611, -20755, - -20899, -21043, -21185, -21327, -21468, -21608, -21747, -21885, -22023, -22160, - -22296, -22431, -22565, -22698, -22831, -22963, -23093, -23223, -23353, -23481, - -23608, -23735, -23860, -23985, -24109, -24232, -24354, -24475, -24595, -24715, - -24833, -24951, -25067, -25183, -25298, -25412, -25525, -25637, -25748, -25858, - -25967, -26076, -26183, -26289, -26395, -26499, -26603, -26705, -26807, -26908, - -27007, -27106, -27204, -27301, -27396, -27491, -27585, -27678, -27770, -27861, - -27950, -28039, -28127, -28214, -28300, -28385, -28469, -28552, -28633, -28714, - -28794, -28873, -28951, -29027, -29103, -29178, -29252, -29324, -29396, -29466, - -29536, -29605, -29672, -29738, -29804, -29868, -29932, -29994, -30055, -30115, - -30174, -30232, -30289, -30345, -30400, -30454, -30507, -30558, -30609, -30659, - -30707, -30754, -30801, -30846, -30890, -30933, -30975, -31016, -31056, -31095, - -31133, -31169, -31205, -31239, -31273, -31305, -31336, -31366, -31395, -31423, - -31450, -31475, -31500, -31524, -31546, -31567, -31587, -31606, -31624, -31641, - -31657, -31672, -31685, -31698, -31709, -31719, -31728, -31736, -31743, -31749, - -31753, -31757, -31759, -31760, -31761, -31760, -31757, -31754, -31750, -31744, - -31738, -31730, -31721, -31711, -31700, -31688, -31674, -31660, -31644, -31627, - -31609, -31590, -31570, -31549, -31526, -31502, -31478, -31452, -31425, -31397, - -31367, -31337, -31305, -31272, -31239, -31204, -31167, -31130, -31092, -31052, - -31011, -30970, -30927, -30882, -30837, -30791, -30743, -30694, -30645, -30594, - -30542, -30488, -30434, -30378, -30322, -30264, -30205, -30145, -30084, -30021, - -29958, -29893, -29827, -29760, -29692, -29623, -29553, -29481, -29409, -29335, - -29260, -29184, -29107, -29029, -28950, -28869, -28788, -28705, -28621, -28536, - -28450, -28363, -28275, -28185, -28095, -28003, -27910, -27817, -27722, -27626, - -27529, -27430, -27331, -27231, -27129, -27026, -26923, -26818, -26712, -26605, - -26497, -26388, -26278, -26167, -26054, -25941, -25827, -25711, -25595, -25477, - -25358, -25239, -25118, -24996, -24873, -24749, -24624, -24499, -24372, -24244, - -24115, -23985, -23854, -23722, -23589, -23455, -23320, -23184, -23047, -22909, - -22770, -22630, -22489, -22347, -22204, -22060, -21916, -21770, -21623, -21476, - -21327, -21178, -21028, -20876, -20724, -20571, -20417, -20262, -20107, -19950, - -19793, -19634, -19475, -19315, -19154, -18992, -18829, -18666, -18502, -18336, - -18170, -18004, -17836, -17668, -17498, -17329, -17158, -16986, -16814, -16641, - -16467, -16293, -16117, -15941, -15764, -15587, -15409, -15230, -15050, -14870, - -14689, -14507, -14325, -14142, -13959, -13774, -13589, -13404, -13218, -13031, - -12844, -12656, -12467, -12278, -12088, -11898, -11707, -11516, -11324, -11132, - -10939, -10745, -10551, -10357, -10162, -9967, -9771, -9574, -9378, -9180, - -8983, -8785, -8586, -8387, -8188, -7988, -7788, -7588, -7387, -7186, - -6984, -6783, -6580, -6378, -6175, -5972, -5769, -5565, -5361, -5157, - -4953, -4748, -4543, -4338, -4133, -3928, -3722, -3516, -3310, -3104, - -2898, -2691, -2485, -2278, -2071, -1864, -1657, -1450, -1243, -1036, - -829, -621, -414, -207, + 0, 218, 437, 655, 874, 1092, 1311, 1529, 1747, 1966, + 2184, 2401, 2619, 2837, 3054, 3271, 3488, 3705, 3921, 4138, + 4354, 4569, 4785, 5000, 5215, 5429, 5643, 5857, 6071, 6284, + 6496, 6709, 6920, 7132, 7343, 7553, 7763, 7973, 8182, 8390, + 8598, 8806, 9012, 9219, 9425, 9630, 9834, 10038, 10242, 10444, + 10646, 10848, 11049, 11249, 11448, 11647, 11845, 12042, 12238, 12434, + 12629, 12823, 13017, 13209, 13401, 13592, 13782, 13972, 14160, 14348, + 14535, 14721, 14906, 15090, 15273, 15456, 15637, 15818, 15997, 16176, + 16354, 16531, 16706, 16881, 17055, 17228, 17400, 17570, 17740, 17909, + 18077, 18243, 18409, 18574, 18737, 18899, 19061, 19221, 19380, 19538, + 19695, 19851, 20006, 20160, 20312, 20464, 20614, 20763, 20911, 21058, + 21204, 21348, 21491, 21634, 21775, 21914, 22053, 22191, 22327, 22462, + 22596, 22728, 22860, 22990, 23119, 23247, 23373, 23499, 23623, 23746, + 23867, 23988, 24107, 24225, 24342, 24457, 24571, 24684, 24796, 24906, + 25016, 25123, 25230, 25336, 25440, 25543, 25644, 25745, 25844, 25942, + 26039, 26134, 26228, 26321, 26412, 26503, 26592, 26680, 26766, 26852, + 26936, 27018, 27100, 27180, 27259, 27337, 27413, 27489, 27563, 27635, + 27707, 27777, 27846, 27914, 27980, 28046, 28110, 28173, 28234, 28295, + 28354, 28412, 28468, 28524, 28578, 28631, 28683, 28733, 28783, 28831, + 28878, 28924, 28968, 29011, 29054, 29095, 29134, 29173, 29210, 29247, + 29282, 29316, 29349, 29380, 29411, 29440, 29468, 29495, 29521, 29545, + 29569, 29591, 29613, 29633, 29652, 29670, 29686, 29702, 29717, 29730, + 29743, 29754, 29764, 29773, 29781, 29788, 29794, 29799, 29802, 29805, + 29806, 29807, 29806, 29805, 29802, 29799, 29794, 29788, 29781, 29773, + 29765, 29755, 29744, 29732, 29719, 29705, 29690, 29675, 29658, 29640, + 29621, 29601, 29580, 29559, 29536, 29512, 29488, 29462, 29435, 29408, + 29379, 29350, 29320, 29288, 29256, 29223, 29189, 29154, 29118, 29081, + 29044, 29005, 28966, 28925, 28884, 28842, 28799, 28755, 28710, 28664, + 28617, 28570, 28522, 28472, 28422, 28371, 28320, 28267, 28214, 28159, + 28104, 28048, 27991, 27934, 27875, 27816, 27756, 27695, 27633, 27570, + 27507, 27443, 27378, 27312, 27245, 27178, 27109, 27040, 26971, 26900, + 26829, 26756, 26683, 26610, 26535, 26460, 26384, 26307, 26229, 26151, + 26072, 25992, 25911, 25830, 25748, 25665, 25581, 25497, 25412, 25326, + 25239, 25152, 25064, 24975, 24885, 24795, 24704, 24612, 24520, 24427, + 24333, 24238, 24143, 24047, 23950, 23853, 23755, 23656, 23556, 23456, + 23355, 23254, 23151, 23048, 22945, 22840, 22735, 22630, 22523, 22416, + 22308, 22200, 22091, 21981, 21871, 21760, 21648, 21536, 21423, 21309, + 21194, 21079, 20964, 20848, 20731, 20613, 20495, 20376, 20257, 20137, + 20016, 19894, 19773, 19650, 19527, 19403, 19279, 19154, 19028, 18902, + 18775, 18647, 18519, 18391, 18262, 18132, 18001, 17870, 17739, 17607, + 17474, 17341, 17207, 17073, 16938, 16802, 16666, 16530, 16393, 16255, + 16117, 15978, 15839, 15699, 15559, 15418, 15277, 15135, 14992, 14850, + 14706, 14562, 14418, 14273, 14128, 13982, 13836, 13689, 13542, 13394, + 13246, 13097, 12948, 12799, 12649, 12498, 12347, 12196, 12044, 11892, + 11740, 11587, 11433, 11280, 11125, 10971, 10816, 10661, 10505, 10349, + 10192, 10036, 9878, 9721, 9563, 9405, 9246, 9087, 8928, 8768, + 8609, 8448, 8288, 8127, 7966, 7805, 7643, 7481, 7319, 7156, + 6994, 6831, 6667, 6504, 6340, 6176, 6012, 5847, 5683, 5518, + 5353, 5188, 5022, 4857, 4691, 4525, 4359, 4192, 4026, 3859, + 3692, 3526, 3358, 3191, 3024, 2857, 2689, 2521, 2354, 2186, + 2018, 1850, 1682, 1514, 1346, 1178, 1009, 841, 673, 505, + 336, 168, 0, -168, -336, -505, -673, -841, -1009, -1178, + -1346, -1514, -1682, -1850, -2018, -2186, -2354, -2521, -2689, -2857, + -3024, -3191, -3358, -3526, -3692, -3859, -4026, -4192, -4359, -4525, + -4691, -4857, -5022, -5188, -5353, -5518, -5683, -5847, -6012, -6176, + -6340, -6504, -6667, -6831, -6994, -7156, -7319, -7481, -7643, -7805, + -7966, -8127, -8288, -8448, -8609, -8768, -8928, -9087, -9246, -9405, + -9563, -9721, -9878, -10036, -10192, -10349, -10505, -10661, -10816, -10971, + -11125, -11280, -11433, -11587, -11740, -11892, -12044, -12196, -12347, -12498, + -12649, -12799, -12948, -13097, -13246, -13394, -13542, -13689, -13836, -13982, + -14128, -14273, -14418, -14562, -14706, -14850, -14992, -15135, -15277, -15418, + -15559, -15699, -15839, -15978, -16117, -16255, -16393, -16530, -16666, -16802, + -16938, -17073, -17207, -17341, -17474, -17607, -17739, -17870, -18001, -18132, + -18262, -18391, -18519, -18647, -18775, -18902, -19028, -19154, -19279, -19403, + -19527, -19650, -19773, -19894, -20016, -20137, -20257, -20376, -20495, -20613, + -20731, -20848, -20964, -21079, -21194, -21309, -21423, -21536, -21648, -21760, + -21871, -21981, -22091, -22200, -22308, -22416, -22523, -22630, -22735, -22840, + -22945, -23048, -23151, -23254, -23355, -23456, -23556, -23656, -23755, -23853, + -23950, -24047, -24143, -24238, -24333, -24427, -24520, -24612, -24704, -24795, + -24885, -24975, -25064, -25152, -25239, -25326, -25412, -25497, -25581, -25665, + -25748, -25830, -25911, -25992, -26072, -26151, -26229, -26307, -26384, -26460, + -26535, -26610, -26683, -26756, -26829, -26900, -26971, -27040, -27109, -27178, + -27245, -27312, -27378, -27443, -27507, -27570, -27633, -27695, -27756, -27816, + -27875, -27934, -27991, -28048, -28104, -28159, -28214, -28267, -28320, -28371, + -28422, -28472, -28522, -28570, -28617, -28664, -28710, -28755, -28799, -28842, + -28884, -28925, -28966, -29005, -29044, -29081, -29118, -29154, -29189, -29223, + -29256, -29288, -29320, -29350, -29379, -29408, -29435, -29462, -29488, -29512, + -29536, -29559, -29580, -29601, -29621, -29640, -29658, -29675, -29690, -29705, + -29719, -29732, -29744, -29755, -29765, -29773, -29781, -29788, -29794, -29799, + -29802, -29805, -29806, -29807, -29806, -29805, -29802, -29799, -29794, -29788, + -29781, -29773, -29764, -29754, -29743, -29730, -29717, -29702, -29686, -29670, + -29652, -29633, -29613, -29591, -29569, -29545, -29521, -29495, -29468, -29440, + -29411, -29380, -29349, -29316, -29282, -29247, -29210, -29173, -29134, -29095, + -29054, -29011, -28968, -28924, -28878, -28831, -28783, -28733, -28683, -28631, + -28578, -28524, -28468, -28412, -28354, -28295, -28234, -28173, -28110, -28046, + -27980, -27914, -27846, -27777, -27707, -27635, -27563, -27489, -27413, -27337, + -27259, -27180, -27100, -27018, -26936, -26852, -26766, -26680, -26592, -26503, + -26412, -26321, -26228, -26134, -26039, -25942, -25844, -25745, -25644, -25543, + -25440, -25336, -25230, -25123, -25016, -24906, -24796, -24684, -24571, -24457, + -24342, -24225, -24107, -23988, -23867, -23746, -23623, -23499, -23373, -23247, + -23119, -22990, -22860, -22728, -22596, -22462, -22327, -22191, -22053, -21914, + -21775, -21634, -21491, -21348, -21204, -21058, -20911, -20763, -20614, -20464, + -20312, -20160, -20006, -19851, -19695, -19538, -19380, -19221, -19061, -18899, + -18737, -18574, -18409, -18243, -18077, -17909, -17740, -17570, -17400, -17228, + -17055, -16881, -16706, -16531, -16354, -16176, -15997, -15818, -15637, -15456, + -15273, -15090, -14906, -14721, -14535, -14348, -14160, -13972, -13782, -13592, + -13401, -13209, -13017, -12823, -12629, -12434, -12238, -12042, -11845, -11647, + -11448, -11249, -11049, -10848, -10646, -10444, -10242, -10038, -9834, -9630, + -9425, -9219, -9012, -8806, -8598, -8390, -8182, -7973, -7763, -7553, + -7343, -7132, -6920, -6709, -6496, -6284, -6071, -5857, -5643, -5429, + -5215, -5000, -4785, -4569, -4354, -4138, -3921, -3705, -3488, -3271, + -3054, -2837, -2619, -2401, -2184, -1966, -1747, -1529, -1311, -1092, + -874, -655, -437, -218, }; #if defined(SDCARD) @@ -539,7 +539,7 @@ int AudioQueue::mixWav(AudioContext &context, AudioBuffer *buffer, int volume, u } #endif -const unsigned int toneVolumes[] = { 2, 4, 8, 12, 16 }; +const unsigned int toneVolumes[] = { 10, 8, 6, 4, 2 }; int AudioQueue::mixBeep(AudioContext &context, AudioBuffer *buffer, int volume, unsigned int fade) { @@ -553,7 +553,9 @@ int AudioQueue::mixBeep(AudioContext &context, AudioBuffer *buffer, int volume, if (fragment.tone.freq) { context.state.tone.step = double(DIM(sineValues)*fragment.tone.freq) / AUDIO_SAMPLE_RATE; - context.state.tone.volume = (fragment.tone.freq * fragment.tone.freq * 32) / (110 * 110 * toneVolumes[2+volume]); + context.state.tone.volume = toneVolumes[2+volume]; + if (fragment.tone.freq < 330) + context.state.tone.volume = (context.state.tone.volume * fragment.tone.freq * fragment.tone.freq) / (330 * 330); if (fragment.tone.freqIncr) fragment.tone.freq += AUDIO_BUFFER_DURATION * fragment.tone.freqIncr; else diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index 6191da79f..2738be4c2 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -47,7 +47,7 @@ #define AUDIO_BUFFER_SIZE (AUDIO_SAMPLE_RATE*AUDIO_BUFFER_DURATION/1000) #define AUDIO_BUFFER_COUNT (3) -#define BEEP_MIN_FREQ (110) +#define BEEP_MIN_FREQ (150) #define BEEP_DEFAULT_FREQ (2250) #define BEEP_KEY_UP_FREQ (BEEP_DEFAULT_FREQ+150) #define BEEP_KEY_DOWN_FREQ (BEEP_DEFAULT_FREQ-150) @@ -106,7 +106,7 @@ class AudioContext { struct { double step; double idx; - int volume; + float volume; } tone; } state; diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index 3b1ae8a7d..c66ae5bb2 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -150,6 +150,8 @@ enum menuGeneralSetupItems { IF_CPUARM(ITEM_SETUP_BEEP_VOLUME) IF_CPUARM(ITEM_SETUP_WAV_VOLUME) IF_CPUARM(ITEM_SETUP_VARIO_VOLUME) + IF_CPUARM(ITEM_SETUP_VARIO_PITCH) + IF_CPUARM(ITEM_SETUP_VARIO_RANGE) IF_CPUARM(ITEM_SETUP_BACKGROUND_VOLUME) ITEM_SETUP_BEEP_LENGTH, IF_AUDIO(ITEM_SETUP_SPEAKER_PITCH) @@ -211,7 +213,7 @@ void menuGeneralSetup(uint8_t event) } #endif - MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, ITEM_SETUP_MAX+1, {0, IF_RTCLOCK(2) IF_RTCLOCK(2) IF_BATTGRAPH(1) LABEL(SOUND), IF_AUDIO(0) IF_BUZZER(0) IF_VOICE(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) 0, IF_AUDIO(0) IF_HAPTIC(LABEL(HAPTIC)) IF_HAPTIC(0) IF_HAPTIC(0) IF_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_PCBSKY9X(0) CASE_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, IF_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, IF_SPLASH(0) IF_GPS(0) IF_GPS(0) IF_PXX(0) IF_CPUARM(0) IF_CPUARM(0) IF_FAI_CHOICE(0) 0, LABEL(TX_MODE), CASE_PCBTARANIS(0) 1/*to force edit mode*/}); + MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, ITEM_SETUP_MAX+1, {0, IF_RTCLOCK(2) IF_RTCLOCK(2) IF_BATTGRAPH(1) LABEL(SOUND), IF_AUDIO(0) IF_BUZZER(0) IF_VOICE(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) 0, IF_AUDIO(0) IF_HAPTIC(LABEL(HAPTIC)) IF_HAPTIC(0) IF_HAPTIC(0) IF_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_PCBSKY9X(0) CASE_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, IF_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, IF_SPLASH(0) IF_GPS(0) IF_GPS(0) IF_PXX(0) IF_CPUARM(0) IF_CPUARM(0) IF_FAI_CHOICE(0) 0, LABEL(TX_MODE), CASE_PCBTARANIS(0) 1/*to force edit mode*/}); uint8_t sub = m_posVert - 1; @@ -360,6 +362,16 @@ void menuGeneralSetup(uint8_t event) case ITEM_SETUP_VARIO_VOLUME: SLIDER_5POS(y, g_eeGeneral.varioVolume, STR_VARIO_VOLUME, event, attr); break; + case ITEM_SETUP_VARIO_PITCH: + lcd_putsLeft(y, "\001Vario Pitch"); + lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10), attr|LEFT); + if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioPitch, -30, 30); + break; + case ITEM_SETUP_VARIO_RANGE: + lcd_putsLeft(y, "\001Vario Max"); + lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10)+VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10), attr|LEFT); + if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRange, -30, 30); + break; case ITEM_SETUP_BACKGROUND_VOLUME: SLIDER_5POS(y, g_eeGeneral.backgroundVolume, STR_BG_VOLUME, event, attr); break; diff --git a/radio/src/maths.cpp b/radio/src/maths.cpp index 93330af1c..f729c4af2 100644 --- a/radio/src/maths.cpp +++ b/radio/src/maths.cpp @@ -123,7 +123,12 @@ void varioWakeup() if (isFunctionActive(FUNCTION_VARIO)) { #if defined(AUDIO) cli(); - int16_t verticalSpeed = frskyData.hub.varioSpeed; +#if 1 + #warning "Ele stick for vario tests" + int verticalSpeed = getValue(MIXSRC_Ele); +#else + int verticalSpeed = frskyData.hub.varioSpeed; +#endif sei(); #if defined(PCBSTD) @@ -135,60 +140,52 @@ void varioWakeup() verticalSpeed = (verticalSpeed * 10) / ((varioMax-varioCenterMax) / 100); if ((int16_t)(s_varioTmr-tmr10ms) < 0) { - uint8_t SoundVarioBeepTime = (1600 - verticalSpeed) / 100; - uint8_t SoundVarioBeepFreq = (verticalSpeed * 10 + 16000) >> 8; - s_varioTmr = tmr10ms + (SoundVarioBeepTime*2); - AUDIO_VARIO(SoundVarioBeepFreq, SoundVarioBeepTime); + uint8_t varioBeepFreq = (verticalSpeed * 10 + 16000) >> 8; + uint8_t varioBeepTime = (1600 - verticalSpeed) / 100; + s_varioTmr = tmr10ms + (varioBeepTime*2); + AUDIO_VARIO(varioBeepFreq, varioBeepTime); } } #else - int16_t varioCenterMax = (int16_t)g_model.frsky.varioCenterMax * 10 + 50; - if (verticalSpeed >= varioCenterMax) { - verticalSpeed = verticalSpeed - varioCenterMax; - int16_t varioMax = (10+(int16_t)g_model.frsky.varioMax) * 100; - if (verticalSpeed > varioMax) verticalSpeed = varioMax; - verticalSpeed = (verticalSpeed * 10) / ((varioMax-varioCenterMax) / 100); - } - else { - int16_t varioCenterMin = (int16_t)g_model.frsky.varioCenterMin * 10 - 50; - if (verticalSpeed <= varioCenterMin) { - verticalSpeed = verticalSpeed - varioCenterMin; - int16_t varioMin = (-10+(int16_t)g_model.frsky.varioMin) * 100; - if (verticalSpeed < varioMin) verticalSpeed = varioMin; - verticalSpeed = (verticalSpeed * 10) / ((varioCenterMin-varioMin) / 100); - } - else { - return; - } - } + int varioCenterMin = (int)g_model.frsky.varioCenterMin * 10 - 50; + int varioCenterMax = (int)g_model.frsky.varioCenterMax * 10 + 50; + int varioMax = (10+(int)g_model.frsky.varioMax) * 100; + int varioMin = (-10+(int)g_model.frsky.varioMin) * 100; - if (verticalSpeed < 0 || (int16_t)(s_varioTmr-tmr10ms) < 0) { + if (verticalSpeed > varioMax) + verticalSpeed = varioMax; + else if (verticalSpeed < varioMin) + verticalSpeed = varioMin; + + if ((int16_t)(s_varioTmr - tmr10ms) < 0) { #if defined(CPUARM) - int SoundVarioBeepTime; - int SoundVarioBeepFreq; - if (verticalSpeed > 0) { - SoundVarioBeepTime = min(5, 320 - (verticalSpeed >> 2)); - SoundVarioBeepFreq = 1000 + verticalSpeed; + int varioBeepFreq, varioBeepTime; + if (verticalSpeed > varioCenterMin) { + varioBeepFreq = VARIO_FREQUENCY_ZERO + (g_eeGeneral.varioPitch*10) + (((VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10)) * verticalSpeed) / varioMax); + int period = VARIO_PERIOD_ZERO - ((VARIO_PERIOD_ZERO-VARIO_PERIOD_MAX) * verticalSpeed) / varioMax; + // TODO something exponential would be better + varioBeepTime = (verticalSpeed > varioCenterMax ? (period / 4) : (period / 2)); + s_varioTmr = tmr10ms + (period/10); } else { - SoundVarioBeepTime = 80; - SoundVarioBeepFreq = (verticalSpeed * 3 + 8000) >> 3; + varioBeepFreq = VARIO_FREQUENCY_ZERO + (g_eeGeneral.varioPitch*10) - (((VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10)-BEEP_MIN_FREQ) * verticalSpeed) / varioMin); + varioBeepTime = 80; // TODO 20 // continuous beep: we will enter again here before the tone ends + s_varioTmr = tmr10ms + 1; } - s_varioTmr = tmr10ms + (SoundVarioBeepTime/5); #else - uint8_t SoundVarioBeepTime; - uint8_t SoundVarioBeepFreq; + uint8_t varioBeepFreq, varioBeepTime; if (verticalSpeed > 0) { - SoundVarioBeepTime = (8000 - verticalSpeed * 5) / 100; - SoundVarioBeepFreq = (verticalSpeed * 4 + 8000) >> 7; + varioBeepFreq = (verticalSpeed * 4 + 8000) >> 7; + varioBeepTime = (8000 - verticalSpeed * 5) / 100; } else { - SoundVarioBeepTime = 20; - SoundVarioBeepFreq = (verticalSpeed * 3 + 8000) >> 7; + varioBeepFreq = (verticalSpeed * 3 + 8000) >> 7; + varioBeepTime = 20; } - s_varioTmr = tmr10ms + (SoundVarioBeepTime/2); + s_varioTmr = tmr10ms + (varioBeepTime/2); #endif - AUDIO_VARIO(SoundVarioBeepFreq, SoundVarioBeepTime); + + AUDIO_VARIO(varioBeepFreq, varioBeepTime); } #endif diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index fed0158f4..1b7ae1123 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -239,6 +239,8 @@ enum BeeperMode { int8_t beepVolume; \ int8_t wavVolume; \ int8_t varioVolume; \ + int8_t varioPitch; \ + int8_t varioRange; \ int8_t backgroundVolume; #endif diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 320421007..33c2d82dd 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -4530,7 +4530,7 @@ void perMain() checkBacklight(); -#if defined(FRSKY) || defined(MAVLINK) +#if !defined(CPUARM) && (defined(FRSKY) || defined(MAVLINK)) telemetryWakeup(); #endif @@ -5188,6 +5188,10 @@ void mixerTask(void * pdata) CoLeaveMutexSection(mixerMutex); if (tick10ms) checkTrims(); +#if defined(FRSKY) || defined(MAVLINK) + telemetryWakeup(); +#endif + if (heartbeat == HEART_WDT_CHECK) { wdt_reset(); heartbeat = 0; diff --git a/radio/src/opentx.h b/radio/src/opentx.h index dcfed29a4..ce79231d2 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1331,6 +1331,10 @@ enum FunctionsActive { #endif }; +#define VARIO_FREQUENCY_ZERO 700/*Hz*/ +#define VARIO_FREQUENCY_RANGE 1000/*Hz*/ +#define VARIO_PERIOD_ZERO 250/*ms*/ +#define VARIO_PERIOD_MAX 50/*ms*/ extern MASK_FUNC_TYPE activeFunctions; extern MASK_CFN_TYPE activeFnSwitches; diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 1f0d53888..66eef97d6 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -655,7 +655,11 @@ void telemetryWakeup() #endif #if defined(VARIO) +#if 1 + #warning "test removed for vario tests" +#else if (TELEMETRY_STREAMING() && !IS_FAI_ENABLED()) +#endif varioWakeup(); #endif diff --git a/radio/util/sinus.py b/radio/util/sinus.py index 0eeb135f1..68c09456d 100644 --- a/radio/util/sinus.py +++ b/radio/util/sinus.py @@ -3,12 +3,14 @@ import math samples = 1024 -amplitudes = (63999, 1024, 512) +amplitudes = (60000, 4096, 1024) for i in range(samples): sample = 0.0 for harmonic, amplitude in enumerate(amplitudes): sample += math.sin(math.pi*2*i*(harmonic+1)/samples) * amplitude / 2 + if sample > 32767 or sample < -32768: + print "erreur" print "%d," % int(sample), if i % 10 == 9: print