From 80d80835a02885074cf5934c90f0d89d1625c91f Mon Sep 17 00:00:00 2001
From: Alessandro Simovic <alessandro@yuneecresearch.com>
Date: Tue, 20 Mar 2018 11:03:31 +0100
Subject: [PATCH] libtunes: fixed some type conversions and other minor changes

---
 src/lib/tunes/tunes.cpp                      |  3 +--
 src/lib/tunes/tunes.h                        |  6 +++---
 src/systemcmds/tune_control/tune_control.cpp | 11 ++++++-----
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/lib/tunes/tunes.cpp b/src/lib/tunes/tunes.cpp
index 8fafc16cd5..a82d51e95c 100644
--- a/src/lib/tunes/tunes.cpp
+++ b/src/lib/tunes/tunes.cpp
@@ -115,7 +115,6 @@ int Tunes::set_control(const tune_control_s &tune_control)
 		// Special treatment for custom tunes
 		if (tune_control.tune_id == static_cast<int>(TuneID::CUSTOM)) {
 			_using_custom_msg = true;
-			_tune = nullptr;  // remove tune in case of override
 			_frequency = (unsigned)tune_control.frequency;
 			_duration = (unsigned)tune_control.duration;
 			_silence = (unsigned)tune_control.silence;
@@ -144,7 +143,7 @@ void Tunes::set_string(const char *const string, uint8_t strength)
 }
 
 int Tunes::get_next_tune(unsigned &frequency, unsigned &duration,
-			 unsigned &silence, unsigned &strength)
+			 unsigned &silence, uint8_t &strength)
 {
 	int ret = get_next_tune(frequency, duration, silence);
 
diff --git a/src/lib/tunes/tunes.h b/src/lib/tunes/tunes.h
index 160a6f6fa1..360d6abe43 100644
--- a/src/lib/tunes/tunes.h
+++ b/src/lib/tunes/tunes.h
@@ -93,7 +93,7 @@ public:
 	 *
 	 * @param  string    tune input string
 	 */
-	void set_string(const char *const string);
+	void set_string(const char *const string, uint8_t strength);
 
 	/**
 	 * Get next note in the current tune, which has been provided by either
@@ -115,7 +115,7 @@ public:
 	 * @return           -1 for error, 0 for play one tone and 1 for continue a sequence
 	 */
 	int get_next_tune(unsigned &frequency, unsigned &duration, unsigned &silence,
-			  unsigned &strength);
+			  uint8_t &strength);
 
 	/**
 	 *  Get the number of default tunes. This is useful for when a tune is
@@ -148,7 +148,7 @@ private:
 	unsigned _frequency;
 	unsigned _duration;
 	unsigned _silence;
-	unsigned _strength;
+	uint8_t _strength;
 	bool _using_custom_msg = false;
 
 	/**
diff --git a/src/systemcmds/tune_control/tune_control.cpp b/src/systemcmds/tune_control/tune_control.cpp
index d5f35fa3b4..f3d9a42255 100644
--- a/src/systemcmds/tune_control/tune_control.cpp
+++ b/src/systemcmds/tune_control/tune_control.cpp
@@ -72,7 +72,7 @@ usage()
 		"\t-s <strength>\t\tStrength of the tone between 0-100\n"
 		"\t-m <melody>\t\tMelody in a string form ex: \"MFT200e8a8a\"\n"
 		"\n"
-		"tune_control stop \t\t Stops playback, useful for repeated tunes\n"
+		"tune_control stop \t\tStops playback, useful for repeated tunes\n"
 	);
 }
 
@@ -147,7 +147,7 @@ tune_control_main(int argc, char *argv[])
 			break;
 
 		case 's':
-			value = (uint16_t)(strtol(myoptarg, nullptr, 0));
+			value = (uint8_t)(strtol(myoptarg, nullptr, 0));
 
 			if (value > 0 && value < 100) {
 				tune_control.strength = value;
@@ -170,20 +170,21 @@ tune_control_main(int argc, char *argv[])
 		return 1;
 	}
 
-	unsigned frequency, duration, silence, strength;
+	unsigned frequency, duration, silence;
+	uint8_t strength;
 	int exit_counter = 0;
 
 	if (!strcmp(argv[myoptind], "play")) {
 		if (string_input) {
 			PX4_INFO("Start playback...");
-			tunes.set_string(tune_string);
+			tunes.set_string(tune_string, tune_control.strength);
 
 			while (tunes.get_next_tune(frequency, duration, silence, strength) > 0) {
 				tune_control.tune_id = 0;
 				tune_control.frequency = (uint16_t)frequency;
 				tune_control.duration = (uint32_t)duration;
 				tune_control.silence = (uint32_t)silence;
-				tune_control.strength = (uint32_t)strength;
+				tune_control.strength = (uint8_t)strength;
 				publish_tune_control(tune_control);
 				usleep(duration + silence);
 				exit_counter++;
-- 
GitLab