HAPSRG / Mbed 2 deprecated HAPStail

Dependencies:   mbed MatrixMath LPS25HB_I2C LSM9DS1 Matrix2 PIDcontroller LoopTicker SBUS_without_mainfile UsaPack solaESKF_wind Vector3 CalibrateMagneto FastPWM

datatransfer.cpp

Committer:
NaotoMorita
Date:
2022-01-13
Revision:
92:6a2319f7f6ed
Parent:
91:393b9ae62681
Child:
93:b0f7a1e91476
Child:
96:0be0d80d5299

File content as of revision 92:6a2319f7f6ed:

#include "global.hpp"

void send2center()
{
    valuePack& vp = posValues;
    vp.acc[0] = acc.x;
    vp.acc[1] = acc.y;
    vp.acc[2] = acc.z;
    vp.gyro[0] = gyro.x;
    vp.gyro[1] = gyro.y;
    vp.gyro[2] = gyro.z;
    vp.mag[0] = mag.x;
    vp.mag[1] = mag.y;
    vp.mag[2] = mag.z;
    vp.rpy[0] = rpy.x;
    vp.rpy[1] = rpy.y;
    vp.rpy[2] = rpy.z;
    vp.altitude = -palt;
    vp.de = de;
    vp.deobj = deobj;
    if (prefligt_finished)
    {
        vp.readyFlag = 1;
    }
    else
    {
        vp.readyFlag = 0;
    }
    if(updateValues.calibrationFlag == 1111){
       vp.calibEndFlag = 2;
    }else{ 
        vp.calibEndFlag = 0;
    }
    for(int i = 0 ; i<5 ; i++){
        vp.rc[i] = rc[i];
    }
    tail.Send(tail_address[pos_tail], &(posValues));
    pc.printf("%f %f %f %d %d\r\n",gyro.x/M_PI*180.0f,gyro.y/M_PI*180.0f,gyro.z/M_PI*180.0f,vp.readyFlag,updateValues.calibrationFlag);
}

// eeprom書き込み・読み込みに必要な関数
void writeEEPROM(int address, unsigned int eeaddress, char *data, int size)
{
    char i2cBuffer[size + 2];
    i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB
    i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF); // LSB
 
    for (int i = 0; i < size; i++) {
        i2cBuffer[i + 2] = data[i];
    }
 
    int result = i2c.write(address, i2cBuffer, size + 2, false);
    //sleep_ms(500);
}

// this function has no read limit
void readEEPROM(int address, unsigned int eeaddress, char *data, int size)
{
    char i2cBuffer[2];
    i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB
    i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF); // LSB
 
    // Reset eeprom pointer address
    int result = i2c.write(address, i2cBuffer, 2, false);
    
    //sleep_ms(500);
 
    // Read eeprom
    i2c.read(address, data, size);
    //sleep_ms(500);
}