diff -r e8e63152f320 -r 2a9601315dfc javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp Mon May 03 12:27:20 2010 +0300 @@ -0,0 +1,384 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include "javajniutils.h" +#include "bluetoothconsts.h" +#include "bluetoothplatformcontrol.h" +#include "com_nokia_mj_impl_bluetooth_BTPlatformControl.h" +#include "logger.h" +#include "serviceclasshandler.h" +#include "exceptionbase.h" + +using namespace java::bluetooth; +using namespace java::util; + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: getBluetoothAddress + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1getBluetoothAddress +(JNIEnv *aJni, jclass) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + return NULL; + } + + std::wstring *devAddress = control->getBluetoothAddress(); + jstring result; + try + { + result = java::util::JniUtils::wstringToJstring(aJni, *devAddress); + } + catch (ExceptionBase ex) + { + result = NULL; + } + + + delete devAddress; + delete control; + + return result; +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: getBluetoothName + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1getBluetoothName +(JNIEnv *aJni, jclass) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + return NULL; + } + + std::wstring *devName = control->getBluetoothName(); + jstring result; + try + { + result = java::util::JniUtils::wstringToJstring(aJni, *devName); + } + catch (ExceptionBase ex) + { + result = NULL; + } + + + delete devName; + delete control; + + return result; +} + + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: getBluetoothDiscoverable + * Signature: ()I + */ +JNIEXPORT jint JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1getBluetoothDiscoverable +(JNIEnv* , jclass) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::getBluetoothDiscoverable Error in creating BluetoothPlatformControl"); + return NOT_DISCOVERABLE; + } + + int result = control->getVisibilityMode(); + + delete control; + + return result; +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: setBluetoothDiscoverable + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1setBluetoothDiscoverable +(JNIEnv* , jclass, jint aMode) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::setBluetoothDiscoverable Error in creating BluetoothPlatformControl"); + return false; + } + + int result = control->setDiscoverability(aMode); + + delete control; + + return (0==result); +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: isPowerOn + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1isPowerOn +(JNIEnv* , jclass) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::isPowerOn Error in creating BluetoothPlatformControl"); + return false; + } + int result = control->getPowerState(); + + delete control; + + return (BluetoothPlatformControl::BT_YES==result); +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: setPowerOn + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1setPowerOn +(JNIEnv* , jclass) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::setPowerOn Error in creating BluetoothPlatformControl"); + return false; + } + + // Returns 0 if successful. + int result = control->setPower(true); + + delete control; + + return (0 == result); +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: promptPowerOn + * Signature: (Ljava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1promptPowerOn +(JNIEnv *aJni, jclass, jstring appName, jboolean aIsStatic) +{ + JELOG2(EJavaBluetooth); + std::wstring name; + + try + { + name = java::util::JniUtils::jstringToWstring(aJni, appName); + } + catch (ExceptionBase ex) + { + name=L"Unknown Application"; + } + + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::promptPowerOn Error in creating BluetoothPlatformControl"); + return false; + } + + int result; + if (aIsStatic) + { + result = control->askPower(name, true); + } + else + { + result = control->askPower(name, false); + } + + delete control; + + return (BluetoothPlatformControl::BT_YES==result); +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: promptVisibilityChange + * Signature: (Ljava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1promptVisibilityChange +(JNIEnv *aJni, jclass, jstring appName,jboolean aIsStatic) +{ + JELOG2(EJavaBluetooth); + std::wstring name; + + try + { + name = java::util::JniUtils::jstringToWstring(aJni, appName); + } + catch (ExceptionBase ex) + { + name=L"Unknown Application"; + } + + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::promptVisibilityChange Error in creating BluetoothPlatformControl"); + return false; + } + + int result; + if (aIsStatic) + { + result = control->askDiscoverability(name, true); + } + else + { + result = control->askDiscoverability(name, false); + } + + delete control; + + return (BluetoothPlatformControl::BT_YES==result); +} + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: getProperty + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1getProperty +(JNIEnv *aJni, jclass, jint aPropertyId) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::getProperty Error in creating BluetoothPlatformControl"); + return NULL; + } + + jstring result; + + try + { + result = java::util::JniUtils::wstringToJstring(aJni, + control->getSystemProperty(aPropertyId)); + } + catch (ExceptionBase ex) + { + result = NULL; + } + + delete control; + return result; +} + + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: setServiceClasses + * Signature: (I)I + */ +JNIEXPORT jint JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1setServiceClasses +(JNIEnv* /*aJni*/, jclass, jint aServiceClassBits) +{ + JELOG2(EJavaBluetooth); + return ServiceClassHandler::setDeviceServiceClass(aServiceClassBits); +} + + +/* + * Class: com_nokia_mj_impl_bluetooth_BTPlatformControl + * Method: getBluetoothDeviceClass + * Signature: ()I + */ +JNIEXPORT jint JNICALL +Java_com_nokia_mj_impl_bluetooth_BTPlatformControl__1getBluetoothDeviceClass +(JNIEnv* , jclass) +{ + JELOG2(EJavaBluetooth); + BluetoothPlatformControl* control = + BluetoothPlatformControl::getBluetoothPlatformControl(); + if (!control) + { + ELOG(EJavaBluetooth, + " JNI::getBluetoothDeviceClass Error in creating BluetoothPlatformControl"); + return 0; + } + + int err = 0; + int ret = control->getBluetoothDeviceClass(err); + + delete control; + + if (err) + { + ELOG1(EJavaBluetooth, " JNI::getBluetoothDeviceClass Error:%d", err); + return 0; + } + return ret; +}