Chysn / O_C-HemisphereSuite

Hemisphere Suite is alternate-alternate firmware for Ornament and Crime, featuring a dual-applet framework with dozens of different modular functions.
324 stars 153 forks source link

platformIO branch #61

Open wraybowling opened 4 years ago

wraybowling commented 4 years ago

I've been having trouble getting hemispheres suite compiling, even using the slightly different instructions in the wiki. I wondered if we might try out PlatformIO. I discovered it while looking for a way to have Travis CI run unit tests and verify if PRs were safe to merge on an Arduino-based project of my own, and discovered that it also helps with making sure that a project has all of the specifics necessary to get anyone on any machine up and running with the correct dependencies. This is, at the time of this writing, a pretty dry and direct conversion to a PlatformIO project that simply moves the source code to a src directory, changes the main cpp file to main.ino and includes the platformio.ini necessary to run the build with the flags that are laid out in the wiki: USB is set to midi and the clock speed is set to 120MHz. You'll notice right away when trying this however that there is an error upon building that src/extern/stmlib_utils_random.cpp is not found. I suspect that in the Arduino IDE this error still occurs but is ignored and thus it only makes builds that produce a black screen which may be related to issue #58. I don't typically advocate for environment-specific changes because they tend to be frowned upon, but I thought we could at least try it out. As a bonus, if we get this working, you'll be able to have Travis automatically verify every future PR.

chlirre commented 3 years ago

I just built this successfully in PlatformIO after making the following change in src/extern/stmlib_utils_random.cpp: #include "utils/stmlib_utils_random.h" -> #include "stmlib_utils_random.h"

I don't have the actual hardware yet to try it further.


In parallel to trying this solution, I tried the Makefile setup from https://github.com/apmorton/teensy-template/ with the source code from this repo. ~Got stuck on some missing EEPROM.h file.~ Edit: Got past the missing EEPROM.h by adding it manually to the libraries, but new compilation errors followed. :/

madskjeldgaard commented 3 years ago

platformio support would be amazing!

chlirre commented 3 years ago

platformio support would be amazing!

@madskjeldgaard

I did some more (rabbit hole) digging since my previous post. https://github.com/chlirre/O_C-HemisphereSuite/tree/platformIO/software

If you, or someone else, have access to a debuggable O_C you could try it out and let me know why it fails. See: https://community.platformio.org/t/teensy-3-1-issue-firmware-uploading-but-no-indication-of-running/18398

chlirre commented 3 years ago

Also, I'd like to comment on @wraybowling s original remark that

I don't typically advocate for environment-specific changes

I would argue that anything written for Arduino in the Arduino IDE is at the apex of environment-specific. Any change away from that is to be considered a generalisation.