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

Dynamic Bridge Build Fail [BUG] #26208

Closed
jinbiaochenstayhungry opened this issue Apr 24, 2023 · 5 comments · Fixed by #27077
Closed

Dynamic Bridge Build Fail [BUG] #26208

jinbiaochenstayhungry opened this issue Apr 24, 2023 · 5 comments · Fixed by #27077
Labels
dynamic-bridge Issues in the dynamic-bridge example

Comments

@jinbiaochenstayhungry
Copy link
Contributor

Reproduction steps

the first time i issued (#26203) .

and quickly i fix my problems as suggested to update checkout,that is very wonderful job of these people.

but i again encounter some similar problems, i think developers may miss some small fix.

below is the steps:

1、update chip project to latest commit de0dfcf
2、edit dynamic bridge example zap file,enable scenes and groups cluster server from zap gui.
3、 regenerate .matter file
4、build dynamic bridge example.
5、 gn gen out/mac
6、ninja -C out/mac

Bug prevalence

always

GitHub hash of the SDK that was being used

de0dfcf

Platform

darwin

Platform Version(s)

No response

Anything else?

when ninja is building code generation, something wrong come out, seems there are two problems:
first is :
some micro was not defined,for example:
ZCL_GROUPS_CLUSTER_REVISION and ZCL_SCENES_CLUSTER_REVISION.

second is:
some type assign problem int other fields:
gen/bridge/Scenes.h:16:25: error: assigning to 'uint32_t' (aka 'unsigned int') from incompatible type 'Optionalchip::AttributeId' (aka 'Optional')
attributeID = t.attributeID;
../../third_party/connectedhomeip/src/app/data-model/List.h:62:22: note: candidate template ignored: could not match 'const unsigned char[N]' against 'const std::vector<uint8_t>' (aka 'const vector')

../../third_party/connectedhomeip/src/app/data-model/List.h:40:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'const std::vector' to 'const chip::app::DataModel::List' for 1st argument
struct List : public Span
^
../../third_party/connectedhomeip/src/app/data-model/List.h:40:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'const std::vector' to 'chip::app::DataModel::List' for 1st argument

detail log below:
In file included from gen/bridge/BridgeClustersImpl.h:4:
gen/bridge/Groups.h:17:138: error: use of undeclared identifier 'ZCL_GROUPS_CLUSTER_REVISION'
mClusterRevision(chip::CharSpan("clusterRevision"), 65533, 0 | ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZCL_INT16U_ATTRIBUTE_TYPE, 2, ZCL_GROUPS_CLUSTER_REVISION)
^
In file included from ../../main.cpp:50:
In file included from gen/bridge/BridgeClustersImpl.h:5:
gen/bridge/Scenes.h:16:25: error: assigning to 'uint32_t' (aka 'unsigned int') from incompatible type 'Optionalchip::AttributeId' (aka 'Optional')
attributeID = t.attributeID;
~~^~~~~~~~~~~
gen/bridge/Scenes.h:17:24: error: no viable overloaded '='
attributeValue = t.attributeValue;
~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:584:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableList<uint8_t>' (aka 'DecodableList') to 'const std::vector' for 1st argument
vector& operator=(const vector& __x);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:604:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableList<uint8_t>' (aka 'DecodableList') to 'std::vector' for 1st argument
vector& operator=(vector&& __x)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:608:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableList<uint8_t>' (aka 'DecodableList') to 'initializer_list<std::vector::value_type>' (aka 'initializer_list') for 1st argument
vector& operator=(initializer_list<value_type> __il)
^
In file included from ../../main.cpp:50:
In file included from gen/bridge/BridgeClustersImpl.h:5:
gen/bridge/Scenes.h:25:21: error: no viable overloaded '='
t.attributeID = attributeID;
~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
../../third_party/connectedhomeip/src/lib/core/Optional.h:86:26: note: candidate function not viable: no known conversion from 'const uint32_t' (aka 'const unsigned int') to 'const chip::Optional' for 1st argument
constexpr Optional & operator=(const Optional & other)
^
../../third_party/connectedhomeip/src/lib/core/Optional.h:100:26: note: candidate function not viable: no known conversion from 'const uint32_t' (aka 'const unsigned int') to 'chip::Optional' for 1st argument
constexpr Optional & operator=(Optional && other)
^
In file included from ../../main.cpp:50:
In file included from gen/bridge/BridgeClustersImpl.h:5:
gen/bridge/Scenes.h:26:24: error: no viable overloaded '='
t.attributeValue = attributeValue;
~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
../../third_party/connectedhomeip/src/app/data-model/List.h:62:22: note: candidate template ignored: could not match 'const unsigned char[N]' against 'const std::vector<uint8_t>' (aka 'const vector')
constexpr List & operator=(T (&databuf)[N])
^
../../third_party/connectedhomeip/src/app/data-model/List.h:40:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'const std::vector<uint8_t>' (aka 'const vector') to 'const chip::app::DataModel::List' for 1st argument
struct List : public Span
^
../../third_party/connectedhomeip/src/app/data-model/List.h:40:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'const std::vector<uint8_t>' (aka 'const vector') to 'chip::app::DataModel::List' for 1st argument
In file included from ../../main.cpp:50:
In file included from gen/bridge/BridgeClustersImpl.h:5:
gen/bridge/Scenes.h:42:28: error: no viable overloaded '='
attributeValueList = t.attributeValueList;
~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:584:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableListStructs::AttributeValuePair::DecodableType' to 'const std::vectorclusters::ScenesCluster::AttributeValuePair' for 1st argument
vector& operator=(const vector& __x);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:604:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableListStructs::AttributeValuePair::DecodableType' to 'std::vectorclusters::ScenesCluster::AttributeValuePair' for 1st argument
vector& operator=(vector&& __x)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:608:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableListStructs::AttributeValuePair::DecodableType' to 'initializer_list<std::vectorclusters::ScenesCluster::AttributeValuePair::value_type>' (aka 'initializer_listclusters::ScenesCluster::AttributeValuePair') for 1st argument
vector& operator=(initializer_list<value_type> __il)
^
In file included from ../../main.cpp:50:
In file included from gen/bridge/BridgeClustersImpl.h:5:
gen/bridge/Scenes.h:51:28: error: no viable overloaded '='
t.attributeValueList = attributeValueList;
~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~
../../third_party/connectedhomeip/src/app/data-model/List.h:62:22: note: candidate template ignored: could not match 'const chip::app::Clusters::Scenes::Structs::AttributeValuePair::Type[N]' against 'const std::vector'
constexpr List & operator=(T (&databuf)[N])
^
../../third_party/connectedhomeip/src/app/data-model/List.h:40:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'const std::vector' to 'const chip::app::DataModel::List' for 1st argument
struct List : public Span
^
../../third_party/connectedhomeip/src/app/data-model/List.h:40:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'const std::vector' to 'chip::app::DataModel::List' for 1st argument
In file included from ../../main.cpp:50:
In file included from gen/bridge/BridgeClustersImpl.h:5:
gen/bridge/Scenes.h:71:138: error: use of undeclared identifier 'ZCL_SCENES_CLUSTER_REVISION'; did you mean 'ZCL_SWITCH_CLUSTER_REVISION'?
mClusterRevision(chip::CharSpan("clusterRevision"), 65533, 0 | ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZCL_INT16U_ATTRIBUTE_TYPE, 2, ZCL_SCENES_CLUSTER_REVISION)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
ZCL_SWITCH_CLUSTER_REVISION
../../include/GeneratedClusters.h:15:27: note: 'ZCL_SWITCH_CLUSTER_REVISION' declared here
static constexpr uint16_t ZCL_SWITCH_CLUSTER_REVISION = 1;

@bzbarsky-apple
Copy link
Contributor

some micro was not defined,for example:
ZCL_GROUPS_CLUSTER_REVISION and ZCL_SCENES_CLUSTER_REVISION.

Sounds like those probably need to be added to examples/dynamic-bridge-app/linux/include/GeneratedClusters.h?

gen/bridge/Scenes.h:16:25: error: assigning to 'uint32_t' (aka 'unsigned int') from incompatible type 'Optionalchip::AttributeId' (aka 'Optional')

Yep, looks buggy.

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:584:13: note: candidate function not viable: no known conversion from 'DataModel::DecodableList<uint8_t>' (aka 'DecodableList') to 'const std::vector' for 1st argument

Also look buggy.

@bzbarsky-apple bzbarsky-apple added the dynamic-bridge Issues in the dynamic-bridge example label Apr 24, 2023
@bzbarsky-apple
Copy link
Contributor

@achaulk-goog

@achaulk-goog
Copy link
Contributor

Looks like optional<> was not properly handled in codegen, #26229 should fix part of this

@jinbiaochenstayhungry
Copy link
Contributor Author

jinbiaochenstayhungry commented Apr 25, 2023

ZCL_GROUPS_CLUSTER_REVISION and ZCL_SCENES_CLUSTER_REVISION.

Sounds like those probably need to be added to examples/dynamic-bridge-app/linux/include/GeneratedClusters.h?

thanks for your hard work.
looks like need to add by me for every cluster revision in GeneratedClusters.h, by why no move this define to brige jinja codegen ,so that no one have to do this manually definition.

@bzbarsky-apple
Copy link
Contributor

That's a question for @achaulk-goog

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dynamic-bridge Issues in the dynamic-bridge example
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants