summaryrefslogtreecommitdiff
path: root/peripheral/libupm/src/curieimu/curieimu.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'peripheral/libupm/src/curieimu/curieimu.hpp')
-rw-r--r--peripheral/libupm/src/curieimu/curieimu.hpp307
1 files changed, 0 insertions, 307 deletions
diff --git a/peripheral/libupm/src/curieimu/curieimu.hpp b/peripheral/libupm/src/curieimu/curieimu.hpp
deleted file mode 100644
index 61186cc..0000000
--- a/peripheral/libupm/src/curieimu/curieimu.hpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Author: Brendan Le Foll <brendan.le.foll@intel.com>
- * Author: Ron Evans (@deadprogram)
- * Author: Justin Zemlyansky (@JustInDevelopment)
- * Copyright (c) 2016 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.
- */
-#pragma once
-
-#include <mraa/firmata.h>
-#include <queue>
-
-namespace upm {
-
-/**
- * @brief CurieIMU sensor for Genuino 101 running Firmata
- * @defgroup curieimu libupm-curieimu
- * @ingroup firmata
- */
-
-/**
- * @library curieimu
- * @sensor curieimu
- * @comname Curie IMU sensor over Genuino 101 running Firmata
- * @altname Curie Firmata IMU
- * @type firmata
- * @man firmata imu genuino
- * @con firmata
- *
- * @brief API for the Curie IMU via Firmata
- *
- * Curie IMU is a 6-axxis acclerometer
- *
- * This module has been tested on an Genuino 101 running ConfigurableFirmata with CurieIMU
- *
- * @snippet curieimu.cxx Interesting
- */
-
-#define FIRMATA_START_SYSEX 0xF0
-#define FIRMATA_END_SYSEX 0xF7
-#define FIRMATA_CURIE_IMU 0x11
-#define FIRMATA_CURIE_IMU_READ_ACCEL 0x00
-#define FIRMATA_CURIE_IMU_READ_GYRO 0x01
-#define FIRMATA_CURIE_IMU_READ_TEMP 0x02
-#define FIRMATA_CURIE_IMU_SHOCK_DETECT 0x03
-#define FIRMATA_CURIE_IMU_STEP_COUNTER 0x04
-#define FIRMATA_CURIE_IMU_TAP_DETECT 0x05
-#define FIRMATA_CURIE_IMU_READ_MOTION 0x06
-
-#define X 0
-#define Y 1
-#define Z 2
-
-struct IMUDataItem {
- int axis;
- int direction;
-};
-
-class CurieImu {
- public:
-
- /**
- * Instantiates a CurieImu object
- *
- * @param subplatformoffset Subplatform offset
- */
- CurieImu (int subplatform_offset=512);
-
- /**
- * Destructor for CurieImu object
- */
- ~CurieImu();
-
- /**
- * Updates the latest accelerometer readings by calling Firmata
- */
- void updateAccel();
-
- /**
- * Updates the latest gyroscope readings by calling Firmata
- */
- void updateGyro();
-
- /**
- * Updates the both the latest accelerometer & gyroscope readings
- * by calling Firmata
- */
- void updateMotion();
-
- /**
- * Returns last accelerometer reading X, Y, and Z axis
- *
- * @return pointer to array with X-axis, Y-axis & Z-axis value
- */
- int16_t* getAccel();
-
- /**
- * Returns last accelerometer reading X axis
- *
- * @return X-axis value
- */
- int16_t getAccelX();
-
- /**
- * Returns last accelerometer reading Y axis
- *
- * @return Y-axis value
- */
- int16_t getAccelY();
-
- /**
- * Returns last accelerometer reading Z axis
- *
- * @return Z-axis value
- */
- int16_t getAccelZ();
-
- /**
- * Read gyroscope X, Y, and Z axis
- *
- * @return pointer to array with X-axis, Y-axis & Z-axis value
- */
- int16_t* getGyro();
-
- /**
- * Returns last gyroscope reading X axis
- *
- * @return X-axis value
- */
- int16_t getGyroX();
-
- /**
- * Returns last gyroscope reading Y axis
- *
- * @return Y-axis value
- */
- int16_t getGyroY();
-
- /**
- * Returns last gyroscope reading Z axis
- *
- * @return Z-axis value
- */
- int16_t getGyroZ();
-
- /**
- * Reads the internal temperature
- *
- * @return 16-bit integer containing the scaled temperature reading
- */
- int16_t getTemperature();
-
- /**
- * Reads the X, Y, and Z axis of both gyroscope and accelerometer
- *
- * @return pointer to array with X-axis, Y-axis & Z-axis values for
- * accelerometer, and then X-axis, Y-axis & Z-axis values for
- * gyroscope
- */
- int16_t* getMotion();
-
- /**
- * Returns last shock or tap axis reading
- *
- * @return axis value
- */
- int16_t getAxis();
-
- /**
- * Returns last shock or tap direction reading
- *
- * @return direction value
- */
- int16_t getDirection();
-
- /**
- * Turns shock detection notifications on/off
- *
- * @param enable enables/disables notifications
- */
- void enableShockDetection(bool enable);
-
- /**
- * Has there been a shock detected?
- *
- * @return true if any unprocessed shock notifications are in the queue
- */
- bool isShockDetected();
-
- /**
- * Gets shock detect data from queue. Then m_axis gets axis data, and
- * m_direction gets direction data
- */
- void getNextShock();
-
- /**
- * Turns step counter notifications on/off
- *
- * @param enable enables/disables notifications
- */
- void enableStepCounter(bool enable);
-
- /**
- * Has there been a step detected?
- *
- * @return true if any unprocessed step notifications are in the queue
- */
- bool isStepDetected();
-
- /**
- * Gets step count data from queue
- *
- * @return the total number of steps taken
- */
- int16_t getStepCount();
-
- /**
- * Turns tap detection notifications on/off
- *
- * @param enable enables/disables notifications
- */
- void enableTapDetection(bool enable);
-
- /**
- * Has there been a tap detected?
- *
- * @return true if any unprocessed tap notifications are in the queue
- */
- bool isTapDetected();
-
- /**
- * Gets tap detect data from queue. Then m_axis gets axis data, and
- * m_direction gets direction data
- */
- void getNextTap();
-
- /**
- * Locks responses from Firmata
- */
- void lock();
-
- /**
- * Unlocks responses from Firmata
- */
- void unlock();
-
- /**
- * Wait for a response from Firmata before proceeding
- */
- void waitForResponse();
-
- /**
- * Proceed with original function call now that response
- * from Firmata has been received
- */
- void proceed();
-
- /**
- * Set results being returned from Firmata for processing
- *
- * @param buf is the buffer
- * @param length is the length of results buffer
- */
- void setResults(uint8_t* buf, int length);
-
- /**
- * Processes asyncronous responses returned from Firmata
- */
- void processResponse();
-
- private:
- mraa_firmata_context m_firmata;
- pthread_mutex_t m_responseLock;
- pthread_cond_t m_responseCond;
- char* m_results;
-
- std::queue<IMUDataItem*> m_shockData;
- std::queue<int> m_stepData;
- std::queue<IMUDataItem*> m_tapData;
-
- int16_t m_accel[3];
- int16_t m_gyro[3];
- int16_t m_motion[6];
-
- int16_t m_axis;
- int16_t m_direction;
-};
-
-}