Add automatic library configuration to build setup task

This commit is contained in:
Starbeamrainbowlabs 2019-06-28 13:33:16 +01:00
parent 3e3f0b6bb3
commit 35b2dd447c
2 changed files with 47 additions and 12 deletions

View File

@ -21,13 +21,6 @@ Run `bash ./build setup` from the command line at the root of this repository.
### IoT Device
- Copy `settings.custom.cpp.example` to `settings.custom.cpp` and fill in the fields there
- Review `settings.h` to make sure it matches your setup
- Edit `iot/libraries/arduino-lmic/src/lmic/config.h`, and add the following to the bottom:
```c++
#define DISABLE_PING
#define DISABLE_BEACONS
```
- Copy the folders in `iot/libraries` to your Arduino IDE libraries folder
## Useful Links

52
build
View File

@ -43,18 +43,60 @@ fi
###############################################################################
task_setup() {
task_begin "Setting up";
# Toggles commenting and uncommenting lines in a file that contain a specific
# substring. Checks for word boundaries either side of the substring.
# From https://stackoverflow.com/a/24901636/1460422
# $1 - Filename
# $2 - Search string
comment_toggle() {
filename="${1}";
search_string="${2}";
awk -v commentId='//' -v word="${search_string}" '
$0 ~ "(^|[[:punct:][:space:]])" word "($|[[:punct:][:space:]])" {
if (match($0, "^[[:space:]]*" commentId))
$0 = substr($0, RSTART + RLENGTH)
else
$0 = commentId $0
}
{ print }' "${filename}" > tmpfile.$$ && mv tmpfile.$$ "${filename}"
}
task_setup() {
stage_begin "Setting up";
task_begin "Checking Environment";
check_command git true;
check_command awk true;
check_command pdflatex true;
check_command bibtex true;
task_end $?;
subtask_begin "Initialising submodules";
task_begin "Initialising submodules";
git submodule update --init;
subtask_end $?;
task_end $?;
task_end 0;
task_begin "Preconfiguring libraries";
config_file_directory="./iot/libraries/arduino-lmic/src/lmic/";
config_file_name="config.h";
cd "${config_file_directory}";
git reset --hard;
# Disable OTAA
comment_toggle "${config_file_name}" "#define DISABLE_JOIN";
# Disable class b stuff
comment_toggle "${config_file_name}" "#define DISABLE_PING";
comment_toggle "${config_file_name}" "#define DISABLE_BEACONS";
# Disable other misc. stuff we're not likely to use
comment_toggle "${config_file_name}" "#define DISABLE_MCMD_DCAP_REQ"; # Duty cycle cap - won't work anyway 'cause we're shutting down in between
comment_toggle "${config_file_name}" "#define DISABLE_MCMD_DN2P_SET"; # Receiving stuff
# echo "#define DISABLE_JOIN" >>"${config_file_name}";
# echo "#define DISABLE_PING" >>"${config_file_name}";
# echo "#define DISABLE_BEACONS" >>"${config_file_name}";
cd -;
task_end $?;
stage_end 0;
}
task_render() {