@@ -80,15 +80,20 @@ func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesRes
8080 if ! found {
8181 return AppBrickInstancesResult {}, fmt .Errorf ("brick not found with id %s" , brickInstance .ID )
8282 }
83+
84+ instanceVariables := getBrickInstanceVariableDetails (brick , brickInstance .Variables )
85+
8386 res .BrickInstances [i ] = BrickInstance {
84- ID : brick .ID ,
85- Name : brick .Name ,
86- Author : "Arduino" , // TODO: for now we only support our bricks
87- Category : brick .Category ,
88- Status : "installed" ,
89- ModelID : brickInstance .Model , // TODO: in case is not set by the user, should we return the default model?
90- Variables : brickInstance .Variables , // TODO: do we want to show also the default value of not explicitly set variables?
87+ ID : brick .ID ,
88+ Name : brick .Name ,
89+ Author : "Arduino" , // TODO: for now we only support our bricks
90+ Category : brick .Category ,
91+ Status : "installed" ,
92+ ModelID : brickInstance .Model , // TODO: in case is not set by the user, should we return the default model?
93+ Variables : brickInstance .Variables , // TODO: do we want to show also the default value of not explicitly set variables?
94+ VariablesDetails : instanceVariables ,
9195 }
96+
9297 }
9398 return res , nil
9499}
@@ -111,21 +116,40 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
111116 // Add/Update the variables with the ones from the app descriptor
112117 maps .Copy (variables , a .Descriptor .Bricks [brickIndex ].Variables )
113118
119+ instanceVariables := getBrickInstanceVariableDetails (brick , a .Descriptor .Bricks [brickIndex ].Variables )
120+
114121 modelID := a .Descriptor .Bricks [brickIndex ].Model
115122 if modelID == "" {
116123 modelID = brick .ModelName
117124 }
118125
119126 return BrickInstance {
120- ID : brickID ,
121- Name : brick .Name ,
122- Author : "Arduino" , // TODO: for now we only support our bricks
123- Category : brick .Category ,
124- Status : "installed" , // For now every Arduino brick are installed
125- Variables : variables ,
126- ModelID : modelID ,
127+ ID : brickID ,
128+ Name : brick .Name ,
129+ Author : "Arduino" , // TODO: for now we only support our bricks
130+ Category : brick .Category ,
131+ Status : "installed" , // For now every Arduino brick are installed
132+ Variables : variables ,
133+ VariablesDetails : instanceVariables ,
134+ ModelID : modelID ,
127135 }, nil
128136}
137+ func getBrickInstanceVariableDetails (
138+ brick * bricksindex.Brick ,
139+ brickInstanceVariables map [string ]string ,
140+ ) []BrickInstanceVariable {
141+ variableDetails := make ([]BrickInstanceVariable , 0 , len (brick .Variables ))
142+ for _ , v := range brick .Variables {
143+ value := brickInstanceVariables [v .Name ]
144+ variableDetails = append (variableDetails , BrickInstanceVariable {
145+ Name : v .Name ,
146+ Value : value ,
147+ Description : v .Description ,
148+ Required : v .IsRequired (),
149+ })
150+ }
151+ return variableDetails
152+ }
129153
130154func (s * Service ) BricksDetails (id string , idProvider * app.IDProvider ,
131155 cfg config.Configuration ) (BrickDetailsResult , error ) {
0 commit comments