Skip to content

Commit c77ccb4

Browse files
committed
Merge branch 'master' into #303-Upgrade-Cosmos-SDK
Signed-off-by: Abdulbois <abdulbois123@gmail.com> # Conflicts: # integration_tests/cli/model-demo.sh # x/model/types/tx.pb.go
2 parents 53b276c + 3ae6b98 commit c77ccb4

File tree

11 files changed

+225
-97
lines changed

11 files changed

+225
-97
lines changed

docs/transactions.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ Not all fields can be edited (see `EDIT_MODEL`).
203203
- partNumber: `optional(string)` - stock keeping unit
204204
- commissioningCustomFlow: `optional(uint8)` - A value of 1 indicates that user interaction with the device (pressing a button, for example) is required before commissioning can take place. When CommissioningCustomflow is set to a value of 2, the commissioner SHOULD attempt to obtain a URL which MAY be used to provide an end user with the necessary details for how to configure the product for initial commissioning
205205
- commissioningCustomFlowURL: `optional(string)` - commissioningCustomFlowURL SHALL identify a vendor specific commissioning URL for the device model when the commissioningCustomFlow field is set to '2'
206-
- commissioningModeInitialStepsHint: `optional(uint32)` - commissioningModeInitialStepsHint SHALL identify a hint for the steps that can be used to put into commissioning mode a device that has not yet been commissioned. This field is a bitmap with values defined in the Pairing Hint Table. For example, a value of 1 (bit 0 is set) indicates that a device that has not yet been commissioned will enter Commissioning Mode upon a power cycle.
206+
- commissioningModeInitialStepsHint: `optional(uint32)` - commissioningModeInitialStepsHint SHALL identify a hint for the steps that can be used to put into commissioning mode a device that has not yet been commissioned. This field is a bitmap with values defined in the Pairing Hint Table. For example, a value of 1 (bit 0 is set) indicates that a device that has not yet been commissioned will enter Commissioning Mode upon a power cycle (default 1).
207207
- commissioningModeInitialStepsInstruction: `optional(string)` - commissioningModeInitialStepsInstruction SHALL contain text which relates to specific values of CommissioningModeInitialStepsHint. Certain values of CommissioningModeInitialStepsHint, as defined in the Pairing Hint Table, indicate a Pairing Instruction (PI) dependency, and for these values the commissioningModeInitialStepsInstruction SHALL be set
208208
- commissioningModeSecondaryStepsHint: `optional(uint32)` - commissioningModeSecondaryStepsHint SHALL identify a hint for steps that can be used to put into commissioning mode a device that has already been commissioned. This field is a bitmap with values defined in the Pairing Hint Table. For example, a value of 4 (bit 2 is set) indicates that a device that has already been commissioned will require the user to visit a current CHIP Administrator to put the device into commissioning mode.
209209
- commissioningModeSecondaryStepInstruction: `optional(string)` - commissioningModeSecondaryStepInstruction SHALL contain text which relates to specific values of commissioningModeSecondaryStepsHint. Certain values of commissioningModeSecondaryStepsHint, as defined in the Pairing Hint Table, indicate a Pairing Instruction (PI) dependency, and for these values the commissioningModeSecondaryStepInstruction SHALL be set
@@ -260,7 +260,8 @@ All non-edited fields remain the same.
260260
- productURL: `optional(string)` - URL that contains product specific web page that contains details for the device model.
261261
- lsfURL: `optional(string)` - URL to the Localized String File of this product.
262262
- schemaVersion: `optional(uint16)` - Schema version to support backward/forward compatability(default 0)
263-
- lsfRevision: `optional(uint32)` - LsfRevision is a monotonically increasing positive integer indicating the latest available version of Localized String File.
263+
- lsfRevision: `optional(uint32)` - LsfRevision is a monotonically increasing positive integer indicating the latest available version of Localized String File.
264+
- commissioningModeInitialStepsHint: `optional(uint32)` - commissioningModeInitialStepsHint SHALL identify a hint for the steps that can be used to put into commissioning mode a device that has not yet been commissioned. This field is a bitmap with values defined in the Pairing Hint Table. For example, a value of 1 (bit 0 is set) indicates that a device that has not yet been commissioned will enter Commissioning Mode upon a power cycle. Note that this value cannot be updated to 0.
264265
- In State: `model/Model/value/<vid>/<pid>`
265266
- Who can send:
266267
- Vendor account associated with the same vid who has created the model

integration_tests/cli/common.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,9 @@ execute_with_retry() {
247247

248248

249249
get_txn_result() {
250-
echo "get_txn_result"
251250
local _broadcast_result=${1}
252-
echo "$_broadcast_result"
251+
# Remove parts before the first `{`
252+
_broadcast_result=$(echo "$_broadcast_result" | sed -n 's/^[^{]*{\(.*\)/{\1/p')
253253
local _txHash=$(echo "$_broadcast_result" | jq -r '.txhash')
254254
local _command="dcld query tx $_txHash"
255255
local _result=$($_command 2>&1)

integration_tests/cli/model-demo.sh

+5-2
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,12 @@ echo "$result"
130130

131131
test_divider
132132

133-
echo "Update Model with VID: ${vid} PID: ${pid} with new description and commissionerRemoteUiFlowURL"
133+
echo "Update Model with VID: ${vid} PID: ${pid} with new description, commissionerRemoteUiFlowURL and commissioningModeInitialStepsHint"
134134
description="New Device Description"
135135
schema_version_3=3
136136
newCommissionerRemoteUiFlowURL="https://commissionerRemoteUiFlowURL.dclmodel.updated"
137-
result=$(echo "test1234" | dcld tx model update-model --vid=$vid --pid=$pid --from $vendor_account --yes --productLabel "$description" --schemaVersion=$schema_version_3 --commissionerRemoteUiFlowURL="$newCommissionerRemoteUiFlowURL")
137+
newCommissioningModeInitialStepsHint=8
138+
result=$(echo "test1234" | dcld tx model update-model --vid=$vid --pid=$pid --from $vendor_account --yes --productLabel "$description" --schemaVersion=$schema_version_3 --commissionerRemoteUiFlowURL="$newCommissionerRemoteUiFlowURL" --commissioningModeInitialStepsHint="$newCommissioningModeInitialStepsHint")
138139
result=$(get_txn_result "$result")
139140
check_response "$result" "\"code\": 0"
140141
echo "$result"
@@ -156,6 +157,7 @@ check_response "$result" "\"pid\": $pid"
156157
check_response "$result" "\"productLabel\": \"$description\""
157158
check_response "$result" "\"schemaVersion\": $schema_version_3"
158159
check_response "$result" "\"commissionerRemoteUiFlowUrl\": \"$newCommissionerRemoteUiFlowURL\""
160+
check_response "$result" "\"commissioningModeInitialStepsHint\": $newCommissioningModeInitialStepsHint"
159161
echo "$result"
160162

161163
test_divider
@@ -174,6 +176,7 @@ result=$(dcld query model get-model --vid=$vid --pid=$pid)
174176
check_response "$result" "\"vid\": $vid"
175177
check_response "$result" "\"pid\": $pid"
176178
check_response "$result" "\"supportUrl\": \"$supportURL\""
179+
check_response "$result" "\"commissioningModeInitialStepsHint\": $newCommissioningModeInitialStepsHint"
177180
echo "$result"
178181

179182
test_divider

integration_tests/grpc_rest/model/helpers.go

+3
Original file line numberDiff line numberDiff line change
@@ -1025,14 +1025,17 @@ func Demo(suite *utils.TestSuite) {
10251025
require.Equal(suite.T, createSecondModelMsg.Pid, vendorModels.Products[1].Pid)
10261026

10271027
// Update second model
1028+
newCommissioningModeInitialStepsHint := uint32(8)
10281029
updateSecondModelMsg := NewMsgUpdateModel(createSecondModelMsg.Vid, createSecondModelMsg.Pid, vendorAccount.Address)
1030+
updateSecondModelMsg.CommissioningModeInitialStepsHint = newCommissioningModeInitialStepsHint
10291031
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{updateSecondModelMsg}, vendorName, vendorAccount)
10301032
require.NoError(suite.T, err)
10311033

10321034
// Check second model is updated
10331035
receivedModel, err = GetModel(suite, createSecondModelMsg.Vid, createSecondModelMsg.Pid)
10341036
require.NoError(suite.T, err)
10351037
require.Equal(suite.T, updateSecondModelMsg.ProductLabel, receivedModel.ProductLabel)
1038+
require.Equal(suite.T, newCommissioningModeInitialStepsHint, receivedModel.CommissioningModeInitialStepsHint)
10361039

10371040
// add new model version
10381041
createModelVersionMsg := NewMsgCreateModelVersion(createFirstModelMsg.Vid, createFirstModelMsg.Pid, 1, "1", vendorAccount.Address)

proto/zigbeealliance/distributedcomplianceledger/model/tx.proto

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ message MsgUpdateModel {
6363
int32 lsfRevision = 14 [(gogoproto.moretags) = "validate:\"gte=0,lte=65535\""];
6464
uint32 schemaVersion = 15 [(gogoproto.moretags) = "validate:\"gte=0,lte=65535\""];
6565
string commissionerRemoteUiFlowUrl = 16 [(gogoproto.moretags) = "validate:\"omitempty,url,startsnotwith=http:,max=256\""];
66+
uint32 commissioningModeInitialStepsHint = 17;
6667
}
6768
message MsgUpdateModelResponse {}
6869

vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.model/module/types/model/tx.ts

+20-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export interface MsgUpdateModel {
4545
lsfRevision: number
4646
schemaVersion: number
4747
commissionerRemoteUiFlowUrl: string
48+
commissioningModeInitialStepsHint: number
4849
}
4950

5051
export interface MsgUpdateModelResponse {}
@@ -541,7 +542,8 @@ const baseMsgUpdateModel: object = {
541542
lsfUrl: '',
542543
lsfRevision: 0,
543544
schemaVersion: 0,
544-
commissionerRemoteUiFlowUrl: ''
545+
commissionerRemoteUiFlowUrl: '',
546+
commissioningModeInitialStepsHint: 0
545547
}
546548

547549
export const MsgUpdateModel = {
@@ -594,6 +596,9 @@ export const MsgUpdateModel = {
594596
if (message.commissionerRemoteUiFlowUrl !== '') {
595597
writer.uint32(130).string(message.commissionerRemoteUiFlowUrl)
596598
}
599+
if (message.commissioningModeInitialStepsHint !== 0) {
600+
writer.uint32(136).uint32(message.commissioningModeInitialStepsHint)
601+
}
597602
return writer
598603
},
599604

@@ -652,6 +657,9 @@ export const MsgUpdateModel = {
652657
case 16:
653658
message.commissionerRemoteUiFlowUrl = reader.string()
654659
break
660+
case 17:
661+
message.commissioningModeInitialStepsHint = reader.uint32()
662+
break
655663
default:
656664
reader.skipType(tag & 7)
657665
break
@@ -742,6 +750,11 @@ export const MsgUpdateModel = {
742750
} else {
743751
message.commissionerRemoteUiFlowUrl = ''
744752
}
753+
if (object.commissioningModeInitialStepsHint !== undefined && object.commissioningModeInitialStepsHint !== null) {
754+
message.commissioningModeInitialStepsHint = Number(object.commissioningModeInitialStepsHint)
755+
} else {
756+
message.commissioningModeInitialStepsHint = 0
757+
}
745758
return message
746759
},
747760

@@ -765,6 +778,7 @@ export const MsgUpdateModel = {
765778
message.lsfRevision !== undefined && (obj.lsfRevision = message.lsfRevision)
766779
message.schemaVersion !== undefined && (obj.schemaVersion = message.schemaVersion)
767780
message.commissionerRemoteUiFlowUrl !== undefined && (obj.commissionerRemoteUiFlowUrl = message.commissionerRemoteUiFlowUrl)
781+
message.commissioningModeInitialStepsHint !== undefined && (obj.commissioningModeInitialStepsHint = message.commissioningModeInitialStepsHint)
768782
return obj
769783
},
770784

@@ -850,6 +864,11 @@ export const MsgUpdateModel = {
850864
} else {
851865
message.commissionerRemoteUiFlowUrl = ''
852866
}
867+
if (object.commissioningModeInitialStepsHint !== undefined && object.commissioningModeInitialStepsHint !== null) {
868+
message.commissioningModeInitialStepsHint = object.commissioningModeInitialStepsHint
869+
} else {
870+
message.commissioningModeInitialStepsHint = 0
871+
}
853872
return message
854873
}
855874
}

x/model/client/cli/tx_model.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,12 @@ the necessary details for how to configure the product for initial commissioning
100100
cmd.Flags().StringVar(&commissioningCustomFlowURL, FlagCommissioningCustomFlowURL, "",
101101
`commissioningCustomFlowURL SHALL identify a vendor specific commissioning URL for the
102102
device model when the commissioningCustomFlow field is set to '2'`)
103-
cmd.Flags().Uint32Var(&commissioningModeInitialStepsHint, FlagCommissioningModeInitialStepsHint, 0,
103+
cmd.Flags().Uint32Var(&commissioningModeInitialStepsHint, FlagCommissioningModeInitialStepsHint, 1,
104104
`commissioningModeInitialStepsHint SHALL
105105
identify a hint for the steps that can be used to put into commissioning mode a device that
106106
has not yet been commissioned. This field is a bitmap with values defined in the Pairing Hint Table.
107107
For example, a value of 1 (bit 0 is set) indicates
108-
that a device that has not yet been commissioned will enter Commissioning Mode upon a power cycle.`)
108+
that a device that has not yet been commissioned will enter Commissioning Mode upon a power cycle (default 1).`)
109109
cmd.Flags().StringVar(&commissioningModeInitialStepsInstruction, FlagCommissioningModeInitialStepsInstruction, "",
110110
`commissioningModeInitialStepsInstruction SHALL contain text which relates to specific
111111
values of commissioningModeSecondaryStepsHint. Certain values of CommissioningModeInitialStepsHint,
@@ -160,6 +160,7 @@ func CmdUpdateModel() *cobra.Command {
160160
lsfURL string
161161
lsfRevision int32
162162
schemaVersion uint32
163+
commissioningModeInitialStepsHint uint32
163164
)
164165

165166
cmd := &cobra.Command{
@@ -194,6 +195,7 @@ func CmdUpdateModel() *cobra.Command {
194195
lsfURL,
195196
lsfRevision,
196197
schemaVersion,
198+
commissioningModeInitialStepsHint,
197199
)
198200

199201
// validate basic will be called in GenerateOrBroadcastTxCLI
@@ -241,6 +243,12 @@ and for these values the commissioningModeSecondaryStepInstruction SHALL be set`
241243
cmd.Flags().Int32Var(&lsfRevision, FlagLsfRevision, 0,
242244
"LsfRevision is a monotonically increasing positive integer indicating the latest available version of Localized String File")
243245
cmd.Flags().Uint32Var(&schemaVersion, common.FlagSchemaVersion, 0, "Schema version")
246+
cmd.Flags().Uint32Var(&commissioningModeInitialStepsHint, FlagCommissioningModeInitialStepsHint, 0,
247+
`commissioningModeInitialStepsHint SHALL
248+
identify a hint for the steps that can be used to put into commissioning mode a device that
249+
has not yet been commissioned. This field is a bitmap with values defined in the Pairing Hint Table.
250+
For example, a value of 1 (bit 0 is set) indicates that a device that has not yet been commissioned
251+
will enter Commissioning Mode upon a power cycle. Note that this value cannot be updated to 0. (default 1).`)
244252

245253
cli.AddTxFlagsToCmd(cmd)
246254

x/model/handler_test.go

+44-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,47 @@ func TestHandler_AddModel(t *testing.T) {
170170
require.Equal(t, msgCreateModel.Vid, receivedModel.Vid)
171171
require.Equal(t, msgCreateModel.Pid, receivedModel.Pid)
172172
require.Equal(t, msgCreateModel.DeviceTypeId, receivedModel.DeviceTypeId)
173-
require.Equal(t, testconstants.SchemaVersion, receivedModel.SchemaVersion)
173+
}
174+
175+
func TestHandler_AddModel_CheckCommissioningModeInitialStepsHintHandling(t *testing.T) {
176+
cases := []struct {
177+
name string
178+
commissioningModeInitialStepsHint uint32
179+
expectedCommissioningModeInitialStepsHint uint32
180+
}{
181+
{
182+
name: "CommissioningModeInitialStepsHint=0 Sets Default 1",
183+
commissioningModeInitialStepsHint: 0,
184+
expectedCommissioningModeInitialStepsHint: 1,
185+
},
186+
{
187+
name: "CommissioningModeInitialStepsHint=2 Remains 2",
188+
commissioningModeInitialStepsHint: 2,
189+
expectedCommissioningModeInitialStepsHint: 2,
190+
},
191+
}
192+
193+
for _, tc := range cases {
194+
t.Run(tc.name, func(t *testing.T) {
195+
setup := Setup(t)
196+
197+
// add new model
198+
msgCreateModel := NewMsgCreateModel(setup.Vendor)
199+
msgCreateModel.CommissioningModeInitialStepsHint = tc.commissioningModeInitialStepsHint
200+
_, err := setup.Handler(setup.Ctx, msgCreateModel)
201+
require.NoError(t, err)
202+
203+
// query model
204+
receivedModel, err := queryModel(setup, msgCreateModel.Vid, msgCreateModel.Pid)
205+
require.NoError(t, err)
206+
207+
// check
208+
require.Equal(t, msgCreateModel.Vid, receivedModel.Vid)
209+
require.Equal(t, msgCreateModel.Pid, receivedModel.Pid)
210+
require.Equal(t, msgCreateModel.DeviceTypeId, receivedModel.DeviceTypeId)
211+
require.Equal(t, tc.expectedCommissioningModeInitialStepsHint, receivedModel.CommissioningModeInitialStepsHint)
212+
})
213+
}
174214
}
175215

176216
func TestHandler_UpdateModel(t *testing.T) {
@@ -194,7 +234,9 @@ func TestHandler_UpdateModel(t *testing.T) {
194234

195235
// update existing model
196236
var newSchemaVersion uint32 = 2
237+
var newCommissioningModeInitialStepsHint uint32 = 8
197238
msgUpdateModel.SchemaVersion = newSchemaVersion
239+
msgUpdateModel.CommissioningModeInitialStepsHint = newCommissioningModeInitialStepsHint
198240
_, err = setup.Handler(setup.Ctx, msgUpdateModel)
199241
require.NoError(t, err)
200242

@@ -208,6 +250,7 @@ func TestHandler_UpdateModel(t *testing.T) {
208250
require.Equal(t, msgUpdateModel.Vid, receivedModel.Vid)
209251
require.Equal(t, msgUpdateModel.Pid, receivedModel.Pid)
210252
require.Equal(t, msgUpdateModel.ProductLabel, receivedModel.ProductLabel)
253+
require.Equal(t, newCommissioningModeInitialStepsHint, receivedModel.CommissioningModeInitialStepsHint)
211254
require.Equal(t, newSchemaVersion, receivedModel.SchemaVersion)
212255
}
213256

x/model/keeper/msg_server_model.go

+10
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ func (k msgServer) CreateModel(goCtx context.Context, msg *types.MsgCreateModel)
5858
model.LsfRevision = 1
5959
}
6060

61+
// If CommissioningModeInitialStepsHint is 0, then set it to the default value of 1
62+
// Relevant issue: https://github.com/zigbee-alliance/distributed-compliance-ledger/issues/522
63+
if model.CommissioningModeInitialStepsHint == 0 {
64+
model.CommissioningModeInitialStepsHint = 1
65+
}
66+
6167
// store new model
6268
k.SetModel(
6369
ctx,
@@ -159,6 +165,10 @@ func (k msgServer) UpdateModel(goCtx context.Context, msg *types.MsgUpdateModel)
159165
}
160166
}
161167

168+
if msg.CommissioningModeInitialStepsHint != 0 {
169+
model.CommissioningModeInitialStepsHint = msg.CommissioningModeInitialStepsHint
170+
}
171+
162172
// store updated model
163173
k.SetModel(ctx, model)
164174

x/model/types/messages_model.go

+2
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ func NewMsgUpdateModel(
116116
lsfURL string,
117117
lsfRevision int32,
118118
schemaVersion uint32,
119+
commissioningModeInitialStepsHint uint32,
119120
) *MsgUpdateModel {
120121
return &MsgUpdateModel{
121122
Creator: creator,
@@ -134,6 +135,7 @@ func NewMsgUpdateModel(
134135
LsfUrl: lsfURL,
135136
LsfRevision: lsfRevision,
136137
SchemaVersion: schemaVersion,
138+
CommissioningModeInitialStepsHint: commissioningModeInitialStepsHint,
137139
}
138140
}
139141

0 commit comments

Comments
 (0)