All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.intel.bluetooth.Utils Maven / Gradle / Ivy

/**
 *  BlueCove - Java library for Bluetooth
 *  Copyright (C) 2006-2008 Vlad Skarzhevskyy
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  @version $Id: Utils.java 2365 2008-07-21 14:59:58Z skarzhevskyy $
 */
package com.intel.bluetooth;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Vector;

import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;

/**
 * Conversion and JVM compatibility functions.
 * 
 * 

* Your application should not use this class directly. * * @author vlads */ public abstract class Utils { private static final String blueCoveImplPackage = getPackage(MicroeditionConnector.class.getName()); private Utils() { } private static String getPackage(String className) { int pStart = className.lastIndexOf('.'); if (pStart == -1) { return ""; } else { return className.substring(0, pStart); } } public static byte[] UUIDToByteArray(String uuidStringValue) { byte[] uuidValue = new byte[16]; if (uuidStringValue.indexOf('-') != -1) { throw new NumberFormatException("The '-' character is not allowed in UUID: " + uuidStringValue); } for (int i = 0; i < 16; i++) { uuidValue[i] = (byte) Integer.parseInt(uuidStringValue.substring(i * 2, i * 2 + 2), 16); } return uuidValue; } static byte[] UUIDToByteArray(final UUID uuid) { return UUIDToByteArray(uuid.toString()); } public static String UUIDByteArrayToString(byte[] uuidValue) { StringBuffer buf = new StringBuffer(); for (int i = 0; i < uuidValue.length; i++) { buf.append(Integer.toHexString(uuidValue[i] >> 4 & 0xf)); buf.append(Integer.toHexString(uuidValue[i] & 0xf)); } return buf.toString(); } static long UUIDTo32Bit(UUID uuid) { if (uuid == null) { return -1; } String str = uuid.toString().toUpperCase(); int shortIdx = str.indexOf(BluetoothConsts.SHORT_UUID_BASE); if ((shortIdx != -1) && (shortIdx + BluetoothConsts.SHORT_UUID_BASE.length() == str.length())) { // This is short 16-bit or 32-bit UUID return Long.parseLong(str.substring(0, shortIdx), 16); } return -1; } static boolean is32Bit(UUID uuid) { return (UUIDTo32Bit(uuid) != -1); } public static int securityOpt(boolean authenticate, boolean encrypt) { int security = ServiceRecord.NOAUTHENTICATE_NOENCRYPT; if (authenticate) { if (encrypt) { security = ServiceRecord.AUTHENTICATE_ENCRYPT; } else { security = ServiceRecord.AUTHENTICATE_NOENCRYPT; } } else if (encrypt) { throw new IllegalArgumentException("Illegal encrypt configuration"); } return security; } static boolean isStringSet(String str) { return ((str != null) && (str.length() > 0)); } static String loadString(InputStream inputstream) { if (inputstream == null) { return null; } try { byte[] buf = new byte[256]; int len = inputstream.read(buf); return new String(buf, 0, len); } catch (IOException e) { return null; } finally { try { inputstream.close(); } catch (IOException ignore) { } } } static String getResourceProperty(Class owner, String resourceName) { try { String value = loadString(owner.getResourceAsStream("/" + resourceName)); if (value != null) { int cr = value.indexOf('\n'); if (cr != -1) { value = value.substring(0, cr - 1); } } return value; } catch (Throwable e) { return null; } } /** * Modifying the returned Object will not change the internal representation * of the object. * * @param value * @return a clone of the array */ public static byte[] clone(byte[] value) { if (value == null) { return null; } int length = ((byte[]) value).length; byte[] bClone = new byte[length]; System.arraycopy(value, 0, bClone, 0, length); return bClone; } public static Vector clone(Enumeration en) { Vector copy = new Vector(); while (en.hasMoreElements()) { copy.addElement(en.nextElement()); } return copy; } static String newStringUTF8(byte bytes[]) { try { return new String(bytes, "UTF-8"); } catch (IllegalArgumentException e) { return new String(bytes); } catch (UnsupportedEncodingException e) { return new String(bytes); } } static byte[] getUTF8Bytes(String str) { try { return str.getBytes("UTF-8"); } catch (IllegalArgumentException e) { return str.getBytes(); } catch (UnsupportedEncodingException e) { return str.getBytes(); } } static String newStringASCII(byte bytes[]) { try { return new String(bytes, "US-ASCII"); } catch (IllegalArgumentException e) { return new String(bytes); } catch (UnsupportedEncodingException e) { return new String(bytes); } } static byte[] getASCIIBytes(String str) { try { return str.getBytes("US-ASCII"); } catch (IllegalArgumentException e) { return str.getBytes(); } catch (UnsupportedEncodingException e) { return str.getBytes(); } } /** * J2ME/J9 compatibility instead of Vector.toArray * */ static Object[] vector2toArray(Vector vector, Object[] anArray) { vector.copyInto(anArray); return anArray; } /** * J2ME/J9 compatibility instead of Long.toHexString * */ public static String toHexString(long l) { StringBuffer buf = new StringBuffer(); String lo = Integer.toHexString((int) l); if (l > 0xffffffffl) { String hi = Integer.toHexString((int) (l >> 32)); buf.append(hi); for (int i = lo.length(); i < 8; i++) { buf.append('0'); } } buf.append(lo); return buf.toString(); } static void j2meUsagePatternDellay() { try { Thread.sleep(100); } catch (InterruptedException e) { } } static class TimerThread extends Thread { long delay; Runnable run; public TimerThread(long delay, Runnable run) { this.delay = delay; this.run = run; } public void run() { try { Thread.sleep(delay); run.run(); } catch (InterruptedException e) { } } } /** * Java 1.1 compatible. Schedules the specified task for execution after the * specified delay. * * @param delay * delay in milliseconds before task is to be executed. * @param run * task to be scheduled. */ static TimerThread schedule(final long delay, final Runnable run) { TimerThread t = new TimerThread(delay, run); UtilsJavaSE.threadSetDaemon(t); t.start(); return t; } public static void isLegalAPICall(Vector fqcnSet) throws Error { UtilsJavaSE.StackTraceLocation ste = UtilsJavaSE.getLocation(fqcnSet); if (ste != null) { if (ste.className.startsWith("javax.bluetooth.")) { return; } if (ste.className.startsWith(blueCoveImplPackage + ".")) { return; } throw new Error("Illegal use of the JSR-82 API"); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy