connectivity/com.nokia.carbide.remoteConnections.discovery.pccs/src/com/nokia/carbide/remoteconnections/discovery/pccs/pccsnative/PCCSConnection.java
author Chad Peckham <chad.peckham@nokia.com>
Tue, 02 Feb 2010 07:38:35 -0600
changeset 873 0b6536bf05fd
parent 870 cdb6d745cb05
child 942 2ed87b202d5c
permissions -rw-r--r--
fix build
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     1
/*
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     3
* All rights reserved.
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     4
* This component and the accompanying materials are made available
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     6
* which accompanies this distribution, and is available
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     8
*
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
     9
* Initial Contributors:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    11
*
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    12
* Contributors:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    13
*
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    14
* Description: 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    15
*
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    16
*/
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    17
package com.nokia.carbide.remoteconnections.discovery.pccs.pccsnative;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    18
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
    19
import java.nio.IntBuffer;
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    20
import java.util.Collection;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    21
import java.util.Iterator;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    22
import java.util.LinkedList;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    23
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    24
import org.eclipse.cdt.utils.WindowsRegistry;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    25
import org.eclipse.core.runtime.CoreException;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    26
import org.eclipse.core.runtime.IStatus;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    27
import org.eclipse.core.runtime.Status;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    28
import org.eclipse.swt.widgets.Display;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    29
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    30
import com.nokia.carbide.remoteconnections.discovery.pccs.Activator;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    31
import com.nokia.carbide.remoteconnections.discovery.pccs.Messages;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    32
import com.nokia.carbide.remoteconnections.discovery.pccs.pccsnative.IConnAPILibrary.IConnAPIDeviceCallback;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    33
import com.sun.jna.ptr.IntByReference;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    34
import com.sun.jna.ptr.ShortByReference;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    35
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    36
public class PCCSConnection {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    37
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    38
	private boolean DEBUG = false;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    39
	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    40
	/**
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    41
	 * @author chpeckha
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    42
	 *
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    43
	 */
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    44
	public class DeviceNotificationCallback implements IConnAPIDeviceCallback {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    45
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    46
		/* (non-Javadoc)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    47
		 * @see com.nokia.carbide.remoteconnections.discovery.pccs.pccsnative.IConnAPILibrary.IConnAPIDeviceCallback#invoke(int, com.sun.jna.ptr.ShortByReference)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    48
		 */
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    49
		public int invoke(final int dwStatus, final ShortByReference pstrSerialNumber) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    50
			Display.getDefault().asyncExec(
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    51
				new Runnable ()	{
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    52
					public void run() {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    53
						// check for NULL, since I am seeing bogus events coming from PCCS before the real one
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    54
						//  and the serial number is not filled in. If the serial number is null,
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    55
						//  everything else will be null (according to the PCCS docs)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    56
						//  TODO: bug in PCCS API: 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    57
						if (DEBUG) System.out.printf("DeviceNotificationCallback %x %s\n", dwStatus, (pstrSerialNumber == null ? "serNum: null" : pstrSerialNumber.getPointer().getString(0, true))); //$NON-NLS-1$ //$NON-NLS-2$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    58
						String serialNumber = "unknown device"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    59
						if (pstrSerialNumber != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    60
							serialNumber = pstrSerialNumber.getPointer().getString(0, true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    61
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    62
						if (DEBUG) System.out.printf("DeviceNotificationCallback %x %s\n", dwStatus, serialNumber); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    63
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    64
						DeviceEventListener.DeviceEvent eventType = DeviceEventListener.DeviceEvent.DEVICE_LIST_UPDATED;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    65
						// decode dwStatus per PCCS docs
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    66
						switch(DMAPIDefinitions.GET_CONAPI_CB_STATUS(dwStatus)) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    67
						case DMAPIDefinitions.CONAPI_DEVICE_LIST_UPDATED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    68
							eventType = DeviceEventListener.DeviceEvent.DEVICE_LIST_UPDATED;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    69
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    70
						case DMAPIDefinitions.CONAPI_DEVICE_ADDED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    71
							eventType = DeviceEventListener.DeviceEvent.DEVICE_ADDED;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    72
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    73
						case DMAPIDefinitions.CONAPI_DEVICE_REMOVED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    74
							eventType = DeviceEventListener.DeviceEvent.DEVICE_REMOVED;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    75
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    76
						case DMAPIDefinitions.CONAPI_DEVICE_UPDATED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    77
							switch(DMAPIDefinitions.GET_CONAPI_CB_INFO(dwStatus)) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    78
							case DMAPIDefinitions.CONAPI_CONNECTION_ADDED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    79
								eventType = DeviceEventListener.DeviceEvent.DEVICE_UPDATED_ADDEDCONNECTION;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    80
								break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    81
							case DMAPIDefinitions.CONAPI_CONNECTION_REMOVED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    82
								eventType = DeviceEventListener.DeviceEvent.DEVICE_UPDATED_REMOVEDCONNECTION;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    83
								break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    84
							case DMAPIDefinitions.CONAPI_DEVICE_RENAMED:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    85
								eventType = DeviceEventListener.DeviceEvent.DEVICE_UPDATED_RENAMED;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    86
								break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    87
							}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    88
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    89
						// fire events
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    90
						Iterator<DeviceEventListener> iter = listeners.iterator();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    91
						while (iter.hasNext()) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    92
							iter.next().onDeviceEvent(eventType, serialNumber);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    93
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    94
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    95
				}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    96
			);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    97
			return PCCSErrors.CONA_OK;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    98
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
    99
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   100
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   101
	private static final Collection<DeviceEventListener> listeners = new LinkedList<DeviceEventListener>();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   102
	private IConnAPILibrary library;
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   103
	private LPAPIHANDLE dmHandle = new LPAPIHANDLE();
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   104
	private DeviceNotificationCallback pfnCallback = new DeviceNotificationCallback();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   105
	public static final int PCCS_NOT_FOUND = 1;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   106
	public static final int PCCS_WRONG_VERSION = 2;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   107
	
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   108
	private LPAPIHANDLE mcHandle = new LPAPIHANDLE();
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   109
	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   110
	/**
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   111
	 * 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   112
	 */
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   113
	public PCCSConnection() {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   114
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   115
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   116
	public void open() throws CoreException {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   117
		if (library == null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   118
			library = ConnAPILibrary.getInstance();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   119
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   120
		loadDMAPI();
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   121
		loadMCAPI(); //TODO: not tested yet
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   122
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   123
	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   124
	/**
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   125
	 * Initializes the Device Management API (DMAPI) for use.
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   126
	 * 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   127
	 * @throws CoreException
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   128
	 */
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   129
	private void loadDMAPI() throws CoreException {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   130
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   131
		int dwResult = library.DMAPI_Initialize(DMAPIDefinitions.DMAPI_VERSION_34, null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   132
    	if (dwResult != PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   133
    		library.DMAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   134
    		String msg;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   135
    		if (Activator.isSymSEELayout()) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   136
        		msg = String.format("PCCS DMAPI_Initialize API returned error on initialization %x", dwResult); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   137
        		if (dwResult == PCCSErrors.ECONA_UNSUPPORTED_API_VERSION) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   138
        			msg = Messages.PCCSConnection_PCCS_Version_Error + Activator.getLoadErrorURL();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   139
        		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   140
    		} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   141
    			msg = Messages.PCCSConnection_PCSuite_Version_Error + Activator.getLoadErrorURL();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   142
    		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   143
    		throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, PCCS_WRONG_VERSION, msg, null));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   144
    	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   145
    	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   146
    	// initialize common API
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   147
//    	dwResult = library.CFAPI_Initialize(DMAPIDefinitions.CFAPI_VERSION_10, null); unnecessary
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   148
//    	if (dwResult != PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   149
//    		library.DMAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   150
//    		String msg = String.format("PCCS CFAPI_Initialize API returned error on initialization %x", dwResult);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   151
//    		throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, dwResult, msg, null));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   152
//    	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   153
    	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   154
    	// open a DM handle
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   155
    	dmHandle.setValue(APIHANDLE.INVALID_HANDLE_VALUE);
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   156
    	dwResult = library.CONAOpenDM(dmHandle);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   157
    	if (dwResult != PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   158
    		library.DMAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   159
    		String msg = String.format(Messages.PCCSConnection_PCCS_CONAOpenDM_Error, dwResult);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   160
    		if (dwResult == PCCSErrors.ECONA_NOT_ENOUGH_MEMORY) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   161
    			msg = Messages.PCCSConnection_PCCS_Not_Enough_Memory_Error;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   162
    		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   163
    		throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, dwResult, msg, null));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   164
    	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   165
    	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   166
    	// register a call back
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   167
    	dwResult = library.CONARegisterNotifyCallback(dmHandle.getValue(), PCCSTypeDefinitions.API_REGISTER, pfnCallback);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   168
    	if (dwResult != PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   169
//    		System.out.printf("CONAOpenDM returned: %x\n", dwResult);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   170
    		library.DMAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   171
    		library.CONACloseDM(dmHandle.getValue());
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   172
        	dmHandle.setValue(APIHANDLE.INVALID_HANDLE_VALUE);
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   173
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   174
        	String msg = String.format(Messages.PCCSConnection_PCCS_CONARegisterNotifyCallback_Error, dwResult);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   175
    		if (dwResult == PCCSErrors.ECONA_INVALID_POINTER) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   176
    			msg = Messages.PCCSConnection_PCCS_CONARegisterNotifyCallback_Pointer_Error;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   177
    		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   178
    		throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, dwResult, msg, null));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   179
    	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   180
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   181
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   182
	private void loadMCAPI() throws CoreException {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   183
		int dwResult = PCCSErrors.CONA_OK;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   184
		dwResult = library.MCAPI_Initialize(MCAPIDefinitions.MCAPI_VERSION_32, null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   185
    	if (dwResult != PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   186
    		library.MCAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   187
    		String msg;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   188
    		if (Activator.isSymSEELayout()) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   189
        		msg = String.format("PCCS MCAPI_Initialize API returned error on initialization %x", dwResult); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   190
        		if (dwResult == PCCSErrors.ECONA_UNSUPPORTED_API_VERSION) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   191
        			msg = Messages.PCCSConnection_PCCS_Version_Error + Activator.getLoadErrorURL();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   192
        		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   193
    		} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   194
    			msg = Messages.PCCSConnection_PCSuite_Version_Error + Activator.getLoadErrorURL();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   195
    		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   196
    		throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, PCCS_WRONG_VERSION, msg, null));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   197
    	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   198
    	dwResult = library.CONAOpenMM(mcHandle, 0);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   199
   
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   200
    	if (dwResult != PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   201
    		library.MCAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   202
    		String msg = String.format("PCCS CONAOpenMM API returned error on initialization %x", dwResult);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   203
    		if (dwResult == PCCSErrors.ECONA_NOT_ENOUGH_MEMORY) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   204
    			msg = Messages.PCCSConnection_PCCS_Not_Enough_Memory_Error;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   205
    		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   206
    		throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, dwResult, msg, null));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   207
    	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   208
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   209
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   210
	public void close() throws CoreException {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   211
		if (library == null)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   212
			return;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   213
		
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   214
		closeMCAPI(); //TODO: not tested yet
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   215
		closeDMAPI();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   216
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   217
	
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   218
	/**
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   219
	 * Closes the DMAPI.
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   220
	 * @throws CoreException
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   221
	 */
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   222
	private void closeDMAPI() throws CoreException {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   223
		int dwResult = PCCSErrors.CONA_OK;
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   224
		if (dmHandle.getValue() != APIHANDLE.INVALID_HANDLE_VALUE) {
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   225
			// unregister callback
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   226
			dwResult = library.CONARegisterNotifyCallback(dmHandle.getValue(), PCCSTypeDefinitions.API_UNREGISTER, pfnCallback);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   227
			// close DM connection
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   228
			dwResult = library.CONACloseDM(dmHandle.getValue());
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   229
        	dmHandle.setValue(APIHANDLE.INVALID_HANDLE_VALUE);
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   230
        	// Terminate Common Functions API
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   231
//        	dwResult = library.CFAPI_Terminate(null); unnecessary
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   232
        	// Terminate Device management API
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   233
        	dwResult = library.DMAPI_Terminate(null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   234
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   235
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   236
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   237
	private void closeMCAPI() {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   238
		int dwResult = PCCSErrors.CONA_OK;
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   239
		if (mcHandle.getValue() != APIHANDLE.INVALID_HANDLE_VALUE) {
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   240
			// close DM connection
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   241
			dwResult = library.CONACloseDM(mcHandle.getValue());
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   242
			mcHandle.setValue(APIHANDLE.INVALID_HANDLE_VALUE);
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   243
        	// Terminate Device management API
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   244
    		dwResult = library.MCAPI_Terminate(null);
873
0b6536bf05fd fix build
Chad Peckham <chad.peckham@nokia.com>
parents: 870
diff changeset
   245
		}
870
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   246
	}
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   247
	
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   248
	public void getMediaList() {
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   249
		if (mcHandle.getValue() != APIHANDLE.INVALID_HANDLE_VALUE) {
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   250
			IntBuffer pdwCount = IntBuffer.allocate(1);
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   251
			CONAPI_MEDIA pMedia = new CONAPI_MEDIA();
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   252
			
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   253
			CONAPI_MEDIA.ByReference[] ppMedia = null;
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   254
			
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   255
			int dwResult = library.CONAMMGetMedia(mcHandle.getValue(), pdwCount, ppMedia);
cdb6d745cb05 Made HANDLEs more generic. They all are derived from one type in APIs. Added opening/closing of UPAPI.
Chad Peckham <chad.peckham@nokia.com>
parents: 868
diff changeset
   256
			System.out.printf("dwResult = %x\tpdwCount = %d\n", dwResult, pdwCount.get());
868
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   257
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   258
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   259
	/**
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   260
	 * @return null if no device found.
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   261
	 * @throws CoreException
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   262
	 */
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   263
	public DeviceInfo[] getDeviceList() throws CoreException {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   264
		
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   265
		DeviceInfo[] deviceInfo = null;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   266
		
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   267
		int dwResult = PCCSErrors.CONA_OK;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   268
		IntByReference pdwCount = new IntByReference(0);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   269
		dwResult = library.CONAGetDeviceCount(dmHandle.getValue(), pdwCount);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   270
		if (DEBUG) System.out.printf("CONAGetDeviceCount: %x number of devices: %d\n", dwResult, pdwCount.getValue()); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   271
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   272
		int deviceCnt = pdwCount.getValue();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   273
		if (dwResult != PCCSErrors.CONA_OK || deviceCnt == 0)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   274
			return deviceInfo;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   275
		
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   276
		// array of structs in contiguous memory required !
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   277
		CONAPI_DEVICE[] pDevices = (CONAPI_DEVICE[])new CONAPI_DEVICE().toArray(deviceCnt);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   278
		dwResult = library.CONAGetDevices(dmHandle.getValue(), pdwCount, pDevices);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   279
		if (DEBUG) System.out.printf("CONAGetDevices: %x number of devices: %d\n", dwResult, deviceCnt); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   280
		
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   281
		if (dwResult == PCCSErrors.CONA_OK) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   282
			// extract to regular java types
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   283
			if (deviceCnt > 0) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   284
				deviceInfo = new DeviceInfo[deviceCnt];
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   285
				CONAPI_DEVICE[] devices = pDevices;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   286
				for (int i = 0; i < deviceCnt; i++) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   287
					deviceInfo[i] = new DeviceInfo();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   288
					if (devices[i].pstrSerialNumber != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   289
						deviceInfo[i].serialNumber = devices[i].pstrSerialNumber.getPointer().getString(0, true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   290
					} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   291
						// TODO: docs say if ser num == null --> device unsupported, but this is a bug in PCCS
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   292
						deviceInfo[i].serialNumber = "not known"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   293
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   294
					if (devices[i].pstrFriendlyName != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   295
						deviceInfo[i].friendlyName = devices[i].pstrFriendlyName.getPointer().getString(0, true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   296
					} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   297
						deviceInfo[i].friendlyName = "not known"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   298
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   299
					if (devices[i].pstrModel != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   300
						deviceInfo[i].model = devices[i].pstrModel.getPointer().getString(0, true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   301
					} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   302
						deviceInfo[i].model = "not known"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   303
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   304
					if (devices[i].pstrManufacturer != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   305
						deviceInfo[i].mfr = devices[i].pstrManufacturer.getPointer().getString(0, true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   306
					} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   307
						deviceInfo[i].mfr = "not known"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   308
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   309
					int numItems = deviceInfo[i].numberOfConnections = devices[i].dwNumberOfItems;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   310
					
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   311
					CONAPI_CONNECTION_INFO[] conn = null;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   312
					if (numItems > 0)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   313
						 conn = (CONAPI_CONNECTION_INFO[])devices[i].pItems.toArray(numItems);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   314
					for (int j = 0; j < numItems; j++) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   315
						DeviceConnectionInfo connInfo = new DeviceConnectionInfo();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   316
						connInfo.deviceID = conn[j].dwDeviceID;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   317
						switch(conn[j].dwMedia){
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   318
						case PCCSTypeDefinitions.API_MEDIA_BLUETOOTH:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   319
							connInfo.media = "bluetooth"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   320
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   321
						case PCCSTypeDefinitions.API_MEDIA_IRDA:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   322
							connInfo.media = "irda"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   323
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   324
						case PCCSTypeDefinitions.API_MEDIA_SERIAL:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   325
							connInfo.media = "serial-ca42"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   326
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   327
						default:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   328
						case PCCSTypeDefinitions.API_MEDIA_USB:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   329
							connInfo.media = "usb"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   330
							break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   331
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   332
						if (conn[j].pstrDeviceName != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   333
							connInfo.deviceName = conn[j].pstrDeviceName.getPointer().getString(0,true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   334
							if (deviceInfo[i].friendlyName.equals("not known")) { //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   335
								// use device name as friendly name (latter was null)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   336
								deviceInfo[i].friendlyName = connInfo.deviceName;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   337
							}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   338
						} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   339
							connInfo.deviceName = "not known"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   340
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   341
						// Bomb if friendly name is not known or address is not known
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   342
						//   since these are essential to a connection
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   343
						if (conn[j].pstrAddress == null || deviceInfo[i].friendlyName.equals("not known")) //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   344
							continue;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   345
						
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   346
						connInfo.address = conn[j].pstrAddress.getPointer().getString(0, true);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   347
						connInfo.state = conn[j].dwState;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   348
						
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   349
						if (connInfo.media.equals("usb")) { //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   350
							if (isGoodUSBState(connInfo.state)){ 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   351
								connInfo.comPort = getUSBComPort(connInfo.address);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   352
							} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   353
								// don't store - not in good USB personality mode
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   354
								continue;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   355
							}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   356
						} else if (connInfo.media.equals("bluetooth")) { //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   357
							// TODO: implement BT
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   358
							connInfo.comPort = getBTComPort(connInfo.address);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   359
						} else {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   360
							// IRDA and Serial(CA42) probably will not come here anyway
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   361
							connInfo.comPort = null;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   362
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   363
						if (connInfo.comPort != null)
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   364
							deviceInfo[i].connections.add(connInfo);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   365
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   366
				}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   367
			}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   368
			dwResult = library.CONAFreeDeviceStructure(deviceCnt, pDevices);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   369
			if (DEBUG) System.out.printf("CONAFreeDeviceStructure: %x\n", dwResult); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   370
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   371
		return deviceInfo;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   372
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   373
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   374
	private boolean isGoodUSBState(int state) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   375
		// This test is necessary since we're seeing
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   376
		// on some devices PCSuite mode not set BUT PCSuite trusted flag is set
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   377
		// OR PCSuite mode on device is selected BUT only Paired flag is set
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   378
		// good if:
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   379
		// in PCSuite mode
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   380
		// OR is Paired
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   381
		// OR is PCSuite trusted
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   382
		// TODO: use UPAPI here instead
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   383
		if (DMAPIDefinitions.CONAPI_IS_IN_PCSUITE_MODE(state))
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   384
			return true;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   385
		else if (DMAPIDefinitions.CONAPI_IS_DEVICE_PAIRED(state))
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   386
			return true;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   387
		else if (DMAPIDefinitions.CONAPI_IS_PCSUITE_TRUSTED(state))
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   388
			return true;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   389
		return false;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   390
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   391
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   392
	private String getBTComPort(String address) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   393
		// TODO Auto-generated method stub
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   394
		return null;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   395
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   396
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   397
	public String getUSBComPort(String address) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   398
		if (address != null && address.length() > 0) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   399
			String id, key, subKey, parentIdPrefix = null, portName;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   400
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   401
			WindowsRegistry wr = WindowsRegistry.getRegistry();
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   402
			key = "SYSTEM\\ControlSet001\\Enum\\USB" + address.substring(address.indexOf('\\'), address.lastIndexOf('\\')); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   403
			id = address.substring(address.lastIndexOf('\\') + 1);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   404
			int i = 0;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   405
			do {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   406
				subKey = wr.getLocalMachineKeyName(key, i);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   407
				if (subKey != null && subKey.equalsIgnoreCase(id)) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   408
					key += "\\" + subKey; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   409
					parentIdPrefix = wr.getLocalMachineValue(key, "ParentIdPrefix"); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   410
					break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   411
				}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   412
				i++;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   413
			} while (subKey != null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   414
			if (parentIdPrefix != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   415
				key = "SYSTEM\\ControlSet001\\Enum\\NMWCD"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   416
				subKey = address.substring(address.indexOf('\\'), address.lastIndexOf('\\'));
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   417
				key += subKey + "&IF_JAVACOMM"; //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   418
				i = 0;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   419
				do {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   420
					subKey = wr.getLocalMachineKeyName(key, i);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   421
					if (subKey != null && subKey.contains(parentIdPrefix)) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   422
						key += "\\" + subKey + "\\Device Parameters"; //$NON-NLS-1$ //$NON-NLS-2$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   423
						portName = wr.getLocalMachineValue(key, "PortName"); //$NON-NLS-1$
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   424
						if (portName != null) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   425
							portName = portName.substring(portName.indexOf('M') + 1);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   426
							return portName;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   427
						}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   428
						break;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   429
					}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   430
					i++;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   431
				} while (subKey != null);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   432
			}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   433
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   434
		return null;
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   435
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   436
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   437
	public void addEventListenter(DeviceEventListener listener) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   438
		listeners.add(listener);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   439
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   440
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   441
	public void removeEventListener(DeviceEventListener listener) {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   442
		listeners.remove(listener);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   443
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   444
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   445
	public interface DeviceEventListener {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   446
		public enum DeviceEvent {
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   447
			DEVICE_LIST_UPDATED,		// not any specific information 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   448
			DEVICE_ADDED, 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   449
			DEVICE_REMOVED, 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   450
			DEVICE_UPDATED_ADDEDCONNECTION,
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   451
			DEVICE_UPDATED_REMOVEDCONNECTION,
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   452
			DEVICE_UPDATED_RENAMED, 
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   453
			DEVICE_UPDATED_UNKNOWN,
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   454
		}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   455
		public void onDeviceEvent(DeviceEvent eventType, String serialNumber);
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   456
	}
089762ea5b6d move com.nokia.carbide.remoteConnections.discovery.pccs to carbidecpp repository
cawthron
parents:
diff changeset
   457
}