Skip to content

Commit f2685b1

Browse files
Li.TianmingLi.Tianming
authored andcommitted
Finish MSP_OSD distanceToHome message
🏠5000
1 parent 2ba42cb commit f2685b1

File tree

4 files changed

+53
-4
lines changed

4 files changed

+53
-4
lines changed

src/drivers/osd/msp_osd/msp_defines.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,16 @@ struct msp_comp_gps_t {
473473
uint8_t heartbeat; // toggles 0 and 1 for each change
474474
} __attribute__((packed));
475475

476+
struct msp_rendor_distanceToHome_t{
477+
uint8_t subCommand = 0x03; // 0x03 subcommand write string. fixed
478+
uint8_t screenYPosition;
479+
uint8_t screenXPosition;
480+
uint8_t iconAttrs = 0x00; //
481+
uint8_t iconIndex = 0x71; //distanceToHome icon
482+
483+
char str[6]; // 65536
484+
} __attribute__((packed));
485+
476486

477487
// values for msp_nav_status_t.mode
478488
#define MSP_NAV_STATUS_MODE_NONE 0

src/drivers/osd/msp_osd/msp_osd.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -402,18 +402,23 @@ void MspOsd::Run()
402402
// update heartbeat
403403
// _heartbeat = !_heartbeat;
404404

405-
// home_position_s home_position{};
406-
// _home_position_sub.copy(&home_position);
405+
home_position_s home_position{};
406+
_home_position_sub.copy(&home_position);
407407

408-
// vehicle_global_position_s vehicle_global_position{};
409-
// _vehicle_global_position_sub.copy(&vehicle_global_position);
408+
vehicle_global_position_s vehicle_global_position{};
409+
_vehicle_global_position_sub.copy(&vehicle_global_position);
410410

411411
// // construct and send message
412412
// const auto msg = msp_osd::construct_COMP_GPS(
413413
// home_position,
414414
// vehicle_global_position,
415415
// _heartbeat);
416416
// this->Send(MSP_COMP_GPS, &msg);
417+
418+
const auto msg = msp_osd::construct_rendor_distanceToHome(home_position, vehicle_global_position);
419+
420+
this->Send(MSP_CMD_DISPLAYPORT, &msg, sizeof(msp_rendor_distanceToHome_t));
421+
417422
}
418423

419424
// MSP_ATTITUDE

src/drivers/osd/msp_osd/uorb_to_msp.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,37 @@ msp_comp_gps_t construct_COMP_GPS(const home_position_s &home_position,
411411
return comp_gps;
412412
}
413413

414+
msp_rendor_distanceToHome_t construct_rendor_distanceToHome(const home_position_s &home_position,
415+
const vehicle_global_position_s &vehicle_global_position)
416+
{
417+
msp_rendor_distanceToHome_t distance;
418+
419+
distance.screenYPosition = 0x08; //
420+
distance.screenXPosition = 0x02; //
421+
422+
int16_t dist_i = 0;
423+
424+
if (home_position.valid_hpos
425+
&& home_position.valid_lpos
426+
&& (hrt_elapsed_time(&vehicle_global_position.timestamp) < 1_s)) {
427+
428+
float distance_to_home = get_distance_to_next_waypoint(vehicle_global_position.lat,
429+
vehicle_global_position.lon,
430+
home_position.lat, home_position.lon);
431+
432+
dist_i = (int16_t)distance_to_home; // meters
433+
434+
} else {
435+
dist_i = 0; // meters
436+
}
437+
438+
char num_str[7];
439+
sprintf(num_str, "%d", dist_i); // 65536
440+
strncpy(&distance.str[0], num_str, 6);
441+
442+
return distance;
443+
}
444+
414445
msp_attitude_t construct_ATTITUDE(const vehicle_attitude_s &vehicle_attitude)
415446
{
416447
// initialize results

src/drivers/osd/msp_osd/uorb_to_msp.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ msp_altitude_t construct_ALTITUDE(const sensor_gps_s &vehicle_gps_position,
120120
msp_rendor_altitude_t construct_Rendor_ALTITUDE(const sensor_gps_s &vehicle_gps_position,
121121
const vehicle_local_position_s &vehicle_local_position);
122122

123+
msp_rendor_distanceToHome_t construct_rendor_distanceToHome(const home_position_s &home_position,
124+
const vehicle_global_position_s &vehicle_global_position);
125+
123126
// construct an MSP_ESC_SENSOR_DATA struct
124127
msp_esc_sensor_data_dji_t construct_ESC_SENSOR_DATA();
125128

0 commit comments

Comments
 (0)