This repo contains the software code and hardware designs for Fenice's battery pack.
This repostory is handled through 3 main branches:
hw-master
Is the master branch for hardware: it contains PCB designs, KiCad files, datasheets... for the BMS.
sw-master
Is the master branch for software: it contains firmware, dirvers etc... for the BMS.
master
Is the master branch for the repo. It contains references to both hardware and software about a specific version of the BMS.
When code or designs for a specific board or software are completed and merged into the relative [s/h]w-master
branch, then tag the relative commit with the board version number, e.g.:
## for software cell board
git tag -a sw-cb-v1.2.3 -m "Version notes"
## for hardware main board
git tag -a hw-mb-v0.1.3 -m "Version notes"
N.B. Versioning in software and hardware are not related, working hardware-software tuples can be infered from master commits.
N.B. Never merge from or to master
.
- Fork the repo (keep it private on your account if it is so already, ask to the manager too)
- Clone the repo and track
sw-master
and checkout insw-develop
. - Initialize submodules with
git submodule update -i -r
. - Create a new branch for the specific feature you are working on, the branch must be named:
sw-new_feature_name
. - Once the feature is complete make a pull request for your branch to the
sw-develop
branch of this repo on GitHub and wait for the repo maintainer to merge it.
- Fork the repo (keep it private on your account if it is so already, ask to the manager too)
- Clone the repo and track
hw-master
and checkout inhw-develop
. - Initialize submodules with
git submodule update -i -r
. - Create a new branch for the specific feature you are working on, the branch must be named:
hw-new_feature_name
. - Once the feature is complete make a pull request for your branch to the
hw-develop
branch of this repo on GitHub and wait for the repo maintainer to merge it.
sw-master
and hw-master
are history indipendent branches with respect to master
and they must be kept so.
master
should be updated only when the software-hardware tuple changed significantly and had been tested extensively or when is important to do so.
E.g. after a simulated test (with other devices, without a running car) or after on-track testing.
In master
the maintainer must update ./software
and ./hardware
submodule references to commits/tags that work together.
In branch master
$ cd software/
$ git checkout sw-mb-v3.2.1 # Last tested version
$ cd ..
$ git add software
$ cd hardware/
$ git checkout hw-cb-v1.2.3 # The board version that was running
$ cd ..
$ git add hardware
$ git commit -m "Update BMS"
$ git push