Skip to content

Commit

Permalink
[airborne] replace memcpy with assignment for structs
Browse files Browse the repository at this point in the history
No reason to use memcpy to copy structs, assignment works since C90.
Normal assignment should actually be preferred as it will better deal with alignment/padding in some cases.
  • Loading branch information
flixr committed Jul 25, 2015
1 parent 7118504 commit 7322cdb
Show file tree
Hide file tree
Showing 23 changed files with 40 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ void stabilization_attitude_set_failsafe_setpoint(void)

void stabilization_attitude_set_rpy_setpoint_i(struct Int32Eulers *rpy)
{
memcpy(&stab_att_sp_euler, rpy, sizeof(struct Int32Eulers));
stab_att_sp_euler = *rpy;
}

void stabilization_attitude_set_earth_cmd_i(struct Int32Vect2 *cmd, int32_t heading)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void stabilization_attitude_set_failsafe_setpoint(void)

void stabilization_attitude_set_rpy_setpoint_i(struct Int32Eulers *rpy)
{
memcpy(&stab_att_sp_euler, rpy, sizeof(struct Int32Eulers));
stab_att_sp_euler = *rpy;
}

void stabilization_attitude_set_earth_cmd_i(struct Int32Vect2 *cmd, int32_t heading)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ void stabilization_attitude_set_failsafe_setpoint(void)
void stabilization_attitude_set_rpy_setpoint_i(struct Int32Eulers *rpy)
{
// stab_att_sp_euler.psi still used in ref..
memcpy(&stab_att_sp_euler, rpy, sizeof(struct Int32Eulers));
stab_att_sp_euler = *rpy;

quat_from_rpy_cmd_i(&stab_att_sp_quat, &stab_att_sp_euler);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ void stabilization_attitude_set_failsafe_setpoint(void)
void stabilization_attitude_set_rpy_setpoint_i(struct Int32Eulers *rpy)
{
// stab_att_sp_euler.psi still used in ref..
memcpy(&stab_att_sp_euler, rpy, sizeof(struct Int32Eulers));
stab_att_sp_euler = *rpy;

int32_quat_of_eulers(&stab_att_sp_quat, &stab_att_sp_euler);
}
Expand Down
8 changes: 4 additions & 4 deletions sw/airborne/modules/mission/mission_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,23 +54,23 @@ bool_t mission_insert(enum MissionInsertMode insert, struct _mission_element *el
case Append:
tmp = (mission.insert_idx + 1) % MISSION_ELEMENT_NB;
if (tmp == mission.current_idx) { return FALSE; } // no room to insert element
memcpy(&mission.elements[mission.insert_idx], element, sizeof(struct _mission_element)); // add element
mission.elements[mission.insert_idx] = *element; // add element
mission.insert_idx = tmp; // move insert index
break;
case Prepend:
if (mission.current_idx == 0) { tmp = MISSION_ELEMENT_NB - 1; }
else { tmp = mission.current_idx - 1; }
if (tmp == mission.insert_idx) { return FALSE; } // no room to inser element
memcpy(&mission.elements[tmp], element, sizeof(struct _mission_element)); // add element
mission.elements[tmp] = *element; // add element
mission.current_idx = tmp; // move current index
break;
case ReplaceCurrent:
// current element can always be modified, index are not changed
memcpy(&mission.elements[mission.current_idx], element, sizeof(struct _mission_element));
mission.elements[mission.current_idx] = *element;
break;
case ReplaceAll:
// reset queue and index
memcpy(&mission.elements[0], element, sizeof(struct _mission_element));
mission.elements[0] = *element;
mission.current_idx = 0;
mission.insert_idx = 1;
break;
Expand Down
6 changes: 2 additions & 4 deletions sw/airborne/modules/nav/nav_spiral.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,7 @@ bool_t nav_spiral_setup(uint8_t center_wp, uint8_t edge_wp, float radius_start,
nav_spiral.radius = float_vect2_norm(&edge);

// get a copy of the current position
struct EnuCoor_f pos_enu;
memcpy(&pos_enu, stateGetPositionEnu_f(), sizeof(struct EnuCoor_f));
struct EnuCoor_f pos_enu = *stateGetPositionEnu_f();

VECT2_DIFF(nav_spiral.trans_current, pos_enu, nav_spiral.center);
nav_spiral.trans_current.z = stateGetPositionUtm_f()->alt - nav_spiral.center.z;
Expand All @@ -87,8 +86,7 @@ bool_t nav_spiral_setup(uint8_t center_wp, uint8_t edge_wp, float radius_start,

bool_t nav_spiral_run(void)
{
struct EnuCoor_f pos_enu;
memcpy(&pos_enu, stateGetPositionEnu_f(), sizeof(struct EnuCoor_f));
struct EnuCoor_f pos_enu = *stateGetPositionEnu_f();

VECT2_DIFF(nav_spiral.trans_current, pos_enu, nav_spiral.center);
nav_spiral.dist_from_center = FLOAT_VECT3_NORM(nav_spiral.trans_current);
Expand Down
8 changes: 4 additions & 4 deletions sw/airborne/state.h
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ extern void stateInit(void);
/// Set the local (flat earth) coordinate frame origin (int).
static inline void stateSetLocalOrigin_i(struct LtpDef_i *ltp_def)
{
memcpy(&state.ned_origin_i, ltp_def, sizeof(struct LtpDef_i));
state.ned_origin_i = *ltp_def;
/* convert to float */
ECEF_FLOAT_OF_BFP(state.ned_origin_f.ecef, state.ned_origin_i.ecef);
LLA_FLOAT_OF_BFP(state.ned_origin_f.lla, state.ned_origin_i.lla);
Expand All @@ -459,7 +459,7 @@ static inline void stateSetLocalOrigin_i(struct LtpDef_i *ltp_def)
/// Set the local (flat earth) coordinate frame origin from UTM (float).
static inline void stateSetLocalUtmOrigin_f(struct UtmCoor_f *utm_def)
{
memcpy(&state.utm_origin_f, utm_def, sizeof(struct UtmCoor_f));
state.utm_origin_f = *utm_def;
state.utm_initialized_f = TRUE;

/* clear bits for all local frame representations */
Expand Down Expand Up @@ -564,7 +564,7 @@ static inline void stateSetPosition_i(
/// Set position from UTM coordinates (float).
static inline void stateSetPositionUtm_f(struct UtmCoor_f *utm_pos)
{
memcpy(&state.utm_pos_f, utm_pos, sizeof(struct UtmCoor_f));
state.utm_pos_f = *utm_pos;
/* clear bits for all position representations and only set the new one */
state.pos_status = (1 << POS_UTM_F);
}
Expand Down Expand Up @@ -628,7 +628,7 @@ static inline void stateSetPosition_f(
state.pos_status |= (1 << POS_LLA_F);
}
if (utm_pos != NULL) {
memcpy(&state.utm_pos_f, utm_pos, sizeof(struct UtmCoor_f));
state.utm_pos_f = *utm_pos;
state.pos_status |= (1 << POS_UTM_F);
}
}
Expand Down
6 changes: 2 additions & 4 deletions sw/airborne/subsystems/ahrs/ahrs_float_cmpl.c
Original file line number Diff line number Diff line change
Expand Up @@ -522,9 +522,7 @@ void ahrs_fc_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ahrs_fc.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ahrs_fc.ltp_to_imu_quat, orientationGetQuat_f(&ahrs_fc.body_to_imu),
sizeof(struct FloatQuat));
memcpy(&ahrs_fc.ltp_to_imu_rmat, orientationGetRMat_f(&ahrs_fc.body_to_imu),
sizeof(struct FloatRMat));
ahrs_fc.ltp_to_imu_quat = *orientationGetQuat_f(&ahrs_fc.body_to_imu);
ahrs_fc.ltp_to_imu_rmat = *orientationGetRMat_f(&ahrs_fc.body_to_imu);
}
}
2 changes: 1 addition & 1 deletion sw/airborne/subsystems/ahrs/ahrs_float_cmpl_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ static void body_to_imu_cb(uint8_t sender_id __attribute__((unused)),

static void geo_mag_cb(uint8_t sender_id __attribute__((unused)), struct FloatVect3 *h)
{
memcpy(&ahrs_fc.mag_h, h, sizeof(struct FloatVect3));
ahrs_fc.mag_h = *h;
}

static void gps_cb(uint8_t sender_id __attribute__((unused)),
Expand Down
3 changes: 1 addition & 2 deletions sw/airborne/subsystems/ahrs/ahrs_float_dcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,6 @@ void ahrs_dcm_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ahrs_dcm.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ahrs_dcm.ltp_to_imu_euler, orientationGetEulers_f(&ahrs_dcm.body_to_imu),
sizeof(struct FloatEulers));
ahrs_dcm.ltp_to_imu_euler = *orientationGetEulers_f(&ahrs_dcm.body_to_imu);
}
}
2 changes: 1 addition & 1 deletion sw/airborne/subsystems/ahrs/ahrs_float_invariant.c
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ void ahrs_float_inv_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ahrs_float_inv.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ahrs_float_inv.state.quat, q_b2i, sizeof(struct FloatQuat));
ahrs_float_inv.state.quat = *q_b2i;
}
}

2 changes: 1 addition & 1 deletion sw/airborne/subsystems/ahrs/ahrs_float_invariant_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ static void body_to_imu_cb(uint8_t sender_id __attribute__((unused)),

static void geo_mag_cb(uint8_t sender_id __attribute__((unused)), struct FloatVect3 *h)
{
memcpy(&ahrs_float_inv.mag_h, h, sizeof(struct FloatVect3));
ahrs_float_inv.mag_h = *h;
}

static bool_t ahrs_float_invariant_enable_output(bool_t enable)
Expand Down
5 changes: 2 additions & 3 deletions sw/airborne/subsystems/ahrs/ahrs_float_mlkf.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,7 @@ void ahrs_mlkf_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ahrs_mlkf.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ahrs_mlkf.ltp_to_imu_quat, orientationGetQuat_f(&ahrs_mlkf.body_to_imu),
sizeof(struct FloatQuat));
ahrs_mlkf.ltp_to_imu_quat = *orientationGetQuat_f(&ahrs_mlkf.body_to_imu);
}
}

Expand Down Expand Up @@ -371,7 +370,7 @@ static inline void reset_state(void)
struct FloatQuat q_tmp;
float_quat_comp(&q_tmp, &ahrs_mlkf.ltp_to_imu_quat, &ahrs_mlkf.gibbs_cor);
float_quat_normalize(&q_tmp);
memcpy(&ahrs_mlkf.ltp_to_imu_quat, &q_tmp, sizeof(ahrs_mlkf.ltp_to_imu_quat));
ahrs_mlkf.ltp_to_imu_quat = q_tmp;
float_quat_identity(&ahrs_mlkf.gibbs_cor);

}
2 changes: 1 addition & 1 deletion sw/airborne/subsystems/ahrs/ahrs_float_mlkf_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ static void body_to_imu_cb(uint8_t sender_id __attribute__((unused)),

static void geo_mag_cb(uint8_t sender_id __attribute__((unused)), struct FloatVect3 *h)
{
memcpy(&ahrs_mlkf.mag_h, h, sizeof(struct FloatVect3));
ahrs_mlkf.mag_h = *h;
}

static bool_t ahrs_mlkf_enable_output(bool_t enable)
Expand Down
3 changes: 1 addition & 2 deletions sw/airborne/subsystems/ahrs/ahrs_int_cmpl_euler.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,6 @@ void ahrs_ice_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ahrs_ice.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ahrs_ice.ltp_to_imu_euler, orientationGetEulers_i(&ahrs_ice.body_to_imu),
sizeof(struct Int32Eulers));
ahrs_ice.ltp_to_imu_euler = *orientationGetEulers_i(&ahrs_ice.body_to_imu);
}
}
3 changes: 1 addition & 2 deletions sw/airborne/subsystems/ahrs/ahrs_int_cmpl_quat.c
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,6 @@ void ahrs_icq_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ahrs_icq.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ahrs_icq.ltp_to_imu_quat, orientationGetQuat_i(&ahrs_icq.body_to_imu),
sizeof(struct Int32Quat));
ahrs_icq.ltp_to_imu_quat = *orientationGetQuat_i(&ahrs_icq.body_to_imu);
}
}
8 changes: 4 additions & 4 deletions sw/airborne/subsystems/imu.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ void imu_init(void)
void imu_SetBodyToImuPhi(float phi)
{
struct FloatEulers body_to_imu_eulers;
memcpy(&body_to_imu_eulers, orientationGetEulers_f(&imu.body_to_imu), sizeof(struct FloatEulers));
body_to_imu_eulers = *orientationGetEulers_f(&imu.body_to_imu);
body_to_imu_eulers.phi = phi;
orientationSetEulers_f(&imu.body_to_imu, &body_to_imu_eulers);
AbiSendMsgBODY_TO_IMU_QUAT(1, orientationGetQuat_f(&imu.body_to_imu));
Expand All @@ -161,7 +161,7 @@ void imu_SetBodyToImuPhi(float phi)
void imu_SetBodyToImuTheta(float theta)
{
struct FloatEulers body_to_imu_eulers;
memcpy(&body_to_imu_eulers, orientationGetEulers_f(&imu.body_to_imu), sizeof(struct FloatEulers));
body_to_imu_eulers = *orientationGetEulers_f(&imu.body_to_imu);
body_to_imu_eulers.theta = theta;
orientationSetEulers_f(&imu.body_to_imu, &body_to_imu_eulers);
AbiSendMsgBODY_TO_IMU_QUAT(1, orientationGetQuat_f(&imu.body_to_imu));
Expand All @@ -170,7 +170,7 @@ void imu_SetBodyToImuTheta(float theta)
void imu_SetBodyToImuPsi(float psi)
{
struct FloatEulers body_to_imu_eulers;
memcpy(&body_to_imu_eulers, orientationGetEulers_f(&imu.body_to_imu), sizeof(struct FloatEulers));
body_to_imu_eulers = *orientationGetEulers_f(&imu.body_to_imu);
body_to_imu_eulers.psi = psi;
orientationSetEulers_f(&imu.body_to_imu, &body_to_imu_eulers);
AbiSendMsgBODY_TO_IMU_QUAT(1, orientationGetQuat_f(&imu.body_to_imu));
Expand All @@ -183,7 +183,7 @@ void imu_SetBodyToImuCurrent(float set)
if (imu.b2i_set_current) {
// adjust imu_to_body roll and pitch by current NedToBody roll and pitch
struct FloatEulers body_to_imu_eulers;
memcpy(&body_to_imu_eulers, orientationGetEulers_f(&imu.body_to_imu), sizeof(struct FloatEulers));
body_to_imu_eulers = *orientationGetEulers_f(&imu.body_to_imu);
if (stateIsAttitudeValid()) {
// adjust imu_to_body roll and pitch by current NedToBody roll and pitch
body_to_imu_eulers.phi += stateGetNedToBodyEulers_f()->phi;
Expand Down
2 changes: 1 addition & 1 deletion sw/airborne/subsystems/ins/ins_alt_float.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ void ins_alt_float_update_baro(float pressure)
utm.alt = ins_altf.alt;
stateSetPositionUtm_f(&utm);
struct NedCoor_f ned_vel;
memcpy(&ned_vel, stateGetSpeedNed_f(), sizeof(struct NedCoor_f));
ned_vel = *stateGetSpeedNed_f();
ned_vel.z = -ins_altf.alt_dot;
stateSetSpeedNed_f(&ned_vel);
}
Expand Down
2 changes: 1 addition & 1 deletion sw/airborne/subsystems/ins/ins_float_invariant.c
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,6 @@ void ins_float_inv_set_body_to_imu_quat(struct FloatQuat *q_b2i)

if (!ins_float_inv.is_aligned) {
/* Set ltp_to_imu so that body is zero */
memcpy(&ins_float_inv.state.quat, q_b2i, sizeof(struct FloatQuat));
ins_float_inv.state.quat = *q_b2i;
}
}
4 changes: 2 additions & 2 deletions sw/airborne/subsystems/ins/ins_float_invariant_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ static void accel_cb(uint8_t sender_id __attribute__((unused)),
uint32_t stamp __attribute__((unused)),
struct Int32Vect3 *accel)
{
memcpy(&ins_finv_accel, accel, sizeof(struct Int32Vect3));
ins_finv_accel = *accel;
}

static void mag_cb(uint8_t sender_id __attribute__((unused)),
Expand Down Expand Up @@ -170,7 +170,7 @@ static void body_to_imu_cb(uint8_t sender_id __attribute__((unused)),

static void geo_mag_cb(uint8_t sender_id __attribute__((unused)), struct FloatVect3 *h)
{
memcpy(&ins_float_inv.mag_h, h, sizeof(struct FloatVect3));
ins_float_inv.mag_h = *h;
}

static void gps_cb(uint8_t sender_id __attribute__((unused)),
Expand Down
3 changes: 1 addition & 2 deletions sw/airborne/subsystems/ins/ins_int.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,8 +345,7 @@ void ins_int_update_gps(struct GpsState *gps_s)
.z = INS_BODY_TO_GPS_Z
};
/* rotate offset given in body frame to navigation/ltp frame using current attitude */
struct Int32Quat q_b2n;
memcpy(&q_b2n, stateGetNedToBodyQuat_i(), sizeof(struct Int32Quat));
struct Int32Quat q_b2n = *stateGetNedToBodyQuat_i();
QUAT_INVERT(q_b2n, q_b2n);
struct Int32Vect3 b2g_n;
int32_quat_vmult(&b2g_n, &q_b2n, &b2g_b);
Expand Down
10 changes: 5 additions & 5 deletions sw/airborne/subsystems/navigation/waypoints.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ float waypoint_get_alt(uint8_t wp_id)
void waypoint_set_enu_i(uint8_t wp_id, struct EnuCoor_i *enu)
{
if (wp_id < nb_waypoint) {
memcpy(&waypoints[wp_id].enu_i, enu, sizeof(struct EnuCoor_i));
waypoints[wp_id].enu_i = *enu;
SetBit(waypoints[wp_id].flags, WP_FLAG_ENU_I);
ENU_FLOAT_OF_BFP(waypoints[wp_id].enu_f, waypoints[wp_id].enu_i);
SetBit(waypoints[wp_id].flags, WP_FLAG_ENU_F);
Expand All @@ -113,7 +113,7 @@ void waypoint_set_enu_i(uint8_t wp_id, struct EnuCoor_i *enu)
void waypoint_set_enu(uint8_t wp_id, struct EnuCoor_f *enu)
{
if (wp_id < nb_waypoint) {
memcpy(&waypoints[wp_id].enu_f, enu, sizeof(struct EnuCoor_f));
waypoints[wp_id].enu_f = *enu;
SetBit(waypoints[wp_id].flags, WP_FLAG_ENU_I);
ENU_BFP_OF_REAL(waypoints[wp_id].enu_i, waypoints[wp_id].enu_f);
SetBit(waypoints[wp_id].flags, WP_FLAG_ENU_F);
Expand Down Expand Up @@ -172,7 +172,7 @@ void waypoint_set_lla(uint8_t wp_id, struct LlaCoor_i *lla)
if (wp_id >= nb_waypoint) {
return;
}
memcpy(&waypoints[wp_id].lla, lla, sizeof(struct LlaCoor_i));
waypoints[wp_id].lla = *lla;
SetBit(waypoints[wp_id].flags, WP_FLAG_LLA_I);
waypoint_localize(wp_id);
}
Expand Down Expand Up @@ -254,7 +254,7 @@ void waypoint_localize(uint8_t wp_id)
enu.x = POS_BFP_OF_REAL(enu.x) / 100;
enu.y = POS_BFP_OF_REAL(enu.y) / 100;
enu.z = POS_BFP_OF_REAL(enu.z) / 100;
memcpy(&waypoints[wp_id].enu_i, &enu, sizeof(struct EnuCoor_i));
waypoints[wp_id].enu_i = enu;
SetBit(waypoints[wp_id].flags, WP_FLAG_ENU_I);
ENU_FLOAT_OF_BFP(waypoints[wp_id].enu_f, waypoints[wp_id].enu_i);
SetBit(waypoints[wp_id].flags, WP_FLAG_ENU_F);
Expand Down Expand Up @@ -295,6 +295,6 @@ struct LlaCoor_i *waypoint_get_lla(uint8_t wp_id)
void waypoint_copy(uint8_t wp_dest, uint8_t wp_src)
{
if (wp_dest < nb_waypoint && wp_src < nb_waypoint) {
memcpy(&waypoints[wp_dest], &waypoints[wp_src], sizeof(struct Waypoint));
waypoints[wp_dest] = waypoints[wp_src];
}
}
2 changes: 1 addition & 1 deletion sw/lib/python/pprz_msg/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""

from __future__ import print_function
from __future__ import print_function./
import sys
import json
import messages_xml_map
Expand Down

0 comments on commit 7322cdb

Please sign in to comment.