예제 #1
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     builder.SmartDashboardType = "3AxisAccelerometer";
     builder.AddDoubleProperty("X", () => X.StandardGravity, null);
     builder.AddDoubleProperty("Y", () => Y.StandardGravity, null);
     builder.AddDoubleProperty("Z", () => Z.StandardGravity, null);
 }
예제 #2
0
#pragma warning restore CA1063 // Implement IDisposable Correctly

        public virtual void InitSendable(ISendableBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.SmartDashboardType = "Gyro";
            builder.AddDoubleProperty("Value", () => Angle.Degrees, null);
        }
예제 #3
0
        public override void InitSendable(ISendableBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.SmartDashboardType = "Speed Controller";
            builder.IsActuator         = true;
            builder.SafeState          = SetDisabled;
            builder.AddDoubleProperty("Value", Get, Set);
        }
예제 #4
0
        public virtual void InitSendable(ISendableBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.SmartDashboardType = "PWM";
            builder.IsActuator         = true;
            builder.SafeState          = SetDisabled;
            builder.AddDoubleProperty("Value", () => Raw, v => Raw = (int)v);
        }
예제 #5
0
        void ISendable.InitSendable(ISendableBuilder builder)
        {
            builder.SmartDashboardType = "Scheduler";
            NetworkTableEntry namesEntry  = builder.GetEntry("Names");
            NetworkTableEntry idsEntry    = builder.GetEntry("Ids");
            NetworkTableEntry cancelEntry = builder.GetEntry("Cancel");

            builder.UpdateTable = () =>
            {
                var ids = new Dictionary <double, ICommand>();

                foreach (var command in m_scheduledCommands.Keys)
                {
                    ids.Add(command.GetHashCode(), command);
                }

                var toCancel = cancelEntry.GetDoubleArray(ReadOnlySpan <double> .Empty);
                foreach (var hash in toCancel)
                {
                    if (ids.TryGetValue(hash, out var command))
                    {
                        Cancel(command);
                        ids.Remove(hash);
                    }
                    cancelEntry.SetDoubleArray(ReadOnlySpan <double> .Empty);
                }

                var names = new List <string>();

                foreach (var command in ids.Values)
                {
                    names.Add(command.Name);
                }

                namesEntry.SetStringArray(names.ToArray());
                idsEntry.SetDoubleArray(ids.Keys.ToArray());
            };
        }
예제 #6
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     builder.SmartDashboardType = "Command";
     builder.AddStringProperty(".name", () => Name, null);
     builder.AddBooleanProperty("running", () => ((ICommand)this).IsScheduled, value =>
     {
         ICommand c = this;
         if (value)
         {
             if (!c.IsScheduled)
             {
                 c.Schedule();
             }
         }
         else
         {
             if (c.IsScheduled)
             {
                 c.Cancel();
             }
         }
     });
 }
예제 #7
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     builder.SmartDashboardType = "String Chooser";
     builder.GetEntry(INSTANCE).SetDouble(m_instance);
     builder.AddStringProperty(DEFAULT, () => m_defaultChoice, null);
     builder.AddStringArrayProperty(OPTIONS, () => m_map.Keys.ToArray(), null);
     builder.AddStringProperty(ACTIVE, () =>
     {
         lock (m_mutex)
         {
             if (m_selected != null)
             {
                 return(m_selected);
             }
             else
             {
                 return(m_defaultChoice);
             }
         }
     }, null);
     lock (m_mutex)
     {
         m_activeEntries.Add(builder.GetEntry(ACTIVE));
     }
     builder.AddStringProperty(SELECTED, null, val =>
     {
         lock (m_mutex)
         {
             m_selected = val;
             foreach (var entry in m_activeEntries)
             {
                 entry.SetString(val);
             }
         }
     });
 }
예제 #8
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     (m_analogInput as ISendable).InitSendable(builder);
 }
예제 #9
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
 }
예제 #10
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     builder.SmartDashboardType = "Duty Cycle";
     builder.AddDoubleProperty("Frequency", () => Frequency.Hertz, null);
     builder.AddDoubleProperty("Output", () => Output, null);
 }