SimuCUBE Open Source Firmware Development Update Thread

very well done you have created a very powerful and usable piece of software for this its true credit to yourself.

Looks nice much more compact, thats better! :slight_smile:
No more huge operating mode and e stop

Excellent job ! Progress.

Compactness is also a problem sometimes, but luckily it seems that there is still room to add more settings in the Profile page.

3 Likes

Would like to see the end product be more modern looking with style elements from Windows 10 or a modern application like Discord. A dark and modern interface that looks in sync with Windows 10. Instead of those horizontal tabs you could make a vertical bullet-list with graphic images that represent each page.

But this is good progress. Much more compact than what we have now. :slight_smile:

Well, kind of limited to what Qt has to offer right now - and writing custom styles/controls isn’t exactly productive. Also changing to Visual Studio based design is kind of late now.

Changing the tabs to left or right is still possible. Also the text for them can be replaced with images/icons, like in Granity. I still think that would be just waste of time - maybe I’ll listen to feedback after actually getting this version out :slight_smile:

This coding session was just convenient for this evening, nothing else to do here (not at home) with surprising good network connection (unexpected), Microsoft Remote Desktop working very well (as always, but only if connection is stable enough) and no hardware at hand to debug with.

I personally just hate Discord’s UI, but that’s just my opinion…

Yeah, I like the new look very much, nice and compact and each setting in their place. Great, looking forward for this to be released :slight_smile:

And this style very much in line with how Granity is structured.

Excellent work, Mr. Mika, I like the way the interface looks.

FFT was 0.1 sec and i upped it to 1 sec like you have done.
Behaviour stays exactly the same unfortunately

I just added a motor fault reason register reading; SimuCUBE firmware goes and reads them if it finds a fault in general status register during normal motor operation (i.e., racing). This register is sent to the Configuration tool and parsed in the Motor Status field.

I definitively need to test this so that it does happen only once, to keep update rate to IONI sufficiently high even if there are faults. The rate needs to be high as the encoder is also read by the same update command.

The look and feel of this application just keeps getting better and better! Thank you for all your hard work!

Adding a log window with copy paste and check boxes of what type of messages to show would be great for those who have troubles…

I already added the motor status error register to status reports. SimuCUBE status report to the configuration tool is, limited to 64 bytes in total, with around 60 bytes of usable data. This works as query->response -based system.
At the moment, it has these variables:
uint8_t reportID = inReport; //1
uint8_t command = replyStatus; //2
uint8_t majorVersion; //3
uint8_t minorVersion; //4
uint8_t buildVersion; //5
SystemStatus SimuCubeStatus; //9
uint8_t previousCommandSuccess; //10
uint16_t driveStatus=0; //12
uint8_t unsavedSettings=0; //13
uint8_t indexpointFound=0; //14
uint16_t drcReceivedBytes=0; //16
uint8_t DriveFWUploadPercentage=0; //17
uint16_t DriveFWVersion = 0; //19
uint16_t activeProfileIndex = 0; //21
uint16_t defaultProfileIndex = 0; //23
uint16_t numberofprofiles = 1; //25
uint8_t hwVersion; //26
uint32_t debugvalue1 = 0; //30
uint32_t debugvalue2 = 0; //34
uint32_t ffbEffectsInUse = 0; //38
uint32_t ffbEffectsInActiveUse = 0; //42
uint32_t motorfaults = 0; //46

Debug data with state transitions etc is coming sometime, but it will have to be a new system on top of this.

In addition, SimuCUBE already outputs sensible debug data over the serial port. Piping this directly to USB isn’t feasible due to packet size limitations.
This debug data looks like this (from a normal SimuCUBE boot):

------- SimuCUBE BOOT -------
HAL initializations complete.
Trying to load config from flash…
Done trying to load config from flash
Initial configuration has been performed. Initializing drive.
state: DriveInit
first-time-initdrive
got CPR: 20000
disabled SM WatchDog
state: DriveWaitClearfaults
requestprofile 0
sent reply
requestprofile 1
sent reply
requestcalibratedanalog
state: DriveWaitClearfaults
requestprofile 0
sent reply
requestprofile 1
sent reply
requesthardware
cpr: 20000
sent reply
requestanalog
sending reply
state: DriveWaitClearfaults
state: DriveWaitClearfaults
state: DriveWaitReady
state: DriveWaitReady
encoder reset at -5
initializing SM bus baudrate
initializing SM bus baudrate success!
state: DriveInitSuccess
enabled SM WatchDog
state: BeforeOperational
state: Operational

Status for Tuesday:

I had time for an hour to code, which isn’t enough to do any FFB debugging in a sensible manner.

Instead, UI got some new improvements, and I also added a debug logging system class and API in the SimuCUBE firmware for the configuration tool to use (download) in the future. Need to actually start to use that debug log system now. Should be quite fast to do.

4 Likes

Shouldn’t you make a slider for constant force effect as well?

If people want sliders for every type of effect, then yes. But the overall strength is kind of meant to be managed via the strength slider.

Great progress on the UI looking clean.

1 Like

I have to agree, it’s starting to look pretty sexy. I luv the tabs and options underneath each, will make things appear significantly less clutter-ish…

I like ! Good job…