Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1415 commits
Select commit Hold shift + click to select a range
4ea0c88
Rewrite security personalization data validation (#885)
fallberg Jul 4, 2017
a941827
Use bool instead of boolean in drivers (#888)
mfalkvidd Jul 5, 2017
3e75b52
Fixed indentations using astyle (#890)
fallberg Jul 7, 2017
b85c11c
Move pubsubclient files to PubSubClient (case sensitive)
mfalkvidd Jul 24, 2017
8f58b18
I2C EEPROM support for OTA using dual Optiboot #802 (#834)
kisse66 Jul 24, 2017
6f10745
Keep Serial from being linked when disabled (#877)
rclasen Jul 24, 2017
90793e7
Prepend debug message only on serial gateway (#882)
marceloaqno Jul 24, 2017
10ef623
MySensors splash screen (#889)
tekka007 Jul 24, 2017
1cd2c6d
Update radio defines in examples (#901)
d00616 Jul 31, 2017
f3ab329
Refactor the Doxygen structure (#880)
fallberg Jul 31, 2017
b10cf85
Revert VER removal from CP string (#905)
tekka007 Aug 1, 2017
d17b9dd
Added posibility to use non standard SPI Flash (#899)
bilbolodz Aug 3, 2017
d291a36
RPi: Fix GPIO Layout detection (#895) (#906)
marceloaqno Aug 12, 2017
4633582
Update STM32 support (#908)
tekka007 Aug 13, 2017
5776d2b
NRF5: Fix and improve sleep(0) (#909)
d00616 Aug 29, 2017
df34c00
Skip check personalization with simple passwd flag (#915)
fallberg Aug 29, 2017
46557d1
NRF5: Fix sleep()
d00616 Aug 29, 2017
e0412f8
Merge pull request #917 from d00616/nrf5_fix_sleep_caluclation
d00616 Aug 29, 2017
d74e9bd
Autogenerate release versions (#920)
tekka007 Sep 4, 2017
a9ef29f
Update hwUniqueID() function (#921)
tekka007 Sep 4, 2017
973b4b8
Fix compiler warning (#922)
tekka007 Sep 5, 2017
067519c
Fix sanity check option (#923)
tekka007 Sep 7, 2017
9e5a1e3
Correct NRF24 PA levels docs (#924)
fallberg Sep 14, 2017
0ed558f
Make debug prints portable (#929)
tekka007 Sep 17, 2017
8412a3d
New OTA debugging and logging feature (#913) (#913)
d00616 Sep 18, 2017
f5dce5b
Disable splash screen on GW (#931)
tekka007 Sep 19, 2017
5164af7
ESP8266: Fix example compilation error (#932)
tekka007 Sep 19, 2017
9ee8371
MyCapabilities: Add missing arch identifiers (#936)
tekka007 Sep 22, 2017
1b1cf8f
Nrf5 improvements (#938)
d00616 Sep 30, 2017
3ca9b56
Fix uninitialized state handling (#939)
d00616 Oct 1, 2017
f8e132f
NRF5 fix 8 bit inttype handling (#943)
d00616 Oct 1, 2017
8cb9b26
NRF24 disable DYN_ACK support (#940)
d00616 Oct 1, 2017
901258f
Implement Jenkins pipelines as code (#948)
fallberg Oct 13, 2017
adfd9f3
Generate Doxygen from configure (#952)
mfalkvidd Oct 27, 2017
3ebeb4f
Add MY_ESP8266_BSSID parameter (#953)
mfalkvidd Oct 27, 2017
571947c
Minor splash screen tweak (#958)
tekka007 Oct 28, 2017
a190034
MySensors 2.2.0-rc.1 (#959)
tekka007 Oct 28, 2017
682a6b0
Update library properties for RC1 (#960)
tekka007 Oct 28, 2017
e685aa1
Update repo info (#961)
tekka007 Oct 28, 2017
a00857a
Update Debug message tables (#962)
tekka007 Oct 29, 2017
e6cef8b
Implement RFM95 sanity check (#963)
tekka007 Oct 29, 2017
9b630f7
Pipeline improvements (#964)
fallberg Oct 29, 2017
2d5c4a0
Revert attempt to build Arduino jobs in parallel (#966)
fallberg Oct 30, 2017
1f07d7e
Update debug message table (#965)
tekka007 Oct 30, 2017
30516cf
Jenkins: Drop redundant targets (#969)
tekka007 Nov 2, 2017
9663d4c
Harmonize type definitions (#970)
tekka007 Nov 4, 2017
b892aef
Jenkins: Add STM32F1 support (#972)
tekka007 Nov 5, 2017
e2ac85a
Reshuffle arch files (#974)
tekka007 Nov 6, 2017
2d5404d
CppCheck cleanup (#975)
fallberg Nov 7, 2017
0042cd4
NVM: consideration of SoftDevice memory layout (#977)
d00616 Nov 7, 2017
d43c755
Fix RFM95 reset (#982)
tekka007 Nov 10, 2017
a23ab14
Clarify TSM:ID:FAIL message (#984)
mfalkvidd Nov 11, 2017
4f0a4ee
Use dedicated namespace for radio SPI (#985)
tekka007 Nov 11, 2017
809663e
Provide link to Gitler report for gitler asserts (#986)
fallberg Nov 11, 2017
3830c5d
RFM69: Add missing SPI namespace (#987)
tekka007 Nov 11, 2017
d44ecd9
RF24: Fix logical operator (#990)
tekka007 Nov 12, 2017
1f8d810
Add documentation for MyCapabilities (#989)
fallberg Nov 13, 2017
356b783
Script documentation generation and UML support (#992)
fallberg Nov 16, 2017
1e33059
BCM driver: include inttypes (#983)
mfalkvidd Nov 17, 2017
506d235
Update RelayActuator example (#973)
mfalkvidd Nov 17, 2017
aabddc8
NRF5 ESB fix Errata #78,#102,#106 (#995)
d00616 Nov 18, 2017
e39b2be
NRF5 ESB fix two states (#996)
d00616 Nov 19, 2017
8d9af98
Update board name MyNRF5Board -> MyBoardNRF5 (#997)
d00616 Nov 20, 2017
bfcb125
Add MY_DEBUGDEVICE to redirect debug output (#1006)
nelsonov Dec 3, 2017
a9c49f0
Harmonize debug outputs (#1002)
tekka007 Dec 5, 2017
a80879e
Fix FOTA updates with smart sleep (#999)
tekka007 Dec 6, 2017
6337b8b
Use correct separator in keywords.txt (#1008)
per1234 Dec 6, 2017
26232da
MySensors 2.2.0-rc.2 (#1000)
tekka007 Dec 6, 2017
27b0177
Update reference to Code Contribution Guidelines (#1011)
mfalkvidd Dec 9, 2017
b148d82
Add MY_RS485_SOH_COUNT option (#1014)
rejoe2 Dec 18, 2017
292dc84
RFM69: Fix compiler warnings (#1020)
tekka007 Dec 28, 2017
d557cb3
Doxygenize MyGatewayTransport (#1023)
tekka007 Jan 1, 2018
b51c77b
Update doxygen (#1024)
tekka007 Jan 1, 2018
6434d2f
Linux: Fix null ptr exception (#1025)
tekka007 Jan 7, 2018
ca73ae2
Linux/SerialPort: Log success message (#1021)
mfalkvidd Jan 7, 2018
1feae06
SignalReport disabled by default (#1027)
tekka007 Jan 11, 2018
af3452f
Correct misspells (#1028)
tekka007 Jan 11, 2018
d9059d7
Relax Gitler on commit headline length (#1031)
mfalkvidd Jan 19, 2018
467b7e0
Add MY_INCLUSION_LED_PIN (#1030)
mfalkvidd Jan 23, 2018
8d3d7ae
Update README.md for upcoming release (#994)
fallberg Jan 24, 2018
64be32a
MySensors 2.2.0 release
mfalkvidd Jan 24, 2018
52ac498
Development version 2.2.1-alpha (#1043)
fallberg Jan 25, 2018
06269dd
Fix cppcheck issues (#1036)
mfalkvidd Jan 28, 2018
eff1136
RFM69: Fix compiler warning (#1046)
tekka007 Jan 28, 2018
8fbdca4
Doxygenize MyMessage / Message manipulation (#1035)
mfalkvidd Jan 30, 2018
14d8acc
Add URL option for MQTT broker in example sketch (#1033)
karx Jan 30, 2018
7ed5442
RFM69 - add keyword MY_RFM69_IRQ_PIN (#1052)
MiloshCZ Feb 2, 2018
dea0fd5
Fix smartSleep() (#1060)
tekka007 Feb 10, 2018
72b71c8
AVR: Harmonize code (#1059)
tekka007 Feb 10, 2018
968b2da
Various CI-pipeline fixes (#1042)
fallberg Feb 10, 2018
8a1f5f4
Revamp the simple password flag and rPi fixes (#1056)
fallberg Feb 11, 2018
6794c72
Restructure transport HAL (#1062)
tekka007 Feb 11, 2018
54fb250
Linux: Serial minor update (#1053)
marceloaqno Feb 13, 2018
0bc3ac9
RFM95: Updates and optimizations (#1063)
tekka007 Feb 18, 2018
a0af38a
RFM69: Updates and optimizations (#1049)
tekka007 Feb 18, 2018
345d6d7
Fix variable names, minor updates (#1071)
tekka007 Feb 19, 2018
b51981a
Fix MY_CORE_ONLY: Initialize HW (#1070)
tekka007 Feb 20, 2018
57eca4f
Transport code harmonization (#1072)
tekka007 Feb 20, 2018
599c0ba
ESP8266 Gateway examples: clarify inclusion pin (#1065)
mfalkvidd Feb 22, 2018
fe42dbd
Nvm fota (#1018)
d00616 Feb 28, 2018
c805f77
AVR: Fix OTA logging (#1074)
tekka007 Mar 1, 2018
eb83946
Development version 2.3.0-alpha (#1073)
fallberg Mar 4, 2018
3f2d292
Add git commit message hook to the mystools bundle (#1067)
fallberg Mar 6, 2018
3d093e6
Fix default IRQ pins on ESP8266 that prevent MCU from boot (#1076)
kvoit Mar 8, 2018
7a33082
Simplify doxygen for ./configure (#1080)
mfalkvidd Mar 12, 2018
c9c4618
Add missing keywords (#1084)
mfalkvidd Mar 21, 2018
06f8d2b
Add detection of missing keywords to gitler (#1085)
mfalkvidd Mar 22, 2018
2175c99
Linux: Use config file for gateway settings (#1061)
marceloaqno Mar 23, 2018
ea6d07c
Linux: Fix stability problem with ethernet (#1091)
marceloaqno Mar 24, 2018
fb95a84
Linux: Minor log fix (#1092)
marceloaqno Mar 25, 2018
b5a2fc2
Linux: RF24 interrupt trigger workaround (#1094)
marceloaqno Mar 27, 2018
4d90c00
MY_GATEWAY_TINYGSM support. GSM gateway using a modem module (#1097)
thucar Apr 4, 2018
3c0b272
Linux: Support keys in config file (#1093)
marceloaqno Apr 4, 2018
2994d83
RF24: Minor power optimization (#1069)
tekka007 Apr 4, 2018
9809eb6
Add missing keywords 2 (#1087)
mfalkvidd Apr 5, 2018
d1aa419
Remove faulty wiring instructions from ESP gateways (#1100)
mfalkvidd Apr 7, 2018
eaf1b94
ESP32: Support HW (#865)
tekka007 Apr 7, 2018
bb80732
Add keywords that already have Doxygen (#1108)
mfalkvidd Apr 9, 2018
f2d9f72
Fix spelling mistakes (#1104)
mfalkvidd Apr 9, 2018
df1bb7f
Add Doxygen for MQTT_USER and MQTT_PASSWORD (#1105)
mfalkvidd Apr 10, 2018
a842986
Clarify default defines (#1106)
mfalkvidd Apr 10, 2018
e0988e6
Add more missing keywords (#1111)
mfalkvidd Apr 10, 2018
bb77661
Consolidate WiFi defines (#1110)
tekka007 May 1, 2018
6c9be97
Word corrections (#1114)
flopp999 May 1, 2018
1c5853c
Add sleep forever by sleep(0); (#1113)
Tombula May 1, 2018
3c07390
Fix RFMxx deadlock and minor optimization (#1099)
tekka007 May 1, 2018
153850d
Add transport sanity check before entering loop() (#1116)
tekka007 May 1, 2018
d9e05eb
Kill Gitler and make way for The Butler (#1124)
fallberg May 4, 2018
c08b80c
Remove use of titles by CI Butler (#1125)
MartinHjelmare May 4, 2018
f5ed26c
Fixed some minor typos in comments (#1082)
pintman May 6, 2018
0b9af6d
Update cast in msg.set (#1130)
mfalkvidd May 14, 2018
ba7027c
Add error message when HAL is undefined (#1131)
Avamander May 16, 2018
4e1d69d
Refine cppcheck analysis (#1133)
fallberg May 18, 2018
59b15f5
Fix syntax error in MyGatewayTransportEthernet (#1132)
mfalkvidd May 18, 2018
bbaa939
Add software AES encryption to RFM95 transport HAL (#1054)
fallberg May 29, 2018
9f987a9
Remove redundant keyword identifiers (#1140)
per1234 Jun 8, 2018
fc99db6
Jenkins: Update ESP8266 board defs 2.4.1 (#1143)
tekka007 Jun 10, 2018
f934d7c
Jenkins: Update CI scripts + Arduino IDE 1.8.5 (#1144)
tekka007 Jun 10, 2018
a28b703
Avoid data array overflow (#1142)
seeers Jun 16, 2018
88a0d70
Pre-register PR build statuses on GitHub (#1145)
fallberg Jun 16, 2018
b84cd6a
Linux: Add rfm95 configure options (#1135)
marceloaqno Jun 16, 2018
15351cd
MySensors 2.3.0 release
fallberg Jun 18, 2018
7553893
Development version 2.3.1-alpha (#1154)
fallberg Jun 25, 2018
c6a970b
Prevent toggle ACTIVATE (#1164)
Yveaux Jul 30, 2018
2badd59
ESP8266: Updates to support 2.4.2 board defs (#1169)
tekka007 Aug 4, 2018
d0d0ee7
Add CPPFLAGS to configure output (#1168)
mfalkvidd Aug 6, 2018
57e3294
Update library props and fix typo (#1173)
tekka007 Aug 7, 2018
4a94fcf
GW: Send discovery message after startup
tekka007 Aug 15, 2018
a5e95ee
Merge pull request #1181 from tekka007/GatewayStartupDiscovery
fallberg Aug 15, 2018
831e0e8
Direct node2node traffic (#1174)
tekka007 Aug 21, 2018
2e406f5
Introduce CryptoHAL, optimize crypto functions (#1178)
tekka007 Aug 21, 2018
c8d951d
Update #1184, RFM69 frequency band support for India (#1185)
jkandasa Aug 21, 2018
6ffe29c
Code maintenance (#1186)
tekka007 Aug 22, 2018
46568ba
RF24: Fix TX issue regarding PA+LNA modules (#1189)
tekka007 Aug 26, 2018
5051d51
Add lowlevel nRF24 functions (#1190)
Yveaux Aug 26, 2018
ea7f7be
AVR: Fix variable scope in SHA256 ASM (#1188)
tekka007 Aug 26, 2018
6d24ab1
Improve transport function & debug messages (#1191)
tekka007 Aug 29, 2018
cff3696
Inclusion mode: change pinmode to INPUT_PULLUP (#1197)
freynder Aug 30, 2018
966c5d7
Nrf24 lowlevel (#1192)
Yveaux Aug 30, 2018
7214b0d
RF24: Add delay after power-up (#1193)
tekka007 Aug 30, 2018
0b51d5c
Update Jenkins to use Arduino 1.8.6 (#1199)
tekka007 Aug 31, 2018
1c33609
Fix SPIDEV on Armbian Stretch (#1200)
marceloaqno Sep 4, 2018
b346214
Allow flash strings in present() to save RAM (#1198)
tekka007 Sep 4, 2018
5d159a6
Fix internal message forwarding (#1205)
tekka007 Sep 12, 2018
5a7f3a4
Add GatewayESP32OTA example (#1216)
tekka007 Oct 21, 2018
b6ab7aa
Jenkins:Update Arduino 1.8.7 (#1215)
tekka007 Oct 21, 2018
8e8f44b
Code updates & harmonization (#1201)
tekka007 Oct 21, 2018
f5676a3
Allow splash screen to redirect to MY_DEBUGDEVICE if defined (#1057) …
nelsonov Oct 22, 2018
d1805db
Revert "Allow splash screen to redirect to MY_DEBUGDEVICE if defined …
tekka007 Oct 23, 2018
4104cdb
MY_DEBUGDEVICE output (#1221)
tekka007 Oct 23, 2018
06bdb99
Display release number (#1217)
tekka007 Nov 3, 2018
bde7dad
Implement CPUTemperature() (#1225)
tekka007 Nov 4, 2018
4b14f5a
Update PubSubClient 2.7 (#1224)
tekka007 Nov 11, 2018
121648f
MQTT GW: Add INDICATION_GW_RX (#1228)
tekka007 Nov 12, 2018
f4fd69e
MySensors 2.3.1 release
mfalkvidd Dec 14, 2018
a677a7d
Development version 2.3.2-alpha (#1237)
mfalkvidd Dec 14, 2018
03767e3
CI: Update Arduino IDE 1.8.8 (#1238)
tekka007 Dec 15, 2018
935a3bc
Update test sketches (#1243)
tekka007 Dec 31, 2018
f8d0f1a
Update CI scripts and ESP32 main (#1244)
tekka007 Jan 1, 2019
3664229
Debug: Recursive wait() calls (#1249)
tekka007 Jan 4, 2019
0251698
RPI: Fix compilation error (#1247)
tekka007 Jan 5, 2019
40f2930
Add MQTT Wifi connection status check (#1248)
Yveaux Jan 5, 2019
edd034e
MQTT GW: Subscribe topic concatenation refactored (#1240)
rdrgzlng Jan 5, 2019
1ee64f2
Allow definition of MY_OTA_RETRY and MY_OTA_RETRY_DELAY (#1241)
pragtich Jan 6, 2019
36cdaf4
Add hwSPI to HAL (#1234)
tekka007 Jan 6, 2019
2adfcc8
Add unified HwDebugPrint() (#1251)
tekka007 Jan 6, 2019
98355b2
Maintenance: ethernet and MQTT code (#1250)
tekka007 Jan 6, 2019
449bb4f
Update recursive wait() call warning (#1252)
tekka007 Jan 10, 2019
917e74d
Fix EEPROM_RF_ENCRYPTION_KEY_ADDRESS (#1258)
desander Jan 14, 2019
4d90c5a
Add Arduino IDE library badge to README (#1254)
mfalkvidd Jan 15, 2019
71b0698
Code maintenance (#1261)
tekka007 Jan 27, 2019
d3b3a1c
Fix UDP transport and update GW examples (#1262)
tekka007 Jan 27, 2019
1aa20cd
Cleanup: Remove RFM69 listenmode references (#1263)
tekka007 Jan 27, 2019
767a447
Code maintenance (#1264)
tekka007 Feb 3, 2019
ea093e5
Rpi: flush log file (#1269)
mfalkvidd Mar 13, 2019
3af3d11
CI: Update Arduino IDE 1.8.9 (#1274)
tekka007 Apr 9, 2019
e1259b7
Enable heartbeat for GW-only mode (#1273)
tekka007 Apr 10, 2019
7d907d1
Add CPU frequency to core debug info (#1275)
tekka007 Apr 10, 2019
a1282f3
Code maintenance (#1279)
tekka007 Apr 20, 2019
823dde0
AVR: Fix frequency measurement (#1280)
tekka007 Apr 21, 2019
932d4fa
Fix GW transport (#1281)
tekka007 Apr 22, 2019
e1d22d5
Added getSleepRemaining to core (#1286)
Yveaux Apr 26, 2019
1fa4728
Transport and crypto HAL update (#1282)
tekka007 Apr 28, 2019
7ff7bd0
Fix TransportHAL debug output (#1287)
tekka007 Apr 28, 2019
c689274
Fix TransportHAL debug output (#1288)
tekka007 Apr 29, 2019
42a7456
Transport doc (#1291)
Yveaux May 27, 2019
2868549
Add more checks for missing keywords (#1293)
mfalkvidd May 30, 2019
f027115
Rename RadioSettingGrpPub to TransportSettingGrpPub (#1295)
mfalkvidd May 30, 2019
cdfd8d7
Document esp8266 limitation for MY_RX_MESSAGE_BUFFER_FEATURE (#1296)
mfalkvidd May 30, 2019
f36c4ae
Rename "soft ack" to echo (#1292)
mfalkvidd Jun 6, 2019
838c900
Update CI (#1298)
tekka007 Jun 7, 2019
e8c1a16
Fix serial protocol parser (#1301)
tekka007 Jun 18, 2019
a5f4007
Update CI and SAMD board defs (#1302)
tekka007 Jun 20, 2019
ac18b02
Append instead of overwrite CXXFLAGS (#1304)
mfalkvidd Jul 13, 2019
3a4544b
Add CXXFLAGS to configure output (#1305)
mfalkvidd Jul 13, 2019
8dd893c
Add info on ESP32, STM32, nRF5 and SoftSPI (#1307)
mfalkvidd Jul 13, 2019
36ec4f8
Fix issues after CPPcheck 1.88 update (#1308)
tekka007 Jul 14, 2019
8257d0f
Energy meter pulse sensor itslav (#1306)
mfalkvidd Jul 17, 2019
529485c
Revert "Energy meter pulse sensor itslav (#1306)" (#1310)
tekka007 Jul 17, 2019
40f4deb
Code maintenance (#1309)
tekka007 Jul 20, 2019
896220b
Revert the revert 1306 energy meter pulse sensor itslav (#1313)
mfalkvidd Jul 20, 2019
ad6c483
RF24 improvements (#1316)
tekka007 Jul 22, 2019
e091471
Fix protocol header (#1319)
tekka007 Jul 22, 2019
67efa7a
Move noACK control to transportSendWrite() (#1317)
tekka007 Jul 23, 2019
3ae4fb6
Fix inverted noACK flag (#1321)
tekka007 Jul 24, 2019
f22f32d
Create FUNDING.yml (#1323)
mfalkvidd Jul 26, 2019
910e09e
Exclude items from the Arduino library package (#1324)
mfalkvidd Jul 26, 2019
7055fdb
Initial commit (#1325)
tekka007 Jul 28, 2019
79d7977
MyTransport update (#1329)
tekka007 Jul 31, 2019
baf4867
Clarify MY_DEBUG_OTA define (#1331)
mfalkvidd Aug 1, 2019
8bd82e7
Add log parser (#1338)
mfalkvidd Aug 16, 2019
7f24036
Add id failed to logparser (#1339)
mfalkvidd Aug 16, 2019
d399b17
Delete logparser.js
mfalkvidd Aug 16, 2019
40d8a18
Add a few improvements to the log parser (#1340)
mfalkvidd Aug 20, 2019
18fee01
ESP32/ESP8266: place ISR in IRAM (#1348)
tekka007 Sep 24, 2019
40ba986
Cumulative update (#1347)
tekka007 Sep 24, 2019
74e566f
Fix segmentation fault (#1346)
tekka007 Sep 24, 2019
4947a63
Update MyMessage.cpp (#1352)
rikki78 Oct 13, 2019
00ecdaa
Code maintenance (#1355)
tekka007 Oct 23, 2019
783e17b
CI: Update Arduino boards (#1356)
tekka007 Oct 26, 2019
06ea6da
Make it clear when checks pass (#1360)
mfalkvidd Nov 4, 2019
b9798e4
Update mystools/README.md for WSL (#1361)
mfalkvidd Nov 6, 2019
b7bed69
Add MY_RS485_DE_INVERSE define to invert the device enable pin polari…
ltigges Nov 6, 2019
409902d
Fix potential buffer overflow (#1365)
hannesweisbach Nov 12, 2019
60d62ca
Fix double free (#1366)
hannesweisbach Nov 13, 2019
3fff954
ESP8266: Update to 2.6.1 (#1370)
tekka007 Nov 15, 2019
be4d6a8
Add fuse chapter to signing troubleshooting (#1369)
fallberg Nov 23, 2019
409b079
RPI: Add support for RPI4 (#1364)
tekka007 Nov 23, 2019
3e2c542
Bumping version to 2.3.2-rc.1 (#1362)
tekka007 Nov 23, 2019
b9d9cc3
MySensors 2.3.2 release
tekka007 Dec 9, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 18 additions & 0 deletions .ci/Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!groovy
node {
deleteDir() // Purge workspace
// Checkout the repo to get the necessary groovy scripts (and place it in the required subdirectory)
dir('MySensors') {
checkout scm
}
def pipeline = load('MySensors/.ci/pipeline.groovy')

// Invoke the main pipeline
pipeline {
library_root = 'MySensors/' // Location of the MySensors library
repository_root = 'MySensors/' // Location of the repository root
github_organization = 'mysensors' // Name of the GitHub Organization
repository_name = 'MySensors' // Name of the repository on GitHub
nightly_arduino_ide = false // Pick Arduino IDE variant to use
}
}
18 changes: 18 additions & 0 deletions .ci/Jenkinsfile-nightly
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!groovy
node {
deleteDir() // Purge workspace
// Checkout the repo to get the necessary groovy scripts (and place it in the required subdirectory)
dir('MySensors') {
checkout scm
}
def pipeline = load('MySensors/.ci/pipeline.groovy')

// Invoke the main pipeline
pipeline {
library_root = 'MySensors/' // Location of the MySensors library
repository_root = 'MySensors/' // Location of the repository root
github_organization = 'mysensors' // Name of the GitHub Organization
repository_name = 'MySensors' // Name of the repository on GitHub
nightly_arduino_ide = true // Pick Arduino IDE variant to use
}
}
399 changes: 399 additions & 0 deletions .ci/arduino.groovy

Large diffs are not rendered by default.

150 changes: 150 additions & 0 deletions .ci/butler.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
#!groovy
def call(config) {
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (Butler)', 'Checking...', '${BUILD_URL}flowGraphTable/')
if (env.CHANGE_TARGET == 'master' &&
(env.CHANGE_AUTHOR != 'bblacey' && env.CHANGE_AUTHOR != 'd00616' &&
env.CHANGE_AUTHOR != 'fallberg' && env.CHANGE_AUTHOR != 'henrikekblad' &&
env.CHANGE_AUTHOR != 'marceloaqno' && env.CHANGE_AUTHOR != 'mfalkvidd' &&
env.CHANGE_AUTHOR != 'scalz' && env.CHANGE_AUTHOR != 'tbowmo' &&
env.CHANGE_AUTHOR != 'tekka007' && env.CHANGE_AUTHOR != 'user2684' &&
env.CHANGE_AUTHOR != 'Yveaux'))
{
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (Butler)', 'This pull request targets master. I am afraid that is not permitted for '+env.CHANGE_AUTHOR, '')
error "This pull request targets master. That is not permitted!"
}
else if (env.CHANGE_TARGET == 'master')
{
echo env.CHANGE_AUTHOR + ' is a valid author for targeting master branch, skipping further validation'
dir(config.repository_root) {
step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json',
createFileTemplateContent: '''
# Changelog
{{#commits}}
### {{{messageTitle}}}
{{{messageBody}}}
[{{hash}}](https://github.com/mysensors/MySensors/commit/{{hash}}) by {{authorName}} at *{{commitTime}}*
{{/commits}}
''',
createFileTemplateFile: '', createFileUseTemplateContent: true,
createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''],
[link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss',
file: 'ReleaseNotes.md', fromReference: env.CHANGE_TARGET, fromType: 'ref', gitHubApi: '',
gitHubApiTokenCredentialsId: '', gitHubIssuePattern: '#([0-9]+)', gitHubToken: '',
gitLabApiTokenCredentialsId: '', gitLabProjectName: '', gitLabServer: '', gitLabToken: '',
ignoreCommitsIfMessageMatches: '^Merge.*',
ignoreCommitsWithoutIssue: false, ignoreTagsIfNameMatches: '',
jiraIssuePattern: '\\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b', jiraPassword: '', jiraServer: '',
jiraUsername: '', jiraUsernamePasswordCredentialsId: '', mediaWikiPassword: '',
mediaWikiTemplateContent: '', mediaWikiTemplateFile: '', mediaWikiTitle: '', mediaWikiUrl: '',
mediaWikiUseTemplateContent: false, mediaWikiUseTemplateFile: false, mediaWikiUsername: '',
noIssueName: 'No issue', readableTagName: '/([^/]+?)$', showSummary: false,
showSummaryTemplateContent: '', showSummaryTemplateFile: '', showSummaryUseTemplateContent: false,
showSummaryUseTemplateFile: false, subDirectory: '', timeZone: 'UTC',
toReference: config.git_sha, toType: 'commit', untaggedName: 'Unreleased',
useConfigFile: false, useFile: true, useGitHub: true, useGitHubApiTokenCredentials: false,
useGitLab: false, useGitLabApiTokenCredentials: false, useIgnoreTagsIfNameMatches: false,
useJira: false, useJiraUsernamePasswordCredentialsId: false, useMediaWiki: false,
useReadableTagName: false, useSubDirectory: false]
])
}

config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (Butler)', 'Pass - Well done!', '')
config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (Release changelog)', '', '${BUILD_URL}execution/node/3/ws/MySensors/ReleaseNotes.md/*view*/')
return
}

dir(config.repository_root) {
step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json',
createFileTemplateContent: '''
{{#commits}}
{{{messageTitle}}}
{{/commits}}
''',
createFileTemplateFile: '', createFileUseTemplateContent: true,
createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''],
[link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss',
file: 'subjects.txt', fromReference: env.CHANGE_TARGET, fromType: 'ref', gitHubApi: '',
gitHubApiTokenCredentialsId: '', gitHubIssuePattern: '#([0-9]+)', gitHubToken: '',
gitLabApiTokenCredentialsId: '', gitLabProjectName: '', gitLabServer: '', gitLabToken: '',
ignoreCommitsIfMessageMatches: '^Merge.*',
ignoreCommitsWithoutIssue: false, ignoreTagsIfNameMatches: '',
jiraIssuePattern: '\\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b', jiraPassword: '', jiraServer: '',
jiraUsername: '', jiraUsernamePasswordCredentialsId: '', mediaWikiPassword: '',
mediaWikiTemplateContent: '', mediaWikiTemplateFile: '', mediaWikiTitle: '', mediaWikiUrl: '',
mediaWikiUseTemplateContent: false, mediaWikiUseTemplateFile: false, mediaWikiUsername: '',
noIssueName: 'No issue', readableTagName: '/([^/]+?)$', showSummary: false,
showSummaryTemplateContent: '', showSummaryTemplateFile: '', showSummaryUseTemplateContent: false,
showSummaryUseTemplateFile: false, subDirectory: '', timeZone: 'UTC',
toReference: config.git_sha, toType: 'commit', untaggedName: 'Unreleased',
useConfigFile: false, useFile: true, useGitHub: false, useGitHubApiTokenCredentials: false,
useGitLab: false, useGitLabApiTokenCredentials: false, useIgnoreTagsIfNameMatches: false,
useJira: false, useJiraUsernamePasswordCredentialsId: false, useMediaWiki: false,
useReadableTagName: false, useSubDirectory: false]
])
step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json',
createFileTemplateContent: '''
{{#commits}}
{{#messageBodyItems}}
{{.}}
{{/messageBodyItems}}
{{/commits}}
''',
createFileTemplateFile: '', createFileUseTemplateContent: true,
createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''],
[link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss',
file: 'bodies.txt', fromReference: env.CHANGE_TARGET, fromType: 'ref', gitHubApi: '',
gitHubApiTokenCredentialsId: '', gitHubIssuePattern: '#([0-9]+)', gitHubToken: '',
gitLabApiTokenCredentialsId: '', gitLabProjectName: '', gitLabServer: '', gitLabToken: '',
ignoreCommitsIfMessageMatches: '^Merge.*',
ignoreCommitsWithoutIssue: false, ignoreTagsIfNameMatches: '',
jiraIssuePattern: '\\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b', jiraPassword: '', jiraServer: '',
jiraUsername: '', jiraUsernamePasswordCredentialsId: '', mediaWikiPassword: '',
mediaWikiTemplateContent: '', mediaWikiTemplateFile: '', mediaWikiTitle: '', mediaWikiUrl: '',
mediaWikiUseTemplateContent: false, mediaWikiUseTemplateFile: false, mediaWikiUsername: '',
noIssueName: 'No issue', readableTagName: '/([^/]+?)$', showSummary: false,
showSummaryTemplateContent: '', showSummaryTemplateFile: '', showSummaryUseTemplateContent: false,
showSummaryUseTemplateFile: false, subDirectory: '', timeZone: 'UTC',
toReference: config.git_sha, toType: 'commit', untaggedName: 'Unreleased',
useConfigFile: false, useFile: true, useGitHub: false, useGitHubApiTokenCredentials: false,
useGitLab: false, useGitLabApiTokenCredentials: false, useIgnoreTagsIfNameMatches: false,
useJira: false, useJiraUsernamePasswordCredentialsId: false, useMediaWiki: false,
useReadableTagName: false, useSubDirectory: false]
])
}

ret = sh(returnStatus: true,
script:"""#!/bin/bash
cd ${config.repository_root}/.ci
./butler.sh""")

if (fileExists(config.repository_root+'restyling.patch')) {
emailext (
subject: "PR#${env.CHANGE_ID} - ${env.CHANGE_TITLE} has unfortunate code styling",
body: """<p>Greetings!<p>
I am afraid your pull request does not follow the MySensors standards with respect to coding style.</p>
That is ok, you are perhaps a first time committer to this repository. Please read the <a href="https://www.mysensors.org/download/contributing">code contribution guidelines</a> for help on how to format your code.<p>
To assist you, I have prepared a patch for you that will reformat the code according to the coding style required.<br>
The patch is attached. You may apply the patch using:<br>
git apply restyling.patch<p>
If you disagree with me, please discuss it <a href="${env.CHANGE_URL}">here</a>.<p>
--<br>
Yours sincerely, The Butler, serving the MySensors community""",
mimeType: 'text/html', to: env.CHANGE_AUTHOR_EMAIL,
attachLog: false, compressLog: false, attachmentsPattern: config.repository_root+'restyling.patch'
)
}
publishHTML([allowMissing: true, alwaysLinkToLastBuild: false, keepAll: true,
reportDir: config.repository_root,
reportFiles: 'butler.html', reportName: 'The Butler report', reportTitles: ''])
if (ret == 1) {
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (Butler)', 'I am afraid the commit(s) needs some touchup, please check the details...', '${BUILD_URL}The_20Butler_20report/butler.html')
currentBuild.currentResult == 'FAILURE'
echo "Terminated due to Butler assert" // For BFA
echo "You can read the detailed error report here: "+env.BUILD_URL+"The_20Butler_20report/"
error 'Terminated due to Butler assert'
} else {
config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (Butler)', 'Pass - Well done!', '${BUILD_URL}The_20Butler_20report/butler.html')
}
}

return this
132 changes: 132 additions & 0 deletions .ci/butler.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
#!/bin/bash
# Yes, this script can be improved immensly...
cd ..

result=0

echo "No subjects are of invalid size - great!<br>" > too_long_subjects.txt
echo "No subjects with leading lower case characters - great!<br>" > leading_lowercases.txt
echo "No subjects with trailing periods - great!<br>" > trailing_periods.txt
echo "No body lines are too wide - great!<br>" > too_long_body_lines.txt
echo "No keywords are missing in keywords.txt - great!<br>" > missing_keywords.txt
echo "No keywords in code that don't exist in keywords.txt - great!<br>" > missing_keywords_2.txt
echo "No keywords in code that don't have Doxygen comments and aren't blacklisted in keywords.txt - great!<br>" > missing_keywords_3.txt
echo "No lines in keywords.txt using spaces instead of TAB (the Arduino IDE doesn't support space) - great!<br>" > tab_spaces_keywords.txt
echo "No occurences of the deprecated boolean data type - great!<br>" >> booleans.txt

too_long_subjects=`awk 'length > 72' subjects.txt`
if [ -n "$too_long_subjects" ]; then
echo "<b>Commit subjects that are too wide (&gt;72 characters):</b>" > too_long_subjects.txt
echo "$too_long_subjects" >> too_long_subjects.txt
sed -i -e 's/$/<br>/' too_long_subjects.txt
result=1
fi
leading_lowercases=`awk '/^[[:lower:][:punct:]]/' subjects.txt`
if [ -n "$leading_lowercases" ]; then
echo "<b>Commit subjects with leading lowercase characters:</b>" > leading_lowercases.txt
echo "$leading_lowercases" >> leading_lowercases.txt
sed -i -e 's/$/<br>/' leading_lowercases.txt
result=1
fi
trailing_periods=`awk '/(\.)$/' subjects.txt`
if [ -n "$trailing_periods" ]; then
echo "<b>Commit subjects with trailing periods:</b>" > trailing_periods.txt
echo "$trailing_periods" >> trailing_periods.txt
sed -i -e 's/$/<br>/' trailing_periods.txt
result=1
fi

too_long_body_lines=`awk 'length > 72' bodies.txt`
if [ -n "$too_long_body_lines" ]; then
echo "<b>Body lines that are too wide (&gt;72 characters):</b>" > too_long_body_lines.txt
echo "$too_long_body_lines" >> too_long_body_lines.txt
sed -i -e 's/$/<br>/' too_long_body_lines.txt
result=1
fi

missing_keywords=$(for keyword in $(grep -A999 '#if DOXYGEN' MyConfig.h | grep -B999 '#endif' | grep '#define' | awk '{ print $2 '} | grep -e '^MY_'); do grep -q $keyword keywords.txt || echo $keyword; done)
if [ -n "$missing_keywords" ]; then
echo "<b>Keywords that are missing from keywords.txt:</b>" > missing_keywords.txt
echo "$missing_keywords" >> missing_keywords.txt
sed -i -e 's/$/<br>/' missing_keywords.txt
result=1
fi

missing_keywords_2=$(SOURCE_FILES="core/ drivers/ hal/ examples/ examples_linux/ MyConfig.h MySensors.h"; for keyword in $(grep -whore 'MY_[A-Z][A-Z_0-9]*' $SOURCE_FILES | sort -u ); do grep -q $keyword keywords.txt || echo $keyword; done)
if [ -n "$missing_keywords_2" ]; then
echo "<b>Keywords in code that don't exist in keywords.txt:</b>" > missing_keywords_2.txt
echo "If keywords aren't in keywords.txt, they will not be highlighted in the Arduino IDE. Highlighting makes the code easier to follow and helps spot spelling mistakes." > missing_keywords_2.txt
echo "$missing_keywords_2" >> missing_keywords_2.txt
sed -i -e 's/$/<br>/' missing_keywords_2.txt
result=1
fi

missing_keywords_3=$(SOURCE_FILES="core/ drivers/ hal/ examples/ examples_linux/ MyConfig.h MySensors.h"; for keyword in $(grep -whore 'MY_[A-Z][A-Z_0-9]*' $SOURCE_FILES | sort -u ); do grep -q $keyword keywords.txt || echo $keyword; done)
if [ -n "$missing_keywords_3" ]; then
echo "<b>Keywords in code that don't have Doxygen comments and aren't blacklisted in keywords.txt:</b>" > missing_keywords_3.txt
echo "If keywords don't have Doxygen comments, they will not be available at https://www.mysensors.org/apidocs/index.html Add Doxygen comments to make it easier for users to find and understand how to use the new keywords." > missing_keywords_3.txt
echo "$missing_keywords_3" >> missing_keywords_3.txt
sed -i -e 's/$/<br>/' missing_keywords_3.txt
result=1
fi


tab_spaces_keywords=$(grep -e '[[:space:]]KEYWORD' -e '[[:space:]]LITERAL1' keywords.txt | grep -v -e $'\tLITERAL1' -e $'\tKEYWORD')
if [ -n "$tab_spaces_keywords" ]; then
echo "<b>Keywords that use space instead of TAB in keywords.txt:</b>" > tab_spaces_keywords.txt
echo "$tab_spaces_keywords" >> tab_spaces_keywords.txt
sed -i -e 's/$/<br>/' tab_spaces_keywords.txt
result=1
fi

# Evaluate if there exists booleans in the code tree (not counting this file)
if git grep -q boolean -- `git ls-files | grep -v butler.sh`; then
echo "<b>You have added at least one occurence of the deprecated boolean data type. Please use bool instead.</b><br>" > booleans.txt
result=1
fi

printf "%s" "<html>" > butler.html
echo "Greetings! Here is my evaluation of your pull request:<br>" >> butler.html
awk 'FNR==1{print "<br>"}1' too_long_subjects.txt leading_lowercases.txt trailing_periods.txt too_long_body_lines.txt missing_keywords.txt missing_keywords_2.txt missing_keywords_3.txt tab_spaces_keywords.txt booleans.txt >> butler.html
echo "<br>" >> butler.html
if [ $result -ne 0 ]; then
echo "<b>I am afraid there are some issues with your commit messages and/or use of keywords.</b><br>" >> butler.html
echo "I highly recommend reading <a href="http://chris.beams.io/posts/git-commit">this guide</a> for tips on how to write a good commit message.<br>" >> butler.html
echo "More specifically, MySensors have some <a href="https://www.mysensors.org/download/contributing">code contribution guidelines</a> that I am afraid all contributers need to follow.<br>" >> butler.html
echo "<br>" >> butler.html
echo "I can help guide you in how to change the commit message for a single-commit pull request:<br>" >> butler.html
echo "git checkout &lt;your_branch&gt;<br>" >> butler.html
echo "git commit --amend<br>" >> butler.html
echo "git push origin HEAD:&lt;your_branch_on_github&gt; -f<br>" >> butler.html
echo "<br>" >> butler.html
echo "To change the commit messages for a multiple-commit pull request:<br>" >> butler.html
echo "git checkout &lt;your_branch&gt;<br>" >> butler.html
echo "git rebase -i &lt;sha_of_parent_to_the_earliest_commit_you_want_to_change&gt;<br>" >> butler.html
echo "Replace \"pick\" with \"r\" or \"reword\" on the commits you need to change message for<br>" >> butler.html
echo "git push origin HEAD:&lt;your_branch_on_github&gt; -f<br>" >> butler.html
echo "<br>" >> butler.html
fi

# Evaluate coding style
astyle --options=.mystools/astyle/config/style.cfg -nq --recursive "*.h" "*.c" "*.cpp"
git diff > restyling.patch
if [ -s restyling.patch ]; then
echo "I am afraid your coding style is not entirely in line with the MySensors prefered style.<b><br>A mail with a patch has been sent to you that, if applied to your PR, will make it follow the MySensors coding standards.</b><br>" >> butler.html
echo "You can apply the patch using:<br>" >> butler.html
echo "git apply restyling.patch<br>" >> butler.html
echo "<br>" >> butler.html
result=1
else
echo "This commit is meeting the coding standards, well done!<br>" >> butler.html
echo "<br>" >> butler.html
rm restyling.patch
fi

if [ $result -ne 0 ]; then
echo "If you have any questions, please first read the <a href="https://www.mysensors.org/download/contributing">code contribution guidelines</a>.</b><br>" >> butler.html
echo "<b>If you disagree to this, please discuss it in the GitHub pull request thread.</b><br>" >> butler.html
echo "<br>" >> butler.html
fi
echo "Yours sincerely, The Butler, serving the MySensors community<br>" >> butler.html
printf "%s" "</html>" >> butler.html
exit $result
40 changes: 40 additions & 0 deletions .ci/doxygen.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!groovy
def call(config) {
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (Documentation)', 'Generating...', '${BUILD_URL}flowGraphTable/')
sh """#!/bin/bash
cd ${config.repository_root}
Documentation/doxygen.sh"""
warnings canComputeNew: false, canResolveRelativePaths: false,
defaultEncoding: '',
excludePattern: '''.*/hal/architecture/Linux/drivers/.*,.*/hal/architecture/AVR/drivers/.*,.*/drivers/TinyGSM/.*''',
failedTotalAll: '', healthy: '', includePattern: '', messagesPattern: '',
parserConfigurations: [[parserName: 'Doxygen', pattern: config.repository_root+'doxygen.log']],
unHealthy: '', unstableTotalAll: '0'
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: true,
reportDir: config.repository_root+'Documentation/html',
reportFiles: 'index.html', reportName: 'Doxygen HTML', reportTitles: ''])

if (!config.is_pull_request)
{
// Publish docs to API server
if (env.BRANCH_NAME == 'master') {
sh """#!/bin/bash
scp -r ${config.repository_root}Documentation/html docs@direct.openhardware.io:"""
} else if (env.BRANCH_NAME == 'development') {
sh """#!/bin/bash
scp -r ${config.repository_root}Documentation/html docs@direct.openhardware.io:beta"""
}
} else {
if (currentBuild.currentResult == 'UNSTABLE') {
config.pr.setBuildStatus(config, 'ERROR', 'Toll gate (Documentation)', 'Warnings found', '${BUILD_URL}warnings16Result/new')
error 'Terminating due to doxygen error'
} else if (currentBuild.currentResult == 'FAILURE') {
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (Documentation)', 'Error generating documentation', '${BUILD_URL}flowGraphTable/')
error 'Terminating due to doxygen error'
} else {
config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (Documentation)', 'Pass', '${BUILD_URL}Doxygen_HTML/index.html')
}
}
}

return this
Loading