vexide 0.5.0 is our biggest update of all time. We focused on hopefully finalizing all of our device APIs in this update and on improving the quality of our documentation. We highly recommend reading our Thanksgiving blog post for more info.
Changelog
Added
- You can now detect controller release occurrences with
ButtonState::is_now_released. - Added support for 5.5W motors with a new constructor (
Motor::new_exp) and four new getters (Motor::max_voltage,Motor::motor_type,Motor::is_v5, andMotor::is_exp) forMotor. (#167) - Added support for the V5 Workcell Electromagnet smart device. (#176)
- The conditions upon which functions return errors are now documented. (#155).
- Implemented the
Copytrait forBannerTheme. - Added a getter that retrieves a
Controller’s identifier. (#189) - Added support for controllers in
DynamicPeripherals. (#196) - Added the ability to return Smart Ports, ADI ports, the display, and controllers to
DynamicPeripherals. (#196) - Added a
SmartDevice::UPDATE_INTERVALconstant for all devices, representing the amount of time between data updates from a given device. (#199) (Breaking Change) - Added a
togglemethod toAdiDigitalOutto toggle between level outputs (210). - Added the
OpticalSensor::GESTURE_UPDATE_INTERVAL(50mS) constant (#211). - Added a
togglemethod toAdiDigitalOutto toggle between level outputs. - Added a
SerialPort::set_baud_ratemethod for the adjusting baudrate of a generic serial smartport after initialization. (#217) - Added fields containing relevant failure information to several error types (#221) (Breaking Change)
- Added support for the power button in the
ControllerAPI. (#231) (Breaking Change) - Added implementations of
Mul<i64>andDiv<i64>forPosition, allowing for opaque scaling (#230) - Added panic hook support comparable to the Rust standard library through
vexide::panic::set_hookandvexide::panic::take_hook(#234) - Added support for legacy ADI servos through the
AdiServoAPI. (#241) - Added support for the V5 AI Vision Sensor (#58)
- Added FOV constants to the Vision Sensor (#58)
- Added missing
SendandSyncimpls for RwLock. (#239) - Added the
Proportionalfont family and support for fractional font scaling. (#248) (Breaking Change) - Added
AdiDigitalOut::with_initial_stateto set the initial state of a digital output while creating it (#246) - Added
Display::draw_textto writeTextto aDisplay. (#247) - Added support for the legacy Yaw Rate Gyroscope through the
AdiGyroscopestruct. (#236) - Added support for reading/writing to the Brain’s SDCard slot using the
vexide::core::fsmodule. (#22)
Fixed
AdiAddrLed::set_pixelwill now correctly return an error if the device’s ADI expander is disconnected. (#155)- The
dbg!();now works as expected when no arguments are supplied to it. (#175) Motor::velocitynow correctly returns the estimated velocity instead of target velocity. (#184) (Breaking Change)- Removed useless generics from
AdiAddrLed::new. (#197) (Breaking Change) - IMU calibration timeouts should no longer appear when the IMU is in working condition. (#212)
- Fixed an issue preventing ADI updates in fast loops. (#210)
Motor::statuscan now actually return theMotorStatus::BUSYflag. (#211)- Fixed a memory leak on every
RadioLinkconstruction. (#220) - Fixed a panic in
RadioLink::openthat would occur if a program using a VEXlink radio was ran twice. (#243) - Fixed a bug with IMU reset offsets being applied incorrectly. (#242)
Changed
- Controller state is now returned all at once to reduce error checking. (#152) (Breaking Change)
- Controller bumper naming scheme has been changed from
<left/right>_trigger_<1/2>tobutton_<r/l><1/2>. (#204) (Breaking Change) Button::was_pressedhas been renamed toButtonState::is_now_pressed.battery::capacitynow returns from 0.0-1.0 rather than 0-100.battery::voltageis now returned in volts rather than millivolts.battery::currentis now returned in amps rather than milliamps.- Changed the incorrect return types of
AdiSolenoid::is_openandAdiSolenoid::is_closedfromLogicLeveltobool. (#164) (Breaking Change) - Renamed
Motor::MAX_VOLTAGEtoMotor::V5_MAX_VOLTAGEand addedMotor::EXP_MAX_VOLTAGE. (#167) (Breaking Change) - Moved the ability to convert Smart devices to
SmartPortsout of theSmartDevicetrait and into the devices themselves. (#171) (Breaking Change) - Renamed
SmartDeviceType::MagnettoSmartDeviceType::Electromagnet. (#176) (Breaking Change) - Getters and constructors will now create warnings when their return values are not used. (#155)
- Renamed
OpticalSensor::rgbtoOpticalSensor::colorandOpticalSensor::rawtoOpticalSensor::raw_color(#179) (Breaking Change). - Made the following functions infallible:
AdiAccelerometer::sensitivity,AdiAccelerometer::max_acceleration,AdiPotentiometer::potentiometer_type,AdiPotentiometer::max_angle,Motor::target, andRotationSensor::direction. (#182) (Breaking Change) OpticalSensor::led_brightnessnow returns a number from0.0-1.0rather than a number from1-100. (#155) (Breaking Change)- Renamed
Motor::update_profiled_velocitytoMotor::set_profiled_velocity. (#155) (Breaking Change) Mutexis now?Sized, matching the behavior of the standard library. (#202) (Breaking Change)- Switched to the
rgbfor color storage.vexide::devices::coloris nowvexide::devices::rgbwhich re-exports theRgbtype. (#201) (Breaking Change) - Renamed
AddrledError::AditoAddrledError::Port. (#203) (Breaking Change) - Renamed
GpsImu::set_data_ratetoGpsImu::set_data_interval. (#199) (Breaking Change) - Renamed
InertialSensor::set_data_ratetoInertialSensor::set_data_interval. (#199) (Breaking Change) - Renamed
Motor::DATA_WRITE_INTERVALtoMotor::WRITE_INTERVAL. (#199) (Breaking Change) - Renamed
InertialSensor::acceltoInertialSensor::acceleration(#213) (Breaking Change) - Renamed
GpsImu::acceltoGpsImu::acceleration(#211) (Breaking Change) SerialPort::read_bytenow takes&mut self. (#215) (Breaking Change)OpticalSensor::last_gesturenow returns anOption<Gesture>if no gesture was detected. (#215) (Breaking Change)- The
timefield onGestureis now returned as an instance ofSmartDeviceTimestamp. (#215) (Breaking Change) GestureandGestureDirectionno longer implementsDefault. (#215) (Breaking Change)- Renamed
vexide::devices::geometrytovexide::devices::math. (#218) (Breaking Change) - Replaced the custom
Point2type withmint’sPoint2type for better interop. (#218) (Breaking Change) SmartPort::device_typenow returns anOption<SmartDeviceType>which returnsNoneif no device is connected or configured to a port. (#219) (Breaking Change)- Renamed the
LinkError::NonTerminatingNulandControllerError::NonTerminatingNulvariants to simplyNuland added a source error. (#220) (Breaking Change) - Made
ControllerScreenmethods andController::rumbleasynchronous and added synchronoustry_<action>variants. (#222) (Breaking Change) - Renamed
ControllerScreen::MAX_LINE_LENGTHtoControllerScreen::MAX_COLUMNS. (#222) (Breaking Change) - Refactored
InertialCalibrateFutureto an opaque wrapper over the internal state machine. (#225) (Breaking Change) GpsSensor::newis now infallible and no longer returns aResult. (#240) (Breaking Change)RadioLink::newcan now only fail onNulErrorand will not bail if a radio is disconnected. (#240) (Breaking Change)RadioLink::unread_bytescan now return aLinkError::ReadError. (#243)RadioLink::is_linkedis now infallible. (#243) (Breaking Change)
Removed
- Removed
Motor::DATA_READ_INTERVAL. UseMotor::UPDATE_INTERVALinstead. (#199) (Breaking Change) - Removed
InertialSensor::CALIBRATION_TIMEOUTand replaced it with theInertialSensor::CALIBRATION_START_TIMEOUTandInertialSensor::CALIBRATION_START_TIMEOUTconstants. (#212) (Breaking Change) AdiDigitalOut::levelnow reads the actual reported level value from VEXos, and thus now returns aResult. (#210) (Breaking Change)- Removed the defunct
usdmodule fromvexide::devices. (#198) (Breaking Change) - Removed
AdiSolenoid. UseAdiDigitalOutinstead. (#210) (Breaking Change) - Removed the deprecated
ZERO_POSITIONandZERO_VELOCITYMotorstatus flags. (#211) (Breaking Change) GestureDirection::Nonehas been removed, asOpticalSensor::next_gesturenow returns anOption<Gesture>. (#215) (Breaking Change)GestureDirectionno longer has aFromconversion foru32. (#215) (Breaking Change)- Removed the
nalgebrafeature. All math types should natively support nalgebra conversions without any additional features. (#218) (Breaking Change) - Removed
SmartDeviceType::None.SmartPort::device_typenow returns anOption<SmartDeviceType>which serves the same purpose. (#219) (Breaking Change) - Removed
Position-to-PositionMul/Divops, as they were mathematically unsound. Prefer usingPosition-to-scalar operations for this. (#237) (Breaking Change) - Removed
LinkError::Nul. (#240) (Breaking Change) - Removed
LinkError::Port, because it was broken. VEXlink will no longer perform port validation. (#243) (Breaking Change) - Removed the
TextSizeenum. Use the associated constants on the newFontSizestruct instead. (#248) (Breaking Change)
New Contributors
@zabackary made their first contribution in #164!