summaryrefslogtreecommitdiff
path: root/peripheral/libupm/src/kxcjk1013/kxcjk1013.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'peripheral/libupm/src/kxcjk1013/kxcjk1013.cxx')
-rw-r--r--peripheral/libupm/src/kxcjk1013/kxcjk1013.cxx199
1 files changed, 0 insertions, 199 deletions
diff --git a/peripheral/libupm/src/kxcjk1013/kxcjk1013.cxx b/peripheral/libupm/src/kxcjk1013/kxcjk1013.cxx
deleted file mode 100644
index 0eafbb7..0000000
--- a/peripheral/libupm/src/kxcjk1013/kxcjk1013.cxx
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Author: Lay, Kuan Loon <kuan.loon.lay@intel.com>
- * Copyright (c) 2015 Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <iostream>
-#include <string>
-#include <stdexcept>
-#include <string.h>
-#include "kxcjk1013.h"
-
-using namespace upm;
-
-KXCJK1013::KXCJK1013(int device)
-{
- float accel_scale;
- char trigger[64];
-
- if (!(m_iio = mraa_iio_init(device))) {
- throw std::invalid_argument(std::string(__FUNCTION__) +
- ": mraa_iio_init() failed, invalid device?");
- return;
- }
- m_scale = 1;
- m_iio_device_num = device;
- sprintf(trigger, "hrtimer-kxcjk1013-hr-dev%d", device);
-
- if (mraa_iio_create_trigger(m_iio, trigger) != MRAA_SUCCESS)
- fprintf(stderr, "Create trigger failed\n");
-
- if (mraa_iio_get_mounting_matrix(m_iio, m_mount_matrix) == MRAA_SUCCESS)
- m_mount_matrix_exist = true;
- else
- m_mount_matrix_exist = false;
-
- if (mraa_iio_read_float(m_iio, "in_accel_scale", &accel_scale) == MRAA_SUCCESS)
- m_scale = accel_scale;
-}
-
-KXCJK1013::~KXCJK1013()
-{
- // mraa_iio_stop(m_iio);
-}
-
-void
-KXCJK1013::installISR(void (*isr)(char*), void* arg)
-{
- mraa_iio_trigger_buffer(m_iio, isr, NULL);
-}
-
-int64_t
-KXCJK1013::getChannelValue(unsigned char* input, mraa_iio_channel* chan)
-{
- uint64_t u64;
- int i;
- int storagebits = chan->bytes * 8;
- int realbits = chan->bits_used;
- int zeroed_bits = storagebits - realbits;
- uint64_t sign_mask;
- uint64_t value_mask;
-
- u64 = 0;
-
- if (!chan->lendian)
- for (i = 0; i < storagebits / 8; i++)
- u64 = (u64 << 8) | input[i];
- else
- for (i = storagebits / 8 - 1; i >= 0; i--)
- u64 = (u64 << 8) | input[i];
-
- u64 = (u64 >> chan->shift) & (~0ULL >> zeroed_bits);
-
- if (!chan->signedd)
- return (int64_t) u64; /* We don't handle unsigned 64 bits int */
-
- /* Signed integer */
-
- switch (realbits) {
- case 0 ... 1:
- return 0;
-
- case 8:
- return (int64_t)(int8_t) u64;
-
- case 16:
- return (int64_t)(int16_t) u64;
-
- case 32:
- return (int64_t)(int32_t) u64;
-
- case 64:
- return (int64_t) u64;
-
- default:
- sign_mask = 1 << (realbits - 1);
- value_mask = sign_mask - 1;
-
- if (u64 & sign_mask)
- return -((~u64 & value_mask) + 1); /* Negative value: return 2-complement */
- else
- return (int64_t) u64; /* Positive value */
- }
-}
-
-bool
-KXCJK1013::enableBuffer(int length)
-{
- mraa_iio_write_int(m_iio, "buffer/length", length);
- // enable must be last step, else will have error in writing above config
- mraa_iio_write_int(m_iio, "buffer/enable", 1);
-
- return true;
-}
-
-bool
-KXCJK1013::disableBuffer()
-{
- mraa_iio_write_int(m_iio, "buffer/enable", 0);
-
- return true;
-}
-
-bool
-KXCJK1013::setScale(float scale)
-{
- mraa_iio_write_float(m_iio, "in_accel_scale", scale);
-
- return true;
-}
-
-bool
-KXCJK1013::setSamplingFrequency(float sampling_frequency)
-{
- mraa_iio_write_float(m_iio, "in_accel_sampling_frequency", sampling_frequency);
-
- return true;
-}
-
-bool
-KXCJK1013::enable3AxisChannel()
-{
- char trigger[64];
- sprintf(trigger, "kxcjk1013-hr-dev%d", m_iio_device_num);
-
- mraa_iio_write_string(m_iio, "trigger/current_trigger", trigger);
- mraa_iio_write_int(m_iio, "scan_elements/in_accel_x_en", 1);
- mraa_iio_write_int(m_iio, "scan_elements/in_accel_y_en", 1);
- mraa_iio_write_int(m_iio, "scan_elements/in_accel_z_en", 1);
-
- // need update channel data size after enable
- mraa_iio_update_channels(m_iio);
- return true;
-}
-
-void
-KXCJK1013::extract3Axis(char* data, float* x, float* y, float* z)
-{
- mraa_iio_channel* channels = mraa_iio_get_channels(m_iio);
- float tmp[3];
- int i = 0;
- int iio_x, iio_y, iio_z;
-
- iio_x = getChannelValue((unsigned char*) (data + channels[0].location), &channels[0]);
- iio_y = getChannelValue((unsigned char*) (data + channels[1].location), &channels[1]);
- iio_z = getChannelValue((unsigned char*) (data + channels[2].location), &channels[2]);
-
- *x = (iio_x * m_scale);
- *y = (iio_y * m_scale);
- *z = (iio_z * m_scale);
-
- if (m_mount_matrix_exist) {
- tmp[0] = *x * m_mount_matrix[0] + *y * m_mount_matrix[1] + *z * m_mount_matrix[2];
- tmp[1] = *x * m_mount_matrix[3] + *y * m_mount_matrix[4] + *z * m_mount_matrix[5];
- tmp[2] = *x * m_mount_matrix[6] + *y * m_mount_matrix[7] + *z * m_mount_matrix[8];
-
- *x = tmp[0];
- *y = tmp[1];
- *z = tmp[2];
- }
-}