/************************************************************
* Percepio Tracealyzer - ITM Trace Exporter for Keil uVision
* Copyright (c) 2018, Percepio AB.
* https://percepio.com
************************************************************/

FUNC void tzSetEnable(int enable)
{	
	if (enable == 1)
	{
		printf("Starting Tracealyzer recorder\n"); 		
	
		// Forward the ITM data to file
		exec("ITMLOG 1 > .\\tracealyzer.psf");
		
		// Send start command to Tracealyzer (not required if using vTraceEnable(TRC_START))
		exec("E CHAR tz_host_command_data = 1, 1, 0, 0, 0, 0, 0xFD, 0xFF");
		exec("tz_host_command_bytes_to_read = 8");
	}
	else if (enable == 0)
	{	
		printf("Stopping Tracealyzer recorder...\n"); 
		
		// Send stop command to Tracealyzer, to stop writing ITM data.		
		exec("E CHAR tz_host_command_data = 1, 0, 0, 0, 0, 0, 0xFE, 0xFF");
		exec("tz_host_command_bytes_to_read = 8");

		_sleep_(2000); // Wait a while to let all data be written the host file.
		
		// Stop forwarding the ITM data to file and close the file.
		exec("ITMLOG 1 OFF");
		
		printf("Tracealyzer recorder stopped.\n"); 
		
	}
	else printf("Usage: tzSetEnable(0 or 1), where 0 is disable (stops recorder) and 1 enable (starts recording)");
	
} 


// The Tracealyzer ITM stream port for Keil µVision can be used in two ways.
//
// 1. Start tracing directly from startup. 
// Make sure tzSetEnable(1) is called below and vTraceEnable(TRC_START) in your target startup.
//
// 2. Start the trace manually, using the "Start Recording" button in Keil µVision. 
// In this case, comment out the below call to tzSetEnable and make sure you call vTraceEnable(TRC_INIT) in your target startup (not TRC_START).

tzSetEnable(1);

DEFINE BUTTON "Start Recording", "tzSetEnable(1)";
DEFINE BUTTON "Stop Recording", "tzSetEnable(0)";