Skip to content

Commit

Permalink
[Android] Modify to use onboardingpayload library in CHIPTool (#26941)
Browse files Browse the repository at this point in the history
* Modify to use onboardingpayload library

* restyle

* Fix Android tv-app build error

* Modify android app test data

* restyle

* Fix build error
  • Loading branch information
joonhaengHeo authored and pull[bot] committed Aug 22, 2023
1 parent 7c63867 commit eb89a9a
Show file tree
Hide file tree
Showing 12 changed files with 128 additions and 86 deletions.
2 changes: 1 addition & 1 deletion BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,8 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
deps += [
"${chip_root}/src/app/server/java",
"${chip_root}/src/controller/java",
"${chip_root}/src/controller/java:onboarding_payload",
"${chip_root}/src/platform/android:java",
"${chip_root}/src/setup_payload/java",
]
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import chip.setuppayload.SetupPayload
import chip.setuppayload.SetupPayloadParser
import chip.setuppayload.SetupPayloadParser.UnrecognizedQrCodeException
import chip.onboardingpayload.OnboardingPayload
import chip.onboardingpayload.OnboardingPayloadParser
import chip.onboardingpayload.UnrecognizedQrCodeException
import com.google.chip.chiptool.provisioning.AddressCommissioningFragment
import com.google.chip.chiptool.provisioning.DeviceProvisioningFragment
import com.google.chip.chiptool.provisioning.EnterNetworkFragment
Expand Down Expand Up @@ -151,10 +151,10 @@ class CHIPToolActivity :
val uri = records[0].toUri()
if (!uri?.scheme.equals("mt", true)) return

lateinit var setupPayload: SetupPayload
lateinit var setupPayload: OnboardingPayload
try {
setupPayload =
SetupPayloadParser().parseQrCode(uri.toString().toUpperCase())
OnboardingPayloadParser().parseQrCode(uri.toString().toUpperCase())
} catch (ex: UnrecognizedQrCodeException) {
Log.e(TAG, "Unrecognized QR Code", ex)
Toast.makeText(this, "Unrecognized QR Code", Toast.LENGTH_SHORT).show()
Expand Down Expand Up @@ -208,10 +208,10 @@ class CHIPToolActivity :
val payload = JSONObject(payloadString)

// parse payload from JSON
val setupPayload = SetupPayload()
val setupPayload = OnboardingPayload()
// set defaults
setupPayload.discoveryCapabilities = setOf()
setupPayload.optionalQRCodeInfo = mapOf()
setupPayload.optionalQRCodeInfo = HashMap()

// read from payload
setupPayload.version = payload.getInt("version")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,10 @@ import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.checkSelfPermission
import androidx.fragment.app.Fragment
import chip.setuppayload.SetupPayload
import chip.setuppayload.SetupPayloadParser
import chip.setuppayload.SetupPayloadParser.SetupPayloadException
import chip.setuppayload.SetupPayloadParser.InvalidEntryCodeFormatException
import chip.setuppayload.SetupPayloadParser.UnrecognizedQrCodeException
import chip.onboardingpayload.OnboardingPayload
import chip.onboardingpayload.OnboardingPayloadException
import chip.onboardingpayload.OnboardingPayloadParser
import chip.onboardingpayload.UnrecognizedQrCodeException
import com.google.chip.chiptool.R
import com.google.chip.chiptool.SelectActionFragment
import com.google.chip.chiptool.databinding.BarcodeFragmentBinding
Expand Down Expand Up @@ -182,14 +181,12 @@ class BarcodeFragment : Fragment() {
}

private fun handleInputQrCode(qrCode: String) {
lateinit var payload: SetupPayload
var isShortDiscriminator = false
lateinit var payload: OnboardingPayload
try {
payload = SetupPayloadParser().parseQrCode(qrCode)
} catch (ex: SetupPayloadException) {
payload = OnboardingPayloadParser().parseQrCode(qrCode)
} catch (ex: OnboardingPayloadException) {
try {
payload = SetupPayloadParser().parseManualEntryCode(qrCode)
isShortDiscriminator = true
payload = OnboardingPayloadParser().parseManualPairingCode(qrCode)
} catch (ex: Exception) {
Log.e(TAG, "Unrecognized Manual Pairing Code", ex)
Toast.makeText(requireContext(), "Unrecognized Manual Pairing Code", Toast.LENGTH_SHORT).show()
Expand All @@ -199,14 +196,14 @@ class BarcodeFragment : Fragment() {
Toast.makeText(requireContext(), "Unrecognized QR Code", Toast.LENGTH_SHORT).show()
}
FragmentUtil.getHost(this@BarcodeFragment, Callback::class.java)
?.onCHIPDeviceInfoReceived(CHIPDeviceInfo.fromSetupPayload(payload, isShortDiscriminator))
?.onCHIPDeviceInfoReceived(CHIPDeviceInfo.fromSetupPayload(payload))
}

private fun handleScannedQrCode(barcode: Barcode) {
Handler(Looper.getMainLooper()).post {
lateinit var payload: SetupPayload
lateinit var payload: OnboardingPayload
try {
payload = SetupPayloadParser().parseQrCode(barcode.displayValue)
payload = barcode.displayValue?.let { OnboardingPayloadParser().parseQrCode(it) } ?: return@post
} catch (ex: UnrecognizedQrCodeException) {
Log.e(TAG, "Unrecognized QR Code", ex)
Toast.makeText(requireContext(), "Unrecognized QR Code", Toast.LENGTH_SHORT).show()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
package com.google.chip.chiptool.setuppayloadscanner

import android.os.Parcelable
import chip.setuppayload.DiscoveryCapability
import chip.setuppayload.SetupPayload
import chip.onboardingpayload.DiscoveryCapability
import chip.onboardingpayload.OnboardingPayload
import kotlinx.parcelize.Parcelize

/** Class to hold the CHIP device information. */
Expand All @@ -36,16 +36,15 @@ data class CHIPDeviceInfo(
val discoveryCapabilities: Set<DiscoveryCapability> = setOf(),
val isShortDiscriminator: Boolean = false,
val ipAddress: String? = null,

) : Parcelable {

companion object {
fun fromSetupPayload(setupPayload: SetupPayload, isShortDiscriminator: Boolean = false): CHIPDeviceInfo {
fun fromSetupPayload(setupPayload: OnboardingPayload): CHIPDeviceInfo {
return CHIPDeviceInfo(
setupPayload.version,
setupPayload.vendorId,
setupPayload.productId,
setupPayload.discriminator,
setupPayload.getLongDiscriminatorValue(),
setupPayload.setupPinCode,
setupPayload.commissioningFlow,
setupPayload.optionalQRCodeInfo.mapValues { (_, info) ->
Expand All @@ -57,7 +56,7 @@ data class CHIPDeviceInfo(
)
},
setupPayload.discoveryCapabilities,
isShortDiscriminator
setupPayload.hasShortDiscriminator
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.google.chip.chiptool.setuppayloadscanner

import android.os.Parcelable
import chip.setuppayload.OptionalQRCodeInfo.OptionalQRCodeInfoType
import chip.onboardingpayload.OptionalQRCodeInfo.OptionalQRCodeInfoType
import kotlinx.parcelize.Parcelize

@Parcelize
data class QrCodeInfo(
val tag: Int,
val type: OptionalQRCodeInfoType,
val data: String,
val data: String?,
val intDataValue: Int
) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import chip.setuppayload.DiscoveryCapability;
import chip.setuppayload.SetupPayload;
import chip.setuppayload.SetupPayloadParser;
import chip.onboardingpayload.DiscoveryCapability;
import chip.onboardingpayload.OnboardingPayload;
import chip.onboardingpayload.OnboardingPayloadException;
import chip.onboardingpayload.OnboardingPayloadParser;
import com.matter.tv.server.QRUtils;
import com.matter.tv.server.R;
import com.matter.tv.server.service.MatterServant;
Expand Down Expand Up @@ -58,24 +59,24 @@ public void onResume() {
// TODO: Get these parameters from PreferencesConfigurationManager
HashSet<DiscoveryCapability> discoveryCapabilities = new HashSet<>();
discoveryCapabilities.add(DiscoveryCapability.ON_NETWORK);
SetupPayload payload =
new SetupPayload(0, 9050, 65279, 0, discoveryCapabilities, 3840, 20202021);
OnboardingPayload payload =
new OnboardingPayload(0, 9050, 65279, 0, discoveryCapabilities, 3840, 20202021);

SetupPayloadParser parser = new SetupPayloadParser();
OnboardingPayloadParser parser = new OnboardingPayloadParser();
try {
String qrCode = parser.getQrCodeFromPayload(payload);
mQrCodeTxt.setText(qrCode);

Bitmap qrCodeBitmap = QRUtils.createQRCodeBitmap(qrCode, 800, 800);
mQrCodeImg.setImageBitmap(qrCodeBitmap);
} catch (SetupPayloadParser.SetupPayloadException e) {
} catch (OnboardingPayloadException e) {
e.printStackTrace();
}

try {
String manualPairingCode = parser.getManualEntryCodeFromPayload(payload);
String manualPairingCode = parser.getManualPairingCodeFromPayload(payload);
mManualPairingCodeTxt.setText("ManualPairingCode:" + manualPairingCode);
} catch (SetupPayloadParser.SetupPayloadException e) {
} catch (OnboardingPayloadException e) {
e.printStackTrace();
}

Expand Down
2 changes: 1 addition & 1 deletion examples/tv-app/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ group("default") {
":java",
":jni",
"${chip_root}/src/app/server/java",
"${chip_root}/src/controller/java:onboarding_payload",
"${chip_root}/src/platform/android:java",
"${chip_root}/src/setup_payload/java",
]
}
14 changes: 7 additions & 7 deletions scripts/build/builders/android.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ def copyToSrcAndroid(self):
# If we unify the JNI libraries, libc++_shared.so may not be needed anymore, which could
# be another path of resolving this inconsistency.
for libName in [
"libSetupPayloadParser.so",
"libOnboardingPayload.so",
"libCHIPController.so",
"libc++_shared.so",
]:
Expand All @@ -226,7 +226,7 @@ def copyToSrcAndroid(self):

jars = {
"CHIPController.jar": "src/controller/java/CHIPController.jar",
"SetupPayloadParser.jar": "src/setup_payload/java/SetupPayloadParser.jar",
"OnboardingPayload.jar": "src/controller/java/OnboardingPayload.jar",
"AndroidPlatform.jar": "src/platform/android/AndroidPlatform.jar",
"libCHIPTlv.jar": "src/controller/java/libCHIPTlv.jar",
}
Expand Down Expand Up @@ -478,11 +478,11 @@ def _build(self):
self.root, "examples/", self.app.ExampleName(), "android/App/app/libs"
)

libs = ["libSetupPayloadParser.so",
libs = ["libOnboardingPayload.so",
"libc++_shared.so", "libTvApp.so"]

jars = {
"SetupPayloadParser.jar": "third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar",
"OnboardingPayload.jar": "third_party/connectedhomeip/src/controller/java/OnboardingPayload.jar",
"AndroidPlatform.jar": "third_party/connectedhomeip/src/platform/android/AndroidPlatform.jar",
"CHIPAppServer.jar": "third_party/connectedhomeip/src/app/server/java/CHIPAppServer.jar",
"TvApp.jar": "TvApp.jar",
Expand Down Expand Up @@ -535,12 +535,12 @@ def build_outputs(self):
"AndroidPlatform.jar": os.path.join(
self.output_dir, "lib", "src/platform/android/AndroidPlatform.jar"
),
"SetupPayloadParser.jar": os.path.join(
"OnboardingPayload.jar": os.path.join(
self.output_dir,
"lib",
"src/setup_payload/java/SetupPayloadParser.jar",
"src/controller/java/OnboardingPayload.jar",
),
"jni/%s/libSetupPayloadParser.so"
"jni/%s/libOnboardingPayload.so"
% self.board.AbiName(): os.path.join(
self.output_dir,
"lib",
Expand Down
4 changes: 2 additions & 2 deletions scripts/build/testdata/dry_run_android-arm64-chip-tool.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ ninja -C {out}/android-arm64-chip-tool
# Prepare Native libs android-arm64-chip-tool
mkdir -p {root}/examples/android/CHIPTool/app/libs/jniLibs/arm64-v8a

cp {out}/android-arm64-chip-tool/lib/jni/arm64-v8a/libSetupPayloadParser.so {root}/examples/android/CHIPTool/app/libs/jniLibs/arm64-v8a/libSetupPayloadParser.so
cp {out}/android-arm64-chip-tool/lib/jni/arm64-v8a/libOnboardingPayload.so {root}/examples/android/CHIPTool/app/libs/jniLibs/arm64-v8a/libOnboardingPayload.so

cp {out}/android-arm64-chip-tool/lib/jni/arm64-v8a/libCHIPController.so {root}/examples/android/CHIPTool/app/libs/jniLibs/arm64-v8a/libCHIPController.so

cp {out}/android-arm64-chip-tool/lib/jni/arm64-v8a/libc++_shared.so {root}/examples/android/CHIPTool/app/libs/jniLibs/arm64-v8a/libc++_shared.so

cp {out}/android-arm64-chip-tool/lib/src/controller/java/CHIPController.jar {root}/examples/android/CHIPTool/app/libs/CHIPController.jar

cp {out}/android-arm64-chip-tool/lib/src/setup_payload/java/SetupPayloadParser.jar {root}/examples/android/CHIPTool/app/libs/SetupPayloadParser.jar
cp {out}/android-arm64-chip-tool/lib/src/controller/java/OnboardingPayload.jar {root}/examples/android/CHIPTool/app/libs/OnboardingPayload.jar

cp {out}/android-arm64-chip-tool/lib/src/platform/android/AndroidPlatform.jar {root}/examples/android/CHIPTool/app/libs/AndroidPlatform.jar

Expand Down
Loading

0 comments on commit eb89a9a

Please sign in to comment.