Ejemplo n.º 1
0
 private static void parseChannel(Tag tag, SmcChannel channel, string name, SmcChannelSettings cs, List <string> warnings)
 {
     if (assertChild(tag, name, warnings))
     {
         Tag channelTag = tag.children[name];
         parseBool(channelTag, "Invert", ref cs.invert, warnings);
         if (assertValue(channelTag, "AlternateUse", warnings))
         {
             try
             {
                 cs.alternateUse = (SmcChannelAlternateUse)Enum.Parse(typeof(SmcChannelAlternateUse), channelTag.values["AlternateUse"]);
             }
             catch
             {
                 warnings.Add("Invalid AlternateUse value \"" + channelTag.values["AlternateUse"] + "\".");
             }
         }
         if (channel.type() == SmcChannelType.Analog && assertValue(channelTag, "PinMode", warnings))
         {
             try
             {
                 cs.pinMode = (SmcPinMode)Enum.Parse(typeof(SmcPinMode), channelTag.values["PinMode"]);
             }
             catch
             {
                 warnings.Add("Invalid PinMode value \"" + channelTag.values["PinMode"] + "\".");
             }
         }
         parseU8(channelTag, "ScalingDegree", ref cs.scalingDegree, warnings);
         parseRange(channelTag, "Error", ref cs.errorMin, ref cs.errorMax, warnings);
         parseRange(channelTag, "Input", ref cs.inputMin, ref cs.inputMax, warnings);
         parseRange(channelTag, "InputNeutral", ref cs.inputNeutralMin, ref cs.inputNeutralMax, warnings);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Converts the Raw Value (or Unlimited Raw Value) of a channel in to a user
        /// friendly string that expresses the value in standard units.
        /// For example: "1501 us" or "1452 mV".  It uses a non-ascii character to
        /// encode the Greek letter mu in microseconds.
        /// </summary>
        public static String rawValueToStandardUnitsString(this SmcChannel channel, UInt16 rawValue)
        {
            switch (channel.type())
            {
            case SmcChannelType.RC: return(((rawValue + 2) / 4).ToString() + " \u03BCs");

            case SmcChannelType.Analog: return((rawValue * 3300 / 4095).ToString() + " mV");

            default: return(rawValue.ToString());    // should not happen
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Returns the default settings for the given channel.
 /// </summary>
 /// <param name="channel"></param>
 /// <returns></returns>
 public static SmcChannelSettings defaults(SmcChannel channel)
 {
     if (channel.type() == SmcChannelType.Analog)
     {
         return(SmcChannelSettings.defaultAnalogSettings());
     }
     else
     {
         return(SmcChannelSettings.defaultRCSettings());
     }
 }
Ejemplo n.º 4
0
 private static void WriteElementChannelSettings(this XmlWriter writer, SmcChannel channel, SmcChannelSettings cs)
 {
     writer.WriteStartElement(channel.ToString());
     writer.WriteElementString("AlternateUse", cs.alternateUse.ToString());
     if (channel.type() == SmcChannelType.Analog)
     {
         writer.WriteElementString("PinMode", cs.pinMode.ToString());
     }
     writer.WriteElementBool("Invert", cs.invert);
     writer.WriteElementU32("ScalingDegree", cs.scalingDegree);
     writer.WriteElementRange("Error", cs.errorMin, cs.errorMax);
     writer.WriteElementRange("Input", cs.inputMin, cs.inputMax);
     writer.WriteElementRange("InputNeutral", cs.inputNeutralMin, cs.inputNeutralMax);
     writer.WriteEndElement();
 }
Ejemplo n.º 5
0
 private static void WriteElementChannelSettings(this XmlWriter writer, SmcChannel channel, SmcChannelSettings cs)
 {
     writer.WriteStartElement(channel.ToString());
     writer.WriteElementString("AlternateUse", cs.alternateUse.ToString());
     if (channel.type() == SmcChannelType.Analog)
     {
         writer.WriteElementString("PinMode", cs.pinMode.ToString());
     }
     writer.WriteElementBool("Invert", cs.invert);
     writer.WriteElementU32("ScalingDegree", cs.scalingDegree);
     writer.WriteElementRange("Error", cs.errorMin, cs.errorMax);
     writer.WriteElementRange("Input", cs.inputMin, cs.inputMax);
     writer.WriteElementRange("InputNeutral", cs.inputNeutralMin, cs.inputNeutralMax);
     writer.WriteEndElement();
 }
Ejemplo n.º 6
0
 private static void parseChannel(Tag tag, SmcChannel channel, string name, SmcChannelSettings cs, List<string> warnings)
 {
     if (assertChild(tag, name, warnings))
     {
         Tag channelTag = tag.children[name];
         parseBool(channelTag, "Invert", ref cs.invert, warnings);
         if (assertValue(channelTag, "AlternateUse", warnings))
         {
             try
             {
                 cs.alternateUse = (SmcChannelAlternateUse)Enum.Parse(typeof(SmcChannelAlternateUse), channelTag.values["AlternateUse"]);
             }
             catch
             {
                 warnings.Add("Invalid AlternateUse value \"" + channelTag.values["AlternateUse"] + "\".");
             }
         }
         if (channel.type() == SmcChannelType.Analog && assertValue(channelTag, "PinMode", warnings))
         {
             try
             {
                 cs.pinMode = (SmcPinMode)Enum.Parse(typeof(SmcPinMode), channelTag.values["PinMode"]);
             }
             catch
             {
                 warnings.Add("Invalid PinMode value \"" + channelTag.values["PinMode"] + "\".");
             }
         }
         parseU8(channelTag, "ScalingDegree", ref cs.scalingDegree, warnings);
         parseRange(channelTag, "Error", ref cs.errorMin, ref cs.errorMax, warnings);
         parseRange(channelTag, "Input", ref cs.inputMin, ref cs.inputMax, warnings);
         parseRange(channelTag, "InputNeutral", ref cs.inputNeutralMin, ref cs.inputNeutralMax, warnings);
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Returns the default settings for the given channel.
 /// </summary>
 /// <param name="channel"></param>
 /// <returns></returns>
 public static SmcChannelSettings defaults(SmcChannel channel)
 {
     if (channel.type() == SmcChannelType.Analog)
     {
         return SmcChannelSettings.defaultAnalogSettings();
     }
     else
     {
         return SmcChannelSettings.defaultRCSettings();
     }
 }