Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/runtimeco/mcumgr-android
Browse files Browse the repository at this point in the history
…into no-transport
  • Loading branch information
bgiori committed Aug 21, 2018
2 parents 11d713d + 525b467 commit 6faa436
Show file tree
Hide file tree
Showing 34 changed files with 366 additions and 189 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
}
}
Expand Down
7 changes: 4 additions & 3 deletions mcumgr-android-lib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ apply plugin: 'com.github.dcendents.android-maven'
group='com.github.runtimeco'

android {
compileSdkVersion 27
compileSdkVersion 28
buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName mcuMgrVersion

Expand All @@ -35,10 +35,11 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.2'
testImplementation 'junit:junit:4.12'

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.9.6'
implementation 'com.fasterxml.jackson.core:jackson-core:2.9.6'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.6'
implementation 'com.jakewharton.timber:timber:4.7.1'
}

// build a jar with source files
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;

import java.io.IOException;
import java.text.ParseException;
Expand All @@ -23,13 +22,13 @@
import io.runtime.mcumgr.exception.McuMgrException;
import io.runtime.mcumgr.response.McuMgrResponse;
import io.runtime.mcumgr.util.CBOR;
import timber.log.Timber;

/**
* TODO
*/
@SuppressWarnings({"WeakerAccess", "unused"})
public abstract class McuManager {
private static final String TAG = McuManager.class.getSimpleName();

// Transport constants
private final static int DEFAULT_MTU = 515;
Expand Down Expand Up @@ -123,10 +122,10 @@ public McuMgrTransport getTransporter() {
*/
public synchronized boolean setUploadMtu(int mtu) {
if (mtu < 23) {
Log.e(TAG, "MTU is too small!");
Timber.e("MTU is too small! Must be greater than 23.");
return false;
} else if (mtu > 1024) {
Log.e(TAG, "MTU is too large!");
Timber.e("MTU is too large! Must be less than 1024.");
return false;
} else {
mMtu = mtu;
Expand Down Expand Up @@ -365,7 +364,7 @@ public static Date stringToDate(@Nullable String dateString) {
try {
return mcumgrFormat.parse(dateString);
} catch (ParseException e) {
Log.e(TAG, "Converting string to Date failed", e);
Timber.e(e, "Converting string to Date failed");
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ public interface FirmwareUpgradeController {

/**
* Cancel the firmware upgrade.
* The firmware may be cancelled in
* {@link FirmwareUpgradeManager.State#VALIDATE} or
* {@link FirmwareUpgradeManager.State#UPLOAD} state.
* The manager does not try to recover the original firmware after the test or confirm commands
* have been sent. To undo the upload, confirm the image that have been moved to slot 1 during
* swap.
*/
void cancel();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import android.os.Looper;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;

import java.util.Arrays;
import java.util.concurrent.Executor;
Expand All @@ -25,6 +24,7 @@
import io.runtime.mcumgr.managers.ImageManager;
import io.runtime.mcumgr.response.McuMgrResponse;
import io.runtime.mcumgr.response.img.McuMgrImageStateResponse;
import timber.log.Timber;

// TODO Add retries for each step

Expand All @@ -46,7 +46,6 @@
*/
@SuppressWarnings({"WeakerAccess", "unused"})
public class FirmwareUpgradeManager implements FirmwareUpgradeController {
private final static String TAG = "FirmwareUpgradeManager";

public enum Mode {
/**
Expand Down Expand Up @@ -176,7 +175,7 @@ public void setFirmwareUpgradeCallback(@Nullable FirmwareUpgradeCallback callbac
*/
public void setMode(@NonNull Mode mode) {
if (mState != State.NONE) {
Log.i(TAG, "Firmware upgrade is already in progress");
Timber.i("Firmware upgrade is already in progress");
return;
}
mMode = mode;
Expand All @@ -202,7 +201,7 @@ public void setUploadMtu(int mtu) {
*/
public synchronized void start(@NonNull byte[] imageData) throws McuMgrException {
if (mState != State.NONE) {
Log.i(TAG, "Firmware upgrade is already in progress");
Timber.i("Firmware upgrade is already in progress");
return;
}
// Set image and validate
Expand All @@ -220,7 +219,10 @@ public synchronized void start(@NonNull byte[] imageData) throws McuMgrException

@Override
public synchronized void cancel() {
if (mState == State.UPLOAD) {
if (mState == State.VALIDATE) {
mState = State.NONE;
mPaused = false;
} else if (mState == State.UPLOAD) {
mImageManager.cancelUpload();
mPaused = false;
}
Expand All @@ -229,7 +231,7 @@ public synchronized void cancel() {
@Override
public synchronized void pause() {
if (mState.isInProgress()) {
Log.i(TAG, "Pausing upgrade.");
Timber.i("Pausing upgrade.");
mPaused = true;
if (mState == State.UPLOAD) {
mImageManager.pauseUpload();
Expand Down Expand Up @@ -263,7 +265,7 @@ private synchronized void setState(State newState) {
State prevState = mState;
mState = newState;
if (newState != prevState) {
Log.v(TAG, "Moving from state " + prevState.name() + " to state " + newState.name());
Timber.v("Moving from state %s to state %s", prevState.name(), newState.name());
mInternalCallback.onStateChanged(prevState, newState);
}
}
Expand Down Expand Up @@ -324,6 +326,13 @@ private synchronized void fail(McuMgrException error) {
mInternalCallback.onUpgradeFailed(failedState, error);
}

private synchronized void cancelled(State state) {
Timber.v("Upgrade cancelled!");
mState = State.NONE;
mPaused = false;
mInternalCallback.onUpgradeCanceled(state);
}

//******************************************************************
// McuManagerCallbacks
//******************************************************************
Expand All @@ -336,14 +345,19 @@ private synchronized void fail(McuMgrException error) {
new McuMgrCallback<McuMgrImageStateResponse>() {
@Override
public void onResponse(@NonNull final McuMgrImageStateResponse response) {
Log.v(TAG, "Validation response: " + response.toString());
Timber.v("Validation response: %s", response.toString());

// Check for an error return code
if (!response.isSuccess()) {
fail(new McuMgrErrorException(response.getReturnCode()));
return;
}

if (mState == State.NONE) {
cancelled(State.VALIDATE);
return;
}

McuMgrImageStateResponse.ImageSlot[] images = response.images;

// Check if the new firmware is different than the active one.
Expand Down Expand Up @@ -443,7 +457,7 @@ public void onError(@NonNull McuMgrException e) {
private McuMgrCallback<McuMgrImageStateResponse> mTestCallback = new McuMgrCallback<McuMgrImageStateResponse>() {
@Override
public void onResponse(@NonNull McuMgrImageStateResponse response) {
Log.v(TAG, "Test response: " + response.toString());
Timber.v("Test response: %s", response.toString());
// Check for an error return code
if (!response.isSuccess()) {
fail(new McuMgrErrorException(response.getReturnCode()));
Expand Down Expand Up @@ -482,8 +496,12 @@ public void onConnected() {
public void onDisconnected() {
// Device has reset.
mDefaultManager.getTransporter().removeObserver(this);
Log.v(TAG, "Reset successful");
Timber.v("Reset successful");
switch (mState) {
case NONE:
// Upload was cancelled in VALIDATE state
cancelled(State.VALIDATE);
break;
case VALIDATE:
// The device has exited test mode. Slot 1 can now be erased.
validate();
Expand Down Expand Up @@ -513,7 +531,7 @@ public void onDisconnected() {
@Override
public void onResponse(@NonNull McuMgrResponse response) {
// Reset command has been sent.
Log.v(TAG, "Reset request sent. Waiting for reset");
Timber.v("Reset request sent. Waiting for reset...");
// Check for an error return code
if (!response.isSuccess()) {
fail(new McuMgrErrorException(response.getReturnCode()));
Expand All @@ -534,7 +552,7 @@ public void onError(@NonNull McuMgrException e) {
new McuMgrCallback<McuMgrImageStateResponse>() {
@Override
public void onResponse(@NonNull McuMgrImageStateResponse response) {
Log.v(TAG, "Confirm response: " + response.toString());
Timber.v("Confirm response: %s", response.toString());
// Check for an error return code
if (!response.isSuccess()) {
fail(new McuMgrErrorException(response.getReturnCode()));
Expand Down Expand Up @@ -655,7 +673,7 @@ public void onUploadFailed(@NonNull McuMgrException error) {

@Override
public void onUploadCanceled() {
mInternalCallback.onUpgradeCanceled(mState);
cancelled(State.UPLOAD);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
*/
@SuppressWarnings({"unused", "WeakerAccess"})
public class McuMgrImageHeader {
private static final String TAG = McuMgrImageHeader.class.getSimpleName();

private static final int IMG_HEADER_MAGIC = 0x96f3b83d;
private static final int IMG_HEADER_MAGIC_V1 = 0x96f3b83c;
Expand Down
Loading

0 comments on commit 6faa436

Please sign in to comment.