Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create MarkerCommands #8

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions src/main/kotlin/frc/robot/lib/MarkerCommands.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package frc.robot.lib

import edu.wpi.first.wpilibj.Alert
import edu.wpi.first.wpilibj.DataLogManager
import edu.wpi.first.wpilibj2.command.Command
import edu.wpi.first.wpilibj2.command.Commands

const val ABNORMAL_EVENT_NAME = "PROBLEM!"
val alert = Alert(ABNORMAL_EVENT_NAME, Alert.AlertType.kWarning)

private fun markEvent(eventName: String): Command = Commands.runOnce({
DataLogManager.log(eventName)
alert.set(true)
}).withTimeout(5.0).andThen(Commands.runOnce({
alert.set(false)
Comment on lines +13 to +15
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this just for logging purposes? If so, will an alert be shown to the drivers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is for logging purposes. The driver calls this command when there's issues and it'll save the timestamp.

Copy link
Member

@katzuv katzuv Dec 25, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it might distract the driver. Because we do want to use the alerts minimally so the drivers will actually look at them when critical errors happen.
Also, where is the timestamp saved?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we open the timestamp in advantagescope we can see when it exists and when it doesn't

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. Still I'm not sure why you need this as an alert? Why is using log() not sufficient?
If the problem is that multiple messages will overlap, you can just add the timestamp or an index number to the message.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we do it as alert we can make it show up in advantagescope. If we log it we'll have to search through the logs for when it happend.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. You still log it
  2. The messages log is used by team code only, it shouldn't have other types of messages.
  3. Errors and warnings highlighted by AdvantageScope.
  4. You can use another message entry for the driver markers.

I'm aware of the alert feature 🙂 but this is not the use case here, they should only be used to notify the drivers.

}))

fun markAbnormalEvent(): Command = markEvent(ABNORMAL_EVENT_NAME)