mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-22 11:33:33 +08:00
UAVCAN Magnetometer driver update - no logical changes
This commit is contained in:
committed by
Lorenz Meier
parent
4ec16efe68
commit
473d321af8
@@ -45,7 +45,7 @@ UavcanMagnetometerBridge::UavcanMagnetometerBridge(uavcan::INode &node) :
|
|||||||
UavcanCDevSensorBridgeBase("uavcan_mag", "/dev/uavcan/mag", MAG_BASE_DEVICE_PATH, ORB_ID(sensor_mag)),
|
UavcanCDevSensorBridgeBase("uavcan_mag", "/dev/uavcan/mag", MAG_BASE_DEVICE_PATH, ORB_ID(sensor_mag)),
|
||||||
_sub_mag(node)
|
_sub_mag(node)
|
||||||
{
|
{
|
||||||
_device_id.devid_s.devtype = DRV_MAG_DEVTYPE_HMC5883;
|
_device_id.devid_s.devtype = DRV_MAG_DEVTYPE_HMC5883; // <-- Why?
|
||||||
|
|
||||||
_scale.x_scale = 1.0F;
|
_scale.x_scale = 1.0F;
|
||||||
_scale.y_scale = 1.0F;
|
_scale.y_scale = 1.0F;
|
||||||
@@ -141,16 +141,16 @@ int UavcanMagnetometerBridge::ioctl(struct file *filp, int cmd, unsigned long ar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UavcanMagnetometerBridge::mag_sub_cb(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::Magnetometer>
|
void UavcanMagnetometerBridge::mag_sub_cb(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::MagneticFieldStrength>
|
||||||
&msg)
|
&msg)
|
||||||
{
|
{
|
||||||
lock();
|
lock();
|
||||||
_report.range_ga = 1.3F; // Arbitrary number, doesn't really mean anything
|
_report.range_ga = 1.3F; // Arbitrary number, doesn't really mean anything
|
||||||
_report.timestamp = msg.getMonotonicTimestamp().toUSec();
|
_report.timestamp = msg.getMonotonicTimestamp().toUSec();
|
||||||
|
|
||||||
_report.x = (msg.magnetic_field[0] - _scale.x_offset) * _scale.x_scale;
|
_report.x = (msg.magnetic_field_ga[0] - _scale.x_offset) * _scale.x_scale;
|
||||||
_report.y = (msg.magnetic_field[1] - _scale.y_offset) * _scale.y_scale;
|
_report.y = (msg.magnetic_field_ga[1] - _scale.y_offset) * _scale.y_scale;
|
||||||
_report.z = (msg.magnetic_field[2] - _scale.z_offset) * _scale.z_scale;
|
_report.z = (msg.magnetic_field_ga[2] - _scale.z_offset) * _scale.z_scale;
|
||||||
unlock();
|
unlock();
|
||||||
|
|
||||||
publish(msg.getSrcNodeID().get(), &_report);
|
publish(msg.getSrcNodeID().get(), &_report);
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
#include "sensor_bridge.hpp"
|
#include "sensor_bridge.hpp"
|
||||||
#include <drivers/drv_mag.h>
|
#include <drivers/drv_mag.h>
|
||||||
|
|
||||||
#include <uavcan/equipment/ahrs/Magnetometer.hpp>
|
#include <uavcan/equipment/ahrs/MagneticFieldStrength.hpp>
|
||||||
|
|
||||||
class UavcanMagnetometerBridge : public UavcanCDevSensorBridgeBase
|
class UavcanMagnetometerBridge : public UavcanCDevSensorBridgeBase
|
||||||
{
|
{
|
||||||
@@ -57,14 +57,14 @@ private:
|
|||||||
ssize_t read(struct file *filp, char *buffer, size_t buflen);
|
ssize_t read(struct file *filp, char *buffer, size_t buflen);
|
||||||
int ioctl(struct file *filp, int cmd, unsigned long arg) override;
|
int ioctl(struct file *filp, int cmd, unsigned long arg) override;
|
||||||
|
|
||||||
void mag_sub_cb(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::Magnetometer> &msg);
|
void mag_sub_cb(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::MagneticFieldStrength> &msg);
|
||||||
|
|
||||||
typedef uavcan::MethodBinder < UavcanMagnetometerBridge *,
|
typedef uavcan::MethodBinder < UavcanMagnetometerBridge *,
|
||||||
void (UavcanMagnetometerBridge::*)
|
void (UavcanMagnetometerBridge::*)
|
||||||
(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::Magnetometer> &) >
|
(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::MagneticFieldStrength> &) >
|
||||||
MagCbBinder;
|
MagCbBinder;
|
||||||
|
|
||||||
uavcan::Subscriber<uavcan::equipment::ahrs::Magnetometer, MagCbBinder> _sub_mag;
|
uavcan::Subscriber<uavcan::equipment::ahrs::MagneticFieldStrength, MagCbBinder> _sub_mag;
|
||||||
mag_scale _scale = {};
|
mag_scale _scale = {};
|
||||||
mag_report _report = {};
|
mag_report _report = {};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user