From b4483a09b2886a6c0ecd78703e1f06e776d3a6d4 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Thu, 4 Apr 2013 23:22:39 +0200 Subject: Added LSM303D driver --- apps/drivers/lsm303d/lsm303d.cpp | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'apps/drivers/lsm303d') diff --git a/apps/drivers/lsm303d/lsm303d.cpp b/apps/drivers/lsm303d/lsm303d.cpp index b0f900102..c00726b4e 100644 --- a/apps/drivers/lsm303d/lsm303d.cpp +++ b/apps/drivers/lsm303d/lsm303d.cpp @@ -123,12 +123,12 @@ private: unsigned _num_reports; volatile unsigned _next_report; volatile unsigned _oldest_report; - struct gyro_report *_reports; + struct accel_report *_reports; - struct gyro_scale _gyro_scale; - float _gyro_range_scale; - float _gyro_range_rad_s; - orb_advert_t _gyro_topic; + struct accel_scale _accel_scale; + float _accel_range_scale; + float _accel_range_m_s2; + orb_advert_t _accel_topic; unsigned _current_rate; unsigned _current_range; @@ -220,9 +220,9 @@ LSM303D::LSM303D(int bus, const char* path, spi_dev_e device) : _next_report(0), _oldest_report(0), _reports(nullptr), - _gyro_range_scale(0.0f), - _gyro_range_rad_s(0.0f), - _gyro_topic(-1), + _accel_range_scale(0.0f), + _accel_range_m_s2(0.0f), + _accel_topic(-1), _current_rate(0), _current_range(0), _sample_perf(perf_alloc(PC_ELAPSED, "lsm303d_read")) @@ -231,12 +231,12 @@ LSM303D::LSM303D(int bus, const char* path, spi_dev_e device) : _debug_enabled = true; // default scale factors - _gyro_scale.x_offset = 0; - _gyro_scale.x_scale = 1.0f; - _gyro_scale.y_offset = 0; - _gyro_scale.y_scale = 1.0f; - _gyro_scale.z_offset = 0; - _gyro_scale.z_scale = 1.0f; + _accel_scale.x_offset = 0; + _accel_scale.x_scale = 1.0f; + _accel_scale.y_offset = 0; + _accel_scale.y_scale = 1.0f; + _accel_scale.z_offset = 0; + _accel_scale.z_scale = 1.0f; } LSM303D::~LSM303D() @@ -307,7 +307,7 @@ LSM303D::probe() ssize_t LSM303D::read(struct file *filp, char *buffer, size_t buflen) { - unsigned count = buflen / sizeof(struct gyro_report); + unsigned count = buflen / sizeof(struct accel_report); int ret = 0; // /* buffer must be large enough */ @@ -412,7 +412,7 @@ LSM303D::ioctl(struct file *filp, int cmd, unsigned long arg) // return -EINVAL; // // /* allocate new buffer */ -// struct gyro_report *buf = new struct gyro_report[arg]; +// struct accel_report *buf = new struct accel_report[arg]; // // if (nullptr == buf) // return -ENOMEM; @@ -447,12 +447,12 @@ LSM303D::ioctl(struct file *filp, int cmd, unsigned long arg) // // case GYROIOCSSCALE: // /* copy scale in */ -// memcpy(&_gyro_scale, (struct gyro_scale *) arg, sizeof(_gyro_scale)); +// memcpy(&_accel_scale, (struct accel_scale *) arg, sizeof(_accel_scale)); // return OK; // // case GYROIOCGSCALE: // /* copy scale out */ -// memcpy((struct gyro_scale *) arg, &_gyro_scale, sizeof(_gyro_scale)); +// memcpy((struct accel_scale *) arg, &_accel_scale, sizeof(_accel_scale)); // return OK; // // case GYROIOCSRANGE: @@ -608,7 +608,7 @@ LSM303D::measure() // } raw_report; //#pragma pack(pop) // -// gyro_report *report = &_reports[_next_report]; +// accel_report *report = &_reports[_next_report]; // // /* start the performance counter */ // perf_begin(_sample_perf); @@ -637,9 +637,9 @@ LSM303D::measure() // report->y_raw = raw_report.y; // report->z_raw = raw_report.z; // -// report->x = ((report->x_raw * _gyro_range_scale) - _gyro_scale.x_offset) * _gyro_scale.x_scale; -// report->y = ((report->y_raw * _gyro_range_scale) - _gyro_scale.y_offset) * _gyro_scale.y_scale; -// report->z = ((report->z_raw * _gyro_range_scale) - _gyro_scale.z_offset) * _gyro_scale.z_scale; +// report->x = ((report->x_raw * _gyro_range_scale) - _accel_scale.x_offset) * _accel_scale.x_scale; +// report->y = ((report->y_raw * _gyro_range_scale) - _accel_scale.y_offset) * _accel_scale.y_scale; +// report->z = ((report->z_raw * _gyro_range_scale) - _accel_scale.z_offset) * _accel_scale.z_scale; // report->scaling = _gyro_range_scale; // report->range_rad_s = _gyro_range_rad_s; // @@ -693,7 +693,7 @@ start() errx(1, "already started"); /* create the driver */ - g_dev = new LSM303D(1 /* XXX magic number */, ACCEL_DEVICE_PATH, (spi_dev_e)PX4_SPIDEV_ACCEL); + g_dev = new LSM303D(1 /* XXX magic number */, ACCEL_DEVICE_PATH, (spi_dev_e)PX4_SPIDEV_ACCEL_MAG); if (g_dev == nullptr) goto fail; @@ -809,7 +809,7 @@ lsm303d_main(int argc, char *argv[]) */ if (!strcmp(argv[1], "start")) - LSM303D::start(); + lsm303d::start(); /* * Test the driver/device. -- cgit v1.2.3