forked from FTCLib/FTCLib
-
Notifications
You must be signed in to change notification settings - Fork 14
feat: callbacks encoders #18
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
Open
qykr
wants to merge
26
commits into
FTC-23511:public-beta
Choose a base branch
from
MidKnightMadness:feat-callbacks-encoders
base: public-beta
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat: callbacks encoders #18
qykr
wants to merge
26
commits into
FTC-23511:public-beta
from
MidKnightMadness:feat-callbacks-encoders
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Conflicts: # core/src/main/java/com/seattlesolvers/solverslib/command/CallbackCommand.java
refactor: renamed zero to reset method in Encoder
refactor: renamed zero to reset method in Encoder
# Conflicts: # core/src/main/java/com/seattlesolvers/solverslib/hardware/IncrementalEncoder.java # core/src/main/java/com/seattlesolvers/solverslib/hardware/motors/Motor.java # core/src/main/java/com/seattlesolvers/solverslib/kinematics/wpilibkinematics/DifferentialDriveOdometry.java
…oder, IncrementalEncoder)
…soluteAnalogEncoder due to dependency injection
Collaborator
|
This is a pretty large change, so I'm going to only merge in |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note: Callbacks and AbsoluteAnalogEncoder are untested, but IncrementalEncoder is tested
What kind of change does this PR introduce?
Encoder,EncoderBase, andIncrementalEncoder.AbsoluteAnalogEncodernow extendsEncoderBase. A cool consequence is thatIncrementalEncodernow has angle related methods.CallbackCommandto easily add custom callbacks to commands. Also added default methoduninterruptible()toCommandto conveniently wrap inUninterruptibleCommand. If more convenience methods are welcome, let me know.CRServoExnow supportsAbsoluteAnalogEncoder,IncrementalEncoder, and anything that is anEncoder. This does require adding a generic, though.CRServoExconstructor specifically made forAbsoluteAnalogEncoderdue to dependency injection principles.I tried, but I can't add default methods
whenandwhenSelfinCommand. It requires knowledge of the self type, which is impossible unless you include it as a generic. However, doing that would break literally everything. However, the two most basic ones,when(BooleanSupplier condition, Runnable runnable)andwhen(BooleanSupplier condition, Command command)are still included in Command by default.Did this PR introduce a breaking change?
Motor.Encoder, everything is now extracted intoIncrementalEncoder. Old methods kept. I can revert this change easily if it's considered too breaking. You could, of course, put theIncrementalEncoderimplementation as a revised Motor.Encoder and removeIncrementalEncoderentirely.AbsoluteAnalogEncodermethods and constructors the same, but deprecated some in favor of better names. It won't break old code.AbsoluteAnalogEncoderis new anyways so it doesn't even matter that much.Motor.Directionis extracted intoRotationDirection, since it's very common. Don't know if this is a good idea, can revert.