/// <summary> /// get acc between starttime and now from sensor location loc /// </summary> /// <param name="starttime"></param> /// <param name="endTime"> currently unused</param> /// <param name="loc"></param> /// <returns></returns> public static List <Acceleration> GetACCData(long starttime, long endTime, SensorLocationEnum loc) { using (RTDbContext Context = InitializeDatabaseContext()) {//&& x.TimeCaptured < endTime return(Context.Accelerations.Where(x => x.TimeCaptured > starttime && x.location_ID == (int)loc).ToList()); } }
public void TestGettersAndSetters() { // Initialize appointment entity SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); long dateTime2 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Acceleration Acceleration a1 = Acceleration.Generate(dateTime1, 0, 0, 0, loc1); //Acceleration t2 = Acceleration.Generate(dateTime, 2.0, loc1); a1.TimeCaptured = dateTime2; Assert.AreEqual(a1.TimeCaptured, dateTime2); a1.x = 1; Assert.AreEqual(a1.x, 1); a1.y = 1; Assert.AreEqual(a1.y, 1); a1.z = 1; Assert.AreEqual(a1.z, 1); a1.location_ID = 1; Assert.AreEqual(a1.location_ID, 1); }
public void TestAddAndRetrieveTemperatures() { Temperature[] temp = new Temperature[2]; SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; //Generate current time long dateTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Make 2 new temperatures Temperature t1 = Temperature.Generate(dateTime, 500.0, loc1); Temperature t2 = Temperature.Generate(dateTime, 999.0, loc1); temp[0] = (t1); temp[1] = (t2); DatabaseOperations.AddSensorData(temp, true); List <Temperature> tempReturn = DatabaseOperations.GetTEMPData(dateTime - 1, dateTime + 1, loc1); Assert.AreEqual(tempReturn.Count, 2); //Test first temp Assert.AreEqual(temp[tempReturn.Count - 1].location_ID, tempReturn[tempReturn.Count - 1].location_ID); Assert.AreEqual(temp[tempReturn.Count - 1].temp, tempReturn[tempReturn.Count - 1].temp); Assert.AreEqual(temp[tempReturn.Count - 1].TimeCapturedUTC, tempReturn[tempReturn.Count - 1].TimeCapturedUTC); //Test second temp Assert.AreEqual(temp[tempReturn.Count - 2].location_ID, tempReturn[tempReturn.Count - 2].location_ID); Assert.AreEqual(temp[tempReturn.Count - 2].temp, tempReturn[tempReturn.Count - 2].temp); Assert.AreEqual(temp[tempReturn.Count - 2].TimeCapturedUTC, tempReturn[tempReturn.Count - 2].TimeCapturedUTC); }
public void TestAddAndRetrieveAccelerations() { Acceleration[] acc = new Acceleration[2]; SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Make 2 new Accelerations Acceleration a1 = Acceleration.Generate(dateTime1, 1, 1, 1, loc1); Acceleration a2 = Acceleration.Generate(dateTime1, 2, 2, 2, loc1); acc[0] = (a1); acc[1] = (a2); DatabaseOperations.AddSensorData(acc, true); List <Acceleration> accReturn = DatabaseOperations.GetACCData(dateTime1 - 1, dateTime1 + 1, loc1); Assert.AreEqual(accReturn.Count, 2); //Test first acc Assert.AreEqual(acc[accReturn.Count - 1].location_ID, accReturn[accReturn.Count - 1].location_ID); Assert.AreEqual(acc[accReturn.Count - 1].x, accReturn[accReturn.Count - 1].x); Assert.AreEqual(acc[accReturn.Count - 1].y, accReturn[accReturn.Count - 1].y); Assert.AreEqual(acc[accReturn.Count - 1].z, accReturn[accReturn.Count - 1].z); Assert.AreEqual(acc[accReturn.Count - 1].TimeCaptured, accReturn[accReturn.Count - 1].TimeCaptured); //Test second acc Assert.AreEqual(acc[accReturn.Count - 2].location_ID, accReturn[accReturn.Count - 2].location_ID); Assert.AreEqual(acc[accReturn.Count - 2].x, accReturn[accReturn.Count - 2].x); Assert.AreEqual(acc[accReturn.Count - 2].y, accReturn[accReturn.Count - 2].y); Assert.AreEqual(acc[accReturn.Count - 2].z, accReturn[accReturn.Count - 2].z); Assert.AreEqual(acc[accReturn.Count - 2].TimeCaptured, accReturn[accReturn.Count - 2].TimeCaptured); }
public void TestAddAndRetrieveAccelerationBlob() { Acceleration[] accArray = new Acceleration[1]; long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; Acceleration acc = new Acceleration(); acc = Acceleration.Generate(dateTime1, 1.1, 2.2, 3.3, loc1); accArray[0] = acc; AccelerationBlob accBLob = new AccelerationBlob(); accBLob.BuildAccelerationString(accArray, dateTime1, true); //DatabaseOperations.AddAccelerationBlobData(acc, dateTime1, true); List <AccelerationBlob> accReturn = DatabaseOperations.GetAccBlobData(dateTime1 - 1, dateTime1 + 1); Assert.AreEqual(1, accReturn.Count); //Test only acc Assert.AreEqual("4.11582312545134~1.1~2.2~3.3~0-", accReturn[0].Blob); Assert.AreEqual(dateTime1, accReturn[0].TimeCaptured); }
public void TestAddAndRetrieveAccelerations() { List <Acceleration> acc = new List <Acceleration>(); SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; SensorLocationEnum loc2 = SensorLocationEnum.EL_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); long dateTime2 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Acceleration Acceleration a1 = Acceleration.Generate(dateTime1, 1, 1, 1, loc1); Acceleration a2 = Acceleration.Generate(dateTime2, 2, 2, 2, loc2); acc.Add(a1); acc.Add(a2); //Test acc Assert.AreEqual(acc[0].TimeCaptured, dateTime1); Assert.AreEqual(acc[0].x, 1); Assert.AreEqual(acc[0].y, 1); Assert.AreEqual(acc[0].z, 1); Assert.AreEqual(acc[0].location_ID, (int)loc1); Assert.AreEqual(acc[1].TimeCaptured, dateTime2); Assert.AreEqual(acc[1].x, 2); Assert.AreEqual(acc[1].y, 2); Assert.AreEqual(acc[1].z, 2); Assert.AreEqual(acc[1].location_ID, (int)loc2); }
/// <summary> /// returns the most recent temerature for a given location /// </summary> /// <param name="loc"></param> /// <returns></returns> public static Temperature GetCurrentTemp(SensorLocationEnum loc) { using (RTDbContext Context = InitializeDatabaseContext()) {// && x.TimeCaptured < endTime) ) && x.TimeCaptured.Ticks < endTime.Ticks try { return(Context.Temperatures.Where(x => x.location_ID == (int)loc).OrderByDescending(x => x.TimeCapturedUTC).First()); } catch { return(new Temperature()); } } }
public static Temperature Generate(long UTCtics, double temperature, SensorLocationEnum loc) { Temperature temp = new Temperature(); //Console.WriteLine( UTCtics ); temp.TimeCapturedUTC = UTCtics;// Constants.TIME.UnixEpoch.AddMilliseconds( UTCtics ); //Console.WriteLine( temp.TimeCaptured ); temp.temp = temperature; temp.location_ID = (int)loc; return(temp); }
public static Acceleration Generate(long UTCtics, int x, int y, int z, SensorLocationEnum loc) { Acceleration acx = new Acceleration(); acx.TimeCaptured = UTCtics;// Constants.TIME.UnixEpoch.AddMilliseconds( UTCtics ); acx.x = x; acx.y = y; acx.z = z; acx.location_ID = (int)loc; acx.acc = Math.Sqrt(x * x + y * y + z * z); return(acx); }
public void TestEquals() { // Initialize appointment entity SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; //Generate current time long dateTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Temperature Temperature t1 = Temperature.Generate(dateTime, 0.0, loc1); Temperature t2 = Temperature.Generate(dateTime, 2.0, loc1); Assert.AreEqual(t1, t1); Assert.AreNotEqual(t1, t2); Assert.AreNotEqual(t2, t1); }
public void TestGenerate() { // Initialize appointment entity SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Acceleration Acceleration a1 = Acceleration.Generate(dateTime1, 1, 1, 1, loc1); Assert.AreEqual(a1.TimeCaptured, dateTime1); Assert.AreEqual(a1.x, 1); Assert.AreEqual(a1.y, 1); Assert.AreEqual(a1.z, 1); Assert.AreEqual(a1.location_ID, (int)loc1); }
public void TestEquals() { SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; SensorLocationEnum loc2 = SensorLocationEnum.EL_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); long dateTime2 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Temperature Acceleration a1 = Acceleration.Generate(dateTime1, 1, 1, 1, loc1); Acceleration a2 = Acceleration.Generate(dateTime2, 2, 2, 2, loc2); Assert.AreEqual(a1, a1); Assert.AreNotEqual(a1, a2); Assert.AreNotEqual(a2, a1); }
public void TestGettersAndSetters() { // Initialize appointment entity SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; SensorLocationEnum loc2 = SensorLocationEnum.EL_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); long dateTime2 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Temperature Temperature t1 = Temperature.Generate(dateTime1, 0.0, loc1); t1.TimeCapturedUTC = dateTime2; Assert.AreEqual(t1.TimeCapturedUTC, dateTime2); t1.temp = 100.0; Assert.AreEqual(t1.temp, 100.0); t1.location_ID = 1; Assert.AreEqual(t1.location_ID, 1); }
public void TestGettersAndSetters() { // Initialize appointment entity SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); long dateTime2 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Acceleration AccelerationBlob a1 = new AccelerationBlob(); //Acceleration t2 = Acceleration.Generate(dateTime, 2.0, loc1); a1.Blob = "abc"; a1.Id = 17; a1.TimeCaptured = dateTime1; a1.TimeCaptured = dateTime2; Assert.AreEqual(a1.TimeCaptured, dateTime2); Assert.AreEqual(a1.Blob, "abc"); Assert.AreEqual(a1.Id, 17); }
public void TestSequenceEquals() { SensorLocationEnum loc1 = SensorLocationEnum.AZ_MOTOR; SensorLocationEnum loc2 = SensorLocationEnum.EL_MOTOR; Acceleration[] acc1 = new Acceleration[2]; Acceleration[] acc2 = new Acceleration[2]; Acceleration[] acc3 = new Acceleration[2]; Acceleration[] acc4 = new Acceleration[1]; //Generate current time long dateTime1 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); long dateTime2 = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); //Generate Temperature Acceleration a1 = Acceleration.Generate(dateTime1, 1, 1, 1, loc1); Acceleration a2 = Acceleration.Generate(dateTime2, 2, 2, 2, loc2); Acceleration a3 = Acceleration.Generate(dateTime2, 3, 3, 3, loc2); acc1[0] = a1; acc1[1] = a2; acc2[0] = a1; acc2[1] = a2; acc3[0] = a2; acc3[1] = a3; acc4[0] = a1; Assert.IsTrue(Acceleration.SequenceEquals(acc1, acc2)); Assert.IsFalse(Acceleration.SequenceEquals(acc2, acc3)); Assert.IsFalse(Acceleration.SequenceEquals(acc1, acc4)); }
/// <summary> /// add an Blob of acceleration data to the apropriate table /// </summary> /// <param name="acc"></param> /// <param name="location"></param> /// <param name="testflag"></param> public static void AddAccelerationBlobData(AccelerationBlob acc, SensorLocationEnum location, bool testflag = false) { Thread t = new Thread(() => { if (!USING_REMOTE_DATABASE) { using (RTDbContext Context = InitializeDatabaseContext()) { //based on the specified location enum, add the blob to the corret table switch (location) { case SensorLocationEnum.AZ_MOTOR: Context.AzimuthAccelerationBlobs.Add((AzimuthAccelerationBlob)acc); break; case SensorLocationEnum.COUNTERBALANCE: Context.CounterbalanceAccelerationBlobs.Add((CounterbalanceAccelerationBlob)acc); break; case SensorLocationEnum.EL_MOTOR: Context.ElevationAccelerationBlobs.Add((ElevationAccelerationBlob)acc); break; } SaveContext(Context); } } }); t.Start(); if (testflag) { t.Join(); } }
/// <summary> /// get temp between starttime and now from sensor location loc /// </summary> /// <param name="starttime"></param> /// <param name="endTime"></param> /// <param name="loc"></param> /// <returns></returns> public static List <Temperature> GetTEMPData(long starttime, long endTime, SensorLocationEnum loc) { using (RTDbContext Context = InitializeDatabaseContext()) {// && x.TimeCaptured < endTime) ) && x.TimeCaptured.Ticks < endTime.Ticks return(Context.Temperatures.Where(x => x.TimeCapturedUTC > starttime && x.location_ID == (int)loc).ToList()); } }
/// <summary> /// This is a helper function to get the acceleration array from the byte data. /// </summary> /// <param name="currPointer">This is the current place we are in the byte array. We want to pass this by reference /// so that future functions know where to begin.</param> /// <param name="data">This is the byte array that we are converting in to acceleration.</param> /// <param name="size">This is the size of the acceleration data that we expect to see in the byte array.</param> /// <param name="sensor">This is the sensor that the data is being created for.</param> /// <returns></returns> public static Acceleration[] GetAccelerationFromBytes(ref int currPointer, byte[] data, int size, SensorLocationEnum sensor) { Acceleration[] acceleration = new Acceleration[size]; for (int j = 0; j < size; j++) { acceleration[j] = Acceleration.Generate( DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), (short)(data[currPointer++] << 8 | data[currPointer++]), (short)(data[currPointer++] << 8 | data[currPointer++]), (short)(data[currPointer++] << 8 | data[currPointer++]), sensor ); } return(acceleration); }
/// <summary> /// This is a helper function to get the temperature data from the byte array we receive from the Sensor Network. /// </summary> /// <param name="currPointer">This is the current place we are in the byte array. We want to pass this by reference /// so that future functions know where to begin.</param> /// <param name="data">This is the byte array that we are converting in to acceleration.</param> /// <param name="size">This is the size of the acceleration data that we expect to see in the byte array.</param> /// <param name="sensor">This is the sensor that the data is being created for.</param> /// <returns></returns> public static Temperature[] GetTemperatureFromBytes(ref int currPointer, byte[] data, int size, SensorLocationEnum sensor) { Temperature[] temperature = new Temperature[size]; for (int j = 0; j < size; j++) { temperature[j] = Temperature.Generate( DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), (double)((short)((data[currPointer++] << 8 | data[currPointer++]))) / 16, // Converting to Celsius by default because we receive raw data sensor ); } return(temperature); }
public static Acceleration Generate(long UTCtics, double acc, double x, double y, double z, SensorLocationEnum loc) { Acceleration acx = new Acceleration(); acx.TimeCaptured = UTCtics;// Constants.TIME.UnixEpoch.AddMilliseconds( UTCtics ); acx.acc = acc; acx.x = x; acx.y = y; acx.z = z; acx.location_ID = (int)loc; return(acx); }