public static double?Convert(TelemetryKey key, double?value)
        {
            // Don't check, return as is
            if (value == null)
            {
                return(null);
            }

            // Try to get field data, if none, return as is
            TelemetryField field = TelemetryKeys.GetTelemetryFieldByKeyOrNull(key);

            if (field == null)
            {
                return(value);
            }

            // We have a semantic, check if it is to be coverted to degrees
            if (field.SemanticSpecified && DEGREE_VALUES.Contains(field.Semantic))
            {
                return(value.Value / Math.PI * 180.0);
            }

            // Return as is
            return(value);
        }
        public void Initialize(bool isTelemetryEnabled, TelemetryKeys telemetryKey)
        {
            // save telemetry status
            this.IsTelemetryEnabled = isTelemetryEnabled;

            // save the telemetry key
            this.ActiveKey = telemetryKey;

            // if telemetry is enabled, create the logger
            if (this.IsTelemetryEnabled)
            {
                // configure for logging/telemetry
                switch (telemetryKey)
                {
                // for Test, we'll just log to a file
                case TelemetryKeys.Test:
                default:
                    LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Info, LogLevel.Fatal, new StreamingFileTarget());
                    TestLog = LogManagerFactory.DefaultLogManager.GetLogger <TelemetryService>();
                    break;

                // for Prod, we'll log to the Store
                case TelemetryKeys.Prod:
                    ProdLog = StoreServicesCustomEventLogger.GetDefault();
                    break;
                }
            }
        }