Skip to content

Commit 7c35afa

Browse files
committed
Update build config. Add BLE lock
1 parent c786cc9 commit 7c35afa

File tree

4 files changed

+130
-13
lines changed

4 files changed

+130
-13
lines changed

build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ apply plugin: 'com.android.library'
22

33
android {
44
compileSdkVersion 23
5-
buildToolsVersion '22.0.0'
65

76
defaultConfig {
87
minSdkVersion 21
@@ -18,8 +17,8 @@ android {
1817
}
1918

2019
dependencies {
21-
compile fileTree(dir: 'libs', include: ['*.jar'])
22-
compile 'com.android.support:support-annotations:+'
20+
implementation fileTree(dir: 'libs', include: ['*.jar'])
21+
implementation 'com.android.support:support-annotations:+'
2322
implementation "com.android.support:appcompat-v7:23.0.0"
2423
}
2524

pfLibrary.iml

Lines changed: 109 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,125 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<module external.system.id="GRADLE" type="JAVA_MODULE" version="4">
2+
<module external.linked.project.id=":pfLibrary" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
33
<component name="FacetManager">
44
<facet type="android-gradle" name="Android-Gradle">
55
<configuration>
6-
<option name="GRADLE_PROJECT_PATH" value=":" />
6+
<option name="GRADLE_PROJECT_PATH" value=":pfLibrary" />
77
</configuration>
88
</facet>
99
<facet type="android" name="Android">
1010
<configuration>
11+
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12+
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
13+
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
14+
<afterSyncTasks>
15+
<task>generateDebugSources</task>
16+
</afterSyncTasks>
1117
<option name="ALLOW_USER_CONFIGURATION" value="false" />
18+
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
19+
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
20+
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/build/generated/res/resValues/debug" />
21+
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
22+
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
23+
<option name="PROJECT_TYPE" value="1" />
1224
</configuration>
1325
</facet>
1426
</component>
15-
<component name="NewModuleRootManager" inherit-compiler-output="true">
27+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
28+
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
29+
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
1630
<exclude-output />
17-
<content url="file://$MODULE_DIR$" />
18-
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
31+
<content url="file://$MODULE_DIR$">
32+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
33+
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
34+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
38+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
39+
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
40+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
44+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
45+
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
52+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
53+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
54+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
55+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
56+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
57+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
65+
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
66+
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
67+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
68+
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
69+
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
70+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
71+
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
72+
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
73+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
74+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
75+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
76+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
84+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
85+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
86+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" />
89+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/aapt_friendly_merged_manifests" />
90+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
91+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations_typedef_file" />
92+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations_zip" />
93+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
94+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compile_library_classes" />
95+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compile_only_not_namespaced_r_class_jar" />
96+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/full_jar" />
97+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
98+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/intermediate-jars" />
99+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
100+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_and_local_jars_jni" />
101+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_assets" />
102+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_java_res" />
103+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_manifest" />
104+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" />
105+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
106+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_shaders" />
107+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged-classes" />
108+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged_res" />
109+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/public_res" />
110+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
111+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/runtime_library_classes" />
112+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
113+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
114+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
115+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
116+
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
117+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
118+
</content>
119+
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
19120
<orderEntry type="sourceFolder" forTests="false" />
121+
<orderEntry type="library" name="Gradle: com.android.support:support-v4:23.0.0@aar" level="project" />
122+
<orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0@jar" level="project" />
123+
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:23.0.0@aar" level="project" />
20124
</component>
21125
</module>

src/main/AndroidManifest.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
android:versionCode="1"
44
android:versionName="1.0" >
55

6-
<uses-sdk
7-
android:minSdkVersion="21"
8-
android:targetSdkVersion="21" />
96
<uses-permission android:name="android.permission.BLUETOOTH" />
107
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
118
</manifest>

src/main/java/org/microbit/android/partialflashing/PartialFlashingBaseService.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public abstract class PartialFlashingBaseService extends IntentService {
5757

5858
BluetoothGattCharacteristic partialFlashCharacteristic;
5959

60+
private final Object lock = new Object();
61+
6062
private static final byte PACKET_STATE_WAITING = 0;
6163
private static final byte PACKET_STATE_SENT = (byte)0xFF;
6264
private static final byte PACKET_STATE_RETRANSMIT = (byte)0xAA;
@@ -208,6 +210,9 @@ public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteris
208210
}
209211
}
210212

213+
synchronized (lock) {
214+
lock.notifyAll();
215+
}
211216
}
212217

213218
@Override
@@ -290,14 +295,16 @@ public Boolean attemptPartialFlash(String filePath) {
290295

291296
// Find DAL hash
292297
String hashes = hex.getDataFromIndex(magicIndex + 1);
293-
if(!hashes.substring(0, 8).equals(dalHash)) {
298+
if(!hashes.substring(0, 16).equals(dalHash)) {
299+
Log.v(TAG, hashes.substring(0, 16) + " " + (dalHash));
294300
return false;
295301
}
296302

297303
numOfLines = hex.numOfLines() - magicIndex;
298304
Log.v(TAG, "Total lines: " + numOfLines);
299305

300306
// Ready to flash!
307+
sendProgressBroadcastStart();
301308
// Loop through data
302309
String hexData;
303310
int packetNum = 0;
@@ -367,6 +374,7 @@ public Boolean attemptPartialFlash(String filePath) {
367374
// Finished Writing
368375
Log.v(TAG, "Flash Complete");
369376
sendProgressBroadcast(100);
377+
sendProgressBroadcastComplete();
370378

371379
// Time execution
372380
long endTime = SystemClock.elapsedRealtime();
@@ -514,7 +522,9 @@ private Boolean readMemoryMap() {
514522
notificationReceived = false;
515523
status = mBluetoothGatt.writeCharacteristic(partialFlashCharacteristic);
516524
Log.v(TAG, "Request Region " + i);
517-
while(!bluetoothStatus);
525+
synchronized (lock) {
526+
lock.wait();
527+
}
518528
}
519529

520530

@@ -545,6 +555,13 @@ public void onReceive(Context context, final Intent intent) {
545555
Log.v(TAG, "Received Broadcast: " + intent.toString());
546556
}
547557
};
558+
559+
@Override
560+
public void onDestroy() {
561+
super.onDestroy();
562+
final LocalBroadcastManager manager = LocalBroadcastManager.getInstance(this);
563+
manager.unregisterReceiver(broadcastReceiver);
564+
}
548565

549566
protected abstract Class<? extends Activity> getNotificationTarget();
550567
}

0 commit comments

Comments
 (0)