Exemplo n.º 1
0
        public void Test_TAGProcessorStateBase_SetGPSAccuracyState()
        {
            var state = new TAGProcessorStateBase();

            Assert.Equal(GPSAccuracy.Unknown, state.GPSAccuracy);
            state.SetGPSAccuracyState(GPSAccuracy.Fine, 1000);
            Assert.True(state.GPSAccuracy == GPSAccuracy.Fine && state.GPSAccuracyErrorLimit == 1000, "Initial value incorrect");
        }
Exemplo n.º 2
0
        public override bool ProcessUnsignedIntegerValue(TAGValueMatcherState state, TAGProcessorStateBase valueSink,
                                                         TAGDictionaryItem valueType, uint value)
        {
            bool result = valueType.Type == TAGDataType.t16bitUInt;

            if (result)
            {
                GPSAccuracy Accuracy;

                // Shift bits right so that we can check the top 2 bits
                ushort WordToCheck = (ushort)(value >> 14); //16-bit UINT

                switch (WordToCheck)
                {
                case 0:
                    Accuracy = GPSAccuracy.Fine;
                    break;

                case 1:
                    Accuracy = GPSAccuracy.Medium;
                    break;

                case 2:
                    Accuracy = GPSAccuracy.Coarse;
                    break;

                default:
                    Accuracy = GPSAccuracy.Unknown;
                    break;
                }

                // Lose the top 2 bits; what remains is the error limit in mm
                ushort ErrorLimit = (ushort)(value & 0x3fff);

                valueSink.SetGPSAccuracyState(Accuracy, ErrorLimit);
            }

            return(result);
        }