changeset 200:7116c0ffb862

Merged in janlmulder/ostc4/div-fixes-cleaup-2 (pull request #8) 2 (simple) bugfixes and again some cleanup
author heinrichsweikamp <bitbucket@heinrichsweikamp.com>
date Fri, 22 Mar 2019 08:15:30 +0000
parents 05df3b395615 (current diff) ac58a9fb92ac (diff)
children adc1e7d628be 2de856965c55
files
diffstat 3 files changed, 54 insertions(+), 244 deletions(-) [+]
line wrap: on
line diff
--- a/Discovery/Src/data_exchange_main.c	Tue Mar 19 15:43:38 2019 +0000
+++ b/Discovery/Src/data_exchange_main.c	Fri Mar 22 08:15:30 2019 +0000
@@ -38,7 +38,7 @@
 	
 	second small CPU gets request to send its device data
 		
-		on receiption the data is merged with the data in externLogbookFlash,
+		on reception the data is merged with the data in externLogbookFlash,
 		stored on the externLogbookFlash and from now on send to small CPU
 
   ==============================================================================
@@ -56,7 +56,7 @@
 
 /* Includes ------------------------------------------------------------------*/
 #include <stdlib.h>
-#include <string.h> // for memcopy
+#include <string.h> // for memcpy
 #include "stm32f4xx_hal.h"
 #include "stdio.h"
 #include "ostc.h"
@@ -74,63 +74,41 @@
 
 
 /* Exported variables --------------------------------------------------------*/
-uint8_t	wasPowerOn = 0;
-confirmbit8_Type requestNecessary = { .uw = 0 };
-uint8_t wasUpdateNotPowerOn = 0;
+static uint8_t	wasPowerOn = 0;
+static confirmbit8_Type requestNecessary = { .uw = 0 };
+static uint8_t wasUpdateNotPowerOn = 0;
 
 /* Private variables with external access ------------------------------------*/
 
-
 /* Private variables ---------------------------------------------------------*/
-uint8_t	told_reset_logik_alles_ok = 0;
+static uint8_t	told_reset_logik_alles_ok = 0;
 
-SDataReceiveFromMaster dataOut;
-SDataExchangeSlaveToMaster dataIn;
+static SDataReceiveFromMaster dataOut;
+static SDataExchangeSlaveToMaster dataIn;
 
-uint8_t data_old__lost_connection_to_slave_counter_temp = 0;
-uint8_t data_old__lost_connection_to_slave_counter_retry = 0;
-uint32_t data_old__lost_connection_to_slave_counter_total = 0;
+static uint8_t data_old__lost_connection_to_slave_counter_temp = 0;
+static uint8_t data_old__lost_connection_to_slave_counter_retry = 0;
+static uint32_t data_old__lost_connection_to_slave_counter_total = 0;
 
 /* Private types -------------------------------------------------------------*/
 
-typedef enum
-{
-  CPU2_TRANSFER_STOP	       = 0x00,    /*!<     */
-  CPU2_TRANSFER_TEST_REQUEST = 0x01,    /*!<     */
-  CPU2_TRANSFER_TEST_RECEIVE = 0x02,    /*!<     */
-  CPU2_TRANSFER_SEND_OK      = 0x03,    /*!<     */
-  CPU2_TRANSFER_SEND_FALSE   = 0x04,    /*!<     */
-  CPU2_TRANSFER_DATA			   = 0x05,    /*!<     */
-}CPU2_TRANSFER_StatusTypeDef;
-
-const uint8_t header_test_request[4]	= {0xBB, 0x00, 0x00, 0xBB};
-const uint8_t header_test_receive[4]	= {0xBB, 0x01, 0x01, 0xBB};
-const uint8_t header_false[4]					= {0xBB, 0xFF, 0xFF, 0xBB};
-const uint8_t header_correct[4]				= {0xBB, 0xCC, 0xCC, 0xBB};
-const uint8_t header_data[4]					= {0xAA, 0x01, 0x01, 0xAA};
-
 /* Private function prototypes -----------------------------------------------*/
-uint8_t DataEX_check_header_and_footer_ok(void);
-uint8_t DataEX_check_header_and_footer_shifted(void);
-uint8_t DataEX_check_header_and_footer_devicedata(void);
-void DataEX_check_DeviceData(void);
+static uint8_t DataEX_check_header_and_footer_ok(void);
+static uint8_t DataEX_check_header_and_footer_shifted(void);
+static uint8_t DataEX_check_header_and_footer_devicedata(void);
+static void DataEX_check_DeviceData(void);
 
 /* Exported functions --------------------------------------------------------*/
-void DataEX_set_update_RTE_not_power_on(void)
-{
-	wasUpdateNotPowerOn = 1;
-}
-
 
 uint8_t DataEX_was_power_on(void)
 {
 	return wasPowerOn;
 }
 
-uint8_t count_DataEX_Error_Handler = 0;
-uint8_t last_error_DataEX_Error_Handler = 0;
+static uint8_t count_DataEX_Error_Handler = 0;
+static uint8_t last_error_DataEX_Error_Handler = 0;
 
-void DataEX_Error_Handler(uint8_t answer)
+static void DataEX_Error_Handler(uint8_t answer)
 {
 	count_DataEX_Error_Handler++;
 	last_error_DataEX_Error_Handler = answer;
@@ -152,21 +130,7 @@
 }
 
 
-uint32_t DataEX_time_elapsed_ms(uint32_t ticksstart,uint32_t ticksnow)
-{
-
-	if(ticksstart <= ticksnow)
-	{
-			return ticksnow - ticksstart;
-	}
-	else
-	{
-		return 0xFFFFFFFF - ticksstart + ticksnow;
-	}
-
-}
-
-SDataReceiveFromMaster * dataOutGetPointer(void)
+SDataReceiveFromMaster *dataOutGetPointer(void)
 {
 	return &dataOut;
 }
@@ -179,8 +143,6 @@
 	data_old__lost_connection_to_slave_counter_total = 0;
 
 	memset((void *)&dataOut, 0, sizeof(SDataReceiveFromMaster));
-	// old 160307:	for(int i=0;i<EXCHANGE_BUFFERSIZE;i++)
-//		*(uint8_t *)(((uint32_t)&dataOut) + i)  = 0;
 
 	dataOut.header.checkCode[0] = 0xBB;
 	dataOut.header.checkCode[1] = 0x01;
@@ -194,7 +156,7 @@
 }
 
 
-void DataEx_call_helper_requests(void)
+static void DataEx_call_helper_requests(void)
 {
 	static uint8_t setDateWasSend = 0;
 	static uint8_t setTimeWasSend = 0;
@@ -340,7 +302,7 @@
 }
 
 
-uint32_t SPI_CALLBACKS;
+static uint32_t SPI_CALLBACKS;
 uint32_t get_num_SPI_CALLBACKS(void){
 	return SPI_CALLBACKS;
 }
@@ -360,9 +322,6 @@
 }
 
 
-
-
-
 void DateEx_copy_to_dataOut(void)
 {
 	const SDiveState * pStateReal = stateRealGetPointer();
@@ -402,19 +361,6 @@
 		dataOut.revisionHardware = 0xFF;
 		dataOut.revisionCRCx0x7A = 0xFF;
 	}
-		
-	/*
-	for(int i = 0; i< 16; i++)
-	{
-    dataOut.data.VPM_adjusted_critical_radius_he[i] = pStateReal->vpm.adjusted_critical_radius_he[i];
-    dataOut.data.VPM_adjusted_critical_radius_n2[i] = pStateReal->vpm.adjusted_critical_radius_n2[i];
-    dataOut.data.VPM_adjusted_crushing_pressure_he[i] = pStateReal->vpm.adjusted_crushing_pressure_he[i];
-    dataOut.data.VPM_adjusted_crushing_pressure_n2[i] = pStateReal->vpm.adjusted_crushing_pressure_n2[i];
-    dataOut.data.VPM_initial_allowable_gradient_he[i] = pStateReal->vpm.initial_allowable_gradient_he[i];
-    dataOut.data.VPM_initial_allowable_gradient_n2[i] = pStateReal->vpm.initial_allowable_gradient_n2[i];
-    dataOut.data.VPM_max_actual_gradient[i] = pStateReal->vpm.max_actual_gradient[i];
-	}
-*/
 	
 	if(DataEX_check_header_and_footer_ok() && !told_reset_logik_alles_ok)
 	{
@@ -477,8 +423,6 @@
 			 */
 		}
 
-
-
 		if(decoLock == DECO_CALC_FINSHED_Buehlmann)
     {
 
@@ -535,16 +479,14 @@
 }
 
 
-void DataEX_helper_copy_deviceData(SDeviceLine *lineWrite, const SDeviceLine *lineRead)
+static void DataEX_helper_copy_deviceData(SDeviceLine *lineWrite, const SDeviceLine *lineRead)
 {	
 	lineWrite->date_rtc_dr = lineRead->date_rtc_dr; 
 	lineWrite->time_rtc_tr = lineRead->time_rtc_tr;
 	lineWrite->value_int32 = lineRead->value_int32;
 }
 
-
-
-void DataEX_helper_SetTime(RTC_TimeTypeDef inStimestructure, uint32_t *outTimetmpreg)
+static void DataEX_helper_SetTime(RTC_TimeTypeDef inStimestructure, uint32_t *outTimetmpreg)
 {
   inStimestructure.TimeFormat = RTC_HOURFORMAT_24;
 
@@ -555,7 +497,7 @@
 }
 
 
-void DataEX_helper_SetDate(RTC_DateTypeDef inSdatestructure, uint32_t *outDatetmpreg)
+static void DataEX_helper_SetDate(RTC_DateTypeDef inSdatestructure, uint32_t *outDatetmpreg)
 {
    *outDatetmpreg = (((uint32_t)RTC_ByteToBcd2(inSdatestructure.Year) << 16U) | \
 										((uint32_t)RTC_ByteToBcd2(inSdatestructure.Month) << 8U) | \
@@ -565,7 +507,7 @@
 
 
 
-void DataEX_helper_set_Unknown_Date_deviceData(SDeviceLine *lineWrite)
+static void DataEX_helper_set_Unknown_Date_deviceData(SDeviceLine *lineWrite)
 {	
 	RTC_DateTypeDef sdatestructure;
 	RTC_TimeTypeDef stimestructure;
@@ -584,7 +526,7 @@
 }
 
 
-uint8_t DataEX_helper_Check_And_Correct_Date_deviceData(SDeviceLine *lineWrite)
+static uint8_t DataEX_helper_Check_And_Correct_Date_deviceData(SDeviceLine *lineWrite)
 {
 	RTC_DateTypeDef sdatestructure;
 	RTC_TimeTypeDef stimestructure;
@@ -604,7 +546,7 @@
 }
 
 
-uint8_t DataEX_helper_Check_And_Correct_Value_deviceData(SDeviceLine *lineWrite, int32_t from, int32_t to)
+static uint8_t DataEX_helper_Check_And_Correct_Value_deviceData(SDeviceLine *lineWrite, int32_t from, int32_t to)
 {
 	if(lineWrite->value_int32 >= from && lineWrite->value_int32 <= to)
 		return 0;
@@ -619,7 +561,7 @@
 }
 
 
-void DataEX_check_DeviceData(void)
+static void DataEX_check_DeviceData(void)
 {
 	SDevice *DeviceData = stateDeviceGetPointerWrite();
 
@@ -643,7 +585,7 @@
 }
 
 
-void DataEX_merge_DeviceData_and_store(void)
+static void DataEX_merge_DeviceData_and_store(void)
 {
 	uint16_t dataLengthRead;
 	SDevice DeviceDataFlash;
@@ -657,16 +599,6 @@
 		return;
 	}
 
-/*
-	SDeviceLine batteryChargeCycles;
-	SDeviceLine batteryChargeCompleteCycles;
-	SDeviceLine temperatureMinimum;
-	SDeviceLine temperatureMaximum;
-	SDeviceLine depthMaximum;
-	SDeviceLine diveCycles;
-	SDeviceLine voltageMinimum;
-*/
-
 	/* max values */
 	if(DeviceData->batteryChargeCompleteCycles.value_int32 < DeviceDataFlash.batteryChargeCompleteCycles.value_int32)
 	{
@@ -708,7 +640,7 @@
 }
 
 
-void DataEX_copy_to_DeviceData(void)
+static void DataEX_copy_to_DeviceData(void)
 {
 	SDataExchangeSlaveToMasterDeviceData * dataInDevice = (SDataExchangeSlaveToMasterDeviceData *)&dataIn;
 	SDevice * pDeviceState = stateDeviceGetPointerWrite();
@@ -717,7 +649,7 @@
 }
 
 
-void DataEX_copy_to_VpmRepetitiveData(void)
+static void DataEX_copy_to_VpmRepetitiveData(void)
 {
 	SDataExchangeSlaveToMasterDeviceData * dataInDevice = (SDataExchangeSlaveToMasterDeviceData *)&dataIn;
 	SVpmRepetitiveData * pVpmState = stateVpmRepetitiveDataGetPointerWrite();
@@ -920,6 +852,11 @@
 			pStateReal->lifeData.boolResetStopwatch = 1;
 		}
 
+		pStateReal->lifeData.cns = dataIn.data[dataIn.boolToxicData].cns;
+		pStateReal->lifeData.otu = dataIn.data[dataIn.boolToxicData].otu;
+		pStateReal->lifeData.no_fly_time_minutes = dataIn.data[dataIn.boolToxicData].no_fly_time_minutes;
+		pStateReal->lifeData.desaturation_time_minutes = dataIn.data[dataIn.boolToxicData].desaturation_time_minutes;
+
 		//End of diveMode?
 		if(pStateReal->mode == MODE_DIVE && dataIn.mode != MODE_DIVE)
 		{
@@ -971,7 +908,6 @@
 		pStateReal->lifeData.counterSecondsShallowDepth = dataIn.data[dataIn.boolTimeData].counterSecondsShallowDepth;
 		pStateReal->lifeData.surface_time_seconds = (int32_t)dataIn.data[dataIn.boolTimeData].surfacetime_seconds;
 
-
 		pStateReal->lifeData.compass_heading = dataIn.data[dataIn.boolCompassData].compass_heading;
 		if(settingsGetPointer()->FlipDisplay) /* consider that diver is targeting into the opposite direction */
 		{
@@ -990,11 +926,6 @@
 		pStateReal->compass_uTick_new = dataIn.data[dataIn.boolCompassData].compass_uTick;
 		pStateReal->compass_uTick_local_new = HAL_GetTick();
 
-	    pStateReal->lifeData.cns = dataIn.data[dataIn.boolToxicData].cns;
-		pStateReal->lifeData.otu = dataIn.data[dataIn.boolToxicData].otu;
-	    pStateReal->lifeData.no_fly_time_minutes = dataIn.data[dataIn.boolToxicData].no_fly_time_minutes;
-		pStateReal->lifeData.desaturation_time_minutes = dataIn.data[dataIn.boolToxicData].desaturation_time_minutes;
-
 		memcpy(pStateReal->lifeData.tissue_nitrogen_bar, dataIn.data[dataIn.boolTisssueData].tissue_nitrogen_bar,sizeof(pStateReal->lifeData.tissue_nitrogen_bar));
 		memcpy(pStateReal->lifeData.tissue_helium_bar, dataIn.data[dataIn.boolTisssueData].tissue_helium_bar,sizeof(pStateReal->lifeData.tissue_helium_bar));
 	
@@ -1015,25 +946,6 @@
 		pStateReal->lifeData.battery_charge = dataIn.data[dataIn.boolBatteryData].battery_charge;
 		pStateReal->lifeData.battery_voltage = dataIn.data[dataIn.boolBatteryData].battery_voltage;
 	}
-/* now in ext_flash_write_settings() // hw 161027
- *	if((pStateReal->lifeData.battery_charge > 1) && !DataEX_was_power_on() && ((uint8_t)(pStateReal->lifeData.battery_charge) !=  0x10)) // get rid of 16% (0x10)
- *		pSettings->lastKnownBatteryPercentage = (uint8_t)(pStateReal->lifeData.battery_charge);
- */
-	
-	/* OC and CCR but no sensors -> moved to updateSetpointStateUsed();
-	float oxygen = 0;
-	if(pStateReal->diveSettings.diveMode == 0)
-	{
-		oxygen = 1.00f;
-		oxygen -= ((float)pStateReal->lifeData.actualGas.nitrogen_percentage)/100.0f;
-		oxygen -= ((float)pStateReal->lifeData.actualGas.helium_percentage)/100.0f;
-		pStateReal->lifeData.ppO2 = pStateReal->lifeData.pressure_ambient_bar * oxygen;
-	}
-  else if(pStateReal->diveSettings.diveMode == 1)
-	{
-	  pStateReal->lifeData.ppO2 = ((float)pStateReal->lifeData.actualGas.setPoint_cbar) /100;
-	}
-	 */
 
 	/* apnea specials
 	 */
@@ -1120,44 +1032,6 @@
 			pStateReal->lifeData.wireless_data[i].data[j] = dataIn.data[dataIn.boolWirelessData].wireless_data[i].data[j];
 	}
 
-	/* old stuff
-	// crc - is done in RTE 160325
-	// size at the moment 4 bytes + one empty + crc -> minimum 5 bytes (+ crc)
-	// kopieren: Id, Wert, Alter
-	for(int i=0;i<4;i++)
-	{
-		uint8_t numberOfBytes = pStateReal->lifeData.wireless_data[i].numberOfBytes - 1;
-		
-		if((numberOfBytes < 5) || (numberOfBytes > 7))
-		{
-			wirelessData[i][0] = 0;
-			wirelessData[i][1] = 0;
-			wirelessData[i][2] = 0;
-		}
-		else
-		{
-			if((crc32c_checksum(pStateReal->lifeData.wireless_data[i].data, numberOfBytes, 0, 0) & 0xFF)!= pStateReal->lifeData.wireless_data[i].data[numberOfBytes])
-			{
-// no crc is send at the moment
-wirelessData[i][0] = (pStateReal->lifeData.wireless_data[i].data[0] * 256) + pStateReal->lifeData.wireless_data[i].data[1];
-wirelessData[i][1] = (pStateReal->lifeData.wireless_data[i].data[3] * 256) + pStateReal->lifeData.wireless_data[i].data[4];
-wirelessData[i][2] = pStateReal->lifeData.wireless_data[i].ageInMilliSeconds;
-
-//				wirelessData[i][0] = 0;
-//				wirelessData[i][1] = 0;
-//				wirelessData[i][2] = 0;
-				
-			}
-
-			else
-			{
-				wirelessData[i][0] = (pStateReal->lifeData.wireless_data[i].data[0] * 256) + pStateReal->lifeData.wireless_data[i].data[1];
-				wirelessData[i][1] = (pStateReal->lifeData.wireless_data[i].data[3] * 256) + pStateReal->lifeData.wireless_data[i].data[4];
-				wirelessData[i][2] = pStateReal->lifeData.wireless_data[i].ageInMilliSeconds;
-			}
-		}
-	}	
-*/
 	// neu 160412
 	for(int i=0;i<4;i++)
 	{
@@ -1197,67 +1071,7 @@
 			}
 		}
 	}
-/*
-	// neu 160325
-	for(int i=0;i<4;i++)
-	{
-		if(pStateReal->lifeData.wireless_data[i].numberOfBytes == 10)
-		{
-			wirelessData[i][0] = (pStateReal->lifeData.wireless_data[i].data[0] * 256) + pStateReal->lifeData.wireless_data[i].data[1];
-			wirelessData[i][1] = (pStateReal->lifeData.wireless_data[i].data[3] * 256) + pStateReal->lifeData.wireless_data[i].data[4];
-			wirelessData[i][2] = pStateReal->lifeData.wireless_data[i].ageInMilliSeconds;
-		}
-		else
-		{
-			wirelessData[i][0] = 0;
-			wirelessData[i][1] = 0;
-			wirelessData[i][2] = 0;
-		}
-	}
 
-	// aussortieren doppelte ids, j�ngster datensatz ist relevant
-	for(int i=0;i<3;i++)
-	{
-		if(wirelessData[i][0])
-		{
-			for(int j=i+1; j<4; j++)
-			{
-				if(wirelessData[i][0] == wirelessData[j][0])
-				{
-					if(wirelessData[i][2] > wirelessData[j][2])
-					{
-						wirelessData[i][0] = wirelessData[j][0];
-						wirelessData[i][1] = wirelessData[j][1];
-						wirelessData[i][2] = wirelessData[j][2];
-					}
-					wirelessData[j][0] = 0;
-					wirelessData[j][1] = 0;
-					wirelessData[j][2] = 0;
-				}
-			}
-		}
-	}
-*/
-/* old 
-	// copy to lifeData
-	for(int i=0;i<4;i++)
-	{
-		if((wirelessData[i][0]) && (wirelessData[i][2]) && (wirelessData[i][2] < 60000))
-		{
-			for(int j=1;j<=(2*NUM_GASES+1);j++)
-			{
-				if(pStateReal->diveSettings.gas[j].bottle_wireless_id == wirelessData[i][0])
-				{
-					pStateReal->lifeData.bottle_bar[j] = wirelessData[i][1];
-					pStateReal->lifeData.bottle_bar_age_MilliSeconds[j] = wirelessData[i][2];
-					break;
-				}
-			}
-		}
-	}
-*/
-	
- 
 	/* PIC data
  	 */
 	for(int i=0;i<4;i++)
@@ -1297,10 +1111,10 @@
 
 	/* Private functions ---------------------------------------------------------*/
 
-/* Check if there is an empty frame providec by RTE (all 0) or even no data provided by RTE (all 0xFF)
+/* Check if there is an empty frame provided by RTE (all 0) or even no data provided by RTE (all 0xFF)
  * If that is not the case the DMA is somehow not in sync
  */
-uint8_t DataEX_check_header_and_footer_shifted()
+static uint8_t DataEX_check_header_and_footer_shifted()
 {
 	uint8_t ret = 1;
 	if((dataIn.footer.checkCode[0] == 0x00)
@@ -1316,7 +1130,7 @@
 	return ret;
 }
 
-uint8_t DataEX_check_header_and_footer_ok(void)
+static uint8_t DataEX_check_header_and_footer_ok(void)
 {
 	if(dataIn.header.checkCode[0] != 0xA1)
 		return 0;
@@ -1340,7 +1154,7 @@
 	return 1;
 }
 
-uint8_t DataEX_check_header_and_footer_devicedata(void)
+static uint8_t DataEX_check_header_and_footer_devicedata(void)
 {
 	if(dataIn.header.checkCode[0] != 0xDF)
 		return 0;
@@ -1361,6 +1175,3 @@
 
 	return 1;
 }
-
-
-
--- a/Discovery/Src/logbook.c	Tue Mar 19 15:43:38 2019 +0000
+++ b/Discovery/Src/logbook.c	Fri Mar 22 08:15:30 2019 +0000
@@ -238,7 +238,7 @@
 	header.dateDay = Sdate.Date;
 	header.timeHour = Stime.Hours;
 	header.timeMinute = Stime.Minutes;
-	header.cnsAtBeginning = (uint16_t)((pInfo->lifeData.cns * 100) + 0.5f);
+	header.cnsAtBeginning = (uint16_t)pInfo->lifeData.cns;
 	header.surfacePressure_mbar = (uint16_t)(pInfo->lifeData.pressure_surface_bar * 1000);
 	header.firmwareVersionHigh = firmwareVersion_16bit_high();
 	header.firmwareVersionLow = firmwareVersion_16bit_low();
@@ -609,8 +609,7 @@
     if(divisor.cns == 0)
     {
         divisor.cns = smallHeader.cnsDivisor - 1;
-        //addU16(&sample[length], (uint16_t)(state.lifeData.cns * 100.0f + 0.5f));
-        addU16(&sample[length], (uint16_t)(state.lifeData.cns)); // hw 151110 cns is 0 to 100 % and more (not 0 to 1.00 and more)
+        addU16(&sample[length], (uint16_t)state.lifeData.cns);
         length += 2;
     }
     else
--- a/Discovery/Src/t7.c	Tue Mar 19 15:43:38 2019 +0000
+++ b/Discovery/Src/t7.c	Fri Mar 22 08:15:30 2019 +0000
@@ -58,7 +58,7 @@
 void t7_miniLiveLogProfile(void);
 //void t7_clock(void);
 void t7_logo_OSTC(void);
-void t7_colorscheme_mod(char *text);
+static void t7_colorscheme_mod(char *text);
 
 uint8_t t7_test_customview_warnings(void);
 void t7_show_customview_warnings(void);
@@ -1207,7 +1207,7 @@
     uint32_t color;
 //	uint8_t gasIdFirst;
     SSettings* pSettings = settingsGetPointer();
-    extern SDataExchangeSlaveToMaster dataIn;
+    SDataExchangeSlaveToMaster *dataIn = get_dataInPointer();
 
     SWindowGimpStyle windowGimp;
 
@@ -1221,7 +1221,7 @@
     if(stateUsed->data_old__lost_connection_to_slave)
     {
         Gfx_write_label_var(&t7screen,  500,800,  0,&FontT42,CLUT_DiveMainLabel,"old");
-        snprintf(TextL1,TEXTSIZE,"%X %X %X %X",dataIn.header.checkCode[0],dataIn.header.checkCode[1],dataIn.header.checkCode[2],dataIn.header.checkCode[3]);
+        snprintf(TextL1,TEXTSIZE,"%X %X %X %X",dataIn->header.checkCode[0],dataIn->header.checkCode[1],dataIn->header.checkCode[2],dataIn->header.checkCode[3]);
         Gfx_write_label_var(&t7screen,  500,800, 45,&FontT48,CLUT_Font020,TextL1);
     }
     else
@@ -1261,7 +1261,7 @@
     Gfx_write_label_var(&t7screen,  0,400,355,&FontT48,CLUT_Font020,TextL1);
 
 //	gasIdFirst = stateUsed->lifeData.actualGas.GasIdInSettings;
-    snprintf(TextL1,TEXTSIZE,"%u.%u",dataIn.RTE_VERSION_high,dataIn.RTE_VERSION_low);
+    snprintf(TextL1,TEXTSIZE,"%u.%u",dataIn->RTE_VERSION_high,dataIn->RTE_VERSION_low);
     Gfx_write_label_var(&t7screen,  320,500,100,&FontT42,CLUT_DiveMainLabel,"RTE");
     Gfx_write_label_var(&t7screen,  320,500,145,&FontT48,CLUT_Font020,TextL1);
 
@@ -2639,14 +2639,13 @@
     return lineCount;
 }
 
-/* could be extended to search for \020 inside
- */
-void t7_colorscheme_mod(char *text)
-{
-    if((text[0] == '\020') && !GFX_is_colorschemeDiveStandard())
-    {
-        text[0] = '\027';
-    }
+static void t7_colorscheme_mod(char *text) {
+	char *p = text;
+	while (*p) {
+		if ((*p == '\020') && !GFX_is_colorschemeDiveStandard())
+			*p = '\027';
+		p++;
+	}
 }
 
 
@@ -3106,6 +3105,7 @@
     text[textpointer++] = '\t';
     textpointer += snprintf(&text[textpointer],10,"\020%i'",		pDecoinfoFuture->output_time_to_surface_seconds / 60);
     text[textpointer++] = 0;
+    t7_colorscheme_mod(text);
     GFX_write_string(&FontT42, &t7cY0free, text, 1);
 }