Example #1
0
  void IdasInterface::reset(IntegratorMemory* mem, double t, const double* _x,
                            const double* _z, const double* _p) const {
    log("IdasInterface::reset", "begin");
    auto m = to_mem(mem);

    // Reset the base classes
    SundialsInterface::reset(mem, t, _x, _z, _p);

    // Re-initialize
    copy(init_xdot_.begin(), init_xdot_.end(), NV_DATA_S(m->xzdot));
    THROWING(IDAReInit, m->mem, grid_.front(), m->xz, m->xzdot);

    // Re-initialize quadratures
    if (nq_>0) THROWING(IDAQuadReInit, m->mem, m->q);

    // Correct initial conditions, if necessary
    if (calc_ic_) {
      THROWING(IDACalcIC, m->mem, IDA_YA_YDP_INIT , first_time_);
      THROWING(IDAGetConsistentIC, m->mem, m->xz, m->xzdot);
    }

    // Re-initialize backward integration
    if (nrx_>0) THROWING(IDAAdjReInit, m->mem);

    // Set the stop time of the integration -- don't integrate past this point
    if (stop_at_end_) setStopTime(m, grid_.back());

    log("IdasInterface::reset", "end");
  }
Example #2
0
bool LedCycle::loadEepromDatas()
{
  uint8_t tempValue;
  time_t tempTime;
  uint8_t readValues[8];

  for (int i = 0; i < 8; i++) {
    tempValue = EEPROM.read(eepromAddress + i);
    if (tempValue > 60) {
      applyDefaultTime();
      return false;
    }
    readValues[i] = tempValue;
  }

  setStartTime(hoursToTime_t(readValues[0]) + 
               minutesToTime_t(readValues[1]));
  setFadeInTime(hoursToTime_t(readValues[2]) + 
               minutesToTime_t(readValues[3]));
  setStopTime(hoursToTime_t(readValues[4]) + 
               minutesToTime_t(readValues[5]));
  setFadeOutTime(hoursToTime_t(readValues[6]) + 
               minutesToTime_t(readValues[7]));
  return true;
}
bool RunData::decodeMessage(const uint8_t *buf) {
  auto runData = GetRunInfo(buf);

  if (runData->info_type_type() == InfoTypes_RunStart) {
    auto runStartData = static_cast<const RunStart *>(runData->info_type());
    setStartTimeInNanoseconds(runStartData->start_time());
    setInstrumentName(runStartData->instrument_name()->str());
    setRunNumber(runStartData->run_number());
    setNumberOfPeriods(runStartData->n_periods());

    return true;
  }
  if (runData->info_type_type() == InfoTypes_RunStop) {
    auto runStopData = static_cast<const RunStop *>(runData->info_type());
    setStopTime(runStopData->stop_time());

    return true;
  }

  return false; // this is not a RunData message
}