[PATCH 10/13] Simplify some OSTC3 Code with macros

Anton Lundin glance at acc.umu.se
Fri Oct 17 15:33:44 PDT 2014


Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 configuredivecomputerthreads.cpp | 134 +++++++++++----------------------------
 1 file changed, 38 insertions(+), 96 deletions(-)

diff --git a/configuredivecomputerthreads.cpp b/configuredivecomputerthreads.cpp
index c2d7fa7..7af7636 100644
--- a/configuredivecomputerthreads.cpp
+++ b/configuredivecomputerthreads.cpp
@@ -387,55 +387,26 @@ void ReadSettingsThread::run()
 
 			//Read other settings
 			unsigned char uData[1] = {0};
-			//DiveMode
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_DIVE_MODE, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setDiveMode(uData[0]);
-			//Saturation
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_SATURATION, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setSaturation(uData[0]);
-			//Desaturation
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_DESATURATION, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setDesaturation(uData[0]);
-			//LastDeco
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_LAST_DECO, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setLastDeco(uData[0]);
-			//Brightness
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_BRIGHTNESS, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setBrightness(uData[0]);
-			//Units
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_UNITS, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setUnits(uData[0]);
-			//Sampling Rate
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_SAMPLING_RATE, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setSamplingRate(uData[0]);
-			//Salinity
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_SALINITY, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setSalinity(uData[0]);
-			//Dive mode colour
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_DIVEMODE_COLOR, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setDiveModeColor(uData[0]);
-			//Language
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_LANGUAGE, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setLanguage(uData[0]);
-			//Date Format
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_DATE_FORMAT, uData, sizeof(uData));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setDateFormat(uData[0]);
-			//Compass gain
-			rc = hw_ostc3_device_config_read(m_data->device, OSTC3_COMPASS_GAIN, data, sizeof(data));
-			if (rc == DC_STATUS_SUCCESS)
-				m_deviceDetails->setCompassGain(uData[0]);
 
+#define READ_SETTING(_OSTC3_SETTING, _DEVICE_DETAIL) \
+			rc = hw_ostc3_device_config_read(m_data->device, _OSTC3_SETTING, uData, sizeof(uData)); \
+			if (rc == DC_STATUS_SUCCESS) \
+				m_deviceDetails->_DEVICE_DETAIL(uData[0]);
+
+			READ_SETTING(OSTC3_DIVE_MODE, setDiveMode)
+			READ_SETTING(OSTC3_SATURATION, setSaturation)
+			READ_SETTING(OSTC3_DESATURATION, setDesaturation)
+			READ_SETTING(OSTC3_LAST_DECO, setLastDeco)
+			READ_SETTING(OSTC3_BRIGHTNESS, setBrightness)
+			READ_SETTING(OSTC3_UNITS, setUnits)
+			READ_SETTING(OSTC3_SAMPLING_RATE,setSamplingRate)
+			READ_SETTING(OSTC3_SALINITY, setSalinity)
+			READ_SETTING(OSTC3_DIVEMODE_COLOR,setDiveModeColor)
+			READ_SETTING(OSTC3_LANGUAGE, setLanguage)
+			READ_SETTING(OSTC3_DATE_FORMAT, setDateFormat)
+			READ_SETTING(OSTC3_COMPASS_GAIN, setCompassGain)
+
+#undef READ_SETTING
 
 			//read firmware settings
 			unsigned char fData[64] = {0};
@@ -629,55 +600,26 @@ void WriteSettingsThread::run()
 			//write general settings
 			//custom text
 			hw_ostc3_device_customtext(m_data->device, m_deviceDetails->customText().toUtf8().data());
-			unsigned char data[1] = {0};
-
-			//dive mode
-			data[0] = m_deviceDetails->diveMode();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_DIVE_MODE, data, sizeof(data));
-
-			//saturation
-			data[0] = m_deviceDetails->saturation();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_SATURATION, data, sizeof(data));
-
-			//desaturation
-			data[0] = m_deviceDetails->desaturation();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_DESATURATION, data, sizeof(data));
-
-			//last deco
-			data[0] = m_deviceDetails->lastDeco();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_LAST_DECO, data, sizeof(data));
-
-			//brightness
-			data[0] = m_deviceDetails->brightness();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_BRIGHTNESS, data, sizeof(data));
-
-			//units
-			data[0] = m_deviceDetails->units();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_UNITS, data, sizeof(data));
 
-			//sampling rate
-			data[0] = m_deviceDetails->samplingRate();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_SAMPLING_RATE, data, sizeof(data));
-
-			//salinity
-			data[0] = m_deviceDetails->salinity();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_SALINITY, data, sizeof(data));
-
-			//dive mode colour
-			data[0] = m_deviceDetails->diveModeColor();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_DIVEMODE_COLOR, data, sizeof(data));
-
-			//language
-			data[0] = m_deviceDetails->language();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_LANGUAGE, data, sizeof(data));
-
-			//date format
-			data[0] = m_deviceDetails->dateFormat();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_DATE_FORMAT, data, sizeof(data));
-
-			//compass gain
-			data[0] = m_deviceDetails->compassGain();
-			hw_ostc3_device_config_write(m_data->device, OSTC3_COMPASS_GAIN, data, sizeof(data));
+			unsigned char data[1] = {0};
+#define WRITE_SETTING(_OSTC3_SETTING, _DEVICE_DETAIL) \
+			data[0] = m_deviceDetails->_DEVICE_DETAIL(); \
+			hw_ostc3_device_config_write(m_data->device, _OSTC3_SETTING, data, sizeof(data));
+
+			WRITE_SETTING(OSTC3_DIVE_MODE, diveMode)
+			WRITE_SETTING(OSTC3_SATURATION, saturation)
+			WRITE_SETTING(OSTC3_DESATURATION, desaturation)
+			WRITE_SETTING(OSTC3_LAST_DECO, lastDeco)
+			WRITE_SETTING(OSTC3_BRIGHTNESS, brightness)
+			WRITE_SETTING(OSTC3_UNITS, units)
+			WRITE_SETTING(OSTC3_SAMPLING_RATE, samplingRate)
+			WRITE_SETTING(OSTC3_SALINITY, salinity)
+			WRITE_SETTING(OSTC3_DIVEMODE_COLOR, diveModeColor)
+			WRITE_SETTING(OSTC3_LANGUAGE, language)
+			WRITE_SETTING(OSTC3_DATE_FORMAT, dateFormat)
+			WRITE_SETTING(OSTC3_COMPASS_GAIN, compassGain)
+
+#undef WRITE_SETTING
 
 			//sync date and time
 			if (m_deviceDetails->syncTime()) {
-- 
1.9.1



More information about the subsurface mailing list