Skip to content

Commit 850b011

Browse files
authored
Implement methods for getting overcurrent status. (#57)
1 parent ccf6d0c commit 850b011

3 files changed

Lines changed: 43 additions & 13 deletions

File tree

src/create.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,6 +1036,36 @@ namespace create {
10361036
}
10371037
}
10381038

1039+
bool Create::isSideBrushOvercurrent() const {
1040+
if (data->isValidPacketID(ID_OVERCURRENTS)) {
1041+
return (GET_DATA(ID_OVERCURRENTS) & 0x01) != 0;
1042+
}
1043+
else {
1044+
CERR("[create::Create] ", "Overcurrent sensor not supported!");
1045+
return false;
1046+
}
1047+
}
1048+
1049+
bool Create::isMainBrushOvercurrent() const {
1050+
if (data->isValidPacketID(ID_OVERCURRENTS)) {
1051+
return (GET_DATA(ID_OVERCURRENTS) & 0x04) != 0;
1052+
}
1053+
else {
1054+
CERR("[create::Create] ", "Overcurrent sensor not supported!");
1055+
return false;
1056+
}
1057+
}
1058+
1059+
bool Create::isWheelOvercurrent() const {
1060+
if (data->isValidPacketID(ID_OVERCURRENTS)) {
1061+
return (GET_DATA(ID_OVERCURRENTS) & 0x18) != 0;
1062+
}
1063+
else {
1064+
CERR("[create::Create] ", "Overcurrent sensor not supported!");
1065+
return false;
1066+
}
1067+
}
1068+
10391069
float Create::getLeftWheelDistance() const {
10401070
return totalLeftDist;
10411071
}

src/data.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace create {
1717
ADD_PACKET(ID_CLIFF_FRONT_RIGHT, 1, "cliff_front_right", V_ALL);
1818
ADD_PACKET(ID_CLIFF_RIGHT, 1, "cliff_right", V_ALL);
1919
ADD_PACKET(ID_VIRTUAL_WALL, 1, "virtual_wall", V_ALL);
20-
ADD_PACKET(ID_OVERCURRENTS, 1, "overcurrents", V_1);
20+
ADD_PACKET(ID_OVERCURRENTS, 1, "overcurrents", V_ALL);
2121
ADD_PACKET(ID_DIRT_DETECT_LEFT, 1, "dirt_detect_left", V_ALL);
2222
ADD_PACKET(ID_DIRT_DETECT_RIGHT, 1, "dirt_detect_right", V_1);
2323
ADD_PACKET(ID_IR_OMNI, 1, "ir_opcode", V_ALL);

tests/test_data.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,21 @@ TEST(DataTest, Constructor)
5252
// Number of packets for a given protocol are determined in the Data() constructor
5353
TEST(DataTest, GetNumPackets)
5454
{
55-
// Number of packets shared by all protocols is 16
55+
// Number of packets shared by all protocols is 17
5656
create::Data data_v_1(create::V_1);
57-
// Number exclusive to V_1 = 4
58-
// 16 + 4 = 20
57+
// Number exclusive to V_1 = 3
58+
// 17 + 3 = 20
5959
EXPECT_EQ(static_cast<int>(data_v_1.getNumPackets()), 20);
6060

6161
create::Data data_v_2(create::V_2);
6262
// Number exclusive to V_2 = 3
63-
// 16 + 3 = 19
64-
EXPECT_EQ(static_cast<int>(data_v_2.getNumPackets()), 19);
63+
// 17 + 3 = 20
64+
EXPECT_EQ(static_cast<int>(data_v_2.getNumPackets()), 20);
6565

6666
create::Data data_v_3(create::V_3);
6767
// Number exclusive to V_3 = 13
68-
// 16 + 13 = 29
69-
EXPECT_EQ(static_cast<int>(data_v_3.getNumPackets()), 29);
68+
// 17 + 13 = 30
69+
EXPECT_EQ(static_cast<int>(data_v_3.getNumPackets()), 30);
7070

7171
create::Data data_v_all(create::V_ALL);
7272
EXPECT_EQ(static_cast<int>(data_v_all.getNumPackets()), 33);
@@ -108,7 +108,7 @@ TEST(DataTest, GetPacketIDs)
108108
create::Data data_v_3(create::V_3);
109109
const std::vector<uint8_t> packet_ids = data_v_3.getPacketIDs();
110110
// Vector should have same length as reported by getNumPackets()
111-
ASSERT_EQ(static_cast<int>(packet_ids.size()), 29);
111+
ASSERT_EQ(static_cast<int>(packet_ids.size()), 30);
112112

113113
// Vector should contain ID_LEFT_ENC
114114
bool found = false;
@@ -124,18 +124,18 @@ TEST(DataTest, GetPacketIDs)
124124

125125
TEST(DataTest, GetTotalDataBytes)
126126
{
127-
// All protocols have 20 mutual data bytes
128-
// V_1 has an additional 6 bytes
127+
// All protocols have 21 mutual data bytes
128+
// V_1 has an additional 5 bytes
129129
create::Data data_v_1(create::V_1);
130130
EXPECT_EQ(static_cast<int>(data_v_1.getTotalDataBytes()), 26);
131131

132132
// V_2 has an additional 5 bytes
133133
create::Data data_v_2(create::V_2);
134-
EXPECT_EQ(static_cast<int>(data_v_2.getTotalDataBytes()), 25);
134+
EXPECT_EQ(static_cast<int>(data_v_2.getTotalDataBytes()), 26);
135135

136136
// V_3 has an additional 21 bytes
137137
create::Data data_v_3(create::V_3);
138-
EXPECT_EQ(static_cast<int>(data_v_3.getTotalDataBytes()), 41);
138+
EXPECT_EQ(static_cast<int>(data_v_3.getTotalDataBytes()), 42);
139139
}
140140

141141
TEST(DataTest, IsValidPacketID)

0 commit comments

Comments
 (0)