示例#1
0
void CLSPGT8000HVChannel::onVoltageChanged(double voltage){
	emit voltageChanged(voltage);
	if(isOn() && demand_->withinTolerance(voltage))
		emit fullyPowered();
	if(isConnected() && poweringDown_ && (voltage_->value()) < 1){
		poweringDown_ = false;
		powerState_ = AMHighVoltageChannel::isPowerOff;
		emit powerStateChanged(powerState_);
	}
}
void DriverStation::resetEverything()
{
    m_elapsedTime->resetTimer();
    m_elapsedTime->stopTimer();

    emit codeChanged (false);
    emit voltageChanged (QString (""));
    emit elapsedTimeChanged ("00:00.0");
    emit communicationsChanged (kFailing);
}
示例#3
0
Battery::Battery(const QString &udi, QObject *parent)
    : QObject(parent)
    , m_device(Solid::Device(udi))
{
//    qCDebug(BATTERY) << "Added battery" << udi;

    m_battery = m_device.as<Solid::Battery>();
    connect(m_battery, &Solid::Battery::chargePercentChanged, [this](int, const QString &) {
        Q_EMIT chargePercentChanged();
    });
    connect(m_battery, &Solid::Battery::capacityChanged, [this](int, const QString &) {
        Q_EMIT capacityChanged();
    });
    connect(m_battery, &Solid::Battery::powerSupplyStateChanged, [this](bool, const QString &) {
        Q_EMIT powerSupplyChanged();
    });
    connect(m_battery, &Solid::Battery::chargeStateChanged, [this](int, const QString &) {
        Q_EMIT chargeStateChanged();
    });
    connect(m_battery, &Solid::Battery::timeToEmptyChanged, [this](qlonglong, const QString &) {
        Q_EMIT timeToEmptyChanged();
    });
    connect(m_battery, &Solid::Battery::timeToFullChanged, [this](qlonglong, const QString &) {
        Q_EMIT timeToFullChanged();
    });
    connect(m_battery, &Solid::Battery::chargeStateChanged, [this](int, const QString &) {
        Q_EMIT chargeStateChanged();
    });
    connect(m_battery, &Solid::Battery::energyChanged, [this](double, const QString &) {
        Q_EMIT energyChanged();
    });
    connect(m_battery, &Solid::Battery::energyRateChanged, [this](double, const QString &) {
        Q_EMIT energyRateChanged();
    });
    connect(m_battery, &Solid::Battery::voltageChanged, [this](double, const QString &) {
        Q_EMIT voltageChanged();
    });
    connect(m_battery, &Solid::Battery::temperatureChanged, [this](double, const QString &) {
        Q_EMIT temperatureChanged();
    });
}
示例#4
0
void Elm327::_refreshData() {
    QVector<int> data;
    static int voltageTimeout = 0;

    if (!_started) {
        return;
    }

    for(int i = 0; i < _watchList.size(); i++) {
        data = _readPID(1, _watchList.at(i));
        if (!data.isEmpty())
            emit pidValueChanged(_watchList.at(i), data);
    }

    if (voltageTimeout-- <= 0) {
        emit voltageChanged(_readVoltage());
        voltageTimeout = 5;
    }

    _watchTimer->start();
}
DriverStation::DriverStation()
{
    m_init = false;

    /* Initialize private members */
    m_client      = new DS_Client;
    m_netConsole  = new DS_NetConsole;
    m_elapsedTime = new DS_ElapsedTime;
    m_manager     = new DS_ProtocolManager;
    m_protocol    = Q_NULLPTR;

    /* Update internal values and notify object on robot status events */
    connect (m_manager, SIGNAL (codeChanged            (bool)),
             this,        SLOT (updateRobotStatus      (bool)));
    connect (m_manager, SIGNAL (communicationsChanged  (DS_CommStatus)),
             this,        SLOT (updateRobotStatus      (DS_CommStatus)));
    connect (m_manager, SIGNAL (controlModeChanged     (DS_ControlMode)),
             this,        SLOT (resetElapsedTimer      (DS_ControlMode)));
    connect (m_manager, SIGNAL (codeChanged            (bool)),
             this,      SIGNAL (codeChanged            (bool)));
    connect (m_manager, SIGNAL (communicationsChanged  (DS_CommStatus)),
             this,      SIGNAL (communicationsChanged  (DS_CommStatus)));
    connect (m_manager, SIGNAL (controlModeChanged     (DS_ControlMode)),
             this,      SIGNAL (controlModeChanged     (DS_ControlMode)));
    connect (m_manager, SIGNAL (diskUsageChanged       (int)),
             this,      SIGNAL (diskUsageChanged       (int)));
    connect (m_manager, SIGNAL (ramUsageChanged        (int)),
             this,      SIGNAL (ramUsageChanged        (int)));
    connect (m_manager, SIGNAL (cpuUsageChanged        (int)),
             this,      SIGNAL (cpuUsageChanged        (int)));
    connect (m_manager, SIGNAL (voltageChanged         (QString)),
             this,      SIGNAL (voltageChanged         (QString)));
    connect (m_manager, SIGNAL (voltageBrownoutChanged (bool)),
             this,      SIGNAL (voltageBrownoutChanged (bool)));
    connect (m_manager, SIGNAL (CANInfoReceived        (DS_CAN)),
             this,      SIGNAL (CANInfoReceived        (DS_CAN)));
    connect (m_manager, SIGNAL (emergencyStopped       (void)),
             this,      SIGNAL (emergencyStopped       (void)));
    connect (m_manager, SIGNAL (fmsChanged             (bool)),
             this,      SIGNAL (fmsChanged             (bool)));

    /* Stop timer when the communications status changes */
    connect (m_manager,     SIGNAL (communicationsChanged (DS_CommStatus)),
             m_elapsedTime,   SLOT (stopTimer()));

    /* Robot information has changed */
    connect (m_manager, SIGNAL (libVersionChanged (QString)),
             this,      SIGNAL (libVersionChanged (QString)));
    connect (m_manager, SIGNAL (rioVersionChanged (QString)),
             this,      SIGNAL (rioVersionChanged (QString)));
    connect (m_manager, SIGNAL (pcmVersionChanged (QString)),
             this,      SIGNAL (pcmVersionChanged (QString)));
    connect (m_manager, SIGNAL (pdpVersionChanged (QString)),
             this,      SIGNAL (pdpVersionChanged (QString)));

    /* Sync robot address and calculated IPs automatically */
    connect (m_manager, SIGNAL (robotAddressChanged (QString)),
             m_client,  SLOT   (setRobotAddress     (QString)));

    /* Update the elapsed time text automatically */
    connect (m_elapsedTime, SIGNAL (elapsedTimeChanged (QString)),
             this,          SIGNAL (elapsedTimeChanged (QString)));

    /* New NetConsole message received */
    connect (m_netConsole,  SIGNAL (newMessage (QString)),
             this,          SIGNAL (newMessage (QString)));

    /* Send and read robot packets */
    connect (m_client,  SIGNAL (dataReceived     (QByteArray)),
             this,        SLOT (readRobotPacket  (QByteArray)));
    connect (DS_Timers::getInstance(), SIGNAL    (timeout20()),
             this,                       SLOT    (sendClientPacket()));
}
示例#6
0
/**
 * Polls for new LibDS events and emits Qt signals as appropiate.
 * This function is called every 5 milliseconds.
 */
void DriverStation::processEvents()
{
    DS_Event event;
    while (DS_PollEvent (&event)) {
        switch (event.type) {
        case DS_FMS_COMMS_CHANGED:
            emit fmsAddressChanged();
            emit fmsCommunicationsChanged (event.fms.connected);
            break;
        case DS_RADIO_COMMS_CHANGED:
            emit radioAddressChanged();
            emit radioCommunicationsChanged (event.radio.connected);
            break;
        case DS_NETCONSOLE_NEW_MESSAGE:
            emit newMessage (QString::fromUtf8 (event.netconsole.message));
            break;
        case DS_ROBOT_ENABLED_CHANGED:
            emit enabledChanged (event.robot.enabled);
            break;
        case DS_ROBOT_MODE_CHANGED:
            emit controlModeChanged (controlMode());
            break;
        case DS_ROBOT_COMMS_CHANGED:
            emit robotAddressChanged();
            emit robotCommunicationsChanged (event.robot.connected);
            break;
        case DS_ROBOT_CODE_CHANGED:
            emit robotCodeChanged (event.robot.code);
            break;
        case DS_ROBOT_VOLTAGE_CHANGED:
            emit voltageChanged (event.robot.voltage);
            break;
        case DS_ROBOT_CAN_UTIL_CHANGED:
            emit canUsageChanged (event.robot.can_util);
            break;
        case DS_ROBOT_CPU_INFO_CHANGED:
            emit cpuUsageChanged (event.robot.cpu_usage);
            break;
        case DS_ROBOT_RAM_INFO_CHANGED:
            emit ramUsageChanged (event.robot.ram_usage);
            break;
        case DS_ROBOT_DISK_INFO_CHANGED:
            emit diskUsageChanged (event.robot.disk_usage);
            break;
        case DS_ROBOT_STATION_CHANGED:
            emit stationChanged();
            emit allianceChanged (teamAlliance());
            emit positionChanged (teamPosition());
            break;
        case DS_ROBOT_ESTOP_CHANGED:
            emit emergencyStoppedChanged (event.robot.estopped);
            break;
        case DS_STATUS_STRING_CHANGED:
            emit statusChanged (QString::fromUtf8 (DS_GetStatusString()));
            break;
        default:
            break;
        }
    }

    QTimer::singleShot (5, Qt::CoarseTimer, this, SLOT (processEvents()));
}