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

Update service area xml from 07 #34738

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 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
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
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
3 changes: 2 additions & 1 deletion examples/rvc-app/rvc-common/include/rvc-device.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ class RvcDevice
mRunModeDelegate(), mRunModeInstance(&mRunModeDelegate, aRvcClustersEndpoint, RvcRunMode::Id, 0), mCleanModeDelegate(),
mCleanModeInstance(&mCleanModeDelegate, aRvcClustersEndpoint, RvcCleanMode::Id, 0), mOperationalStateDelegate(),
mOperationalStateInstance(&mOperationalStateDelegate, aRvcClustersEndpoint), mServiceAreaDelegate(),
mServiceAreaInstance(&mServiceAreaDelegate, aRvcClustersEndpoint, BitMask<ServiceArea::Feature>(0))
mServiceAreaInstance(&mServiceAreaDelegate, aRvcClustersEndpoint,
BitMask<ServiceArea::Feature>(ServiceArea::Feature::kMaps, ServiceArea::Feature::kProgressReporting))
{
// set the current-mode at start-up
mRunModeInstance.UpdateCurrentMode(RvcRunMode::ModeIdle);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class RvcServiceAreaDelegate : public Delegate
bool IsValidSelectAreasSet(const ServiceArea::Commands::SelectAreas::DecodableType & req,
ServiceArea::SelectAreasStatus & locationStatus, MutableCharSpan statusText) override;

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

//*************************************************************************
// Supported Locations accessors
Expand Down Expand Up @@ -78,7 +78,7 @@ class RvcServiceAreaDelegate : public Delegate

bool GetSupportedMapByIndex(uint32_t listIndex, ServiceArea::MapStructureWrapper & supportedMap) override;

bool GetSupportedMapById(uint8_t aMapId, uint32_t & listIndex, ServiceArea::MapStructureWrapper & supportedMap) override;
bool GetSupportedMapById(uint32_t aMapId, uint32_t & listIndex, ServiceArea::MapStructureWrapper & supportedMap) override;

bool AddSupportedMap(const ServiceArea::MapStructureWrapper & newMap, uint32_t & listIndex) override;

Expand Down
35 changes: 22 additions & 13 deletions examples/rvc-app/rvc-common/rvc-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -1424,9 +1424,9 @@ cluster RvcOperationalState = 97 {
command GoHome(): OperationalCommandResponse = 128;
}

/** The Service Area cluster provides an interface for controlling the locations where a device should operate, and for querying the current location. */
/** The Service Area cluster provides an interface for controlling the areas where a device should operate, and for querying the current area being serviced. */
provisional cluster ServiceArea = 336 {
revision 1; // NOTE: Default/not specifically set
revision 1;

enum OperationalStatusEnum : enum8 {
kPending = 0;
Expand All @@ -1447,28 +1447,33 @@ provisional cluster ServiceArea = 336 {
kSuccess = 0;
kInvalidAreaList = 1;
kInvalidInMode = 2;
kInvalidSkippedArea = 3;
}

bitmap Feature : bitmap32 {
kListOrder = 0x1;
kSelectWhileRunning = 0x2;
kSelectWhileRunning = 0x1;
kProgressReporting = 0x2;
kMaps = 0x4;
}

struct LandmarkInfoStruct {
LandmarkTag landmarkTag = 0;
nullable RelativePositionTag positionTag = 1;
}

struct AreaInfoStruct {
nullable LocationDescriptorStruct locationInfo = 0;
nullable LandmarkTag landmarkTag = 1;
nullable PositionTag positionTag = 2;
nullable FloorSurfaceTag surfaceTag = 3;
nullable LandmarkInfoStruct landmarkInfo = 1;
}

struct AreaStruct {
int32u areaID = 0;
nullable int8u mapID = 1;
nullable int32u mapID = 1;
AreaInfoStruct areaDesc = 2;
}

struct MapStruct {
int8u mapID = 0;
int32u mapID = 0;
char_string<64> name = 1;
}

Expand All @@ -1480,7 +1485,7 @@ provisional cluster ServiceArea = 336 {
}

readonly attribute AreaStruct supportedAreas[] = 0;
readonly attribute MapStruct supportedMaps[] = 1;
readonly attribute optional MapStruct supportedMaps[] = 1;
readonly attribute int32u selectedAreas[] = 2;
readonly attribute optional nullable int32u currentArea = 3;
readonly attribute optional nullable epoch_s estimatedEndTime = 4;
Expand All @@ -1498,18 +1503,22 @@ provisional cluster ServiceArea = 336 {

response struct SelectAreasResponse = 1 {
SelectAreasStatus status = 0;
optional char_string<256> statusText = 1;
char_string<256> statusText = 1;
}

request struct SkipAreaRequest {
int32u skippedArea = 0;
}

response struct SkipAreaResponse = 3 {
SkipAreaStatus status = 0;
optional char_string<256> statusText = 1;
char_string<256> statusText = 1;
}

/** Command used to select a set of device areas, where the device is to operate. */
command SelectAreas(SelectAreasRequest): SelectAreasResponse = 0;
/** This command is used to skip an area where the device operates. */
command SkipArea(): SkipAreaResponse = 2;
command SkipArea(SkipAreaRequest): SkipAreaResponse = 2;
}

endpoint 0 {
Expand Down
38 changes: 18 additions & 20 deletions examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
*/
#include <app-common/zap-generated/attributes/Accessors.h>
#include <rvc-service-area-delegate.h>
#include <vector>
plauric marked this conversation as resolved.
Show resolved Hide resolved

using namespace chip;
using namespace chip::app::Clusters;
Expand All @@ -25,8 +26,8 @@ using namespace chip::app::Clusters::ServiceArea;
CHIP_ERROR RvcServiceAreaDelegate::Init()
{
// hardcoded fill of SUPPORTED MAPS for prototyping
uint8_t supportedMapId_XX = 3;
uint8_t supportedMapId_YY = 245;
uint32_t supportedMapId_XX = 3;
plauric marked this conversation as resolved.
Show resolved Hide resolved
uint32_t supportedMapId_YY = 245;

GetInstance()->AddSupportedMap(supportedMapId_XX, "My Map XX"_span);
GetInstance()->AddSupportedMap(supportedMapId_YY, "My Map YY"_span);
Expand All @@ -38,32 +39,29 @@ CHIP_ERROR RvcServiceAreaDelegate::Init()
uint32_t supportedAreaID_D = 0x88888888;

// Location A has name, floor number, uses map XX
GetInstance()->AddSupportedLocation(
supportedAreaID_A, DataModel::Nullable<uint_fast8_t>(supportedMapId_XX), "My Location A"_span,
DataModel::Nullable<int16_t>(4), DataModel::Nullable<Globals::AreaTypeTag>(), DataModel::Nullable<Globals::LandmarkTag>(),
DataModel::Nullable<Globals::PositionTag>(), DataModel::Nullable<Globals::FloorSurfaceTag>());
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<uint_fast8_t>(supportedMapId_XX), "My Location B"_span,
DataModel::Nullable<int16_t>(), DataModel::Nullable<Globals::AreaTypeTag>(), DataModel::Nullable<Globals::LandmarkTag>(),
DataModel::Nullable<Globals::PositionTag>(), DataModel::Nullable<Globals::FloorSurfaceTag>());
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<uint_fast8_t>(supportedMapId_YY), CharSpan(),
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::PositionTag>(Globals::PositionTag::kLeft),
DataModel::Nullable<Globals::FloorSurfaceTag>(Globals::FloorSurfaceTag::kConcrete));
DataModel::Nullable<Globals::RelativePositionTag>(Globals::RelativePositionTag::kNextTo));

// Location D has null values for all HomeLocationStruct fields, Map YY
GetInstance()->AddSupportedLocation(supportedAreaID_D, DataModel::Nullable<uint_fast8_t>(supportedMapId_YY),
"My Location D"_span, DataModel::Nullable<int16_t>(),
DataModel::Nullable<Globals::AreaTypeTag>(),
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::PositionTag>(Globals::PositionTag::kLeft),
DataModel::Nullable<Globals::FloorSurfaceTag>(Globals::FloorSurfaceTag::kHardwood));
DataModel::Nullable<Globals::RelativePositionTag>(Globals::RelativePositionTag::kNextTo));

GetInstance()->SetCurrentArea(supportedAreaID_C);

Expand All @@ -86,7 +84,7 @@ bool RvcServiceAreaDelegate::IsValidSelectAreasSet(const Commands::SelectAreas::
return true;
};

bool RvcServiceAreaDelegate::HandleSkipCurrentArea(MutableCharSpan skipStatusText)
bool RvcServiceAreaDelegate::HandleSkipCurrentArea(uint32_t skippedArea, MutableCharSpan skipStatusText)
{
// TODO IMPLEMENT
return true;
Expand Down Expand Up @@ -213,7 +211,7 @@ bool RvcServiceAreaDelegate::GetSupportedMapByIndex(uint32_t listIndex, MapStruc
return false;
};

bool RvcServiceAreaDelegate::GetSupportedMapById(uint8_t aMapId, uint32_t & listIndex, MapStructureWrapper & aSupportedMap)
bool RvcServiceAreaDelegate::GetSupportedMapById(uint32_t aMapId, uint32_t & listIndex, MapStructureWrapper & aSupportedMap)
{
// 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 Down
Loading
Loading