debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/service/TRKConnectedService.java
author dadubrow
Tue, 23 Feb 2010 12:46:08 -0600
changeset 1009 64772cb3290b
parent 894 48b544aebc83
child 1115 f2b4c39f3e7b
permissions -rw-r--r--
fix bug recognizing sys trk for version 3.2.5+
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     1
/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     3
* All rights reserved.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     8
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    11
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    12
* Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    13
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    14
* Description: 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    15
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    16
*/
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    17
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    18
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    19
package com.nokia.carbide.trk.support.service;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    20
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    21
import java.io.IOException;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    22
import java.text.MessageFormat;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    23
import java.util.Arrays;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    24
import java.util.List;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    25
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    26
import org.eclipse.core.runtime.IProgressMonitor;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    27
import org.osgi.framework.Version;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    28
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    29
import com.freescale.cdt.debug.cw.core.SerialConnectionSettings;
894
48b544aebc83 bug 10493 - only test one service for each physical connection
dadubrow
parents: 752
diff changeset
    30
import com.nokia.carbide.remoteconnections.interfaces.AbstractConnectedService2;
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    31
import com.nokia.carbide.remoteconnections.interfaces.AbstractSynchronizedConnection;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    32
import com.nokia.carbide.remoteconnections.interfaces.IConnectionType;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    33
import com.nokia.carbide.remoteconnections.interfaces.IService;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    34
import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    35
import com.nokia.carbide.remoteconnections.interfaces.IRemoteAgentInstallerProvider.IRemoteAgentInstaller;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    36
import com.nokia.carbide.trk.support.Messages;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    37
import com.nokia.carbide.trk.support.connection.SerialConnectionType;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    38
import com.nokia.carbide.trk.support.connection.TCPIPConnectionFactory;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    39
import com.nokia.carbide.trk.support.connection.TCPIPConnectionType;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    40
import com.nokia.carbide.trk.support.connection.USBConnectionType;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    41
import com.nokia.cpp.internal.api.utils.core.Check;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    42
import com.nokia.cpp.internal.api.utils.core.Pair;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    43
import com.nokia.tcf.api.ITCAPIConnection;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    44
import com.nokia.tcf.api.ITCConnection;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    45
import com.nokia.tcf.api.ITCMessage;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    46
import com.nokia.tcf.api.ITCMessageIds;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    47
import com.nokia.tcf.api.ITCMessageInputStream;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    48
import com.nokia.tcf.api.ITCMessageOptions;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    49
import com.nokia.tcf.api.TCFClassFactory;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    50
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    51
/**
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    52
 *
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    53
 */
894
48b544aebc83 bug 10493 - only test one service for each physical connection
dadubrow
parents: 752
diff changeset
    54
public class TRKConnectedService extends AbstractConnectedService2 {
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    55
	
748
7bd40a2d0a18 Add connection status reconciliation + fixes + tweaks
dadubrow
parents: 667
diff changeset
    56
	public static final String PROP_SYS_TRK = "is-system-trk"; //$NON-NLS-1$
7bd40a2d0a18 Add connection status reconciliation + fixes + tweaks
dadubrow
parents: 667
diff changeset
    57
	
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    58
	static {
665
12ea338ad1f6 Trap and report errors failing to load non-available native libraries.
Ed Swartz <ed.swartz@nokia.com>
parents: 165
diff changeset
    59
		try {
12ea338ad1f6 Trap and report errors failing to load non-available native libraries.
Ed Swartz <ed.swartz@nokia.com>
parents: 165
diff changeset
    60
			System.loadLibrary("GetTRKVersion"); //$NON-NLS-1$
12ea338ad1f6 Trap and report errors failing to load non-available native libraries.
Ed Swartz <ed.swartz@nokia.com>
parents: 165
diff changeset
    61
		} catch (UnsatisfiedLinkError e) {
12ea338ad1f6 Trap and report errors failing to load non-available native libraries.
Ed Swartz <ed.swartz@nokia.com>
parents: 165
diff changeset
    62
			// no such library, e.g., not on Windows or in a misconfigured dev layout
12ea338ad1f6 Trap and report errors failing to load non-available native libraries.
Ed Swartz <ed.swartz@nokia.com>
parents: 165
diff changeset
    63
			e.printStackTrace();
12ea338ad1f6 Trap and report errors failing to load non-available native libraries.
Ed Swartz <ed.swartz@nokia.com>
parents: 165
diff changeset
    64
		}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    65
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    66
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    67
	public native static void getTRKVersionFromSerial(String portName, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    68
			int baud, int dataBits, int parity, int stopBits, int flowControl,
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    69
			int[] version) throws Exception;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    70
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    71
	private static final String OK_STATUS = 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    72
		Messages.getString("TRKConnectedService.OKStatus"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    73
	private static final String IS_LASTEST = 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    74
		Messages.getString("TRKConnectedService.IsLatestStatus"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    75
	private static final String NEEDS_INSTALL = 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    76
		Messages.getString("TRKConnectedService.NeedsInstallStatus1") + //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    77
		Messages.getString("TRKConnectedService.NeedsInstallStatus2"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    78
	private static final String ERROR = 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    79
		Messages.getString("TRKConnectedService.ErrorStatus"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    80
	private static final String PORT_IN_USE =
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    81
		Messages.getString("TRKConnectedService.PortInUseStatus"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    82
	private static final String TCPIP_IN_USE =
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    83
		Messages.getString("TRKConnectedService.TCPIPInUseStatus"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    84
	
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    85
	private static final Version VERSIONS3_VERSION = new Version(3, 2, 4);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    86
	private static final byte[] TRK_PING = {0x7e, 0x0, 0x0, (byte) 0xff, 0x7e};
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    87
	private static final byte[] TRK_VERSION = {0x7e, 0x08, 0x01, (byte) 0xf6, 0x7e};
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
    88
	private static final byte[] TRK_VERSIONS3 = {0x7e, 0x51, 0x02, (byte) 0xac, 0x7e};
1009
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
    89
	private static final int SYS_TRK_RESPONSE_STR_OFFSET = 10;
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
    90
	private static final byte[] SYS_TRK_RESPONSE_STR = 
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
    91
					{0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x54, 0x52, 0x4b};
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
    92
	private static final int REQUIRED_MSG_LEN = 
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
    93
					SYS_TRK_RESPONSE_STR.length + SYS_TRK_RESPONSE_STR_OFFSET;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    94
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    95
	private Pair<String, Version> deviceOS;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    96
	private TRKService trkService;
662
de059f9c85e6 Bug 10343 - ensure tcf plugin is loaded
dadubrow
parents: 165
diff changeset
    97
	static Class<?> startTCFServer = TCFClassFactory.class; // force the tcf plugin to load
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    98
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    99
	public TRKConnectedService(IService service, AbstractSynchronizedConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   100
		super(service, connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   101
		Check.checkContract(service instanceof TRKService);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   102
		trkService = (TRKService) service;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   103
		currentStatus = new Status();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   104
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   105
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   106
	public IStatus getStatus() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   107
		return currentStatus;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   108
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   109
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   110
	private String getSimplePortName(int portNum) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   111
		return "COM" + portNum; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   112
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   113
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   114
	private String getPortNameForSerial(int portNum) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   115
		String portNamePrefix = portNum > 9 ? "\\\\.\\" : ""; //$NON-NLS-1$ //$NON-NLS-2$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   116
		return portNamePrefix + getSimplePortName(portNum);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   117
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   118
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   119
	private Version getTRKVersionFromDevice() throws ConnectionFailException {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   120
		if (connection.getConnectionType() instanceof SerialConnectionType) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   121
			int[] versInts = {0,0,0};
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   122
			String portNumStr = connection.getSettings().get(SerialConnectionSettings.PORT);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   123
			int portNum = Integer.parseInt(portNumStr);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   124
			int baud = getIndexValue(SerialConnectionSettings.BAUD);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   125
			int dataBits = getIndexValue(SerialConnectionSettings.DATA_BITS);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   126
			int parity = getIndexValue(SerialConnectionSettings.PARITY);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   127
			int stopBits = getIndexValue(SerialConnectionSettings.STOP_BITS);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   128
			int flowControl = getIndexValue(SerialConnectionSettings.FLOW_CONTROL);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   129
			try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   130
				getTRKVersionFromSerial(getPortNameForSerial(portNum), baud, dataBits, parity, stopBits, flowControl, versInts);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   131
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   132
			catch (Exception e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   133
				throw new ConnectionFailException(e.getMessage());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   134
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   135
			return new Version(versInts[0], versInts[1], versInts[2]);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   136
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   137
		else if (connection.getConnectionType() instanceof USBConnectionType) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   138
			String portNumStr = connection.getSettings().get(SerialConnectionSettings.PORT);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   139
			int portNum = Integer.parseInt(portNumStr);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   140
			return getTRKVersionFromOSTUSB(getSimplePortName(portNum));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   141
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   142
		return null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   143
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   144
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   145
	private Version getTRKVersionFromOSTUSB(String port) throws ConnectionFailException {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   146
		ITCConnection conn = TCFClassFactory.createITCVirtualSerialConnection(port);
165
cffbaf033837 [Bug 9085] Add new TCP/IP connection type with port mappings and new service interface to optionally provide defaults.
dadubrow
parents: 0
diff changeset
   147
		conn.setDecodeFormat("ost"); //$NON-NLS-1$
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   148
		return getTRKVersionUsingTCF(conn, (byte)0x90, (byte)0x90);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   149
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   150
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   151
	private Version getTRKVersionUsingTCF(ITCConnection conn, byte trkResponseId, byte trkRequestId) throws ConnectionFailException {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   152
//		System.out.println("entering getTRKVersionUsingTCF");
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   153
		Version version = null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   154
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   155
		ITCMessageOptions options = TCFClassFactory.createITCMessageOptions();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   156
		options.setMessageEncodeFormat(ITCMessageOptions.ENCODE_FORMAT); // we send raw trk
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   157
		options.setUnWrapFormat(ITCMessageOptions.UNWRAP_DELETE_HEADERS); // return raw trk
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   158
		options.setInputStreamSize(64);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   159
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   160
		// message Ids to capture (we must capture TRK response messages = id=0x45)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   161
		ITCMessageIds ids = TCFClassFactory.createITCMessageIds();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   162
		ids.addMessageId(trkResponseId); // TRK response
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   163
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   164
		ITCMessage tcMsgPing = TCFClassFactory.createITCMessage(TRK_PING);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   165
		tcMsgPing.setUseMyMessageId(true, trkRequestId);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   166
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   167
		ITCMessage tcMsgVersion = TCFClassFactory.createITCMessage(TRK_VERSION);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   168
		tcMsgVersion.setUseMyMessageId(true, trkRequestId);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   169
		
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   170
		ITCMessage tcMsgVersions3 = TCFClassFactory.createITCMessage(TRK_VERSIONS3);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   171
		tcMsgVersions3.setUseMyMessageId(true, trkRequestId);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   172
		
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   173
		// connect
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   174
		ITCAPIConnection api = TCFClassFactory.createITCAPIConnection();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   175
		org.eclipse.core.runtime.IStatus connStatus = api.connect(conn, options, ids);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   176
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   177
		// get a reference to the input stream
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   178
		ITCMessageInputStream stream = api.getInputStream();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   179
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   180
		// send trk ping
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   181
		if (connStatus.isOK()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   182
			try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   183
				org.eclipse.core.runtime.IStatus sendStatus = api.sendMessage(tcMsgPing);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   184
				if (sendStatus.isOK()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   185
					waitForSingleTCMessage(stream);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   186
					if (stream.peekMessages() > 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   187
						/*ITCMessage message =*/ stream.readMessage(); // ping response
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   188
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   189
					else
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   190
						throw new ConnectionFailException(Messages.getString("TRKConnectedService.NoPingError")); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   191
					
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   192
					// send trk version
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   193
					sendStatus = api.sendMessage(tcMsgVersion);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   194
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   195
					waitForSingleTCMessage(stream);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   196
					if (stream.peekMessages() > 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   197
						ITCMessage tcMessage = stream.readMessage(); // version response
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   198
						byte[] message = tcMessage.getMessage();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   199
//						printMessage(message);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   200
						if (message != null && message.length == 11) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   201
							version = new Version(message[4], message[5], message[8]);
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   202
							if (version.compareTo(VERSIONS3_VERSION) >= 0) {
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   203
								// send trk versions3
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   204
								sendStatus = api.sendMessage(tcMsgVersions3);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   205
								
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   206
								waitForSingleTCMessage(stream);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   207
								if (stream.peekMessages() > 0) {
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   208
									tcMessage = stream.readMessage(); // version response
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   209
									message = tcMessage.getMessage();
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   210
//									printMessage(message);
1009
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   211
									boolean isSysTrk = false;
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   212
									if (message.length >= REQUIRED_MSG_LEN) {
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   213
										byte[] trkStr = new byte[SYS_TRK_RESPONSE_STR.length];
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   214
										System.arraycopy(message, SYS_TRK_RESPONSE_STR_OFFSET, trkStr, 0, trkStr.length);
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   215
//										printMessage(trkStr);
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   216
//										printMessage(SYS_TRK_RESPONSE_STR);
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   217
										isSysTrk = Arrays.equals(trkStr, SYS_TRK_RESPONSE_STR);
64772cb3290b fix bug recognizing sys trk for version 3.2.5+
dadubrow
parents: 894
diff changeset
   218
									}
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   219
									getProperties().put(PROP_SYS_TRK, Boolean.valueOf(isSysTrk).toString());
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   220
								}
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   221
							}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   222
						}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   223
						else
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   224
							throw new ConnectionFailException(Messages.getString("TRKConnectedService.BadVersionResponseError")); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   225
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   226
					else
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   227
						throw new ConnectionFailException(Messages.getString("TRKConnectedService.NoPingErrorNoVersionError")); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   228
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   229
				else
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   230
					throw new ConnectionFailException(sendStatus.getMessage());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   231
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   232
			catch (IOException e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   233
				throw new ConnectionFailException(e.getMessage());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   234
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   235
			finally {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   236
				api.disconnect();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   237
//				System.out.println("leaving getTRKVersionUsingTCF");
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   238
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   239
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   240
		else
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   241
			throw new ConnectionFailException(connStatus.getMessage());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   242
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   243
		return version;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   244
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   245
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   246
//	private void printMessage(byte[] message) {
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   247
//		for (int i = 0; i < message.length; i++) {
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   248
//			String hexString = Integer.toHexString(message[i]);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   249
//			if (hexString.length() == 1)
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   250
//				hexString = "0" + hexString;
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   251
//			else if (hexString.length() > 2)
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   252
//				hexString = hexString.substring(hexString.length() - 2);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   253
//			System.out.print(hexString);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   254
//			if (i + 1 < message.length)
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   255
//				System.out.print('-');
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   256
//		}
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   257
//		System.out.println();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   258
//	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   259
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   260
	private void waitForSingleTCMessage(ITCMessageInputStream stream) throws IOException {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   261
		int timeout = TIMEOUT;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   262
		while (stream.peekMessages() == 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   263
			try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   264
				Thread.sleep(200);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   265
				timeout -= 200;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   266
				if (timeout <= 0)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   267
					break;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   268
			} catch (InterruptedException e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   269
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   270
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   271
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   272
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   273
	private int getIndexValue(String key) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   274
		String val = connection.getSettings().get(key);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   275
		return SerialConnectionSettings.toIndex(key, val);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   276
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   277
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   278
	private Version getLatestVersionFromServer() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   279
		if (deviceOS != null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   280
			List<IRemoteAgentInstaller> installers = 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   281
				trkService.getInstallerProvider().getRemoteAgentInstallers(deviceOS.first, deviceOS.second);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   282
			if (installers != null && !installers.isEmpty()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   283
				// use the first one
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   284
				return installers.get(0).getInstallerVersion();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   285
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   286
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   287
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   288
		return null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   289
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   290
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   291
	private String getShortDescription(EStatus estatus) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   292
		switch (estatus) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   293
		case UP:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   294
			return Messages.getString("TRKConnectedService.RunningLabel"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   295
		case DOWN:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   296
			return Messages.getString("TRKConnectedService.DownLabel"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   297
		case IN_USE:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   298
			return Messages.getString("TRKConnectedService.InUseLabel"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   299
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   300
		return Messages.getString("TRKConnectedService.UnknownLabel"); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   301
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   302
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   303
	protected TestResult runTestStatus(IProgressMonitor monitor) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   304
		String message = null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   305
		EStatus estatus = EStatus.DOWN;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   306
		monitor.beginTask(Messages.getString("TRKConnectedService.TaskLabel"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   307
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   308
		synchronized (connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   309
			boolean didTest = false;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   310
			try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   311
				if (connection.isInUse()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   312
					estatus = EStatus.IN_USE;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   313
					IConnectionType connectionType = connection.getConnectionType();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   314
					if (connectionType instanceof SerialConnectionType ||
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   315
							connectionType instanceof USBConnectionType)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   316
						message = MessageFormat.format(PORT_IN_USE, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   317
								connection.getSettings().get(SerialConnectionSettings.PORT));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   318
					else if (connectionType instanceof TCPIPConnectionType)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   319
						message = MessageFormat.format(TCPIP_IN_USE, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   320
								connection.getSettings().get(TCPIPConnectionFactory.IP_ADDRESS),
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   321
								connection.getSettings().get(TCPIPConnectionFactory.IP_PORT));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   322
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   323
				else {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   324
					didTest = true;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   325
					connection.setServiceTestingAndInUse(true);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   326
					Version deviceVersion = getTRKVersionFromDevice();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   327
					if (deviceVersion != null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   328
						estatus = EStatus.UP;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   329
						Version serverVersion = getLatestVersionFromServer();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   330
						if (serverVersion == null) {
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   331
							StringBuilder trkVersionString = new StringBuilder();
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   332
							String sysTrkProp = getProperties().get(PROP_SYS_TRK);
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   333
							if (sysTrkProp != null)
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   334
								trkVersionString.append(Boolean.parseBoolean(sysTrkProp) ? 
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   335
										Messages.getString("TRKConnectedService.SysTRKName") : //$NON-NLS-1$
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   336
											Messages.getString("TRKConnectedService.AppTRKName")); //$NON-NLS-1$
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   337
							trkVersionString.append(deviceVersion.toString());
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   338
							message = MessageFormat.format(OK_STATUS, trkVersionString);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   339
						}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   340
						else if (deviceVersion.compareTo(serverVersion) >= 0) {
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   341
							message = MessageFormat.format(IS_LASTEST, deviceVersion.toString());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   342
						}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   343
						else {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   344
							message = MessageFormat.format(NEEDS_INSTALL,
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   345
											deviceVersion, serverVersion);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   346
						}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   347
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   348
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   349
			} 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   350
			catch (Exception e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   351
				message = ERROR + e.getMessage();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   352
				estatus = EStatus.DOWN;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   353
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   354
			finally {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   355
				if (didTest)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   356
					connection.setServiceTestingAndInUse(false);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   357
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   358
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   359
		monitor.done();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   360
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   361
		return new TestResult(estatus, getShortDescription(estatus), message);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   362
	}
752
a0609ea7401a add sys trk checking for usb only and use with reconciler
dadubrow
parents: 748
diff changeset
   363
	
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   364
	public void setDeviceOS(String familyName, Version version) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   365
		deviceOS = new Pair<String, Version>(familyName, version);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   366
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   367
}