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;
+}