Releases: ScarletLib/Scarlet
Scarlet 0.6.0
Note that we have seen issues with RPi GPIO pins, specifically input interrupts. We recommend using the new SoftwareInterrupt feature to avoid untraceable NullReferenceExceptions.
Features:
- Added
PCA9535Ecomponent (bidirectional I2C to GPIO expander). - Added
Scarlet.Components.Interfacesnamespace for components that act as bidirectional translation layers. For example, a device with analogue inputs and outputs in one would be considered an interface. - Added Pololu High-Power Motor Driver G2 component.
- Added
MAX5715DAC component. Also works with theMAX5713andMAX5714. - Added analogue transforms. These are useful for modelling a system with resistor dividers or other non-unity scaling, or even non-linearity in software for easier control/reading.
- Added
LTC6992analogue-to-PWM component.
Bugfixes:
- Fixed excessive try/catch in networking system causing slowdowns.
Other:
- Added trace logging functionality for
BNO055device.
Scarlet 0.5.2
Note that we have seen issues with RPi GPIO pins, specifically input interrupts. We recommend using the new SoftwareInterrupt feature to avoid untraceable NullReferenceExceptions.
Features:
- Added more helpful error messages to failed SPI pin registrations in
BBBPinManager. - Added HX711 load sensor amplifier component.
- Added ability for GPSes to work in conjunction with other sensors, like the BNO055 to improve readings, via the
IGPSinterface. - Added
DeclinationHelperto do magnetic pole-related computations.
Bugfixes:
- Fixed BME280 pressure giving incorrect readings.
Other:
- Added trace logging functionality to MAX31855.
- Some documentation updates.
Scarlet 0.5.1
Note that we have seen issues with RPi GPIO pins, specifically input interrupts. We recommend using the new SoftwareInterrupt feature to avoid untraceable NullReferenceExceptions.
Breaking Changes:
- Added requirement for
Exit()toISubsystem. Servochanged significantly, the old one didn't actually work anyways.
Features:
- Average filter now includes continuous mode.
- VL53L0X now has a basic, working implementation.
- Added
SoftwareInterrupt. Takes inIDigitalIn, acts asIDigitalInwithIInterruptSourcecapability. Useful for inputs that don't support interrupts, or ones where interrupts aren't working properly. - Added GPIO performance test utility to TestSuite on RPi.
Bugfixes:
- Added static class-compatible trace logging. Now, just pass in
typeof(YourClassHere)in place ofthisin the regular call.
Other:
- Tons of documentation and code style updates.
- Added
System.Half(16b, half-precision floating-point number) library. - Vectorized logo, and re-made raster versions to look nicer.
Scarlet 0.5.0
This is the first smaller release as part of our plan to reduce the time between versions. As such, there aren't as many changes as some of the previous releases, but it's still a useful upgrade. Here's a list of changes:
Features:
- Implemented Trace Logging! 🎉
- Implemented BME280 atmospheric sensor.
- Implemented MQ135 air pollution sensor (without temp/humidity calibration).
- Implemented TLV2544 ADC.
- Implemented
SetDelay(float ClockDelay)to allIPWMOutputimplementations, and made it an interface requirement. Since not all hardware supports this, some platforms may ignore this setting. - PCA9685 now tries to turn off PWM outputs when the objects gets GC'ed (falls out of scope or program exits). Don't rely on it though!
- Added
RGBLED.RedGreenGradient(...)to easily display values within a range as a colour in a red-green gradient.
Bugfixes:
- PCA9685 now actually applies the
Polaritysetting to the output. - RPi I2C and SPI buses should now be thread-safe.
- Minor scaling issue in RGBLED output fixed.
- DataLog
Flush()behaviour fixed.
Other:
- Removed Kalman filter, as it was untested, complex, and not used by anyone. We'll re-implement it later on.
- We're starting to include XML documentation comments with this release, so that they show up in IntelliSense for DLL users as well.
Scarlet 0.4.0
It's finally here!
There are a ton of changes in this release. Lots of new functionality, lots of bug fixes, and quite a few general changes. There are a few potentially breaking changes, but they shouldn't affect too much.
We do apologize for the long delay between releases, we'll try to release much more frequently from here out.
BREAKING CHANGES:
IDigitalInno longer requires anything interrupt-related, so that future non-interrupt-capable digital inputs can be implemented.- Use
IInterruptSourceinstead (all previous functionality moved here). Current code for adding interrupts will need to do something like this instead:((IInterruptSource)YourDigitalInput).RegisterInterruptHandler(...)
- Use
- Sensors now have a new required method,
public DataUnit GetData(), and string property,System, which are used by the new DataLog system. This only affects those of you who have custom sensors that have not yet been integrated into Scarlet (get on that!)- As a result, some methods have been renamed to make space for this new standardized one:
MPU6050:MPUData GetData()->GetReading()VEML6070:int GetData()->GetReading()
- As a result, some methods have been renamed to make space for this new standardized one:
Components.Sensors.Encoderremoved. It wasn't functional anyways.
Features:
- New DataLog system allows for easier logging of sensor and other telemetry data to CSV.
- Added
RGBLEDcomponent - Added
PCA968516-ch PWM output component - Added
INA226current sensor component - Added TestSuite, for testing various functionality on real hardware
- Added
VH400soil moisture sensor component - Added 16b I2C methods to
I2CBusPi - Added
UtilData.SwapBytes()(useful for 16b I2C) - Added
VESCmotor controller component - Working CAN implementation
- Also supports Extended CAN
- Added
UARTFileBusBBBIO system - Added CRC16 calculator to
UtilData - Added
LS7366Rencoder counter component beta implementation - Implemented
ByteParser
Bug Fixes:
StateStorecan now handle post-save-crash operations, and will warn the user if there was an issue saving last time, then automatically recover the past data.- Fixed
TalonMCoutput math - Fixed crash if
Server.Stop()is called beforeServer.Start() - Fixed operation order for motor controller shutdown
- Made I2C register reads on Pi actually happen (nothing was being done before, doh)
- Fixed long startup time on dynamic filters
- Fixes issue preventing Cytron motor controller working properly
- "Fixed" MTK3339 GPS issues
Other:
IPWMOutput.SetFrequency()now takes a float instead of int, but only some platforms/devices will support decimals. Other platforms will simply round.IMotor,ISensor,IServo,ISubsystemno longer requireEventTriggeredmethod implementation. These methods have been removed from almost all components.
Scarlet 0.3.1
No breaking changes in this one.
Features:
- Added capability to manually flush UART stream with
UART.Flush(). - Added
MTK3339GPS component - Added
BNO055Magnetometer component - Implemented packet writer/scanner and safe packets
- Added more debug log output for
BBBPinManagerto help troubleshoot issues
Bugfixes:
- Fixed SPI pins being rejected by DTO generator on BBB
IMotor.SetEnabled(false)no longer sets speed to 0, aligning behaviour to PWM outputs- StateStore should now be able to handle threaded access
Scarlet 0.3.0
Significant changes to Motors and how they handle Filters. Addition of CAN and UART on BBB. Some additional bugfixes and features added.
BREAKING CHANGES:
IMotornow hasSetSpeed(float Speed)instead ofUpdateState()IMotornow hasSetEnabled(bool Enabled)instead ofStop()onlyIFilterrequiresbool IsSteadyState()IUARTBusmethods/properties changed
Features:
- IMotor interface is more user-friendly
- IServo interface now exists to interface with servos specifically
TalonMCwill now automatically run the given filter on a separate thread when necessary- Implementation of the
MPU6050accelerometer - Client and Server now have standard
SendError()methods - UART implemented on BBB
- CAN device tree implemented, but no communications functions available
- You can use Scarlet to set up the device tree, then an external program to communicate over CAN for testing
- Customized BBBCSIO I2C bus to output error codes on I/O errors, to make troubleshooting easier
- Added
LimitSwitch.Stateproperty to access the current state between events - Added constructor for
Messagethat takes in astringinstead ofbyte[]and converts it for you for convenience
Bugfixes:
- Client no longer blocks during longer processes of
Client.Start() - Incorrect address on BBB's P9_41 fixed, pin assignments will now work as expected for that pin
- Device tree now gets properly applied when
APPLY_REGARDLESSmode is used and there is already one applied