Skip to content

Commit 5aba97b

Browse files
committed
Integration testing and bug fixing
1 parent 175f5fb commit 5aba97b

14 files changed

Lines changed: 460 additions & 31 deletions

File tree

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{
2+
"ports": [
3+
{
4+
"id": 1,
5+
"connected": true,
6+
"device": {
7+
"type": "BOOST Color and Distance Sensor",
8+
"deviceId": 37,
9+
"icon": "⚙️",
10+
"modes": [
11+
{
12+
"id": 0,
13+
"name": "COLOR",
14+
"units": "IDX",
15+
"datasets": 1,
16+
"figures": 3,
17+
"decimals": 0,
18+
"type": "DATA8"
19+
},
20+
{
21+
"id": 1,
22+
"name": "PROX",
23+
"units": "DIS",
24+
"datasets": 1,
25+
"figures": 3,
26+
"decimals": 0,
27+
"type": "DATA8"
28+
},
29+
{
30+
"id": 2,
31+
"name": "COUNT",
32+
"units": "CNT",
33+
"datasets": 1,
34+
"figures": 4,
35+
"decimals": 0,
36+
"type": "DATA32"
37+
},
38+
{
39+
"id": 3,
40+
"name": "REFLT",
41+
"units": "PCT",
42+
"datasets": 1,
43+
"figures": 3,
44+
"decimals": 0,
45+
"type": "DATA8"
46+
},
47+
{
48+
"id": 4,
49+
"name": "AMBI",
50+
"units": "PCT",
51+
"datasets": 1,
52+
"figures": 3,
53+
"decimals": 0,
54+
"type": "DATA8"
55+
},
56+
{
57+
"id": 5,
58+
"name": "COL O",
59+
"units": "IDX",
60+
"datasets": 1,
61+
"figures": 3,
62+
"decimals": 0,
63+
"type": "DATA8"
64+
},
65+
{
66+
"id": 6,
67+
"name": "RGB I",
68+
"units": "RAW",
69+
"datasets": 3,
70+
"figures": 5,
71+
"decimals": 0,
72+
"type": "DATA16"
73+
},
74+
{
75+
"id": 7,
76+
"name": "IR Tx",
77+
"units": "N/A",
78+
"datasets": 1,
79+
"figures": 5,
80+
"decimals": 0,
81+
"type": "DATA16"
82+
}
83+
]
84+
}
85+
},
86+
{
87+
"id": 2,
88+
"connected": false
89+
},
90+
{
91+
"id": 3,
92+
"connected": false
93+
},
94+
{
95+
"id": 4,
96+
"connected": false
97+
}
98+
]
99+
}
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
export const colorControlFlow = 25;
2-
export const colorLogic = 50;
3-
export const colorMath = 75;
4-
export const colorText = 100;
5-
export const colorLists = 125;
6-
export const colorIO = 150;
7-
export const colorFastLED = 175;
8-
export const colorIMU = 200;
9-
export const colorUI = 225;
10-
export const colorDebug = 245;
1+
export const colorControlFlow = 20;
2+
export const colorLogic = 40;
3+
export const colorMath = 60;
4+
export const colorText = 80;
5+
export const colorLists = 100;
6+
export const colorIO = 120;
7+
export const colorLego = 140;
8+
export const colorFastLED = 160;
9+
export const colorIMU = 180;
10+
export const colorUI = 200;
11+
export const colorDebug = 220;

frontend/src/components/blockly/component.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import {definition as mh_imu_acceleration_y} from './mh_imu_acceleration_y.js'
2929
import {definition as mh_imu_acceleration_z} from './mh_imu_acceleration_z.js'
3030
import {definition as ui_show_value} from './ui_show_value.js'
3131
import {definition as mh_debug_free_heap} from './mh_debug_free_heap.js'
32+
import {definition as lego_get_mode_dataset} from './lego_get_mode_dataset.js'
33+
import {definition as lego_select_mode} from './lego_select_mode.js'
3234

3335
import {colorLogic,
3436
colorMath,
@@ -251,6 +253,10 @@ const customBlocks = {
251253

252254
"mh_set_motor_speed" : mh_set_motor_speed,
253255

256+
"lego_get_mode_dataset": lego_get_mode_dataset,
257+
258+
"lego_select_mode": lego_select_mode,
259+
254260
"mh_fastled_addleds": mh_fastled_addleds,
255261

256262
"mh_fastled_show": mh_fastled_show,
@@ -273,7 +279,7 @@ const customBlocks = {
273279

274280
"ui_show_value" : ui_show_value,
275281

276-
"mh_debug_free_heap" : mh_debug_free_heap,
282+
"mh_debug_free_heap": mh_debug_free_heap,
277283
};
278284

279285
function generateToolbox(definitions) {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import {colorLego} from './colors.js'
2+
3+
// clang-format off
4+
export const definition = {
5+
category : 'LEGO©',
6+
colour : colorLego,
7+
blockdefinition : {
8+
"type" : "lego_get_mode_dataset",
9+
"message0" : "Get dataset %2 from selected mode of %1",
10+
"args0" : [
11+
{
12+
"type" : "field_dropdown",
13+
"name" : "PORT",
14+
"options" : [
15+
[ "PORT1", "PORT1" ],
16+
[ "PORT2", "PORT2" ],
17+
[ "PORT3", "PORT3" ],
18+
[ "PORT4", "PORT4" ]
19+
]
20+
},
21+
{
22+
"type" : "input_value",
23+
"name" : "DATASET"
24+
}
25+
],
26+
"output" : null,
27+
"colour" : colorLego,
28+
"tooltip" : "Get a dataset value from the selected mode of a port",
29+
"helpUrl" : ""
30+
},
31+
generator : (block, generator) => {
32+
const port = block.getFieldValue('PORT');
33+
34+
const datasetCode = generator.valueToCode(block, 'DATASET', 0);
35+
36+
const command = "lego.getmodedataset(" + port + "," + datasetCode + ")";
37+
return [ command, 0 ];
38+
}
39+
};
40+
// clang-format on
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import {colorLego} from './colors.js'
2+
3+
// clang-format off
4+
export const definition = {
5+
category : 'LEGO©',
6+
colour : colorLego,
7+
blockdefinition : {
8+
"type" : "lego_select_mode",
9+
"message0" : "Set the mode of %1 to %2",
10+
"args0" : [
11+
{
12+
"type" : "field_dropdown",
13+
"name" : "PORT",
14+
"options" : [
15+
[ "PORT1", "PORT1" ],
16+
[ "PORT2", "PORT2" ],
17+
[ "PORT3", "PORT3" ],
18+
[ "PORT4", "PORT4" ]
19+
]
20+
},
21+
{
22+
"type" : "input_value",
23+
"name" : "MODE"
24+
}
25+
],
26+
"previousStatement" : true,
27+
"nextStatement" : true,
28+
"colour" : colorLego,
29+
"tooltip" : "Sets the mode of a port",
30+
"helpUrl" : ""
31+
},
32+
generator : (block, generator) => {
33+
const port = block.getFieldValue('PORT');
34+
35+
const modeCode = generator.valueToCode(block, 'MODE', 0);
36+
37+
return "lego.selectmode(" + port + ", " + modeCode + ")\n";
38+
}
39+
};
40+
// clang-format on

frontend/src/components/portstatus/component.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class PortstatusElement extends HTMLElement {
5757
<div class="modes-section">
5858
<div class="modes-label">Modes</div>
5959
<div class="modes-list">
60-
${port.device.modes.map(mode => `<span class="mode-badge">${mode}</span>`).join('')}
60+
${port.device.modes.map(mode => `<span class="mode-badge">(${mode.id}) ${mode.name}</span>`).join('')}
6161
</div>
6262
</div>
6363
`;

lib/lpfuart/include/legodevice.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class LegoDevice {
2222
void setSerialSpeed(long serialSpeed);
2323
void setVersions(std::string &fwVersion, std::string &hwVersion);
2424
Mode *getMode(int index);
25-
Mode *selectedMode();
25+
int getSelectedModeIndex();
2626
void finishHandshake();
2727
void sendAck();
2828
void sendNack();
@@ -51,6 +51,8 @@ class LegoDevice {
5151

5252
void reset();
5353

54+
int getDeviceId();
55+
5456
private:
5557
long serialSpeed_;
5658
Mode **modes_;

lib/lpfuart/include/mode.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ class Mode {
3939
void reset();
4040

4141
void processDataPacket(int *payload, int payloadSize);
42+
Dataset *getDataset(int index);
43+
Format* getFormat();
4244

4345
private:
4446
std::string name_;

lib/lpfuart/src/dataset.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void Dataset::readData(Format::FormatType type, int *payload) {
4141
break;
4242
}
4343
default:
44-
WARN("Ingnoring dataset of type %d as it is currently not supported", type);
44+
WARN("Unsupported data format");
4545
break;
4646
}
4747
}
@@ -61,7 +61,7 @@ int Dataset::getDataAsInt() {
6161
return (int) floatValue_;
6262
}
6363
default: {
64-
WARN("Currently no data available");
64+
WARN("Unsupported data format");
6565
return 0;
6666
}
6767
}
@@ -82,7 +82,7 @@ float Dataset::getDataAsFloat() {
8282
return floatValue_;
8383
}
8484
default: {
85-
WARN("Currently no data available");
85+
WARN("Unsupported data format");
8686
return 0.0f;
8787
}
8888
}

lib/lpfuart/src/legodevice.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,10 @@ void LegoDevice::setVersions(std::string &fwVersion, std::string &hwVersion) {
105105
}
106106

107107
Mode *LegoDevice::getMode(int index) {
108-
return modes_[index];
109-
}
110-
111-
Mode *LegoDevice::selectedMode() {
112-
if (selectedMode_ == -1) {
108+
if (index == -1) {
113109
return nullptr;
114110
}
115-
return modes_[selectedMode_];
111+
return modes_[index];
116112
}
117113

118114
void LegoDevice::finishHandshake() {
@@ -267,3 +263,11 @@ std::string LegoDevice::name() {
267263
int LegoDevice::numModes() {
268264
return numModes_;
269265
}
266+
267+
int LegoDevice::getSelectedModeIndex() {
268+
return selectedMode_;
269+
}
270+
271+
int LegoDevice::getDeviceId() {
272+
return deviceId_;
273+
}

0 commit comments

Comments
 (0)