It is modified accordingly to work with sparkfun dmp library under mbed platform

Dependents:   MPU9250-dmp-bluepill MPU9250-dmp

Fork of MotionDriver_6_1 by Prosper Van

mdcompat.cpp

Committer:
mbedoguz
Date:
2017-08-07
Revision:
1:a6c3f8680fe0
Child:
2:e7e761471df9

File content as of revision 1:a6c3f8680fe0:

#include "mdcompat.h"
#include "mbed.h" // must be out of the scope of extern "C"
I2C imu9250(PB_7,PB_6);

void imu_init(void){
imu9250.frequency(400000);    
}
unsigned short constrain(
    unsigned short x,
    unsigned short a, 
    unsigned short b) {unsigned short result;
    result= (x<a) ? a:x;
    result= (x>b) ? b:x;
    return result;    
}

extern "C" {

int mbed_i2c_write(
    unsigned char slave_addr,
    unsigned char reg_addr,
    unsigned char length,
    char const *data) {
        
    imu9250.write((int)slave_addr,(char const*)reg_addr,1,true);//sending register adress first to indicate which register we are writing and a write register(0)
    imu9250.write((int)slave_addr,data,(int)length,false);
    
    return 0;
}

int mbed_i2c_read(
    unsigned char slave_addr,
    unsigned char reg_addr,
    unsigned char length,
    char *data) {
        
    imu9250.write((int)slave_addr,(char const*)reg_addr,1,true);//sending register adress first to indicate which register we are writing and a write register(0)
    imu9250.read((int)slave_addr,data,(int)length,false);
    return 0;
}

int delay_ms(
    unsigned long num_ms) {
    return 0;
}

int get_ms(
    unsigned long *count) {
    return 0;
}

int reg_int_cb(
    void (*cb)(void),
    unsigned char port,
    unsigned char pin) {
    return 0;   
}

long labs(long x) {
    return x > 0 ? x : -x;
}

float fabsf(float x) {
    return x > 0 ? x : -x;
}

int min(int a, int b) {
    return a > b ? b : a;
}

};