Skip to content

Commit 7766c31

Browse files
committed
utest: workq测试
Signed-off-by: 无烬 <[email protected]>
1 parent e6bf3f5 commit 7766c31

File tree

4 files changed

+187
-17
lines changed

4 files changed

+187
-17
lines changed

apps/utest/test_workq/sim_imu_sensor.cpp

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ using namespace nextpilot::workq;
2323
using namespace nextpilot;
2424

2525
/**
26-
* @brief 模拟IMU,用ScheduleOnInterval()定周期发布角速率数据vehicle_angular_velocity
26+
* @brief 模拟IMU
27+
* 用ScheduleOnInterval()定周期发布角速率数据vehicle_angular_velocity
2728
*
2829
*/
2930
class SimIMU : public ModuleCommand<SimIMU>, public WorkItemScheduled {
@@ -54,6 +55,7 @@ class SimIMU : public ModuleCommand<SimIMU>, public WorkItemScheduled {
5455
}
5556

5657
int init() override {
58+
LOG_I("sim imu sensor initilized");
5759
ScheduleOnInterval(5_ms); // 200 Hz
5860
return 0;
5961
}
@@ -76,7 +78,7 @@ class SimIMU : public ModuleCommand<SimIMU>, public WorkItemScheduled {
7678
if ((_instance == 0) && (cnt % 20 == 0)) {
7779
rt_tick_t current_tick = rt_tick_get();
7880
uint64_t _start = hrt_absolute_time();
79-
LOG_I("[SimIMU]>>>instance=%d, t=%ld, dt=%ld, cnt=%d\n", _instance, current_tick, current_tick - _last_tick, cnt);
81+
// LOG_I("[SimIMU]>>>instance=%d, t=%ld, dt=%ld, cnt=%d\n", _instance, current_tick, current_tick - _last_tick, cnt);
8082

8183
uint64_t _delta = hrt_absolute_time() - _start;
8284
_last_tick = current_tick;
@@ -106,4 +108,24 @@ int sim_imu_start() {
106108
}
107109

108110
// INIT_APP_EXPORT(sim_imu_start);
109-
MSH_CMD_EXPORT_ALIAS(sim_imu_start, utest_imu_sensor, sim imu rate sensor);
111+
// MSH_CMD_EXPORT_ALIAS(sim_imu_start, utest_imu_sensor, sim imu rate sensor);
112+
113+
/**
114+
* @brief 命令入口函数
115+
* 启动: utest_imu_sensor start 0
116+
* 退出: utest_imu_sensor stop
117+
* 使用说明: utest_imu_sensor usage
118+
* 查看状态: utest_imu_sensor status
119+
*
120+
* @param argc
121+
* @param argv
122+
* @return int
123+
*/
124+
extern "C" int sim_imu_sensor_main(int argc, char *argv[]) {
125+
int ret;
126+
ret = SimIMU::main(argc, (char **)argv);
127+
128+
return ret;
129+
}
130+
131+
MSH_CMD_EXPORT_ALIAS(sim_imu_sensor_main, utest_imu_sensor, sim imu rate sensor);

apps/utest/test_workq/sim_rate_control.cpp

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ using namespace nextpilot::workq;
2222
using namespace nextpilot;
2323

2424
/**
25-
* @brief 模拟角速率控制,基于vehicle_angular_velocity主题的callback驱动run
25+
* @brief 模拟角速率控制
26+
* 基于vehicle_angular_velocity主题的callback驱动run
2627
*
2728
*/
2829

@@ -54,6 +55,7 @@ class SimRateControl : public ModuleCommand<SimRateControl>, public WorkItem {
5455
}
5556

5657
int init() override {
58+
LOG_I("sim rate control initilized");
5759
if (!_vehicle_angular_velocity_sub.register_callback()) {
5860
LOG_E("callback registration failed");
5961
return -1;
@@ -99,4 +101,24 @@ int sim_rate_ctrl_start() {
99101
}
100102

101103
// INIT_APP_EXPORT(sim_rate_ctrl_start);
102-
MSH_CMD_EXPORT_ALIAS(sim_rate_ctrl_start, utest_rate_ctrl, sim rate control);
104+
// MSH_CMD_EXPORT_ALIAS(sim_rate_ctrl_start, utest_rate_ctrl, sim rate control);
105+
106+
/**
107+
* @brief 命令入口函数
108+
* 启动: utest_rate_ctrl start 0
109+
* 退出: utest_rate_ctrl stop
110+
* 使用说明: utest_rate_ctrl usage
111+
* 查看状态: utest_rate_ctrl status
112+
*
113+
* @param argc
114+
* @param argv
115+
* @return int
116+
*/
117+
extern "C" int sim_rate_ctrl_main(int argc, char *argv[]) {
118+
int ret;
119+
ret = SimRateControl::main(argc, (char **)argv);
120+
121+
return ret;
122+
}
123+
124+
MSH_CMD_EXPORT_ALIAS(sim_rate_ctrl_main, utest_rate_ctrl, sim rate control);

apps/utest/test_workq/workq_scheduled.cpp

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,15 @@ class UTestWorkqScheduled : public ModuleCommand<UTestWorkqScheduled, 6>, public
5050
}
5151

5252
int init() override {
53-
ScheduleOnInterval(100_ms); // 8 Hz
53+
LOG_I("initialized {%d}", instance);
54+
ScheduleOnInterval(100_ms); // 10 Hz
5455
return 0;
5556
}
5657

5758
rt_tick_t _last_tick;
5859

5960
private:
6061
void Run() override {
61-
static uint32_t cnt = 0;
62-
static double total = 0.0f;
6362
if (should_exit()) {
6463
}
6564
// rt_thread_mdelay(1000);
@@ -75,15 +74,17 @@ class UTestWorkqScheduled : public ModuleCommand<UTestWorkqScheduled, 6>, public
7574
// total += 1.0 / sleep;
7675
// }
7776

78-
if (cnt % 10 == 0) {
77+
if (cnt % 20 == 0) {
7978
rt_tick_t current_tick = rt_tick_get();
8079
rt_kprintf("[wq_scheduled]>>>instance=%d, t=%ld, dt=%ld, cnt=%d\n", instance, current_tick, current_tick - _last_tick, cnt);
8180
_last_tick = current_tick;
8281
}
8382
cnt++;
8483
}
8584

86-
int instance;
85+
uint32_t cnt = 0;
86+
double total = 0.0f;
87+
int instance;
8788
};
8889

8990
int workq_scheduled_start() {
@@ -101,4 +102,24 @@ int workq_scheduled_start() {
101102
}
102103

103104
// INIT_APP_EXPORT(workq_scheduled_start);
104-
MSH_CMD_EXPORT_ALIAS(workq_scheduled_start, utest_wq_1, test workq scheduled);
105+
// MSH_CMD_EXPORT_ALIAS(workq_scheduled_start, utest_create_instances, test workq scheduled);
106+
107+
/**
108+
* @brief 命令入口函数
109+
* 创建实例: utest_create_instances start <id>, id取值[0,5],例如utest_create_instances start 0
110+
* 退出: utest_create_instances stop
111+
* 使用说明: utest_create_instances usage
112+
* 查看状态: utest_create_instances status
113+
*
114+
* @param argc
115+
* @param argv
116+
* @return int
117+
*/
118+
extern "C" int wq_create_instances_main(int argc, char *argv[]) {
119+
int ret;
120+
ret = UTestWorkqScheduled::main(argc, (char **)argv);
121+
122+
return ret;
123+
}
124+
125+
MSH_CMD_EXPORT_ALIAS(wq_create_instances_main, utest_create_instances, create multi instances);

bsps/px4/fmu-v5/config/utest.config

Lines changed: 111 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,6 +1424,111 @@ CONFIG_BOARD_CONSTRAINED_FLASH=y
14241424
# Nextpilot Peripheral Config
14251425
#
14261426

1427+
#
1428+
# actuator
1429+
#
1430+
# CONFIG_DRV_USING_PWM_OUT is not set
1431+
# end of actuator
1432+
1433+
#
1434+
# battery
1435+
#
1436+
# CONFIG_DRIVERS_BATT_SMBUS is not set
1437+
# CONFIG_DRV_USING_BATTERY_STATUS is not set
1438+
# CONFIG_MODULES_ESC_BATTERY is not set
1439+
# end of battery
1440+
1441+
#
1442+
# notification
1443+
#
1444+
1445+
#
1446+
# rgbled
1447+
#
1448+
# CONFIG_DRV_USING_RGBLED_PWM is not set
1449+
# CONFIG_DRV_USING_RGBLED_TCA62724 is not set
1450+
# end of rgbled
1451+
1452+
# CONFIG_DRV_USING_SAFETY_BUTTON is not set
1453+
# CONFIG_DRV_USING_TONE_ALARM is not set
1454+
# end of notification
1455+
1456+
#
1457+
# payload
1458+
#
1459+
# CONFIG_DRIVERS_CAMERA_CAPTURE is not set
1460+
# CONFIG_MODULES_CAMERA_FEEDBACK is not set
1461+
# CONFIG_DRIVERS_CAMERA_TRIGGER is not set
1462+
# CONFIG_MODULES_GIMBAL is not set
1463+
# CONFIG_MODULES_PAYLOAD_DELIVERER is not set
1464+
# end of payload
1465+
1466+
#
1467+
# radio control
1468+
#
1469+
# CONFIG_DRIVERS_RC_INPUT is not set
1470+
# end of radio control
1471+
1472+
#
1473+
# sensor
1474+
#
1475+
1476+
#
1477+
# airspeed sensors
1478+
#
1479+
# CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_MS4525DO is not set
1480+
# CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_MS5525DSO is not set
1481+
# end of airspeed sensors
1482+
1483+
#
1484+
# baro sensors
1485+
#
1486+
# CONFIG_DRIVERS_BAROMETER_BMP388 is not set
1487+
# CONFIG_DRIVERS_BAROMETER_MS5611 is not set
1488+
# end of baro sensors
1489+
1490+
#
1491+
# gnss sensors
1492+
#
1493+
# CONFIG_DRV_USING_GPS is not set
1494+
# CONFIG_DRIVERS_PPS_CAPTURE is not set
1495+
# end of gnss sensors
1496+
1497+
#
1498+
# imu sensors
1499+
#
1500+
# CONFIG_DRV_USING_BOSCH_BMI055 is not set
1501+
# CONFIG_DRV_USING_BMI088 is not set
1502+
# CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P is not set
1503+
# end of imu sensors
1504+
1505+
#
1506+
# ins sensors
1507+
#
1508+
# CONFIG_DRV_USING_PA_GS02B is not set
1509+
# end of ins sensors
1510+
1511+
#
1512+
# mag sensors
1513+
#
1514+
# CONFIG_DRIVERS_MAGNETOMETER_BOSCH_BMM150 is not set
1515+
# CONFIG_DRIVERS_MAGNETOMETER_ISENTEK_IST8310 is not set
1516+
# CONFIG_DRIVERS_MAGNETOMETER_RM3100 is not set
1517+
# end of mag sensors
1518+
1519+
#
1520+
# Optical flow
1521+
#
1522+
# CONFIG_COMMON_OPTICAL_FLOW is not set
1523+
# CONFIG_DRIVERS_OPTICAL_FLOW_PAA3905 is not set
1524+
# CONFIG_DRIVERS_OPTICAL_FLOW_PAW3902 is not set
1525+
# CONFIG_DRIVERS_OPTICAL_FLOW_PMW3901 is not set
1526+
# CONFIG_DRIVERS_OPTICAL_FLOW_PX4FLOW is not set
1527+
# CONFIG_DRIVERS_OPTICAL_FLOW_THONEFLOW is not set
1528+
# end of Optical flow
1529+
# end of sensor
1530+
# end of Nextpilot Peripheral Config
1531+
14271532
#
14281533
# Nextpilot Simulation Config
14291534
#
@@ -1456,8 +1561,10 @@ CONFIG_BOARD_CONSTRAINED_FLASH=y
14561561
#
14571562
# NextPilot UnitTest Config
14581563
#
1564+
# CONFIG_TEST_PKG_HRTIMER is not set
1565+
# CONFIG_TEST_MC_CTRL is not set
14591566
CONFIG_TEST_CREATE_THREAD=y
1460-
CONFIG_TEST_UORB=y
1567+
# CONFIG_TEST_PKG_UORB is not set
14611568
CONFIG_TEST_WORK_QUEUE=y
14621569
# end of NextPilot UnitTest Config
14631570
# end of Nextpilot Firmware Config
@@ -1488,14 +1595,12 @@ CONFIG_PKG_USING_LIBCRC=y
14881595
CONFIG_PKG_USING_MATHLIB=y
14891596
CONFIG_PKG_USING_MATRIX=y
14901597
CONFIG_PKG_USING_PARAM=y
1491-
CONFIG_PARAM_USING_GLOBAL_AUTOGEN=y
1492-
# CONFIG_PARAM_USING_LINKER_SECTION is not set
1493-
# CONFIG_PARAM_USING_SIMULINK_CAPI is not set
1494-
CONFIG_PARAM_USING_STORAGE_FILE=y
1495-
# CONFIG_PARAM_USING_STORAGE_FM25V02 is not set
1598+
# CONFIG_PKG_USING_PARAM_V1 is not set
1599+
CONFIG_PKG_USING_PARAM_V2=y
14961600
CONFIG_PARAM_DEFAULT_FILE_PATH="/param.bin"
14971601
CONFIG_PARAM_USING_DEVICE_FILE=y
14981602
# CONFIG_PARAM_USING_DEVICE_FM25V02 is not set
1603+
# CONFIG_PARAM_USING_USER_CONIFG_FILE is not set
14991604
CONFIG_PKG_USING_PERF=y
15001605
CONFIG_PKG_USING_QUEUE=y
15011606
CONFIG_PKG_USING_RING_BUFFER=y

0 commit comments

Comments
 (0)