diff --git a/app/app.iml b/app/app.iml
index 8b30910ab..87f544ece 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -12,10 +12,12 @@
-
-
+
+ generateDebugAndroidTestSources
+ generateDebugSources
+
@@ -24,7 +26,7 @@
-
+
@@ -34,13 +36,13 @@
-
+
-
+
@@ -70,7 +72,7 @@
-
+
@@ -89,7 +91,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 3abb9f5f0..6c4ba7ebb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,8 +7,8 @@ android {
applicationId "no.nordicsemi.android.nrftoolbox"
minSdkVersion 18
targetSdkVersion 22
- versionCode 35
- versionName "1.14.2"
+ versionCode 36
+ versionName "1.14.3"
}
buildTypes {
release {
@@ -21,7 +21,7 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
- compile 'com.android.support:design:22.2.0'
+ compile 'com.android.support:design:22.2.1'
compile project(':dfu')
compile files('libs/achartengine-1.1.0.jar')
compile files('libs/nrf-logger-v2.0.jar')
diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java
index 566a0debb..f0aeae0e3 100644
--- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java
+++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java
@@ -340,6 +340,7 @@ protected final boolean enableNotifications(final BluetoothGattCharacteristic ch
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == 0)
return false;
+ Logger.d(mLogSession, "gatt.setCharacteristicNotification(" + characteristic.getUuid() + ", true)");
gatt.setCharacteristicNotification(characteristic, true);
final BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID);
if (descriptor != null) {
@@ -366,6 +367,7 @@ protected final boolean enableIndications(final BluetoothGattCharacteristic char
if ((properties & BluetoothGattCharacteristic.PROPERTY_INDICATE) == 0)
return false;
+ Logger.d(mLogSession, "gatt.setCharacteristicNotification(" + characteristic.getUuid() + ", true)");
gatt.setCharacteristicNotification(characteristic, true);
final BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID);
if (descriptor != null) {
@@ -414,7 +416,7 @@ protected final boolean writeCharacteristic(final BluetoothGattCharacteristic ch
if ((properties & (BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE)) == 0)
return false;
- Logger.v(mLogSession, "Writing characteristic " + characteristic.getUuid());
+ Logger.v(mLogSession, "Writing characteristic " + characteristic.getUuid() + " (" + getWriteType(characteristic.getWriteType()) + ")");
Logger.d(mLogSession, "gatt.writeCharacteristic(" + characteristic.getUuid() + ")");
return gatt.writeCharacteristic(characteristic);
}
@@ -921,4 +923,17 @@ private String bondStateToString(final int state) {
return "UNKNOWN";
}
}
+
+ private String getWriteType(final int type) {
+ switch (type) {
+ case BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT:
+ return "WRITE REQUEST";
+ case BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE:
+ return "WRITE COMMAND";
+ case BluetoothGattCharacteristic.WRITE_TYPE_SIGNED:
+ return "WRITE SIGNED";
+ default:
+ return "UNKNOWN: " + type;
+ }
+ }
}
diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java
index 65b9c25ff..1f72f65cb 100644
--- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java
+++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java
@@ -26,7 +26,9 @@
import android.bluetooth.BluetoothGattCharacteristic;
import android.bluetooth.BluetoothGattService;
import android.content.Context;
+import android.text.TextUtils;
+import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.UUID;
@@ -36,12 +38,16 @@
public class UARTManager extends BleManager {
/** Nordic UART Service UUID */
private final static UUID UART_SERVICE_UUID = UUID.fromString("6E400001-B5A3-F393-E0A9-E50E24DCCA9E");
- /** TX characteristic UUID */
- private final static UUID UART_TX_CHARACTERISTIC_UUID = UUID.fromString("6E400002-B5A3-F393-E0A9-E50E24DCCA9E");
/** RX characteristic UUID */
- private final static UUID UART_RX_CHARACTERISTIC_UUID = UUID.fromString("6E400003-B5A3-F393-E0A9-E50E24DCCA9E");
+ private final static UUID UART_RX_CHARACTERISTIC_UUID = UUID.fromString("6E400002-B5A3-F393-E0A9-E50E24DCCA9E");
+ /** TX characteristic UUID */
+ private final static UUID UART_TX_CHARACTERISTIC_UUID = UUID.fromString("6E400003-B5A3-F393-E0A9-E50E24DCCA9E");
+ /** The maximum packet size is 20 bytes. */
+ private static final int MAX_PACKET_SIZE = 20;
- private BluetoothGattCharacteristic mTXCharacteristic, mRXCharacteristic;
+ private BluetoothGattCharacteristic mRXCharacteristic, mTXCharacteristic;
+ private byte[] mOutgoingBuffer;
+ private int mBufferOffset;
public UARTManager(final Context context) {
super(context);
@@ -60,7 +66,7 @@ protected BleManagerGattCallback getGattCallback() {
@Override
protected Queue initGatt(final BluetoothGatt gatt) {
final LinkedList requests = new LinkedList<>();
- requests.push(Request.newEnableNotificationsRequest(mRXCharacteristic));
+ requests.push(Request.newEnableNotificationsRequest(mTXCharacteristic));
return requests;
}
@@ -68,22 +74,51 @@ protected Queue initGatt(final BluetoothGatt gatt) {
public boolean isRequiredServiceSupported(final BluetoothGatt gatt) {
final BluetoothGattService service = gatt.getService(UART_SERVICE_UUID);
if (service != null) {
- mTXCharacteristic = service.getCharacteristic(UART_TX_CHARACTERISTIC_UUID);
mRXCharacteristic = service.getCharacteristic(UART_RX_CHARACTERISTIC_UUID);
+ mTXCharacteristic = service.getCharacteristic(UART_TX_CHARACTERISTIC_UUID);
+ }
+
+ boolean writeRequest = false;
+ boolean writeCommand = false;
+ if (mRXCharacteristic != null) {
+ final int rxProperties = mRXCharacteristic.getProperties();
+ writeRequest = (rxProperties & BluetoothGattCharacteristic.PROPERTY_WRITE) > 0;
+ writeCommand = (rxProperties & BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) > 0;
+
+ // Set the WRITE REQUEST type when the characteristic supports it. This will allow to send long write (also if the characteristic support it).
+ // In case there is no WRITE REQUEST property, this manager will divide texts longer then 20 bytes into up to 20 bytes chunks.
+ if (writeRequest)
+ mRXCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
}
- return mTXCharacteristic != null && mRXCharacteristic != null;
+
+ return mRXCharacteristic != null && mTXCharacteristic != null && (writeRequest || writeCommand);
}
@Override
protected void onDeviceDisconnected() {
- mTXCharacteristic = null;
mRXCharacteristic = null;
+ mTXCharacteristic = null;
}
@Override
public void onCharacteristicWrite(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic) {
- final String data = characteristic.getStringValue(0);
- mCallbacks.onDataSent(data);
+ // When the whole buffer has been sent
+ final byte[] buffer = mOutgoingBuffer;
+ if (mBufferOffset == buffer.length) {
+ try {
+ mCallbacks.onDataSent(new String(buffer, "UTF-8"));
+ } catch (final UnsupportedEncodingException e) {
+ // do nothing
+ }
+ mOutgoingBuffer = null;
+ } else { // Otherwise...
+ final int length = Math.min(buffer.length - mBufferOffset, MAX_PACKET_SIZE);
+ final byte[] data = new byte[length]; // We send at most 20 bytes
+ System.arraycopy(buffer, mBufferOffset, data, 0, length);
+ mBufferOffset += length;
+ mRXCharacteristic.setValue(data);
+ writeCharacteristic(mRXCharacteristic);
+ }
}
@Override
@@ -100,13 +135,30 @@ protected boolean shouldAutoConnect() {
}
/**
- * Sends the given text to TH characteristic.
+ * Sends the given text to RX characteristic.
* @param text the text to be sent
*/
public void send(final String text) {
- if (mTXCharacteristic != null) {
- mTXCharacteristic.setValue(text);
- writeCharacteristic(mTXCharacteristic);
+ // An outgoing buffer may not be null if there is already another packet being sent. We do nothing in this case.
+ if (!TextUtils.isEmpty(text) && mOutgoingBuffer == null) {
+ final byte[] buffer = mOutgoingBuffer = text.getBytes();
+ mBufferOffset = 0;
+
+ // Depending on whether the characteristic has the WRITE REQUEST property or not, we will either send it as it is (hoping the long write is implemented),
+ // or divide it into up to 20 bytes chunks and send them one by one.
+ final boolean writeRequest = (mRXCharacteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_WRITE) > 0;
+
+ if (!writeRequest) { // no WRITE REQUEST property
+ final int length = Math.min(buffer.length, MAX_PACKET_SIZE);
+ final byte[] data = new byte[length]; // We send at most 20 bytes
+ System.arraycopy(buffer, 0, data, 0, length);
+ mBufferOffset += length;
+ mRXCharacteristic.setValue(data);
+ } else { // there is WRITE REQUEST property
+ mRXCharacteristic.setValue(buffer);
+ mBufferOffset = buffer.length;
+ }
+ writeCharacteristic(mRXCharacteristic);
}
}
}
diff --git a/app/src/main/res/drawable/background.xml b/app/src/main/res/drawable/background.xml
deleted file mode 100644
index bb025afee..000000000
--- a/app/src/main/res/drawable/background.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
- -
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_feature_bpm.xml b/app/src/main/res/layout-land/activity_feature_bpm.xml
index 12e5413e4..f6cefee97 100644
--- a/app/src/main/res/layout-land/activity_feature_bpm.xml
+++ b/app/src/main/res/layout-land/activity_feature_bpm.xml
@@ -293,5 +293,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
diff --git a/app/src/main/res/layout-land/activity_feature_csc.xml b/app/src/main/res/layout-land/activity_feature_csc.xml
index ebca3ded6..62b33c0c8 100644
--- a/app/src/main/res/layout-land/activity_feature_csc.xml
+++ b/app/src/main/res/layout-land/activity_feature_csc.xml
@@ -290,5 +290,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_feature_dfu.xml b/app/src/main/res/layout-land/activity_feature_dfu.xml
index 0bae49de2..4ba202526 100644
--- a/app/src/main/res/layout-land/activity_feature_dfu.xml
+++ b/app/src/main/res/layout-land/activity_feature_dfu.xml
@@ -260,5 +260,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_select" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_feature_gls.xml b/app/src/main/res/layout-land/activity_feature_gls.xml
index 8ebf5124c..d87b2c402 100644
--- a/app/src/main/res/layout-land/activity_feature_gls.xml
+++ b/app/src/main/res/layout-land/activity_feature_gls.xml
@@ -214,5 +214,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_feature_hrs.xml b/app/src/main/res/layout-land/activity_feature_hrs.xml
index f957104d8..a679e2a11 100644
--- a/app/src/main/res/layout-land/activity_feature_hrs.xml
+++ b/app/src/main/res/layout-land/activity_feature_hrs.xml
@@ -148,5 +148,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
diff --git a/app/src/main/res/layout-land/activity_feature_hts.xml b/app/src/main/res/layout-land/activity_feature_hts.xml
index 77382b0de..71a5942dc 100644
--- a/app/src/main/res/layout-land/activity_feature_hts.xml
+++ b/app/src/main/res/layout-land/activity_feature_hts.xml
@@ -107,6 +107,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_feature_proximity.xml b/app/src/main/res/layout-land/activity_feature_proximity.xml
index 402779933..ce1e6ef0b 100644
--- a/app/src/main/res/layout-land/activity_feature_proximity.xml
+++ b/app/src/main/res/layout-land/activity_feature_proximity.xml
@@ -121,5 +121,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_feature_rsc.xml b/app/src/main/res/layout-land/activity_feature_rsc.xml
index 4ad44d492..3af7e01e4 100644
--- a/app/src/main/res/layout-land/activity_feature_rsc.xml
+++ b/app/src/main/res/layout-land/activity_feature_rsc.xml
@@ -320,5 +320,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/fragment_feature_uart_control.xml b/app/src/main/res/layout-land/fragment_feature_uart_control.xml
index 73f6dc6fb..df639f85e 100644
--- a/app/src/main/res/layout-land/fragment_feature_uart_control.xml
+++ b/app/src/main/res/layout-land/fragment_feature_uart_control.xml
@@ -23,6 +23,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@drawable/background_image"
android:orientation="vertical" >
@@ -91,4 +92,12 @@
android:layout_height="@dimen/activity_vertical_margin_bottom"
android:layout_alignParentBottom="true" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp-land/activity_feature_bpm.xml b/app/src/main/res/layout-sw600dp-land/activity_feature_bpm.xml
index 68c1a7f62..3aa8760c8 100644
--- a/app/src/main/res/layout-sw600dp-land/activity_feature_bpm.xml
+++ b/app/src/main/res/layout-sw600dp-land/activity_feature_bpm.xml
@@ -294,5 +294,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
diff --git a/app/src/main/res/layout-sw600dp-land/activity_feature_csc.xml b/app/src/main/res/layout-sw600dp-land/activity_feature_csc.xml
index 25c950551..a85b5ac52 100644
--- a/app/src/main/res/layout-sw600dp-land/activity_feature_csc.xml
+++ b/app/src/main/res/layout-sw600dp-land/activity_feature_csc.xml
@@ -252,5 +252,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp-land/activity_feature_dfu.xml b/app/src/main/res/layout-sw600dp-land/activity_feature_dfu.xml
index 8ef3063a0..25e184480 100644
--- a/app/src/main/res/layout-sw600dp-land/activity_feature_dfu.xml
+++ b/app/src/main/res/layout-sw600dp-land/activity_feature_dfu.xml
@@ -253,5 +253,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_select" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp-land/activity_feature_hrs.xml b/app/src/main/res/layout-sw600dp-land/activity_feature_hrs.xml
index e18c264a8..c3b2858e1 100644
--- a/app/src/main/res/layout-sw600dp-land/activity_feature_hrs.xml
+++ b/app/src/main/res/layout-sw600dp-land/activity_feature_hrs.xml
@@ -149,5 +149,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw720dp-land/activity_feature_rsc.xml b/app/src/main/res/layout-sw720dp-land/activity_feature_rsc.xml
index 6f7099acc..99c3b6ecc 100644
--- a/app/src/main/res/layout-sw720dp-land/activity_feature_rsc.xml
+++ b/app/src/main/res/layout-sw720dp-land/activity_feature_rsc.xml
@@ -287,5 +287,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_bpm.xml b/app/src/main/res/layout/activity_feature_bpm.xml
index 2fd9c2ff5..fbb5ed445 100644
--- a/app/src/main/res/layout/activity_feature_bpm.xml
+++ b/app/src/main/res/layout/activity_feature_bpm.xml
@@ -281,5 +281,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
diff --git a/app/src/main/res/layout/activity_feature_csc.xml b/app/src/main/res/layout/activity_feature_csc.xml
index 25c950551..a85b5ac52 100644
--- a/app/src/main/res/layout/activity_feature_csc.xml
+++ b/app/src/main/res/layout/activity_feature_csc.xml
@@ -252,5 +252,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_dfu.xml b/app/src/main/res/layout/activity_feature_dfu.xml
index 466f97d7a..e879be913 100644
--- a/app/src/main/res/layout/activity_feature_dfu.xml
+++ b/app/src/main/res/layout/activity_feature_dfu.xml
@@ -254,5 +254,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_select" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_gls.xml b/app/src/main/res/layout/activity_feature_gls.xml
index e15e017d8..7f0012bec 100644
--- a/app/src/main/res/layout/activity_feature_gls.xml
+++ b/app/src/main/res/layout/activity_feature_gls.xml
@@ -212,5 +212,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_hrs.xml b/app/src/main/res/layout/activity_feature_hrs.xml
index e94bdc501..dcc1a5bc4 100644
--- a/app/src/main/res/layout/activity_feature_hrs.xml
+++ b/app/src/main/res/layout/activity_feature_hrs.xml
@@ -142,5 +142,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
diff --git a/app/src/main/res/layout/activity_feature_hts.xml b/app/src/main/res/layout/activity_feature_hts.xml
index 77382b0de..71a5942dc 100644
--- a/app/src/main/res/layout/activity_feature_hts.xml
+++ b/app/src/main/res/layout/activity_feature_hts.xml
@@ -107,6 +107,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_proximity.xml b/app/src/main/res/layout/activity_feature_proximity.xml
index f6a1c730f..109c13001 100644
--- a/app/src/main/res/layout/activity_feature_proximity.xml
+++ b/app/src/main/res/layout/activity_feature_proximity.xml
@@ -116,5 +116,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_rsc.xml b/app/src/main/res/layout/activity_feature_rsc.xml
index 6f7099acc..99c3b6ecc 100644
--- a/app/src/main/res/layout/activity_feature_rsc.xml
+++ b/app/src/main/res/layout/activity_feature_rsc.xml
@@ -287,5 +287,13 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feature_template.xml b/app/src/main/res/layout/activity_feature_template.xml
index 562203a1f..1ac1b86c2 100644
--- a/app/src/main/res/layout/activity_feature_template.xml
+++ b/app/src/main/res/layout/activity_feature_template.xml
@@ -141,6 +141,14 @@
android:onClick="onConnectClicked"
android:text="@string/action_connect" />
+
+
diff --git a/app/src/main/res/layout/activity_features.xml b/app/src/main/res/layout/activity_features.xml
index 970386390..3cb702ba7 100644
--- a/app/src/main/res/layout/activity_features.xml
+++ b/app/src/main/res/layout/activity_features.xml
@@ -59,6 +59,13 @@
android:paddingTop="@dimen/feature_grid_margin_top"
android:stretchMode="columnWidth" />
+
+
-
@@ -30,11 +30,19 @@
layout="@layout/toolbar"
android:id="@+id/toolbar_actionbar"/>
+
+
+ android:layout_height="match_parent" />
-
+
diff --git a/app/src/main/res/layout/activity_splashscreen.xml b/app/src/main/res/layout/activity_splashscreen.xml
index 687d33376..8d26b46a1 100644
--- a/app/src/main/res/layout/activity_splashscreen.xml
+++ b/app/src/main/res/layout/activity_splashscreen.xml
@@ -33,4 +33,11 @@
android:scaleType="center"
android:src="@drawable/nordic_logo" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_feature_uart_control.xml b/app/src/main/res/layout/fragment_feature_uart_control.xml
index cd23cb66c..8ab45d371 100644
--- a/app/src/main/res/layout/fragment_feature_uart_control.xml
+++ b/app/src/main/res/layout/fragment_feature_uart_control.xml
@@ -23,16 +23,9 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@drawable/background_image"
android:orientation="vertical" >
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 533a2b472..ae8fa74ce 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -108,7 +108,7 @@
diff --git a/build.gradle b/build.gradle
index 9405f3fd1..1b7886d14 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.2.3'
+ classpath 'com.android.tools.build:gradle:1.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/nRFToolbox.iml b/nRFToolbox.iml
index ed8f9c1f3..e37ba8751 100644
--- a/nRFToolbox.iml
+++ b/nRFToolbox.iml
@@ -8,7 +8,7 @@
-
+