Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement UI affordance to run cert tests from the android casting app. #24321

Merged
merged 4 commits into from
Jan 9, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -72,6 +72,10 @@ public void init(@NonNull Context context) {
registerContentAppUpdatesReceiver();
}

public void addSelfVendorAsAdmin() {
mAppPlatform.addSelfVendorAsAdmin();
}

private void initializeContentAppEndpoints() {

// Read the metadada of previously discovered endpoints.
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ public void onCreate() {
MatterServant.get().initCommissioner();

AppPlatformService.get().init(this.getApplicationContext());
AppPlatformService.get().addSelfVendorAsAdmin();
}

@Nullable
29 changes: 29 additions & 0 deletions examples/tv-app/android/java/AppImpl.cpp
Original file line number Diff line number Diff line change
@@ -44,9 +44,11 @@
#include <lib/support/CodeUtils.h>
#include <lib/support/ZclString.h>
#include <platform/CHIPDeviceLayer.h>
#include <platform/DeviceInstanceInfoProvider.h>

using namespace chip;
using namespace chip::AppPlatform;
using namespace chip::DeviceLayer;

#if CHIP_DEVICE_CONFIG_APP_PLATFORM_ENABLED
ContentAppFactoryImpl gFactory;
@@ -407,6 +409,20 @@ std::list<ClusterId> ContentAppFactoryImpl::GetAllowedClusterListForStaticEndpoi
{
if (endpointId == kLocalVideoPlayerEndpointId)
{
if (GetVendorPrivilege(vendorId) == Access::Privilege::kAdminister)
{
ChipLogProgress(DeviceLayer,
"ContentAppFactoryImpl GetAllowedClusterListForStaticEndpoint priviledged vendor accessible clusters "
"being returned.");
return { chip::app::Clusters::Descriptor::Id, chip::app::Clusters::OnOff::Id,
chip::app::Clusters::WakeOnLan::Id, chip::app::Clusters::MediaPlayback::Id,
chip::app::Clusters::LowPower::Id, chip::app::Clusters::KeypadInput::Id,
chip::app::Clusters::ContentLauncher::Id, chip::app::Clusters::AudioOutput::Id,
chip::app::Clusters::ApplicationLauncher::Id };
}
ChipLogProgress(
DeviceLayer,
"ContentAppFactoryImpl GetAllowedClusterListForStaticEndpoint operator vendor accessible clusters being returned.");
return { chip::app::Clusters::Descriptor::Id, chip::app::Clusters::OnOff::Id,
chip::app::Clusters::WakeOnLan::Id, chip::app::Clusters::MediaPlayback::Id,
chip::app::Clusters::LowPower::Id, chip::app::Clusters::KeypadInput::Id,
@@ -478,3 +494,16 @@ void ReportAttributeChange(EndpointId epId, chip::ClusterId clusterId, chip::Att
{
MatterReportingAttributeChangeCallback(epId, clusterId, attributeId);
}

void AddSelfVendorAsAdmin()
{
uint16_t value;
if (DeviceLayer::GetDeviceInstanceInfoProvider()->GetVendorId(value) != CHIP_NO_ERROR)
{
ChipLogDetail(Discovery, "AppImpl addSelfVendorAsAdmin Vendor ID not known");
}
else
{
gFactory.AddAdminVendorId(value);
}
}
2 changes: 2 additions & 0 deletions examples/tv-app/android/java/AppImpl.h
Original file line number Diff line number Diff line change
@@ -60,6 +60,8 @@ EndpointId AddContentApp(const char * szVendorName, uint16_t vendorId, const cha
EndpointId RemoveContentApp(EndpointId epId);
void ReportAttributeChange(EndpointId epId, chip::ClusterId clusterId, chip::AttributeId attributeId);

void AddSelfVendorAsAdmin();

#if CHIP_DEVICE_CONFIG_APP_PLATFORM_ENABLED

namespace chip {
6 changes: 6 additions & 0 deletions examples/tv-app/android/java/AppPlatform-JNI.cpp
Original file line number Diff line number Diff line change
@@ -87,3 +87,9 @@ JNI_METHOD(void, reportAttributeChange)
ReportAttributeChange(static_cast<EndpointId>(endpointId), static_cast<chip::ClusterId>(clusterId),
static_cast<chip::AttributeId>(attributeId));
}

JNI_METHOD(void, addSelfVendorAsAdmin)
(JNIEnv *, jobject, jint endpointId, jint clusterId, jint attributeId)
{
AddSelfVendorAsAdmin();
}
Original file line number Diff line number Diff line change
@@ -55,6 +55,10 @@ public native int addContentAppAtEndpoint(
// Method to report attribute change for content app endpoints to the SDK
public native void reportAttributeChange(int endpointId, int clusterId, int attributeId);

// Method to add the current vendorId of the node as an admin to enable clients from same vendor
// to be admins
public native void addSelfVendorAsAdmin();

static {
System.loadLibrary("TvApp");
}
24 changes: 24 additions & 0 deletions examples/tv-app/linux/AppImpl.cpp
Original file line number Diff line number Diff line change
@@ -41,6 +41,7 @@
#include <lib/support/CodeUtils.h>
#include <lib/support/ZclString.h>
#include <platform/CHIPDeviceLayer.h>
#include <platform/DeviceInstanceInfoProvider.h>
#include <zap-generated/CHIPClusters.h>

using namespace chip;
@@ -502,6 +503,20 @@ std::list<ClusterId> ContentAppFactoryImpl::GetAllowedClusterListForStaticEndpoi
{
if (endpointId == kLocalVideoPlayerEndpointId)
{
if (GetVendorPrivilege(vendorId) == Access::Privilege::kAdminister)
{
ChipLogProgress(DeviceLayer,
"ContentAppFactoryImpl GetAllowedClusterListForStaticEndpoint priviledged vendor accessible clusters "
"being returned.");
return { chip::app::Clusters::Descriptor::Id, chip::app::Clusters::OnOff::Id,
chip::app::Clusters::WakeOnLan::Id, chip::app::Clusters::MediaPlayback::Id,
chip::app::Clusters::LowPower::Id, chip::app::Clusters::KeypadInput::Id,
chip::app::Clusters::ContentLauncher::Id, chip::app::Clusters::AudioOutput::Id,
chip::app::Clusters::ApplicationLauncher::Id };
}
ChipLogProgress(
DeviceLayer,
"ContentAppFactoryImpl GetAllowedClusterListForStaticEndpoint operator vendor accessible clusters being returned.");
return { chip::app::Clusters::Descriptor::Id, chip::app::Clusters::OnOff::Id,
chip::app::Clusters::WakeOnLan::Id, chip::app::Clusters::MediaPlayback::Id,
chip::app::Clusters::LowPower::Id, chip::app::Clusters::KeypadInput::Id,
@@ -520,6 +535,15 @@ CHIP_ERROR InitVideoPlayerPlatform()
#if CHIP_DEVICE_CONFIG_APP_PLATFORM_ENABLED
ContentAppPlatform::GetInstance().SetupAppPlatform();
ContentAppPlatform::GetInstance().SetContentAppFactory(&gFactory);
uint16_t value;
if (DeviceLayer::GetDeviceInstanceInfoProvider()->GetVendorId(value) != CHIP_NO_ERROR)
{
ChipLogDetail(Discovery, "AppImpl InitVideoPlayerPlatform Vendor ID not known");
}
else
{
gFactory.AddAdminVendorId(value);
}
#endif // CHIP_DEVICE_CONFIG_APP_PLATFORM_ENABLED

#if CHIP_DEVICE_CONFIG_ENABLE_BOTH_COMMISSIONER_AND_COMMISSIONEE
4 changes: 4 additions & 0 deletions examples/tv-casting-app/android/App/app/build.gradle
Original file line number Diff line number Diff line change
@@ -44,6 +44,10 @@ android {
sourceSets {
main {
jniLibs.srcDirs = ['libs/jniLibs']
java.srcDirs = [
'src/main/java',
'src/main/jni',
]

// uncomment this code to debug
// java.srcDirs = [
Loading