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
PCA9535E
component (bidirectional I2C to GPIO expander). - Added
Scarlet.Components.Interfaces
namespace 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
MAX5715
DAC component. Also works with theMAX5713
andMAX5714
. - 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
LTC6992
analogue-to-PWM component.
Bugfixes:
- Fixed excessive try/catch in networking system causing slowdowns.
Other:
- Added trace logging functionality for
BNO055
device.
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
IGPS
interface. - Added
DeclinationHelper
to 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
. Servo
changed 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 asIDigitalIn
withIInterruptSource
capability. 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 ofthis
in 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 allIPWMOutput
implementations, 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
Polarity
setting 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:
IDigitalIn
no longer requires anything interrupt-related, so that future non-interrupt-capable digital inputs can be implemented.- Use
IInterruptSource
instead (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.Encoder
removed. It wasn't functional anyways.
Features:
- New DataLog system allows for easier logging of sensor and other telemetry data to CSV.
- Added
RGBLED
component - Added
PCA9685
16-ch PWM output component - Added
INA226
current sensor component - Added TestSuite, for testing various functionality on real hardware
- Added
VH400
soil moisture sensor component - Added 16b I2C methods to
I2CBusPi
- Added
UtilData.SwapBytes()
(useful for 16b I2C) - Added
VESC
motor controller component - Working CAN implementation
- Also supports Extended CAN
- Added
UARTFileBusBBB
IO system - Added CRC16 calculator to
UtilData
- Added
LS7366R
encoder counter component beta implementation - Implemented
ByteParser
Bug Fixes:
StateStore
can 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
TalonMC
output 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
,ISubsystem
no longer requireEventTriggered
method 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
MTK3339
GPS component - Added
BNO055
Magnetometer component - Implemented packet writer/scanner and safe packets
- Added more debug log output for
BBBPinManager
to 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:
IMotor
now hasSetSpeed(float Speed)
instead ofUpdateState()
IMotor
now hasSetEnabled(bool Enabled)
instead ofStop()
onlyIFilter
requiresbool IsSteadyState()
IUARTBus
methods/properties changed
Features:
- IMotor interface is more user-friendly
- IServo interface now exists to interface with servos specifically
TalonMC
will now automatically run the given filter on a separate thread when necessary- Implementation of the
MPU6050
accelerometer - 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.State
property to access the current state between events - Added constructor for
Message
that takes in astring
instead 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_REGARDLESS
mode is used and there is already one applied