ProffieOS 8.x alpha (call for testers!)

Since it seems like we now have a compiler that works, it’s time to start the release process for ProffieOS 8.x. This means that what is currently on the github master, is now officially ProffieOS 8.x alpha, and it’s time to start testing and documenting the new features. What follows is a list of all the new stuff in ProffieOS 8.x so far. There are a few new things still on the way.

The release Process

I’m going to start documenting the features listed below. (If you want to help, please let me know) Once I’m done, hopefully there will be no new features added, and we can move ProffieOS 8 from alpha to beta. Beta means that I’ll start creating numbered releases and zip files. At that point, we just need to test all the features before we can move from beta to live. However, there is need to actually wait, if everybody can start testing features right now, then the alpha-beta-live transitions will happen much faster. Overall, I expect that this process will take somewhere between one and two months.

How to test

Pick a feature below that you want to test, and that hasn’t been tested already. (It will say “Tested by NAME” next to it once it’s tested.) Try it out and see if it seems to work as expected. Report your findings in this thread, and if the test was successful, I will edit this post and add “Tested by NAME” next to the feature. Hopefully the feature you selected is either easy to figured out, or one that I’ve gotten around to document (There will be a book icon next to the feature if it is documented. Click on it to go to the documentation.), if not just post a question in this thread and I’ll make sure to point you to some information about how to use it.

Changes since V7.x

Menu System

This isn’t so much a menu, as it is a system for implementing menus. It also separates the menu setup from the prop file, so we can have multiple different menu configurations, and then prop A and menu B independently. Currently supported by the “saber” and the “BC” props. For most users, all they will need to know is how to use the MENU_SPEC_TEMPLATE define.

Sound Library V2

Adds a bunch more sounds to the spoken sound library to support the new menus. Also adds support for a configurable color list.

Color Display support :closed_book:

Support 16-bit color displays. What is shown is composited from layers, and each layer can show independent color animations. Animations use a new file format called PQF which offers some compression (usually around 50%) while being very fast to decompress. PQF also offers loops, labels and conditions which lets you build complex animations which react to events from the saber.

SD card corruption protection

If enabled, SD cards will not be automatically mountable on your computer. Instead, you have to use a menu option on the saber, or a serial monitor command to be able to mount the SD card from the computer. Once done, you can turn off the setting again, thus preventing most forms of SD card corruption.

Dual-Blade support

ProffieOS can now keep track of which blades are on and off individually, which makes it easier for props to support Maul-style ignition.

Other minor new features

  • FastButton
  • LeftRightRotaryReceiver
  • BarBack support
  • Smoothswing angle control
  • Oled directory prefix suppot
  • Blaster oled controller
  • Servo Support

New defines

  • BLADE_ID_SCAN_TIMEOUT :closed_book:
  • BLADE_ID_STOP_SCAN_WHILE_IGNITED :closed_book:
  • COLOR_MENU_GAMMA :closed_book:
  • CLASH_THRESHOLD_GAMMA :closed_book:
  • VOLUME_MENU_GAMMA :closed_book:
  • DISABLE_AUDIO :closed_book:
  • DISABLE_WS2811 :closed_book:
  • DISABLE_MOTION :closed_book:
  • DISABLE_SD :closed_book:
  • DISABLE_NO_REPEAT_RANDOM :closed_book:
  • ENABLE_SPIDISPLAY :closed_book:
  • FONT_PATTERN
  • INSTALL_TIME_EXTRA
  • MENU_SPEC_MENU :closed_book:
  • MENU_SPEC_TEMPLATE :closed_book:
  • MOUNT_SD_SETTING :closed_book: (tested by NoSloppy)
  • NO_BLADE_ID_RANGE :closed_book:
  • PROFFIEOS_LOG_LEVEL :closed_book:
  • SMOOTH_COLORCHANGE_TICKS_PER_REVOLUTION
  • ENABLE_IDLE_SOUND

New styles

  • DisplayStyle :closed_book:
  • Pixelate :closed_book:
  • HardStripes :closed_book:

New functions

  • ReadPinF :closed_book:
  • AnalogReadPinF :closed_book:
  • BlasterModeF :closed_book:
  • BulletCountF :closed_book:
  • BlasterChargeF :closed_book:
  • IntSelectX :closed_book:

New Transitions

  • TrDoEffectAlways :closed_book:

New Menus and settings

Top Menu

Edit Settings Menu

  • Volume
  • SD Access
  • Dimming
  • Clash Threshold
  • Blade Length

Edit Preset Menu

  • select font
  • select track
  • move preset up/down
  • select/insert preset
  • delete preset

Edit Style Menu

  • Select Style
  • Apply Colors
  • Apply Settings
  • Reset
  • Change Style

Style Settings Menu

  • Color settings
  • Numerical settings
  • Time settings

Color Edit Menu

  • Hue
  • Brightness
  • Red/Green/Blue
  • Copy/Paste
  • Reset
  • Select by name
  • Save

New serial monitor commands

  • sd
  • quote
  • swing
  • slash
  • spin (with ENABLE_SPINS)

New EFFECT_*

  • EFFECT_MENU_CHANGE
  • EFFECT_ACCENT_SWING
  • EFFECT_ACCENT_SLASH

New named colors :closed_book:

  • Amber
  • BlueRibbon
  • BrainFreeze
  • BrutalPink
  • BusyBee
  • CanaryYellow
  • CathodeGreen
  • CyberYellow
  • ElectricBanana
  • ElectricLime
  • ElectricPurple
  • ElectricViolet
  • Flamingo
  • HaltRed
  • HotMagenta
  • ImperialYellow
  • Lemon
  • LimeZest
  • Limoncello
  • MasterSwordBlue
  • MintyParadise
  • MoltenCore
  • NeonRose
  • Orange
  • OrangeJuice
  • OverdueBlue
  • PaleGreen
  • PlungePool
  • PsychedelicPurple
  • RareBlue
  • SafetyOrange
  • SchoolBus
  • Star
  • SuperSaiyan
  • VibrantMint
  • ViolentViolet
  • VividRaspberry
  • VividViolet
  • ZeusBolt

New Sound effects

  • fastout
  • quote
  • chhum
  • mclick
  • idle

New oled image support

  • lowbatt
  • blast, reload, empty, jam, clipin, clipout, destruct (for blasters)

Prop Changes

(so far, there may be a few more coming before release)

saber_BC_buttons.h

  • Dual blade independent control with a single Proffieboard. (for staff sabers).
    Works with 1,2, or 3 button config. Uses standard (current) bladestyles, no modification needed.
  • Scroll Presets mode.
  • Quotes play with blade ON or OFF, and will not overlap / interrupt one another.
  • Force effects won’t overlap / interrupt one another.
  • Mute sound plays before igniting muted.(optional mute.wav used)
  • Custom Blade Length editing mode.
  • Custom Volume Menu moved to a mode.
  • OS System Menu version available with a #define.
  • 8 USER EFFECTS available (a.k.a. used like Fett263 “Special Ablilities”)

Deprecated features:

  • No Volume UP/DOWN with buttons. Use rotary control instead,
    but QuickMinVolume and QuickMaxVolume are still available.
  • swap and monoforce features of yore are now just assignable User Effects.
  • #define NO_VOLUME_MENU removed.

blaster.h

  • #define BLASTER_ENABLE_AUTO
  • supports DISABLE_TALKIE

saber.h

  • supports new menu system

long post, thank you for reading - Profezzorn

2 Likes

WOW!

Regarding dual blades and the BC prop is see that the blades can be defined:

Dual Blades requires defining BC_DUAL_BLADES and optionally
|        BC_MAIN_BLADE and BC_SECOND_BLADE. 

My staff has 2 quad zigzag blades. Can I define a 2 groups of sub blades as BC_MAIN_BLADE and BC_SECOND_BLADE?

The blade array is:

BladeConfig blades[] = {
{ 0,
  // first quad-zigzag blade  
  SubBlade(0, 34, WS281XBladePtr<140, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
  SubBladeReverse(35, 69, NULL),
  SubBlade(70, 104, NULL),
  SubBladeReverse(105, 139, NULL),

  // second quad-zigzag blade
  SubBlade(0, 34, WS281XBladePtr<140, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin4, bladePowerPin5> >()),
  SubBladeReverse(35, 69, NULL),
  SubBlade(70, 104, NULL),
  SubBladeReverse(105, 139, NULL),

  CONFIGARRAY(presets) },

I don’t think the BC prop supports this, at least not currently.
It is possible to support using blade sets, not sure how much work it would be to do though.

1 Like

How hard would it be to make something like a “SubBladeGroup” ?
Where for example, the above “// first quad-zigzag blade” Could be seen as a single blade ?
(This is possibly starting to veer off course of this thread topic )

If it was a single blade, then you couldn’t assign individual styles to it.

Correct, a single blade style would feed all the subblades.

But then it’s not a zig-zag blade anymore.
I have considered implementing something like that for efficiency though.
Some styles runs quite slow on a saber with 500+ pixels.

For ignition purposes, using blade sets is almost certainly the right solution though.

1 Like

Tested MOUNT_SD_SETTING. I use this ALL the time now.
Here’s a writeup if it helps.

This define will allow manual control of when to allow the SD to mount to the computer when Mass Storage is enabled by issuing ‘sd 1’ in Serial Monitor.
First let’s review how Mass Storage works.
Having the Arduino setting Tools>USB Type> Serial + Mass Storage selected allows the SD card to be accessed over USB (using the Proffieboard as a card reader).
The way it used to work before OS8 and this define was after the boot sound played, the SD card would immediately mount to the computer as an external USB drive.
File transfers could take place then, and when finished, you would eject the SD from the computer. From then, the Proffieboard would use it as normal.
This meant that you always had to wait for the SD card to mount, and then eject it before uploading or using Serial Monitor.
It also meant that to re-access the SD, you’d need to either reboot, or unplug and then re-plug the USB cable.

Now here’s how it can work in OS8 using #define MOUNT_SD_SETTING.
Even though Mass Storage was selected and uploaded, this define prevents the SD card from mounting until manually “allowed” by the user.
To allow the SD to mount, send the command sd 1 in Serial Monitor.
When you finish accessing the SD card and “eject” it from the computer, the Proffieboard will use it as normal and set the permission back to FALSE.
If you want to access the SD again, you can just issue the sd 1 command again, and repeat as above.

4 Likes

Hey where is the place to request new features… like other modes for blaster. Such as a charging shot or a recharge /cool down shot. and having an sd config, so the it can know what modes to use.

I’ve enabled a TCSS Proffie Testing station. Is there anything that I can test with that?

To request a new feature, go here: https://crucible.hubbe.net/

Sure.
I’m not sure what a tcss testing station can do specifically, but generally speaking, you should be able to to test almost everything listed in the top post, except maybe menus. Most of the menu stuff requires you to turn the board around to select menu entries, which might be a pain with a testing station.

This is the product: https://www.thecustomsabershop.com/Electronics/Diagnostic-Stations/Proffie-39-Diagnostic-Station
As they use their own breakout board: https://www.thecustomsabershop.com/Electronics/Diagnostic-Stations/Proffie-tester-breakout-PCB
Regrettably they didn’t connect any data pins save for Data1-4. So I’m not sure how could I test the displays without soldering on the board or such. I will see if I can think of something easy to attach to the testing board.

I’m not sure what their tester is for to be honest.
Seems reasonable for testing blades maybe?

Not breaking out half the pins means that anything new, fun or interesting can’t happen on this testing station.

This is my testing station: Proffieboard V1/V2/V3 Test Rig
Might not look as nice, but at least it breaks out all the pins, including the debugger ones, which is perhaps the most important.

It doesn’t have a blade connector, but it does have neopixels right on the board.