Skip to content

Commit 4af07f7

Browse files
committed
release for 5.15.0
1 parent f15eb36 commit 4af07f7

File tree

72 files changed

+1510
-795
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1510
-795
lines changed

SampleCode-V5/android-sdk-v5-as/dependencies.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
ext {
22
deps = [:]
33
//DJI MSDK V5包
4-
deps.aircraft = "com.dji:dji-sdk-v5-aircraft:5.14.0"
5-
deps.aircraftProvided = "com.dji:dji-sdk-v5-aircraft-provided:5.14.0"
6-
deps.networkImp = "com.dji:dji-sdk-v5-networkImp:5.14.0"
4+
deps.aircraft = "com.dji:dji-sdk-v5-aircraft:5.15.0"
5+
deps.aircraftProvided = "com.dji:dji-sdk-v5-aircraft-provided:5.15.0"
6+
deps.networkImp = "com.dji:dji-sdk-v5-networkImp:5.15.0"
77

88
//三方依赖库
99
deps.gson = 'com.google.code.gson:gson:2.9.1'

SampleCode-V5/android-sdk-v5-as/gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android.useAndroidX=true
99
android.enableJetifier=true
1010
android.nonTransitiveRClass=false
1111

12-
#去掉资源重复检查
12+
#去掉资源重复检查
1313
android.disableResourceValidation=true
1414

1515
#build config
@@ -27,7 +27,7 @@ GMAP_API_KEY = ENTER YOUR Google Map API KEY
2727
MAPLIBRE_TOKEN = ENTER YOUR MapLibre TOKEN
2828

2929

30-
#签名信息,临时文件,测试用
30+
#签名信息,临时文件,测试用
3131
STORE_FILE = ../android-sdk-v5-as/msdkkeystore.jks
3232
STORE_PASSWORD = 123456
3333
KEY_ALIAS = msdkkeystore

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/data/MOPCmdHelper.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ public static byte[] getDownloadFile() {
5656
return cmd;
5757
}
5858

59-
public static byte[] getFileDataHeader(int size, int flag) {
59+
public static byte[] getFileDataHeader(int size, int flag, int seq) {
6060
byte[] cmd = new byte[PACK_HEADER_SIZE];
6161
cmd[0] = CMD_FILE_DATA;
6262
cmd[1] = (byte) flag;
63+
cmd[2] = (byte) seq;
6364
cmd[4] = (byte) (size & 0xff);
6465
cmd[5] = (byte) (size >> 8 & 0xff);
6566
cmd[6] = (byte) (size >> 16 & 0xff);
@@ -282,26 +283,28 @@ private static void postResultTipEvent(int type, String result, String progress,
282283
listener.onTipEvent(event);
283284
}
284285

285-
private static int uploadFile(Pipeline data, byte[] buff, long time, PipelineAdapter.OnEventListener listener) {
286+
private static int uploadFile(Pipeline pipeline, byte[] buff, long time, PipelineAdapter.OnEventListener listener) {
286287
int size = 3072;
287288
byte[] header;
288289
int hadWrote = 0;
290+
int seq = 0;
289291
if (buff.length <= size) {
290-
header = getFileDataHeader(buff.length, CMD_1);
291-
int result = writeData(data, buff, time, header, hadWrote, buff.length, listener);
292-
LogUtils.i(TAG, UPLOAD_FILE + result, "/MOP");
292+
header = getFileDataHeader(buff.length, CMD_1, seq);
293+
int result = writeData(pipeline, buff, time, header, hadWrote, buff.length, listener);
294+
LogUtils.i(TAG, UPLOAD_FILE + result, "/MOP", ",seq:", seq);
293295
return result;
294296
} else {
295297
while (buff.length - hadWrote > size) {
296-
header = getFileDataHeader(size, CMD_0);
297-
int result = writeData(data, buff, time, header, hadWrote, size, listener);
298+
header = getFileDataHeader(size, CMD_0, seq);
299+
int result = writeData(pipeline, buff, time, header, hadWrote, size, listener);
298300

299301
hadWrote += size;
300-
LogUtils.i(TAG, UPLOAD_FILE + hadWrote + " result:" + result);
302+
LogUtils.i(TAG, UPLOAD_FILE + hadWrote + " result:" + result, ",seq:", seq);
303+
seq++;
301304
}
302305
int length = buff.length - hadWrote;
303-
header = getFileDataHeader(length, CMD_1);
304-
int result = writeData(data, buff, time, header, hadWrote, length, listener);
306+
header = getFileDataHeader(length, CMD_1, seq);
307+
int result = writeData(pipeline, buff, time, header, hadWrote, length, listener);
305308
hadWrote += result;
306309
LogUtils.i(TAG, UPLOAD_FILE + length, "/MOP");
307310
}

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/data/PipelineAdapter.java

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.os.Build;
55
import android.os.Handler;
66
import android.os.HandlerThread;
7+
import android.util.Pair;
78
import android.view.LayoutInflater;
89
import android.view.View;
910
import android.view.ViewGroup;
@@ -28,6 +29,7 @@
2829
import androidx.appcompat.app.AlertDialog;
2930
import androidx.recyclerview.widget.RecyclerView;
3031
import dji.sampleV5.aircraft.R;
32+
import dji.sdk.keyvalue.value.common.ComponentIndexType;
3133
import dji.v5.common.error.DJIPipeLineError;
3234
import dji.v5.manager.mop.DataResult;
3335
import dji.v5.manager.mop.Pipeline;
@@ -37,9 +39,10 @@
3739
import dji.v5.utils.common.LogUtils;
3840

3941
public class PipelineAdapter extends RecyclerView.Adapter<PipelineAdapter.ViewHolder> {
40-
private final List<Pipeline> data;
42+
private final List<Pair<ComponentIndexType, Pipeline>> data;
4143
private final LayoutInflater mInflater;
4244
private ViewHolder curHolder;
45+
4346
private final OnDisconnectListener listener = new OnDisconnectListener() {
4447
@Override
4548
public void onDisconnect(Pipeline d) {
@@ -51,21 +54,20 @@ public void onDisconnect(Pipeline d) {
5154
}
5255
};
5356

54-
55-
public PipelineAdapter(Context context, List<Pipeline> data) {
57+
public PipelineAdapter(Context context, List<Pair<ComponentIndexType, Pipeline>> data) {
5658
this.mInflater = LayoutInflater.from(context);
5759
this.data = data;
5860
}
5961

60-
public void addItem(Pipeline action) {
62+
public void addItem(ComponentIndexType indexType, Pipeline action) {
6163
if (action == null || data == null || data.contains(action)) {
6264
return;
6365
}
64-
data.add(action);
66+
data.add(new Pair<>(indexType, action));
6567
notifyItemInserted(getItemCount() - 1);
6668
}
6769

68-
public List<Pipeline> getData() {
70+
public List<Pair<ComponentIndexType, Pipeline>> getData() {
6971
return data;
7072
}
7173

@@ -182,11 +184,11 @@ public ViewHolder(View itemView) {
182184
disconnectTv = itemView.findViewById(R.id.tv_disconnect);
183185
filenameTv = itemView.findViewById(R.id.et_file_name);
184186
autoDownloadSwitch = itemView.findViewById(R.id.switch_auto_download);
185-
186187
}
187188

188-
public void setData(Pipeline pipeline) {
189+
public void setData(Pair<ComponentIndexType, Pipeline> pair) {
189190
destroy();
191+
Pipeline pipeline = pair.second;
190192
uploadThread = new HandlerThread("upload");
191193
downloadThread = new HandlerThread("download");
192194
uploadThread.start();
@@ -204,7 +206,7 @@ public void setData(Pipeline pipeline) {
204206
});
205207
} else if (id == R.id.tv_disconnect) {
206208
destroy();
207-
disconnect(pipeline);
209+
disconnect(pair.first, pipeline);
208210
}
209211
};
210212

@@ -220,8 +222,8 @@ public void setListener(OnDisconnectListener listener) {
220222
listenerWeakReference = new WeakReference<>(listener);
221223
}
222224

223-
private void disconnect(Pipeline pipeline) {
224-
PipelineManager.getInstance().disconnectPipeline(pipeline.getId(), pipeline.getPipelineDeviceType(),
225+
private void disconnect(ComponentIndexType indexType, Pipeline pipeline) {
226+
PipelineManager.getInstance().disconnectPipeline(indexType, pipeline.getId(), pipeline.getPipelineDeviceType(),
225227
pipeline.getTransmissionControlType());
226228
if (listenerWeakReference != null && listenerWeakReference.get() != null) {
227229
listenerWeakReference.get().onDisconnect(pipeline);
@@ -287,20 +289,20 @@ private void uploadFile(Pipeline data) {
287289
MOPCmdHelper.sendUploadFileReq(data, uploadFileName, outputStream.toByteArray(), time, MOPCmdHelper.getMD5(tmp), listener);
288290

289291
} catch (IOException e) {
290-
LogUtils.e(tag,e.getMessage());
292+
LogUtils.e(tag, e.getMessage());
291293
} finally {
292294
try {
293-
if (inputStream != null){
295+
if (inputStream != null) {
294296
inputStream.close();
295297
}
296-
if (out != null){
298+
if (out != null) {
297299
out.close();
298300
}
299-
if (outputStream != null){
301+
if (outputStream != null) {
300302
outputStream.close();
301303
}
302304
} catch (IOException e) {
303-
LogUtils.e(tag,e.getMessage());
305+
LogUtils.e(tag, e.getMessage());
304306
}
305307
}
306308

@@ -341,7 +343,7 @@ private void downloadFile(Pipeline pipeline, String filename) {
341343
file.createNewFile();
342344
stream = new RandomAccessFile(file, "rw");
343345
} catch (IOException e) {
344-
LogUtils.e(tag,e.getMessage());
346+
LogUtils.e(tag, e.getMessage());
345347
}
346348

347349
while (true) {
@@ -386,11 +388,11 @@ private void downloadFile(Pipeline pipeline, String filename) {
386388
updateDownloadUI();
387389
});
388390
try {
389-
if (stream != null){
391+
if (stream != null) {
390392
stream.write(dataBuff, 0, len);
391393
}
392394
} catch (IOException e) {
393-
LogUtils.e(tag,e.getMessage());
395+
LogUtils.e(tag, e.getMessage());
394396
}
395397
} else if (dataResult.getError() != null && dataResult.getError().errorCode().equals(DJIPipeLineError.CLOSING)) {
396398
LogUtils.e(tag, "Pipeline is closing,finish down");
@@ -405,19 +407,19 @@ private void downloadFile(Pipeline pipeline, String filename) {
405407
// 确认是否能接着传
406408
if (MOPCmdHelper.parseCommonAck(pipeline)) {
407409
try {
408-
if (stream != null){
410+
if (stream != null) {
409411
stream.seek(position);
410412
}
411413
} catch (IOException e) {
412-
LogUtils.e(tag,e.getMessage());
414+
LogUtils.e(tag, e.getMessage());
413415
}
414416
} else {
415417
try {
416-
if(stream != null){
418+
if (stream != null) {
417419
stream.close();
418420
}
419421
} catch (IOException e) {
420-
LogUtils.e(tag,e.getMessage());
422+
LogUtils.e(tag, e.getMessage());
421423
}
422424
downloadLogTv.post(() -> downloadLogTv.setText("transfer failure"));
423425
downloading = false;
@@ -433,11 +435,11 @@ private void downloadFile(Pipeline pipeline, String filename) {
433435
}
434436
}
435437
try {
436-
if (stream != null){
438+
if (stream != null) {
437439
stream.close();
438440
}
439441
} catch (IOException e) {
440-
LogUtils.e(tag,e.getMessage());
442+
LogUtils.e(tag, e.getMessage());
441443
}
442444
downloading = false;
443445

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/keyvalue/CapabilityKeyChecker.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,28 +132,30 @@ object CapabilityKeyChecker {
132132
private fun checkOneType(
133133
productType: String,
134134
componentTypeName: String,
135-
keyCheckType: KeyCheckType
135+
keyCheckType: KeyCheckType,
136+
componentIndex: Int
136137
): Completable {
137138

138139
var keyOperatorCommand = when (keyCheckType) {
139-
KeyCheckType.SET -> KeySetCommand(productType, componentTypeName)
140-
KeyCheckType.ACTION -> KeyActionCommand(productType, componentTypeName)
141-
KeyCheckType.GET -> KeyGetCommand(productType, componentTypeName)
140+
KeyCheckType.SET -> KeySetCommand(productType, componentTypeName, componentIndex)
141+
KeyCheckType.ACTION -> KeyActionCommand(productType, componentTypeName, componentIndex)
142+
KeyCheckType.GET -> KeyGetCommand(productType, componentTypeName, componentIndex)
142143
}
143144
return keyOperatorCommand.execute()
144145
}
145146

146147
fun check(
147148
productType: String,
148149
componentTypeName: String,
150+
componentIndex: Int
149151
) {
150-
checkOneType(productType, componentTypeName, KeyCheckType.GET)
151-
.andThen(checkOneType(productType, componentTypeName, KeyCheckType.SET))
152-
.andThen(checkOneType(productType, componentTypeName, KeyCheckType.ACTION))
152+
checkOneType(productType, componentTypeName, KeyCheckType.SET, componentIndex)
153+
.andThen(checkOneType(productType, componentTypeName, KeyCheckType.SET, componentIndex))
154+
.andThen(checkOneType(productType, componentTypeName, KeyCheckType.ACTION, componentIndex))
153155
.observeOn(AndroidSchedulers.mainThread())
154156
.subscribe(object : CompletableObserver {
155157
override fun onSubscribe(d: Disposable) {
156-
LogUtils.e(TAG, "begin check", productType, componentTypeName)
158+
LogUtils.e(TAG, "begin check")
157159
ToastUtils.showToast("begin check")
158160
}
159161

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/keyvalue/ChannelType.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ enum class ChannelType(name: String) {
9393
/**
9494
* lidar
9595
*/
96-
CHANNEL_TYPE_LIDAR("LIDAR");
96+
CHANNEL_TYPE_LIDAR("LIDAR"),
97+
98+
/**
99+
* IntelligentBox
100+
*/
101+
INTELLIGENT_BOX("INTELLIGENT BOX");
97102

98103
private val value: String
99104
override fun toString(): String {

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/keyvalue/KeyActionCommand.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@ package dji.sampleV5.aircraft.keyvalue
55
* @time 2022/10/26 2:25 下午
66
* @description:
77
*/
8-
class KeyActionCommand(private val productType: String,
9-
private val componentTypeName: String) : KeyOperatorCommand(productType , componentTypeName) {
8+
class KeyActionCommand(
9+
private val productType: String,
10+
private val componentTypeName: String,
11+
private val componentIndex: Int
12+
) : KeyOperatorCommand(productType, componentTypeName, componentIndex) {
1013

1114
private val TAG_GET = "【ACTION】"
1215
private val TAG_ERROR = "ActionErrorMsg"
@@ -16,15 +19,15 @@ class KeyActionCommand(private val productType: String,
1619
}
1720

1821
override fun run(item: KeyItem<*, *>) {
19-
super.doKeyParam(item, KeyCheckType.ACTION)
22+
super.doKeyParam(item, KeyCheckType.ACTION)
2023
}
2124

2225
override fun getTAG(): String {
23-
return TAG_GET
26+
return TAG_GET
2427
}
2528

2629
override fun getErrorTAG(): String {
27-
return TAG_ERROR
30+
return TAG_ERROR
2831
}
2932

3033

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/keyvalue/KeyGetCommand.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@ package dji.sampleV5.aircraft.keyvalue
55
* @time 2022/10/26 2:25 下午
66
* @description:
77
*/
8-
class KeyGetCommand(private val productType: String,
9-
private val componentTypeName: String) : KeyOperatorCommand(productType , componentTypeName ) {
8+
class KeyGetCommand(
9+
private val productType: String,
10+
private val componentTypeName: String,
11+
private val componentIndex: Int
12+
) : KeyOperatorCommand(productType, componentTypeName, componentIndex) {
13+
1014
private val TAG_GET = "【GET】"
1115
private val TAG_ERROR = "GetErrorMsg"
1216

@@ -15,7 +19,7 @@ class KeyGetCommand(private val productType: String,
1519
}
1620

1721
override fun run(item: KeyItem<*, *>) {
18-
super.doKeyParam(item, KeyCheckType.GET)
22+
super.doKeyParam(item, KeyCheckType.GET)
1923
}
2024

2125
override fun getTAG(): String {

SampleCode-V5/android-sdk-v5-sample/src/main/java/dji/sampleV5/aircraft/keyvalue/KeyItemAdapter.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,13 @@
99
import android.widget.Filterable;
1010
import android.widget.TextView;
1111

12-
13-
import androidx.annotation.NonNull;
14-
import androidx.collection.SparseArrayCompat;
15-
import androidx.recyclerview.widget.RecyclerView;
16-
1712
import java.util.ArrayList;
1813
import java.util.List;
1914
import java.util.regex.Pattern;
2015

16+
import androidx.annotation.NonNull;
17+
import androidx.collection.SparseArrayCompat;
18+
import androidx.recyclerview.widget.RecyclerView;
2119
import dji.sampleV5.aircraft.R;
2220

2321

@@ -45,6 +43,9 @@ public ComViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
4543

4644
@Override
4745
public void onBindViewHolder(@NonNull ComViewHolder holder, int position) {
46+
if (mFilterList.size() <= position) {
47+
return;
48+
}
4849
convert(holder, mFilterList.get(position));
4950
}
5051

0 commit comments

Comments
 (0)