Skip to content

Commit a4b5349

Browse files
author
Aaron Roller
committed
feat: app required for any maker/model platform AM-686/platform-req
1 parent 6a8685e commit a4b5349

6 files changed

Lines changed: 67 additions & 1 deletion

File tree

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ if (CATKIN_ENABLE_TESTING)
224224
hz_config
225225
manual_to_disarming
226226
param
227+
platform_app_required_pass
227228
platform_required_fail
228229
platform_required_pass
229230
primary
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <am_rostest_lib/am_rostest.h>
2+
3+
class PlatformRequiredPassTest : public RostestBase, am::AMLifeCycle
4+
{
5+
protected:
6+
7+
PlatformRequiredPassTest() : RostestBase() {
8+
}
9+
10+
};
11+
12+
TEST_F(PlatformRequiredPassTest, requiredPlatformInLaunchFile)
13+
{
14+
std::string missing = "missing";
15+
16+
std::string platform_required_param;
17+
ros::param::param<string>("/am_super/platform/required", platform_required_param, missing);
18+
ASSERT_EQ(platform_required_param,missing);
19+
20+
std::string platform_app_required_param;
21+
ros::param::param<string>("/am_super/platform/app/required", platform_app_required_param, missing);
22+
ASSERT_EQ(platform_app_required_param,"test");
23+
24+
std::string platform_actual_param;
25+
ros::param::param<string>("/am_super/platform/actual", platform_actual_param, missing);
26+
ASSERT_EQ(platform_actual_param,"maker_model_test");
27+
waitUntil(LifeCycleState::CONFIGURING,"XXSS");
28+
waitUntil(LifeCycleState::INACTIVE,"SSXX");
29+
waitUntilMissionState(brain_box_msgs::VxState::READY,"XSXS");
30+
}
31+
32+
int main(int argc, char** argv)
33+
{
34+
::testing::InitGoogleTest(&argc, argv);
35+
ros::init(argc, argv, ros::this_node::getName());
36+
37+
return RUN_ALL_TESTS();
38+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<launch>
2+
<!-- include test file and pass in this test node name -->
3+
<include file="$(find am_super)/rostest/am_super_rostest.test">
4+
<arg name="test_name" value="platform_app_required_pass"/>
5+
</include>
6+
<!-- only the app matters, the maker/model does not -->
7+
<rosparam param="/am_super/platform/app/required">test</rosparam>
8+
<rosparam param="/am_super/platform/actual">maker_model_test</rosparam>
9+
</launch>

src/am_super/am_super.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,14 +651,20 @@ class AMSuper : AMLifeCycle
651651
error("NNS9",true);
652652
return;
653653
}
654+
node_mediator_.platformConfigToVariant(actual_platform_param,actual_platform);
654655

655656
//compare actual platform to required platform, if provided
656657
std::string required_platform_param;
658+
std::string platform_app_required_param;
657659
param("platform/required",required_platform_param,not_provided);
660+
param("platform/app/required",platform_app_required_param,not_provided);
658661
if(required_platform_param != not_provided)
659662
{
660663
node_mediator_.platformConfigToVariant(required_platform_param,required_platform);
661-
node_mediator_.platformConfigToVariant(actual_platform_param,actual_platform);
664+
}
665+
else if(platform_app_required_param != not_provided)
666+
{
667+
required_platform.app = platform_app_required_param;
662668
}
663669
else
664670
{

src/am_super/super_node_mediator.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,11 @@ std::string SuperNodeMediator::platformVariantToConfig(const SuperNodeMediator::
373373
}
374374
}
375375
}
376+
else if(!variant.app.empty())
377+
{
378+
std::string any = "*";
379+
config << any << dilimeter << any << dilimeter << variant.app;
380+
}
376381
return config.str();
377382
}
378383

test/super_node_mediator_unit_tests.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,13 @@ TEST_F(SuperNodeMediatorTest, platformVariantToConfig_makerModelApp)
604604
ASSERT_EQ(superNodeMediator.platformVariantToConfig(variant),"dji_m300_bridge");
605605
}
606606

607+
TEST_F(SuperNodeMediatorTest, platformVariantToConfig_appOnlyShowsWildcard)
608+
{
609+
SuperNodeMediator::PlatformVariant variant;
610+
variant.app="bridge";
611+
ASSERT_EQ(superNodeMediator.platformVariantToConfig(variant),"*_*_bridge");
612+
}
613+
607614

608615
TEST_F(SuperNodeMediatorTest, isCorrectPlatform_sameConfigIsTrue)
609616
{

0 commit comments

Comments
 (0)