Powered Up Versions Save

.NET implementation of the LEGO PoweredUp Protocol

v5.0.2

1 month ago

Sometime in the last 3 years, LEGO updated the firmware of the TechnicMediumHub resulting in various motors loosing the CALIB mode and have adjusted ranges. Unfortunately, the discovery function in the CLI did not work well with it, resulting in crashes. @mennolodder took the challenge and contributed a fix for the discovery and added new metadata (along with his original mission to add the SimpleMediumLinearMotor).

Features

  • Updates for the cached metadata for the TechnicLargeLinearMotor, TechnicXLargeLinearMotor and TechnicMediumAngularMotor (#197)
  • Addition of the Motor WeDo 2.0 Medium (21980) / SimpleMediumLinearMotor
  • Update to .NET 8 (#181, #192)
  • Bug of non-terminated strings (#194)
  • Improved Error Messages (#196)
  • Disable Cache in Discovery Mode (#195)
  • Addition of Protocol Only Example (#202) and Addition of README in Nuget (#182)
  • Add SetColorAsync to ColorDistanceSensor (#204)

Notes

  • The TechnicLargeAngularMotor is currently still unpatched. A discovery with the device attached may break the functionality.

Roadmap Ahead

  • This library is in maintenance mode supporting any upcoming community contribution in any form.
  • I monitor updates to the WebAssembly Bluetooth capability or the WinRT embedding dependencies.

Thanks

This release would have been impossible without valuable contribution by ..

  • @mennolodder Who discovered the protocol and discovery issues in his journey to add the SimpleMediumLinearMotor and provided pull requests to fix them.
  • @tenacious for reporting, debugging and contributing the patch for the ColorDistanceSensor light methods.

Thanks for your efforts and continuous contributions.

Community Contributions are always welcome and appreciated.

v4.0.5

3 years ago

This release marks a major step ahead for SharpBrick.PoweredUp. In this release we onboarded two more Bluetooth stacks, fixed a crucial breaking issue and done a lot of overdue maintenance to the project.

Features

  • We added support for BlueGiga BLE Adapter for Windows and Linux (#77)
  • We added support for Bluetooth on Xamarin app model (#69)
  • We ported to .NET 5 including the new COM translation within .NET 5 (#9). This enables us also to use C# 9.0 features like records, more pattern matching etc. (#42). We also added analyzers to work (#159).
  • Added support for better command line experience and configuration file (#155) and compiled the command line for other platforms than Windows (#172). Unfortunately, we lost dotnet tool install -g on the way due to a issue in the dotnet/sdk.
  • Add support to decode transmitted mode data to Double to avoid scaling issues with the native data types (#126)
  • Add support for better device abstraction (#154). We fixed some leaks in the abstraction of the Bluetooth Stack (#142, #48)
  • Fixed the notorious POS/APOS vs GotoAbsolutePosition mismatch (#75)
  • Added the ColorDistanceSensor (88007) as a device (#103)
  • Enhanced Mario Pants (#174)
  • Added TestScripts for Mindstorms (#161) and Control+ (#162)

Notes

  • This is a breaking change
  • The command line poweredup has a different installation instruction (framework needs to be specified).
  • Please consult the README and the documentation

Roadmap Ahead

  • All next releases will be breaking releases. The fix of #126 allows us now to investigate the devices which need different data types (#177) and fix them. Impact, beyond recompilation should be minimal for these releases
  • Continuation of the test scripts

Thanks

This release would have been impossible without valuable contribution by ..

  • @Berdsen on Xamarin Bluetooth and the abstraction in the Bluetooth stack
  • @dkurok on BlueGigaBLE and the abstraction in the Bluetooth stack (and much more)
  • @highstreeto on ColorDistanceSensor
  • @corneliusmunz on fixing typos
  • @vuurbeving on Bluez ... while still not being ready, he works on it when times permits ;)

Thanks for your efforts and continuous contributions.

Community Contributions are always welcome and appreciated.

v3.4.0

3 years ago

This release is a feature release for the MoveHub

Features

  • Added MoveHub including rgb light, tilt and internal motors (#95 #133)

Roadmap Ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • More Functions

Thanks

  • @corneliusmunz @KeyDecoder for their awesome cooperation and contribution on the MoveHub 💪

Community Contributions are always welcome and appreciated.

v3.3.0

3 years ago

This release is a feature release for Mindstorms (51515) Sensors

Features

  • Added TechnicColorSensor including color, ambient light, reflection, RGB and HSV modes (#111)
  • Added TechnicDistanceSensor including Distance, ShortDistance and "Eye" Lights (#112)
  • Finished LinearSpeedChange function as an example of an iterative applied Function (#57)
  • Improved CLI usability by adding more documentation and exit code emitting

Roadmap Ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • More Functions

Thanks

  • For an awesome LWP community which are always helping with replies and are friendly to each other.

Community Contributions are always welcome and appreciated.

v3.2.1

3 years ago

This release is a feature release to get Mario on the Duplo Train 😀

Features

  • Added MarioHub (71360) including internal Accelerometer (Raw & Gesture), TagSensor (Barcode & RGB), Pants and Voltage (#91)
  • Added DuploTrainBase (10874) including internal RgbLight,, Motor, Speedometer, Speaker, ColorSensor (RGB & Tags) and Voltage (#124)
  • Added TechnicMediumAngularMotorGrey (set 51515) (#110)
  • Improve Output of poweredup device list to be more human readable (#122) (and applied to historic dumps #114)
  • Added support to not query hub properties (if hub do not support them) (#120)
  • Improve internal bluetooth layer to be better async (#117)

Roadmap Ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • Add sensors from Mindstorms (51515)
  • More Functions
  • Create common controls (abstract) and showcases for WPF and Xamarin

Thanks

  • @vuurbeving for collaboration on getting the TechnicMediumAngularMotorGrey and related devices into the library. His ongoing work to enable sharpbrick/powered-up on Linux is a big motivation.
  • @judavi for kickstarting the work for Mario. Mario brought more pain over us than expected, but he landed now improving the library in many ways.

Community Contributions are always welcome and appreciated.

v3.1.0

3 years ago

This release was a bit slower since no external contribution forced an earlier release and I had little time to push it further

Features

  • Added TwoPortHub (88009), including internal RGB, Voltage and Current (#39)
  • Add MediumLinearMotor (88008) as a Device (#102)
  • Add Train Motor (88011) as a Device (#104)
  • Add TechnicLargeAngularMotor (Grey) as a Device (#108)
  • Enable hardcoded knowledge with difference on the hub type (needed for internal devices) (#98, #99, #100)
  • Prepared MarioHub identifiers (#92) in preparation for upcoming Mario (#91) âš  MarioHub is not yet there and identifiers can still vary

Roadmap Ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • Add MarioHub, MoveHub and more devices (help wanted)
  • More Functions
  • Create common controls (abstract) and showcases for WPF and Xamarin)

Thanks

  • @vuurbeving and @corneliusmunz for their awesome help and collaboration on getting the TwoPortHub and related devices into the library. Community Contributions are always welcome and appreciated.
  • @judavi for kickstarting the work for Mario.

v3.0.0

3 years ago

This release was a bit slower since no external contribution forced an earlier release and I had little time to push it further

Features

  • Added Gesture Sensor Implementation (#18). Warning: I cannot assure the correctness of the Gesture enum. Please experiment on your own and file issues if you find or confirm the existing mapping. This enum will be extended / corrected in future breaking releases.
  • Simplified the API surface by applying better defaults (#87, #79).
  • Simplified the API surface by fixing some bad namings (#74)
  • Adjusted naming of some core classes ILegoWirelessProtocol and LegoWirelessMessage (#61).
  • Added first function (MidRangeCalibration) useful for steering controls (#80).

Notes

  • I postponed the release of the LinearSpeedChange function block (#57) due to missing review and uncertainty about the API surface. I welcome feedback on the draft pull request (#89).

Roadmap Ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • Add PoweredUp Hub (88009) and related devices (Help Wanted !!! - I do not have the devices)
  • More Functions
  • Create common controls (abstract) and showcases for WPF and Xamarin)

v2.2.0

3 years ago

Externally a smaller release. Quite some maintenance work behind the scenes.

Features

  • Add a method to await a button click (#68)
  • Add Mid Linear Calibration Method (#71) (usable e.g. to calibrate the steering)

Notes

  • A lot of internal change related to the usage of the DI framework (the laziness of the storming phase lead to some service locator usages which is not a best practice) (#46).
  • The DI container will now establish a DI scope per Bluetooth Connection allowing functions (like calibration) to directly be instantiated as a transient in a scope where e.g. the protocol is already a scoped instance (#70)

Roadmap ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • Add PoweredUp Hub (88009) and related devices (Help Wanted !!! - I do not have the devices)
  • More Functions
  • Create common controls (abstract) and showcases for WPF and Xamarin)

v2.1.0

3 years ago

Features

  • Write and notify on hub properties (e.g. notify on button press) (#60)
  • More user-friendly PoweredUpHost.DiscoveryAsync (#65)
  • Guarding of methods: Input/Output of modes, combined modes, virtual port creation (#54)
  • Add CW/CCW helper utilities (#55)
  • Find previously discovered Hub by BLE Advertisement Name (#59)
  • Create Hub with known BluetoothAddress (instead Discovering it) (#52)

Notable Bug Fixes

  • As part of the Dynamic Device capabilities we lost VirtualPorts feature (the created virtual port had no initialized protocol knowledge and therefore the device could not initialize the modes which again failed the regular usage). Discovered and fixed in (#54)

Notes

  • Comparison with other C++, JS, Python and C# SDKs exposed some missing comfort functions
  • Add code coverage in build. Fancy badge is missing
  • Add some harness for unit testing protocol exchanges, still early.

Roadmap ahead

  • Establish Unit Testing Infrastructure for the devices/hubs
  • Add PoweredUp Hub (88009) and related devices (Help Wanted !!! - I do not have the devices)
  • Establish Calibration Framework (e.g. steering control)

Thanks

  • @dlech for advice and merge request review
  • @GianCann for help with the advertisement name BLE details (learned something from you!)

v2.0.0

3 years ago

Features

  • Addition of Deployment Verification
  • Addition of Dynamic Device

Note

  • Planned as a non-breaking release, the actual release was actually breaking.
  • Breaking: Externalization of the Hub/DeviceFactory into DI container for testing and custom implementation purposes