/// <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());
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 6
0
        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());
         }
     }
 }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 15
0
        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));
        }
Ejemplo n.º 16
0
        /// <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);
        }
Ejemplo n.º 20
0
        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);
        }