UniverseClient* setupIO(Brain* brain) { UniverseClient* universeClient = new UniverseClient(); QObject::connect(universeClient, SIGNAL(sensorUpdated(QString,QList<qreal>)), brain, SLOT(sensorUpdate(QString,QList<qreal>))); QObject::connect(brain, SIGNAL(actuatorUpdated(QString,QList<qreal>)), universeClient, SLOT(actuatorUpdate(QString,QList<qreal>))); return universeClient; }
// store a new data sample for all sensors to the pending archive interval int computedDataStoreSample (WVIEWD_WORK *work) { WV_SENSOR sample[SENSOR_MAX]; int tempInt; float tempfloat; sensorClearSet (sample); // convert from LOOP_PKT to a sensor sample sensorUpdate (&sample[SENSOR_INTEMP], work->loopPkt.inTemp); sensorUpdate (&sample[SENSOR_OUTTEMP], work->loopPkt.outTemp); sensorUpdate (&sample[SENSOR_INHUMID], (float)work->loopPkt.inHumidity); sensorUpdate (&sample[SENSOR_OUTHUMID], (float)work->loopPkt.outHumidity); sensorUpdate (&sample[SENSOR_BP], work->loopPkt.barometer); sensorUpdate (&sample[SENSOR_WSPEED], (float)work->loopPkt.windSpeed); sensorUpdateWhen (&sample[SENSOR_WGUST], (float)work->loopPkt.windGust, (float)work->loopPkt.windGustDir); sensorUpdate (&sample[SENSOR_DEWPOINT], work->loopPkt.dewpoint); sensorUpdate (&sample[SENSOR_RAIN], work->loopPkt.sampleRain); sensorUpdate (&sample[SENSOR_RAINRATE], work->loopPkt.rainRate); sensorUpdate (&sample[SENSOR_WCHILL], work->loopPkt.windchill); sensorUpdate (&sample[SENSOR_HINDEX], work->loopPkt.heatindex); if (work->loopPkt.sampleET > ARCHIVE_VALUE_NULL) sensorUpdate (&sample[SENSOR_ET], work->loopPkt.sampleET); if (work->loopPkt.UV != 0xFFFF) sensorUpdate (&sample[SENSOR_UV], (float)work->loopPkt.UV); if (work->loopPkt.radiation != 0xFFFF) sensorUpdate (&sample[SENSOR_SOLRAD], (float)work->loopPkt.radiation); if (work->loopPkt.wxt510Hail > ARCHIVE_VALUE_NULL) sensorUpdate (&sample[SENSOR_HAIL], work->loopPkt.wxt510Hail); if (work->loopPkt.wxt510Hailrate > ARCHIVE_VALUE_NULL) sensorUpdate (&sample[SENSOR_HAILRATE], work->loopPkt.wxt510Hailrate); // store it sensorPropogateSample (work->sensors.sensor[STF_INTERVAL], sample); // store the wind direction windAverageAddValue (&work->sensors.wind[STF_INTERVAL], work->loopPkt.windDir); // Store to the HILOW database: dbsqliteHiLowStoreSample(time(NULL), &work->loopPkt); return OK; }