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

Address comments from reviews #34884

Merged
merged 77 commits into from
Aug 9, 2024
Merged
Show file tree
Hide file tree
Changes from 76 commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e4087bd
Updated the golabl data type's XMLs, removing the cluster entries.
hicklin Jul 31, 2024
7342db3
Zap generated after XML update.
hicklin Jul 31, 2024
63edf2e
Fixed namespaces used of global structs.
hicklin Jul 31, 2024
1cab752
Restyled by clang-format
restyled-commits Jul 31, 2024
72de6c5
Renamed LocationInfoStruct to AreaInfoStruct.
hicklin Aug 1, 2024
f2add10
Zap generated after XML update.
hicklin Aug 1, 2024
c6134a6
Renamed LocationStruct to AreaStruct and its LocationID and LocationD…
hicklin Aug 1, 2024
af8b02c
Zap generated after XML update.
hicklin Aug 1, 2024
a20d803
Updated SDK and example code to match the new naming.
hicklin Aug 1, 2024
8bb0d34
Updated the ProgressStruct's LocationID name to AreaID.
hicklin Aug 1, 2024
5bd0285
Zap generated after XML update.
hicklin Aug 1, 2024
5dc5eb0
Updated the SDK code following name changes.
hicklin Aug 1, 2024
5429771
Updated the SelectLocationsStatus and SkipLocationStatus enum names a…
hicklin Aug 1, 2024
04e87b6
Zap generated after XML update.
hicklin Aug 1, 2024
91f4446
Updated the SelectLocationsStatus and SkipCurrentLocationStatus names…
hicklin Aug 1, 2024
31a3c1a
Updated the names of the SupportedLocations, SelectedLocations and Cu…
hicklin Aug 1, 2024
f7d6a54
Zap generated after XML update.
hicklin Aug 1, 2024
4c128e6
Updated the changed names in the SDK.
hicklin Aug 1, 2024
088f01d
Updated the service area command names in XML.
hicklin Aug 1, 2024
a6b8036
Zap generated after XML update.
hicklin Aug 1, 2024
69eb53f
Updated the service area command names in the SDK.
hicklin Aug 1, 2024
c6c3659
Updated the rvc-example zap file.
hicklin Aug 1, 2024
d378b4e
Refactored LocationStructureWrapper to AreaStructureWrapper.
hicklin Aug 1, 2024
75a3369
Merge branch 'master' into update_names
hicklin Aug 1, 2024
86c38ed
Restyled by clang-format
restyled-commits Aug 1, 2024
a611a5b
Regenerated zap files due to changes upsteram.
hicklin Aug 1, 2024
56d0184
Merge branch 'master' into update_names
hicklin Aug 2, 2024
b3abfbd
Removed unused generated file.
hicklin Aug 2, 2024
e82a96e
Updated the Service Area XML marking previously nullabel attributes a…
hicklin Aug 2, 2024
f48fb79
Zap generated after XML update.
hicklin Aug 2, 2024
499b42d
Updated the attribute encoding and some server logic following the ro…
hicklin Aug 2, 2024
1aa272e
Explicitly set the Service Area version.
hicklin Aug 2, 2024
3881db0
Zap generated after XML update.
hicklin Aug 2, 2024
9a9b3bc
Updated the service area features in the XML to match the current spec.
hicklin Aug 2, 2024
d57ec78
Zap generated after XML update.
hicklin Aug 2, 2024
15376cb
Updated the SupportedArea validation logic as if the MAPS feature is …
hicklin Aug 2, 2024
43dd764
Change the type of the MapID to uint32 to match the spec.
hicklin Aug 2, 2024
ad374f1
Added the SkippedArea arg to the SkipArea command.
hicklin Aug 2, 2024
5979878
Zap generated after XML update.
hicklin Aug 2, 2024
5b079da
Updated the Service Area server code to handle the new SkippedArea co…
hicklin Aug 2, 2024
e8dd79c
Updated the service area XML to match the current spec. This includes…
hicklin Aug 2, 2024
1eb0f17
Zap generated after XML update.
hicklin Aug 2, 2024
bf8d264
Updated SDK server code and rvc-example after changes to the XML.
hicklin Aug 2, 2024
54cbcc2
Restyled by whitespace
restyled-commits Aug 2, 2024
9548b69
added vector include.
hicklin Aug 2, 2024
afb1084
Merge branch 'master' into update_names
hicklin Aug 5, 2024
ba24897
spacing changes form zap regen.
hicklin Aug 5, 2024
4f61bf3
Fixed minor mistake during merge.
hicklin Aug 5, 2024
30b4118
Merge branch 'update_names' into remove_nullable_qualities
hicklin Aug 5, 2024
2325e2a
Merge branch 'remove_nullable_qualities' into update_service_area_xml…
hicklin Aug 5, 2024
21663d9
Restyled by clang-format
restyled-commits Aug 5, 2024
cd43089
Merge branch 'master' into remove_nullable_qualities. Fixed conflicts…
hicklin Aug 5, 2024
82396bc
Merge branch 'remove_nullable_qualities' into update_service_area_xml…
hicklin Aug 5, 2024
b730832
Applied suggestions from review.
hicklin Aug 5, 2024
b3140db
Restyled by whitespace
restyled-commits Aug 5, 2024
c7f248c
Merge branch 'master' into update_service_area_xml_from_07
hicklin Aug 6, 2024
22db496
Updated the LondmarkInfoSturct PositionTag type.
hicklin Aug 6, 2024
23b1c6b
Zap generated after XML update.
hicklin Aug 6, 2024
ec07b0e
Fixed SDK following update to the position type.
hicklin Aug 6, 2024
95c68f7
Restyled by clang-format
restyled-commits Aug 6, 2024
6fafcf9
Updated the AeraStructWrapper to not contain methods with a large num…
hicklin Aug 6, 2024
0a5ec9f
Restyled by whitespace
restyled-commits Aug 6, 2024
6f9efb1
Restyled by clang-format
restyled-commits Aug 6, 2024
40c8298
Merge branch 'master' into update_service_area_xml_from_07. Fixed XML…
hicklin Aug 7, 2024
0ec7d0b
Missed a submudule update.
hicklin Aug 7, 2024
ca10c9a
Merge branch 'update_service_area_xml_from_07' into improve_AreaStruc…
hicklin Aug 7, 2024
f3df11c
Made the setters reture a ref to the sturct to allow chaining.
hicklin Aug 7, 2024
ed743e4
simplified the = oporator and add the == operator.
hicklin Aug 7, 2024
931557e
Restyled by clang-format
restyled-commits Aug 7, 2024
10c7abb
Merge branch 'master' into improve_AreaStructWrapper
hicklin Aug 8, 2024
ccdc1e5
minor change to get restyler going.
hicklin Aug 8, 2024
35f5908
Restyled by clang-format
restyled-commits Aug 8, 2024
258e249
Fixed status text referance issue.
hicklin Aug 8, 2024
b7ae205
Fixed issue casued by a change in the way that registrations are made.
hicklin Aug 8, 2024
2ee994e
Merge branch 'improve_AreaStructWrapper' into address_comments_from_r…
hicklin Aug 8, 2024
61e357b
Fixed styling and minor bug in IsValidSupportedArea.
hicklin Aug 8, 2024
b0940e8
Merge branch 'master' into address_comments_from_reviews
hicklin Aug 9, 2024
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
25 changes: 11 additions & 14 deletions examples/rvc-app/rvc-common/include/rvc-service-area-delegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,28 +44,27 @@ class RvcServiceAreaDelegate : public Delegate
CHIP_ERROR Init() override;

// command support
bool IsSetSelectedAreasAllowed(MutableCharSpan statusText) override;
bool IsSetSelectedAreasAllowed(MutableCharSpan & statusText) override;

bool IsValidSelectAreasSet(const ServiceArea::Commands::SelectAreas::DecodableType & req,
ServiceArea::SelectAreasStatus & locationStatus, MutableCharSpan statusText) override;
ServiceArea::SelectAreasStatus & areaStatus, MutableCharSpan & statusText) override;

bool HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan skipStatusText) override;
bool HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText) override;

//*************************************************************************
// Supported Locations accessors
// Supported Areas accessors

bool IsSupportedAreasChangeAllowed() override;

uint32_t GetNumberOfSupportedAreas() override;

bool GetSupportedLocationByIndex(uint32_t listIndex, ServiceArea::AreaStructureWrapper & supportedLocation) override;
bool GetSupportedAreaByIndex(uint32_t listIndex, AreaStructureWrapper & supportedArea) override;

bool GetSupportedLocationById(uint32_t aAreaId, uint32_t & listIndex,
ServiceArea::AreaStructureWrapper & supportedLocation) override;
bool GetSupportedAreaById(uint32_t aAreaId, uint32_t & listIndex, AreaStructureWrapper & supportedArea) override;

bool AddSupportedLocation(const ServiceArea::AreaStructureWrapper & newArea, uint32_t & listIndex) override;
bool AddSupportedArea(const AreaStructureWrapper & newArea, uint32_t & listIndex) override;

bool ModifySupportedLocation(uint32_t listIndex, const ServiceArea::AreaStructureWrapper & modifiedLocation) override;
bool ModifySupportedArea(uint32_t listIndex, const AreaStructureWrapper & modifiedArea) override;

bool ClearSupportedAreas() override;

Expand All @@ -87,15 +86,13 @@ class RvcServiceAreaDelegate : public Delegate
bool ClearSupportedMaps() override;

//*************************************************************************
// Selected Locations accessors
// Selected Areas accessors

uint32_t GetNumberOfSelectedAreas() override;

bool GetSelectedLocationByIndex(uint32_t listIndex, uint32_t & selectedLocation) override;
bool GetSelectedAreaByIndex(uint32_t listIndex, uint32_t & selectedArea) override;

// IsSelectedLocation() no override

bool AddSelectedLocation(uint32_t aAreaId, uint32_t & listIndex) override;
bool AddSelectedArea(uint32_t aAreaId, uint32_t & listIndex) override;

bool ClearSelectedAreas() override;

Expand Down
109 changes: 57 additions & 52 deletions examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,37 +32,43 @@ CHIP_ERROR RvcServiceAreaDelegate::Init()
GetInstance()->AddSupportedMap(supportedMapId_XX, "My Map XX"_span);
GetInstance()->AddSupportedMap(supportedMapId_YY, "My Map YY"_span);

// hardcoded fill of SUPPORTED LOCATIONS for prototyping
// hardcoded fill of SUPPORTED AREAS for prototyping
uint32_t supportedAreaID_A = 7;
uint32_t supportedAreaID_B = 1234567;
uint32_t supportedAreaID_C = 10050;
uint32_t supportedAreaID_D = 0x88888888;

// Location A has name, floor number, uses map XX
GetInstance()->AddSupportedLocation(supportedAreaID_A, DataModel::Nullable<uint32_t>(supportedMapId_XX), "My Location A"_span,
DataModel::Nullable<int16_t>(4), DataModel::Nullable<Globals::AreaTypeTag>(),
DataModel::Nullable<Globals::LandmarkTag>(),
DataModel::Nullable<Globals::RelativePositionTag>());

// Location B has name, uses map XX
GetInstance()->AddSupportedLocation(supportedAreaID_B, DataModel::Nullable<uint32_t>(supportedMapId_XX), "My Location B"_span,
DataModel::Nullable<int16_t>(), DataModel::Nullable<Globals::AreaTypeTag>(),
DataModel::Nullable<Globals::LandmarkTag>(),
DataModel::Nullable<Globals::RelativePositionTag>());

// Location C has full SemData, no name, Map YY
GetInstance()->AddSupportedLocation(supportedAreaID_C, DataModel::Nullable<uint32_t>(supportedMapId_YY), CharSpan(),
DataModel::Nullable<int16_t>(-1),
DataModel::Nullable<Globals::AreaTypeTag>(Globals::AreaTypeTag::kPlayRoom),
DataModel::Nullable<Globals::LandmarkTag>(Globals::LandmarkTag::kBackDoor),
DataModel::Nullable<Globals::RelativePositionTag>(Globals::RelativePositionTag::kNextTo));

// Location D has null values for all HomeLocationStruct fields, Map YY
GetInstance()->AddSupportedLocation(supportedAreaID_D, DataModel::Nullable<uint32_t>(supportedMapId_YY), "My Location D"_span,
DataModel::Nullable<int16_t>(), DataModel::Nullable<Globals::AreaTypeTag>(),
DataModel::Nullable<Globals::LandmarkTag>(Globals::LandmarkTag::kCouch),
DataModel::Nullable<Globals::RelativePositionTag>(Globals::RelativePositionTag::kNextTo));

// Area A has name, floor number, uses map XX
auto areaA =
AreaStructureWrapper{}
.SetAreaId(supportedAreaID_A)
.SetMapId(supportedMapId_XX)
.SetLocationInfo("My Location A"_span, DataModel::Nullable<int16_t>(4), DataModel::Nullable<Globals::AreaTypeTag>());

// Area B has name, uses map XX
auto areaB = AreaStructureWrapper{}
.SetMapId(supportedAreaID_B)
.SetMapId(supportedMapId_XX)
.SetLocationInfo("My Location B"_span, DataModel::NullNullable, DataModel::NullNullable);

// Area C has full SemData, no name, Map YY
auto areaC = AreaStructureWrapper{}
.SetAreaId(supportedAreaID_C)
.SetMapId(supportedMapId_YY)
.SetLocationInfo(""_span, -1, Globals::AreaTypeTag::kPlayRoom)
.SetLandmarkInfo(Globals::LandmarkTag::kBackDoor, Globals::RelativePositionTag::kNextTo);

// Area D has null values for all landmark fields, Map YY
auto areaD = AreaStructureWrapper{}
.SetAreaId(supportedAreaID_D)
.SetMapId(supportedMapId_YY)
.SetLocationInfo("My Location D"_span, DataModel::NullNullable, DataModel::NullNullable)
.SetLandmarkInfo(Globals::LandmarkTag::kCouch, Globals::RelativePositionTag::kNextTo);

GetInstance()->AddSupportedArea(areaA);
GetInstance()->AddSupportedArea(areaB);
GetInstance()->AddSupportedArea(areaC);
GetInstance()->AddSupportedArea(areaD);
GetInstance()->SetCurrentArea(supportedAreaID_C);

return CHIP_NO_ERROR;
Expand All @@ -71,27 +77,27 @@ CHIP_ERROR RvcServiceAreaDelegate::Init()
//*************************************************************************
// command support

bool RvcServiceAreaDelegate::IsSetSelectedAreasAllowed(MutableCharSpan statusText)
bool RvcServiceAreaDelegate::IsSetSelectedAreasAllowed(MutableCharSpan & statusText)
{
// TODO IMPLEMENT
return true;
};

bool RvcServiceAreaDelegate::IsValidSelectAreasSet(const Commands::SelectAreas::DecodableType & req,
SelectAreasStatus & locationStatus, MutableCharSpan statusText)
bool RvcServiceAreaDelegate::IsValidSelectAreasSet(const Commands::SelectAreas::DecodableType & req, SelectAreasStatus & areaStatus,
MutableCharSpan & statusText)
{
// TODO IMPLEMENT
return true;
};

bool RvcServiceAreaDelegate::HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan skipStatusText)
bool RvcServiceAreaDelegate::HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan & skipStatusText)
{
// TODO IMPLEMENT
return true;
};

//*************************************************************************
// Supported Locations accessors
// Supported Areas accessors

bool RvcServiceAreaDelegate::IsSupportedAreasChangeAllowed()
{
Expand All @@ -104,19 +110,18 @@ uint32_t RvcServiceAreaDelegate::GetNumberOfSupportedAreas()
return static_cast<uint32_t>(mSupportedAreas.size());
}

bool RvcServiceAreaDelegate::GetSupportedLocationByIndex(uint32_t listIndex, AreaStructureWrapper & aSupportedLocation)
bool RvcServiceAreaDelegate::GetSupportedAreaByIndex(uint32_t listIndex, AreaStructureWrapper & supportedArea)
{
if (listIndex < mSupportedAreas.size())
{
aSupportedLocation = mSupportedAreas[listIndex];
supportedArea = mSupportedAreas[listIndex];
return true;
}

return false;
};

bool RvcServiceAreaDelegate::GetSupportedLocationById(uint32_t aAreaID, uint32_t & listIndex,
AreaStructureWrapper & aSupportedLocation)
bool RvcServiceAreaDelegate::GetSupportedAreaById(uint32_t aAreaID, uint32_t & listIndex, AreaStructureWrapper & supportedArea)
{
// We do not need to reimplement this method as it's already done by the SDK.
// We are reimplementing this method, still using linear search, but with some optimization on the SDK implementation
Expand All @@ -127,7 +132,7 @@ bool RvcServiceAreaDelegate::GetSupportedLocationById(uint32_t aAreaID, uint32_t
{
if (mSupportedAreas[listIndex].areaID == aAreaID)
{
aSupportedLocation = mSupportedAreas[listIndex];
supportedArea = mSupportedAreas[listIndex];
return true;
}

Expand All @@ -137,41 +142,41 @@ bool RvcServiceAreaDelegate::GetSupportedLocationById(uint32_t aAreaID, uint32_t
return false;
};

bool RvcServiceAreaDelegate::AddSupportedLocation(const AreaStructureWrapper & newArea, uint32_t & listIndex)
bool RvcServiceAreaDelegate::AddSupportedArea(const AreaStructureWrapper & newArea, uint32_t & listIndex)
{
// The server instance (caller) is responsible for ensuring that there are no duplicate area IDs, list size not exceeded,
// etc.

// Double-check list size to ensure there no memory issues.
if (mSupportedAreas.size() < kMaxNumSupportedAreas)
{
// not sorting list, number of locations normally expected to be small, max 255
// not sorting list, number of areas normally expected to be small, max 255
mSupportedAreas.push_back(newArea);
listIndex = static_cast<uint32_t>(mSupportedMaps.size()) - 1; // new element is last in list
return true;
}

ChipLogError(Zcl, "AddSupportedLocation %u - supported locations list is already at maximum size %u", newArea.areaID,
ChipLogError(Zcl, "AddSupportedArea %u - supported areas list is already at maximum size %u", newArea.areaID,
static_cast<uint32_t>(kMaxNumSupportedAreas));

return false;
}

bool RvcServiceAreaDelegate::ModifySupportedLocation(uint32_t listIndex, const AreaStructureWrapper & modifiedLocation)
bool RvcServiceAreaDelegate::ModifySupportedArea(uint32_t listIndex, const AreaStructureWrapper & modifiedArea)
{
// The server instance (caller) is responsible for ensuring that there are no duplicate area IDs, list size not exceeded,
// etc.

// Double-check that areaID's match.
if (modifiedLocation.areaID != mSupportedAreas[listIndex].areaID)
if (modifiedArea.areaID != mSupportedAreas[listIndex].areaID)
{
ChipLogError(Zcl, "ModifySupportedLocation - areaID's do not match, new areaID %u, existing areaID %u",
modifiedLocation.areaID, mSupportedAreas[listIndex].areaID);
ChipLogError(Zcl, "ModifySupportedArea - areaID's do not match, new areaID %u, existing areaID %u", modifiedArea.areaID,
mSupportedAreas[listIndex].areaID);
return false;
}

// checks passed, update the attribute
mSupportedAreas[listIndex] = modifiedLocation;
mSupportedAreas[listIndex] = modifiedArea;
return true;
}

Expand Down Expand Up @@ -240,7 +245,7 @@ bool RvcServiceAreaDelegate::AddSupportedMap(const MapStructureWrapper & newMap,
// Double-check list size to ensure there no memory issues.
if (mSupportedMaps.size() < kMaxNumSupportedMaps)
{
// not sorting list, number of locations normally expected to be small, max 255
// not sorting list, number of areas normally expected to be small, max 255
mSupportedMaps.push_back(newMap);
listIndex = static_cast<uint32_t>(mSupportedMaps.size()) - 1; // new element is last in list
return true;
Expand Down Expand Up @@ -281,38 +286,38 @@ bool RvcServiceAreaDelegate::ClearSupportedMaps()
}

//*************************************************************************
// Selected Locations accessors
// Selected areas accessors

uint32_t RvcServiceAreaDelegate::GetNumberOfSelectedAreas()
{
return static_cast<uint32_t>(mSelectedAreas.size());
}

bool RvcServiceAreaDelegate::GetSelectedLocationByIndex(uint32_t listIndex, uint32_t & aSelectedLocation)
bool RvcServiceAreaDelegate::GetSelectedAreaByIndex(uint32_t listIndex, uint32_t & selectedArea)
{
if (listIndex < mSelectedAreas.size())
{
aSelectedLocation = mSelectedAreas[listIndex];
selectedArea = mSelectedAreas[listIndex];
return true;
}

return false;
};

bool RvcServiceAreaDelegate::AddSelectedLocation(uint32_t aAreaID, uint32_t & listIndex)
bool RvcServiceAreaDelegate::AddSelectedArea(uint32_t aAreaID, uint32_t & listIndex)
{
// The server instance (caller) is responsible for ensuring that there are no duplicate area IDs, list size not exceeded,
// etc.

// Double-check list size to ensure there no memory issues.
if (mSelectedAreas.size() < kMaxNumSelectedAreas)
{
// not sorting list, number of locations normally expected to be small, max 255
// not sorting list, number of areas normally expected to be small, max 255
mSelectedAreas.push_back(aAreaID);
listIndex = static_cast<uint32_t>(mSelectedAreas.size()) - 1; // new element is last in list
return true;
}
ChipLogError(Zcl, "AddSelectedLocation %u - selected locations list is already at maximum size %u", aAreaID,
ChipLogError(Zcl, "AddSelectedArea %u - selected areas list is already at maximum size %u", aAreaID,
static_cast<uint32_t>(kMaxNumSelectedAreas));

return false;
Expand Down Expand Up @@ -378,7 +383,7 @@ bool RvcServiceAreaDelegate::AddProgressElement(const Structs::ProgressStruct::T
// Double-check list size to ensure there no memory issues.
if (mProgressList.size() < kMaxNumProgressElements)
{
// not sorting list, number of locations normally expected to be small, max 255
// not sorting list, number of areas normally expected to be small, max 255
mProgressList.push_back(newProgressElement);
listIndex = static_cast<uint32_t>(mProgressList.size()) - 1; // new element is last in list
return true;
Expand Down
Loading
Loading