Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin' into add-support-for-nullable-f…
Browse files Browse the repository at this point in the history
…loat-in-constraints-checking-code
  • Loading branch information
mhazley committed Jun 5, 2023
2 parents 40e8253 + 13cd63a commit 2251fff
Show file tree
Hide file tree
Showing 19 changed files with 186 additions and 185 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",
]
}
13 changes: 8 additions & 5 deletions examples/tv-app/android/java/LevelManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ static constexpr size_t kLevelManagerTableSize = EMBER_AF_LEVEL_CONTROL_CLUSTER_
namespace {

LevelManager * gLevelManagerTable[kLevelManagerTableSize] = { nullptr };
static_assert(kLevelManagerTableSize <= kEmberInvalidEndpointIndex, "gLevelManagerTable table size error");

}
} // namespace

void emberAfLevelControlClusterInitCallback(EndpointId endpoint)
{
Expand All @@ -44,8 +45,9 @@ void emberAfLevelControlClusterInitCallback(EndpointId endpoint)
void LevelManager::NewManager(jint endpoint, jobject manager)
{
ChipLogProgress(Zcl, "TV Android App: LevelManager::NewManager");
uint16_t ep = emberAfFindClusterServerEndpointIndex(static_cast<chip::EndpointId>(endpoint), app::Clusters::LevelControl::Id);
VerifyOrReturn(ep != kEmberInvalidEndpointIndex && ep < kLevelManagerTableSize,
uint16_t ep = emberAfGetClusterServerEndpointIndex(static_cast<chip::EndpointId>(endpoint), app::Clusters::LevelControl::Id,
EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT);
VerifyOrReturn(ep < kLevelManagerTableSize,
ChipLogError(Zcl, "TV Android App::Level::NewManager: endpoint %d not found", endpoint));

VerifyOrReturn(gLevelManagerTable[ep] == nullptr,
Expand All @@ -65,8 +67,9 @@ void LevelManager::NewManager(jint endpoint, jobject manager)

LevelManager * GetLevelManager(EndpointId endpoint)
{
uint16_t ep = emberAfFindClusterServerEndpointIndex(endpoint, app::Clusters::LevelControl::Id);
return ((ep == kEmberInvalidEndpointIndex || ep >= kLevelManagerTableSize) ? nullptr : gLevelManagerTable[ep]);
uint16_t ep = emberAfGetClusterServerEndpointIndex(endpoint, app::Clusters::LevelControl::Id,
EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT);
return ((ep >= kLevelManagerTableSize) ? nullptr : gLevelManagerTable[ep]);
}

void LevelManager::PostLevelChanged(chip::EndpointId endpoint, uint8_t value)
Expand Down
15 changes: 8 additions & 7 deletions examples/tv-app/android/java/OnOffManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ static constexpr size_t kOnffManagerTableSize = EMBER_AF_ON_OFF_CLUSTER_SERVER_E
namespace {

OnOffManager * gOnOffManagerTable[kOnffManagerTableSize] = { nullptr };
static_assert(kOnffManagerTableSize <= kEmberInvalidEndpointIndex, "gOnOffManagerTable table size error");

}
} // namespace

void emberAfOnOffClusterInitCallback(EndpointId endpoint)
{
Expand All @@ -44,8 +45,9 @@ void emberAfOnOffClusterInitCallback(EndpointId endpoint)
void OnOffManager::NewManager(jint endpoint, jobject manager)
{
ChipLogProgress(Zcl, "TV Android App: OnOffManager::NewManager");
uint16_t ep = emberAfFindClusterServerEndpointIndex(static_cast<chip::EndpointId>(endpoint), app::Clusters::OnOff::Id);
VerifyOrReturn(ep != kEmberInvalidEndpointIndex && ep < EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT,
uint16_t ep = emberAfGetClusterServerEndpointIndex(static_cast<chip::EndpointId>(endpoint), app::Clusters::OnOff::Id,
EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT);
VerifyOrReturn(ep < kOnffManagerTableSize,
ChipLogError(Zcl, "TV Android App::OnOff::NewManager: endpoint %d not found", endpoint));

VerifyOrReturn(gOnOffManagerTable[ep] == nullptr,
Expand All @@ -65,10 +67,9 @@ void OnOffManager::NewManager(jint endpoint, jobject manager)

OnOffManager * GetOnOffManager(EndpointId endpoint)
{
uint16_t ep = emberAfFindClusterServerEndpointIndex(endpoint, app::Clusters::OnOff::Id);
return ((ep == kEmberInvalidEndpointIndex || ep >= EMBER_AF_MEDIA_PLAYBACK_CLUSTER_SERVER_ENDPOINT_COUNT)
? nullptr
: gOnOffManagerTable[ep]);
uint16_t ep =
emberAfGetClusterServerEndpointIndex(endpoint, app::Clusters::OnOff::Id, EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT);
return (ep >= kOnffManagerTableSize ? nullptr : gOnOffManagerTable[ep]);
}

void OnOffManager::PostOnOffChanged(chip::EndpointId endpoint, bool value)
Expand Down
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
11 changes: 7 additions & 4 deletions src/app/clusters/ota-provider/ota-provider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ using Protocols::InteractionModel::Status;

static constexpr size_t kOtaProviderDelegateTableSize =
EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT + CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT;
static_assert(kOtaProviderDelegateTableSize <= kEmberInvalidEndpointIndex, "OtaProvider Delegate table size error");

namespace {
constexpr size_t kLocationLen = 2; // The expected length of the location parameter in QueryImage
Expand All @@ -58,8 +59,9 @@ OTAProviderDelegate * gDelegateTable[kOtaProviderDelegateTableSize] = { nullptr

OTAProviderDelegate * GetDelegate(EndpointId endpoint)
{
uint16_t ep = emberAfFindClusterServerEndpointIndex(endpoint, OtaSoftwareUpdateProvider::Id);
return (ep == 0xFFFF ? nullptr : gDelegateTable[ep]);
uint16_t ep = emberAfGetClusterServerEndpointIndex(endpoint, OtaSoftwareUpdateProvider::Id,
EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT);
return (ep >= kOtaProviderDelegateTableSize ? nullptr : gDelegateTable[ep]);
}

bool SendStatusIfDelegateNull(app::CommandHandler * commandObj, const app::ConcreteCommandPath & path)
Expand Down Expand Up @@ -226,8 +228,9 @@ namespace OTAProvider {

void SetDelegate(EndpointId endpoint, OTAProviderDelegate * delegate)
{
uint16_t ep = emberAfFindClusterServerEndpointIndex(endpoint, OtaSoftwareUpdateProvider::Id);
if (ep != 0xFFFF)
uint16_t ep = emberAfGetClusterServerEndpointIndex(endpoint, OtaSoftwareUpdateProvider::Id,
EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT);
if (ep < kOtaProviderDelegateTableSize)
{
gDelegateTable[ep] = delegate;
}
Expand Down
Loading

0 comments on commit 2251fff

Please sign in to comment.