Skip to content
Snippets Groups Projects
QGC.cc 2.85 KiB
Newer Older
  • Learn to ignore specific revisions
  • pixhawk's avatar
    pixhawk committed
    /*=====================================================================
    
    QGroundControl Open Source Ground Control Station
    
    
    (c) 2009 - 2011 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
    
    pixhawk's avatar
    pixhawk committed
    
    This file is part of the QGROUNDCONTROL project
    
        QGROUNDCONTROL is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.
    
        QGROUNDCONTROL 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.
    
        You should have received a copy of the GNU General Public License
        along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
    
    ======================================================================*/
    
    
    pixhawk's avatar
    pixhawk committed
    #include "QGC.h"
    
    lm's avatar
    lm committed
    #include <qmath.h>
    
    namespace QGC
    {
    
    pixhawk's avatar
    pixhawk committed
    
    quint64 groundTimeUsecs()
    {
        QDateTime time = QDateTime::currentDateTime();
        time = time.toUTC();
        /* Return seconds and milliseconds, in milliseconds unit */
        quint64 microseconds = time.toTime_t() * static_cast<quint64>(1000000);
        return static_cast<quint64>(microseconds + (time.time().msec()*1000));
    }
    
    
    lm's avatar
    lm committed
    quint64 groundTimeMilliseconds()
    {
        QDateTime time = QDateTime::currentDateTime();
        time = time.toUTC();
        /* Return seconds and milliseconds, in milliseconds unit */
        quint64 seconds = time.toTime_t() * static_cast<quint64>(1000);
        return static_cast<quint64>(seconds + (time.time().msec()));
    }
    
    
    qreal groundTimeSeconds()
    {
        QDateTime time = QDateTime::currentDateTime();
        time = time.toUTC();
        /* Return time in seconds unit */
        quint64 seconds = time.toTime_t();
        return static_cast<qreal>(seconds + (time.time().msec() / 1000.0));
    }
    
    
        if (angle > -20*M_PI && angle < 20*M_PI)
        {
            while (angle > ((float)M_PI+FLT_EPSILON))
            {
                angle -= 2.0f * (float)M_PI;
            }
    
            while (angle <= -((float)M_PI+FLT_EPSILON))
            {
                angle += 2.0f * (float)M_PI;
            }
        }
        else
        {
            // Approximate
    
            angle = fmodf(angle, (float)M_PI);
    
    
        return angle;
    }
    
    double limitAngleToPMPId(double angle)
    
    lm's avatar
    lm committed
    {
    
        if (angle > -20*M_PI && angle < 20*M_PI)
        {
            if (angle < -M_PI)
            {
                while (angle < -M_PI)
                {
                    angle += M_PI;
                }
            }
            else if (angle > M_PI)
            {
                while (angle > M_PI)
                {
                    angle -= M_PI;
                }
            }
        }
        else
        {
            // Approximate
            angle = fmod(angle, M_PI);
        }
    
    
    lm's avatar
    lm committed
        return angle;
    }
    
    
    int applicationVersion()
    {
        return APPLICATIONVERSION;
    }
    
    
    pixhawk's avatar
    pixhawk committed
    }