Skip to content
This repository has been archived by the owner on May 3, 2024. It is now read-only.

Releases: ScarletLib/Scarlet

Scarlet 0.6.0

13 Jun 22:54
Compare
Choose a tag to compare

NuGet

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 the MAX5713 and MAX5714.
  • 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

10 May 20:52
Compare
Choose a tag to compare

NuGet

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

10 Aug 05:45
Compare
Choose a tag to compare

NuGet

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() to ISubsystem.
  • 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 in IDigitalIn, acts as IDigitalIn with IInterruptSource 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 of this 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

26 Jun 21:35
Compare
Choose a tag to compare

NuGet

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 all IPWMOutput 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

06 Jun 19:50
Compare
Choose a tag to compare

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(...)
  • 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()
  • 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 before Server.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 require EventTriggered method implementation. These methods have been removed from almost all components.

Scarlet 0.3.1

13 Feb 21:15
Compare
Choose a tag to compare

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

30 Jan 03:43
Compare
Choose a tag to compare

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 has SetSpeed(float Speed) instead of UpdateState()
  • IMotor now has SetEnabled(bool Enabled) instead of Stop() only
  • IFilter requires bool 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 a string instead of byte[] 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