Remove unused GPL'd files (simple_apps, mpu.h)

The libsensors/* and mlsdk/* files reference an mpu.h which
is mlsdk/**/mpu.h that is not GPL.

Bug: 10612505
Change-Id: I15b4f883247d49c86cf5bcfad48315ee37ebb50d
diff --git a/60xx/libsensors_iio/software/core/driver/include/linux/mpu.h b/60xx/libsensors_iio/software/core/driver/include/linux/mpu.h
deleted file mode 100644
index 4391226..0000000
--- a/60xx/libsensors_iio/software/core/driver/include/linux/mpu.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-* Copyright (C) 2012 Invensense, Inc.
-*
-* This software is licensed under the terms of the GNU General Public
-* License version 2, as published by the Free Software Foundation, and
-* may be copied, distributed, and modified under those terms.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-*/
-
-/**
- *  @addtogroup  DRIVERS
- *  @brief       Hardware drivers.
- *
- *  @{
- *      @file    mpu.h
- *      @brief   mpu definition
- */
-
-#ifndef __MPU_H_
-#define __MPU_H_
-
-#ifdef __KERNEL__
-#include <linux/types.h>
-#include <linux/ioctl.h>
-#endif
-
-enum secondary_slave_type {
-	SECONDARY_SLAVE_TYPE_NONE,
-	SECONDARY_SLAVE_TYPE_ACCEL,
-	SECONDARY_SLAVE_TYPE_COMPASS,
-	SECONDARY_SLAVE_TYPE_PRESSURE,
-
-	SECONDARY_SLAVE_TYPE_TYPES
-};
-
-enum ext_slave_id {
-	ID_INVALID = 0,
-	GYRO_ID_MPU3050,
-	GYRO_ID_MPU6050A2,
-	GYRO_ID_MPU6050B1,
-	GYRO_ID_MPU6050B1_NO_ACCEL,
-	GYRO_ID_ITG3500,
-
-	ACCEL_ID_LIS331,
-	ACCEL_ID_LSM303DLX,
-	ACCEL_ID_LIS3DH,
-	ACCEL_ID_KXSD9,
-	ACCEL_ID_KXTF9,
-	ACCEL_ID_BMA150,
-	ACCEL_ID_BMA222,
-	ACCEL_ID_BMA250,
-	ACCEL_ID_ADXL34X,
-	ACCEL_ID_MMA8450,
-	ACCEL_ID_MMA845X,
-	ACCEL_ID_MPU6050,
-
-	COMPASS_ID_AK8963,
-	COMPASS_ID_AK8975,
-	COMPASS_ID_AK8972,
-	COMPASS_ID_AMI30X,
-	COMPASS_ID_AMI306,
-	COMPASS_ID_YAS529,
-	COMPASS_ID_YAS530,
-	COMPASS_ID_HMC5883,
-	COMPASS_ID_LSM303DLH,
-	COMPASS_ID_LSM303DLM,
-	COMPASS_ID_MMC314X,
-	COMPASS_ID_HSCDTD002B,
-	COMPASS_ID_HSCDTD004A,
-
-	PRESSURE_ID_BMA085,
-};
-
-#define INV_PROD_KEY(ver, rev) (ver * 100 + rev)
-/**
- * struct mpu_platform_data - Platform data for the mpu driver
- * @int_config:		Bits [7:3] of the int config register.
- * @level_shifter:	0: VLogic, 1: VDD
- * @orientation:	Orientation matrix of the gyroscope
- * @sec_slave_type:     secondary slave device type, can be compass, accel, etc
- * @sec_slave_id:       id of the secondary slave device
- * @secondary_i2c_address: secondary device's i2c address
- * @secondary_orientation: secondary device's orientation matrix
- * @key:                key for MPL library.
- *
- * Contains platform specific information on how to configure the MPU3050 to
- * work on this platform.  The orientation matricies are 3x3 rotation matricies
- * that are applied to the data to rotate from the mounting orientation to the
- * platform orientation.  The values must be one of 0, 1, or -1 and each row and
- * column should have exactly 1 non-zero value.
- */
-struct mpu_platform_data {
-	__u8 int_config;
-	__u8 level_shifter;
-	__s8 orientation[9];
-	enum secondary_slave_type sec_slave_type;
-	enum ext_slave_id sec_slave_id;
-	__u16 secondary_i2c_addr;
-	__s8 secondary_orientation[9];
-	__u8 key[16];
-};
-
-#endif	/* __MPU_H_ */
diff --git a/60xx/libsensors_iio/software/simple_apps/gesture_test/build/android/inv_gesture_test-shared b/60xx/libsensors_iio/software/simple_apps/gesture_test/build/android/inv_gesture_test-shared
deleted file mode 100644
index 7635cd8..0000000
--- a/60xx/libsensors_iio/software/simple_apps/gesture_test/build/android/inv_gesture_test-shared
+++ /dev/null
Binary files differ
diff --git a/60xx/libsensors_iio/software/simple_apps/gesture_test/build/android/shared.mk b/60xx/libsensors_iio/software/simple_apps/gesture_test/build/android/shared.mk
deleted file mode 100644
index 7655e4d..0000000
--- a/60xx/libsensors_iio/software/simple_apps/gesture_test/build/android/shared.mk
+++ /dev/null
@@ -1,95 +0,0 @@
-EXEC = inv_gesture_test$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += -I$(COMMON_DIR)
-CFLAGS += -I$(HAL_DIR)/include
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/60xx/libsensors_iio/software/simple_apps/gesture_test/build/filelist.mk b/60xx/libsensors_iio/software/simple_apps/gesture_test/build/filelist.mk
deleted file mode 100644
index 75d93cf..0000000
--- a/60xx/libsensors_iio/software/simple_apps/gesture_test/build/filelist.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#### filelist.mk for inv_gesture_test ####
-
-# headers
-#HEADERS += 
-
-# sources
-SOURCES := $(APP_DIR)/inv_gesture_test.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR)
diff --git a/60xx/libsensors_iio/software/simple_apps/gesture_test/inv_gesture_test.c b/60xx/libsensors_iio/software/simple_apps/gesture_test/inv_gesture_test.c
deleted file mode 100644
index d38d478..0000000
--- a/60xx/libsensors_iio/software/simple_apps/gesture_test/inv_gesture_test.c
+++ /dev/null
@@ -1,535 +0,0 @@
-/**
- *  Gesture Test application for Invensense's MPU6/9xxx (w/ DMP).
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <features.h>
-#include <dirent.h>
-#include <string.h>
-#include <poll.h>
-#include <stddef.h>
-#include <linux/input.h>
-#include <time.h>
-#include <linux/time.h>
-#include <unistd.h>
-#include <termios.h>
-
-#include "invensense.h"
-#include "ml_math_func.h"
-#include "storage_manager.h"
-#include "ml_stored_data.h"
-#include "ml_sysfs_helper.h"
-
-#define DEBUG_PRINT     /* Uncomment to print Gyro & Accel read from Driver */
-
-#define MAX_SYSFS_NAME_LEN  (100)
-#define MAX_SYSFS_ATTRB (sizeof(struct sysfs_attrbs) / sizeof(char*))
-
-#define FLICK_UPPER_THRES       3147790
-#define FLICK_LOWER_THRES       -3147790
-#define FLICK_COUNTER           50
-#define POLL_TIME               2000 // 2sec
-
-#define FALSE   0
-#define TRUE    1
-
-char *sysfs_names_ptr;
-
-struct sysfs_attrbs {
-    char *enable;
-    char *power_state;
-    char *dmp_on;
-    char *dmp_int_on;
-    char *self_test;
-    char *dmp_firmware;
-    char *firmware_loaded;
-    char *display_orientation_on;
-    char *orientation_on;
-    char *event_flick;
-    char *event_display_orientation;
-    char *event_orientation;
-    char *event_tap;
-    char *flick_axis;
-    char *flick_counter;
-    char *flick_int_on;
-    char *flick_lower;
-    char *flick_upper;
-    char *flick_message_on;
-    char *tap_min_count;
-    char *tap_on;
-    char *tap_threshold;
-    char *tap_time;
-} mpu;
-
-enum {
-    tap,
-    flick,
-    gOrient,
-    orient,
-    numDMPFeatures
-};
-
-struct pollfd pfd[numDMPFeatures];
-
-/*******************************************************************************
- *                       DMP Feature Supported Functions
- ******************************************************************************/
-
-int read_sysfs_int(char *filename, int *var)
-{
-    int res=0;
-    FILE *fp;
-
-    fp = fopen(filename, "r");
-    if (fp!=NULL) {
-        fscanf(fp, "%d\n", var);
-	fclose(fp);
-    } else {
-        MPL_LOGE("ERR open file to read");
-        res= -1;
-    }
-    return res;
-}
-
-int write_sysfs_int(char *filename, int data)
-{
-    int res=0;
-    FILE  *fp;
-
-    fp = fopen(filename, "w");
-    if (fp!=NULL) {
-        fprintf(fp, "%d\n", data);
-	fclose(fp);
-    } else {
-        MPL_LOGE("ERR open file to write");
-        res= -1;
-    }
-    return res;
-}
-
-/**************************************************
-    This _kbhit() function is courtesy from Web
-***************************************************/
-int _kbhit() {
-    static const int STDIN = 0;
-    static bool initialized = false;
-
-    if (! initialized) {
-        // Use termios to turn off line buffering
-        struct termios term;
-        tcgetattr(STDIN, &term);
-        term.c_lflag &= ~ICANON;
-        tcsetattr(STDIN, TCSANOW, &term);
-        setbuf(stdin, NULL);
-        initialized = true;
-    }
-
-    int bytesWaiting;
-    ioctl(STDIN, FIONREAD, &bytesWaiting);
-    return bytesWaiting;
-}
-
-int inv_init_sysfs_attributes(void)
-{
-    unsigned char i = 0;
-    char sysfs_path[MAX_SYSFS_NAME_LEN];
-    char *sptr;
-    char **dptr;
-
-    sysfs_names_ptr =
-            (char*)malloc(sizeof(char[MAX_SYSFS_ATTRB][MAX_SYSFS_NAME_LEN]));
-    sptr = sysfs_names_ptr;
-    if (sptr != NULL) {
-        dptr = (char**)&mpu;
-        do {
-            *dptr++ = sptr;
-            sptr += sizeof(char[MAX_SYSFS_NAME_LEN]);
-        } while (++i < MAX_SYSFS_ATTRB);
-    } else {
-        MPL_LOGE("couldn't alloc mem for sysfs paths");
-        return -1;
-    }
-
-    // get proper (in absolute/relative) IIO path & build MPU's sysfs paths
-    inv_get_sysfs_path(sysfs_path);
-
-    sprintf(mpu.enable, "%s%s", sysfs_path, "/buffer/enable");
-    sprintf(mpu.power_state, "%s%s", sysfs_path, "/power_state");
-    sprintf(mpu.dmp_on,"%s%s", sysfs_path, "/dmp_on");
-    sprintf(mpu.dmp_int_on, "%s%s", sysfs_path, "/dmp_int_on");
-    sprintf(mpu.self_test, "%s%s", sysfs_path, "/self_test");
-    sprintf(mpu.dmp_firmware, "%s%s", sysfs_path, "/dmp_firmware");
-    sprintf(mpu.firmware_loaded, "%s%s", sysfs_path, "/firmware_loaded");
-    sprintf(mpu.display_orientation_on, "%s%s", sysfs_path, "/display_orientation_on");
-    sprintf(mpu.orientation_on, "%s%s", sysfs_path, "/orientation_on");
-    sprintf(mpu.event_flick, "%s%s", sysfs_path, "/event_flick");
-    sprintf(mpu.event_display_orientation, "%s%s", sysfs_path, "/event_display_orientation");
-    sprintf(mpu.event_orientation, "%s%s", sysfs_path, "/event_orientation");
-    sprintf(mpu.event_tap, "%s%s", sysfs_path, "/event_tap");
-    sprintf(mpu.flick_axis, "%s%s", sysfs_path, "/flick_axis");
-    sprintf(mpu.flick_counter, "%s%s", sysfs_path, "/flick_counter");
-    sprintf(mpu.flick_int_on, "%s%s", sysfs_path, "/flick_int_on");
-    sprintf(mpu.flick_lower, "%s%s", sysfs_path, "/flick_lower");
-    sprintf(mpu.flick_upper, "%s%s", sysfs_path, "/flick_upper");
-    sprintf(mpu.flick_message_on, "%s%s", sysfs_path, "/flick_message_on");
-    sprintf(mpu.tap_min_count, "%s%s", sysfs_path, "/tap_min_count");
-    sprintf(mpu.tap_on, "%s%s", sysfs_path, "/tap_on");
-    sprintf(mpu.tap_threshold, "%s%s", sysfs_path, "/tap_threshold");
-    sprintf(mpu.tap_time, "%s%s", sysfs_path, "/tap_time");
-
-#if 0
-    // test print sysfs paths
-    dptr = (char**)&mpu;
-    for (i = 0; i < MAX_SYSFS_ATTRB; i++) {
-        MPL_LOGE("sysfs path: %s", *dptr++);
-    }
-#endif
-    return 0;
-}
-
-int DmpFWloaded()
-{
-    int res;
-    read_sysfs_int(mpu.firmware_loaded, &res);
-    return res;
-}
-
-int enable_flick(int en)
-{
-   int res=0;
-   int flickUpper=0, flickLower=0, flickCounter=0;
-
-   if (write_sysfs_int(mpu.flick_int_on, en) < 0) {
-       printf("GT:ERR-can't write 'flick_int_on'");
-       res= -1;
-   }
-
-   if (en) {
-       flickUpper= FLICK_UPPER_THRES;
-       flickLower= FLICK_LOWER_THRES;
-       flickCounter= FLICK_COUNTER;
-   }
-
-   if (write_sysfs_int(mpu.flick_upper, flickUpper) < 0) {
-       printf("GT:ERR-can't write 'flick_upper'");
-       res= -1;
-   }
-
-   if (write_sysfs_int(mpu.flick_lower, flickLower) < 0) {
-       printf("GT:ERR-can't write 'flick_lower'");
-       res= -1;
-   }
-
-   if (write_sysfs_int(mpu.flick_counter, flickCounter) < 0) {
-       printf("GT:ERR-can't write 'flick_counter'");
-       res= -1;
-   }
-
-   if (write_sysfs_int(mpu.flick_message_on, 0) < 0) {
-       printf("GT:ERR-can't write 'flick_message_on'");
-       res= -1;
-   }
-
-   if (write_sysfs_int(mpu.flick_axis, 0) < 0) {
-       printf("GT:ERR_can't write 'flick_axis'");
-       res= -1;
-   }
-
-   return res;
-}
-
-int enable_tap(int en)
-{
-    if (write_sysfs_int(mpu.tap_on, en) < 0) {
-        printf("GT:ERR-can't write 'tap_on'");
-        return -1;
-    }
-
-    return 0;
-}
-
-int enable_displ_orient(int en)
-{
-    if (write_sysfs_int(mpu.display_orientation_on, en) < 0) {
-        printf("GT:ERR-can't write 'display_orientation_en'");
-        return -1;
-    }
-
-    return 0;
-}
-
-int enable_orient(int en)
-{
-    if (write_sysfs_int(mpu.orientation_on, en) < 0) {
-        printf("GT:ERR-can't write 'orientation_on'");
-        return -1;
-    }
-
-    return 0;
-}
-
-int flickHandler()
-{
-    FILE *fp;
-    int data;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Flick Handler\n");
-#endif
-
-    fp = fopen(mpu.event_flick, "rt");
-    fscanf(fp, "%d\n", &data);
-    fclose (fp);
-
-    printf("Flick= %x\n", data);
-
-    return 0;
-}
-
-int tapHandler()
-{
-    FILE *fp;
-    int tap, tap_dir, tap_num;
-
-    fp = fopen(mpu.event_tap, "rt");
-    fscanf(fp, "%d\n", &tap);
-    fclose(fp);
-
-    tap_dir = tap/8;
-    tap_num = tap%8 + 1;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Tap Handler **\n");
-    printf("Tap= %x\n", tap);
-    printf("Tap Dir= %x\n", tap_dir);
-    printf("Tap Num= %x\n", tap_num);
-#endif
-
-    switch (tap_dir) {
-        case 1:
-            printf("Tap Axis->X Pos\n");
-            break;
-        case 2:
-            printf("Tap Axis->X Neg\n");
-            break;
-        case 3:
-            printf("Tap Axis->Y Pos\n");
-            break;
-        case 4:
-            printf("Tap Axis->Y Neg\n");
-            break;
-        case 5:
-            printf("Tap Axis->Z Pos\n");
-            break;
-        case 6:
-            printf("Tap Axis->Z Neg\n");
-            break;
-        default:
-            printf("Tap Axis->Unknown\n");
-            break;
-    }
-
-    return 0;
-}
-
-int googleOrientHandler()
-{
-    FILE *fp;
-    int orient;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Google Orient Handler\n");
-#endif
-
-    fp = fopen(mpu.event_display_orientation, "rt");
-    fscanf(fp, "%d\n", &orient);
-    fclose(fp);
-
-    printf("Google Orient-> %d\n", orient);
-
-    return 0;
-}
-
-int orientHandler()
-{
-    FILE *fp;
-    int orient;
-
-    fp = fopen(mpu.event_orientation, "rt");
-    fscanf(fp, "%d\n", &orient);
-    fclose(fp);
-
-#ifdef DEBUG_PRINT
-    printf("GT:Reg Orient Handler\n");
-#endif
-
-    if (orient & 0x01)
-	printf("Orient->X Up\n");
-
-    if (orient & 0x02)
-	printf("Orient->X Down\n");
-
-    if (orient & 0x04)
-	printf("Orient->Y Up\n");
-
-    if (orient & 0x08)
-	printf("Orient->Y Down\n");
-
-    if (orient & 0x10)
-	printf("Orient->Z Up\n");
-
-    if (orient & 0x20)
-	printf("Orient->Z Down\n");
-
-    if (orient & 0x40)
-	printf("Orient->Flip\n");
-
-    return 0;
-}
-
-int enableDMPFeatures(int en)
-{
-    int res= -1;
-
-    if (DmpFWloaded())
-    {
-        /* Currently there's no info regarding DMP's supported features/capabilities */
-        /* An error in enabling features below could be an indication of the feature */
-        /* not supported in current loaded DMP firmware */
-
-        enable_flick(en);
-        enable_tap(en);
-        enable_displ_orient(en);
-        enable_orient(en);
-        res= 0;
-    }
-
-    return res;
-}
-
-int initFds()
-{
-    int i;
-
-    for (i=0; i< numDMPFeatures; i++) {
-        switch(i) {
-            case tap:
-                pfd[i].fd = open(mpu.event_tap, O_RDONLY | O_NONBLOCK);
-                break;
-
-            case flick:
-                pfd[i].fd = open(mpu.event_flick, O_RDONLY | O_NONBLOCK);
-                break;
-
-            case gOrient:
-                pfd[i].fd = open(mpu.event_display_orientation, O_RDONLY | O_NONBLOCK);
-                break;
-
-            case orient:
-                pfd[i].fd = open(mpu.event_orientation, O_RDONLY | O_NONBLOCK);
-                break;
-
-            default:
-                pfd[i].fd = -1;
-         }
-
-        pfd[i].events = POLLPRI|POLLERR,
-        pfd[i].revents = 0;
-#ifdef DEBUG_PRINT
-        printf("GT:pfd[%d].fd= %d\n", i, pfd[i].fd);
-#endif
-    }
-
-    return 0;
-}
-
-int closeFds()
-{
-    int i;
-    for (i = 0; i < numDMPFeatures; i++) {
-        if (!pfd[i].fd)
-            close(pfd[i].fd);
-    }
-    return 0;
-}
-
-/*******************************************************************************
- *                       M a i n  S e l f  T e s t
- ******************************************************************************/
-
-int main(int argc, char **argv)
-{
-    char data[4];
-    int i, res= 0;
-
-    res = inv_init_sysfs_attributes();
-    if (res) {
-        printf("GT:ERR-Can't allocate mem");
-        return -1;
-    }
-
-    /* On Gesture/DMP supported features */
-    enableDMPFeatures(1);
-
-    /* init Fds to poll for Gesture data */
-    initFds();
-
-    /* prompt user to make gesture and how to stop program */
-    printf("\n**Please make Gesture to see data.  Press any key to stop Prog**\n\n");
-
-    do {
-        for (i=0; i< numDMPFeatures; i++) {
-            read(pfd[i].fd, data, 4);
-        }
-
-        poll(pfd, numDMPFeatures, POLL_TIME);
-
-        for (i=0; i< numDMPFeatures; i++) {
-           if(pfd[i].revents != 0) {
-               switch(i) {
-                   case tap:
-                       tapHandler();
-                       break;
-
-                   case flick:
-                       flickHandler();
-                       break;
-
-                   case gOrient:
-                       googleOrientHandler();
-                       break;
-
-                   case orient:
-                       orientHandler();
-                       break;
-
-                   default:
-                       printf("GT:ERR-Not supported");
-                       break;
-               }
-               pfd[i].revents= 0;	//no need. reset anyway
-           }
-        }
-
-    } while (!_kbhit());
-
-    /* Off DMP features */
-    enableDMPFeatures(0);
-
-    /* release resources */
-    closeFds();
-    if (sysfs_names_ptr) {
-        free(sysfs_names_ptr);
-    }
-
-    printf("\nThank You!\n");
-
-    return res;
-}
-
diff --git a/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/inv_mpu_iio-shared b/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/inv_mpu_iio-shared
deleted file mode 100644
index aab27bb..0000000
--- a/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/inv_mpu_iio-shared
+++ /dev/null
Binary files differ
diff --git a/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk b/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk
deleted file mode 100644
index 234c1d9..0000000
--- a/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk
+++ /dev/null
@@ -1,109 +0,0 @@
-EXEC = inv_mpu_iio$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-COMMON_DIR = $(INV_ROOT)/software/simple_apps/common
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-HAL_DIR    = $(INV_ROOT)/software/core/HAL
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += -I$(COMMON_DIR)
-CFLAGS += -I$(HAL_DIR)/include
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-PRE_LFLAGS := -Wl,-T,$(ANDROID_ROOT)/build/core/armelf.x
-PRE_LFLAGS += $(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib/crtend_android.o
-PRE_LFLAGS += $(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib/crtbegin_dynamic.o
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += -nostdlib
-LFLAGS += -fpic
-LFLAGS += -Wl,--gc-sections 
-LFLAGS += -Wl,--no-whole-archive 
-LFLAGS += -Wl,-dynamic-linker,/system/bin/linker
-LFLAGS += $(ANDROID_LINK)
-ifneq ($(PRODUCT),panda)
-LFLAGS += -rdynamic
-endif
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(PRE_LFLAGS) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/filelist.mk b/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/filelist.mk
deleted file mode 100644
index 8a3977a..0000000
--- a/60xx/libsensors_iio/software/simple_apps/mpu_iio/build/filelist.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-#### filelist.mk for mpu_iio ####
-
-# headers
-#HEADERS += $(HAL_DIR)/include/inv_sysfs_utils.h
-HEADERS += $(APP_DIR)/iio_utils.h
-
-# sources
-SOURCES := $(APP_DIR)/mpu_iio.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR) $(HAL_DIR)/linux
diff --git a/60xx/libsensors_iio/software/simple_apps/mpu_iio/iio_utils.h b/60xx/libsensors_iio/software/simple_apps/mpu_iio/iio_utils.h
deleted file mode 100644
index 773ff2c..0000000
--- a/60xx/libsensors_iio/software/simple_apps/mpu_iio/iio_utils.h
+++ /dev/null
@@ -1,643 +0,0 @@
-/* IIO - useful set of util functionality
- *
- * Copyright (c) 2008 Jonathan Cameron
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- */
-
-/* Made up value to limit allocation sizes */
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <dirent.h>
-
-#define IIO_MAX_NAME_LENGTH 30
-
-#define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements"
-#define FORMAT_TYPE_FILE "%s_type"
-
-const char *iio_dir = "/sys/bus/iio/devices/";
-
-/**
- * iioutils_break_up_name() - extract generic name from full channel name
- * @full_name: the full channel name
- * @generic_name: the output generic channel name
- **/
-static int iioutils_break_up_name(const char *full_name,
-				  char **generic_name)
-{
-	char *current;
-	char *w, *r;
-	char *working;
-	current = strdup(full_name);
-	working = strtok(current, "_\0");
-	w = working;
-	r = working;
-
-	while (*r != '\0') {
-		if (!isdigit(*r)) {
-			*w = *r;
-			w++;
-		}
-		r++;
-	}
-	*w = '\0';
-	*generic_name = strdup(working);
-	free(current);
-
-	return 0;
-}
-
-/**
- * struct iio_channel_info - information about a given channel
- * @name: channel name
- * @generic_name: general name for channel type
- * @scale: scale factor to be applied for conversion to si units
- * @offset: offset to be applied for conversion to si units
- * @index: the channel index in the buffer output
- * @bytes: number of bytes occupied in buffer output
- * @mask: a bit mask for the raw output
- * @is_signed: is the raw value stored signed
- * @enabled: is this channel enabled
- **/
-struct iio_channel_info {
-	char *name;
-	char *generic_name;
-	float scale;
-	float offset;
-	unsigned index;
-	unsigned bytes;
-	unsigned bits_used;
-	unsigned shift;
-	uint64_t mask;
-	unsigned be;
-	unsigned is_signed;
-	unsigned enabled;
-	unsigned location;
-};
-
-/**
- * iioutils_get_type() - find and process _type attribute data
- * @is_signed: output whether channel is signed
- * @bytes: output how many bytes the channel storage occupies
- * @mask: output a bit mask for the raw data
- * @be: big endian
- * @device_dir: the iio device directory
- * @name: the channel name
- * @generic_name: the channel type name
- **/
-inline int iioutils_get_type(unsigned *is_signed,
-			     unsigned *bytes,
-			     unsigned *bits_used,
-			     unsigned *shift,
-			     uint64_t *mask,
-			     unsigned *be,
-			     const char *device_dir,
-			     const char *name,
-			     const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *scan_el_dir, *builtname, *builtname_generic, *filename = 0;
-	char signchar, endianchar;
-	unsigned padint;
-	const struct dirent *ent;
-
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname, FORMAT_TYPE_FILE, name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_scan_el_dir;
-	}
-	ret = asprintf(&builtname_generic, FORMAT_TYPE_FILE, generic_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		/*
-		 * Do we allow devices to override a generic name with
-		 * a specific one?
-		 */
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				printf("failed to open %s\n", filename);
-				ret = -errno;
-				goto error_free_filename;
-			}
-
-			ret = fscanf(sysfsfp,
-				     "%ce:%c%u/%u>>%u",
-				     &endianchar,
-				     &signchar,
-				     bits_used,
-				     &padint, shift);
-			if (ret < 0) {
-				printf("failed to pass scan type description\n");
-				return ret;
-			}
-			*be = (endianchar == 'b');
-			*bytes = padint / 8;
-			if (*bits_used == 64)
-				*mask = ~0;
-			else
-				*mask = (1 << *bits_used) - 1;
-			if (signchar == 's')
-				*is_signed = 1;
-			else
-				*is_signed = 0;
-			fclose(sysfsfp);
-			free(filename);
-
-			filename = 0;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_free_scan_el_dir:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int iioutils_get_param_float(float *output,
-				    const char *param_name,
-				    const char *device_dir,
-				    const char *name,
-				    const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *builtname, *builtname_generic;
-	char *filename = NULL;
-	const struct dirent *ent;
-
-	ret = asprintf(&builtname, "%s_%s", name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname_generic,
-		       "%s_%s", generic_name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-	dp = opendir(device_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", device_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (!sysfsfp) {
-				ret = -errno;
-				goto error_free_filename;
-			}
-			fscanf(sysfsfp, "%f", output);
-			break;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_ret:
-	return ret;
-}
-
-/**
- * bsort_channel_array_by_index() - reorder so that the array is in index order
- *
- **/
-
-inline void bsort_channel_array_by_index(struct iio_channel_info **ci_array,
-					 int cnt)
-{
-
-	struct iio_channel_info temp;
-	int x, y;
-
-	for (x = 0; x < cnt; x++)
-		for (y = 0; y < (cnt - 1); y++)
-			if ((*ci_array)[y].index > (*ci_array)[y+1].index) {
-				temp = (*ci_array)[y + 1];
-				(*ci_array)[y + 1] = (*ci_array)[y];
-				(*ci_array)[y] = temp;
-			}
-}
-
-/**
- * build_channel_array() - function to figure out what channels are present
- * @device_dir: the IIO device directory in sysfs
- * @
- **/
-inline int build_channel_array(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter)
-{
-	DIR *dp;
-	FILE *sysfsfp;
-	int count, i;
-	struct iio_channel_info *current;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-	char *filename;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_close_dir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				ret = -errno;
-				free(filename);
-				goto error_close_dir;
-			}
-			fscanf(sysfsfp, "%u", &ret);
-			printf("%s, %d\n", filename, ret);
-			if (ret == 1)
-				(*counter)++;
-			fclose(sysfsfp);
-			free(filename);
-		}
-	*ci_array = malloc(sizeof(**ci_array) * (*counter));
-	if (*ci_array == NULL) {
-		ret = -ENOMEM;
-		goto error_close_dir;
-	}
-	closedir(dp);
-	dp = opendir(scan_el_dir);
-	//seekdir(dp, 0);
-	count = 0;
-	while (ent = readdir(dp), ent != NULL) {
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			current = &(*ci_array)[count++];
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				/* decrement count to avoid freeing name */
-				count--;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				free(filename);
-				ret = -errno;
-				goto error_cleanup_array;
-			}
-			fscanf(sysfsfp, "%u", &current->enabled);
-			fclose(sysfsfp);
-
-			if (!current->enabled) {
-				free(filename);
-				count--;
-				continue;
-			}
-
-			current->scale = 1.0;
-			current->offset = 0;
-			current->name = strndup(ent->d_name,
-						strlen(ent->d_name) -
-						strlen("_en"));
-			if (current->name == NULL) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			/* Get the generic and specific name elements */
-			ret = iioutils_break_up_name(current->name,
-						     &current->generic_name);
-			if (ret) {
-				free(filename);
-				goto error_cleanup_array;
-			}
-			ret = asprintf(&filename,
-				       "%s/%s_index",
-				       scan_el_dir,
-				       current->name);
-			if (ret < 0) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			fscanf(sysfsfp, "%u", &current->index);
-			fclose(sysfsfp);
-			free(filename);
-			/* Find the scale */
-			ret = iioutils_get_param_float(&current->scale,
-						       "scale",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_param_float(&current->offset,
-						       "offset",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_type(&current->is_signed,
-						&current->bytes,
-						&current->bits_used,
-						&current->shift,
-						&current->mask,
-						&current->be,
-						device_dir,
-						current->name,
-						current->generic_name);
-		}
-	}
-
-	closedir(dp);
-	/* reorder so that the array is in index order */
-	bsort_channel_array_by_index(ci_array, *counter);
-
-	return 0;
-
-error_cleanup_array:
-	for (i = count - 1;  i >= 0; i--)
-		free((*ci_array)[i].name);
-	free(*ci_array);
-error_close_dir:
-	closedir(dp);
-error_free_name:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int _write_sysfs_int(char *filename, char *basedir, int val, int verify)
-{
-	int ret;
-	FILE *sysfsfp;
-	int test;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL)
-		return -ENOMEM;
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("failed to open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%d", val);
-	fclose(sysfsfp);
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("failed to open %s\n", temp);
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%d", &test);
-		if (test != val) {
-			printf("Possible failure in int write %d to %s%s\n",
-				val,
-				basedir,
-				filename);
-			ret = -1;
-		}
-	}
-error_free:
-	free(temp);
-	return ret;
-}
-
-int write_sysfs_int(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 0);
-}
-
-int write_sysfs_int_and_verify(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 1);
-}
-
-int _write_sysfs_string(char *filename, char *basedir, char *val, int verify)
-{
-	int ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed\n");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("Could not open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%s", val);
-	fclose(sysfsfp);
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("could not open file to verify\n");
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%s", temp);
-		if (strcmp(temp, val) != 0) {
-			printf("Possible failure in string write of %s "
-				"Should be %s "
-				"written to %s\%s\n",
-				temp,
-				val,
-				basedir,
-				filename);
-			ret = -1;
-		}
-	}
-error_free:
-	free(temp);
-
-	return ret;
-}
-
-/**
- * write_sysfs_string_and_verify() - string write, readback and verify
- * @filename: name of file to write to
- * @basedir: the sysfs directory in which the file is to be found
- * @val: the string to write
- **/
-int write_sysfs_string_and_verify(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 1);
-}
-
-int write_sysfs_string(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 0);
-}
-
-int read_sysfs_posint(char *filename, char *basedir)
-{
-	int ret;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%d\n", &ret);
-	fclose(sysfsfp);
-error_free:
-	free(temp);
-	return ret;
-}
-
-int read_sysfs_float(char *filename, char *basedir, float *val)
-{
-	float ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%f\n", val);
-	fclose(sysfsfp);
-error_free:
-	free(temp);
-	return ret;
-}
-int enable(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter)
-{
-	DIR *dp;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			write_sysfs_int_and_verify((char *)ent->d_name, scan_el_dir, 1);
-		}
-	return 0;
-error_ret:
-error_free_name:
-	return -1;
-}
-int disable_q_out(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter) {
-	DIR *dp;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strncmp(ent->d_name, "in_quaternion", strlen("in_quaternion")) == 0) {
-			write_sysfs_int_and_verify((char *)ent->d_name, scan_el_dir, 0);
-		}
-	return 0;
-error_ret:
-error_free_name:
-	return -1;
-
-}
-
diff --git a/60xx/libsensors_iio/software/simple_apps/mpu_iio/mpu_iio.c b/60xx/libsensors_iio/software/simple_apps/mpu_iio/mpu_iio.c
deleted file mode 100644
index b3d323c..0000000
--- a/60xx/libsensors_iio/software/simple_apps/mpu_iio/mpu_iio.c
+++ /dev/null
@@ -1,685 +0,0 @@
-/* Industrialio buffer test code.
- *
- * Copyright (c) 2008 Jonathan Cameron
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- *
- * This program is primarily intended as an example application.
- * Reads the current buffer setup from sysfs and starts a short capture
- * from the specified device, pretty printing the result after appropriate
- * conversion.
- *
- * Command line parameters
- * generic_buffer -n <device_name> -t <trigger_name>
- * If trigger name is not specified the program assumes you want a dataready
- * trigger associated with the device and goes looking for it.
- *
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <linux/types.h>
-#include <string.h>
-#include <poll.h>
-#include "iio_utils.h"
-#include "ml_load_dmp.h"
-#include "ml_sysfs_helper.h"
-#include "authenticate.h"
-
-#define FLICK_SUPPORTED (0)
-
-/**
- * size_from_channelarray() - calculate the storage size of a scan
- * @channels: the channel info array
- * @num_channels: size of the channel info array
- *
- * Has the side effect of filling the channels[i].location values used
- * in processing the buffer output.
- **/
-int size_from_channelarray(struct iio_channel_info *channels, int num_channels)
-{
-    int bytes = 0;
-    int i = 0;
-    while (i < num_channels) {
-        if (bytes % channels[i].bytes == 0)
-            channels[i].location = bytes;
-        else
-            channels[i].location = bytes - bytes%channels[i].bytes
-                + channels[i].bytes;
-        bytes = channels[i].location + channels[i].bytes;
-        i++;
-    }
-    return bytes;
-}
-
-void print2byte(int input, struct iio_channel_info *info)
-{
-    /* shift before conversion to avoid sign extension
-       of left aligned data */
-    input = input >> info->shift;
-    if (info->is_signed) {
-        int16_t val = input;
-        val &= (1 << info->bits_used) - 1;
-        val = (int16_t)(val << (16 - info->bits_used)) >>
-            (16 - info->bits_used);
-        /*printf("%d, %05f, scale=%05f", val,
-               (float)(val + info->offset)*info->scale, info->scale);*/
-        printf("%d, ", val);
-
-    } else {
-        uint16_t val = input;
-        val &= (1 << info->bits_used) - 1;
-        printf("%05f ", ((float)val + info->offset)*info->scale);
-    }
-}
-/**
- * process_scan() - print out the values in SI units
- * @data:        pointer to the start of the scan
- * @infoarray:        information about the channels. Note
- *  size_from_channelarray must have been called first to fill the
- *  location offsets.
- * @num_channels:    the number of active channels
- **/
-void process_scan(char *data,
-          struct iio_channel_info *infoarray,
-          int num_channels)
-{
-    int k;
-    //char *tmp;
-    for (k = 0; k < num_channels; k++) {
-        switch (infoarray[k].bytes) {
-            /* only a few cases implemented so far */
-        case 2:
-            print2byte(*(uint16_t *)(data + infoarray[k].location),
-                   &infoarray[k]);
-            //tmp = data + infoarray[k].location;
-            break;
-        case 4:
-            if (infoarray[k].is_signed) {
-                int32_t val = *(int32_t *)
-                    (data +
-                     infoarray[k].location);
-                if ((val >> infoarray[k].bits_used) & 1)
-                    val = (val & infoarray[k].mask) |
-                        ~infoarray[k].mask;
-                /* special case for timestamp */
-                printf(" %d ", val);
-            }
-            break;
-        case 8:
-            if (infoarray[k].is_signed) {
-                int64_t val = *(int64_t *)
-                    (data +
-                     infoarray[k].location);
-                if ((val >> infoarray[k].bits_used) & 1)
-                    val = (val & infoarray[k].mask) |
-                        ~infoarray[k].mask;
-                /* special case for timestamp */
-                if (infoarray[k].scale == 1.0f &&
-                    infoarray[k].offset == 0.0f)
-                    printf(" %lld", val);
-                else
-                    printf("%05f ", ((float)val +
-                             infoarray[k].offset)*
-                           infoarray[k].scale);
-            }
-            break;
-        default:
-            break;
-        }
-    }
-    printf("\n");
-}
-
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-void enable_flick(char *p, int on){
-    int ret;
-    printf("flick:%s\n", p);
-    ret = write_sysfs_int_and_verify("flick_int_on", p, on);
-    if (ret < 0)
-        return;
-    ret = write_sysfs_int_and_verify("flick_upper", p, 3147790);
-    if (ret < 0)
-        return;
-    ret = write_sysfs_int_and_verify("flick_lower", p, -3147790);
-    if (ret < 0)
-        return;
-
-    ret = write_sysfs_int_and_verify("flick_counter", p, 50);
-    if (ret < 0)
-        return;
-    ret = write_sysfs_int_and_verify("flick_message_on", p, 0);
-    if (ret < 0)
-        return;
-    ret = write_sysfs_int_and_verify("flick_axis", p, 0);
-}
-#endif
-
-void HandleOrient(int orient)
-{    
-    if (orient & 0x01)
-    printf("INV_X_UP\n");
-    if (orient & 0x02) 
-    printf("INV_X_DOWN\n");
-    if (orient & 0x04) 
-    printf("INV_Y_UP\n");
-    if (orient & 0x08) 
-    printf("INV_Y_DOWN\n");
-    if (orient & 0x10) 
-    printf("INV_Z_UP\n");
-    if (orient & 0x20) 
-    printf("INV_Z_DOWN\n");
-    if (orient & 0x40) 
-    printf("INV_ORIENTATION_FLIP\n");
-}
-
-void HandleTap(int tap)
-{
-    int tap_dir = tap/8;
-    int tap_num = tap%8 + 1;
-
-    switch (tap_dir) {
-        case 1:
-            printf("INV_TAP_AXIS_X_POS\n");
-            break;
-        case 2:
-            printf("INV_TAP_AXIS_X_NEG\n");
-            break;
-        case 3:
-            printf("INV_TAP_AXIS_Y_POS\n");
-            break;
-        case 4:
-            printf("INV_TAP_AXIS_Y_NEG\n");
-            break;
-        case 5:
-            printf("INV_TAP_AXIS_Z_POS\n");
-            break;
-        case 6:
-            printf("INV_TAP_AXIS_Z_NEG\n");
-            break;
-        default:
-            break;
-    }
-    printf("Tap number: %d\n", tap_num);
-}
-#define DMP_CODE_SIZE 3060
-void verify_img(char *dmp_path){
-    FILE *fp;
-    int i;
-    char dmp_img[DMP_CODE_SIZE];
-    if ((fp = fopen(dmp_path, "rb")) < 0 ) {
-        perror("dmp fail");
-    }
-    i = fread(dmp_img, 1, DMP_CODE_SIZE, fp);
-    printf("Result=%d\n", i);
-    fclose(fp);
-    fp = fopen("/dev/read_img.h", "wt");
-    fprintf(fp, "char rec[]={\n");
-    for(i=0; i<DMP_CODE_SIZE; i++) {
-      fprintf(fp, "0x%02x, ", dmp_img[i]);
-      if(((i+1)%16) == 0) {
-        fprintf(fp, "\n");
-      }
-    }
-    fprintf(fp, "};\n ");
-    fclose(fp);
-}
-
-void setup_dmp(char *dev_path, int p_event){
-    char sysfs_path[200];
-    char dmp_path[200];
-    int  ret;
-    FILE *fd;
-    sprintf(sysfs_path, "%s", dev_path);
-    printf("sysfs: %s\n", sysfs_path);
-    ret = write_sysfs_int_and_verify("power_state", sysfs_path, 1);
-    if (ret < 0)
-        return;
-
-	ret = write_sysfs_int("in_accel_scale", dev_path, 0);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int("in_anglvel_scale", dev_path, 2);
-	if (ret < 0)
-		return;	
-	ret = write_sysfs_int("sampling_frequency", sysfs_path, 200);
-	if (ret < 0)
-		return;	
-	ret = write_sysfs_int_and_verify("firmware_loaded", sysfs_path, 0);
-	if (ret < 0)
-		return;
-	sprintf(dmp_path, "%s/dmp_firmware", dev_path);
-	if ((fd = fopen(dmp_path, "wb")) < 0 ) {
-		perror("dmp fail");
-	}	
-	inv_load_dmp(fd);
-	fclose(fd);
-	printf("firmware_loaded=%d\n", read_sysfs_posint("firmware_loaded", sysfs_path));
-	ret = write_sysfs_int_and_verify("in_accel_x_offset", sysfs_path, 0xabcd0000);
-	ret = write_sysfs_int_and_verify("in_accel_y_offset", sysfs_path, 0xffff0000);
-	ret = write_sysfs_int_and_verify("in_accel_z_offset", sysfs_path, 0xcdef0000);
-
-	ret = write_sysfs_int_and_verify("dmp_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("dmp_int_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	/* selelct which event to enable and interrupt on/off here */
-	//enable_flick(sysfs_path, 1);
-	ret = write_sysfs_int_and_verify("tap_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("display_orientation_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("orientation_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	printf("rate\n");
-	ret = write_sysfs_int_and_verify("dmp_output_rate", sysfs_path, 25);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("dmp_event_int_on", sysfs_path, p_event);
-	if (ret < 0)
-		return;
-	//verify_img(dmp_path);
-}
-
-void get_dmp_event(char *dev_dir_name)
-{
-    char file_name[100];
-    int i;
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-    int fp_tap, fp_orient, fp_disp, fp_flick;
-    const int n_gest = 6;
-#else
-    int fp_tap, fp_orient, fp_disp, fp_motion;
-    //int fp_no_motion;
-    const int n_gest = 4;
-#endif
-    int data;
-    char d[6];
-    FILE *fp;
-    struct pollfd pfd[4];
-    printf("%s\n", dev_dir_name);
-    while(1) {
-        sprintf(file_name, "%s/event_tap", dev_dir_name);
-        fp_tap = open(file_name, O_RDONLY | O_NONBLOCK);
-        sprintf(file_name, "%s/event_orientation", dev_dir_name);
-        fp_orient = open(file_name, O_RDONLY | O_NONBLOCK);
-        sprintf(file_name, "%s/event_display_orientation", dev_dir_name);
-        fp_disp = open(file_name, O_RDONLY | O_NONBLOCK);
-
-        //sprintf(file_name, "%s/event_accel_motion", dev_dir_name);
-        sprintf(file_name, "%s/event_accel_wom", dev_dir_name);
-        fp_motion = open(file_name, O_RDONLY | O_NONBLOCK);
-        //sprintf(file_name, "%s/event_accel_no_motion", dev_dir_name);
-        //fp_no_motion = open(file_name, O_RDONLY | O_NONBLOCK);
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-        sprintf(file_name, "%s/event_flick", dev_dir_name);
-        fp_flick = open(file_name, O_RDONLY | O_NONBLOCK);
-#endif
-
-        pfd[0].fd = fp_tap;
-        pfd[0].events = POLLPRI|POLLERR,
-        pfd[0].revents = 0;
-
-        pfd[1].fd = fp_orient;
-        pfd[1].events = POLLPRI|POLLERR,
-        pfd[1].revents = 0;
-
-        pfd[2].fd = fp_disp;
-        pfd[2].events = POLLPRI|POLLERR,
-        pfd[2].revents = 0;
-
-        pfd[3].fd = fp_motion;
-        pfd[3].events = POLLPRI|POLLERR,
-        pfd[3].revents = 0;
-
-        //pfd[4].fd = fp_no_motion;
-        //pfd[4].events = POLLPRI|POLLERR,
-        //pfd[4].revents = 0;
-
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-        pfd[5].fd = fp_flick;
-        pfd[5].events = POLLPRI|POLLERR,
-        pfd[5].revents = 0;    
-#endif
-
-        read(fp_tap, d, 4);
-        read(fp_orient, d, 4);
-        read(fp_disp, d, 4);
-        read(fp_motion, d, 4);
-        //read(fp_no_motion, d, 4);
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-        read(fp_flick, d, 4);
-#endif
-
-        poll(pfd, n_gest, -1);
-        close(fp_tap);
-        close(fp_orient);
-        close(fp_disp);
-        close(fp_motion);
-        //close(fp_no_motion);
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-        close(fp_flick);
-#endif
-        for (i = 0; i < ARRAY_SIZE(pfd); i++) {
-            if(pfd[i].revents != 0) {
-                switch (i){
-                case 0:
-                    sprintf(file_name, "%s/event_tap", dev_dir_name);
-                    fp = fopen(file_name, "rt");
-                    fscanf(fp, "%d\n", &data);
-                    printf("tap=%x\n", data);
-                    HandleTap(data);
-                    fclose(fp);
-                break;
-                case 1:
-                    sprintf(file_name, "%s/event_orientation", dev_dir_name);
-                    fp = fopen(file_name, "rt");
-                    fscanf(fp, "%d\n", &data);
-                    printf("orient=%x\n", data);
-                    HandleOrient(data);
-                    fclose(fp);
-                break;
-                case 2:
-                    sprintf(file_name, "%s/event_display_orientation", dev_dir_name);
-                    fp = fopen(file_name, "rt");
-                    fscanf(fp, "%d\n", &data);
-                    printf("display_orient=%x\n", data);
-                    fclose(fp);
-                break;
-                case 3:
-                    sprintf(file_name, "%s/event_accel_wom", dev_dir_name);
-                    fp = fopen(file_name, "rt");
-                    fscanf(fp, "%d\n", &data);
-                    printf("motion=%x\n", data);
-                    fclose(fp);
-                break;
-                case 4:
-                    sprintf(file_name, "%s/event_accel_no_motion", dev_dir_name);
-                    fp = fopen(file_name, "rt");
-                    fscanf(fp, "%d\n", &data);
-                    printf("No motion=%x\n", data);
-                    fclose(fp);
-                break;
-
-#if FLICK_SUPPORTED /* hide flick, not offially supported */
-                case 5:
-                    sprintf(file_name, "%s/event_flick", dev_dir_name);
-                    fp = fopen(file_name, "rt");
-                    fscanf(fp, "%d\n", &data);
-                    printf("flick=%x\n", data);
-                    fclose(fp);
-                break;
-#endif
-                }
-            }
-        }                        
-    }
-}
-
-
-int main(int argc, char **argv)
-{
-    unsigned long num_loops = 2;
-    unsigned long timedelay = 100000;
-    unsigned long buf_len = 128;
-
-    int ret, c, i, j, toread;
-    int fp;
-
-    int num_channels;
-    char *trigger_name = NULL;
-    char *dev_dir_name, *buf_dir_name;
-
-    int datardytrigger = 1;
-    char *data;
-    int read_size;
-    int dev_num, trig_num;
-    char *buffer_access;
-    int scan_size;
-    int noevents = 0;
-    int p_event = 0, nodmp = 0;
-    char *dummy;
-    char chip_name[10];
-    char device_name[10];
-    char sysfs[100];
-
-    struct iio_channel_info *infoarray;
-    /* -r means no DMP is enabled (raw) -> should be used for mpu3050.
-       -p means no print of data */
-    /* when using -p, 1 means orientation, 2 means tap, 3 means flick */
-    while ((c = getopt(argc, argv, "l:w:c:pret:")) != -1) {
-        switch (c) {
-        case 't':
-            trigger_name = optarg;
-            datardytrigger = 0;
-            break;
-        case 'e':
-            noevents = 1;
-            break;
-        case 'p':
-            p_event = 1;
-            break;
-        case 'r':
-            nodmp = 1;
-            break;
-        case 'c':
-            num_loops = strtoul(optarg, &dummy, 10);
-            break;
-        case 'w':
-            timedelay = strtoul(optarg, &dummy, 10);
-            break;
-        case 'l':
-            buf_len = strtoul(optarg, &dummy, 10);
-            break;
-        case '?':
-            return -1;
-        }
-    }
-    inv_get_sysfs_path(sysfs);
-    printf("sss:::%s\n", sysfs);
-    if (inv_get_chip_name(chip_name) != INV_SUCCESS) {
-        printf("get chip name fail\n");
-        exit(0);
-    }
-    printf("chip_name=%s\n", chip_name);
-    if (INV_SUCCESS != inv_check_key())
-            printf("key check fail\n");
-    else
-            printf("key authenticated\n");
-
-    for (i=0; i<strlen(chip_name); i++) {
-        device_name[i] = tolower(chip_name[i]);
-    }
-    device_name[strlen(chip_name)] = '\0';
-    printf("device name: %s\n", device_name);
-
-    /* Find the device requested */
-    dev_num = find_type_by_name(device_name, "iio:device");
-    if (dev_num < 0) {
-        printf("Failed to find the %s\n", device_name);
-        ret = -ENODEV;
-        goto error_ret;
-    }
-    printf("iio device number being used is %d\n", dev_num);
-    asprintf(&dev_dir_name, "%siio:device%d", iio_dir, dev_num);
-    if (trigger_name == NULL) {
-        /*
-         * Build the trigger name. If it is device associated it's
-         * name is <device_name>_dev[n] where n matches the device
-         * number found above
-         */
-        ret = asprintf(&trigger_name,
-                   "%s-dev%d", device_name, dev_num);
-        if (ret < 0) {
-            ret = -ENOMEM;
-            goto error_ret;
-        }
-    }
-    ret = write_sysfs_int("buffer/enable", dev_dir_name, 0);
-
-	ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("gyro_enable", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("accl_enable", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("compass_enable", dev_dir_name, 1);
-/*
-	ret = write_sysfs_int_and_verify("zero_motion_on", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("zero_motion_dur", dev_dir_name, 12);
-	ret = write_sysfs_int_and_verify("zero_motion_threshold", dev_dir_name, 13);
-
-	ret = write_sysfs_int_and_verify("motion_on", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("motion_dur", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("motion_threshold", dev_dir_name, 1);
-*/
-	ret = write_sysfs_int_and_verify("accel_wom_on", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("accel_wom_threshold", dev_dir_name, 100);
-    /* Verify the trigger exists */
-    trig_num = find_type_by_name(trigger_name, "trigger");
-    if (trig_num < 0) {
-        printf("Failed to find the trigger %s\n", trigger_name);
-        ret = -ENODEV;
-        goto error_free_triggername;
-    }
-    printf("iio trigger number being used is %d\n", trig_num);
-    /*
-     * Parse the files in scan_elements to identify what channels are
-     * present
-     */
-    ret = 0;
-    ret = enable(dev_dir_name, &infoarray, &num_channels);
-    if (ret) {
-        printf("error enable\n");
-        goto error_free_triggername;
-    }
-    if (!nodmp)
-        setup_dmp(dev_dir_name, p_event);
-
-    /*
-     * Construct the directory name for the associated buffer.
-     * As we know that the lis3l02dq has only one buffer this may
-     * be built rather than found.
-     */
-    ret = asprintf(&buf_dir_name, "%siio:device%d/buffer", iio_dir, dev_num);
-    if (ret < 0) {
-        ret = -ENOMEM;
-        goto error_free_triggername;
-    }
-    printf("%s %s\n", dev_dir_name, trigger_name);
-
-    /* Set the device trigger to be the data rdy trigger found above */
-    ret = write_sysfs_string_and_verify("trigger/current_trigger",
-                    dev_dir_name,
-                    trigger_name);
-    if (ret < 0) {
-        printf("Failed to write current_trigger file\n");
-        goto error_free_buf_dir_name;
-    }
-    /* Setup ring buffer parameters */
-    /* length must be even number because iio_store_to_sw_ring is expecting 
-        half pointer to be equal to the read pointer, which is impossible
-        when buflen is odd number. This is actually a bug in the code */
-    ret = write_sysfs_int("length", buf_dir_name, buf_len*2);
-    if (ret < 0)
-        goto exit_here;
-    ret = write_sysfs_int_and_verify("gyro_enable", dev_dir_name, 1);
-    ret = write_sysfs_int_and_verify("accl_enable", dev_dir_name, 1);
-    //ret = write_sysfs_int_and_verify("compass_enable", dev_dir_name, 0);
-    if (nodmp == 0) {
-        ret = write_sysfs_int_and_verify("quaternion_on", dev_dir_name, 1);
-    } else {
-        ret = disable_q_out(dev_dir_name, &infoarray, &num_channels);        
-        ret = write_sysfs_int_and_verify("dmp_on", dev_dir_name, 0);
-    }
-    ret = build_channel_array(dev_dir_name, &infoarray, &num_channels);
-    if (ret) {
-        printf("Problem reading scan element information\n");
-        goto exit_here;
-    }
-
-    /* Enable the buffer */
-    ret = write_sysfs_int("enable", buf_dir_name, 1);
-    if (ret < 0)
-        goto exit_here;
-    scan_size = size_from_channelarray(infoarray, num_channels);
-    data = malloc(scan_size*buf_len);
-    if (!data) {
-        ret = -ENOMEM;
-        goto exit_here;
-    }
-
-    ret = asprintf(&buffer_access,
-               "/dev/iio:device%d",
-               dev_num);
-    if (ret < 0) {
-        ret = -ENOMEM;
-        goto error_free_data;
-    }
-    if (p_event) {
-        get_dmp_event(dev_dir_name);
-        goto error_free_buffer_access;
-    }
-    /* Attempt to open non blocking the access dev */
-    fp = open(buffer_access, O_RDONLY | O_NONBLOCK);
-    if (fp == -1) { /*If it isn't there make the node */
-        printf("Failed to open %s\n", buffer_access);
-        ret = -errno;
-        goto error_free_buffer_access;
-    }
-    /* Wait for events 10 times */
-    for (j = 0; j < num_loops; j++) {
-        if (!noevents) {
-            struct pollfd pfd = {
-                .fd = fp,
-                .events = POLLIN,
-            };
-            poll(&pfd, 1, -1);
-            toread = 1;
-            if ((j%128)==0)
-                usleep(timedelay);
-
-        } else {
-            usleep(timedelay);
-            toread = 1;
-        }
-        read_size = read(fp,
-                 data,
-                 toread*scan_size);
-        if (read_size == -EAGAIN) {
-            printf("nothing available\n");
-            continue;
-        }
-        if (0 == p_event) {
-            for (i = 0; i < read_size/scan_size; i++)
-                process_scan(data + scan_size*i,
-                         infoarray,
-                         num_channels);
-        }
-    }
-    close(fp);
-error_free_buffer_access:
-    free(buffer_access);
-error_free_data:
-    free(data);
-exit_here:
-    /* Stop the ring buffer */
-    ret = write_sysfs_int("enable", buf_dir_name, 0);
-
-error_free_buf_dir_name:
-    free(buf_dir_name);
-error_free_triggername:
-    if (datardytrigger)
-        free(trigger_name);
-error_ret:
-    return ret;
-}
diff --git a/60xx/libsensors_iio/software/simple_apps/self_test/build/android/inv_self_test-shared b/60xx/libsensors_iio/software/simple_apps/self_test/build/android/inv_self_test-shared
deleted file mode 100644
index 6dc08bd..0000000
--- a/60xx/libsensors_iio/software/simple_apps/self_test/build/android/inv_self_test-shared
+++ /dev/null
Binary files differ
diff --git a/60xx/libsensors_iio/software/simple_apps/self_test/build/android/shared.mk b/60xx/libsensors_iio/software/simple_apps/self_test/build/android/shared.mk
deleted file mode 100644
index ed5fbf6..0000000
--- a/60xx/libsensors_iio/software/simple_apps/self_test/build/android/shared.mk
+++ /dev/null
@@ -1,98 +0,0 @@
-EXEC = inv_self_test$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-COMMON_DIR = $(INV_ROOT)/software/simple_apps/common
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-HAL_DIR    = $(INV_ROOT)/software/core/HAL
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += -I$(COMMON_DIR)
-CFLAGS += -I$(HAL_DIR)/include
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/60xx/libsensors_iio/software/simple_apps/self_test/build/filelist.mk b/60xx/libsensors_iio/software/simple_apps/self_test/build/filelist.mk
deleted file mode 100644
index 492f47e..0000000
--- a/60xx/libsensors_iio/software/simple_apps/self_test/build/filelist.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#### filelist.mk for console_test ####
-
-# headers
-HEADERS += $(HAL_DIR)/include/inv_sysfs_utils.h
-
-# sources
-SOURCES := $(APP_DIR)/inv_self_test.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR) $(HAL_DIR)/linux
diff --git a/60xx/libsensors_iio/software/simple_apps/self_test/inv_self_test.c b/60xx/libsensors_iio/software/simple_apps/self_test/inv_self_test.c
deleted file mode 100644
index 87ed703..0000000
--- a/60xx/libsensors_iio/software/simple_apps/self_test/inv_self_test.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/**
- *  Self Test application for Invensense's MPU6050/MPU6500/MPU9150.
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <features.h>
-#include <dirent.h>
-#include <string.h>
-#include <poll.h>
-#include <stddef.h>
-#include <linux/input.h>
-#include <time.h>
-#include <linux/time.h>
-
-#include "invensense.h"
-#include "ml_math_func.h"
-#include "storage_manager.h"
-#include "ml_stored_data.h"
-#include "ml_sysfs_helper.h"
-
-#ifndef ABS
-#define ABS(x)(((x) >= 0) ? (x) : -(x))
-#endif
-
-//#define DEBUG_PRINT     /* Uncomment to print Gyro & Accel read from Driver */
-
-#define MAX_SYSFS_NAME_LEN  (100)
-#define MAX_SYSFS_ATTRB (sizeof(struct sysfs_attrbs) / sizeof(char*))
-
-/** Change this key if the data being stored by this file changes */
-#define INV_DB_SAVE_KEY 53395
-
-#define FALSE   0
-#define TRUE    1
-
-#define GYRO_PASS_STATUS_BIT    0x01
-#define ACCEL_PASS_STATUS_BIT   0x02
-#define COMPASS_PASS_STATUS_BIT 0x04
-
-typedef union {
-    long l;
-    int i;
-} bias_dtype;
-
-char *sysfs_names_ptr;
-
-struct sysfs_attrbs {
-    char *enable;
-    char *power_state;
-    char *dmp_on;
-    char *dmp_int_on;
-    char *self_test;
-    char *temperature;
-    char *gyro_enable;
-    char *gyro_x_bias;
-    char *gyro_y_bias;
-    char *gyro_z_bias;
-    char *accel_enable;
-    char *accel_x_bias;
-    char *accel_y_bias;
-    char *accel_z_bias;
-    char *compass_enable;
-} mpu;
-
-struct inv_db_save_t {
-    /** Compass Bias in Chip Frame in Hardware units scaled by 2^16 */
-    long compass_bias[3];
-    /** Gyro Bias in Chip Frame in Hardware units scaled by 2^16 */
-    long gyro_bias[3];
-    /** Temperature when *gyro_bias was stored. */
-    long gyro_temp;
-    /** Accel Bias in Chip Frame in Hardware units scaled by 2^16 */
-    long accel_bias[3];
-    /** Temperature when accel bias was stored. */
-    long accel_temp;
-    long gyro_temp_slope[3];
-    /** Sensor Accuracy */
-    int gyro_accuracy;
-    int accel_accuracy;
-    int compass_accuracy;
-};
-
-static struct inv_db_save_t save_data;
-
-/** This function receives the data that was stored in non-volatile memory
-    between power off */
-static inv_error_t inv_db_load_func(const unsigned char *data)
-{
-    memcpy(&save_data, data, sizeof(save_data));
-    return INV_SUCCESS;
-}
-
-/** This function returns the data to be stored in non-volatile memory between
-    power off */
-static inv_error_t inv_db_save_func(unsigned char *data)
-{
-    memcpy(data, &save_data, sizeof(save_data));
-    return INV_SUCCESS;
-}
-
-/** read a sysfs entry that represents an integer */
-int read_sysfs_int(char *filename, int *var)
-{
-    int res=0;
-    FILE *fp;
-
-    fp = fopen(filename, "r");
-    if (fp != NULL) {
-        fscanf(fp, "%d\n", var);
-        fclose(fp);
-    } else {
-        MPL_LOGE("inv_self_test: ERR open file to read");
-        res= -1;   
-    }
-    return res;
-}
-
-/** write a sysfs entry that represents an integer */
-int write_sysfs_int(char *filename, int data)
-{
-    int res=0;
-    FILE  *fp;
-
-    fp = fopen(filename, "w");
-    if (fp!=NULL) {
-        fprintf(fp, "%d\n", data);
-        fclose(fp);
-    } else {
-        MPL_LOGE("inv_self_test: ERR open file to write");
-        res= -1;   
-    }
-    return res;
-}
-
-int inv_init_sysfs_attributes(void)
-{
-    unsigned char i = 0;
-    char sysfs_path[MAX_SYSFS_NAME_LEN];
-    char *sptr;
-    char **dptr;
-
-    sysfs_names_ptr = 
-            (char*)malloc(sizeof(char[MAX_SYSFS_ATTRB][MAX_SYSFS_NAME_LEN]));
-    sptr = sysfs_names_ptr;
-    if (sptr != NULL) {
-        dptr = (char**)&mpu;
-        do {
-            *dptr++ = sptr;
-            sptr += sizeof(char[MAX_SYSFS_NAME_LEN]);
-        } while (++i < MAX_SYSFS_ATTRB);
-    } else {
-        MPL_LOGE("inv_self_test: couldn't alloc mem for sysfs paths");
-        return -1;
-    }
-
-    // get proper (in absolute/relative) IIO path & build MPU's sysfs paths
-    inv_get_sysfs_path(sysfs_path);
-
-    sprintf(mpu.enable, "%s%s", sysfs_path, "/buffer/enable");
-    sprintf(mpu.power_state, "%s%s", sysfs_path, "/power_state");
-    sprintf(mpu.dmp_on,"%s%s", sysfs_path, "/dmp_on");
-    sprintf(mpu.self_test, "%s%s", sysfs_path, "/self_test");
-    sprintf(mpu.temperature, "%s%s", sysfs_path, "/temperature");
-
-    sprintf(mpu.gyro_enable, "%s%s", sysfs_path, "/gyro_enable");
-    sprintf(mpu.gyro_x_bias, "%s%s", sysfs_path, "/in_anglvel_x_calibbias");
-    sprintf(mpu.gyro_y_bias, "%s%s", sysfs_path, "/in_anglvel_y_calibbias");
-    sprintf(mpu.gyro_z_bias, "%s%s", sysfs_path, "/in_anglvel_z_calibbias");
-
-    sprintf(mpu.accel_enable, "%s%s", sysfs_path, "/accl_enable");
-    sprintf(mpu.accel_x_bias, "%s%s", sysfs_path, "/in_accel_x_calibbias");
-    sprintf(mpu.accel_y_bias, "%s%s", sysfs_path, "/in_accel_y_calibbias");
-    sprintf(mpu.accel_z_bias, "%s%s", sysfs_path, "/in_accel_z_calibbias");
-
-    sprintf(mpu.compass_enable, "%s%s", sysfs_path, "/compass_enable");
-
-#if 0
-    // test print sysfs paths
-    dptr = (char**)&mpu;
-    for (i = 0; i < MAX_SYSFS_ATTRB; i++) {
-        MPL_LOGE("inv_self_test: sysfs path: %s", *dptr++);
-    }
-#endif
-    return 0;
-}
-
-/*******************************************************************************
- *                       M a i n  S e l f  T e s t 
- ******************************************************************************/
-int main(int argc, char **argv)
-{
-    FILE *fptr;
-    int self_test_status = 0;
-    inv_error_t result;
-    bias_dtype gyro_bias[3];
-    bias_dtype accel_bias[3];
-    int axis = 0;
-    size_t packet_sz;
-    int axis_sign = 1;
-    unsigned char *buffer;
-    long timestamp;
-    int temperature = 0;
-    bool compass_present = TRUE;
-
-    result = inv_init_sysfs_attributes();
-    if (result)
-        return -1;
-
-    inv_init_storage_manager();
-
-    // Clear out data.
-    memset(&save_data, 0, sizeof(save_data));
-    memset(gyro_bias, 0, sizeof(gyro_bias));
-    memset(accel_bias, 0, sizeof(accel_bias));
-
-    // Register packet to be saved.
-    result = inv_register_load_store(
-                inv_db_load_func, inv_db_save_func,
-                sizeof(save_data), INV_DB_SAVE_KEY);
-
-    // Power ON MPUxxxx chip
-    if (write_sysfs_int(mpu.power_state, 1) < 0) {
-        printf("Self-Test:ERR-Failed to set power state=1\n");
-    } else {
-        // Note: Driver turns on power automatically when self-test invoked
-    }
-
-    // Disable Master enable 
-    if (write_sysfs_int(mpu.enable, 0) < 0) {
-        printf("Self-Test:ERR-Failed to disable master enable\n");
-    }
-
-    // Disable DMP
-    if (write_sysfs_int(mpu.dmp_on, 0) < 0) {
-        printf("Self-Test:ERR-Failed to disable DMP\n");
-    }
-
-    // Enable Accel
-    if (write_sysfs_int(mpu.accel_enable, 1) < 0) {
-        printf("Self-Test:ERR-Failed to enable accel\n");
-    }
-
-    // Enable Gyro
-    if (write_sysfs_int(mpu.gyro_enable, 1) < 0) {
-        printf("Self-Test:ERR-Failed to enable gyro\n");
-    }
-
-    // Enable Compass
-    if (write_sysfs_int(mpu.compass_enable, 1) < 0) {
-#ifdef DEBUG_PRINT
-        printf("Self-Test:ERR-Failed to enable compass\n");
-#endif
-        compass_present= FALSE;
-    }
-
-    fptr = fopen(mpu.self_test, "r");
-    if (!fptr) {
-        printf("Self-Test:ERR-Couldn't invoke self-test\n");
-        result = -1;
-        goto free_sysfs_storage;
-    }
-
-    // Invoke self-test 
-    fscanf(fptr, "%d", &self_test_status);
-	if (compass_present == TRUE) {
-        printf("Self-Test:Self test result- "
-           "Gyro passed= %x, Accel passed= %x, Compass passed= %x\n",
-           (self_test_status & GYRO_PASS_STATUS_BIT),
-           (self_test_status & ACCEL_PASS_STATUS_BIT) >> 1,
-           (self_test_status & COMPASS_PASS_STATUS_BIT) >> 2);
-	} else {
-		printf("Self-Test:Self test result- "
-			   "Gyro passed= %x, Accel passed= %x\n",
-			   (self_test_status & GYRO_PASS_STATUS_BIT),
-			   (self_test_status & ACCEL_PASS_STATUS_BIT) >> 1);
-	}
-    fclose(fptr);
-
-    if (self_test_status & GYRO_PASS_STATUS_BIT) {
-        // Read Gyro Bias
-        if (read_sysfs_int(mpu.gyro_x_bias, &gyro_bias[0].i) < 0 ||
-            read_sysfs_int(mpu.gyro_y_bias, &gyro_bias[1].i) < 0 ||
-            read_sysfs_int(mpu.gyro_z_bias, &gyro_bias[2].i) < 0) {
-            memset(gyro_bias, 0, sizeof(gyro_bias));
-            printf("Self-Test:Failed to read Gyro bias\n");
-        } else {
-            save_data.gyro_accuracy = 3;
-#ifdef DEBUG_PRINT
-            printf("Self-Test:Gyro bias[0..2]= [%d %d %d]\n", 
-                   gyro_bias[0].i, gyro_bias[1].i, gyro_bias[2].i);
-#endif
-        }
-    } else {
-        printf("Self-Test:Failed Gyro self-test\n");
-    }
-
-    if (self_test_status & ACCEL_PASS_STATUS_BIT) {
-        // Read Accel Bias
-        if (read_sysfs_int(mpu.accel_x_bias, &accel_bias[0].i) < 0 ||
-            read_sysfs_int(mpu.accel_y_bias, &accel_bias[1].i) < 0 ||
-            read_sysfs_int(mpu.accel_z_bias, &accel_bias[2].i) < 0) {
-            memset(accel_bias,0, sizeof(accel_bias));
-            printf("Self-Test:Failed to read Accel bias\n");
-        } else {
-            save_data.accel_accuracy = 3;
-#ifdef DEBUG_PRINT
-            printf("Self-Test:Accel bias[0..2]= [%d %d %d]\n",
-                   accel_bias[0].i, accel_bias[1].i, accel_bias[2].i);
-#endif
-       }
-    } else {
-        printf("Self-Test:Failed Accel self-test\n");
-    }
-
-    if (!(self_test_status & (GYRO_PASS_STATUS_BIT | ACCEL_PASS_STATUS_BIT))) {
-        printf("Self-Test:Failed Gyro and Accel self-test, "
-               "nothing left to do\n");
-        result = -1;
-        goto free_sysfs_storage;
-    }
-
-    // Read temperature
-    fptr= fopen(mpu.temperature, "r");
-    if (fptr != NULL) {
-        fscanf(fptr,"%d %ld", &temperature, &timestamp);
-        fclose(fptr);
-    } else {
-        printf("Self-Test:ERR-Couldn't read temperature\n");
-    }
-
-    // When we read gyro bias, the bias is in raw units scaled by 1000.
-    // We store the bias in raw units scaled by 2^16
-    save_data.gyro_bias[0] = (long)(gyro_bias[0].l * 65536.f / 8000.f);
-    save_data.gyro_bias[1] = (long)(gyro_bias[1].l * 65536.f / 8000.f);
-    save_data.gyro_bias[2] = (long)(gyro_bias[2].l * 65536.f / 8000.f);
-
-    // Save temperature @ time stored.
-    //  Temperature is in degrees Celsius scaled by 2^16
-    save_data.gyro_temp = temperature * (1L << 16);
-    save_data.accel_temp = save_data.gyro_temp; 
-
-    // When we read accel bias, the bias is in raw units scaled by 1000.
-    // and it contains the gravity vector.
-    
-    // Find the orientation of the device, by looking for gravity
-    if (ABS(accel_bias[1].l) > ABS(accel_bias[0].l)) {
-        axis = 1;
-    }
-    if (ABS(accel_bias[2].l) > ABS(accel_bias[axis].l)) {
-        axis = 2;
-    }
-    if (accel_bias[axis].l < 0) {
-        axis_sign = -1;
-    }
-    
-    // Remove gravity, gravity in raw units should be 16384 for a 2g setting.
-    // We read data scaled by 1000, so 
-    accel_bias[axis].l -= axis_sign * 4096L * 1000L;
-
-    // Convert scaling from raw units scaled by 1000 to raw scaled by 2^16
-    save_data.accel_bias[0] = (long)(accel_bias[0].l * 65536.f / 1000.f * 4.f);
-    save_data.accel_bias[1] = (long)(accel_bias[1].l * 65536.f / 1000.f * 4.f);
-    save_data.accel_bias[2] = (long)(accel_bias[2].l * 65536.f / 1000.f * 4.f);
-
-#if 1
-    printf("Self-Test:Saved Accel bias[0..2]= [%ld %ld %ld]\n",
-           save_data.accel_bias[0], save_data.accel_bias[1], 
-           save_data.accel_bias[2]);
-    printf("Self-Test:Saved Gyro bias[0..2]= [%ld %ld %ld]\n",
-           save_data.gyro_bias[0], save_data.gyro_bias[1], 
-           save_data.gyro_bias[2]);
-    printf("Self-Test:Gyro temperature @ time stored %ld\n", 
-           save_data.gyro_temp);
-    printf("Self-Test:Accel temperature @ time stored %ld\n", 
-           save_data.accel_temp);
-#endif
-
-    // Get size of packet to store.
-    inv_get_mpl_state_size(&packet_sz);
-
-    // Create place to store data
-    buffer = (unsigned char *)malloc(packet_sz + 10);
-    if (buffer == NULL) {
-        printf("Self-Test:Can't allocate buffer\n");
-        result = -1;
-        goto free_sysfs_storage;
-    }
-
-    // Store the data
-    result = inv_save_mpl_states(buffer, packet_sz);
-    if (result) {
-        result = -1;
-    } else {
-        fptr= fopen(MLCAL_FILE, "wb+");
-        if (fptr != NULL) {
-            fwrite(buffer, 1, packet_sz, fptr);
-            fclose(fptr);
-        } else {
-            printf("Self-Test:ERR- Can't open calibration file to write - %s\n",
-                   MLCAL_FILE);
-            result = -1;
-        }
-    }
-
-    free(buffer);
-
-free_sysfs_storage:
-    free(sysfs_names_ptr);
-    return result;
-}
-
diff --git a/65xx/libsensors_iio/software/core/driver/include/linux/mpu.h b/65xx/libsensors_iio/software/core/driver/include/linux/mpu.h
deleted file mode 100755
index 8676043..0000000
--- a/65xx/libsensors_iio/software/core/driver/include/linux/mpu.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-* Copyright (C) 2012 Invensense, Inc.
-*
-* This software is licensed under the terms of the GNU General Public
-* License version 2, as published by the Free Software Foundation, and
-* may be copied, distributed, and modified under those terms.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*/
-
-#ifndef __MPU_H_
-#define __MPU_H_
-
-#ifdef __KERNEL__
-#include <linux/types.h>
-#include <linux/ioctl.h>
-#endif
-
-enum secondary_slave_type {
-	SECONDARY_SLAVE_TYPE_NONE,
-	SECONDARY_SLAVE_TYPE_ACCEL,
-	SECONDARY_SLAVE_TYPE_COMPASS,
-	SECONDARY_SLAVE_TYPE_PRESSURE,
-
-	SECONDARY_SLAVE_TYPE_TYPES
-};
-
-enum ext_slave_id {
-	ID_INVALID = 0,
-	GYRO_ID_MPU3050,
-	GYRO_ID_MPU6050A2,
-	GYRO_ID_MPU6050B1,
-	GYRO_ID_MPU6050B1_NO_ACCEL,
-	GYRO_ID_ITG3500,
-
-	ACCEL_ID_LIS331,
-	ACCEL_ID_LSM303DLX,
-	ACCEL_ID_LIS3DH,
-	ACCEL_ID_KXSD9,
-	ACCEL_ID_KXTF9,
-	ACCEL_ID_BMA150,
-	ACCEL_ID_BMA222,
-	ACCEL_ID_BMA250,
-	ACCEL_ID_ADXL34X,
-	ACCEL_ID_MMA8450,
-	ACCEL_ID_MMA845X,
-	ACCEL_ID_MPU6050,
-
-	COMPASS_ID_AK8963,
-	COMPASS_ID_AK8975,
-	COMPASS_ID_AK8972,
-	COMPASS_ID_AMI30X,
-	COMPASS_ID_AMI306,
-	COMPASS_ID_YAS529,
-	COMPASS_ID_YAS530,
-	COMPASS_ID_HMC5883,
-	COMPASS_ID_LSM303DLH,
-	COMPASS_ID_LSM303DLM,
-	COMPASS_ID_MMC314X,
-	COMPASS_ID_HSCDTD002B,
-	COMPASS_ID_HSCDTD004A,
-	COMPASS_ID_MLX90399,
-
-	PRESSURE_ID_BMP085,
-	PRESSURE_ID_BMP280,
-};
-
-#define INV_PROD_KEY(ver, rev) (ver * 100 + rev)
-/**
- * struct mpu_platform_data - Platform data for the mpu driver
- * @int_config:		Bits [7:3] of the int config register.
- * @level_shifter:	0: VLogic, 1: VDD
- * @orientation:	Orientation matrix of the gyroscope
- * @sec_slave_type:     secondary slave device type, can be compass, accel, etc
- * @sec_slave_id:       id of the secondary slave device
- * @secondary_i2c_address: secondary device's i2c address
- * @secondary_orientation: secondary device's orientation matrix
- * @key:                key for MPL library.
- *
- * Contains platform specific information on how to configure the MPU3050 to
- * work on this platform.  The orientation matricies are 3x3 rotation matricies
- * that are applied to the data to rotate from the mounting orientation to the
- * platform orientation.  The values must be one of 0, 1, or -1 and each row and
- * column should have exactly 1 non-zero value.
- */
-struct mpu_platform_data {
-	__u8 int_config;
-	__u8 level_shifter;
-	__s8 orientation[9];
-	enum secondary_slave_type sec_slave_type;
-	enum ext_slave_id sec_slave_id;
-	__u16 secondary_i2c_addr;
-	__s8 secondary_orientation[9];
-	__u8 key[16];
-	enum secondary_slave_type aux_slave_type;
-	enum ext_slave_id aux_slave_id;
-	__u16 aux_i2c_addr;
-};
-
-#endif	/* __MPU_H_ */
diff --git a/65xx/libsensors_iio/software/simple_apps/common/console_helper.c b/65xx/libsensors_iio/software/simple_apps/common/console_helper.c
deleted file mode 100755
index 2888627..0000000
--- a/65xx/libsensors_iio/software/simple_apps/common/console_helper.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- $License:
-    Copyright (C) 2012 InvenSense Corporation, All Rights Reserved.
- $
- */
-
-/******************************************************************************
- *
- * $Id:$
- *
- *****************************************************************************/
-
-#include <stdio.h>
-#ifdef _WIN32
-#include <windows.h>
-#include <conio.h>
-#endif
-#ifdef LINUX
-#include <sys/select.h>
-#endif
-#include <time.h>
-#include <string.h>
-
-int ConsoleKbhit(void)
-{
-#ifdef _WIN32
-    return _kbhit();
-#else
-    struct timeval tv;
-    fd_set read_fd;
-
-    tv.tv_sec=0;
-    tv.tv_usec=0;
-    FD_ZERO(&read_fd);
-    FD_SET(0, &read_fd);
-
-    if(select(1, &read_fd, NULL, NULL, &tv) == -1)
-        return 0;
-
-    if(FD_ISSET(0, &read_fd))
-        return 1;
-
-    return 0;
-#endif
-}
-
-char ConsoleGetChar(void)
-{
-#ifdef _WIN32
-    return _getch();
-#else
-    return getchar();
-#endif
-}
diff --git a/65xx/libsensors_iio/software/simple_apps/common/console_helper.h b/65xx/libsensors_iio/software/simple_apps/common/console_helper.h
deleted file mode 100755
index 5251d1c..0000000
--- a/65xx/libsensors_iio/software/simple_apps/common/console_helper.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- $License:
-    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
- $
- */
-
-/******************************************************************************
- *
- * $Id:$
- *
- *****************************************************************************/
-
-#ifndef _CONSOLE_HELPER_H_
-#define _CONSOLE_HELPER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//#include "mltypes.h"
-
-/*
-    Prototypes
-*/
-
-char ConsoleGetChar(void);
-int ConsoleKbhit(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _CONSOLE_HELPER_H_
diff --git a/65xx/libsensors_iio/software/simple_apps/common/mlerrorcode.c b/65xx/libsensors_iio/software/simple_apps/common/mlerrorcode.c
deleted file mode 100755
index 25b0df6..0000000
--- a/65xx/libsensors_iio/software/simple_apps/common/mlerrorcode.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- $License:
-    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
- $
- */
-
-/******************************************************************************
- *
- * $Id: mlerrorcode.c 5629 2011-06-11 03:13:08Z mcaramello $
- *
- *****************************************************************************/
-
-#include <stdio.h>
-#include <string.h>
-
-#include "mltypes.h"
-#include "mlerrorcode.h"
-
-#define ERROR_CODE_CASE(CODE)   \
-    case CODE:                  \
-        return #CODE            \
-
-/**
- *  @brief  return a string containing the label assigned to the error code.
- *  
- *  @param  errorcode   
- *              The errorcode value of which the label has to be returned.
- *
- *  @return A string containing the error code label.
- */
-char* MLErrorCode(inv_error_t errorcode) 
-{
-    switch(errorcode) {
-        ERROR_CODE_CASE(INV_SUCCESS);
-        ERROR_CODE_CASE(INV_ERROR);
-        ERROR_CODE_CASE(INV_ERROR_INVALID_PARAMETER);
-        ERROR_CODE_CASE(INV_ERROR_FEATURE_NOT_ENABLED);
-        ERROR_CODE_CASE(INV_ERROR_FEATURE_NOT_IMPLEMENTED);
-        ERROR_CODE_CASE(INV_ERROR_DMP_NOT_STARTED);
-        ERROR_CODE_CASE(INV_ERROR_DMP_STARTED);
-        ERROR_CODE_CASE(INV_ERROR_NOT_OPENED);
-        ERROR_CODE_CASE(INV_ERROR_OPENED);
-        ERROR_CODE_CASE(INV_ERROR_INVALID_MODULE);
-        ERROR_CODE_CASE(INV_ERROR_MEMORY_EXAUSTED);
-        ERROR_CODE_CASE(INV_ERROR_DIVIDE_BY_ZERO);
-        ERROR_CODE_CASE(INV_ERROR_ASSERTION_FAILURE);
-        ERROR_CODE_CASE(INV_ERROR_FILE_OPEN);
-        ERROR_CODE_CASE(INV_ERROR_FILE_READ);
-        ERROR_CODE_CASE(INV_ERROR_FILE_WRITE);
-
-        ERROR_CODE_CASE(INV_ERROR_SERIAL_CLOSED);
-        ERROR_CODE_CASE(INV_ERROR_SERIAL_OPEN_ERROR);
-        ERROR_CODE_CASE(INV_ERROR_SERIAL_READ);
-        ERROR_CODE_CASE(INV_ERROR_SERIAL_WRITE);
-        ERROR_CODE_CASE(INV_ERROR_SERIAL_DEVICE_NOT_RECOGNIZED);
-
-        ERROR_CODE_CASE(INV_ERROR_SM_TRANSITION);
-        ERROR_CODE_CASE(INV_ERROR_SM_IMPROPER_STATE);
-
-        ERROR_CODE_CASE(INV_ERROR_FIFO_OVERFLOW);
-        ERROR_CODE_CASE(INV_ERROR_FIFO_FOOTER);
-        ERROR_CODE_CASE(INV_ERROR_FIFO_READ_COUNT);
-        ERROR_CODE_CASE(INV_ERROR_FIFO_READ_DATA);
-        ERROR_CODE_CASE(INV_ERROR_MEMORY_SET);
-
-        ERROR_CODE_CASE(INV_ERROR_LOG_MEMORY_ERROR);
-        ERROR_CODE_CASE(INV_ERROR_LOG_OUTPUT_ERROR);
-
-        ERROR_CODE_CASE(INV_ERROR_OS_BAD_PTR);
-        ERROR_CODE_CASE(INV_ERROR_OS_BAD_HANDLE);
-        ERROR_CODE_CASE(INV_ERROR_OS_CREATE_FAILED);
-        ERROR_CODE_CASE(INV_ERROR_OS_LOCK_FAILED);
-
-        ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_OVERFLOW);
-        ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_UNDERFLOW);
-        ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_NOT_READY);
-        ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_ERROR);
-
-        ERROR_CODE_CASE(INV_ERROR_CALIBRATION_LOAD);
-        ERROR_CODE_CASE(INV_ERROR_CALIBRATION_STORE);
-        ERROR_CODE_CASE(INV_ERROR_CALIBRATION_LEN);
-        ERROR_CODE_CASE(INV_ERROR_CALIBRATION_CHECKSUM);
-
-        default:
-        {
-            #define UNKNOWN_ERROR_CODE 1234
-            return ERROR_NAME(UNKNOWN_ERROR_CODE);
-            break;
-        }
-
-    }
-}
-
-/**
- *  @}
- */
diff --git a/65xx/libsensors_iio/software/simple_apps/common/mlerrorcode.h b/65xx/libsensors_iio/software/simple_apps/common/mlerrorcode.h
deleted file mode 100755
index 9a35792..0000000
--- a/65xx/libsensors_iio/software/simple_apps/common/mlerrorcode.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- $License:
-    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
- $
- */
-/*******************************************************************************
- *
- * $Id: mltypes.h 3680 2010-09-04 03:13:32Z mcaramello $
- *
- *******************************************************************************/
-
-#ifndef _MLERRORCODE_H_
-#define _MLERRORCODE_H_
-
-#include "mltypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-    Defines 
-*/
-#define CALL_N_CHECK(f) {                                                   \
-    unsigned int r35uLt = f;                                                \
-    if(INV_SUCCESS != r35uLt) {                                             \
-        MPL_LOGE("Error in file %s, line %d : %s returned code %s (#%d)\n", \
-                __FILE__, __LINE__, #f, MLErrorCode(r35uLt), r35uLt);       \
-    }                                                                       \
-}
-
-#define CALL_CHECK_N_RETURN_ERROR(f) {                                      \
-    unsigned int r35uLt = f;                                                \
-    if(INV_SUCCESS != r35uLt) {                                             \
-        MPL_LOGE("Error in file %s, line %d : %s returned code %s (#%d)\n", \
-                __FILE__, __LINE__, #f, MLErrorCode(r35uLt), r35uLt);       \
-        return r35uLt;                                                      \
-    }                                                                       \
-}
-
-// for functions returning void
-#define CALL_CHECK_N_RETURN(f) do {                                         \
-    unsigned int r35uLt = f;                                                \
-    if(INV_SUCCESS != r35uLt) {                                             \
-        MPL_LOGE("Error in file %s, line %d : %s returned code %s (#%d)\n", \
-                __FILE__, __LINE__, #f, MLErrorCode(r35uLt), r35uLt);       \
-        return;                                                             \
-    }                                                                       \
-    } while(0)
-
-#define CALL_CHECK_N_EXIT(f) {                                              \
-    unsigned int r35uLt = f;                                                \
-    if(INV_SUCCESS != r35uLt) {                                             \
-        MPL_LOGE("Error in file %s, line %d : %s returned code %s (#%d)\n", \
-                __FILE__, __LINE__, #f, MLErrorCode(r35uLt), r35uLt);       \
-        exit (r35uLt);                                                      \
-    }                                                                       \
-}
-
-    
-#define CALL_CHECK_N_CALLBACK(f, cb) {                                      \
-    unsigned int r35uLt = f;                                                \
-    if(INV_SUCCESS != r35uLt) {                                             \
-        MPL_LOGE("Error in file %s, line %d : %s returned code %s (#%d)\n", \
-                __FILE__, __LINE__, #f, MLErrorCode(r35uLt), r35uLt);       \
-        cb;                                                                 \
-    }                                                                       \
-}
-
-#define CALL_CHECK_N_GOTO(f, label) {                                       \
-    unsigned int r35uLt = f;                                                \
-    if(INV_SUCCESS != r35uLt) {                                             \
-        MPL_LOGE("Error in file %s, line %d : %s returned code %s (#%d)\n", \
-                __FILE__, __LINE__, #f, MLErrorCode(r35uLt), r35uLt);       \
-        goto label;                                                         \
-    }                                                                       \
-}
-
-char* MLErrorCode(inv_error_t errorcode);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/65xx/libsensors_iio/software/simple_apps/common/testsupport.h b/65xx/libsensors_iio/software/simple_apps/common/testsupport.h
deleted file mode 100755
index 0cab781..0000000
--- a/65xx/libsensors_iio/software/simple_apps/common/testsupport.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- $License:
-    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
- $
- */
-
-/*******************************************************************************
- *
- * $Id: testsupport.h 5629 2011-06-11 03:13:08Z mcaramello $
- *
- ******************************************************************************/
- 
-#ifndef _TESTSUPPORT_H_
-#define _TESTSUPPORT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*---------------------------
-    Includes
----------------------------*/
-
-#include "mltypes.h"
-#include "mlerrorcode.h"
-
-#include "mlsl.h"
-#include "log.h"
-
-/*---------------------------
-    Defines
----------------------------*/
-
-/*---------------------------
-    p-Types
----------------------------*/
-#ifdef TESTING_SUPPORT
-    void            SetHandle           (void *sl_handle);
-    void            CommandPrompt       (void *sl_handle);
-    void            RegisterMap         (void *sl_handle);
-    void            DataLogger          (const unsigned long flag);
-    void            DataLoggerSelector  (const unsigned long flag);
-    void            DataLoggerCb        (void);
-    unsigned short  KeyboardHandler     (unsigned char key);
-    char*           CompassStateName    (char* out, int state);
-#else
-#define DataLoggerSelector(x)           //
-#define DataLogger(x)                   //
-#define DataLoggerCb                    NULL
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _TESTSUPPORT_H_
-
diff --git a/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/android/inv_devnode_parser-shared b/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/android/inv_devnode_parser-shared
deleted file mode 100755
index b4a6bdf..0000000
--- a/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/android/inv_devnode_parser-shared
+++ /dev/null
Binary files differ
diff --git a/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/android/shared.mk b/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/android/shared.mk
deleted file mode 100755
index 38d1fb4..0000000
--- a/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/android/shared.mk
+++ /dev/null
@@ -1,92 +0,0 @@
-EXEC = inv_devnode_parser$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS = $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/filelist.mk b/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/filelist.mk
deleted file mode 100755
index fdecbc8..0000000
--- a/65xx/libsensors_iio/software/simple_apps/devnode_parser/build/filelist.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#### filelist.mk for inv_devnode_parser ####
-
-# headers
-HEADERS += $(APP_DIR)/iio_utils.h
-
-# sources
-SOURCES := $(APP_DIR)/read_device_node.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR) $(HAL_DIR)/linux
diff --git a/65xx/libsensors_iio/software/simple_apps/devnode_parser/iio_utils.h b/65xx/libsensors_iio/software/simple_apps/devnode_parser/iio_utils.h
deleted file mode 100755
index c3d4955..0000000
--- a/65xx/libsensors_iio/software/simple_apps/devnode_parser/iio_utils.h
+++ /dev/null
@@ -1,650 +0,0 @@
-/* IIO - useful set of util functionality
- *
- * Copyright (c) 2008 Jonathan Cameron
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- */
-
-/* Made up value to limit allocation sizes */
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <dirent.h>
-
-#define IIO_MAX_NAME_LENGTH 30
-
-#define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements"
-#define FORMAT_TYPE_FILE "%s_type"
-
-const char *iio_dir = "/sys/bus/iio/devices/";
-
-extern int verbose;
-
-/**
- * iioutils_break_up_name() - extract generic name from full channel name
- * @full_name: the full channel name
- * @generic_name: the output generic channel name
- **/
-static int iioutils_break_up_name(const char *full_name,
-				  char **generic_name)
-{
-	char *current;
-	char *w, *r;
-	char *working;
-	current = strdup(full_name);
-	working = strtok(current, "_\0");
-	w = working;
-	r = working;
-
-	while (*r != '\0') {
-		if (!isdigit(*r)) {
-			*w = *r;
-			w++;
-		}
-		r++;
-	}
-	*w = '\0';
-	*generic_name = strdup(working);
-	free(current);
-
-	return 0;
-}
-
-/**
- * struct iio_channel_info - information about a given channel
- * @name: channel name
- * @generic_name: general name for channel type
- * @scale: scale factor to be applied for conversion to si units
- * @offset: offset to be applied for conversion to si units
- * @index: the channel index in the buffer output
- * @bytes: number of bytes occupied in buffer output
- * @mask: a bit mask for the raw output
- * @is_signed: is the raw value stored signed
- * @enabled: is this channel enabled
- **/
-struct iio_channel_info {
-	char *name;
-	char *generic_name;
-	float scale;
-	float offset;
-	unsigned index;
-	unsigned bytes;
-	unsigned bits_used;
-	unsigned shift;
-	uint64_t mask;
-	unsigned be;
-	unsigned is_signed;
-	unsigned enabled;
-	unsigned location;
-};
-
-/**
- * iioutils_get_type() - find and process _type attribute data
- * @is_signed: output whether channel is signed
- * @bytes: output how many bytes the channel storage occupies
- * @mask: output a bit mask for the raw data
- * @be: big endian
- * @device_dir: the iio device directory
- * @name: the channel name
- * @generic_name: the channel type name
- **/
-inline int iioutils_get_type(unsigned *is_signed,
-			     unsigned *bytes,
-			     unsigned *bits_used,
-			     unsigned *shift,
-			     uint64_t *mask,
-			     unsigned *be,
-			     const char *device_dir,
-			     const char *name,
-			     const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *scan_el_dir, *builtname, *builtname_generic, *filename = 0;
-	char signchar, endianchar;
-	unsigned padint;
-	const struct dirent *ent;
-
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname, FORMAT_TYPE_FILE, name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_scan_el_dir;
-	}
-	ret = asprintf(&builtname_generic, FORMAT_TYPE_FILE, generic_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		/*
-		 * Do we allow devices to override a generic name with
-		 * a specific one?
-		 */
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				printf("failed to open %s\n", filename);
-				ret = -errno;
-				goto error_free_filename;
-			}
-
-			ret = fscanf(sysfsfp,
-				     "%ce:%c%u/%u>>%u",
-				     &endianchar,
-				     &signchar,
-				     bits_used,
-				     &padint, shift);
-			if (ret < 0) {
-				printf("failed to pass scan type description\n");
-				return ret;
-			}
-			*be = (endianchar == 'b');
-			*bytes = padint / 8;
-			if (*bits_used == 64)
-				*mask = ~0;
-			else
-				*mask = (1 << *bits_used) - 1;
-			if (signchar == 's')
-				*is_signed = 1;
-			else
-				*is_signed = 0;
-			fclose(sysfsfp);
-			free(filename);
-
-			filename = 0;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_free_scan_el_dir:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int iioutils_get_param_float(float *output,
-				    const char *param_name,
-				    const char *device_dir,
-				    const char *name,
-				    const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *builtname, *builtname_generic;
-	char *filename = NULL;
-	const struct dirent *ent;
-
-	ret = asprintf(&builtname, "%s_%s", name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname_generic,
-		       "%s_%s", generic_name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-	dp = opendir(device_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", device_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (!sysfsfp) {
-				ret = -errno;
-				goto error_free_filename;
-			}
-			fscanf(sysfsfp, "%f", output);
-			break;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_ret:
-	return ret;
-}
-
-/**
- * bsort_channel_array_by_index() - reorder so that the array is in index order
- *
- **/
-
-inline void bsort_channel_array_by_index(struct iio_channel_info **ci_array,
-					 int cnt)
-{
-	struct iio_channel_info temp;
-	int x, y;
-
-	for (x = 0; x < cnt; x++)
-		for (y = 0; y < (cnt - 1); y++)
-			if ((*ci_array)[y].index > (*ci_array)[y+1].index) {
-				temp = (*ci_array)[y + 1];
-				(*ci_array)[y + 1] = (*ci_array)[y];
-				(*ci_array)[y] = temp;
-			}
-}
-
-/**
- * build_channel_array() - function to figure out what channels are present
- * @device_dir: the IIO device directory in sysfs
- * @
- **/
-inline int build_channel_array(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter)
-{
-	DIR *dp;
-	FILE *sysfsfp;
-	int count, i;
-	struct iio_channel_info *current;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-	char *filename;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_close_dir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				ret = -errno;
-				free(filename);
-				goto error_close_dir;
-			}
-			fscanf(sysfsfp, "%u", &ret);
-			//printf("%s, %d\n", filename, ret);
-			if (ret == 1)
-				(*counter)++;
-			fclose(sysfsfp);
-			free(filename);
-		}
-	*ci_array = malloc(sizeof(**ci_array) * (*counter));
-	if (*ci_array == NULL) {
-		ret = -ENOMEM;
-		goto error_close_dir;
-	}
-	closedir(dp);
-	dp = opendir(scan_el_dir);
-	//seekdir(dp, 0);
-	count = 0;
-	while (ent = readdir(dp), ent != NULL) {
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			current = &(*ci_array)[count++];
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				/* decrement count to avoid freeing name */
-				count--;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				free(filename);
-				ret = -errno;
-				goto error_cleanup_array;
-			}
-			fscanf(sysfsfp, "%u", &current->enabled);
-			fclose(sysfsfp);
-
-			if (!current->enabled) {
-				free(filename);
-				count--;
-				continue;
-			}
-
-			current->scale = 1.0;
-			current->offset = 0;
-			current->name = strndup(ent->d_name,
-						strlen(ent->d_name) -
-						strlen("_en"));
-			if (current->name == NULL) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			/* Get the generic and specific name elements */
-			ret = iioutils_break_up_name(current->name,
-						     &current->generic_name);
-			if (ret) {
-				free(filename);
-				goto error_cleanup_array;
-			}
-			ret = asprintf(&filename,
-				       "%s/%s_index",
-				       scan_el_dir,
-				       current->name);
-			if (ret < 0) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			fscanf(sysfsfp, "%u", &current->index);
-			fclose(sysfsfp);
-			free(filename);
-			/* Find the scale */
-			ret = iioutils_get_param_float(&current->scale,
-						       "scale",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_param_float(&current->offset,
-						       "offset",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_type(&current->is_signed,
-						&current->bytes,
-						&current->bits_used,
-						&current->shift,
-						&current->mask,
-						&current->be,
-						device_dir,
-						current->name,
-						current->generic_name);
-		}
-	}
-
-	closedir(dp);
-	/* reorder so that the array is in index order */
-	bsort_channel_array_by_index(ci_array, *counter);
-
-	return 0;
-
-error_cleanup_array:
-	for (i = count - 1;  i >= 0; i--)
-		free((*ci_array)[i].name);
-	free(*ci_array);
-error_close_dir:
-	closedir(dp);
-error_free_name:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int _write_sysfs_int(char *filename, char *basedir, int val, int verify)
-{
-    int ret = 0;
-	FILE *sysfsfp;
-	int test;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL)
-		return -ENOMEM;
-        
-	sprintf(temp, "%s/%s", basedir, filename);
-
-    if (verbose)
-        printf("VERB: echo %d > %s\n", val, temp);
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("failed to open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%d", val);
-	fclose(sysfsfp);
-
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("failed to open %s\n", temp);
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%d", &test);
-        fclose(sysfsfp);
-        if (verbose)
-            printf("VERB: cat %s = %d\n", temp, test);
-		if (test != val) {
-            printf("Possible failure in int write %d to %s\n",
-                   val, temp);
-			ret = -1;
-		}
-	}
-
-error_free:
-	free(temp);
-	return ret;
-}
-
-int write_sysfs_int(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 0);
-}
-
-int write_sysfs_int_and_verify(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 1);
-}
-
-int _write_sysfs_string(char *filename, char *basedir, char *val, int verify)
-{
-	int ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed\n");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("Could not open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%s", val);
-	fclose(sysfsfp);
-
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("could not open file to verify\n");
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%s", temp);
-        fclose(sysfsfp);
-        
-		if (strcmp(temp, val) != 0) {
-			printf("Possible failure in string write of %s "
-                   "Should be %s written to %s\%s\n",
-                   temp, val, basedir, filename);
-			ret = -1;
-		}
-	}
-
-error_free:
-	free(temp);
-
-	return ret;
-}
-
-/**
- * write_sysfs_string_and_verify() - string write, readback and verify
- * @filename: name of file to write to
- * @basedir: the sysfs directory in which the file is to be found
- * @val: the string to write
- **/
-int write_sysfs_string_and_verify(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 1);
-}
-
-int write_sysfs_string(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 0);
-}
-
-int read_sysfs_posint(char *filename, char *basedir)
-{
-	int ret;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%d\n", &ret);
-	fclose(sysfsfp);
-error_free:
-	free(temp);
-	return ret;
-}
-
-int read_sysfs_float(char *filename, char *basedir, float *val)
-{
-	float ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%f\n", val);
-	fclose(sysfsfp);
-
-error_free:
-	free(temp);
-	return ret;
-}
-
-int enable_se(const char *device_dir, struct iio_channel_info **ci_array, 
-              int *counter, char *sensor, int en)
-{
-	DIR *dp;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-    char pattern[50] = "in_";
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-    strcat(pattern, sensor);
-    while (ent = readdir(dp), ent != NULL) {
-        if (strncmp(ent->d_name, pattern, strlen(pattern)) == 0 &&
-            strncmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-                    "_en", strlen("_en")) == 0) {
-            write_sysfs_int_and_verify((char *)ent->d_name, scan_el_dir, en);
-        }
-		}
-	return 0;
-
-error_ret:
-error_free_name:
-	return -1;
-}
-
-int enable_accel_se(const char *device_dir, 
-                         struct iio_channel_info **ci_array, int *counter, 
-                         int en)
-{
-    return enable_se(device_dir, ci_array, counter, "accel", en);
-}
-
-int enable_anglvel_se(const char *device_dir, 
-                         struct iio_channel_info **ci_array, int *counter, 
-                         int en)
-{
-    return enable_se(device_dir, ci_array, counter, "anglvel", en);
-}
-
-int enable_quaternion_se(const char *device_dir, 
-                         struct iio_channel_info **ci_array, int *counter, 
-                         int en)
-{
-    return enable_se(device_dir, ci_array, counter, "quaternion", en);
-}
-
diff --git a/65xx/libsensors_iio/software/simple_apps/devnode_parser/read_device_node.c b/65xx/libsensors_iio/software/simple_apps/devnode_parser/read_device_node.c
deleted file mode 100755
index 7b73d4a..0000000
--- a/65xx/libsensors_iio/software/simple_apps/devnode_parser/read_device_node.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Copyright (c) Invensense Inc. 2012
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <linux/types.h>
-#include <string.h>
-#include <poll.h>
-#include <termios.h>
-
-#include "iio_utils.h"
-#include "ml_sysfs_helper.h"
-#include "mlos.h"
-
-#define POLL_TIME (2000) // 2sec
-
-// settings
-int verbose = false;
-
-// paths
-char *dev_dir_name;
-
-/**************************************************
-   This _kbhit() function is courtesy of the web
-***************************************************/
-int _kbhit(void)
-{
-    static const int STDIN = 0;
-    static bool initialized = false;
-
-    if (!initialized) {
-        // Use termios to turn off line buffering
-        struct termios term;
-        tcgetattr(STDIN, &term);
-        term.c_lflag &= ~ICANON;
-        tcsetattr(STDIN, TCSANOW, &term);
-        setbuf(stdin, NULL);
-        initialized = true;
-    }
-
-    int bytesWaiting;
-    ioctl(STDIN, FIONREAD, &bytesWaiting);
-    return bytesWaiting;
-}
-
-void get_sensor_data(char *d, short *sensor)
-{
-    int i;
-    for (i = 0; i < 3; i++)
-        sensor[i] = *(short *)(d + 2 + i * 2);
-}
-
-static int read_data(char *buffer_access)
-{
-#define PRESSURE_HDR             0x8000
-#define ACCEL_HDR                0x4000
-#define GYRO_HDR                 0x2000
-#define COMPASS_HDR              0x1000
-#define LPQUAT_HDR               0x0800
-#define SIXQUAT_HDR              0x0400
-#define PEDQUAT_HDR              0x0200
-#define STEP_DETECTOR_HDR        0x0100
-
-    static int left_over_size = 0;
-    char data[1048], *dptr, tmp[24];
-    short sensor[3];
-    int q[3];
-    int ret, i, ind, fp;
-    int buf_size, read_size;
-    unsigned short hdr;
-    bool done_flag;
-
-    fp = open(buffer_access, O_RDONLY | O_NONBLOCK);
-    if (fp == -1) { /* if it isn't there make the node */
-        printf("Failed to open %s\n", buffer_access);
-        ret = -errno;
-        goto error_read_data;
-    }
-    ind = 0;
-    
-    {
-        struct pollfd pfd = {
-            .fd = fp,
-            .events = POLLIN,
-        };
-        poll(&pfd, 1, -1);
-
-        if (left_over_size > 0)
-            memcpy(data, tmp, left_over_size);
-        dptr = data + left_over_size;
-
-        read_size = read(fp,  dptr, 1024);
-        if (read_size <= 0) {
-            printf("Wrong size=%d\n", read_size);
-            ret = -EINVAL;
-            goto error_read_data;
-        }
-
-        ind = read_size + left_over_size;
-        dptr = data;
-        buf_size = ind - (dptr - data);
-        done_flag = false;
-        while ((buf_size > 0) && (!done_flag)) {
-            hdr = *((short *)(dptr));
-            if (hdr & 1)
-                printf("STEP\n");
-
-            switch (hdr & (~1)) {
-            case PRESSURE_HDR:
-                if (buf_size >= 16) {
-                    get_sensor_data(dptr, sensor);
-                    dptr += 8;
-                    printf("PRESS, %d, %lld\n", (sensor[1] << 16) + (unsigned short)sensor[2], *(long long *)dptr);
-                } else
-                    done_flag = true;
-                break;
-            case ACCEL_HDR:
-                if (buf_size >= 16) {
-                    get_sensor_data(dptr, sensor);
-                    dptr += 8;
-                    printf("ACCEL, %d, %d, %d, %lld\n", sensor[0], sensor[1], sensor[2], *(long long *)dptr);
-                } else
-                    done_flag = true;
-                break;
-            case GYRO_HDR:
-                if (buf_size >= 16) {
-                    get_sensor_data(dptr, sensor);
-                    dptr += 8;
-                    printf("GYRO, %d, %d, %d, %lld\n", sensor[0], sensor[1], sensor[2], *(long long *)dptr);
-                } else
-                    done_flag = true;
-                break;
-            case COMPASS_HDR:
-                if (buf_size >= 16) {
-                    get_sensor_data(dptr, sensor);
-                    dptr += 8;
-                    printf("COMPASS, %d, %d, %d, %lld\n", sensor[0], sensor[1], sensor[2], *(long long *)dptr);
-                } else
-                    done_flag = true;
-                break;
-            case PEDQUAT_HDR:
-                if (buf_size >= 16) {
-                    get_sensor_data(dptr, sensor);
-                    dptr += 8;
-                    printf("LOW_RES_QUAT, %d, %d, %d, %lld\n", sensor[0], sensor[1], sensor[2], *(long long *)dptr);
-                }  else
-                    done_flag = true;
-                break;
-            case LPQUAT_HDR:
-                if (buf_size >= 24) {
-                    q[0] = *(int *)(dptr + 4);
-                    dptr += 8;
-                    q[1] = *(int *)(dptr);
-                    q[2] = *(int *)(dptr + 4);
-                    dptr += 8;
-                    printf("LPQ_3AXES, %d, %d, %d, %lld\n", q[0], q[1], q[2], *(long long *)dptr);
-                }  else
-                    done_flag = true;
-                break;
-            case SIXQUAT_HDR:
-                if (buf_size >= 24) {
-                    q[0] = *(int *)(dptr + 4);
-                    dptr += 8;
-                    q[1] = *(int *)(dptr);
-                    q[2] = *(int *)(dptr + 4);
-                    dptr += 8;
-                    printf("LPQ_6AXES, %d, %d, %d, %lld\n", q[0], q[1], q[2], *(long long *)dptr);
-                }  else
-                    done_flag = true;
-                break;
-            case STEP_DETECTOR_HDR:
-                if (buf_size >= 16) {
-                    printf("STEP_DETECTOR, ");
-                    dptr += 8;
-                    printf("%lld\n", *(long long *)dptr);
-                }  else
-                    done_flag = true;
-
-                break;
-            default:
-                printf("unknown, \n");
-                for (i = 0; i < 8; i++)
-                    printf("%02x, ", dptr[i]);
-                printf("\n");
-                break;
-            }
-            if (!done_flag)
-                dptr += 8;
-            buf_size = ind - (dptr - data);
-        }
-        if (ind - (dptr - data) > 0)
-            memcpy(tmp, dptr, ind - (dptr - data));
-        left_over_size = ind - (dptr - data);
-    }
-    close(fp);
-
-error_read_data:
-    return ret;
-}
-
-/*
-    Main
-*/
-
-int main(int argc, char **argv)
-{
-    unsigned long num_loops = -1;
-    int ret, c, i;
-
-    int dev_num;
-    char *buffer_access;
-    char chip_name[10];
-    char *dummy;
-    char device_name[10];
-    char sysfs[100];
-
-    // all output to stdout must be delivered immediately, no buffering
-    setvbuf(stdout, NULL, _IONBF, 0);
-
-    /* parse the command line parameters 
-       TODO description
-    */
-    while ((c = getopt(argc, argv, "c:vh")) != -1) {
-        switch (c) {
-        case 'c':
-            num_loops = strtoul(optarg, &dummy, 10);
-            break;
-        case 'v':
-            verbose = true;
-            break;
-        case 'h':
-            //print_help();
-            // TODO write print_help helper function
-            break;
-        case '?':
-            return -1;
-        }
-    }
-
-    // get info about the device and driver
-    inv_get_sysfs_path(sysfs);
-    if (inv_get_chip_name(chip_name) != INV_SUCCESS) {
-        printf("get chip name fail\n");
-        exit(0);
-    }
-    printf("INFO: chip_name=%s\n", chip_name);
-
-    for (i = 0; i < strlen(chip_name); i++)
-        device_name[i] = tolower(chip_name[i]);
-    device_name[strlen(chip_name)] = '\0';
-    printf("INFO: device name=%s\n", device_name);
-
-    /* Find the device requested */
-    dev_num = find_type_by_name(device_name, "iio:device");
-    if (dev_num < 0) {
-        printf("Failed to find the %s\n", device_name);
-        ret = -ENODEV;
-        goto error_ret;
-    }
-    printf("INFO: iio device number=%d\n", dev_num);
-    
-    /* attempt to open non blocking the access dev */
-    ret = asprintf(&buffer_access, "/dev/iio:device%d", dev_num);
-    if (ret < 0) {
-        ret = -ENOMEM;
-        goto error_ret;
-    }
-    while (num_loops == -1 || num_loops--)
-        read_data(buffer_access);
-    free(buffer_access);
-
-error_ret:
-    return ret;
-}
diff --git a/65xx/libsensors_iio/software/simple_apps/gesture_test/build/android/inv_gesture_test-shared b/65xx/libsensors_iio/software/simple_apps/gesture_test/build/android/inv_gesture_test-shared
deleted file mode 100755
index 0414ce3..0000000
--- a/65xx/libsensors_iio/software/simple_apps/gesture_test/build/android/inv_gesture_test-shared
+++ /dev/null
Binary files differ
diff --git a/65xx/libsensors_iio/software/simple_apps/gesture_test/build/android/shared.mk b/65xx/libsensors_iio/software/simple_apps/gesture_test/build/android/shared.mk
deleted file mode 100755
index 8591982..0000000
--- a/65xx/libsensors_iio/software/simple_apps/gesture_test/build/android/shared.mk
+++ /dev/null
@@ -1,96 +0,0 @@
-EXEC = inv_gesture_test$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += -I$(COMMON_DIR)
-CFLAGS += -I$(HAL_DIR)/include
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/gesture_test/build/filelist.mk b/65xx/libsensors_iio/software/simple_apps/gesture_test/build/filelist.mk
deleted file mode 100755
index 75d93cf..0000000
--- a/65xx/libsensors_iio/software/simple_apps/gesture_test/build/filelist.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#### filelist.mk for inv_gesture_test ####
-
-# headers
-#HEADERS += 
-
-# sources
-SOURCES := $(APP_DIR)/inv_gesture_test.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR)
diff --git a/65xx/libsensors_iio/software/simple_apps/gesture_test/inv_gesture_test.c b/65xx/libsensors_iio/software/simple_apps/gesture_test/inv_gesture_test.c
deleted file mode 100755
index ac0803f..0000000
--- a/65xx/libsensors_iio/software/simple_apps/gesture_test/inv_gesture_test.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/**
- *  Gesture Test application for Invensense's MPU6/9xxx (w/ DMP).
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <features.h>
-#include <dirent.h>
-#include <string.h>
-#include <poll.h>
-#include <stddef.h>
-#include <linux/input.h>
-#include <time.h>
-#include <linux/time.h>
-#include <unistd.h>
-#include <termios.h>
-
-#include "invensense.h"
-#include "ml_math_func.h"
-#include "storage_manager.h"
-#include "ml_stored_data.h"
-#include "ml_sysfs_helper.h"
-#include "mlos.h"
-
-//#define DEBUG_PRINT   /* Uncomment to print Gyro & Accel read from Driver */
-
-#define SUPPORT_SCREEN_ORIENTATION
-//#define SUPPORT_TAP
-//#define SUPPORT_ORIENTATION
-#define SUPPORT_PEDOMETER
-#define SUPPORT_SMD
-
-#define MAX_SYSFS_NAME_LEN  (100)
-#define MAX_SYSFS_ATTRB     (sizeof(struct sysfs_attrbs) / sizeof(char*))
-#define IIO_SYSFS_PATH      "/sys/bus/iio/devices/iio:device0"
-#define IIO_HUB_NAME        "inv_hub"
-
-#define POLL_TIME           (2000) // 2sec
-
-struct sysfs_attrbs {
-    char *name;
-    char *enable;
-    char *power_state;
-    char *dmp_on;
-    char *dmp_int_on;
-    char *dmp_firmware;
-    char *firmware_loaded;
-#ifdef SUPPORT_SCREEN_ORIENTATION
-    char *event_display_orientation;
-    char *display_orientation_on;
-#endif
-#ifdef SUPPORT_ORIENTATION
-    char *event_orientation;
-    char *orientation_on;
-#endif
-#ifdef SUPPORT_TAP
-    char *event_tap;
-    char *tap_min_count;
-    char *tap_on;
-    char *tap_threshold;
-    char *tap_time;
-#endif
-#ifdef SUPPORT_PEDOMETER
-    char *pedometer_on;
-    char *pedometer_steps;
-    char *pedometer_time;
-#endif
-#ifdef SUPPORT_SMD
-    char *event_smd;
-    char *smd_enable;
-    char *smd_threshold;
-    char *smd_delay_threshold;
-    char *smd_delay_threshold2;
-#endif
-} mpu;
-
-enum {
-#ifdef SUPPORT_TAP
-    FEAT_TAP,
-#endif
-#ifdef SUPPORT_SCREEN_ORIENTATION
-    FEAT_SCREEN_ORIENTATION,
-#endif
-#ifdef SUPPORT_ORIENTATION
-    FEAT_ORIENTATION,
-#endif
-#ifdef SUPPORT_PEDOMETER
-    FEAT_PEDOMETER,
-#endif
-#ifdef SUPPORT_SMD
-    FEAT_SMD,
-#endif
-
-    NUM_DMP_FEATS
-};
-
-char *sysfs_names_ptr;
-#ifdef SUPPORT_PEDOMETER
-unsigned long last_pedometer_poll = 0L;
-unsigned long pedometer_poll_timeout = 500L; // .5 second
-#endif
-struct pollfd pfd[NUM_DMP_FEATS];
-bool android_hub = false;   // flag to indicate true=Hub, false=non-hub
-
-/*******************************************************************************
- *                       DMP Feature Supported Functions
- ******************************************************************************/
-
-int read_sysfs_int(char *filename, int *var)
-{
-    int res=0;
-    FILE *fp;
-
-    fp = fopen(filename, "r");
-    if (fp!=NULL) {
-        fscanf(fp, "%d\n", var);
-        fclose(fp);
-    } else {
-        printf("ERR open file to read: %s\n", filename);
-        res= -1;
-    }
-    return res;
-}
-
-int write_sysfs_int(char *filename, int data)
-{
-    int res=0;
-    FILE  *fp;
-
-#ifdef DEBUG_PRINT
-    printf("writing '%s' with '%d'\n", filename, data);
-#endif
-
-    fp = fopen(filename, "w");
-    if (fp != NULL) {
-        fprintf(fp, "%d\n", data);
-        fclose(fp);
-    } else {
-        printf("ERR open file to write: %s\n", filename);
-        res = -1;
-    }
-    return res;
-}
-
-/**************************************************
-    This _kbhit() function is courtesy of the web
-***************************************************/
-int _kbhit(void)
-{
-    static const int STDIN = 0;
-    static bool initialized = false;
-
-    if (! initialized) {
-        // Use termios to turn off line buffering
-        struct termios term;
-        tcgetattr(STDIN, &term);
-        term.c_lflag &= ~ICANON;
-        tcsetattr(STDIN, TCSANOW, &term);
-        setbuf(stdin, NULL);
-        initialized = true;
-    }
-
-    int bytesWaiting;
-    ioctl(STDIN, FIONREAD, &bytesWaiting);
-    return bytesWaiting;
-}
-
-int inv_init_sysfs_attributes(void)
-{
-    unsigned char i = 0;
-    char sysfs_path[MAX_SYSFS_NAME_LEN];
-    char *sptr;
-    char **dptr;
-
-    sysfs_names_ptr =
-            (char*)malloc(sizeof(char[MAX_SYSFS_ATTRB][MAX_SYSFS_NAME_LEN]));
-    sptr = sysfs_names_ptr;
-    if (sptr != NULL) {
-        dptr = (char**)&mpu;
-        do {
-            *dptr++ = sptr;
-            sptr += sizeof(char[MAX_SYSFS_NAME_LEN]);
-        } while (++i < MAX_SYSFS_ATTRB);
-    } else {
-        printf("couldn't alloc mem for sysfs paths\n");
-        return -1;
-    }
-
-    // get proper (in absolute/relative) IIO path & build MPU's sysfs paths
-    inv_get_sysfs_path(sysfs_path);
-
-    sprintf(mpu.name, "%s%s", sysfs_path, "/name");
-    sprintf(mpu.enable, "%s%s", sysfs_path, "/buffer/enable");
-    sprintf(mpu.power_state, "%s%s", sysfs_path, "/power_state");
-    sprintf(mpu.dmp_on,"%s%s", sysfs_path, "/dmp_on");
-    sprintf(mpu.dmp_int_on, "%s%s", sysfs_path, "/dmp_int_on");
-    sprintf(mpu.dmp_firmware, "%s%s", sysfs_path, "/dmp_firmware");
-    sprintf(mpu.firmware_loaded, "%s%s", sysfs_path, "/firmware_loaded");
-
-#ifdef SUPPORT_SCREEN_ORIENTATION
-    sprintf(mpu.event_display_orientation, "%s%s", 
-            sysfs_path, "/event_display_orientation");
-    sprintf(mpu.display_orientation_on, "%s%s", 
-            sysfs_path, "/display_orientation_on");
-#endif
-#ifdef SUPPORT_ORIENTATION
-    sprintf(mpu.event_orientation, "%s%s", sysfs_path, "/event_orientation");
-    sprintf(mpu.orientation_on, "%s%s", sysfs_path, "/orientation_on");
-#endif
-#ifdef SUPPORT_TAP
-    sprintf(mpu.event_tap, "%s%s", sysfs_path, "/event_tap");
-    sprintf(mpu.tap_min_count, "%s%s", sysfs_path, "/tap_min_count");
-    sprintf(mpu.tap_on, "%s%s", sysfs_path, "/tap_on");
-    sprintf(mpu.tap_threshold, "%s%s", sysfs_path, "/tap_threshold");
-    sprintf(mpu.tap_time, "%s%s", sysfs_path, "/tap_time");
-#endif
-#ifdef SUPPORT_PEDOMETER
-    sprintf(mpu.pedometer_on, "%s%s", sysfs_path, "/dmp_on");
-    sprintf(mpu.pedometer_steps, "%s%s", sysfs_path, "/pedometer_steps");
-    sprintf(mpu.pedometer_time, "%s%s", sysfs_path, "/pedometer_time");
-#endif
-#ifdef SUPPORT_SMD
-    sprintf(mpu.event_smd, "%s%s", sysfs_path, "/event_smd");
-    sprintf(mpu.smd_enable, "%s%s", sysfs_path, "/smd_enable");
-    sprintf(mpu.smd_threshold, "%s%s", sysfs_path, "/smd_threshold");
-    sprintf(mpu.smd_delay_threshold, "%s%s", 
-            sysfs_path, "/smd_delay_threshold");
-    sprintf(mpu.smd_delay_threshold2, "%s%s", 
-            sysfs_path, "/smd_delay_threshold2");
-#endif
-
-#if 0
-    // test print sysfs paths
-    dptr = (char**)&mpu;
-    for (i = 0; i < MAX_SYSFS_ATTRB; i++) {
-        MPL_LOGE("sysfs path: %s", *dptr++);
-    }
-#endif
-    return 0;
-}
-
-int dmp_fw_loaded(void)
-{
-    int fw_loaded;
-    if (read_sysfs_int(mpu.firmware_loaded, &fw_loaded) < 0)
-        fw_loaded= 0;
-    return fw_loaded;
-}
-
-int is_android_hub(void)
-{
-    char dev_name[8];
-    FILE *fp;
-
-    fp= fopen(mpu.name, "r");
-    fgets(dev_name, 8, fp);
-    fclose(fp);
-    
-    if (!strncmp(dev_name, IIO_HUB_NAME, sizeof(IIO_HUB_NAME))) {
-        android_hub = true;
-    }else {
-        android_hub = false;
-    }
-
-    return 0;
-}
-
-/*
-    Enablers for the gestures
-*/
-
-int master_enable(int en)
-{
-    if (write_sysfs_int(mpu.enable, en) < 0) {
-        printf("GT:ERR-can't write 'buffer/enable'");
-        return -1;
-    }
-    return 0;
-}
-
-#ifdef SUPPORT_TAP
-int enable_tap(int en)
-{
-    if (write_sysfs_int(mpu.tap_on, en) < 0) {
-        printf("GT:ERR-can't write 'tap_on'\n");
-        return -1;
-    }
-
-    return 0;
-}
-#endif
-
-/* Unnecessary: pedometer_on == dmp_on, which is always on 
-#ifdef SUPPORT_PEDOMETER
-int enable_pedometer(int en)
-{
-    if (write_sysfs_int(mpu.pedometer_on, en) < 0) {
-        printf("GT:ERR-can't write 'pedometer_on'\n");
-        return -1;
-    }
-
-    return 0;
-}
-#endif
-*/
-
-#ifdef SUPPORT_SCREEN_ORIENTATION
-int enable_display_orientation(int en)
-{
-    if (write_sysfs_int(mpu.display_orientation_on, en) < 0) {
-        printf("GT:ERR-can't write 'display_orientation_on'\n");
-        return -1;
-    }
-
-    return 0;
-}
-#endif
-
-#ifdef SUPPORT_ORIENTATION
-int enable_orientation(int en)
-{
-    if (write_sysfs_int(mpu.orientation_on, en) < 0) {
-        printf("GT:ERR-can't write 'orientation_on'\n");
-        return -1;
-    }
-
-    return 0;
-}
-#endif
-
-#ifdef SUPPORT_SMD
-int enable_smd(int en)
-{
-    if (write_sysfs_int(mpu.smd_enable, en) < 0) {
-        printf("GT:ERR-can't write 'smd_enable'\n");
-        return -1;
-    }
-    return 0;
-}
-#endif
-
-/*
-    Handlers for the gestures
-*/
-#ifdef SUPPORT_TAP
-int tap_handler(void)
-{
-    FILE *fp;
-    int tap, tap_dir, tap_num;
-
-    fp = fopen(mpu.event_tap, "rt");
-    fscanf(fp, "%d\n", &tap);
-    fclose(fp);
-
-    tap_dir = tap/8;
-    tap_num = tap%8 + 1;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Tap Handler **\n");
-    printf("Tap= %x\n", tap);
-    printf("Tap Dir= %x\n", tap_dir);
-    printf("Tap Num= %x\n", tap_num);
-#endif
-
-    switch (tap_dir) {
-        case 1:
-            printf("Tap Axis->X Pos, ");
-            break;
-        case 2:
-            printf("Tap Axis->X Neg, ");
-            break;
-        case 3:
-            printf("Tap Axis->Y Pos, ");
-            break;
-        case 4:
-            printf("Tap Axis->Y Neg, ");
-            break;
-        case 5:
-            printf("Tap Axis->Z Pos, ");
-            break;
-        case 6:
-            printf("Tap Axis->Z Neg, ");
-            break;
-        default:
-            printf("Tap Axis->Unknown, ");
-            break;
-    }
-    printf("#%d\n", tap_num);
-
-    return 0;
-}
-#endif
-
-#ifdef SUPPORT_PEDOMETER
-int pedometer_handler(void)
-{
-    FILE *fp;
-    static int last_pedometer_steps = -1;
-    static long last_pedometer_time = -1;
-    int pedometer_steps;
-    long pedometer_time;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Pedometer Handler\n");
-#endif
-
-    fp = fopen(mpu.pedometer_steps, "rt");
-    fscanf(fp, "%d\n", &pedometer_steps);
-    fclose(fp);
-
-    fp = fopen(mpu.pedometer_time, "rt");
-    fscanf(fp, "%ld\n", &pedometer_time);
-    fclose(fp);
-
-    if (last_pedometer_steps == -1 && last_pedometer_time == -1) {
-        printf("Pedometer Steps: %d Time: %ld ",
-               pedometer_steps, pedometer_time);
-        if (pedometer_steps > 10 
-                || pedometer_time > (pedometer_poll_timeout * 2))
-            printf("(resumed)\n");
-        else
-            printf("\n");
-    } else if (last_pedometer_steps != pedometer_steps
-                    || last_pedometer_time != pedometer_time) {
-    printf("Pedometer Steps: %d Time: %ld\n", 
-           pedometer_steps, pedometer_time);
-    }
-
-    last_pedometer_steps = pedometer_steps;
-    last_pedometer_time = pedometer_time;
-
-    return 0;
-}
-#endif
-
-#ifdef SUPPORT_SCREEN_ORIENTATION
-int display_orientation_handler(void)
-{
-    FILE *fp;
-    int orient;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Screen Orient Handler\n");
-#endif
-
-    fp = fopen(mpu.event_display_orientation, "rt");
-    if (!fp) {
-        printf("GT:Cannot open '%s'\n", mpu.event_display_orientation);
-        return -1;
-    }
-    fscanf(fp, "%d\n", &orient);
-    fclose(fp);
-
-    printf("Screen Orient-> %d\n", orient);
-
-    return 0;
-}
-#endif
-
-#ifdef SUPPORT_ORIENTATION
-int host_orientation_handler(void)
-{
-    FILE *fp;
-    int orient;
-
-    fp = fopen(mpu.event_orientation, "rt");
-    fscanf(fp, "%d\n", &orient);
-    fclose(fp);
-
-#ifdef DEBUG_PRINT
-    printf("GT:Reg Orient Handler\n");
-#endif
-
-    if (orient & 0x01)
-        printf("Orient->X Up\n");
-    if (orient & 0x02)
-        printf("Orient->X Down\n");
-    if (orient & 0x04)
-        printf("Orient->Y Up\n");
-    if (orient & 0x08)
-        printf("Orient->Y Down\n");
-    if (orient & 0x10)
-        printf("Orient->Z Up\n");
-    if (orient & 0x20)
-        printf("Orient->Z Down\n");
-    if (orient & 0x40)
-        printf("Orient->Flip\n");
-
-    return 0;
-}
-#endif
-
-#ifdef SUPPORT_SMD
-int smd_handler(void)
-{
-    FILE *fp;
-    int smd;
-
-    fp = fopen(mpu.event_smd, "rt");
-    fscanf(fp, "%d\n", &smd);
-    fclose(fp);
-
-#ifdef DEBUG_PRINT
-    printf("GT:SMD Handler\n");
-#endif
-    printf("SMD (%d)\n", smd);
-
-    /* wait for the acceleration low pass filtered tail to die off -
-       this is to prevent that the tail end of a 2nd event of above threhsold 
-       motion be considered as also the 1st event for the next SM detection */
-    inv_sleep(1000);
-
-    /* re-enable to continue the detection */
-    master_enable(0);
-    enable_smd(1);
-    master_enable(1);
-
-    return 0;
-}
-#endif
-
-int enable_dmp_features(int en)
-{
-    int res= -1;
-
-    if (android_hub || dmp_fw_loaded()) {
-        /* Currently there's no info regarding DMP's supported features/capabilities
-           An error in enabling features below could be an indication of the feature
-           not supported in current loaded DMP firmware */
-
-        master_enable(0);
-#ifdef SUPPORT_TAP
-        enable_tap(en);
-#endif
-#ifdef SUPPORT_SCREEN_ORIENTATION
-        enable_display_orientation(en);
-#endif
-#ifdef SUPPORT_ORIENTATION
-        if (android_hub == false) {
-            // Android Hub does not support 'regular' orientation feature
-            enable_orientation(en);
-        }
-#endif
-#ifdef SUPPORT_SMD
-        enable_smd(en);
-#endif
-        master_enable(1);
-        res = 0;
-
-    } else {
-        printf("GT:ERR-No DMP firmware\n");
-        res= -1;
-    }
-
-    return res;
-}
-
-int init_fds(void)
-{
-    int i;
-
-    for (i = 0; i < NUM_DMP_FEATS; i++) {
-        switch(i) {
-#ifdef SUPPORT_TAP
-        case FEAT_TAP:
-            pfd[i].fd = open(mpu.event_tap, O_RDONLY | O_NONBLOCK);
-            break;
-#endif
-#ifdef SUPPORT_SCREEN_ORIENTATION
-        case FEAT_SCREEN_ORIENTATION:
-            pfd[i].fd = open(mpu.event_display_orientation,
-                             O_RDONLY | O_NONBLOCK);
-            break;
-#endif
-#ifdef SUPPORT_ORIENTATION
-        case FEAT_ORIENTATION:
-            pfd[i].fd = open(mpu.event_orientation, O_RDONLY | O_NONBLOCK);
-            break;
-#endif
-#ifdef SUPPORT_SMD
-        case FEAT_SMD:
-            pfd[i].fd = open(mpu.event_smd, O_RDONLY | O_NONBLOCK);
-            break;
-#endif
-        default:
-            pfd[i].fd = -1;
-        }
-
-        pfd[i].events = POLLPRI|POLLERR,
-        pfd[i].revents = 0;
-    }
-
-    return 0;
-}
-
-void parse_events(struct pollfd pfd[], int num_fds)
-{
-    int i;
-
-    for (i = 0; i < num_fds; i++) {
-        if(pfd[i].revents != 0) {
-            switch(i) {
-#ifdef SUPPORT_TAP
-            case FEAT_TAP:
-                tap_handler();
-                break;
-#endif
-#ifdef SUPPORT_SCREEN_ORIENTATION
-            case FEAT_SCREEN_ORIENTATION:
-                display_orientation_handler();
-                break;
-#endif
-#ifdef SUPPORT_ORIENTATION
-            case FEAT_ORIENTATION:
-                host_orientation_handler();
-                break;
-#endif
-#ifdef SUPPORT_SMD
-            case FEAT_SMD:
-                smd_handler();
-                break;
-#endif
-            default:
-                printf("GT:ERR-unhandled/unrecognized gesture event");
-                break;
-            }
-            pfd[i].revents = 0;   // no need: reset anyway
-        }
-    }
-
-#ifdef SUPPORT_PEDOMETER
-    {
-        unsigned long now;
-        // pedometer is not event based, therefore we poll using a timer every
-        //  pedometer_poll_timeout milliseconds
-        if ((now = inv_get_tick_count()) - last_pedometer_poll
-                > pedometer_poll_timeout) {
-            pedometer_handler();
-            last_pedometer_poll = now;
-        }
-    }
-#endif
-}
-
-int close_fds(void)
-{
-    int i;
-    for (i = 0; i < NUM_DMP_FEATS; i++) {
-        if (!pfd[i].fd)
-            close(pfd[i].fd);
-    }
-    return 0;
-}
-
-/*******************************************************************************
- *                       M a i n
- ******************************************************************************/
-
-int main(int argc, char **argv)
-{
-    char data[4];
-    int i, res= 0;
-
-    printf("\n"
-           "****************************************************************\n"
-           "*** NOTE:                                                    ***\n"
-           "***       the HAL must be compiled with Low power quaternion ***\n"
-           "***           and/or DMP screen orientation support.         ***\n"
-           "***       'At least' one of the 4 Android virtual sensors    ***\n"
-           "***           must be enabled.                               ***\n"
-           "***                                                          ***\n"
-           "*** Please perform gestures to see the output.               ***\n"
-           "*** Press any key to stop the program.                       ***\n"
-           "****************************************************************\n"
-           "\n");
-
-    res = inv_init_sysfs_attributes();
-    if (res) {
-        printf("GT:ERR-Can't allocate mem\n");
-        return -1;
-    }
-
-    /* check if Android Hub */
-    is_android_hub();
-
-    /* init Fds to poll for gesture data */
-    init_fds();
-
-    /* on Gesture/DMP supported features */
-    if (enable_dmp_features(1) < 0) {
-        printf("GT:ERR-Can't enable Gestures\n");
-        return -1;
-    }
-
-    do {
-        for (i = 0; i < NUM_DMP_FEATS; i++)
-            read(pfd[i].fd, data, 4);
-        poll(pfd, NUM_DMP_FEATS, POLL_TIME);
-        parse_events(pfd, NUM_DMP_FEATS);
-    } while (!_kbhit());
-
-    /* off Gesture/DMP supported features */
-    if (enable_dmp_features(0) < 0) {
-        printf("GT:ERR-Can't disable Gestures\n");
-        return -1;
-    }
-
-    /* release resources */
-    close_fds();
-    if (sysfs_names_ptr)
-        free(sysfs_names_ptr);
-
-    return res;
-}
-
diff --git a/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/inv_mpu_iio-shared b/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/inv_mpu_iio-shared
deleted file mode 100755
index f4ebc27..0000000
--- a/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/inv_mpu_iio-shared
+++ /dev/null
Binary files differ
diff --git a/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk b/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk
deleted file mode 100755
index 2dda9e0..0000000
--- a/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk
+++ /dev/null
@@ -1,94 +0,0 @@
-EXEC = inv_mpu_iio$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/filelist.mk b/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/filelist.mk
deleted file mode 100755
index 8a3977a..0000000
--- a/65xx/libsensors_iio/software/simple_apps/mpu_iio/build/filelist.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-#### filelist.mk for mpu_iio ####
-
-# headers
-#HEADERS += $(HAL_DIR)/include/inv_sysfs_utils.h
-HEADERS += $(APP_DIR)/iio_utils.h
-
-# sources
-SOURCES := $(APP_DIR)/mpu_iio.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR) $(HAL_DIR)/linux
diff --git a/65xx/libsensors_iio/software/simple_apps/mpu_iio/iio_utils.h b/65xx/libsensors_iio/software/simple_apps/mpu_iio/iio_utils.h
deleted file mode 100755
index c3d4955..0000000
--- a/65xx/libsensors_iio/software/simple_apps/mpu_iio/iio_utils.h
+++ /dev/null
@@ -1,650 +0,0 @@
-/* IIO - useful set of util functionality
- *
- * Copyright (c) 2008 Jonathan Cameron
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- */
-
-/* Made up value to limit allocation sizes */
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <dirent.h>
-
-#define IIO_MAX_NAME_LENGTH 30
-
-#define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements"
-#define FORMAT_TYPE_FILE "%s_type"
-
-const char *iio_dir = "/sys/bus/iio/devices/";
-
-extern int verbose;
-
-/**
- * iioutils_break_up_name() - extract generic name from full channel name
- * @full_name: the full channel name
- * @generic_name: the output generic channel name
- **/
-static int iioutils_break_up_name(const char *full_name,
-				  char **generic_name)
-{
-	char *current;
-	char *w, *r;
-	char *working;
-	current = strdup(full_name);
-	working = strtok(current, "_\0");
-	w = working;
-	r = working;
-
-	while (*r != '\0') {
-		if (!isdigit(*r)) {
-			*w = *r;
-			w++;
-		}
-		r++;
-	}
-	*w = '\0';
-	*generic_name = strdup(working);
-	free(current);
-
-	return 0;
-}
-
-/**
- * struct iio_channel_info - information about a given channel
- * @name: channel name
- * @generic_name: general name for channel type
- * @scale: scale factor to be applied for conversion to si units
- * @offset: offset to be applied for conversion to si units
- * @index: the channel index in the buffer output
- * @bytes: number of bytes occupied in buffer output
- * @mask: a bit mask for the raw output
- * @is_signed: is the raw value stored signed
- * @enabled: is this channel enabled
- **/
-struct iio_channel_info {
-	char *name;
-	char *generic_name;
-	float scale;
-	float offset;
-	unsigned index;
-	unsigned bytes;
-	unsigned bits_used;
-	unsigned shift;
-	uint64_t mask;
-	unsigned be;
-	unsigned is_signed;
-	unsigned enabled;
-	unsigned location;
-};
-
-/**
- * iioutils_get_type() - find and process _type attribute data
- * @is_signed: output whether channel is signed
- * @bytes: output how many bytes the channel storage occupies
- * @mask: output a bit mask for the raw data
- * @be: big endian
- * @device_dir: the iio device directory
- * @name: the channel name
- * @generic_name: the channel type name
- **/
-inline int iioutils_get_type(unsigned *is_signed,
-			     unsigned *bytes,
-			     unsigned *bits_used,
-			     unsigned *shift,
-			     uint64_t *mask,
-			     unsigned *be,
-			     const char *device_dir,
-			     const char *name,
-			     const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *scan_el_dir, *builtname, *builtname_generic, *filename = 0;
-	char signchar, endianchar;
-	unsigned padint;
-	const struct dirent *ent;
-
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname, FORMAT_TYPE_FILE, name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_scan_el_dir;
-	}
-	ret = asprintf(&builtname_generic, FORMAT_TYPE_FILE, generic_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		/*
-		 * Do we allow devices to override a generic name with
-		 * a specific one?
-		 */
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				printf("failed to open %s\n", filename);
-				ret = -errno;
-				goto error_free_filename;
-			}
-
-			ret = fscanf(sysfsfp,
-				     "%ce:%c%u/%u>>%u",
-				     &endianchar,
-				     &signchar,
-				     bits_used,
-				     &padint, shift);
-			if (ret < 0) {
-				printf("failed to pass scan type description\n");
-				return ret;
-			}
-			*be = (endianchar == 'b');
-			*bytes = padint / 8;
-			if (*bits_used == 64)
-				*mask = ~0;
-			else
-				*mask = (1 << *bits_used) - 1;
-			if (signchar == 's')
-				*is_signed = 1;
-			else
-				*is_signed = 0;
-			fclose(sysfsfp);
-			free(filename);
-
-			filename = 0;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_free_scan_el_dir:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int iioutils_get_param_float(float *output,
-				    const char *param_name,
-				    const char *device_dir,
-				    const char *name,
-				    const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *builtname, *builtname_generic;
-	char *filename = NULL;
-	const struct dirent *ent;
-
-	ret = asprintf(&builtname, "%s_%s", name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname_generic,
-		       "%s_%s", generic_name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-	dp = opendir(device_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", device_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (!sysfsfp) {
-				ret = -errno;
-				goto error_free_filename;
-			}
-			fscanf(sysfsfp, "%f", output);
-			break;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_ret:
-	return ret;
-}
-
-/**
- * bsort_channel_array_by_index() - reorder so that the array is in index order
- *
- **/
-
-inline void bsort_channel_array_by_index(struct iio_channel_info **ci_array,
-					 int cnt)
-{
-	struct iio_channel_info temp;
-	int x, y;
-
-	for (x = 0; x < cnt; x++)
-		for (y = 0; y < (cnt - 1); y++)
-			if ((*ci_array)[y].index > (*ci_array)[y+1].index) {
-				temp = (*ci_array)[y + 1];
-				(*ci_array)[y + 1] = (*ci_array)[y];
-				(*ci_array)[y] = temp;
-			}
-}
-
-/**
- * build_channel_array() - function to figure out what channels are present
- * @device_dir: the IIO device directory in sysfs
- * @
- **/
-inline int build_channel_array(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter)
-{
-	DIR *dp;
-	FILE *sysfsfp;
-	int count, i;
-	struct iio_channel_info *current;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-	char *filename;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_close_dir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				ret = -errno;
-				free(filename);
-				goto error_close_dir;
-			}
-			fscanf(sysfsfp, "%u", &ret);
-			//printf("%s, %d\n", filename, ret);
-			if (ret == 1)
-				(*counter)++;
-			fclose(sysfsfp);
-			free(filename);
-		}
-	*ci_array = malloc(sizeof(**ci_array) * (*counter));
-	if (*ci_array == NULL) {
-		ret = -ENOMEM;
-		goto error_close_dir;
-	}
-	closedir(dp);
-	dp = opendir(scan_el_dir);
-	//seekdir(dp, 0);
-	count = 0;
-	while (ent = readdir(dp), ent != NULL) {
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			current = &(*ci_array)[count++];
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				/* decrement count to avoid freeing name */
-				count--;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				free(filename);
-				ret = -errno;
-				goto error_cleanup_array;
-			}
-			fscanf(sysfsfp, "%u", &current->enabled);
-			fclose(sysfsfp);
-
-			if (!current->enabled) {
-				free(filename);
-				count--;
-				continue;
-			}
-
-			current->scale = 1.0;
-			current->offset = 0;
-			current->name = strndup(ent->d_name,
-						strlen(ent->d_name) -
-						strlen("_en"));
-			if (current->name == NULL) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			/* Get the generic and specific name elements */
-			ret = iioutils_break_up_name(current->name,
-						     &current->generic_name);
-			if (ret) {
-				free(filename);
-				goto error_cleanup_array;
-			}
-			ret = asprintf(&filename,
-				       "%s/%s_index",
-				       scan_el_dir,
-				       current->name);
-			if (ret < 0) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			fscanf(sysfsfp, "%u", &current->index);
-			fclose(sysfsfp);
-			free(filename);
-			/* Find the scale */
-			ret = iioutils_get_param_float(&current->scale,
-						       "scale",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_param_float(&current->offset,
-						       "offset",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_type(&current->is_signed,
-						&current->bytes,
-						&current->bits_used,
-						&current->shift,
-						&current->mask,
-						&current->be,
-						device_dir,
-						current->name,
-						current->generic_name);
-		}
-	}
-
-	closedir(dp);
-	/* reorder so that the array is in index order */
-	bsort_channel_array_by_index(ci_array, *counter);
-
-	return 0;
-
-error_cleanup_array:
-	for (i = count - 1;  i >= 0; i--)
-		free((*ci_array)[i].name);
-	free(*ci_array);
-error_close_dir:
-	closedir(dp);
-error_free_name:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int _write_sysfs_int(char *filename, char *basedir, int val, int verify)
-{
-    int ret = 0;
-	FILE *sysfsfp;
-	int test;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL)
-		return -ENOMEM;
-        
-	sprintf(temp, "%s/%s", basedir, filename);
-
-    if (verbose)
-        printf("VERB: echo %d > %s\n", val, temp);
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("failed to open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%d", val);
-	fclose(sysfsfp);
-
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("failed to open %s\n", temp);
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%d", &test);
-        fclose(sysfsfp);
-        if (verbose)
-            printf("VERB: cat %s = %d\n", temp, test);
-		if (test != val) {
-            printf("Possible failure in int write %d to %s\n",
-                   val, temp);
-			ret = -1;
-		}
-	}
-
-error_free:
-	free(temp);
-	return ret;
-}
-
-int write_sysfs_int(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 0);
-}
-
-int write_sysfs_int_and_verify(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 1);
-}
-
-int _write_sysfs_string(char *filename, char *basedir, char *val, int verify)
-{
-	int ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed\n");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("Could not open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%s", val);
-	fclose(sysfsfp);
-
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("could not open file to verify\n");
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%s", temp);
-        fclose(sysfsfp);
-        
-		if (strcmp(temp, val) != 0) {
-			printf("Possible failure in string write of %s "
-                   "Should be %s written to %s\%s\n",
-                   temp, val, basedir, filename);
-			ret = -1;
-		}
-	}
-
-error_free:
-	free(temp);
-
-	return ret;
-}
-
-/**
- * write_sysfs_string_and_verify() - string write, readback and verify
- * @filename: name of file to write to
- * @basedir: the sysfs directory in which the file is to be found
- * @val: the string to write
- **/
-int write_sysfs_string_and_verify(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 1);
-}
-
-int write_sysfs_string(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 0);
-}
-
-int read_sysfs_posint(char *filename, char *basedir)
-{
-	int ret;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%d\n", &ret);
-	fclose(sysfsfp);
-error_free:
-	free(temp);
-	return ret;
-}
-
-int read_sysfs_float(char *filename, char *basedir, float *val)
-{
-	float ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%f\n", val);
-	fclose(sysfsfp);
-
-error_free:
-	free(temp);
-	return ret;
-}
-
-int enable_se(const char *device_dir, struct iio_channel_info **ci_array, 
-              int *counter, char *sensor, int en)
-{
-	DIR *dp;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-    char pattern[50] = "in_";
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-    strcat(pattern, sensor);
-    while (ent = readdir(dp), ent != NULL) {
-        if (strncmp(ent->d_name, pattern, strlen(pattern)) == 0 &&
-            strncmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-                    "_en", strlen("_en")) == 0) {
-            write_sysfs_int_and_verify((char *)ent->d_name, scan_el_dir, en);
-        }
-		}
-	return 0;
-
-error_ret:
-error_free_name:
-	return -1;
-}
-
-int enable_accel_se(const char *device_dir, 
-                         struct iio_channel_info **ci_array, int *counter, 
-                         int en)
-{
-    return enable_se(device_dir, ci_array, counter, "accel", en);
-}
-
-int enable_anglvel_se(const char *device_dir, 
-                         struct iio_channel_info **ci_array, int *counter, 
-                         int en)
-{
-    return enable_se(device_dir, ci_array, counter, "anglvel", en);
-}
-
-int enable_quaternion_se(const char *device_dir, 
-                         struct iio_channel_info **ci_array, int *counter, 
-                         int en)
-{
-    return enable_se(device_dir, ci_array, counter, "quaternion", en);
-}
-
diff --git a/65xx/libsensors_iio/software/simple_apps/mpu_iio/mpu_iio.c b/65xx/libsensors_iio/software/simple_apps/mpu_iio/mpu_iio.c
deleted file mode 100755
index 65e21ac..0000000
--- a/65xx/libsensors_iio/software/simple_apps/mpu_iio/mpu_iio.c
+++ /dev/null
@@ -1,935 +0,0 @@
-/*
- * Copyright (c) Invensense Inc. 2012
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <linux/types.h>
-#include <string.h>
-#include <poll.h>
-#include <termios.h>
-
-#include "iio_utils.h"
-#include "ml_load_dmp.h"
-#include "ml_sysfs_helper.h"
-#include "authenticate.h"
-#include "mlos.h"
-
-#define DMP_CODE_SIZE (3060)
-#define POLL_TIME     (2000) // 2sec
-
-// settings
-static int accel_only = false;
-static int test_motion = false;
-static int test_flick = false;
-static int test_pedometer = false;
-static int test_orientation = false;
-int verbose = false;
-
-// paths
-char *dev_dir_name, *buf_dir_name;
-
-// all the DMP features supported
-enum {
-    FEAT_TAP = 0,
-    FEAT_ORIENTATION,
-    FEAT_DISPLAY_ORIENTATION,
-    FEAT_MOTION,
-    FEAT_FLICK,
-
-    FEAT_NUM,
-} features;
-
-typedef void (*handler_t) (int data);
-
-struct dmp_feat_t {
-    int enabled;
-    struct pollfd *pollfd;
-    char *sysfs_name;
-    handler_t phandler;
-};
-
-static struct dmp_feat_t dmp_feat[FEAT_NUM] = {{0}};
-static struct pollfd pollfds[FEAT_NUM];
-static int pollfds_used = 0;
-
-/**************************************************
-   This _kbhit() function is courtesy of the web
-***************************************************/
-int _kbhit(void)
-{
-    static const int STDIN = 0;
-    static bool initialized = false;
-
-    if (!initialized) {
-        // Use termios to turn off line buffering
-        struct termios term;
-        tcgetattr(STDIN, &term);
-        term.c_lflag &= ~ICANON;
-        tcsetattr(STDIN, TCSANOW, &term);
-        setbuf(stdin, NULL);
-        initialized = true;
-    }
-
-    int bytesWaiting;
-    ioctl(STDIN, FIONREAD, &bytesWaiting);
-    return bytesWaiting;
-}
-
-/**
- * size_from_channelarray() - calculate the storage size of a scan
- * @channels: the channel info array
- * @num_channels: size of the channel info array
- *
- * Has the side effect of filling the channels[i].location values used
- * in processing the buffer output.
- */
-int size_from_channelarray(struct iio_channel_info *channels, int num_channels)
-{
-    int bytes = 0;
-    int i = 0;
-    while (i < num_channels) {
-        if (bytes % channels[i].bytes == 0)
-            channels[i].location = bytes;
-        else
-            channels[i].location = bytes - bytes%channels[i].bytes
-                + channels[i].bytes;
-        bytes = channels[i].location + channels[i].bytes;
-        i++;
-    }
-    return bytes;
-}
-
-void print2byte(int input, struct iio_channel_info *info)
-{
-    /* shift before conversion to avoid sign extension
-       of left aligned data */
-    input = input >> info->shift;
-    if (info->is_signed) {
-        int16_t val = input;
-        val &= (1 << info->bits_used) - 1;
-        val = (int16_t)(val << (16 - info->bits_used)) >>
-            (16 - info->bits_used);
-        /*printf("%d, %05f, scale=%05f", val,
-               (float)(val + info->offset)*info->scale, info->scale);*/
-        printf("%d, ", val);
-
-    } else {
-        uint16_t val = input;
-        val &= (1 << info->bits_used) - 1;
-        printf("%05f ", ((float)val + info->offset)*info->scale);
-    }
-}
-
-/**
- * process_scan() - print out the values in SI units
- * @data:        pointer to the start of the scan
- * @infoarray:        information about the channels. Note
- *  size_from_channelarray must have been called first to fill the
- *  location offsets.
- * @num_channels:    the number of active channels
- */
-void process_scan(char *data, struct iio_channel_info *infoarray, 
-          int num_channels)
-{
-    int k;
-    //char *tmp;
-    for (k = 0; k < num_channels; k++) {
-        switch (infoarray[k].bytes) {
-            /* only a few cases implemented so far */
-        case 2:
-            print2byte(*(uint16_t *)(data + infoarray[k].location),
-                   &infoarray[k]);
-            //tmp = data + infoarray[k].location;
-            break;
-        case 4:
-            if (infoarray[k].is_signed) {
-                int32_t val = *(int32_t *)(data + infoarray[k].location);
-                if ((val >> infoarray[k].bits_used) & 1)
-                    val = (val & infoarray[k].mask) | ~infoarray[k].mask;
-                /* special case for timestamp */
-                printf(" %d ", val);
-            }
-            break;
-        case 8:
-            if (infoarray[k].is_signed) {
-                int64_t val = *(int64_t *)(data + infoarray[k].location);
-                if ((val >> infoarray[k].bits_used) & 1)
-                    val = (val & infoarray[k].mask) | ~infoarray[k].mask;
-                /* special case for timestamp */
-                if (infoarray[k].scale == 1.0f &&
-                    infoarray[k].offset == 0.0f)
-                    printf(" %lld", val);
-                else
-                    printf("%05f ", ((float)val + infoarray[k].offset)
-                            * infoarray[k].scale);
-            }
-            break;
-        default:
-            break;
-        }
-    }
-    printf("\n");
-}
-
-/*
-    Enablers for the gestures
-*/
-
-int enable_flick(char *p, int on)
-{
-    int ret;
-    printf("flick:%s\n", p);
-    ret = write_sysfs_int_and_verify("flick_int_on", p, on);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("flick_upper", p, 3147790);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("flick_lower", p, -3147790);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("flick_counter", p, 50);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("flick_message_on", p, 0);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("flick_axis", p, 0);
-    if (ret < 0)
-        return ret;
-
-    return 0;
-}
-
-void verify_img(char *dmp_path)
-{
-    FILE *fp;
-    int i;
-    char dmp_img[DMP_CODE_SIZE];
-
-    if ((fp = fopen(dmp_path, "rb")) < 0) {
-        perror("dmp fail");
-    }
-    i = fread(dmp_img, 1, DMP_CODE_SIZE, fp);
-    printf("Result=%d\n", i);
-    fclose(fp);
-    fp = fopen("/dev/read_img.h", "wt");
-    fprintf(fp, "char rec[]={\n");
-    for(i = 0; i < DMP_CODE_SIZE; i++) {
-        fprintf(fp, "0x%02x, ", dmp_img[i]);
-        if(((i + 1) % 16) == 0) {
-            fprintf(fp, "\n");
-        }
-    }
-    fprintf(fp, "};\n ");
-    fclose(fp);
-}
-
-int setup_dmp(char *dev_path, int p_event)
-{
-    char dmp_path[100];
-    int ret;
-    FILE *fd;
-
-    printf("INFO: sysfs path=%s\n", dev_path);
-
-    ret = write_sysfs_int_and_verify("power_state", dev_path, 1);
-    if (ret < 0)
-        return ret;
-
-    ret = write_sysfs_int("in_accel_scale", dev_path, 0);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int("in_anglvel_scale", dev_path, 3);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int("sampling_frequency", dev_path, 200);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("firmware_loaded", dev_path, 0);
-    if (ret < 0)
-        return ret;
-
-    sprintf(dmp_path, "%s/dmp_firmware", dev_path);
-    if ((fd = fopen(dmp_path, "wb")) < 0 ) {
-        perror("dmp fail");
-    }    
-    inv_load_dmp(fd);
-    fclose(fd);
-
-    printf("INFO: firmware_loaded=%d\n",
-           read_sysfs_posint("firmware_loaded", dev_path));
-
-    // set accel offsets
-    //ret = write_sysfs_int_and_verify("in_accel_x_offset", 
-    //                                 dev_path, 0xabcd0000);
-    //if (ret < 0)
-    //    return ret;
-    //ret = write_sysfs_int_and_verify("in_accel_y_offset", 
-    //                                 dev_path, 0xffff0000);
-    //if (ret < 0)
-    //    return ret;
-    //ret = write_sysfs_int_and_verify("in_accel_z_offset", 
-    //                                 dev_path, 0xcdef0000);
-    //if (ret < 0)
-    //    return ret;
-
-    ret = write_sysfs_int_and_verify("dmp_on", dev_path, 1);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("dmp_int_on", dev_path, 1);
-    if (ret < 0)
-        return ret;
-
-    /* select which event to enable and interrupt on/off here */
-    if (test_flick) {
-        ret = enable_flick(dev_path, 1);
-        if (ret < 0)
-            return ret;
-    }
-
-    /*
-    ret = write_sysfs_int_and_verify("tap_on", dev_path, 1);
-    if (ret < 0)
-        return ret;
-    */
-
-    ret = write_sysfs_int_and_verify("display_orientation_on",
-                                     dev_path, 1);
-    if (ret < 0)
-        return ret;
-    if (test_orientation) {
-        ret = write_sysfs_int_and_verify("orientation_on", dev_path, 1);
-        if (ret < 0)
-            return ret;
-    }
-    ret = write_sysfs_int_and_verify("dmp_output_rate", dev_path, 25);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("dmp_event_int_on", dev_path, p_event);
-    if (ret < 0)
-        return ret;
-
-    //verify_img(dmp_path);
-    return 0;
-}
-
-/*
-    Handlers for the gestures
-*/
-
-void handle_flick(int flick)
-{
-    printf("flick=%x\n", flick);
-}
-
-void handle_display_orientation(int orient)
-{
-    printf("display_orientation=%x\n", orient);
-}
-
-void handle_motion(int motion)
-{
-    printf("motion=%x\n", motion);
-}
-
-void handle_orientation(int orient)
-{
-    printf("orientation=");
-    if (orient & 0x01)
-        printf("+X, ");
-    if (orient & 0x02) 
-        printf("-X, ");
-    if (orient & 0x04) 
-        printf("+Y, ");
-    if (orient & 0x08) 
-        printf("-Y, ");
-    if (orient & 0x10) 
-        printf("+Z, ");
-    if (orient & 0x20) 
-        printf("-Z, ");
-    if (orient & 0x40)
-        printf("flip");
-    printf("\n");
-}
-
-void handle_tap(int tap)
-{
-    int tap_dir = tap / 8;
-    int tap_num = tap % 8 + 1;
-
-    printf("tap=");
-    switch (tap_dir) {
-        case 1:
-            printf("+X, ");
-            break;
-        case 2:
-            printf("-X, ");
-            break;
-        case 3:
-            printf("+Y, ");
-            break;
-        case 4:
-            printf("-Y, ");
-            break;
-        case 5:
-            printf("+Z, ");
-            break;
-        case 6:
-            printf("-Z, ");
-            break;
-        default:
-            break;
-    }
-    printf("#%d\n", tap_num);
-}
-
-int handle_pedometer(int *got_event)
-{
-    static int last_pedometer_steps = -1;
-    static long last_pedometer_time = -1;
-    static unsigned long last_pedometer_poll = 0L;
-    static unsigned long pedometer_poll_timeout = 500L; // .5 second
-
-    unsigned long now;
-    int pedometer_steps;
-    long pedometer_time;
-
-#ifdef DEBUG_PRINT
-    printf("GT:Pedometer Handler\n");
-#endif
-
-    if ((now = inv_get_tick_count()) - last_pedometer_poll
-            < pedometer_poll_timeout) {
-        return 0;
-    }
-    last_pedometer_poll = now;
-
-    pedometer_steps = read_sysfs_posint("pedometer_steps", dev_dir_name);
-    pedometer_time = read_sysfs_posint("pedometer_time", dev_dir_name);
-
-    if (last_pedometer_steps == -1 && last_pedometer_time == -1) {
-        if (!*got_event)
-            printf("\n");
-        printf("p> pedometer=%d, %ld ",
-               pedometer_steps, pedometer_time);
-        if (pedometer_steps > 10 
-                || pedometer_time > (pedometer_poll_timeout * 2))
-            printf("(resumed)\n");
-        else
-            printf("\n");
-        *got_event = true;
-    } else if (last_pedometer_steps != pedometer_steps
-                    || last_pedometer_time != pedometer_time) {
-        if (!*got_event)
-            printf("\n");
-        printf("p> pedometer=%d, %ld\n", 
-               pedometer_steps, pedometer_time);
-        *got_event = true;
-    }
-
-    last_pedometer_steps = pedometer_steps;
-    last_pedometer_time = pedometer_time;
-
-    return 0;
-}
-
-/*
-    Main processing functions
-*/
-
-void dump_dmp_event_struct(void)
-{
-#define VARVAL(f, v) printf("\t%s : " f "\n", #v, v);
-    int i;
-
-    printf("dmp_feat structure content:\n");
-    for (i = 0; i < FEAT_NUM; i++) {
-        printf("%d - ", i);
-        VARVAL("%d", dmp_feat[i].enabled);
-        VARVAL("%s", dmp_feat[i].sysfs_name);
-        VARVAL("%p", dmp_feat[i].phandler);
-        VARVAL("%p", dmp_feat[i].pollfd);
-        if (dmp_feat[i].pollfd) {
-            VARVAL("%d", dmp_feat[i].pollfd->events);
-            VARVAL("%d", dmp_feat[i].pollfd->revents);
-            VARVAL("%d", dmp_feat[i].pollfd->fd);
-        }
-    }
-    printf("dmp_feat structure content:\n");
-    for (i = 0; i < FEAT_NUM; i++) {
-        printf("%d - ", i);
-        VARVAL("%d", pollfds[i].fd);
-        VARVAL("%d", pollfds[i].events);
-        VARVAL("%d", pollfds[i].revents);
-    }
-    printf("end.\n");
-}
-
-void init_dmp_event_fds(void)
-{
-    int i, j = 0;
-    char file_name[100];
-
-    for (i = 0; i < FEAT_NUM; i++) {
-        if (!dmp_feat[i].enabled)
-            continue;
-        sprintf(file_name, "%s/%s", dev_dir_name, dmp_feat[i].sysfs_name);
-        pollfds[j].fd = open(file_name, O_RDONLY | O_NONBLOCK);
-        if (pollfds[j].fd < 0) {
-            printf("Err: cannot open requested event file '%s'\n", file_name);
-        } else {
-            printf("INFO: opened event node '%s'\n", file_name);
-        }
-        pollfds[j].events = POLLPRI | POLLERR;
-        pollfds[j].revents = 0;
-
-        dmp_feat[i].pollfd = &pollfds[j];
-        j++;
-    }
-}
-
-void close_dmp_event_fds(void)
-{
-    int i;
-    for (i = 0; i < pollfds_used; i++)
-        close(pollfds[i].fd);
-}
-
-void poll_dmp_event_fds(void)
-{
-    int i;
-    char d[4];
-    static int got_event = 1;
-
-    // read the pollable fds
-    for (i = 0; i < pollfds_used; i++)
-        read(pollfds[i].fd, d, 4);
-
-    // poll
-    if (got_event)
-        printf("e> ");
-    got_event = false;
-    poll(pollfds, pollfds_used, POLL_TIME);
-
-    for (i = 0; i < FEAT_NUM; i++) {
-        if (!dmp_feat[i].enabled)
-            continue;
-
-        if (dmp_feat[i].pollfd->revents != 0) {
-            char file_name[200];
-            int data;
-
-            sprintf(file_name, "%s/%s",
-                    dev_dir_name, dmp_feat[i].sysfs_name);
-            FILE *fp = fopen(file_name, "rt");
-            if (!fp) {
-                printf("Err:cannot open requested event file '%s'\n",
-                       dmp_feat[i].sysfs_name);
-                continue;
-            }
-            fscanf(fp, "%d\n", &data);
-            fclose(fp);
-            dmp_feat[i].pollfd->revents = 0;
-
-            dmp_feat[i].phandler(data);
-            got_event = true;
-        }
-    }
-
-    if (test_pedometer) {
-        /* pedometer is not event based, therefore we poll using a timer every
-           pedometer_poll_timeout milliseconds */
-        handle_pedometer(&got_event);
-    }
-}
-
-/*
-    Main
-*/
-
-int main(int argc, char **argv)
-{
-    unsigned long num_loops = 2;
-    unsigned long timedelay = 100000;
-    unsigned long buf_len = 128;
-
-    int ret, c, i, j, toread;
-    int fp;
-
-    int num_channels;
-    char *trigger_name = NULL;
-
-    int datardytrigger = 1;
-    char *data;
-    int read_size;
-    int dev_num, trig_num;
-    char *buffer_access;
-    int scan_size;
-    int noevents = 0;
-    int p_event = 0, nodmp = 0;
-    char *dummy;
-    char chip_name[10];
-    char device_name[10];
-    char sysfs[100];
-
-    struct iio_channel_info *infoarray;
-
-    // all output to stdout must be delivered immediately, no buffering
-    setvbuf(stdout, NULL, _IONBF, 0);
-
-    // get info about the device and driver
-    inv_get_sysfs_path(sysfs);
-    if (inv_get_chip_name(chip_name) != INV_SUCCESS) {
-        printf("get chip name fail\n");
-        exit(0);
-    }
-    printf("INFO: chip_name=%s\n", chip_name);
-
-    for (i = 0; i < strlen(chip_name); i++)
-        device_name[i] = tolower(chip_name[i]);
-    device_name[strlen(chip_name)] = '\0';
-    printf("INFO: device name=%s\n", device_name);
-
-    /* parse the command line parameters 
-      -r means no DMP is enabled (raw) -> should be used for mpu3050.
-       -p means no print of data 
-       when using -p, 1 means orientation, 2 means tap, 3 means flick */
-    while ((c = getopt(argc, argv, "l:w:c:premavt:")) != -1) {
-        switch (c) {
-        case 't':
-            trigger_name = optarg;
-            datardytrigger = 0;
-            break;
-        case 'e':
-            noevents = 1;
-            break;
-        case 'p':
-            p_event = 1;
-            break;
-        case 'r':
-            nodmp = 1;
-            break;
-        case 'c':
-            num_loops = strtoul(optarg, &dummy, 10);
-            break;
-        case 'w':
-            timedelay = strtoul(optarg, &dummy, 10);
-            break;
-        case 'l':
-            buf_len = strtoul(optarg, &dummy, 10);
-            break;
-        case 'm':
-            test_motion = true;
-            break;
-        case 'a':
-            accel_only = true;
-            break;
-        case 'v':
-            verbose = true;
-            break;
-        case '?':
-            return -1;
-        }
-    }
-
-    pollfds_used = 0;
-
-    // comment out/remove/if(0) the block corresponding to the feature 
-    //  that you want to disable
-
-    if (0) {
-        struct dmp_feat_t f = {
-            true, 
-            NULL, 
-            "event_tap",
-            handle_tap
-        };
-        dmp_feat[pollfds_used] = f;
-        pollfds_used++;
-    }
-    if (test_orientation) {
-        struct dmp_feat_t f = {
-            true, 
-            NULL, 
-            "event_orientation",
-            handle_orientation
-        };
-        dmp_feat[pollfds_used] = f;
-        pollfds_used++;
-    }
-    if (1) {
-        struct dmp_feat_t f = {
-            true, 
-            NULL, 
-            "event_display_orientation",
-            handle_display_orientation
-        };
-        dmp_feat[pollfds_used] = f;
-        pollfds_used++;
-    }
-    if (test_motion) {
-        struct dmp_feat_t f = {
-            true,
-            NULL,
-            "event_accel_motion",
-            handle_motion
-        };
-        dmp_feat[pollfds_used] = f;
-        pollfds_used++;
-    }
-    if (test_flick) {
-        struct dmp_feat_t f = {
-            true, 
-            NULL, 
-            "event_flick", 
-            handle_flick
-        };
-        dmp_feat[pollfds_used] = f;
-        pollfds_used++;
-    }
-
-    // debug
-    printf("INFO\n");
-    printf("INFO: Configured features:\n");
-    for (i = 0; i < pollfds_used; i++)
-        printf("INFO:   %d -> %s\n", i, dmp_feat[i].sysfs_name);
-    printf("INFO\n");
-
-    /* Find the device requested */
-    dev_num = find_type_by_name(device_name, "iio:device");
-    if (dev_num < 0) {
-        printf("Failed to find the %s\n", device_name);
-        ret = -ENODEV;
-        goto error_ret;
-    }
-    printf("INFO: iio device number=%d\n", dev_num);
-    asprintf(&dev_dir_name, "%siio:device%d", iio_dir, dev_num);
-    if (trigger_name == NULL) {
-        /*
-         * Build the trigger name. If it is device associated it's
-         * name is <device_name>_dev[n] where n matches the device
-         * number found above
-         */
-        ret = asprintf(&trigger_name, "%s-dev%d", device_name, dev_num);
-        if (ret < 0) {
-            ret = -ENOMEM;
-            goto error_ret;
-        }
-    }
-    ret = write_sysfs_int_and_verify("buffer/enable", dev_dir_name, 0);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-
-    //
-    //  motion interrupt in low power accel mode
-    //
-    if (test_motion) {
-        ret = write_sysfs_int_and_verify("motion_lpa_on", dev_dir_name, 1);
-        if (ret < 0)
-            return ret;
-        // magnitude threshold - range [0, 1020] in 32 mg increments
-        ret = write_sysfs_int_and_verify("motion_lpa_threshold", dev_dir_name, 
-                                         3 * 32);
-        if (ret < 0)
-            return ret;
-        // duration in ms up to 2^16
-        ret = write_sysfs_int_and_verify("motion_lpa_duration", dev_dir_name, 
-                                         200 * 1);
-        if (ret < 0)
-            return ret;
-        // motion_lpa_freq: 0 for 1.25, 1 for 5, 2 for 20, 3 for 40 Hz update rate 
-        //  of the low power accel mode. 
-        //  The higher the rate, the better responsiveness of the motion interrupt.
-        ret = write_sysfs_int("motion_lpa_freq", dev_dir_name, 2);
-        if (ret < 0)
-            return ret;
-    } else {
-        ret = write_sysfs_int_and_verify("motion_lpa_on", dev_dir_name, 0);
-        if (ret < 0)
-            return ret;
-    }
-
-    /* Verify the trigger exists */
-    trig_num = find_type_by_name(trigger_name, "trigger");
-    if (trig_num < 0) {
-        printf("Failed to find the trigger %s\n", trigger_name);
-        ret = -ENODEV;
-        goto error_free_triggername;
-    }
-    printf("INFO: iio trigger number=%d\n", trig_num);
-
-    if (!nodmp)
-        setup_dmp(dev_dir_name, p_event);
-
-    /*
-     * Construct the directory name for the associated buffer.
-     * As we know that the lis3l02dq has only one buffer this may
-     * be built rather than found.
-     */
-    ret = asprintf(&buf_dir_name, "%siio:device%d/buffer", iio_dir, dev_num);
-    if (ret < 0) {
-        ret = -ENOMEM;
-        goto error_free_triggername;
-    }
-
-    /* Set the device trigger to be the data rdy trigger found above */
-    ret = write_sysfs_string_and_verify("trigger/current_trigger",
-                    dev_dir_name,
-                    trigger_name);
-    if (ret < 0) {
-        printf("Failed to write current_trigger file\n");
-        goto error_free_buf_dir_name;
-    }
-
-    /* Setup ring buffer parameters
-       length must be even number because iio_store_to_sw_ring is expecting 
-       half pointer to be equal to the read pointer, which is impossible
-       when buflen is odd number. This is actually a bug in the code */
-    ret = write_sysfs_int("length", buf_dir_name, buf_len * 2);
-    if (ret < 0)
-        goto exit_here;
-
-    // gyro
-    if (accel_only) {
-        ret = enable_anglvel_se(dev_dir_name, &infoarray, &num_channels, 0);
-        if (ret < 0)
-            return ret;
-        ret = write_sysfs_int_and_verify("gyro_enable", dev_dir_name, 0);
-        if (ret < 0)
-            return ret;
-    } else {
-        ret = enable_anglvel_se(dev_dir_name, &infoarray, &num_channels, 1);
-        if (ret < 0)
-            return ret;
-        ret = write_sysfs_int_and_verify("gyro_enable", dev_dir_name, 1);
-        if (ret < 0)
-            return ret;
-    }
-
-    // accel
-    ret = enable_accel_se(dev_dir_name, &infoarray, &num_channels, 1);
-    if (ret < 0)
-        return ret;
-    ret = write_sysfs_int_and_verify("accel_enable", dev_dir_name, 1);
-    if (ret < 0)
-        return ret;
-
-    // quaternion
-    if (!nodmp) {
-        ret = enable_quaternion_se(dev_dir_name, &infoarray, &num_channels, 1);
-        if (ret < 0)
-            return ret;
-        ret = write_sysfs_int_and_verify("three_axes_q_on", dev_dir_name, 1);
-        if (ret < 0)
-            return ret;
-    } else {
-        ret = enable_quaternion_se(dev_dir_name, &infoarray, &num_channels, 0);
-        if (ret < 0)
-            return ret;
-        ret = write_sysfs_int_and_verify("dmp_on", dev_dir_name, 0);
-        if (ret < 0)
-            return ret;
-    }
-
-    //sprintf(dmp_path, "%s/dmp_firmware", dev_dir_name);
-    //verify_img(dmp_path);
-
-    ret = build_channel_array(dev_dir_name, &infoarray, &num_channels);
-    if (ret) {
-        printf("Problem reading scan element information\n");
-        goto exit_here;
-    }
-
-    /* enable the buffer */
-    ret = write_sysfs_int_and_verify("enable", buf_dir_name, 1);
-    if (ret < 0)
-        goto exit_here;
-    scan_size = size_from_channelarray(infoarray, num_channels);
-    data = malloc(scan_size * buf_len);
-    if (!data) {
-        ret = -ENOMEM;
-        goto exit_here;
-    }
-
-    if (p_event) {
-
-        /* polling events from the DMP */
-        init_dmp_event_fds();
-        while(!_kbhit())
-            poll_dmp_event_fds();
-        close_dmp_event_fds();
-
-    } else {
-
-        /* attempt to open non blocking the access dev */
-        ret = asprintf(&buffer_access, "/dev/iio:device%d", dev_num);
-        if (ret < 0) {
-            ret = -ENOMEM;
-            goto error_free_data;
-        }
-        fp = open(buffer_access, O_RDONLY | O_NONBLOCK);
-        if (fp == -1) { /*If it isn't there make the node */
-            printf("Failed to open %s\n", buffer_access);
-            ret = -errno;
-            goto error_free_buffer_access;
-        }
-        /* wait for events num_loops times */
-        for (j = 0; j < num_loops; j++) {
-            if (!noevents) {
-                struct pollfd pfd = {
-                    .fd = fp,
-                    .events = POLLIN,
-                };
-                poll(&pfd, 1, -1);
-                toread = 1;
-                if (j % 128 == 0)
-                    usleep(timedelay);
-
-            } else {
-                usleep(timedelay);
-                toread = 1;
-            }
-            read_size = read(fp, data, toread * scan_size);
-            if (read_size == -EAGAIN) {
-                printf("nothing available\n");
-                continue;
-            }
-            if (!p_event) {
-                for (i = 0; i < read_size / scan_size; i++)
-                    process_scan(data + scan_size * i, infoarray, num_channels);
-            }
-        }
-        close(fp);
-    }
-
-error_free_buffer_access:
-    free(buffer_access);
-error_free_data:
-    free(data);
-exit_here:
-    /* stop the ring buffer */
-    ret = write_sysfs_int_and_verify("enable", buf_dir_name, 0);
-    /* disable the dmp */
-    if (p_event)
-        ret = write_sysfs_int_and_verify("dmp_on", dev_dir_name, 0);
-
-error_free_buf_dir_name:
-    free(buf_dir_name);
-error_free_triggername:
-    if (datardytrigger)
-        free(trigger_name);
-error_ret:
-    return ret;
-}
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/and_constructor.c b/65xx/libsensors_iio/software/simple_apps/playback/linux/and_constructor.c
deleted file mode 100755
index c4f09a6..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/and_constructor.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- $License:
-    Copyright (C) 2012 InvenSense Corporation, All Rights Reserved.
- $
- */
-
-/*******************************************************************************
- *
- * $Id:$
- *
- ******************************************************************************/
-
-/*
-    Includes, Defines, and Macros
-*/
-
-#undef MPL_LOG_NDEBUG
-#define MPL_LOG_NDEBUG 0 /* turn to 0 to enable verbose logging */
-
-#include "log.h"
-#undef MPL_LOG_TAG
-#define MPL_LOG_TAG "MPL-playback"
-
-#include "and_constructor.h"
-#include "mlos.h"
-#include "invensense.h"
-#include "invensense_adv.h"
-
-/*
-    Typedef
-*/
-struct inv_construct_t {
-    int product; /**< Gyro Product Number */
-    int debug_mode;
-    int last_mode;
-    FILE *file;
-    int dmp_version;
-    int left_in_buffer;
-#define FIFO_READ_SIZE 100
-    unsigned char fifo_data[FIFO_READ_SIZE];
-    int gyro_enable;
-    int accel_enable;
-    int compass_enable;
-    int quat_enable;
-};
-
-/*
-    Globals
-*/
-static struct inv_construct_t inv_construct = {0};
-static void (*s_func_cb)(void);
-static char playback_filename[101] = "/data/playback.bin";
-struct fifo_dmp_config fifo_dmp_cfg = {0};
-
-/*
-    Functions
-*/
-void inv_set_playback_filename(char *filename, int length)
-{
-    if (length > 100) {
-        MPL_LOGE("Error : file name and path too long, 100 characters limit\n");
-        return;
-    }
-    strncpy(playback_filename, filename, length);
-}
-
-inv_error_t inv_constructor_setup(void)
-{
-    unsigned short orient;
-    extern signed char g_gyro_orientation[9];
-    extern signed char g_accel_orientation[9];
-    extern signed char g_compass_orientation[9];
-    float scale = 2.f;
-    long sens;
-
-    // gyro setup
-    orient = inv_orientation_matrix_to_scalar(g_gyro_orientation);
-    inv_set_gyro_orientation_and_scale(orient, 2000L << 15);
-
-    // accel setup
-    orient = inv_orientation_matrix_to_scalar(g_accel_orientation);
-    scale = 2.f;
-    sens = (long)(scale * (1L << 15));
-    inv_set_accel_orientation_and_scale(orient, sens);
-
-    // compass setup
-    orient = inv_orientation_matrix_to_scalar(g_compass_orientation);
-    // scale is the max value of the compass in micro Tesla.
-    scale = 5000.f;
-    sens = (long)(scale * (1L << 15));
-    inv_set_compass_orientation_and_scale(orient, sens);
-
-    return INV_SUCCESS;
-}
-
-inv_error_t inv_set_fifo_processed_callback(void (*func_cb)(void))
-{
-    s_func_cb = func_cb;
-    return INV_SUCCESS;
-}
-
-void int32_to_long(int32_t in[], long out[], int length)
-{
-    int ii;
-    for (ii = 0; ii < length; ii++)
-        out[ii] = (long)in[ii];
-}
-
-inv_error_t inv_playback(void)
-{
-    inv_rd_dbg_states type;
-    inv_time_t ts;
-    int32_t buffer[4];
-    short gyro[3];
-    size_t r = 1;
-    int32_t orientation;
-    int32_t sensitivity, sample_rate_us = 0;
-
-    // Check to make sure we were request to playback
-    if (inv_construct.debug_mode != RD_PLAYBACK) {
-        MPL_LOGE("%s|%s|%d error: debug_mode != RD_PLAYBACK\n",
-                 __FILE__, __func__, __LINE__);
-        return INV_ERROR;
-    }
-
-    if (inv_construct.file == NULL) {
-        inv_construct.file = fopen(playback_filename, "rb");
-        if (!inv_construct.file) {
-            MPL_LOGE("Error : cannot find or open playback file '%s'\n",
-                     playback_filename);
-            return INV_ERROR_FILE_OPEN;
-        }
-    }
-
-    while (1) {
-        r = fread(&type, sizeof(type), 1, inv_construct.file);
-        if (r == 0) {
-            MPL_LOGV("read 0 bytes, PLAYBACK file closed\n");
-            inv_construct.debug_mode = RD_NO_DEBUG;
-            fclose(inv_construct.file);
-            break;
-        }
-        //MPL_LOGV("TYPE : %d, %d\n", type);
-        switch (type) {
-        case PLAYBACK_DBG_TYPE_GYRO:
-            r = fread(gyro, sizeof(gyro[0]), 3, inv_construct.file);
-            r = fread(&ts, sizeof(ts), 1, inv_construct.file);
-            inv_build_gyro(gyro, ts);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_GYRO, %+d, %+d, %+d, %+lld\n",
-                     gyro[0], gyro[1], gyro[2], ts);
-            break;
-        case PLAYBACK_DBG_TYPE_ACCEL:
-        {
-            long accel[3];
-            r = fread(buffer, sizeof(buffer[0]), 3, inv_construct.file);
-            r = fread(&ts, sizeof(ts), 1, inv_construct.file);
-            int32_to_long(buffer, accel, 3);
-            inv_build_accel(accel, 0, ts);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_ACCEL, %+d, %+d, %+d, %lld\n",
-                     buffer[0], buffer[1], buffer[2], ts);
-            break;
-        }
-        case PLAYBACK_DBG_TYPE_COMPASS:
-        {
-            long compass[3];
-            r = fread(buffer, sizeof(buffer[0]), 3, inv_construct.file);
-            r = fread(&ts, sizeof(ts), 1, inv_construct.file);
-            int32_to_long(buffer, compass, 3);
-            inv_build_compass(compass, 0, ts);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_COMPASS, %+d, %+d, %+d, %lld\n",
-                     buffer[0], buffer[1], buffer[2], ts);
-            break;
-        }
-        case PLAYBACK_DBG_TYPE_TEMPERATURE:
-            r = fread(buffer, sizeof(buffer[0]), 1, inv_construct.file);
-            r = fread(&ts, sizeof(ts), 1, inv_construct.file);
-            inv_build_temp(buffer[0], ts);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_TEMPERATURE, %+d, %lld\n",
-                     buffer[0], ts);
-            break;
-        case PLAYBACK_DBG_TYPE_QUAT:
-        {
-            long quat[4];
-            r = fread(buffer, sizeof(buffer[0]), 4, inv_construct.file);
-            r = fread(&ts, sizeof(ts), 1, inv_construct.file);
-            int32_to_long(buffer, quat, 4);
-            inv_build_quat(quat, INV_BIAS_APPLIED, ts);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_QUAT, %+d, %+d, %+d, %+d, %lld\n",
-                     buffer[0], buffer[1], buffer[2], buffer[3], ts);
-            break;
-        }
-        case PLAYBACK_DBG_TYPE_EXECUTE:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_EXECUTE\n");
-            inv_execute_on_data();
-            if (s_func_cb)
-                s_func_cb();
-            //done = 1;
-            break;
-
-        case PLAYBACK_DBG_TYPE_G_ORIENT:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_G_ORIENT\n");
-            r = fread(&orientation, sizeof(orientation), 1, inv_construct.file);
-            r = fread(&sensitivity, sizeof(sensitivity), 1, inv_construct.file);
-            inv_set_gyro_orientation_and_scale(orientation, sensitivity);
-            break;
-        case PLAYBACK_DBG_TYPE_A_ORIENT:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_A_ORIENT\n");
-            r = fread(&orientation, sizeof(orientation), 1, inv_construct.file);
-            r = fread(&sensitivity, sizeof(sensitivity), 1, inv_construct.file);
-            inv_set_accel_orientation_and_scale(orientation, sensitivity);
-            break;
-        case PLAYBACK_DBG_TYPE_C_ORIENT:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_C_ORIENT\n");
-            r = fread(&orientation, sizeof(orientation), 1, inv_construct.file);
-            r = fread(&sensitivity, sizeof(sensitivity), 1, inv_construct.file);
-            inv_set_compass_orientation_and_scale(orientation, sensitivity);
-            break;
-
-        case PLAYBACK_DBG_TYPE_G_SAMPLE_RATE:
-            r = fread(&sample_rate_us, sizeof(sample_rate_us), 
-                      1, inv_construct.file);
-            inv_set_gyro_sample_rate(sample_rate_us);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_G_SAMPLE_RATE => %d\n",
-                     sample_rate_us);
-            break;
-        case PLAYBACK_DBG_TYPE_A_SAMPLE_RATE:
-            r = fread(&sample_rate_us, sizeof(sample_rate_us), 
-                      1, inv_construct.file);
-            inv_set_accel_sample_rate(sample_rate_us);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_A_SAMPLE_RATE => %d\n",
-                     sample_rate_us);
-            break;
-        case PLAYBACK_DBG_TYPE_C_SAMPLE_RATE:
-            r = fread(&sample_rate_us, sizeof(sample_rate_us), 
-                      1, inv_construct.file);
-            inv_set_compass_sample_rate(sample_rate_us);
-            MPL_LOGV("PLAYBACK_DBG_TYPE_C_SAMPLE_RATE => %d\n",
-                     sample_rate_us);
-            break;
-
-        case PLAYBACK_DBG_TYPE_GYRO_OFF:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_GYRO_OFF\n");
-            inv_gyro_was_turned_off();
-            break;
-        case PLAYBACK_DBG_TYPE_ACCEL_OFF:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_ACCEL_OFF\n");
-            inv_accel_was_turned_off();
-            break;
-        case PLAYBACK_DBG_TYPE_COMPASS_OFF:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_COMPASS_OFF\n");
-            inv_compass_was_turned_off();
-            break;
-        case PLAYBACK_DBG_TYPE_QUAT_OFF:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_QUAT_OFF\n");
-            inv_quaternion_sensor_was_turned_off();
-            break;
-
-        case PLAYBACK_DBG_TYPE_Q_SAMPLE_RATE:
-            MPL_LOGV("PLAYBACK_DBG_TYPE_Q_SAMPLE_RATE\n");
-            r = fread(&sample_rate_us, sizeof(sample_rate_us), 
-                      1, inv_construct.file);
-            inv_set_quat_sample_rate(sample_rate_us);
-            break;
-        default:
-            //MPL_LOGV("PLAYBACK file closed\n");
-            fclose(inv_construct.file);
-            MPL_LOGE("%s|%s|%d error: unrecognized log type '%d', "
-                     "PLAYBACK file closed\n",
-                     __FILE__, __func__, __LINE__, type);
-            return INV_ERROR;
-        }
-    }
-    msleep(1);
-
-    inv_construct.debug_mode = RD_NO_DEBUG;
-    fclose(inv_construct.file);
-
-    return INV_SUCCESS;
-}
-
-/** Turns on/off playback and record modes
-* @param mode Turn on recording mode with RD_RECORD and turn off recording mode with
-*             RD_NO_DBG. Turn on playback mode with RD_PLAYBACK.
-*/
-void inv_set_debug_mode(rd_dbg_mode mode)
-{
-#ifdef INV_PLAYBACK_DBG
-    inv_construct.debug_mode = mode;
-#endif
-}
-
-inv_error_t inv_constructor_start(void)
-{
-    inv_error_t result;
-    unsigned char divider;
-    //int gest_enabled = inv_get_gesture_enable();
-
-    // start the software
-    result = inv_start_mpl();
-    if (result) {
-        LOG_RESULT_LOCATION(result);
-        return result;
-    }
-    
-    /*
-    if (inv_construct.dmp_version == WIN8_DMP_VERSION) {
-        int fifo_divider;
-        divider = 4; // 4 means 200Hz DMP
-        fifo_divider = 3;
-        // Set Gyro Sample Rate in MPL in micro seconds
-        inv_set_gyro_sample_rate(1000L*(divider+1)*(fifo_divider+1));
-
-        // Set Gyro Sample Rate in MPL in micro seconds
-        inv_set_quat_sample_rate(1000L*(divider+1)*(fifo_divider+1));
-
-        // Set Compass Sample Rate in MPL in micro seconds
-        inv_set_compass_sample_rate(1000L*(divider+1)*(fifo_divider+1));
-
-        // Set Accel Sample Rate in MPL in micro seconds
-        inv_set_accel_sample_rate(1000L*(divider+1)*(fifo_divider+1));
-    } else if (gest_enabled) {
-        int fifo_divider;
-        unsigned char mpl_divider;
-
-        inv_send_interrupt_word();
-        inv_send_sensor_data(INV_ALL & INV_GYRO_ACC_MASK);
-        inv_send_quaternion();
-
-        divider = fifo_dmp_cfg.sample_divider;
-        mpl_divider = fifo_dmp_cfg.mpl_divider;
-
-        // Set Gyro Sample Rate in MPL in micro seconds
-        inv_set_gyro_sample_rate(1000L*(mpl_divider+1));
-
-        // Set Gyro Sample Rate in MPL in micro seconds
-        inv_set_quat_sample_rate(1000L*(mpl_divider+1));
-
-        // Set Compass Sample Rate in MPL in micro seconds
-        inv_set_compass_sample_rate(1000L*(mpl_divider+1));
-
-        // Set Accel Sample Rate in MPL in micro seconds
-        inv_set_accel_sample_rate(1000L*(mpl_divider+1));
-    } else 
-    */
-    {
-        divider = 9;
-        // set gyro sample sate in MPL in micro seconds
-        inv_set_gyro_sample_rate(1000L*(divider+1));
-        // set compass sample rate in MPL in micro seconds
-        inv_set_compass_sample_rate(1000L*(divider+1));
-        // set accel sample rate in MPL in micro seconds
-        inv_set_accel_sample_rate(1000L*(divider+1));
-    }
-
-    // setup the scale factors and orientations and other parameters
-    result = inv_constructor_setup();
-
-    return result;
-}
-
-inv_error_t inv_constructor_default_enable()
-{
-    INV_ERROR_CHECK(inv_enable_quaternion());
-    INV_ERROR_CHECK(inv_enable_fast_nomot());
-    INV_ERROR_CHECK(inv_enable_heading_from_gyro());
-    INV_ERROR_CHECK(inv_enable_compass_bias_w_gyro());
-    INV_ERROR_CHECK(inv_enable_hal_outputs());
-    INV_ERROR_CHECK(inv_enable_vector_compass_cal());
-    INV_ERROR_CHECK(inv_enable_9x_sensor_fusion());
-    INV_ERROR_CHECK(inv_enable_gyro_tc());
-    INV_ERROR_CHECK(inv_enable_no_gyro_fusion());
-    INV_ERROR_CHECK(inv_enable_in_use_auto_calibration());
-    INV_ERROR_CHECK(inv_enable_magnetic_disturbance());
-    return INV_SUCCESS;
-}
-
-/**
- * @}
- */
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/and_constructor.h b/65xx/libsensors_iio/software/simple_apps/playback/linux/and_constructor.h
deleted file mode 100755
index 5905037..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/and_constructor.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- $License:
-    Copyright (C) 2012 InvenSense Corporation, All Rights Reserved.
- $
- */
-
-/*******************************************************************************
- *
- * $Id:$
- *
- ******************************************************************************/
-
-#ifndef INV_CONSTRUCTOR_H__
-#define INV_CONSTRUCTOR_H__
-
-#include "mltypes.h"
-#include "data_builder.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define PRECISION 10000.f
-#define RANGE_FLOAT_TO_FIXEDPOINT(range, x) {               \
-    range.mantissa = (long)x;                               \
-    range.fraction = (long)((float)(x-(long)x)*PRECISION);  \
-}
-#define RANGE_FIXEDPOINT_TO_FLOAT(range, x) {   \
-    x = (float)(range.mantissa);                \
-    x += ((float)range.fraction/PRECISION);     \
-}
-
-struct fifo_dmp_config {
-    unsigned char sample_divider;
-    unsigned char fifo_divider;
-    unsigned char mpl_divider;
-};
-
-inv_error_t inv_construct_and_push_data();
-inv_error_t inv_set_fifo_processed_callback(void (*func_cb)(void));
-inv_error_t inv_constructor_setup();
-inv_error_t inv_constructor_start();
-inv_error_t inv_constructor_init();
-inv_error_t inv_constructor_default_enable();
-void inv_set_debug_mode(rd_dbg_mode mode);
-inv_error_t inv_playback();
-void inv_set_playback_filename(char *filename, int length);
-inv_error_t wait_for_and_process_interrupt();
-
-inv_error_t inv_set_interrupt_word(unsigned long word);
-inv_error_t inv_get_interrupt_word(unsigned long *data);
-inv_error_t inv_set_gesture_enable(int word);
-int inv_get_gesture_enable(void);
-inv_error_t inv_set_fifo_rate(unsigned long fifo_rate);
-inv_error_t inv_get_dmp_sample_divider(unsigned char *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // INVENSENSE_INV_CONSTRUCTOR_H__
-
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/build/android/inv_playback-shared b/65xx/libsensors_iio/software/simple_apps/playback/linux/build/android/inv_playback-shared
deleted file mode 100755
index c252a50..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/build/android/inv_playback-shared
+++ /dev/null
Binary files differ
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/build/android/shared.mk b/65xx/libsensors_iio/software/simple_apps/playback/linux/build/android/shared.mk
deleted file mode 100755
index dc33ee3..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/build/android/shared.mk
+++ /dev/null
@@ -1,96 +0,0 @@
-EXEC = inv_playback$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../../..
-APP_DIR    = $(CURDIR)/../..
-COMMON_DIR = $(INV_ROOT)/software/simple_apps/common
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += -I$(COMMON_DIR)
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/build/filelist.mk b/65xx/libsensors_iio/software/simple_apps/playback/linux/build/filelist.mk
deleted file mode 100755
index 1d04fea..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/build/filelist.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-#### filelist.mk for mpu_iio ####
-
-# headers
-HEADERS += $(APP_DIR)/iio_utils.h
-HEADERS += $(APP_DIR)/and_constructor.h
-HEADERS += $(APP_DIR)/datalogger_outputs.h
-HEADERS += $(COMMON_DIR)/console_helper.h
-HEADERS += $(COMMON_DIR)/mlerrorcode.h
-HEADERS += $(COMMON_DIR)/testsupport.h
-
-# sources
-SOURCES := $(APP_DIR)/main.c
-SOURCES += $(APP_DIR)/and_constructor.c
-SOURCES += $(APP_DIR)/datalogger_outputs.c
-SOURCES += $(COMMON_DIR)/console_helper.c
-SOURCES += $(COMMON_DIR)/mlerrorcode.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR)
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/datalogger_outputs.c b/65xx/libsensors_iio/software/simple_apps/playback/linux/datalogger_outputs.c
deleted file mode 100755
index 7c81cbb..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/datalogger_outputs.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/**
- *   @defgroup  HAL_Outputs
- *   @brief     Motion Library - HAL Outputs
- *              Sets up common outputs for HAL
- *
- *   @{
- *       @file  datalogger_outputs.c
- *       @brief Windows 8 HAL outputs.
- */
- 
-#include <string.h>
-
-#include "datalogger_outputs.h"
-#include "ml_math_func.h"
-#include "mlmath.h"
-#include "start_manager.h"
-#include "data_builder.h"
-#include "results_holder.h"
-
-/*
-    Defines
-*/
-#define ACCEL_CONVERSION (0.000149637603759766f)
-
-/*
-    Types
-*/
-struct datalogger_output_s {
-    int quat_accuracy;
-    inv_time_t quat_timestamp;
-    long quat[4];
-    struct inv_sensor_cal_t sc;
-};
-
-/*
-    Globals and Statics
-*/
-static struct datalogger_output_s dl_out;
-
-/*
-    Functions
-*/
-
-/**
- *  Raw (uncompensated) angular velocity (LSB) in chip frame.
- *  @param[out] values      raw angular velocity in LSB.
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_gyro_raw_short(short *values, inv_time_t *timestamp)
-{
-    struct inv_single_sensor_t *pg = &dl_out.sc.gyro;
-
-    if (values)
-        memcpy(values, &pg->raw, sizeof(short) * 3);
-    if (timestamp)
-        *timestamp = pg->timestamp;
-}
-
-/**
- *  Raw (uncompensated) angular velocity (degrees per second) in body frame.
- *  @param[out] values      raw angular velocity in dps.
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_gyro_raw_body_float(float *values,
-        inv_time_t *timestamp)
-{
-    struct inv_single_sensor_t *pg = &dl_out.sc.gyro;
-    long raw[3];
-    long raw_body[3];
-
-    raw[0] = (long) pg->raw[0] * (1L << 16);
-    raw[1] = (long) pg->raw[1] * (1L << 16);
-    raw[2] = (long) pg->raw[2] * (1L << 16);
-    inv_convert_to_body_with_scale(pg->orientation, pg->sensitivity,
-                                   raw, raw_body);
-    if (values) {
-        values[0] = inv_q16_to_float(raw_body[0]);
-        values[1] = inv_q16_to_float(raw_body[1]);
-        values[2] = inv_q16_to_float(raw_body[2]);
-    }
-    if (timestamp)
-        *timestamp = pg->timestamp;
-}
-
-/**
- *  Angular velocity (degrees per second) in body frame.
- *  @param[out] values      Angular velocity in dps.
- *  @param[out] accuracy    0 (uncalibrated) to 3 (most accurate).
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_gyro_float(float *values, int8_t *accuracy,
-        inv_time_t *timestamp)
-{
-    long gyro[3];
-    inv_get_gyro_set(gyro, accuracy, timestamp);
-
-    values[0] = (float)gyro[0] / 65536.f;
-    values[1] = (float)gyro[1] / 65536.f;
-    values[2] = (float)gyro[2] / 65536.f;
-}
-
-/**
- *  Raw (uncompensated) acceleration (LSB) in chip frame.
- *  @param[out] values      raw acceleration in LSB.
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_accel_raw_short(short *values, inv_time_t *timestamp)
-{
-    struct inv_single_sensor_t *pa = &dl_out.sc.accel;
-
-    if (values)
-        memcpy(values, &pa->raw, sizeof(short) * 3);
-    if (timestamp)
-        *timestamp = pa->timestamp;
-}
-
-/**
- *  Acceleration (g's) in body frame.
- *  Microsoft defines gravity as positive acceleration pointing towards the
- *  Earth.
- *  @param[out] values      Acceleration in g's.
- *  @param[out] accuracy    0 (uncalibrated) to 3 (most accurate).
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_accel_float(float *values, int8_t *accuracy,
-        inv_time_t *timestamp)
-{
-    long accel[3];
-    inv_get_accel_set(accel, accuracy, timestamp);
-
-    values[0] = (float) -accel[0] / 65536.f;
-    values[1] = (float) -accel[1] / 65536.f;
-    values[2] = (float) -accel[2] / 65536.f;
-}
-
-/**
- *  Raw (uncompensated) compass magnetic field  (LSB) in chip frame.
- *  @param[out] values      raw magnetic field in LSB.
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_compass_raw_short(short *values, inv_time_t *timestamp)
-{
-    struct inv_single_sensor_t *pc = &dl_out.sc.compass;
-
-    if (values)
-        memcpy(values, &pc->raw, sizeof(short) * 3);
-    if (timestamp)
-        *timestamp = pc->timestamp;
-}
-
-/**
- *  Magnetic heading/field strength in body frame.
- *  TODO: No difference between mag_north and true_north yet.
- *  @param[out] mag_north   Heading relative to magnetic north in degrees.
- *  @param[out] true_north  Heading relative to true north in degrees.
- *  @param[out] values      Field strength in milligauss.
- *  @param[out] accuracy    0 (uncalibrated) to 3 (most accurate).
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_compass_float(float *mag_north, float *true_north,
-        float *values, int8_t *accuracy, inv_time_t *timestamp)
-{
-    long compass[3];
-    long q00, q12, q22, q03, t1, t2;
-
-    /* 1 uT = 10 milligauss. */
-#define COMPASS_CONVERSION  (10 / 65536.f)
-    inv_get_compass_set(compass, accuracy, timestamp);
-    if (values) {
-        values[0] = (float)compass[0]*COMPASS_CONVERSION;
-        values[1] = (float)compass[1]*COMPASS_CONVERSION;
-        values[2] = (float)compass[2]*COMPASS_CONVERSION;
-    }
-
-    /* TODO: Stolen from euler angle computation. Calculate this only once per
-     * callback.
-     */
-    q00 = inv_q29_mult(dl_out.quat[0], dl_out.quat[0]);
-    q12 = inv_q29_mult(dl_out.quat[1], dl_out.quat[2]);
-    q22 = inv_q29_mult(dl_out.quat[2], dl_out.quat[2]);
-    q03 = inv_q29_mult(dl_out.quat[0], dl_out.quat[3]);
-    t1 = q12 - q03;
-    t2 = q22 + q00 - (1L << 30);
-    if (mag_north) {
-        *mag_north = atan2f((float) t1, (float) t2) * 180.f / (float) M_PI;
-        if (*mag_north < 0)
-            *mag_north += 360;
-    }
-    if (true_north) {
-        if (!mag_north) {
-            *true_north = atan2f((float) t1, (float) t2) * 180.f / (float) M_PI;
-            if (*true_north < 0)
-                *true_north += 360;
-        } else {
-            *true_north = *mag_north;
-        }
-    }
-}
-
-#if 0
-// put it back when we handle raw temperature
-/**
- *  Raw temperature (LSB).
- *  @param[out] value       raw temperature in LSB (1 element).
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_temp_raw_short(short *value, inv_time_t *timestamp)
-{
-    struct inv_single_sensor_t *pt = &dl_out.sc.temp;
-    if (value) {
-        /* no raw temperature, temperature is only handled calibrated
-        *value = pt->raw[0];
-        */
-        *value = pt->calibrated[0];
-    }
-    if (timestamp)
-        *timestamp = pt->timestamp;
-}
-#endif
-
-/**
- *  Temperature (degree C).
- *  @param[out] values      Temperature in degrees C.
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_temperature_float(float *value, inv_time_t *timestamp)
-{
-    struct inv_single_sensor_t *pt = &dl_out.sc.temp;
-    long ltemp;
-    if (timestamp)
-        *timestamp = pt->timestamp;
-    if (value) {
-        /* no raw temperature, temperature is only handled calibrated
-        ltemp = pt->raw[0];
-        */
-        ltemp = pt->calibrated[0];
-        *value = (float) ltemp / (1L << 16);
-    }
-}
-
-/**
- *  Quaternion in body frame.
- *  @e inv_get_sensor_type_quaternion_float outputs the data in the following
- *  order: X, Y, Z, W.
- *  TODO: Windows expects a discontinuity at 180 degree rotations. Will our
- *  convention be ok?
- *  @param[out] values      Quaternion normalized to one.
- *  @param[out] accuracy    0 (uncalibrated) to 3 (most accurate).
- *  @param[out] timestamp   Time when sensor was sampled.
- */
-void inv_get_sensor_type_quat_float(float *values, int *accuracy,
-                                    inv_time_t *timestamp)
-{
-    values[0] = dl_out.quat[0] / 1073741824.f;
-    values[1] = dl_out.quat[1] / 1073741824.f;
-    values[2] = dl_out.quat[2] / 1073741824.f;
-    values[3] = dl_out.quat[3] / 1073741824.f;
-    accuracy[0] = dl_out.quat_accuracy;
-    timestamp[0] = dl_out.quat_timestamp;
-}
-
-/** Gravity vector (gee) in body frame.
-* @param[out] values Gravity vector in body frame, length 3, (gee)
-* @param[out] accuracy Accuracy of the measurment, 0 is least accurate,
-                       while 3 is most accurate.
-* @param[out] timestamp The timestamp for this sensor. Derived from the
-                        timestamp sent to inv_build_accel().
-*/
-void inv_get_sensor_type_gravity_float(float *values, int *accuracy,
-                                       inv_time_t * timestamp)
-{
-    struct inv_single_sensor_t *pa = &dl_out.sc.accel;
-
-    if (values) {
-        long lgravity[3];
-        (void)inv_get_gravity(lgravity);
-        values[0] = (float) lgravity[0] / (1L << 16);
-        values[1] = (float) lgravity[1] / (1L << 16);
-        values[2] = (float) lgravity[2] / (1L << 16);
-    }
-    if (accuracy)
-        *accuracy = pa->accuracy;
-    if (timestamp)
-        *timestamp = pa->timestamp;
-}
-
-/**
-* This corresponds to Sensor.TYPE_ROTATION_VECTOR.
-* The rotation vector represents the orientation of the device as a combination
-* of an angle and an axis, in which the device has rotated through an angle @f$\theta@f$
-* around an axis {x, y, z}. <br>
-* The three elements of the rotation vector are
-* {x*sin(@f$\theta@f$/2), y*sin(@f$\theta@f$/2), z*sin(@f$\theta@f$/2)}, such that the magnitude of the rotation
-* vector is equal to sin(@f$\theta@f$/2), and the direction of the rotation vector is
-* equal to the direction of the axis of rotation.
-*
-* The three elements of the rotation vector are equal to the last three components of a unit quaternion
-* {x*sin(@f$\theta@f$/2), y*sin(@f$\theta@f$/2), z*sin(@f$\theta@f$/2)>.
-*
-* Elements of the rotation vector are unitless. The x,y and z axis are defined in the same way as the acceleration sensor.
-* The reference coordinate system is defined as a direct orthonormal basis, where:
-
-    -X is defined as the vector product Y.Z (It is tangential to the ground at the device's current location and roughly points East).
-    -Y is tangential to the ground at the device's current location and points towards the magnetic North Pole.
-    -Z points towards the sky and is perpendicular to the ground.
-* @param[out] values
-* @param[out] accuracy Accuracy 0 to 3, 3 = most accurate
-* @param[out] timestamp Timestamp. In (ns) for Android.
-*/
-void inv_get_sensor_type_rotation_vector_float(float *values, int *accuracy,
-        inv_time_t * timestamp)
-{
-    if (accuracy)
-        *accuracy = dl_out.quat_accuracy;
-    if (timestamp)
-        *timestamp = dl_out.quat_timestamp;
-    if (values) {
-        if (dl_out.quat[0] >= 0) {
-            values[0] = dl_out.quat[1] * INV_TWO_POWER_NEG_30;
-            values[1] = dl_out.quat[2] * INV_TWO_POWER_NEG_30;
-            values[2] = dl_out.quat[3] * INV_TWO_POWER_NEG_30;
-        } else {
-            values[0] = -dl_out.quat[1] * INV_TWO_POWER_NEG_30;
-            values[1] = -dl_out.quat[2] * INV_TWO_POWER_NEG_30;
-            values[2] = -dl_out.quat[3] * INV_TWO_POWER_NEG_30;
-        }
-    }
-}
-
-/** Main callback to generate HAL outputs. Typically not called by library users. */
-inv_error_t inv_generate_datalogger_outputs(struct inv_sensor_cal_t *sensor_cal)
-{
-    memcpy(&dl_out.sc, sensor_cal, sizeof(struct inv_sensor_cal_t));
-    inv_get_quaternion_set(dl_out.quat, &dl_out.quat_accuracy,
-                           &dl_out.quat_timestamp);
-    return INV_SUCCESS;
-}
-
-/** Turns off generation of HAL outputs. */
-inv_error_t inv_stop_datalogger_outputs(void)
-{
-    return inv_unregister_data_cb(inv_generate_datalogger_outputs);
-}
-
-/** Turns on generation of HAL outputs. This should be called after inv_stop_dl_outputs()
-* to turn generation of HAL outputs back on. It is automatically called by inv_enable_dl_outputs().*/
-inv_error_t inv_start_datalogger_outputs(void)
-{
-    return inv_register_data_cb(inv_generate_datalogger_outputs,
-        INV_PRIORITY_HAL_OUTPUTS, INV_GYRO_NEW | INV_ACCEL_NEW | INV_MAG_NEW);
-}
-
-/** Initializes hal outputs class. This is called automatically by the
-* enable function. It may be called any time the feature is enabled, but
-* is typically not needed to be called by outside callers.
-*/
-inv_error_t inv_init_datalogger_outputs(void)
-{
-    memset(&dl_out, 0, sizeof(dl_out));
-    return INV_SUCCESS;
-}
-
-/** Turns on creation and storage of HAL type results.
-*/
-inv_error_t inv_enable_datalogger_outputs(void)
-{
-    inv_error_t result;
-    result = inv_init_datalogger_outputs();
-    if (result)
-        return result;
-    return inv_register_mpl_start_notification(inv_start_datalogger_outputs);
-}
-
-/** Turns off creation and storage of HAL type results.
-*/
-inv_error_t inv_disable_datalogger_outputs(void)
-{
-    inv_stop_datalogger_outputs();
-    return inv_unregister_mpl_start_notification(inv_start_datalogger_outputs);
-}
-
-/**
- * @}
- */
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/datalogger_outputs.h b/65xx/libsensors_iio/software/simple_apps/playback/linux/datalogger_outputs.h
deleted file mode 100755
index 0e50faf..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/datalogger_outputs.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- *   @defgroup  HAL_Outputs
- *   @brief     Motion Library - HAL Outputs
- *              Sets up common outputs for HAL
- *
- *   @{
- *       @file  datalogger_outputs.h
- *       @brief Windows 8 HAL outputs.
- */
-
-#ifndef _DATALOGGER_OUTPUTS_H_
-#define _DATALOGGER_OUTPUTS_H_
-
-#include "mltypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* calibrated data */
-void inv_get_sensor_type_temperature_float(float *value,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_gyro_float(float *values, int8_t *accuracy,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_accel_float(float *values, int8_t *accuracy,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_compass_float(float *mag_north, float *true_north,
-        float *values, int8_t *accuracy, inv_time_t *timestamp);
-void inv_get_sensor_type_quat_float(float *values, int *accuracy,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_gravity_float(float *values, int *accuracy,
-        inv_time_t * timestamp);
-void inv_get_sensor_type_rotation_vector_float(float *values, int *accuracy,
-        inv_time_t * timestamp);
-
-/* uncalibrated data */
-void inv_get_sensor_type_gyro_raw_short(short *values,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_gyro_raw_body_float(float *values,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_accel_raw_short(short *values,
-        inv_time_t *timestamp);
-void inv_get_sensor_type_compass_raw_short(short *values,
-        inv_time_t *timestamp);
-
-/* enabler/disabler APIs */
-inv_error_t inv_enable_datalogger_outputs(void);
-inv_error_t inv_disable_datalogger_outputs(void);
-inv_error_t inv_init_datalogger_outputs(void);
-inv_error_t inv_start_datalogger_outputs(void);
-inv_error_t inv_stop_datalogger_outputs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* #ifndef _DATALOGGER_OUTPUTS_H_ */
-
-/**
- *  @}
- */
diff --git a/65xx/libsensors_iio/software/simple_apps/playback/linux/main.c b/65xx/libsensors_iio/software/simple_apps/playback/linux/main.c
deleted file mode 100755
index 74272b0..0000000
--- a/65xx/libsensors_iio/software/simple_apps/playback/linux/main.c
+++ /dev/null
@@ -1,897 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 InvenSense Corporation, All Rights Reserved.
- ******************************************************************************/
-
-/*******************************************************************************
- *
- * $Id: main.c 6146 2011-10-04 18:33:51Z jcalizo $
- *
- ******************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "invensense.h"
-#include "invensense_adv.h"
-#include "and_constructor.h"
-#include "ml_math_func.h"
-#include "datalogger_outputs.h"
-
-#include "console_helper.h"
-
-#include "mlos.h"
-#include "mlsl.h"
-
-#include "testsupport.h"
-
-#include "log.h"
-#undef MPL_LOG_TAG
-#define MPL_LOG_TAG "MPL-playback"
-
-/*
-    Defines & Macros
-*/
-#define UNPACK_3ELM_ARRAY(a)    (a)[0], (a)[1], (a)[2]
-#define UNPACK_4ELM_ARRAY(a)    UNPACK_3ELM_ARRAY(a), (a)[3]
-#define COMPONENT_NAME_MAX_LEN  (30)
-#define DEF_NAME(x)             (#x)
-
-#define PRINT_ON_CONSOLE(...)                   \
-    if (print_on_screen)                        \
-        printf(__VA_ARGS__)
-#define PRINT_ON_FILE(...)                      \
-    if(stream_file)                             \
-        fprintf(stream_file, __VA_ARGS__)
-
-#define PRINT(...)                              \
-    PRINT_ON_CONSOLE(__VA_ARGS__);              \
-    PRINT_ON_FILE(__VA_ARGS__)
-#define PRINT_FLOAT(width, prec, data)          \
-    PRINT_ON_CONSOLE("%+*.*f",                  \
-                     width, prec, data);        \
-    PRINT_ON_FILE("%+f", data)
-#define PRINT_INT(width, data)                  \
-    PRINT_ON_CONSOLE("%+*d", width, data);      \
-    PRINT_ON_FILE("%+d", data);
-#define PRINT_LONG(width, data)                 \
-    PRINT_ON_CONSOLE("%+*ld", width, data);     \
-    PRINT_ON_FILE("%+ld", data);
-
-#define PRINT_3ELM_ARRAY_FLOAT(w, p, data)      \
-    PRINT_FLOAT(w, p, data[0]);                 \
-    PRINT(", ");                                \
-    PRINT_FLOAT(w, p, data[1]);                 \
-    PRINT(", ");                                \
-    PRINT_FLOAT(w, p, data[2]);                 \
-    PRINT(", ");
-#define PRINT_4ELM_ARRAY_FLOAT(w, p, data)      \
-    PRINT_3ELM_ARRAY_FLOAT(w, p, data);         \
-    PRINT_FLOAT(w, p, data[3]);                 \
-    PRINT(", ");
-
-#define PRINT_3ELM_ARRAY_LONG(w, data)          \
-    PRINT_LONG(w, data[0]);                     \
-    PRINT(", ");                                \
-    PRINT_LONG(w, data[1]);                     \
-    PRINT(", ");                                \
-    PRINT_LONG(w, data[2]);                     \
-    PRINT(", ");
-#define PRINT_4ELM_ARRAY_LONG(w, data)          \
-    PRINT_3ELM_ARRAY_LONG(w, data);             \
-    PRINT_LONG(w, data[3]);                     \
-    PRINT(", ");
-
-#define PRINT_3ELM_ARRAY_INT(w, data)           \
-    PRINT_INT(w, data[0]);                      \
-    PRINT(", ");                                \
-    PRINT_INT(w, data[1]);                      \
-    PRINT(", ");                                \
-    PRINT_INT(w, data[2]);                      \
-    PRINT(", ");
-#define PRINT_4ELM_ARRAY_INT(w, data)           \
-    PRINT_3ELM_ARRAY_LONG(w, data);             \
-    PRINT_INT(w, data[3]);                      \
-    PRINT(", ");
-
-
-#define CASE_NAME(CODE)                         \
-    case CODE:                                  \
-        return #CODE
-
-#define CALL_CHECK_N_PRINT(f) {                                     \
-    MPL_LOGI("\n");                                                 \
-    MPL_LOGI("################################################\n"); \
-    MPL_LOGI("# %s\n", #f);                                         \
-    MPL_LOGI("################################################\n"); \
-    MPL_LOGI("\n");                                                 \
-    CALL_N_CHECK(f);                                                \
-}
-
-/*
-    Types
-*/
-/* A badly named enum type to track state of user input for tracker menu. */
-typedef enum {
-    STATE_SELECT_A_TRACKER,
-    STATE_SET_TRACKER_STATE,    /* I'm running out of ideas here. */
-    STATE_COUNT
-} user_state_t;
-
-/* bias trackers. */
-typedef enum {
-    BIAS_FROM_NO_MOTION,
-    FAST_NO_MOTION,
-    BIAS_FROM_GRAVITY,
-    BIAS_FROM_TEMPERATURE,
-    BIAS_FROM_LPF,
-    DEAD_ZONE,
-    NUM_TRACKERS
-} bias_t;
-
-enum comp_ids {
-    TIME = 0,
-    CALIBRATED_GYROSCOPE,
-    CALIBRATED_ACCELEROMETER,
-    CALIBRATED_COMPASS,
-    RAW_GYROSCOPE,
-    RAW_GYROSCOPE_BODY,
-    RAW_ACCELEROMETER,
-    RAW_COMPASS,
-    QUATERNION_9_AXIS,
-    QUATERNION_6_AXIS,
-    GRAVITY,
-    HEADING,
-    COMPASS_BIAS_ERROR,
-    COMPASS_STATE,
-    TEMPERATURE,
-    TEMP_COMP_SLOPE,
-    LINEAR_ACCELERATION,
-    ROTATION_VECTOR,
-    MOTION_STATE,
-
-    NUM_OF_IDS
-};
-
-struct component_list {
-    char name[COMPONENT_NAME_MAX_LEN];
-    int order;
-};
-
-/*
-    Globals
-*/
-static int print_on_screen = true;
-static int one_time_print = true;
-static FILE *stream_file = NULL;
-static unsigned long sample_count = 0;
-static int enabled_9x = true;
-
-signed char g_gyro_orientation[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1};
-signed char g_accel_orientation[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1};
-signed char g_compass_orientation[9] = {-1, 0, 0, 0, 1, 0, 0, 0, -1};
-
-#ifdef WIN32
-static double pc_freq;
-static __int64 counter_start;
-#else
-static inv_time_t counter_start;
-#endif
-
-struct component_list components[NUM_OF_IDS];
-
-/*
-    Prototypes
-*/
-void print_tracker_states(bias_t tracker);
-
-/*
-    Callbacks
-*/
-/*--- motion / no motion callback function ---*/
-void check_motion_event(void)
-{
-    long msg = inv_get_message_level_0(1);
-    if (msg) {
-        if (msg & INV_MSG_MOTION_EVENT) {
-            MPL_LOGI("################################################\n");
-            MPL_LOGI("## Motion\n");
-            MPL_LOGI("################################################\n");
-        }
-        if (msg & INV_MSG_NO_MOTION_EVENT) {
-            MPL_LOGI("################################################\n");
-            MPL_LOGI("## No Motion\n");
-            MPL_LOGI("################################################\n");
-        }
-    }
-}
-
-/* number to string coversion */
-char *compass_state_name(char* out, int state)
-{
-    switch(state) {
-        CASE_NAME(SF_NORMAL);
-        CASE_NAME(SF_DISTURBANCE);
-        CASE_NAME(SF_FAST_SETTLE);
-        CASE_NAME(SF_SLOW_SETTLE);
-        CASE_NAME(SF_STARTUP_SETTLE);
-        CASE_NAME(SF_UNCALIBRATED);
-    }
-
-    #define UNKNOWN_ERROR_CODE 1234
-    return ERROR_NAME(UNKNOWN_ERROR_CODE);
-}
-
-/* component ID to name convertion */
-char *component_name(char *out, int comp_id)
-{
-    switch (comp_id) {
-    CASE_NAME(TIME);
-    CASE_NAME(CALIBRATED_GYROSCOPE);
-    CASE_NAME(CALIBRATED_ACCELEROMETER);
-    CASE_NAME(CALIBRATED_COMPASS);
-    CASE_NAME(RAW_GYROSCOPE);
-    CASE_NAME(RAW_GYROSCOPE_BODY);
-    CASE_NAME(RAW_ACCELEROMETER);
-    CASE_NAME(RAW_COMPASS);
-    CASE_NAME(QUATERNION_9_AXIS);
-    CASE_NAME(QUATERNION_6_AXIS);
-    CASE_NAME(GRAVITY);
-    CASE_NAME(HEADING);
-    CASE_NAME(COMPASS_BIAS_ERROR);
-    CASE_NAME(COMPASS_STATE);
-    CASE_NAME(TEMPERATURE);
-    CASE_NAME(TEMP_COMP_SLOPE);
-    CASE_NAME(LINEAR_ACCELERATION);
-    CASE_NAME(ROTATION_VECTOR);
-    CASE_NAME(MOTION_STATE);
-    }
-
-    return "UNKNOWN";
-}
-
-
-#ifdef WIN32
-
-/*
-  Karthik Implementation.
-  http://stackoverflow.com/questions/1739259/how-to-use-queryperformancecounter
-*/
-double get_counter(__int64 *counter_start, double *pc_freq)
-{
-    LARGE_INTEGER li;
-    double x;
-    QueryPerformanceCounter(&li);
-    x = (double) (li.QuadPart - (*counter_start));
-    x = x / (*pc_freq);
-    return(x);
-}
-
-void start_counter(double *pc_freq, __int64 *counter_start)
-{
-    LARGE_INTEGER li;
-    double x;
-    if(!QueryPerformanceFrequency(&li))
-        printf("QueryPerformanceFrequency failed!\n");
-    x = (double)(li.QuadPart);
-    *pc_freq = x / 1000.0;
-    QueryPerformanceCounter(&li);
-    *counter_start = li.QuadPart;
-}
-
-#else
-
-unsigned long get_counter(void)
-{
-    return (inv_get_tick_count() - counter_start);
-}
-
-void start_counter(void)
-{
-    counter_start = inv_get_tick_count();
-}
-
-#endif
-
-/* processed data callback */
-void fifo_callback(void)
-{
-    int print_on_screen_saved = print_on_screen;
-    int i;
-
-    /* one_time_print causes the data labels to be printed on screen */
-    if (one_time_print) {
-        print_on_screen = true;
-    }
-    for (i = 0; i < NUM_OF_IDS; i++) {
-        if (components[TIME].order == i) {
-            if (one_time_print) {
-                PRINT("TIME,");
-            } else {
-#ifdef WIN32
-                double time_ms;
-                static int first_value = 0;
-                if(first_value == 0){
-                    first_value = 1;
-                    start_counter(&pc_freq, &counter_start);
-                    time_ms = 0;
-                } else {
-                    time_ms = get_counter(&counter_start, &pc_freq);
-                }
-                PRINT("%6.0f,   ", time_ms);
-#else
-                unsigned long time_ms;
-                static int first_value = 0;
-                if(first_value == 0){
-                    first_value = 1;
-                    start_counter();
-                    time_ms = 0;
-                } else {
-                    time_ms = get_counter();
-                }
-                PRINT("%6ld,   ", time_ms);
-#endif
-            }
-        } else if (components[CALIBRATED_GYROSCOPE].order == i) {
-            if (one_time_print) {
-                PRINT("CALIBRATED_GYROSCOPE_X,"
-                      "CALIBRATED_GYROSCOPE_Y,"
-                      "CALIBRATED_GYROSCOPE_Z,");
-                /*
-                PRINT("CALIBRATED_GYROSCOPE_X_AVERAGE,"
-                      "CALIBRATED_GYROSCOPE_Y_AVERAGE,"
-                      "CALIBRATED_GYROSCOPE_Z_AVERAGE,");
-                */
-            } else {
-                /*
-                #define window 20
-                static int cnt = 0;
-                static int valid = 0;
-                static float gyro_keep[window][3];
-                int kk, jj;
-                float avg[3];
-                */
-                float gyro[3];
-                inv_get_gyro_float(gyro);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, gyro);
-                PRINT("  ");
-                /*
-                memcpy(gyro_keep[cnt], gyro, sizeof(float) * 3);
-                cnt= (cnt + 1) % window;
-                if (cnt == window - 1)
-                    valid = 1;
-                if (valid) {
-                    memset(avg, 0, sizeof(float) * 3);
-                    jj = (cnt + 1) % window;
-                    for (kk = 0; kk < window; kk++) {
-                        avg[0] += gyro_keep[jj][0] / window;
-                        avg[1] += gyro_keep[jj][1] / window;
-                        avg[2] += gyro_keep[jj][2] / window;
-                        jj = (jj + 1) % window;
-                    }
-                    PRINT("%+f, %+f, %+f,   ",
-                          UNPACK_3ELM_ARRAY(avg));
-                    PRINT_3ELM_ARRAY_FLOAT(10, 5, avg);
-                    PRINT("  ");
-                }
-                */
-            }
-        } else if (components[CALIBRATED_ACCELEROMETER].order == i) {
-            if (one_time_print) {
-                PRINT("CALIBRATED_ACCELEROMETER_X,"
-                      "CALIBRATED_ACCELEROMETER_Y,"
-                      "CALIBRATED_ACCELEROMETER_Z,");
-            } else {
-                float accel[3];
-                inv_get_accel_float(accel);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, accel);
-                PRINT("  ");
-            }
-        } else if (components[CALIBRATED_COMPASS].order == i) {
-            if (one_time_print) {
-                PRINT("CALIBRATED_COMPASS_X,"
-                      "CALIBRATED_COMPASS_Y,"
-                      "CALIBRATED_COMPASS_Z,");
-            } else {
-                long lcompass[3];
-                float compass[3];
-                inv_get_compass_set(lcompass, 0, 0);
-                compass[0] = inv_q16_to_float(lcompass[0]);
-                compass[1] = inv_q16_to_float(lcompass[1]);
-                compass[2] = inv_q16_to_float(lcompass[2]);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, compass);
-                PRINT("  ");
-            }
-        } else if (components[RAW_GYROSCOPE].order == i) {
-            if (one_time_print) {
-                PRINT("RAW_GYROSCOPE_X,"
-                      "RAW_GYROSCOPE_Y,"
-                      "RAW_GYROSCOPE_Z,");
-            } else {
-                short raw[3];
-                inv_get_sensor_type_gyro_raw_short(raw, NULL);
-                PRINT_3ELM_ARRAY_INT(6, raw);
-                PRINT("  ");
-            }
-        } else if (components[RAW_GYROSCOPE_BODY].order == i) {
-            if (one_time_print) {
-                PRINT("RAW_GYROSCOPE_BODY_X,"
-                      "RAW_GYROSCOPE_BODY_Y,"
-                      "RAW_GYROSCOPE_BODY_Z,");
-            } else {
-                float raw_body[3];
-                inv_get_sensor_type_gyro_raw_body_float(raw_body, NULL);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, raw_body);
-                PRINT("  ");
-            }
-        } else if (components[RAW_ACCELEROMETER].order == i) {
-            if (one_time_print) {
-                PRINT("RAW_ACCELEROMETER_X,"
-                      "RAW_ACCELEROMETER_Y,"
-                      "RAW_ACCELEROMETER_Z,");
-            } else {
-                short raw[3];
-                inv_get_sensor_type_accel_raw_short(raw, NULL);
-                PRINT_3ELM_ARRAY_INT(6, raw);
-                PRINT("  ");
-            }
-        } else if (components[RAW_COMPASS].order == i) {
-            if (one_time_print) {
-                PRINT("RAW_COMPASS_X,"
-                      "RAW_COMPASS_Y,"
-                      "RAW_COMPASS_Z,");
-            } else {
-                short raw[3];
-                inv_get_sensor_type_compass_raw_short(raw, NULL);
-                PRINT_3ELM_ARRAY_INT(6, raw);
-                PRINT("  ");
-            }
-        } else if (components[QUATERNION_9_AXIS].order == i) {
-            if (one_time_print) {
-                PRINT("QUATERNION_9_AXIS_X,"
-                      "QUATERNION_9_AXIS_Y,"
-                      "QUATERNION_9_AXIS_Z,"
-                      "QUATERNION_9_AXIS_w,");
-            } else {
-                float quat[4];
-                inv_get_quaternion_float(quat);
-                PRINT_4ELM_ARRAY_FLOAT(10, 5, quat);
-                PRINT("  ");
-            }
-        } else if (components[QUATERNION_6_AXIS].order == i) {
-            if (one_time_print) {
-                PRINT("QUATERNION_6_AXIS_X,"
-                      "QUATERNION_6_AXIS_Y,"
-                      "QUATERNION_6_AXIS_Z,"
-                      "QUATERNION_6_AXIS_w,");
-            } else {
-                float quat[4];
-                long temp[4];
-                int j;
-                inv_get_6axis_quaternion(temp);
-                for (j = 0; j < 4; j++)
-                    quat[j] = (float)temp[j] / (1 << 30);
-                PRINT_4ELM_ARRAY_FLOAT(10, 5, quat);
-                PRINT("  ");
-            }
-        } else if (components[HEADING].order == i) {
-            if (one_time_print) {
-                PRINT("HEADING,");
-            } else {
-                float heading[1];
-                inv_get_sensor_type_compass_float(heading, NULL, NULL,
-                                                  NULL, NULL);
-                PRINT_FLOAT(10, 5, heading[0]);
-                PRINT(",   ");
-            }
-        } else if (components[GRAVITY].order == i) {
-            if (one_time_print) {
-                PRINT("GRAVITY_X,"
-                      "GRAVITY_Y,"
-                      "GRAVITY_Z,");
-            } else {
-                float gravity[3];
-                inv_get_sensor_type_gravity_float(gravity, NULL, NULL);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, gravity);
-                PRINT("  ");
-            }
-        } else if (components[COMPASS_STATE].order == i) {
-            if (one_time_print) {
-                PRINT("COMPASS_STATE,"
-                      "GOT_COARSE_HEADING,");
-            } else {
-                PRINT_INT(1, inv_get_compass_state());
-                PRINT(", ");
-                PRINT_INT(1, inv_got_compass_bias());
-                PRINT(", ");
-            }
-        } else if (components[COMPASS_BIAS_ERROR].order == i) {
-            if (one_time_print) {
-                PRINT("COMPASS_BIAS_ERROR_X,"
-                      "COMPASS_BIAS_ERROR_Y,"
-                      "COMPASS_BIAS_ERROR_Z,");
-            } else {
-                long mbe[3];
-                inv_get_compass_bias_error(mbe);
-                PRINT_3ELM_ARRAY_LONG(6, mbe);
-            }
-        } else if (components[TEMPERATURE].order == i) {
-            if (one_time_print) {
-                PRINT("TEMPERATURE,");
-            } else {
-                float temp;
-                inv_get_sensor_type_temperature_float(&temp, NULL);
-                PRINT_FLOAT(8, 4, temp);
-                PRINT(",   ");
-            }
-        } else if (components[TEMP_COMP_SLOPE].order == i) {
-            if (one_time_print) {
-                PRINT("TEMP_COMP_SLOPE_X,"
-                      "TEMP_COMP_SLOPE_Y,"
-                      "TEMP_COMP_SLOPE_Z,");
-            } else {
-                long temp_slope[3];
-                float temp_slope_f[3];
-                (void)inv_get_gyro_ts(temp_slope);
-                temp_slope_f[0] = inv_q16_to_float(temp_slope[0]);
-                temp_slope_f[1] = inv_q16_to_float(temp_slope[1]);
-                temp_slope_f[2] = inv_q16_to_float(temp_slope[2]);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, temp_slope_f);
-                PRINT("  ");
-            }
-        } else if (components[LINEAR_ACCELERATION].order == i) {
-            if (one_time_print) {
-                PRINT("LINEAR_ACCELERATION_X,"
-                      "LINEAR_ACCELERATION_Y,"
-                      "LINEAR_ACCELERATION_Z,");
-            } else {
-                float lin_acc[3];
-                inv_get_linear_accel_float(lin_acc);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, lin_acc);
-                PRINT("  ");
-            }
-        } else if (components[ROTATION_VECTOR].order == i) {
-            if (one_time_print) {
-                PRINT("ROTATION_VECTOR_X,"
-                      "ROTATION_VECTOR_Y,"
-                      "ROTATION_VECTOR_Z,");
-            } else {
-                float rot_vec[3];
-                inv_get_sensor_type_rotation_vector_float(rot_vec, NULL, NULL);
-                PRINT_3ELM_ARRAY_FLOAT(10, 5, rot_vec);
-                PRINT("  ");
-            }
-        } else if (components[MOTION_STATE].order == i) {
-            if (one_time_print) {
-                PRINT("MOTION_STATE,");
-            } else {
-                unsigned int counter;
-                PRINT_INT(1, inv_get_motion_state(&counter));
-                PRINT(",   ");
-            }
-        } else {
-            ;
-        }
-    }
-    PRINT("\n");
-
-    if (one_time_print) {
-        one_time_print = false;
-        print_on_screen = print_on_screen_saved;
-    }
-    sample_count++;
-}
-
-void print_help(char *exename)
-{
-    printf(
-        "\n"
-        "Usage:\n"
-        "\t%s [options]\n"
-        "\n"
-        "Options:\n"
-        "        [-h|--help]          = shows this help\n"
-        "        [-o|--output PREFIX] = to dump data on csv file whose file\n"
-        "                               prefix is specified by the parameter,\n"
-        "                               e.g. '<PREFIX>-<timestamp>.csv'\n"
-        "        [-i|--input NAME]    = to read the provided playback.bin file\n"
-        "        [-c|--comp C]        = enable the following components in the\n"
-        "                               given order:\n"
-        "                                 t = TIME\n"
-        "                                 T = TEMPERATURE,\n"
-        "                                 s = TEMP_COMP_SLOPE,\n"
-        "                                 G = CALIBRATED_GYROSCOPE,\n"
-        "                                 A = CALIBRATED_ACCELEROMETER,\n"
-        "                                 C = CALIBRATED_COMPASS,\n"
-        "                                 g = RAW_GYROSCOPE,\n"
-        "                                 b = RAW_GYROSCOPE_BODY,\n"
-        "                                 a = RAW_ACCELEROMETER,\n"
-        "                                 c = RAW_COMPASS,\n"
-        "                                 Q = QUATERNION_9_AXIS,\n"
-        "                                 6 = QUATERNION_6_AXIS,\n"
-        "                                 V = GRAVITY,\n"
-        "                                 L = LINEAR_ACCELERATION,\n"
-        "                                 R = ROTATION_VECTOR,\n"
-        "                                 H = HEADING,\n"
-        "                                 E = COMPASS_BIAS_ERROR,\n"
-        "                                 S = COMPASS_STATE,\n"
-        "                                 M = MOTION_STATE.\n"
-        "\n"
-        "Note on compass state values:\n"
-        "    SF_NORMAL         = 0\n"
-        "    SF_DISTURBANCE    = 1\n"
-        "    SF_FAST_SETTLE    = 2\n"
-        "    SF_SLOW_SETTLE    = 3\n"
-        "    SF_STARTUP_SETTLE = 4\n"
-        "    SF_UNCALIBRATED   = 5\n"
-        "\n",
-        exename);
-}
-
-char *output_filename_datetimestamp(char *out)
-{
-    time_t t;
-    struct tm *now;
-    t = time(NULL);
-    now = localtime(&t);
-
-    sprintf(out,
-            "%02d%02d%02d_%02d%02d%02d.csv",
-            now->tm_year - 100, now->tm_mon + 1, now->tm_mday,
-            now->tm_hour, now->tm_min, now->tm_sec);
-    return out;
-}
-
-int components_parser(char pname[], char requested[], int length)
-{
-    int j;
-
-    /* forcibly disable all */
-    for (j = 0; j < NUM_OF_IDS; j++)
-        components[j].order = -1;
-
-    /* parse each character one a time */
-    for (j = 0; j < length; j++) {
-        switch (requested[j]) {
-        case 'T':
-            components[TEMPERATURE].order = j;
-            break;
-        case 'G':
-            components[CALIBRATED_GYROSCOPE].order = j;
-            break;
-        case 'A':
-            components[CALIBRATED_ACCELEROMETER].order = j;
-            break;
-        case 'g':
-            components[RAW_GYROSCOPE].order = j;
-            break;
-        case 'b':
-            components[RAW_GYROSCOPE_BODY].order = j;
-            break;
-        case 'a':
-            components[RAW_ACCELEROMETER].order = j;
-            break;
-        case 'Q':
-            components[QUATERNION_9_AXIS].order = j;
-            break;
-        case '6':
-            components[QUATERNION_6_AXIS].order = j;
-            break;
-        case 'V':
-            components[GRAVITY].order = j;
-            break;
-        case 'L':
-            components[LINEAR_ACCELERATION].order = j;
-            break;
-        case 'R':
-            components[ROTATION_VECTOR].order = j;
-            break;
-
-        /* these components don't need to be enabled */
-        case 't':
-            components[TIME].order = j;
-            break;
-        case 'C':
-            components[CALIBRATED_COMPASS].order = j;
-            break;
-        case 'c':
-            components[RAW_COMPASS].order = j;
-            break;
-        case 'H':
-            components[HEADING].order = j;
-            break;
-        case 'E':
-            components[COMPASS_BIAS_ERROR].order = j;
-            break;
-        case 'S':
-            components[COMPASS_STATE].order = j;
-            break;
-        case 'M':
-            components[MOTION_STATE].order = j;
-            break;
-
-        default:
-            MPL_LOGI("Error : unrecognized component '%c'\n",
-                     requested[j]);
-            print_help(pname);
-            return 1;
-            break;
-        }
-    }
-    return 0;
-}
-
-int main(int argc, char *argv[])
-{
-#ifndef INV_PLAYBACK_DBG
-    MPL_LOGI("Error : this application was not compiled with the "
-             "INV_PLAYBACK_DBG define and cannot work.\n");
-    MPL_LOGI("        Recompile the libmllite libraries with #define "
-             "INV_PLAYBACK_DBG uncommented\n");
-    MPL_LOGI("        in 'software/core/mllite/data_builder.h'.\n");
-    return INV_ERROR;
-#endif
-
-    inv_time_t start_time;
-    double total_time;
-    char req_component_list[50] = "tQGACH";
-    char input_filename[101] = "/data/playback.bin";
-    int i = 0;
-    char *ver_str;
-    /* flags */
-    int use_nm_detection = true;
-
-    /* make sure there is no buffering of the print messages */
-    setvbuf(stdout, NULL, _IONBF, 0);
-
-    /* forcibly disable all and populate the names */
-    for (i = 0; i < NUM_OF_IDS; i++) {
-        char str_tmp[COMPONENT_NAME_MAX_LEN];
-        strcpy(components[i].name, component_name(str_tmp, i));
-        components[i].order = -1;
-    }
-
-    CALL_N_CHECK( inv_get_version(&ver_str) );
-    MPL_LOGI("\n");
-    MPL_LOGI("%s\n", ver_str);
-    MPL_LOGI("\n");
-
-    for (i = 1; i < argc; i++) {
-        if(strcmp(argv[i], "-h") == 0
-            || strcmp(argv[i], "--help") == 0) {
-            print_help(argv[0]);
-            return INV_SUCCESS;
-
-        } else if(strcmp(argv[i], "-o") == 0
-            || strcmp(argv[i], "--output") == 0) {
-            char output_filename[200];
-            char end[50] = "";
-            i++;
-
-            snprintf(output_filename, sizeof(output_filename), "%s-%s",
-                    argv[i], output_filename_datetimestamp(end));
-            stream_file = fopen(output_filename, "w+");
-            if (!stream_file) {
-                printf("Unable to open file '%s'\n", output_filename);
-                return INV_ERROR;
-            }
-            MPL_LOGI("-- Output on file '%s'\n", output_filename);
-
-        } else if(strcmp(argv[i], "-i") == 0
-            || strcmp(argv[i], "--input") == 0) {
-            i++;
-            strncpy(input_filename, argv[i], sizeof(input_filename));
-            MPL_LOGI("-- Playing back file '%s'\n", input_filename);
-
-        } else if(strcmp(argv[i], "-n") == 0
-            || strcmp(argv[i], "--nm") == 0) {
-            i++;
-            if (!strcmp(argv[i], "none")) {
-                use_nm_detection = 0;
-            } else if (!strcmp(argv[i], "regular")) {
-                use_nm_detection = 1;
-            } else if (!strcmp(argv[i], "fast")) {
-                use_nm_detection = 2;
-            } else {
-                MPL_LOGI("Error : unrecognized no-motion type '%s'\n",
-                         argv[i]);
-                return INV_ERROR_INVALID_PARAMETER;
-            }
-            MPL_LOGI("-- No motion algorithm : '%s', %d\n",
-                     argv[i], use_nm_detection);
-
-        } else if(strcmp(argv[i], "-9") == 0
-            || strcmp(argv[i], "--nine") == 0) {
-            MPL_LOGI("-- using 9 axis sensor fusion by default\n");
-            enabled_9x = true;
-
-        } else if(strcmp(argv[i], "-c") == 0
-            || strcmp(argv[i], "--comp") == 0) {
-            i++;
-            strcpy(req_component_list, argv[i]);
-
-        } else {
-            MPL_LOGI("Unrecognized command-line parameter '%s'\n", argv[i]);
-            return INV_ERROR_INVALID_PARAMETER;
-        }
-    }
-
-    CALL_CHECK_N_RETURN_ERROR(
-        components_parser(
-            argv[0],
-            req_component_list, strlen(req_component_list)));
-
-    /* set up callbacks */
-    CALL_N_CHECK(inv_set_fifo_processed_callback(fifo_callback));
-
-    /* algorithm init */
-    CALL_N_CHECK(inv_enable_quaternion());
-    if (use_nm_detection == 1) {
-        CALL_N_CHECK(inv_enable_motion_no_motion());
-    } else if (use_nm_detection == 2) {
-        CALL_N_CHECK(inv_enable_fast_nomot());
-    }
-    CALL_N_CHECK(inv_enable_gyro_tc());
-    CALL_N_CHECK(inv_enable_in_use_auto_calibration());
-    CALL_N_CHECK(inv_enable_no_gyro_fusion());
-    CALL_N_CHECK(inv_enable_results_holder());
-    if (enabled_9x) {
-        CALL_N_CHECK(inv_enable_heading_from_gyro());
-        CALL_N_CHECK(inv_enable_compass_bias_w_gyro());
-        CALL_N_CHECK(inv_enable_vector_compass_cal());
-        CALL_N_CHECK(inv_enable_9x_sensor_fusion());
-    }
-
-    CALL_CHECK_N_RETURN_ERROR(inv_enable_datalogger_outputs());
-    CALL_CHECK_N_RETURN_ERROR(inv_constructor_start());
-
-    /* load persistent data */
-    {
-        FILE *fc = fopen("invcal.bin", "rb");
-        if (fc != NULL) {
-            size_t sz, rd;
-            inv_error_t result = 0;
-            // Read amount of memory we need to hold data
-            rd = fread(&sz, sizeof(size_t), 1, fc);
-            if (rd == sizeof(size_t)) {
-                unsigned char *cal_data = (unsigned char *)malloc(sizeof(sz));
-                unsigned char *cal_ptr;
-                cal_ptr = cal_data;
-                *(size_t *)cal_ptr = sz;
-                cal_ptr += sizeof(sz);
-                /* read rest of the file */
-                fread(cal_ptr, sz - sizeof(size_t), 1, fc);
-                //result = inv_load_mpl_states(cal_data, sz);
-                if (result) {
-                    MPL_LOGE("Cal Load error\n");
-                }
-                MPL_LOGI("inv_load_mpl_states()\n");
-                free(cal_data);
-            } else {
-                MPL_LOGE("Cal Load error with size read\n");
-            }
-            fclose(fc);
-        }
-    }
-
-    sample_count = 0;
-    start_time = inv_get_tick_count();
-
-    /* playback data that was recorded */
-    inv_set_playback_filename(input_filename, strlen(input_filename) + 1);
-    inv_set_debug_mode(RD_PLAYBACK);
-    CALL_N_CHECK(inv_playback());
-
-    total_time = (1.0 * inv_get_tick_count() - start_time) / 1000;
-    if (total_time > 0) {
-        MPL_LOGI("\nPlayed back %ld samples in %.2f s (%.1f Hz)\n",
-                 sample_count, total_time , 1.0 * sample_count / total_time);
-    }
-
-    if (stream_file)
-        fclose(stream_file);
-
-    return INV_SUCCESS;
-}
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/self_test/build/android/inv_self_test-shared b/65xx/libsensors_iio/software/simple_apps/self_test/build/android/inv_self_test-shared
deleted file mode 100755
index 4d785f8..0000000
--- a/65xx/libsensors_iio/software/simple_apps/self_test/build/android/inv_self_test-shared
+++ /dev/null
Binary files differ
diff --git a/65xx/libsensors_iio/software/simple_apps/self_test/build/android/shared.mk b/65xx/libsensors_iio/software/simple_apps/self_test/build/android/shared.mk
deleted file mode 100755
index ed5fbf6..0000000
--- a/65xx/libsensors_iio/software/simple_apps/self_test/build/android/shared.mk
+++ /dev/null
@@ -1,98 +0,0 @@
-EXEC = inv_self_test$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-COMMON_DIR = $(INV_ROOT)/software/simple_apps/common
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-HAL_DIR    = $(INV_ROOT)/software/core/HAL
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += -I$(COMMON_DIR)
-CFLAGS += -I$(HAL_DIR)/include
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/self_test/build/filelist.mk b/65xx/libsensors_iio/software/simple_apps/self_test/build/filelist.mk
deleted file mode 100755
index 492f47e..0000000
--- a/65xx/libsensors_iio/software/simple_apps/self_test/build/filelist.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#### filelist.mk for console_test ####
-
-# headers
-HEADERS += $(HAL_DIR)/include/inv_sysfs_utils.h
-
-# sources
-SOURCES := $(APP_DIR)/inv_self_test.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR) $(HAL_DIR)/linux
diff --git a/65xx/libsensors_iio/software/simple_apps/self_test/inv_self_test.c b/65xx/libsensors_iio/software/simple_apps/self_test/inv_self_test.c
deleted file mode 100755
index 47abe53..0000000
--- a/65xx/libsensors_iio/software/simple_apps/self_test/inv_self_test.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/**
- *  Self Test application for Invensense's MPU6xxx/MPU9xxx.
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <features.h>
-#include <dirent.h>
-#include <string.h>
-#include <poll.h>
-#include <stddef.h>
-#include <linux/input.h>
-#include <time.h>
-#include <linux/time.h>
-
-#include "invensense.h"
-#include "ml_math_func.h"
-#include "storage_manager.h"
-#include "ml_stored_data.h"
-#include "ml_sysfs_helper.h"
-#include "data_builder.h"
-
-#ifndef ABS
-#define ABS(x)(((x) >= 0) ? (x) : -(x))
-#endif
-
-#define DEBUG_PRINT     /* Uncomment to print Gyro & Accel read from Driver */
-
-#define MAX_SYSFS_NAME_LEN     (100)
-#define MAX_SYSFS_ATTRB        (sizeof(struct sysfs_attrbs) / sizeof(char*))
-#define IIO_SYSFS_PATH         "/sys/bus/iio/devices/iio:device0"
-#define IIO_HUB_NAME           "inv_hub"
-
-#define GYRO_PASS_STATUS_BIT    0x01
-#define ACCEL_PASS_STATUS_BIT   0x02
-#define COMPASS_PASS_STATUS_BIT 0x04
-
-typedef union {
-    long l; 
-    int i;
-} bias_dtype;
-
-char *sysfs_names_ptr;
-struct sysfs_attrbs {
-    char *name;
-    char *enable;
-    int enable_value;
-    char *power_state;
-    int power_state_value;
-    char *dmp_on;
-    int dmp_on_value;
-    char *self_test;
-    char *temperature;
-    char *gyro_enable;
-    int gyro_enable_value;
-    char *gyro_x_bias;
-    char *gyro_y_bias;
-    char *gyro_z_bias;
-    char *gyro_scale;
-    char *accel_enable;
-    int accel_enable_value;
-    char *accel_x_bias;
-    char *accel_y_bias;
-    char *accel_z_bias;
-    char *accel_scale;
-    char *compass_enable;
-    int compass_enable_value;
-} mpu;
-
-static struct inv_db_save_t save_data;
-
-/** This function receives the data that was stored in non-volatile memory
-    between power off */
-static inv_error_t inv_db_load_func(const unsigned char *data)
-{
-    memcpy(&save_data, data, sizeof(save_data));
-    return INV_SUCCESS;
-}
-
-/** This function returns the data to be stored in non-volatile memory between
-    power off */
-static inv_error_t inv_db_save_func(unsigned char *data)
-{
-    memcpy(data, &save_data, sizeof(save_data));
-    return INV_SUCCESS;
-}
-
-/** read a sysfs entry that represents an integer */
-int read_sysfs_int(char *filename, int *var)
-{
-    int res=0;
-    FILE *fp;
-
-    fp = fopen(filename, "r");
-    if (fp != NULL) {
-        fscanf(fp, "%d\n", var);
-        fclose(fp);
-    } else {
-        MPL_LOGE("inv_self_test: ERR open file to read");
-        res= -1;
-    }
-    return res;
-}
-
-/** write a sysfs entry that represents an integer */
-int write_sysfs_int(char *filename, int data)
-{
-    int res = 0;
-    FILE *fp;
-
-    fp = fopen(filename, "w");
-    if (fp != NULL) {
-        fprintf(fp, "%d\n", data);
-        fclose(fp);
-    } else {
-        MPL_LOGE("inv_self_test: ERR open file to write");
-        res= -1;
-    }
-    return res;
-}
-
-int android_hub(void)
-{
-    char dev_name[8];
-    FILE *fp;
-
-    fp = fopen(mpu.name, "r");
-    fgets(dev_name, 8, fp);
-    fclose (fp);
-    
-    if (!strncmp(dev_name, IIO_HUB_NAME, sizeof(IIO_HUB_NAME)))
-        return true;
-    else
-        return false;
-}
-
-int save_n_write_sysfs_int(char *filename, int data, int *old_value)
-{
-    int res;
-    res = read_sysfs_int(filename, old_value);
-    if (res < 0) {
-        return res;
-    }
-    printf("saved %s = %d\n", filename, *old_value);
-    res = write_sysfs_int(filename, data);
-    if (res < 0) {
-        return res;
-    }
-    return 0;
-}
-
-int inv_init_sysfs_attributes(void)
-{
-    unsigned char i = 0;
-    char sysfs_path[MAX_SYSFS_NAME_LEN];
-    char *sptr;
-    char **dptr;
-
-    sysfs_names_ptr =
-            (char*)malloc(sizeof(char[MAX_SYSFS_ATTRB][MAX_SYSFS_NAME_LEN]));
-    sptr = sysfs_names_ptr;
-    if (sptr != NULL) {
-        dptr = (char**)&mpu;
-        do {
-            *dptr++ = sptr;
-            sptr += sizeof(char[MAX_SYSFS_NAME_LEN]);
-        } while (++i < MAX_SYSFS_ATTRB);
-    } else {
-        MPL_LOGE("inv_self_test: couldn't alloc mem for sysfs paths");
-        return -1;
-    }
-
-    // Setup IIO sysfs path & build MPU's sysfs paths
-    sprintf(sysfs_path, "%s", IIO_SYSFS_PATH);
-
-    sprintf(mpu.name, "%s%s", sysfs_path, "/name");
-    sprintf(mpu.enable, "%s%s", sysfs_path, "/buffer/enable");
-    sprintf(mpu.power_state, "%s%s", sysfs_path, "/power_state");
-    sprintf(mpu.dmp_on,"%s%s", sysfs_path, "/dmp_on");
-    sprintf(mpu.self_test, "%s%s", sysfs_path, "/self_test");
-    sprintf(mpu.temperature, "%s%s", sysfs_path, "/temperature");
-
-    sprintf(mpu.gyro_enable, "%s%s", sysfs_path, "/gyro_enable");
-    sprintf(mpu.gyro_x_bias, "%s%s", sysfs_path, "/in_anglvel_x_calibbias");
-    sprintf(mpu.gyro_y_bias, "%s%s", sysfs_path, "/in_anglvel_y_calibbias");
-    sprintf(mpu.gyro_z_bias, "%s%s", sysfs_path, "/in_anglvel_z_calibbias");
-    sprintf(mpu.gyro_scale,  "%s%s", sysfs_path, "/in_anglvel_self_test_scale");
-
-    sprintf(mpu.accel_enable, "%s%s", sysfs_path, "/accel_enable");
-    sprintf(mpu.accel_x_bias, "%s%s", sysfs_path, "/in_accel_x_calibbias");
-    sprintf(mpu.accel_y_bias, "%s%s", sysfs_path, "/in_accel_y_calibbias");
-    sprintf(mpu.accel_z_bias, "%s%s", sysfs_path, "/in_accel_z_calibbias");
-    sprintf(mpu.accel_scale,  "%s%s", sysfs_path, "/in_accel_self_test_scale");
-
-    sprintf(mpu.compass_enable, "%s%s", sysfs_path, "/compass_enable");
-
-#if 0
-    // test print sysfs paths
-    dptr = (char**)&mpu;
-    for (i = 0; i < MAX_SYSFS_ATTRB; i++) {
-        printf("inv_self_test: sysfs path: %s\n", *dptr++);
-    }
-#endif
-    return 0;
-}
-
-void print_cal_file_content(struct inv_db_save_t *data)
-{
-    printf("------------------------------\n");
-    printf("-- Calibration file content --\n");
-    printf("   compass_bias[3]      = %+ld %+ld %+ld\n",
-           data->compass_bias[0], data->compass_bias[1], data->compass_bias[2]);
-    printf("   factory_gyro_bias[3] = %+ld %+ld %+ld\n",
-           data->factory_gyro_bias[0], data->factory_gyro_bias[1], 
-           data->factory_gyro_bias[2]);
-    printf("   gyro_temp            = %+ld\n", data->gyro_temp);
-    printf("   gyro_bias_tc_set     = %+d\n", data->gyro_bias_tc_set);
-    printf("   accel_bias[3]        = %+ld %+ld %+ld\n",
-           data->accel_bias[0], data->accel_bias[1], data->accel_bias[2]);
-    printf("   accel_temp           = %+ld\n", data->accel_temp);
-    printf("   gyro_accuracy        = %d\n", data->gyro_accuracy);
-    printf("   accel_accuracy       = %d\n", data->accel_accuracy);
-    printf("   compass_accuracy     = %d\n", data->compass_accuracy);
-    printf("------------------------------\n");
-}
-
-/*******************************************************************************
- *                       M a i n
- ******************************************************************************/
-int main(int argc, char **argv)
-{
-    FILE *fptr;
-    int self_test_status = 0;
-    inv_error_t result;
-    bias_dtype gyro_bias[3];
-    bias_dtype gyro_scale;
-    bias_dtype accel_bias[3];
-    bias_dtype accel_scale;
-    int scale_ratio;
-    size_t packet_sz;
-    int axis_sign = 1;
-    unsigned char *buffer;
-    long timestamp;
-    long long temperature = 0;
-    bool compass_present = true;
-    int c;
-
-    result= inv_init_sysfs_attributes();
-    if (result)
-        return -1;
-
-    // Self-test for Non-Hub
-    inv_init_storage_manager();
-
-    // Register packet to be saved.
-    result = inv_register_load_store(
-                inv_db_load_func, inv_db_save_func,
-                sizeof(save_data), INV_DB_SAVE_KEY);
-
-    // Self-test for Android Hub
-    if (android_hub() == true) {
-        fptr = fopen(mpu.self_test, "r");
-        if (fptr) {
-            fscanf(fptr, "%d", &self_test_status);
-            printf("\nSelf-Test:Hub:Self test result - "
-                   "Gyro passed= %x, Accel passed= %x, Compass passed= %x\n",
-                   (self_test_status & GYRO_PASS_STATUS_BIT), 
-                   (self_test_status & ACCEL_PASS_STATUS_BIT) >> 1,
-                   (self_test_status & COMPASS_PASS_STATUS_BIT) >> 2);
-            fclose(fptr);
-            result = 0;
-        } else {
-            printf("Hub-Self-Test:ERR-Couldn't invoke self-test\n");
-            result = -1;
-        }
-
-        free(sysfs_names_ptr);
-        return result;
-    } 
-
-    /* testing hook: if the command-line parameter is '-l' as in 'load',
-       the system will read out the MLCAL_FILE */
-    while ((c = getopt(argc, argv, "l")) != -1) {
-        switch (c) {
-        case 'l':
-            inv_get_mpl_state_size(&packet_sz);
-
-            buffer = (unsigned char *)malloc(packet_sz + 10);
-            if (buffer == NULL) {
-                printf("Self-Test:Can't allocate buffer\n");
-                return -1;
-            }
-
-            fptr= fopen(MLCAL_FILE, "rb");
-            if (!fptr) {
-                printf("Self-Test:ERR- Can't open cal file to read - %s\n",
-                       MLCAL_FILE);
-                result = -1;
-            }
-            fread(buffer, 1, packet_sz, fptr);
-            fclose(fptr);
-
-            result = inv_load_mpl_states(buffer, packet_sz);
-            if (result) {
-                printf("Self-Test:ERR - "
-                       "Cannot load MPL states from cal file - error %d\n", 
-                       result);
-                free(buffer);
-                return -1;
-            }
-            free(buffer);
-
-            print_cal_file_content(&save_data);
-            return 0;
-            break;
-        case '?':
-            return -1;
-        }
-    }
-
-    // Clear out data.
-    memset(&save_data, 0, sizeof(save_data));
-    memset(gyro_bias,0, sizeof(gyro_bias));
-    memset(accel_bias,0, sizeof(accel_bias));
-
-    // enable the device
-    if (save_n_write_sysfs_int(mpu.power_state, 1, 
-                               &mpu.power_state_value) < 0) {
-        printf("Self-Test:ERR-Failed to set power_state=1\n");
-    }
-    if (save_n_write_sysfs_int(mpu.enable, 0, &mpu.enable_value) < 0) {
-        printf("Self-Test:ERR-Failed to disable master enable\n");
-    }
-    if (save_n_write_sysfs_int(mpu.dmp_on, 0, &mpu.dmp_on_value) < 0) {
-        printf("Self-Test:ERR-Failed to disable DMP\n");
-    }
-    if (save_n_write_sysfs_int(mpu.accel_enable, 1, 
-                               &mpu.accel_enable_value) < 0) {
-        printf("Self-Test:ERR-Failed to enable accel\n");
-    }
-    if (save_n_write_sysfs_int(mpu.gyro_enable, 1, 
-                               &mpu.gyro_enable_value) < 0) {
-        printf("Self-Test:ERR-Failed to enable gyro\n");
-    }
-    if (save_n_write_sysfs_int(mpu.compass_enable, 1, 
-                               &mpu.compass_enable_value) < 0) {
-#ifdef DEBUG_PRINT
-        printf("Self-Test:ERR-Failed to enable compass\n");
-#endif
-        compass_present = false;
-    } 
-
-    fptr = fopen(mpu.self_test, "r");
-    if (!fptr) {
-        printf("Self-Test:ERR-Couldn't invoke self-test\n");
-        result = -1;
-        goto free_sysfs_storage;
-    }
-
-    // Invoke self-test 
-    fscanf(fptr, "%d", &self_test_status);
-    if (compass_present == true) {
-        printf("Self-Test:Self test result- "
-               "Gyro passed = %x, Accel passed = %x, Compass passed = %x\n",
-               (self_test_status & GYRO_PASS_STATUS_BIT), 
-               (self_test_status & ACCEL_PASS_STATUS_BIT) >> 1,
-               (self_test_status & COMPASS_PASS_STATUS_BIT) >> 2);
-    } else {
-        printf("Self-Test:Self test result- "
-               "Gyro passed = %x, Accel passed = %x\n",
-               (self_test_status & GYRO_PASS_STATUS_BIT),
-               (self_test_status & ACCEL_PASS_STATUS_BIT) >> 1);
-    }
-    fclose(fptr);
-
-    if (self_test_status & GYRO_PASS_STATUS_BIT) {
-        // Read Gyro Bias
-        if (read_sysfs_int(mpu.gyro_x_bias, &gyro_bias[0].i) < 0 ||
-            read_sysfs_int(mpu.gyro_y_bias, &gyro_bias[1].i) < 0 ||
-            read_sysfs_int(mpu.gyro_z_bias, &gyro_bias[2].i) < 0 ||
-            read_sysfs_int(mpu.gyro_scale, &gyro_scale.i) < 0) {
-            memset(gyro_bias, 0, sizeof(gyro_bias));
-            gyro_scale.i = 0;
-            printf("Self-Test:Failed to read Gyro bias\n");
-        } else {
-            save_data.gyro_accuracy = 3;
-#ifdef DEBUG_PRINT
-            printf("Self-Test:Gyro bias[0..2] = [%d %d %d]\n", 
-                   gyro_bias[0].i, gyro_bias[1].i, gyro_bias[2].i);
-#endif
-        }
-    } else {
-        printf("Self-Test:Failed Gyro self-test\n");
-    }
-
-    if (self_test_status & ACCEL_PASS_STATUS_BIT) {
-        // Read Accel Bias
-        if (read_sysfs_int(mpu.accel_x_bias, &accel_bias[0].i) < 0 ||
-            read_sysfs_int(mpu.accel_y_bias, &accel_bias[1].i) < 0 ||
-            read_sysfs_int(mpu.accel_z_bias, &accel_bias[2].i) < 0 ||
-            read_sysfs_int(mpu.accel_scale, &accel_scale.i) < 0) {
-            memset(accel_bias, 0, sizeof(accel_bias));
-            accel_scale.i = 0;
-            printf("Self-Test:Failed to read Accel bias\n");
-        } else {
-            save_data.accel_accuracy = 3;
-#ifdef DEBUG_PRINT
-            printf("Self-Test:Accel bias[0..2] = [%d %d %d]\n", 
-                   accel_bias[0].i, accel_bias[1].i, accel_bias[2].i);
-#endif
-       }
-    } else {
-        printf("Self-Test:Failed Accel self-test\n");
-    }
-
-    if (!(self_test_status & (GYRO_PASS_STATUS_BIT | ACCEL_PASS_STATUS_BIT))) {
-        printf("Self-Test:Failed Gyro and Accel self-test, "
-               "nothing left to do\n");
-        result = -1;
-        goto restore_settings;
-    }
-
-    // Read temperature
-    fptr = fopen(mpu.temperature, "r");
-    if (fptr != NULL) {
-        fscanf(fptr,"%lld %ld", &temperature, &timestamp);
-        fclose(fptr);
-    } else {
-        printf("Self-Test:ERR-Couldn't read temperature\n");
-    }
-
-    /*
-        When we read gyro bias from sysfs, the bias is in the raw units scaled by 
-        1000 at the full scale used during self-test 
-        (in_anglvel_self_test_scale).
-        We store the biases in raw units (+/- 2000 dps full scale assumed) 
-        scaled by 2^16 therefore the gyro_bias[] have to be divided by the 
-        ratio of 2000 / gyro_scale to comply.
-    */
-    scale_ratio = 2000 / gyro_scale.i;
-    save_data.factory_gyro_bias[0] = 
-                        (long)(gyro_bias[0].l / 1000.f * 65536.f / scale_ratio);
-    save_data.factory_gyro_bias[1] = 
-                        (long)(gyro_bias[1].l / 1000.f * 65536.f / scale_ratio);
-    save_data.factory_gyro_bias[2] = 
-                        (long)(gyro_bias[2].l / 1000.f * 65536.f / scale_ratio);
-
-    // Save temperature @ time stored.
-    //  Temperature is in degrees Celsius scaled by 2^16
-    save_data.gyro_temp = temperature * (1L << 16);
-    save_data.gyro_bias_tc_set = true;
-    save_data.accel_temp = save_data.gyro_temp;
-
-    // When we read accel bias, the bias is in raw units scaled by 1000.
-    // and it contains the gravity vector.
-    // Find the orientation of the device, by looking for gravity
-    int axis = 0;
-    if (ABS(accel_bias[1].l) > ABS(accel_bias[0].l)) {
-        axis = 1;
-    }
-    if (ABS(accel_bias[2].l) > ABS(accel_bias[axis].l)) {
-        axis = 2;
-    }
-    if (accel_bias[axis].l < 0) {
-        axis_sign = -1;
-    }
-
-    // Convert scaling from raw units scaled by 1000 to raw scaled by 2^16
-    /*
-        When we read accel bias from sysfs, the bias is in the raw units scaled
-        by 1000 at the full scale used during self-test 
-        (in_accel_self_test_scale).
-        We store the biases in raw units (+/- 2 gee full scale assumed) 
-        scaled by 2^16 therefore the accel_bias[] have to be multipled by the 
-        ratio of accel_scale / 2 to comply.
-    */
-    scale_ratio = accel_scale.i / 2;
-    save_data.accel_bias[0] = 
-                    (long)(accel_bias[0].l / 1000.f * 65536.f * scale_ratio);
-    save_data.accel_bias[1] = 
-                    (long)(accel_bias[1].l / 1000.f * 65536.f * scale_ratio);
-    save_data.accel_bias[2] = 
-                    (long)(accel_bias[2].l / 1000.f * 65536.f * scale_ratio);
-
-#ifdef DEBUG_PRINT
-    printf("Self-Test:Saved Accel bias[0..2] = [%ld %ld %ld]\n",
-           save_data.accel_bias[0], save_data.accel_bias[1], 
-           save_data.accel_bias[2]);
-#endif
-
-    /*
-        Remove gravity, gravity in raw units should be 16384 = 2^14 for a +/- 
-        2 gee setting. The data has been saved in Hw units scaled to 2^16,
-        so gravity needs to scale up accordingly.
-    */
-    long gravity = axis_sign * 16384L * 65536L;
-#ifdef DEBUG_PRINT
-    printf("Self-Test:Gravity = %ld\n", gravity);
-#endif
-    save_data.accel_bias[axis] -= gravity;
-
-    printf("Self-Test:Saved Accel bias (gravity removed) [0..2] = "
-           "[%ld %ld %ld]\n",
-           save_data.accel_bias[0], save_data.accel_bias[1],
-           save_data.accel_bias[2]);
-    printf("Self-Test:Saved Gyro bias[0..2] = [%ld %ld %ld]\n",
-           save_data.factory_gyro_bias[0], save_data.factory_gyro_bias[1],
-           save_data.factory_gyro_bias[2]);
-    printf("Self-Test:Gyro temperature @ time stored %ld\n",
-           save_data.gyro_temp);
-    printf("Self-Test:Accel temperature @ time stored %ld\n",
-           save_data.accel_temp);
-
-    // Get size of packet to store.
-    inv_get_mpl_state_size(&packet_sz);
-
-    // Create place to store data
-    buffer = (unsigned char *)malloc(packet_sz + 10);
-    if (buffer == NULL) {
-        printf("Self-Test:Can't allocate buffer\n");
-        result = -1;
-        goto free_sysfs_storage;
-    }
-
-    // Store the data
-    result = inv_save_mpl_states(buffer, packet_sz);
-    if (result) {
-        result = -1;
-    } else {
-        fptr = fopen(MLCAL_FILE, "wb+");
-        if (fptr != NULL) {
-            fwrite(buffer, 1, packet_sz, fptr);
-            fclose(fptr);
-        } else {
-            printf("Self-Test:ERR- Can't open calibration file to write - %s\n", 
-                   MLCAL_FILE);
-            result= -1;
-        }
-    }
-
-    free(buffer);
-
-restore_settings:
-    if (write_sysfs_int(mpu.dmp_on, mpu.dmp_on_value) < 0) {
-        printf("Self-Test:ERR-Failed to restore dmp_on\n");
-    }
-    if (write_sysfs_int(mpu.accel_enable, mpu.accel_enable_value) < 0) {
-        printf("Self-Test:ERR-Failed to restore accel_enable\n");
-    }
-    if (write_sysfs_int(mpu.gyro_enable, mpu.gyro_enable_value) < 0) {
-        printf("Self-Test:ERR-Failed to restore gyro_enable\n");
-    }
-    if (compass_present) {
-        if (write_sysfs_int(mpu.compass_enable, mpu.compass_enable_value) < 0) {
-            printf("Self-Test:ERR-Failed to restore compass_enable\n");
-        }
-    }
-    if (write_sysfs_int(mpu.enable, mpu.enable_value) < 0) {
-        printf("Self-Test:ERR-Failed to restore buffer/enable\n");
-    }
-    if (write_sysfs_int(mpu.power_state, mpu.power_state_value) < 0) {
-        printf("Self-Test:ERR-Failed to restore power_state\n");
-    }
-
-free_sysfs_storage:
-    free(sysfs_names_ptr);
-    return result;
-}
-
diff --git a/65xx/libsensors_iio/software/simple_apps/stress_iio/README b/65xx/libsensors_iio/software/simple_apps/stress_iio/README
deleted file mode 100755
index eea7588..0000000
--- a/65xx/libsensors_iio/software/simple_apps/stress_iio/README
+++ /dev/null
@@ -1,27 +0,0 @@
-Usage of inv_stress_iio:
-
-> inv_stress_iio: 
-  this will run enable and disable sequence sequentially. 
-  In the enable sequence, this will enable all the engines, output, and all dmp
-  events. 
-  In the disable sequence, this will disable all but accel engine; all outputs 
-  are disabled, only events are allowed.
-
-> inv_stress_iio -e 10 -d 1: 
-  this set the enable sequence to 10 seconds and disable sequence for 1 seconds.
-
-> inv_stress_iio -c: 
-  this includes the compass in the enable sequence when you have 9150 or other
-  secondary bus compass. It won't work for compasses on the primary bus.
-
-> inv_stress_iio -r: 
-  this set the enable and disable sequences to last a random time. It is good 
-  for stress test.
-
-> inv_stress_iio -m: 
-  this enables motion interrupt during the disable sequence. 
-  When this is enabled, the driver enters low power accel mode and disables all 
-  other sensor output (including quaternion, gyro, accel, and compass.) in the 
-  disabled sequence:
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/stress_iio/build/android/shared.mk b/65xx/libsensors_iio/software/simple_apps/stress_iio/build/android/shared.mk
deleted file mode 100755
index fe844a5..0000000
--- a/65xx/libsensors_iio/software/simple_apps/stress_iio/build/android/shared.mk
+++ /dev/null
@@ -1,94 +0,0 @@
-EXEC = inv_stress_iio$(SHARED_APP_SUFFIX)
-
-MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST)))
-
-CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
-COMP  ?= $(CROSS)gcc
-LINK  ?= $(CROSS)gcc
-
-OBJFOLDER = $(CURDIR)/obj
-
-INV_ROOT   = ../../../../..
-APP_DIR    = $(CURDIR)/../..
-MLLITE_DIR = $(INV_ROOT)/software/core/mllite
-MPL_DIR    = $(INV_ROOT)/software/core/mpl
-
-include $(INV_ROOT)/software/build/android/common.mk
-
-CFLAGS += $(CMDLINE_CFLAGS)
-CFLAGS += $(ANDROID_COMPILE)
-CFLAGS += -Wall
-CFLAGS += -fpic
-CFLAGS += -nostdlib
-CFLAGS += -DNDEBUG
-CFLAGS += -D_REENTRANT
-CFLAGS += -DLINUX
-CFLAGS += -DANDROID
-CFLAGS += -mthumb-interwork
-CFLAGS += -fno-exceptions
-CFLAGS += -ffunction-sections
-CFLAGS += -funwind-tables
-CFLAGS += -fstack-protector
-CFLAGS += -fno-short-enums
-CFLAGS += -fmessage-length=0
-CFLAGS += -I$(MLLITE_DIR)
-CFLAGS += -I$(MPL_DIR)
-CFLAGS += $(INV_INCLUDES)
-CFLAGS += $(INV_DEFINES)
-
-LLINK  = -lc
-LLINK += -lm
-LLINK += -lutils
-LLINK += -lcutils
-LLINK += -lgcc
-LLINK += -ldl
-LLINK += -lstdc++
-LLINK += -llog
-LLINK += -lz
-
-LFLAGS += $(CMDLINE_LFLAGS)
-LFLAGS += $(ANDROID_LINK_EXECUTABLE)
-
-LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
-
-####################################################################################################
-## sources
-
-INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
-INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
-
-#INV_SOURCES and VPATH provided by Makefile.filelist
-include ../filelist.mk
-
-INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
-INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
-
-####################################################################################################
-## rules
-
-.PHONY: all clean cleanall install
-
-all: $(EXEC) $(MK_NAME)
-
-$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
-	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
-	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
-
-$(OBJFOLDER) :
-	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
-	mkdir obj
-
-$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
-	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
-	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
-
-clean : 
-	rm -fR $(OBJFOLDER)
-
-cleanall : 
-	rm -fR $(EXEC) $(OBJFOLDER)
-
-install : $(EXEC)
-	cp -f $(EXEC) $(INSTALL_DIR)
-
-
diff --git a/65xx/libsensors_iio/software/simple_apps/stress_iio/build/filelist.mk b/65xx/libsensors_iio/software/simple_apps/stress_iio/build/filelist.mk
deleted file mode 100755
index f201fbb..0000000
--- a/65xx/libsensors_iio/software/simple_apps/stress_iio/build/filelist.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-#### filelist.mk for stress_iio ####
-
-# headers
-#HEADERS += $(HAL_DIR)/include/inv_sysfs_utils.h
-HEADERS += $(APP_DIR)/iio_utils.h
-
-# sources
-SOURCES := $(APP_DIR)/stress_iio.c
-
-INV_SOURCES += $(SOURCES)
-
-VPATH += $(APP_DIR) $(COMMON_DIR) $(HAL_DIR)/linux
diff --git a/65xx/libsensors_iio/software/simple_apps/stress_iio/iio_utils.h b/65xx/libsensors_iio/software/simple_apps/stress_iio/iio_utils.h
deleted file mode 100755
index 0d46b9f..0000000
--- a/65xx/libsensors_iio/software/simple_apps/stress_iio/iio_utils.h
+++ /dev/null
@@ -1,651 +0,0 @@
-/* IIO - useful set of util functionality
- *
- * Copyright (c) 2008 Jonathan Cameron
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- */
-
-/* Made up value to limit allocation sizes */
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <dirent.h>
-
-#define IIO_MAX_NAME_LENGTH 30
-
-#define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements"
-#define FORMAT_TYPE_FILE "%s_type"
-
-const char *iio_dir = "/sys/bus/iio/devices/";
-
-/**
- * iioutils_break_up_name() - extract generic name from full channel name
- * @full_name: the full channel name
- * @generic_name: the output generic channel name
- **/
-static int iioutils_break_up_name(const char *full_name,
-				  char **generic_name)
-{
-	char *current;
-	char *w, *r;
-	char *working;
-	current = strdup(full_name);
-	working = strtok(current, "_\0");
-	w = working;
-	r = working;
-
-	while (*r != '\0') {
-		if (!isdigit(*r)) {
-			*w = *r;
-			w++;
-		}
-		r++;
-	}
-	*w = '\0';
-	*generic_name = strdup(working);
-	free(current);
-
-	return 0;
-}
-
-/**
- * struct iio_channel_info - information about a given channel
- * @name: channel name
- * @generic_name: general name for channel type
- * @scale: scale factor to be applied for conversion to si units
- * @offset: offset to be applied for conversion to si units
- * @index: the channel index in the buffer output
- * @bytes: number of bytes occupied in buffer output
- * @mask: a bit mask for the raw output
- * @is_signed: is the raw value stored signed
- * @enabled: is this channel enabled
- **/
-struct iio_channel_info {
-	char *name;
-	char *generic_name;
-	float scale;
-	float offset;
-	unsigned index;
-	unsigned bytes;
-	unsigned bits_used;
-	unsigned shift;
-	uint64_t mask;
-	unsigned be;
-	unsigned is_signed;
-	unsigned enabled;
-	unsigned location;
-};
-
-/**
- * iioutils_get_type() - find and process _type attribute data
- * @is_signed: output whether channel is signed
- * @bytes: output how many bytes the channel storage occupies
- * @mask: output a bit mask for the raw data
- * @be: big endian
- * @device_dir: the iio device directory
- * @name: the channel name
- * @generic_name: the channel type name
- **/
-inline int iioutils_get_type(unsigned *is_signed,
-			     unsigned *bytes,
-			     unsigned *bits_used,
-			     unsigned *shift,
-			     uint64_t *mask,
-			     unsigned *be,
-			     const char *device_dir,
-			     const char *name,
-			     const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *scan_el_dir, *builtname, *builtname_generic, *filename = 0;
-	char signchar, endianchar;
-	unsigned padint;
-	const struct dirent *ent;
-
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname, FORMAT_TYPE_FILE, name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_scan_el_dir;
-	}
-	ret = asprintf(&builtname_generic, FORMAT_TYPE_FILE, generic_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		/*
-		 * Do we allow devices to override a generic name with
-		 * a specific one?
-		 */
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				printf("failed to open %s\n", filename);
-				ret = -errno;
-				goto error_free_filename;
-			}
-
-			ret = fscanf(sysfsfp,
-				     "%ce:%c%u/%u>>%u",
-				     &endianchar,
-				     &signchar,
-				     bits_used,
-				     &padint, shift);
-			if (ret < 0) {
-				printf("failed to pass scan type description\n");
-				return ret;
-			}
-			*be = (endianchar == 'b');
-			*bytes = padint / 8;
-			if (*bits_used == 64)
-				*mask = ~0;
-			else
-				*mask = (1 << *bits_used) - 1;
-			if (signchar == 's')
-				*is_signed = 1;
-			else
-				*is_signed = 0;
-			fclose(sysfsfp);
-			free(filename);
-
-			filename = 0;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_free_scan_el_dir:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int iioutils_get_param_float(float *output,
-				    const char *param_name,
-				    const char *device_dir,
-				    const char *name,
-				    const char *generic_name)
-{
-	FILE *sysfsfp;
-	int ret;
-	DIR *dp;
-	char *builtname, *builtname_generic;
-	char *filename = NULL;
-	const struct dirent *ent;
-
-	ret = asprintf(&builtname, "%s_%s", name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	ret = asprintf(&builtname_generic,
-		       "%s_%s", generic_name, param_name);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_builtname;
-	}
-	dp = opendir(device_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_builtname_generic;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if ((strcmp(builtname, ent->d_name) == 0) ||
-		    (strcmp(builtname_generic, ent->d_name) == 0)) {
-			ret = asprintf(&filename,
-				       "%s/%s", device_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_closedir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (!sysfsfp) {
-				ret = -errno;
-				goto error_free_filename;
-			}
-			fscanf(sysfsfp, "%f", output);
-			break;
-		}
-error_free_filename:
-	if (filename)
-		free(filename);
-error_closedir:
-	closedir(dp);
-error_free_builtname_generic:
-	free(builtname_generic);
-error_free_builtname:
-	free(builtname);
-error_ret:
-	return ret;
-}
-
-/**
- * bsort_channel_array_by_index() - reorder so that the array is in index order
- *
- **/
-
-inline void bsort_channel_array_by_index(struct iio_channel_info **ci_array,
-					 int cnt)
-{
-
-	struct iio_channel_info temp;
-	int x, y;
-
-	for (x = 0; x < cnt; x++)
-		for (y = 0; y < (cnt - 1); y++)
-			if ((*ci_array)[y].index > (*ci_array)[y+1].index) {
-				temp = (*ci_array)[y + 1];
-				(*ci_array)[y + 1] = (*ci_array)[y];
-				(*ci_array)[y] = temp;
-			}
-}
-
-/**
- * build_channel_array() - function to figure out what channels are present
- * @device_dir: the IIO device directory in sysfs
- * @
- **/
-inline int build_channel_array(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter)
-{
-	DIR *dp;
-	FILE *sysfsfp;
-	int count, i;
-	struct iio_channel_info *current;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-	char *filename;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				goto error_close_dir;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				ret = -errno;
-				free(filename);
-				goto error_close_dir;
-			}
-			fscanf(sysfsfp, "%u", &ret);
-			printf("%s, %d\n", filename, ret);
-			if (ret == 1)
-				(*counter)++;
-			fclose(sysfsfp);
-			free(filename);
-		}
-	*ci_array = malloc(sizeof(**ci_array) * (*counter));
-	if (*ci_array == NULL) {
-		ret = -ENOMEM;
-		goto error_close_dir;
-	}
-	closedir(dp);
-	dp = opendir(scan_el_dir);
-	//seekdir(dp, 0);
-	count = 0;
-	while (ent = readdir(dp), ent != NULL) {
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			current = &(*ci_array)[count++];
-			ret = asprintf(&filename,
-				       "%s/%s", scan_el_dir, ent->d_name);
-			if (ret < 0) {
-				ret = -ENOMEM;
-				/* decrement count to avoid freeing name */
-				count--;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			if (sysfsfp == NULL) {
-				free(filename);
-				ret = -errno;
-				goto error_cleanup_array;
-			}
-			fscanf(sysfsfp, "%u", &current->enabled);
-			fclose(sysfsfp);
-
-			if (!current->enabled) {
-				free(filename);
-				count--;
-				continue;
-			}
-
-			current->scale = 1.0;
-			current->offset = 0;
-			current->name = strndup(ent->d_name,
-						strlen(ent->d_name) -
-						strlen("_en"));
-			if (current->name == NULL) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			/* Get the generic and specific name elements */
-			ret = iioutils_break_up_name(current->name,
-						     &current->generic_name);
-			if (ret) {
-				free(filename);
-				goto error_cleanup_array;
-			}
-			ret = asprintf(&filename,
-				       "%s/%s_index",
-				       scan_el_dir,
-				       current->name);
-			if (ret < 0) {
-				free(filename);
-				ret = -ENOMEM;
-				goto error_cleanup_array;
-			}
-			sysfsfp = fopen(filename, "r");
-			fscanf(sysfsfp, "%u", &current->index);
-			fclose(sysfsfp);
-			free(filename);
-			/* Find the scale */
-			ret = iioutils_get_param_float(&current->scale,
-						       "scale",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_param_float(&current->offset,
-						       "offset",
-						       device_dir,
-						       current->name,
-						       current->generic_name);
-			if (ret < 0)
-				goto error_cleanup_array;
-			ret = iioutils_get_type(&current->is_signed,
-						&current->bytes,
-						&current->bits_used,
-						&current->shift,
-						&current->mask,
-						&current->be,
-						device_dir,
-						current->name,
-						current->generic_name);
-		}
-	}
-
-	closedir(dp);
-	/* reorder so that the array is in index order */
-	bsort_channel_array_by_index(ci_array, *counter);
-
-	return 0;
-
-error_cleanup_array:
-	for (i = count - 1;  i >= 0; i--)
-		free((*ci_array)[i].name);
-	free(*ci_array);
-error_close_dir:
-	closedir(dp);
-error_free_name:
-	free(scan_el_dir);
-error_ret:
-	return ret;
-}
-
-inline int _write_sysfs_int(char *filename, char *basedir, int val, int verify)
-{
-	int ret;
-	FILE *sysfsfp;
-	int test;
-	//char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	char temp[200];
-	ret = 0;
-	if (temp == NULL)
-		return -ENOMEM;
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("failed to open write %s\n", temp);
-		ret = -errno;
-		printf("ERROR1=%d\n", ret);
-		while(1);
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%d", val);
-	fclose(sysfsfp);
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("failed to open read %s\n", temp);
-			ret = -errno;
-			printf("ERROR2=%d\n", ret);
-			while(1);
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%d", &test);
-		if (test != val) {
-			printf("Possible failure in int write %d to %s%s\n",
-				val,
-				basedir,
-				filename);
-			ret = -1;
-		}
-	}
-error_free:
-	fclose(sysfsfp);
-	//free(temp);
-	return ret;
-}
-
-int write_sysfs_int(char *filename, char *basedir, int val)
-{
-	return _write_sysfs_int(filename, basedir, val, 0);
-}
-
-int write_sysfs_int_and_verify(char *filename, char *basedir, int val)
-{
-	printf("echo %d > %s/%s\n", val, basedir, filename);
-	return _write_sysfs_int(filename, basedir, val, 1);
-}
-
-int _write_sysfs_string(char *filename, char *basedir, char *val, int verify)
-{
-	int ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed\n");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "w");
-	if (sysfsfp == NULL) {
-		printf("Could not open %s\n", temp);
-		ret = -errno;
-		goto error_free;
-	}
-	fprintf(sysfsfp, "%s", val);
-	fclose(sysfsfp);
-	if (verify) {
-		sysfsfp = fopen(temp, "r");
-		if (sysfsfp == NULL) {
-			printf("could not open file to verify\n");
-			ret = -errno;
-			goto error_free;
-		}
-		fscanf(sysfsfp, "%s", temp);
-		if (strcmp(temp, val) != 0) {
-			printf("Possible failure in string write of %s "
-				"Should be %s "
-				"written to %s\%s\n",
-				temp,
-				val,
-				basedir,
-				filename);
-			ret = -1;
-		}
-	}
-error_free:
-	free(temp);
-
-	return ret;
-}
-
-/**
- * write_sysfs_string_and_verify() - string write, readback and verify
- * @filename: name of file to write to
- * @basedir: the sysfs directory in which the file is to be found
- * @val: the string to write
- **/
-int write_sysfs_string_and_verify(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 1);
-}
-
-int write_sysfs_string(char *filename, char *basedir, char *val)
-{
-	return _write_sysfs_string(filename, basedir, val, 0);
-}
-
-int read_sysfs_posint(char *filename, char *basedir)
-{
-	int ret;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%d\n", &ret);
-	fclose(sysfsfp);
-error_free:
-	free(temp);
-	return ret;
-}
-
-int read_sysfs_float(char *filename, char *basedir, float *val)
-{
-	float ret = 0;
-	FILE  *sysfsfp;
-	char *temp = malloc(strlen(basedir) + strlen(filename) + 2);
-	if (temp == NULL) {
-		printf("Memory allocation failed");
-		return -ENOMEM;
-	}
-	sprintf(temp, "%s/%s", basedir, filename);
-	sysfsfp = fopen(temp, "r");
-	if (sysfsfp == NULL) {
-		ret = -errno;
-		goto error_free;
-	}
-	fscanf(sysfsfp, "%f\n", val);
-	fclose(sysfsfp);
-error_free:
-	free(temp);
-	return ret;
-}
-int enable(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter)
-{
-	DIR *dp;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"),
-			   "_en") == 0) {
-			write_sysfs_int_and_verify((char *)ent->d_name, scan_el_dir, 1);
-		}
-	return 0;
-error_ret:
-error_free_name:
-	return -1;
-}
-int disable_q_out(const char *device_dir,
-			      struct iio_channel_info **ci_array,
-			      int *counter) {
-	DIR *dp;
-	int ret;
-	const struct dirent *ent;
-	char *scan_el_dir;
-
-	*counter = 0;
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, device_dir);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-	dp = opendir(scan_el_dir);
-	if (dp == NULL) {
-		ret = -errno;
-		goto error_free_name;
-	}
-	while (ent = readdir(dp), ent != NULL)
-		if (strncmp(ent->d_name, "in_quaternion", strlen("in_quaternion")) == 0) {
-			write_sysfs_int_and_verify((char *)ent->d_name, scan_el_dir, 0);
-		}
-	return 0;
-error_ret:
-error_free_name:
-	return -1;
-
-}
-
diff --git a/65xx/libsensors_iio/software/simple_apps/stress_iio/stress_iio.c b/65xx/libsensors_iio/software/simple_apps/stress_iio/stress_iio.c
deleted file mode 100755
index 82badc2..0000000
--- a/65xx/libsensors_iio/software/simple_apps/stress_iio/stress_iio.c
+++ /dev/null
@@ -1,963 +0,0 @@
-/* Industrialio buffer test code.
- *
- * Copyright (c) 2012 Invensense Inc.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by
- * the Free Software Foundation.
- *
- * Command line parameters
- * stress_iio -d time1 -e time2
- */
-
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <linux/types.h>
-#include <string.h>
-#include <poll.h>
-#include <pthread.h>
-#include "iio_utils.h"
-#include "ml_load_dmp.h"
-#include "ml_sysfs_helper.h"
-#include "authenticate.h"
-
-pthread_mutex_t data_switch_lock = PTHREAD_MUTEX_INITIALIZER;
-
-static int has_compass = 0;
-static int has_pressure = 0;
-static int enable_random_delay = 0;
-static int enable_delay = 10;
-static int disable_delay = 10;
-static int enable_motion_on = 0;
-static int final_output_rate;
-static int first_flag;
-static char dmp_path[200];
-
-static int dev_num;
-static char *dev_dir_name;
-static char *buf_dir_name;
-static char *scan_el_dir;
-static int gyro_data_is_enabled, accel_data_is_enabled, compass_data_is_enabled, quaternion_data_is_enabled;
-static int accel_engine_is_on;
-
-struct dmp_struct {
-	char fname[100];
-	void (*action)(struct dmp_struct *, int);
-};
-
-static void HandleTap(struct dmp_struct *dmp, int tap);
-static void sipmle_print(struct dmp_struct *dmp, int d){
-	printf("%s:%d\n", dmp->fname, d);
-}
-
-static void handle_smd() {
-	printf("write wake lock for SMD\n");
-	write_sysfs_string_and_verify("wake_lock", "/sys/power/", "hack");
-}
-
-static void pedo_print()
-{
-	printf("steps=%d, time=%d\n",
-		read_sysfs_posint("pedometer_steps", dev_dir_name),
-		read_sysfs_posint("pedometer_time", dev_dir_name));
-}
-
-struct dmp_struct event_file[] = {
-#if 0
-	{
-		.fname = "event_tap",
-		.action = HandleTap,
-	},
-#endif
-	{
-		.fname = "event_display_orientation",
-		.action = sipmle_print,
-	},
-	{
-		.fname = "event_smd",
-		.action = handle_smd,
-	},
-	{
-		.fname = "event_accel_motion",
-		.action = sipmle_print,
-	},
-	{
-		.fname = "event_pedometer",
-		.action = pedo_print,
-	},
-};
-
-static void HandleTap(struct dmp_struct *dmp, int tap)
-{
-    int tap_dir = tap/8;
-    int tap_num = tap%8 + 1;
-
-    switch (tap_dir) {
-        case 1:
-            printf("INV_TAP_AXIS_X_POS\n");
-            break;
-        case 2:
-            printf("INV_TAP_AXIS_X_NEG\n");
-            break;
-        case 3:
-            printf("INV_TAP_AXIS_Y_POS\n");
-            break;
-        case 4:
-            printf("INV_TAP_AXIS_Y_NEG\n");
-            break;
-        case 5:
-            printf("INV_TAP_AXIS_Z_POS\n");
-            break;
-        case 6:
-            printf("INV_TAP_AXIS_Z_NEG\n");
-            break;
-        default:
-            break;
-    }
-    printf("Tap number: %d\n", tap_num);
-}
-#define DMP_CODE_SIZE 2799
-static char dmp_img[DMP_CODE_SIZE];
-static void verify_img(){
-    FILE *fp;
-    int i;
-    char dmp_path[] = "/sys/bus/iio/devices/iio:device0/dmp_firmware";
-
-    printf("saving image\n");
-    if ((fp = fopen(dmp_path, "rb")) < 0 ) {
-        perror("dmp fail");
-    }
-
-    i = fread(dmp_img, 1, DMP_CODE_SIZE, fp);
-    printf("Result=%d\n", i);
-    fclose(fp);
-    fp = fopen("/dev/read_img.h", "wt");
-    fprintf(fp, "unsigned char rec[]={\n");
-    for(i=0; i<DMP_CODE_SIZE; i++) {
-      fprintf(fp, "0x%02x, ", dmp_img[i]);
-      //printf( "0x%02x, ", dmp_img[i]);
-      if(((i+1)%16) == 0) {
-        fprintf(fp, "\n");
-        //printf("\n");
-      }
-    }
-    fprintf(fp, "};\n ");
-    fclose(fp);
-    printf("saving image Done\n");
-}
-
-static void inv_set_rate()
-{
-	int ret;
-
-	printf("set rate \n");
-	ret = write_sysfs_int_and_verify("accel_rate", dev_dir_name, 15);
-	ret = write_sysfs_int_and_verify("gyro_rate", dev_dir_name, 10);
-	ret = write_sysfs_int_and_verify("compass_rate", dev_dir_name, 5);
-	ret = write_sysfs_int_and_verify("pressure_rate", dev_dir_name, 5);
-	ret = write_sysfs_int_and_verify("ped_q_rate", dev_dir_name, 5);
-	ret = write_sysfs_int_and_verify("six_axes_q_rate", dev_dir_name, 5);
-	ret = write_sysfs_int_and_verify("three_axes_q_rate", dev_dir_name, 5);
-}
-
-
-static int setup_offset_and_bias()
-{
-	int ret;
-
-	ret = write_sysfs_int_and_verify("in_accel_x_offset", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel x offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_accel_y_offset", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel y offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_accel_z_offset", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel z offset failed.\n");
-
-	ret = write_sysfs_int_and_verify("in_anglvel_x_offset", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel x offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_anglvel_y_offset", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel y offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_anglvel_z_offset", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel z offset failed.\n"); 
-
-	ret = write_sysfs_int_and_verify("in_accel_x_dmp_bias", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel x offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_accel_y_dmp_bias", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel y offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_accel_z_dmp_bias", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write accel z offset failed.\n");
-
-	ret = write_sysfs_int_and_verify("in_anglvel_x_dmp_bias", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write gyro x offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_anglvel_y_dmp_bias", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write gyro y offset failed.\n");
-	ret = write_sysfs_int_and_verify("in_anglvel_z_dmp_bias", dev_dir_name, 0);
-	if (ret < 0)
-		printf("write gyro z offset failed.\n");
-
-	return 0;
-}
-
-static void setup_dmp(char *dev_path){
-	char sysfs_path[200];
-	int  ret;
-	FILE *fd;
-	sprintf(sysfs_path, "%s", dev_path);
-	printf("sysfs: %s\n", sysfs_path);
-	ret = write_sysfs_int_and_verify("power_state", sysfs_path, 1);
-	if (ret < 0)
-		return;
-
-	ret = write_sysfs_int("in_accel_scale", dev_path, 0);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int("in_anglvel_scale", dev_path, 3);
-	if (ret < 0)
-		return;	
-	ret = write_sysfs_int("sampling_frequency", sysfs_path, 200);
-	if (ret < 0)
-		return;	
-	ret = write_sysfs_int_and_verify("firmware_loaded", sysfs_path, 0);
-	if (ret < 0)
-		return;
-	sprintf(dmp_path, "%s/dmp_firmware", dev_path);
-	if ((fd = fopen(dmp_path, "wb")) < 0 ) {
-		perror("dmp fail");
-	}	
-	inv_load_dmp(fd);
-	fclose(fd);
-	printf("firmware_loaded=%d\n", read_sysfs_posint("firmware_loaded", sysfs_path));
-	ret = write_sysfs_int_and_verify("dmp_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("dmp_int_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	/* selelct which event to enable and interrupt on/off here */
-	//enable_glu(sysfs_path, 0);
-	//ret = write_sysfs_int_and_verify("tap_on", sysfs_path, 0);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("display_orientation_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("pedometer_int_on", sysfs_path, 0);
-	ret = write_sysfs_int_and_verify("pedometer_on", sysfs_path, 1);
-
-	ret = write_sysfs_int_and_verify("dmp_event_int_on", sysfs_path, 1);
-	if (ret < 0)
-		return;
-
-	ret = setup_offset_and_bias();
-
-	return;
-}
-
-#if 0
-static char reg_dump_arr[2000];
-static int inv_do_reg_dump(void)
-{
-	char reg_dump_name[100];
-	int fd, i;
-
-	sprintf(reg_dump_name, "%s/reg_dump", dev_dir_name);
-	printf("%s\n", reg_dump_name);
-	fd = open(reg_dump_name, O_RDONLY);
-	pread(fd, reg_dump_arr, 2000, 0);
-	close(fd);
-	for ( i = 0; i < 2000; i++) {
-		printf("%c", reg_dump_arr[i]);
-		//if((i+1)%16 == 0)
-			//printf("\n");
-	}
-	return 0;
-}
-#endif
-
-static void *get_dmp_event(void *param) {
-	char file_name[100];
-	int i;
-	int data;
-	char d[4];
-	FILE *fp;
-	struct pollfd pfd[ARRAY_SIZE(event_file)];
-
-	printf("get DMP event: %s\n", dev_dir_name);
-	while(1) {
-		for (i = 0; i < ARRAY_SIZE(event_file); i++) {
-			sprintf(file_name, "%s/%s", dev_dir_name, event_file[i].fname);
-			pfd[i].fd = open(file_name, O_RDONLY | O_NONBLOCK);
-			pfd[i].events = POLLPRI|POLLERR;
-			pfd[i].revents = 0;
-			read(pfd[i].fd, d, 4);
-		}
-
-		poll(pfd, ARRAY_SIZE(event_file), -1);
-		for (i = 0; i < ARRAY_SIZE(event_file); i++) {
-			close(pfd[i].fd);
-		}
-
-		for (i=0; i< ARRAY_SIZE(pfd); i++) {
-			if(pfd[i].revents != 0) {
-				sprintf(file_name, "%s/%s", dev_dir_name, event_file[i].fname);
-				fp = fopen(file_name, "rt");
-				fscanf(fp, "%d\n", &data);
-				event_file[i].action(&event_file[i], data);
-			}
-		}						
-	}
-	
-	return 0;
-}
-
-static int enable_gyro(int on){
-	int ret;
-	ret = write_sysfs_int_and_verify("gyro_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write gyro_enable failed\n");
-
-	return ret;
-}
-
-static int enable_gyro_output(int on){
-	int ret;
-	gyro_data_is_enabled = on;
-	ret = write_sysfs_int_and_verify("gyro_fifo_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write gyro_fifo_enable failed\n");
-
-	return ret;
-}
-
-static int enable_compass(int on){
-	int ret;
-
-	compass_data_is_enabled = on;
-	ret = write_sysfs_int_and_verify("compass_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write gyro_enable failed\n");
-
-	return ret;
-}
-
-static int enable_pressure(int on){
-	int ret;
-
-	ret = write_sysfs_int_and_verify("pressure_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write pressure_enable failed\n");
-
-	return ret;
-}
-
-static int enable_quaternion(int on) {
-	int ret;
-	ret = write_sysfs_int_and_verify("ped_q_on", dev_dir_name, on);
-	if (ret < 0)
-		printf("write quaternion_on failed\n");
-	ret = write_sysfs_int_and_verify("six_axes_q_on", dev_dir_name, on);
-	if (ret < 0)
-		printf("write quaternion_on failed\n");
-	ret = write_sysfs_int_and_verify("three_axes_q_on", dev_dir_name, on);
-	if (ret < 0)
-		printf("write quaternion_on failed\n");
-
-	return ret;
-}
-static int enable_step_detector(int on) {
-	int ret;
-
-	ret = write_sysfs_int_and_verify("step_detector_on", dev_dir_name, on);
-	if (ret < 0)
-		printf("write step detector on failed\n");
-}
-static int enable_step_indicator(int on) {
-	int ret;
-
-	ret = write_sysfs_int_and_verify("step_indicator_on", dev_dir_name, on);
-	if (ret < 0)
-		printf("write step indicator on failed\n");
-}
-
-static int enable_accel(int on){
-	int ret;
-	accel_data_is_enabled = on;
-	accel_engine_is_on = on;
-	ret = write_sysfs_int_and_verify("accel_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write accel_enable failed\n");
-	ret = write_sysfs_int_and_verify("accel_fifo_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write accel_fifo_enable failed\n");
-
-	return ret;
-}
-static int enable_accel_output(int on) {
-	int ret;
-	accel_data_is_enabled = on;
-
-	ret = write_sysfs_int_and_verify("accel_fifo_enable", dev_dir_name, on);
-	if (ret < 0)
-		printf("write accel_fifo_enable failed\n");
-
-	return ret;
-}
-
-static int enable_enable(int on){
-	int ret;
-
-	if (0 == on) {
-		pthread_mutex_lock(&data_switch_lock);
-	}
-	if (on == 0) {
-		ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-
-		if (ret < 0)
-			printf("write power_state fail\n");
-		ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-		if (ret < 0)
-			printf("write power_state fail\n");
-	}
-	ret = write_sysfs_int_and_verify("enable", buf_dir_name, on);
-	if (ret < 0)
-		printf("write enable failed\n");
-
-	if (on) {
-		pthread_mutex_unlock(&data_switch_lock);
-	}
-
-	return 0;
-}
-static int write_dmp_event(int on) {
-	int ret;
-	ret = write_sysfs_int_and_verify("dmp_event_int_on", dev_dir_name, on);
-	if (ret < 0)
-		printf("write dmp_event_int_on failed\n");
-	return 0;
-}
-
-static void random_delay(){
-	int i;
-	float bb;
-
-	i = rand();
-	bb = i * 200.0;
-	i = 1 + (unsigned int)(bb/(RAND_MAX + 1.0));
-	if (i%2) {
-		printf("sleep %d ms\n", i);
-		usleep(i*1000);
-	} else {
-		printf("sleep %d s\n", i);
-		sleep(i);
-	}
-
-}
-static void dmp_event_control(on){
-	int ret;
-
-	ret = 0;
-
-	//ret = write_sysfs_int_and_verify("tap_on", dev_dir_name, on);
-	ret = write_sysfs_int_and_verify("display_orientation_on", dev_dir_name, 1);
-	if (ret < 0)
-		return;
-	ret = write_sysfs_int_and_verify("smd_enable", dev_dir_name, 1);
-	if (ret < 0)
-		return;
-	inv_set_rate();
-
-	//ret = write_sysfs_int_and_verify("batchmode_wake_fifo_full_on", dev_dir_name, 1);
-	ret = write_sysfs_int_and_verify("batchmode_timeout", dev_dir_name, 5000);
-	//ret = write_sysfs_int_and_verify("batchmode_timeout", dev_dir_name, 0);
-	//ret = write_sysfs_int_and_verify("smd_delay_threshold", dev_dir_name, 10);
-	if (ret < 0)
-		return;
-	//ret = write_sysfs_int_and_verify("smd_threshold", dev_dir_name, 5000);
-	if (ret < 0)
-		return;
-	//write_sysfs_int_and_verify("motion_lpa_duration", dev_dir_name, 1000);
-	//write_sysfs_int_and_verify("motion_lpa_threshold", dev_dir_name, 200);
-	write_sysfs_int_and_verify("dmp_on", dev_dir_name, 1);
-	//write_sysfs_int_and_verify("motion_lpa_freq", dev_dir_name, 3);
-
-}
-void enable_motion(int on) {
-
-	//ret = write_sysfs_int_and_verify("motion_lpa_on", dev_dir_name, on);
-	if (on) {
-	        gyro_data_is_enabled = 0;
-		compass_data_is_enabled = 0;
-		quaternion_data_is_enabled = 0;
-	}
-}
-bool g, a;
-static int counter = 0;
-static unsigned char data_rate[] = {5, 10, 15, 50, 100, 200};
-static int run_enable_sequence()
-{
-	bool g, a, out;
-
-	counter++;
-	g = rand()%2;
-	a = rand()%2;
-	if (!g && !a)
-		a = true;
-
-	//g = true;
-	//a = true;
-	/*disable the master enable */
-	enable_enable(0);
-	if(g) {
-		enable_gyro(1);
-		if (rand()%2) {
-			out = rand()%2;
-			enable_quaternion(out);
-			enable_gyro_output(!out);
-		} else {
-			enable_quaternion(1);
-			enable_gyro_output(1);
-		}
-	//	enable_quaternion(0);
-	//	enable_gyro_output(0);
-
-	} else {
-		enable_gyro(0);
-		enable_quaternion(0);
-	}
-	if(a) {
-		enable_accel(1);
-		enable_accel_output(1);
-	//	enable_accel_output(0);
-	} else {
-		enable_accel(1);
-		enable_accel_output(0);
-	}
-	if (has_compass) {
-		if(rand()%2)
-			enable_compass(1);
-		else
-			enable_compass(0);
-		enable_compass(counter%2);
-		//enable_compass(0);
-	}
-	if (has_pressure) {
-		if(rand()%2)
-			enable_pressure(1);
-		else
-			enable_pressure(0);
-		enable_pressure(counter%3);
-		//enable_pressure(0);
-	}
-	enable_step_detector(1);
-	enable_step_indicator(1);
-	//enable_step_detector(0);
-	//enable_step_indicator(0);
-
-	write_dmp_event(0);
-
-	//enable_motion(0);
-	if (accel_engine_is_on)
-		dmp_event_control(1);
-	else
-		dmp_event_control(0);
-	first_flag = 1;
-	/*enable the master enable */
-	enable_enable(1);
-	//write_sysfs_string_and_verify("wake_unlock", "/sys/power/", "hack");
-	if (enable_random_delay)
-		random_delay();
-	else {
-		printf("sleep %ds\n", enable_delay);
-		sleep(enable_delay);
-	}
-
-	return 0;
-}
-
-static int run_disable_sequence() {
-	enable_enable(0);
-
-	enable_gyro(0);
-	enable_accel(1);
-	enable_quaternion(0);
-	enable_accel_output(0);
-	write_dmp_event(1);
-	//enable_motion(enable_motion_on);
-	if (accel_engine_is_on)
-		dmp_event_control(1);
-	else
-		dmp_event_control(0);
-
-	enable_enable(1);
-	if (enable_random_delay)
-		random_delay();
-	else {
-		printf("sleep %ds\n", disable_delay);
-		sleep(disable_delay);
-	}
-
-	return 0;
-}
-static void *control_switch(void *param)
-{
-	while(1) {
-		run_enable_sequence();
-		printf("sleeping\n");
-		usleep(500000);
-		run_disable_sequence();
-	}
-	return 0;
-}
-
-void get_sensor_data(char *d, short *sensor)
-{
-	int i;
-
-	for (i = 0; i < 3; i++)
-		sensor[i] = *(short *)(d + 2 + i * 2);
-}
-
-static void *read_data(void *param)
-{
-	char *buffer_access;
-	char data[1048], *dptr, tmp[24];
-	short sensor[3];
-	int q[3], i, ind, left_over_size, buf_size;
-	int ret, fp,read_size;
-	unsigned short hdr;
-	bool done_flag;
-
-#define PRESSURE_HDR             0x8000
-#define ACCEL_HDR                0x4000
-#define GYRO_HDR                 0x2000
-#define COMPASS_HDR              0x1000
-#define LPQUAT_HDR               0x0800
-#define SIXQUAT_HDR              0x0400
-#define PEDQUAT_HDR              0x0200
-#define STEP_DETECTOR_HDR        0x0100
-
-	printf("read_data Thread: %s\n", dev_dir_name);
-	ret = asprintf(&scan_el_dir, FORMAT_SCAN_ELEMENTS_DIR, dev_dir_name);
-	if (ret < 0)
-		goto error_alloc_scan_el_dir;
-	ret = asprintf(&buffer_access, "/dev/iio:device%d", dev_num);
-	if (ret < 0)
-		goto error_alloc_buffer_access;
-
-	fp = open(buffer_access, O_RDONLY | O_NONBLOCK);
-	if (fp == -1) { /*If it isn't there make the node */
-		printf("Failed to open %s\n", buffer_access);
-		ret = -errno;
-		goto error_open_buffer_access;
-	}
-	ind = 0;
-	
-	while(1) {
-		struct pollfd pfd = {
-			.fd = fp,
-			.events = POLLIN,
-		};
-		poll(&pfd, 1, -1);
-
-		if (left_over_size > 0)
-			memcpy(data, tmp, left_over_size);
-		dptr = data + left_over_size;
-
-		read_size = read(fp,  dptr, 1024);
-		printf("readsize=%d, left_over_size=%d\n", read_size, left_over_size);
-		if (read_size <= 0) {
-			printf("Wrong size=%d\n", read_size);
-			pthread_mutex_unlock(&data_switch_lock);
-			continue;
-		}
-		ind = read_size + left_over_size;
-		dptr = data;
-		printf("ind=%d\n", ind);
-		buf_size = ind - (dptr - data);
-		done_flag = false;
-		while ((buf_size > 0) && (!done_flag)) {
-			hdr = *((short *)(dptr));
-			if (hdr & 1)
-				printf("STEP$$$$$$$$$$$$$$$=%x\n", hdr);
-		
-			switch (hdr & (~1)) {
-			case PRESSURE_HDR:
-				if (buf_size >= 16) {
-					get_sensor_data(dptr, sensor);
-					dptr += 8;
-					printf("PRESSURE:%d, %lld\n", (sensor[1] << 16) + (unsigned short)sensor[2],  *(long long *)dptr);
-				} else
-					done_flag = true;
-				break;
-			case ACCEL_HDR:
-				if (buf_size >= 16) {
-					get_sensor_data(dptr, sensor);
-					dptr += 8;
-					printf("A:%d, %d, %d,  %lld\n", sensor[0], sensor[1], sensor[2],   *(long long *)dptr);
-				} else
-					done_flag = true;
-				break;
-			case GYRO_HDR:
-				if (buf_size >= 16) {
-					get_sensor_data(dptr, sensor);
-					dptr += 8;
-					printf("G:%d, %d, %d,  %lld\n", sensor[0], sensor[1], sensor[2],   *(long long *)dptr);
-				} else
-					done_flag = true;
-				break;
-			case COMPASS_HDR:
-				if (buf_size >= 16) {
-					get_sensor_data(dptr, sensor);
-					dptr += 8;
-					printf("M:%d, %d, %d,  %lld\n", sensor[0], sensor[1], sensor[2],   *(long long *)dptr);
-				} else
-					done_flag = true;
-				break;
-			case PEDQUAT_HDR:
-				if (buf_size >= 16) {
-					get_sensor_data(dptr, sensor);
-					dptr += 8;
-					printf("PED:%d, %d, %d,  %lld\n", sensor[0], sensor[1], sensor[2],   *(long long *)dptr);
-				}  else
-					done_flag = true;
-				break;
-			case LPQUAT_HDR:
-				if (buf_size >= 24) {
-					q[0] = *(int *)(dptr + 4);
-					dptr += 8;
-					q[1] = *(int *)(dptr);
-					q[2] = *(int *)(dptr + 4);
-					dptr += 8;
-					printf("LPQ:%d, %d, %d,  %lld\n", q[0], q[1], q[2],   *(long long *)dptr);
-				}  else
-					done_flag = true;
-				break;
-			case SIXQUAT_HDR:
-				if (buf_size >= 24) {
-					q[0] = *(int *)(dptr + 4);
-					dptr += 8;
-					q[1] = *(int *)(dptr);
-					q[2] = *(int *)(dptr + 4);
-					dptr += 8;
-					printf("SIXQ:%d, %d, %d,  %lld\n", q[0], q[1], q[2],   *(long long *)dptr);
-				}  else
-					done_flag = true;
-				break;
-			case STEP_DETECTOR_HDR:
-				if (buf_size >= 16) {
-					printf("STEP DETECTOR ");
-					dptr += 8;
-					printf(" %lld\n", *(long long *)dptr);
-				}  else
-					done_flag = true;
-
-				break;
-			default:
-				printf("unknown\n");
-				for (i = 0; i < 8; i++)
-					printf("%x ", dptr[i]);
-				printf("\n");
-				break;
-			}
-			if (!done_flag)
-				dptr += 8;
-			buf_size = ind - (dptr - data);
-		}
-		if (ind - (dptr - data) > 0)
-			memcpy(tmp, dptr, ind - (dptr - data));
-		left_over_size = ind - (dptr - data);
-	}
-	close(fp);
-
-error_open_buffer_access:
-	free(buffer_access);
-error_alloc_buffer_access:
-	free(scan_el_dir);
-error_alloc_scan_el_dir:
-
-	return 0;
-}
-
-static void inv_create_thread() {
-	pthread_t thread_dmp_event, thread_read_data, thread_control;
-
-	pthread_create(&thread_dmp_event, NULL, &get_dmp_event, (void *)dev_dir_name);
-	pthread_create(&thread_read_data, NULL, &read_data, (void *)dev_dir_name);
-	pthread_create(&thread_control, NULL, &control_switch, (void *)dev_dir_name);
-
-	pthread_join(thread_dmp_event, NULL);
-	pthread_join(thread_read_data, NULL);
-	pthread_join(thread_control, NULL);
-}
-
-static int enable_enable_main(int on){
-	int ret;
-
-	printf("enable_enable: %s=%d\n", dev_dir_name, on);
-	if (on == 0) {
-		ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-
-		if (ret < 0)
-			printf("write power_state fail\n");
-		ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-		if (ret < 0)
-			printf("write power_state fail\n");
-	}
-	ret = write_sysfs_int_and_verify("enable", buf_dir_name, on);
-	if (ret < 0)
-		printf("write enable failed\n");
-
-	return 0;
-}
-
-int main(int argc, char **argv)
-{
-	unsigned long buf_len = 128;
-
-	int ret, c, i;
-
-	char *trigger_name = NULL;
-
-	int datardytrigger = 1;
-	int trig_num;
-	char *dummy;
-	char chip_name[10];
-	char device_name[10];
-	char sysfs[100];
-
-	gyro_data_is_enabled = 0;
-	accel_data_is_enabled = 0;
-	compass_data_is_enabled = 0;
-	quaternion_data_is_enabled = 0;
-
-	while ((c = getopt(argc, argv, "lcd:e:rmp")) != -1) {
-		switch (c) {
-		case 'c':
-			has_compass = 1;
-			break;
-		case 'p':
-			has_pressure = 1;
-			break;
-		case 'd':
-			disable_delay = strtoul(optarg, &dummy, 10);
-			break;
-		case 'e':
-			enable_delay = strtoul(optarg, &dummy, 10);
-			break;
-		case 'r':
-			enable_random_delay = 1;
-			break;
-		case 'm':
-			enable_motion_on = 1;
-			break;
-		case '?':
-			return -1;
-		}
-	}
-
-	inv_get_sysfs_path(sysfs);
-	printf("sss:::%s\n", sysfs);
-	if (inv_get_chip_name(chip_name) != INV_SUCCESS) {
-		printf("get chip name fail\n");
-		exit(0);
-	}
-	printf("chip_name=%s\n", chip_name);
-	if (INV_SUCCESS != inv_check_key())
-        	printf("key check fail\n");
-	else
-        	printf("key authenticated\n");
-
-	for (i=0; i<strlen(chip_name); i++) {
-		device_name[i] = tolower(chip_name[i]);
-	}
-	device_name[strlen(chip_name)] = '\0';
-	printf("device name: %s\n", device_name);
-
-	/* Find the device requested */
-	dev_num = find_type_by_name(device_name, "iio:device");
-	if (dev_num < 0) {
-		printf("Failed to find the %s\n", device_name);
-		ret = -ENODEV;
-		goto error_ret;
-	}
-	printf("iio device number being used is %d\n", dev_num);
-	asprintf(&dev_dir_name, "%siio:device%d", iio_dir, dev_num);
-	printf("allco=%x\n", (int)dev_dir_name);
-	if (trigger_name == NULL) {
-		/*
-		 * Build the trigger name. If it is device associated it's
-		 * name is <device_name>_dev[n] where n matches the device
-		 * number found above
-		 */
-		ret = asprintf(&trigger_name,
-			       "%s-dev%d", device_name, dev_num);
-		if (ret < 0) {
-			ret = -ENOMEM;
-			goto error_ret;
-		}
-	}
-	/* Verify the trigger exists */
-	trig_num = find_type_by_name(trigger_name, "trigger");
-	if (trig_num < 0) {
-		printf("Failed to find the trigger %s\n", trigger_name);
-		ret = -ENODEV;
-		goto error_free_triggername;
-	}
-	printf("iio trigger number being used is %d\n", trig_num);
-	ret = asprintf(&buf_dir_name, "%siio:device%d/buffer", iio_dir, dev_num);
-	if (ret < 0) {
-		ret = -ENOMEM;
-		goto error_free_triggername;
-	}
-	enable_enable_main(0);
-	ret = write_sysfs_int_and_verify("power_state", dev_dir_name, 1);
-	/*
-	 * Parse the files in scan_elements to identify what channels are
-	 * present
-	 */
-	ret = 0;
-	setup_dmp(dev_dir_name);
-
-	printf("%s %s\n", dev_dir_name, trigger_name);
-
-	/* Set the device trigger to be the data rdy trigger found above */
-	ret = write_sysfs_string_and_verify("trigger/current_trigger",
-					dev_dir_name,
-					trigger_name);
-	if (ret < 0) {
-		printf("Failed to write current_trigger file\n");
-		goto error_free_buf_dir_name;
-	}
-	/* Setup ring buffer parameters */
-	/* length must be even number because iio_store_to_sw_ring is expecting 
-		half pointer to be equal to the read pointer, which is impossible
-		when buflen is odd number. This is actually a bug in the code */
-	ret = write_sysfs_int("length", buf_dir_name, buf_len*2);
-	if (ret < 0)
-		goto exit_here;
-	
-	inv_create_thread();
-exit_here:
-error_free_buf_dir_name:
-	free(buf_dir_name);
-error_free_triggername:
-	if (datardytrigger)
-		free(trigger_name);
-error_ret:
-	return ret;
-}