mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-01 17:21:36 +08:00
Merge pull request #2518 from mcharleb/posix-muorb
POSIX: added muorb tests
This commit is contained in:
@@ -37,9 +37,9 @@
|
|||||||
|
|
||||||
MODULE_COMMAND = muorb_test
|
MODULE_COMMAND = muorb_test
|
||||||
|
|
||||||
INCLUDE_DIRS += ${PX4_BASE}../muorb_krait \
|
INCLUDE_DIRS += \
|
||||||
${PX4_BASE}../muorb_krait/lib/include \
|
$(EXT_MUORB_LIB_ROOT)/krait/include \
|
||||||
${PX4_BASE}../muorb_krait/Pal/lib
|
$(PX4_BASE)src/modules/muorb/krait
|
||||||
|
|
||||||
SRCS = muorb_test_main.cpp \
|
SRCS = muorb_test_main.cpp \
|
||||||
muorb_test_start_posix.cpp \
|
muorb_test_start_posix.cpp \
|
||||||
|
|||||||
@@ -48,9 +48,16 @@ px4::AppState MuorbTestExample::appState;
|
|||||||
|
|
||||||
int MuorbTestExample::main()
|
int MuorbTestExample::main()
|
||||||
{
|
{
|
||||||
|
int rc;
|
||||||
appState.setRunning(true);
|
appState.setRunning(true);
|
||||||
|
rc = PingPongTest();
|
||||||
|
appState.setRunning(false);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
int i=0;
|
int MuorbTestExample::DefaultTest()
|
||||||
|
{
|
||||||
|
int i=0;
|
||||||
orb_advert_t pub_id = orb_advertise( ORB_ID( esc_status ), & m_esc_status );
|
orb_advert_t pub_id = orb_advertise( ORB_ID( esc_status ), & m_esc_status );
|
||||||
if( pub_id == 0 )
|
if( pub_id == 0 )
|
||||||
{
|
{
|
||||||
@@ -75,9 +82,9 @@ int MuorbTestExample::main()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!appState.exitRequested() && i<100) {
|
while (!appState.exitRequested() && i<100) {
|
||||||
|
|
||||||
PX4_DEBUG("[%d] Doing work...", i );
|
PX4_DEBUG("[%d] Doing work...", i );
|
||||||
if( orb_publish( ORB_ID( esc_status ), pub_id, &m_esc_status ) == PX4_ERROR )
|
if( orb_publish( ORB_ID( esc_status ), pub_id, &m_esc_status ) == PX4_ERROR )
|
||||||
{
|
{
|
||||||
PX4_ERR( "[%d]Error publishing the esc status message for iter", i );
|
PX4_ERR( "[%d]Error publishing the esc status message for iter", i );
|
||||||
@@ -111,8 +118,66 @@ int MuorbTestExample::main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
return 0;
|
}
|
||||||
|
|
||||||
|
int MuorbTestExample::PingPongTest()
|
||||||
|
{
|
||||||
|
int i=0;
|
||||||
|
orb_advert_t pub_id_vc = orb_advertise( ORB_ID( vehicle_command ), & m_vc );
|
||||||
|
if( pub_id_vc == 0 )
|
||||||
|
{
|
||||||
|
PX4_ERR( "error publishing vehicle_command" );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if( orb_publish( ORB_ID( vehicle_command ), pub_id_vc, &m_vc ) == PX4_ERROR )
|
||||||
|
{
|
||||||
|
PX4_ERR( "[%d]Error publishing the vechile command message", i );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int sub_esc_status = orb_subscribe( ORB_ID( esc_status ) );
|
||||||
|
if ( sub_esc_status == PX4_ERROR )
|
||||||
|
{
|
||||||
|
PX4_ERR( "Error subscribing to esc_status topic" );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!appState.exitRequested() ) {
|
||||||
|
|
||||||
|
PX4_INFO("[%d] Doing work...", i );
|
||||||
|
bool updated = false;
|
||||||
|
if( orb_check( sub_esc_status, &updated ) == 0 )
|
||||||
|
{
|
||||||
|
if( updated )
|
||||||
|
{
|
||||||
|
PX4_INFO( "[%d]ESC status is updated... reading new value", i );
|
||||||
|
if( orb_copy( ORB_ID( esc_status ), sub_esc_status, &m_esc_status ) != 0 )
|
||||||
|
{
|
||||||
|
PX4_ERR( "[%d]Error calling orb copy for esc status... ", i );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if( orb_publish( ORB_ID( vehicle_command ), pub_id_vc, &m_vc ) == PX4_ERROR )
|
||||||
|
{
|
||||||
|
PX4_ERR( "[%d]Error publishing the vechile command message", i );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PX4_INFO( "[%d] esc status topic is not updated", i );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PX4_ERR( "[%d]Error checking the updated status for esc status... ", i );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// sleep for 1 sec.
|
||||||
|
usleep( 1000000 );
|
||||||
|
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public:
|
|||||||
|
|
||||||
static px4::AppState appState; /* track requests to terminate app */
|
static px4::AppState appState; /* track requests to terminate app */
|
||||||
private:
|
private:
|
||||||
|
int DefaultTest();
|
||||||
|
int PingPongTest();
|
||||||
struct esc_status_s m_esc_status;
|
struct esc_status_s m_esc_status;
|
||||||
struct vehicle_command_s m_vc;
|
struct vehicle_command_s m_vc;
|
||||||
|
|
||||||
|
|||||||
@@ -51,16 +51,9 @@ int PX4_MAIN(int argc, char **argv)
|
|||||||
|
|
||||||
PX4_DEBUG("muorb_test");
|
PX4_DEBUG("muorb_test");
|
||||||
|
|
||||||
// register the fast rpc channel with UORB.
|
|
||||||
uORB::Manager::get_instance()->set_uorb_communicator( uORB::KraitFastRpcChannel::GetInstance() );
|
|
||||||
|
|
||||||
// start the KaitFastRPC channel thread.
|
|
||||||
uORB::KraitFastRpcChannel::GetInstance()->Start();
|
|
||||||
|
|
||||||
MuorbTestExample hello;
|
MuorbTestExample hello;
|
||||||
hello.main();
|
hello.main();
|
||||||
|
|
||||||
uORB::KraitFastRpcChannel::GetInstance()->Stop();
|
|
||||||
PX4_DEBUG("goodbye");
|
PX4_DEBUG("goodbye");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user