From 5f3b88b00a09f1e5fa1c168433771fbc426b086d Mon Sep 17 00:00:00 2001 From: juchong_Analog Date: Thu, 5 Mar 2015 16:29:10 -0500 Subject: [PATCH] adis16448: initial implementation Signed-off-by: Juan J Chong juanjchong@gmail.com Signed-off-by: John Van Drasek --- examples/c++/adis16448.cxx | 65 +++++++++ examples/javascript/adis16448.js | 67 ++++++++++ src/adis16448/CMakeLists.txt | 5 + src/adis16448/adis16448.cxx | 223 +++++++++++++++++++++++++++++++ src/adis16448/adis16448.h | 132 ++++++++++++++++++ src/adis16448/jsupm_adis16448.i | 8 ++ src/adis16448/pyupm_adis16448.i | 8 ++ 7 files changed, 508 insertions(+) create mode 100644 examples/c++/adis16448.cxx create mode 100644 examples/javascript/adis16448.js create mode 100644 src/adis16448/CMakeLists.txt create mode 100644 src/adis16448/adis16448.cxx create mode 100644 src/adis16448/adis16448.h create mode 100644 src/adis16448/jsupm_adis16448.i create mode 100644 src/adis16448/pyupm_adis16448.i diff --git a/examples/c++/adis16448.cxx b/examples/c++/adis16448.cxx new file mode 100644 index 00000000..e77947b1 --- /dev/null +++ b/examples/c++/adis16448.cxx @@ -0,0 +1,65 @@ +////////////////////////////////////////////////////////////////////////////////////// +// The MIT License (MIT) +// +// Submit Date: 03/09/2015 +// Author: Juan Jose Chong +// Copyright (c) 2015 Juan Jose Chong +// +////////////////////////////////////////////////////////////////////////////////////// +// adis16448.cxx +////////////////////////////////////////////////////////////////////////////////////// +// +// This example code runs on an Intel Edison and uses mraa to acquire data +// from an ADIS16448. This data is then scaled and printed onto the terminal. +// +// This software has been tested to connect to an ADIS16448 through a level shifter +// such as the TI TXB0104. The SPI lines (DIN, DOUT, SCLK, /CS) are all wired through +// the level shifter and the ADIS16448 is also being powered by the Intel Edison. +// +// 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 +#include +#include + +#include "adis16448.h" + +int +main(int argc, char **argv) +{ + while(true) + { + upm::ADIS16448* imu = new upm::ADIS16448(0,3); //upm::ADIS16448(SPI,RST) + + //Read the specified register, scale it, and display it on the screen + std::cout << "XGYRO_OUT:" << imu->gyroScale(imu->regRead(XGYRO_OUT)) << std::endl; + std::cout << "YGYRO_OUT:" << imu->gyroScale(imu->regRead(YGYRO_OUT)) << std::endl; + std::cout << "ZGYRO_OUT:" << imu->gyroScale(imu->regRead(ZGYRO_OUT)) << std::endl; + std::cout << " " << std::endl; + std::cout << "XACCL_OUT:" << imu->accelScale(imu->regRead(XACCL_OUT)) << std::endl; + std::cout << "YACCL_OUT:" << imu->accelScale(imu->regRead(YACCL_OUT)) << std::endl; + std::cout << "ZACCL_OUT:" << imu->accelScale(imu->regRead(ZACCL_OUT)) << std::endl; + std::cout << " " << std::endl; + + sleep(1); + } + return (0); +} diff --git a/examples/javascript/adis16448.js b/examples/javascript/adis16448.js new file mode 100644 index 00000000..1e83f827 --- /dev/null +++ b/examples/javascript/adis16448.js @@ -0,0 +1,67 @@ +////////////////////////////////////////////////////////////////////////////////////// +// The MIT License (MIT) +// +// Submit Date: 03/09/2015 +// Author: Juan Jose Chong +// Copyright (c) 2015 Juan Jose Chong +// +////////////////////////////////////////////////////////////////////////////////////// +// adis16448.js +////////////////////////////////////////////////////////////////////////////////////// +// +// This example code runs on an Intel Edison and uses mraa to acquire data +// from an ADIS16448. This data is then scaled and printed onto the terminal. +// +// This software has been tested to connect to an ADIS16448 through a level shifter +// such as the TI TXB0104. The SPI lines (DIN, DOUT, SCLK, /CS) are all wired through +// the level shifter and the ADIS16448 is also being powered by the Intel Edison. +// +// 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. +// +////////////////////////////////////////////////////////////////////////////////////// + +//Call the ADIS16448 library +var adis16448 = require('jsupm_adis16448'); + +//Instantiate SPI and Reset +var imu = new adis16448.ADIS16448(0,3); + +periodicActivity(); //Call the periodicActivity function + +function periodicActivity() +{ + //Read & Scale Gyro/Accel Data + var xgyro = imu.gyroScale(imu.regRead(0x04)); + var ygyro = imu.gyroScale(imu.regRead(0x06)); + var zgyro = imu.gyroScale(imu.regRead(0x08)); + var xaccl = imu.accelScale(imu.regRead(0x0A)); + var yaccl = imu.accelScale(imu.regRead(0x0C)); + var zaccl = imu.accelScale(imu.regRead(0x0E)); + + //Display Scaled Data on the Console Log + console.log('XGYRO: ' + xgyro); + console.log('YGYRO: ' + ygyro); + console.log('ZGYRO: ' + zgyro); + console.log('XACCL: ' + xaccl); + console.log('YACCL: ' + yaccl); + console.log('ZACCL: ' + zaccl); + console.log(' '); + setTimeout(periodicActivity,200); //call the indicated function after 0.2 seconds (200 milliseconds) +} \ No newline at end of file diff --git a/src/adis16448/CMakeLists.txt b/src/adis16448/CMakeLists.txt new file mode 100644 index 00000000..d7b49721 --- /dev/null +++ b/src/adis16448/CMakeLists.txt @@ -0,0 +1,5 @@ +set (libname "adis16448") +set (libdescription "libupm High-Precision IMU") +set (module_src ${libname}.cxx) +set (module_h ${libname}.h) +upm_module_init() diff --git a/src/adis16448/adis16448.cxx b/src/adis16448/adis16448.cxx new file mode 100644 index 00000000..a4e45259 --- /dev/null +++ b/src/adis16448/adis16448.cxx @@ -0,0 +1,223 @@ +////////////////////////////////////////////////////////////////////////////////////// +// The MIT License (MIT) +// +// Submit Date: 03/09/2015 +// Author: Juan Jose Chong +// Copyright (c) 2015 Juan Jose Chong +// +////////////////////////////////////////////////////////////////////////////////////// +// adis16448.cxx +////////////////////////////////////////////////////////////////////////////////////// +// +// This library runs on an Intel Edison and uses mraa to acquire data +// from an ADIS16448. This data is then scaled and printed onto the terminal. +// +// This software has been tested to connect to an ADIS16448 through a level shifter +// such as the TI TXB0104. The SPI lines (DIN, DOUT, SCLK, /CS) are all wired through +// the level shifter and the ADIS16448 is also being powered by the Intel Edison. +// +// 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 +#include +#include +#include +#include + +#include "adis16448.h" + +using namespace upm; + +//////////////////////////////////////////////////////////////////////////// +// Constructor with configurable CS, DR, and RST +//////////////////////////////////////////////////////////////////////////// +// RST - Hardware reset pin +//////////////////////////////////////////////////////////////////////////// +ADIS16448::ADIS16448(int bus, int rst) +{ +// Configure I/O + _rst = mraa_gpio_init(rst); //Initialize RST pin + mraa_gpio_dir(_rst, MRAA_GPIO_IN); //Set direction as INPUT + +// Configure SPI + _spi = mraa_spi_init(bus); + mraa_spi_frequency(_spi, 1000000); //Set SPI frequency to 1MHz + mraa_spi_mode(_spi, MRAA_SPI_MODE3); //Set SPI mode/polarity + mraa_spi_bit_per_word(_spi, 16); //Set # of bits per word +} + +//////////////////////////////////////////////////////////////////////////// +// Destructor - Stops SPI and Closes all GPIO used. Reports an error if +// unable to close either properly. +//////////////////////////////////////////////////////////////////////////// +ADIS16448::~ADIS16448() +{ +// Close SPI bus + mraa_result_t error; + error = mraa_spi_stop(_spi); + if(error != MRAA_SUCCESS) + { + mraa_result_print(error); + } +// Close GPIO + error = mraa_gpio_close(_rst); + if(error != MRAA_SUCCESS) + { + mraa_result_print(error); + } +} + +//////////////////////////////////////////////////////////////////////////// +// Performs hardware reset by setting _RST pin low for 2 seconds. +//////////////////////////////////////////////////////////////////////////// +void ADIS16448::resetDUT() +{ + mraa_gpio_write(_rst, 0); + usleep(100000); //Sleep for 100ms + mraa_gpio_write(_rst, 1); + usleep(1000000); //Sleep for 1s +} + +//////////////////////////////////////////////////////////////////////////// +// Sets SPI bit order, clock divider, and data mode. This function is useful +// when there are multiple SPI devices using different settings. +//////////////////////////////////////////////////////////////////////////// +void ADIS16448::configSPI() { + mraa_spi_frequency(_spi, 1000000); //Set SPI frequency to 1MHz + mraa_spi_mode(_spi, MRAA_SPI_MODE3); //Set SPI mode/polarity + mraa_spi_bit_per_word(_spi, 16); //Set # of bits per word +} + +//////////////////////////////////////////////////////////////////////////////////////////// +// Reads two bytes (one word) in two sequential registers over SPI +//////////////////////////////////////////////////////////////////////////////////////////// +// regAddr - register address from the lookup table in ADIS16448.h +// return - (int) signed 16 bit 2's complement number +//////////////////////////////////////////////////////////////////////////////////////////// +int16_t ADIS16448::regRead(uint8_t regAddr) +{ + configSPI(); //Set up SPI (useful when multiple SPI devices present on bus) +// Write register address to be read + uint8_t buf[2]; //Allocate write buffer + memset(buf, 0, sizeof(uint8_t)*2); //Initialize buffer and write 0s + buf[1] = regAddr; //Write the user-requested register address to the buffer + mraa_spi_write_buf(_spi, buf, 2); //Write the buffer onto the SPI port + + usleep(20); //Delay to not violate read rate (210us) + +// Read data from register requested + buf[1] = 0; //Clear contents of write buffer + uint8_t* x = mraa_spi_write_buf(_spi, buf, 2); //Write 0x0000 to SPI and read data requested above + int16_t _dataOut = (x[1] << 8) | (x[0] & 0xFF);; //Concatenate upper and lower bytes + + usleep(20); //delay to not violate read rate (210us) + return(_dataOut); +} +//////////////////////////////////////////////////////////////////////////// +// Writes one byte of data to the specified register over SPI +//////////////////////////////////////////////////////////////////////////// +// regAddr - register address from the lookup table +// regData - data to be written to the register +//////////////////////////////////////////////////////////////////////////// +void ADIS16448::regWrite(uint8_t regAddr,uint16_t regData) +{ + configSPI(); +// Separate the 16 bit command word into two bytes + uint16_t addr = (((regAddr & 0x7F) | 0x80) << 8); //Check that the address is 7 bits, flip the sign bit + uint16_t lowWord = (addr | (regData & 0xFF)); + uint16_t highWord = ((addr | 0x100) | ((regData >> 8) & 0xFF)); +// Write the low byte to the SPI bus + uint8_t lbuf[2]; //Allocate write buffer + memset(lbuf, 0, sizeof(uint8_t)*2); //Fill low buffer with 0's + lbuf[0] = (lowWord >> 8); + lbuf[1] = (lowWord); + mraa_spi_write_buf(_spi, lbuf, 2); //Write the buffer to the SPI port + + usleep(20); + +// Write the high byte to the SPI bus + uint8_t hbuf[2]; //Allocate write buffer + memset(hbuf, 0, sizeof(uint8_t)*2); //Fill high buffer with 0's + hbuf[0] = (highWord >> 8); + hbuf[1] = (highWord); + mraa_spi_write_buf(_spi, hbuf, 2); //Write the buffer to the SPI port + + usleep(20); + +} +///////////////////////////////////////////////////////////////////////////////////////// +// Converts accelerometer data output from the sensorRead() function and returns +// acceleration in g's +///////////////////////////////////////////////////////////////////////////////////////// +// sensorData - data output from sensorRead() +// return - (float) signed/scaled accelerometer in G's +///////////////////////////////////////////////////////////////////////////////////////// +float ADIS16448::accelScale(int16_t sensorData) +{ + float finalData = sensorData * 0.000833; // multiply by accel sensitivity (250uG/LSB) + return finalData; +} +///////////////////////////////////////////////////////////////////////////////////////////// +// Converts gyro data output from the sensorRead() function and returns gyro rate in deg/sec +///////////////////////////////////////////////////////////////////////////////////////////// +// sensorData - data output from sensorRead() +// return - (float) signed/scaled gyro in degrees/sec +///////////////////////////////////////////////////////////////////////////////////////// +float ADIS16448::gyroScale(int16_t sensorData) +{ + float finalData = sensorData * 0.04; //multiply by gyro sensitivity (0.005 LSB/dps) + return finalData; +} +///////////////////////////////////////////////////////////////////////////////////////////// +// Converts temperature data output from the sensorRead() function and returns temperature +// in degrees Celcius +///////////////////////////////////////////////////////////////////////////////////////////// +// sensorData - data output from sensorRead() +// return - (float) signed/scaled temperature in degrees Celcius +///////////////////////////////////////////////////////////////////////////////////////// +float ADIS16448::tempScale(int16_t sensorData) +{ + float finalData = (sensorData * 0.07386) + 31; //multiply by temperature scale and add 31 to equal 0x0000 + return finalData; +} +///////////////////////////////////////////////////////////////////////////////////////////// +// Converts barometer data output from sensorRead() function and returns pressure in bar +///////////////////////////////////////////////////////////////////////////////////////////// +// sensorData - data output from sensorRead() +// return - (float) signed/scaled temperature in degrees Celcius +///////////////////////////////////////////////////////////////////////////////////////// +float ADIS16448::pressureScale(int16_t sensorData) +{ + float finalData = (sensorData * 0.02); //multiply by gyro sensitivity (0.005 LSB/dps) + return finalData; +} +///////////////////////////////////////////////////////////////////////////////////////////// +// Converts magnetometer output from sensorRead() function and returns magnetic field +// reading in Gauss +///////////////////////////////////////////////////////////////////////////////////////////// +// sensorData - data output from sensorRead() +// return - (float) signed/scaled temperature in degrees Celcius +///////////////////////////////////////////////////////////////////////////////////////// +float ADIS16448::magnetometerScale(int16_t sensorData) +{ + float finalData = (sensorData * 0.0001429); //multiply by sensor resolution (142.9uGa LSB/dps) + return finalData; +} diff --git a/src/adis16448/adis16448.h b/src/adis16448/adis16448.h new file mode 100644 index 00000000..d76c36ad --- /dev/null +++ b/src/adis16448/adis16448.h @@ -0,0 +1,132 @@ +////////////////////////////////////////////////////////////////////////////////////// +// The MIT License (MIT) +// +// Submit Date: 03/09/2015 +// Author: Juan Jose Chong +// Copyright (c) 2015 Juan Jose Chong +// +////////////////////////////////////////////////////////////////////////////////////// +// adis16448.h +////////////////////////////////////////////////////////////////////////////////////// +// +// This library runs on an Intel Edison and uses mraa to acquire data +// from an ADIS16448. This data is then scaled and printed onto the terminal. +// +// This software has been tested to connect to an ADIS16448 through a level shifter +// such as the TI TXB0104. The SPI lines (DIN, DOUT, SCLK, /CS) are all wired through +// the level shifter and the ADIS16448 is also being powered by the Intel Edison. +// +// 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 +#include +#include + +// User Register Memory Map from Table 6 of the Datasheet +#define FLASH_CNT 0x00 //Flash memory write count +#define XGYRO_OUT 0x04 //X-axis gyroscope output +#define YGYRO_OUT 0x06 //Y-axis gyroscope output +#define ZGYRO_OUT 0x08 //Z-axis gyroscope output +#define XACCL_OUT 0x0A //X-axis accelerometer output +#define YACCL_OUT 0x0C //Y-axis accelerometer output +#define ZACCL_OUT 0x0E //Z-axis accelerometer output +#define XMAGN_OUT 0X10 //X-axis magnetometer output +#define YMAGN_OUT 0x12 //Y-axis magnetometer output +#define ZMAGN_OUT 0x14 //Z-axis magnetometer output +#define BARO_OUT 0x16 //Barometer pressure measurement, high word +#define TEMP_OUT 0x18 //Temperature output +#define XGYRO_OFF 0x1A //X-axis gyroscope bias offset factor +#define YGYRO_OFF 0x1C //Y-axis gyroscope bias offset factor +#define ZGYRO_OFF 0x1E //Z-axis gyroscope bias offset factor +#define XACCL_OFF 0x20 //X-axis acceleration bias offset factor +#define YACCL_OFF 0x22 //Y-axis acceleration bias offset factor +#define ZACCL_OFF 0x24 //Z-axis acceleration bias offset factor +#define XMAGN_HIC 0x26 //X-axis magnetometer, hard iron factor +#define YMAGN_HIC 0x28 //Y-axis magnetometer, hard iron factor +#define ZMAGN_HIC 0x2A //Z-axis magnetometer, hard iron factor +#define XMAGN_SIC 0x2C //X-axis magnetometer, soft iron factor +#define YMAGN_SIC 0x2E //Y-axis magnetometer, soft iron factor +#define ZMAGN_SIC 0x30 //Z-axis magnetometer, soft iron factor +#define GPIO_CTRL 0x32 //GPIO control +#define MSC_CTRL 0x34 //Misc. control +#define SMPL_PRD 0x36 //Sample clock/Decimation filter control +#define SENS_AVG 0x38 //Digital filter control +#define SEQ_CNT 0x3A //xMAGN_OUT and BARO_OUT counter +#define DIAG_STAT 0x3C //System status +#define GLOB_CMD 0x3E //System command +#define ALM_MAG1 0x40 //Alarm 1 amplitude threshold +#define ALM_MAG2 0x42 //Alarm 2 amplitude threshold +#define ALM_SMPL1 0x44 //Alarm 1 sample size +#define ALM_SMPL2 0x46 //Alarm 2 sample size +#define ALM_CTRL 0x48 //Alarm control +#define LOT_ID1 0x52 //Lot identification number +#define LOT_ID2 0x54 //Lot identification number +#define PROD_ID 0x56 //Product identifier +#define SERIAL_NUM 0x58 //Lot-specific serial number + +namespace upm { + + // ADIS16448 class definition + class ADIS16448{ + + public: + + // Constructor with configurable HW Reset + ADIS16448(int bus, int rst); + + //Destructor + ~ADIS16448(); + + //Performs hardware reset by sending the specified pin low for 2 seconds + void resetDUT(); + + //Sets SPI frequency, mode, and bits/word + void configSPI(); + + //Read specified register and return data + int16_t regRead(uint8_t regAddr); + + //Write to specified register + void regWrite(uint8_t regAddr, uint16_t regData); + + //Scale accelerometer data + float accelScale(int16_t sensorData); + + //Scale gyro data + float gyroScale(int16_t sensorData); + + //Scale temperature data + float tempScale(int16_t sensorData); + + //Scale pressure data + float pressureScale(int16_t sensorData); + + //Scale magnetometer data + float magnetometerScale(int16_t sensorData); + + private: + + mraa_spi_context _spi; + mraa_gpio_context _rst; + + }; +} + diff --git a/src/adis16448/jsupm_adis16448.i b/src/adis16448/jsupm_adis16448.i new file mode 100644 index 00000000..64882d0c --- /dev/null +++ b/src/adis16448/jsupm_adis16448.i @@ -0,0 +1,8 @@ +%module jsupm_adis16448 +%include "../upm.i" + +%{ + #include "adis16448.h" +%} + +%include "adis16448.h" diff --git a/src/adis16448/pyupm_adis16448.i b/src/adis16448/pyupm_adis16448.i new file mode 100644 index 00000000..50ea0ea1 --- /dev/null +++ b/src/adis16448/pyupm_adis16448.i @@ -0,0 +1,8 @@ +%module pyupm_adis16448 +%include "../upm.i" + +%{ + #include "adis16448.h" +%} + +%include "adis16448.h"