diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a31313b..2353073a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,5 @@ jobs: - name: Archive production artifacts uses: actions/upload-artifact@v3 with: - name: firmware - path: | - .pio/build/**/*.hex - .pio/build/**/*.uf2 + name: ZIP files + path: ./_dist/*.zip diff --git a/.github/workflows/pr_artifact_comment.yml b/.github/workflows/pr_artifact_comment.yml index d22aff6e..ef310253 100644 --- a/.github/workflows/pr_artifact_comment.yml +++ b/.github/workflows/pr_artifact_comment.yml @@ -14,6 +14,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - prefix: "Firmware for this pull request:" - format: "[Firmware.zip]({url})" + prefix: "Board and firmware folder for this pull request:" + format: "[Mobiflight-Connector.zip]({url})" addTo: pull diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78507eee..d21ed25f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,16 +50,12 @@ jobs: - name: Archive production artifacts uses: actions/upload-artifact@v3 with: - name: firmware - path: | - .pio/build/**/*.hex - .pio/build/**/*.uf2 + name: ZIP files + path: ./_dist/*.zip - name: Release uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - files: | - .pio/build/**/*.hex - .pio/build/**/*.uf2 + files: ./_dist/*.zip diff --git a/.gitignore b/.gitignore index 5ffa057a..7ee3531e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ .vscode/ipch .vscode/arduino.json .CustomDevices +_build +_dist diff --git a/_Boards/Atmel/Board_Mega/arduino_mega.board.json b/_Boards/Atmel/Board_Mega/arduino_mega.board.json new file mode 100644 index 00000000..66cfe820 --- /dev/null +++ b/_Boards/Atmel/Board_Mega/arduino_mega.board.json @@ -0,0 +1,485 @@ +{ + "$schema": "./mfboard.schema.json", + "AvrDudeSettings": { + "Device": "atmega2560", + "BaudRates": ["115200"], + "Programmer": "wiring", + "Timeout": 15000 + }, + "Connection": { + "ConnectionDelay": 2000, + "ExtraConnectionRetry": false, + "ForceResetOnFirmwareUpdate": false, + "DelayAfterFirmwareUpdate": 0, + "DtrEnable": true, + "MessageSize": 90, + "EEPROMSize": 1496 + }, + "HardwareIds": [ + "^VID_2341&PID_0010", + "^VID_2341&PID_0042", + "^VID_8087&PID_0024", + "^VID_1A86&PID_7523", + "^VID_2A03&PID_0042", + "^VID_0403&PID_6001", + "^VID_0403\\+PID_6001\\+.+", + "^VID_2A03&PID_0010", + "^VID_2341&PID_0210", + "^VID_2341&PID_0242", + "^VID_10C4&PID_EA60", + "^VID_2341&PID_0044", + "^VID_3343&PID_0042", + "^VID_04D9&PID_B534" + ], + "Info": { + "CanInstallFirmware": true, + "CanResetBoard": true, + "DelayAfterFirmwareUpdate": 0, + "FirmwareBaseName": "mobiflight_mega", + "FirmwareExtension": "hex", + "LatestFirmwareVersion": "2.5.1", + "FriendlyName": "Arduino Mega 2560", + "MobiFlightType": "MobiFlight Mega", + "ResetFirmwareFile": "reset.arduino_mega_1_0_2.hex" + }, + "ModuleLimits": { + "MaxAnalogInputs": 16, + "MaxInputShifters": 6, + "MaxButtons": 68, + "MaxEncoders": 20, + "MaxLcdI2C": 2, + "MaxLedSegments": 6, + "MaxOutputs": 68, + "MaxServos": 12, + "MaxShifters": 6, + "MaxSteppers": 10, + "MaxInputMultiplexer": 6, + "MaxCustomDevices" : 0 + }, + "Pins": [ + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 2 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 3 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 4 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 5 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 6 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 7 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 8 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 9 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 10 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 11 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 12 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 13 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 14 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 15 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 16 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 17 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 18 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 19 + }, + { + "isAnalog": false, + "isPWM": false, + "isI2C": true, + "Pin": 20 + }, + { + "isAnalog": false, + "isPWM": false, + "isI2C": true, + "Pin": 21 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 22 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 23 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 24 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 25 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 26 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 27 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 28 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 29 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 30 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 31 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 32 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 33 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 34 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 35 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 36 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 37 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 38 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 39 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 40 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 41 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 42 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 43 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 44 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 45 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 46 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 47 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 48 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 49 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 50 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 51 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 52 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 53 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 54, + "Name": "A0" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 55, + "Name": "A1" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 56, + "Name": "A2" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 57, + "Name": "A3" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 58, + "Name": "A4" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 59, + "Name": "A5" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 60, + "Name": "A6" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 61, + "Name": "A7" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 62, + "Name": "A8" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 63, + "Name": "A9" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 64, + "Name": "A10" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 65, + "Name": "A11" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 66, + "Name": "A12" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 67, + "Name": "A13" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 68, + "Name": "A14" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 69, + "Name": "A15" + } + ] +} diff --git a/_Boards/Atmel/Board_Mega/reset.arduino_mega_1_0_2.hex b/_Boards/Atmel/Board_Mega/reset.arduino_mega_1_0_2.hex new file mode 100644 index 00000000..f2578bfa --- /dev/null +++ b/_Boards/Atmel/Board_Mega/reset.arduino_mega_1_0_2.hex @@ -0,0 +1,179 @@ +:100000000C9428010C9459010C9459010C94590139 +:100010000C9459010C9459010C9459010C945901F8 +:100020000C9459010C9459010C9459010C945901E8 +:100030000C9459010C9459010C9459010C945901D8 +:100040000C9459010C9459010C9459010C945901C8 +:100050000C9459010C9459010C9459010C9472039D +:100060000C9459010C94E6030C94BC030C945901B4 +:100070000C9459010C9459010C9459010C94590198 +:100080000C9459010C9459010C9459010C94590188 +:100090000C9459010C9459010C9459010C94590178 +:1000A0000C9459010C9459010C9459010C94590168 +:1000B0000C9459010C9459010C9459010C94590158 +:1000C0000C9459010C9459010C9459010C94590148 +:1000D0000C9459010C9459010C9459010C94590138 +:1000E0000C9459010C94CF010C94BD010C941C0488 +:1000F0000C9487010C94D4020C94B7010C94AD01BC +:100100000C94D9010C94C1010C947A020C94CB018B +:100110000C94C5010C949E010C943E020C94210396 +:100120000C94A6010C94DD010C94AA010C94A2017C +:100130000C948E020C94D3010C948C010C94B3019A +:100140000C946B020C949C020000210024002700F8 +:100150002A002D00300033000101000004010701D6 +:100160000A0100002200250028002B002E0031008B +:10017000340002010000050108010B010505050519 +:10018000070508080808020202020A0A080804040F +:10019000040401010101010101010303030303033D +:1001A0000303040707070C0C0C0C0C0C0C0C0202CC +:1001B000020206060606060606060B0B0B0B0B0BC9 +:1001C0000B0B010210202008081020401020408056 +:1001D000020102010804020101020408102040800B +:1001E0008040201008040201800402018040201099 +:1001F00008040201080402010102040810204080E2 +:10020000010204081020408000000A0B02090C0DB6 +:100210000E080703040100000000000000000000B9 +:1002200000000000000000000000000000000000CE +:10023000000000001211100000000000000000008B +:1002400000000000000000000000000000001C048E +:1002500011241FBECFEFD1E2DEBFCDBF00E00CBF47 +:1002600012E0A0E0B2E0E6EFFAE000E00BBF02C06F +:1002700007900D92A231B107D9F722E0A2E1B2E0D6 +:1002800001C01D92AA3BB207E1F711E0C8E2D1E03C +:1002900000E006C021970109802FFE010E94710530 +:1002A000C732D10780E00807A9F70E944D040C94DB +:1002B00079050C940000382FE5E1F2E08491EFEC31 +:1002C000F1E02491E9E8F1E09491992309F435C033 +:1002D000882311F181508231F8F4E82FF0E088276B +:1002E000EB58FE4F8F4F0C947105A601AA018701B0 +:1002F0009E01A2018C01AD01B301B701BD01C10195 +:10030000C501CB01CF018C01D301D901DD01809161 +:1003100080008F7780938000E92FF0E0EE0FFF1FC1 +:10032000EE59FE4FA591B4918FB7F894EC9131112D +:1003300048C020952E232C938FBF08958091800074 +:100340008F7DE8CF80918000877FE4CF84B58F7761 +:1003500084BDE2CF84B58F7DFBCF8091B0008F77D5 +:100360008093B000D9CF8091B0008F7DF9CF80917C +:1003700090008F7780939000CFCF809190008F7DF9 +:10038000F9CF80919000877FF5CF8091A0008F7783 +:100390008093A000C1CF8091A0008F7DF9CF809184 +:1003A000A000877FF5CF809120018F778093200177 +:1003B000B3CF809120018F7DF9CF80912001877F7D +:1003C000F5CF2E2BB8CF3FB7F894809117029091BC +:1003D0001802A0911902B0911A0226B5A89B05C077 +:1003E0002F3F19F00196A11DB11D3FBFBA2FA92FB4 +:1003F000982F8827BC01CD01620F711D811D911DB1 +:1004000042E0660F771F881F991F4A95D1F708951C +:100410008F929F92AF92BF92CF92DF92EF92FF9214 +:100420000E94E3014B015C0188EEC82E83E0D82EC8 +:10043000E12CF12C0E94E301681979098A099B09D2 +:10044000683E734081059105A8F321E0C21AD108E6 +:10045000E108F10888EE880E83E0981EA11CB11C0B +:10046000C114D104E104F10429F7FF90EF90DF906B +:10047000CF90BF90AF909F908F900895AF92BF9212 +:10048000CF92DF92EF92FF920F931F93CF93DF9360 +:100490006C017B018B01040F151FEB015E01AE188F +:1004A000BF08C017D10759F06991D601ED91FC91B1 +:1004B0000190F081E02DC6011995892B79F7C501CE +:1004C000DF91CF911F910F91FF90EF90DF90CF9030 +:1004D000BF90AF900895FC01538D448D252F30E0DF +:1004E000842F90E0821B930B541710F0CF96089541 +:1004F00001970895FC01918D828D981761F0A28D6E +:10050000AE0FBF2FB11D5D968C91928D9F5F9F7333 +:10051000928F90E008958FEF9FEF0895FC01918DE9 +:10052000828D981731F0828DE80FF11D858D90E056 +:1005300008958FEF9FEF0895FC01918D228D892FF3 +:1005400090E0805C9F4F821B91098F7399270895DB +:100550008BE192E00E949C0221E0892B09F420E0CB +:10056000822F0895FC01A48DA80FB92FB11DA35AA5 +:10057000BF4F2C91848D90E001968F739927848FC3 +:10058000A689B7892C93A089B1898C9183708064E6 +:100590008C93938D848D981306C00288F389E02D87 +:1005A00080818F7D80830895EF92FF920F931F9338 +:1005B000CF93DF93EC0181E0888F9B8D8C8D981316 +:1005C0001AC0E889F989808185FF15C09FB7F89422 +:1005D000EE89FF896083E889F9898081837080646E +:1005E00080839FBF81E090E0DF91CF911F910F91B9 +:1005F000FF90EF900895F62E0B8D10E00F5F1F4FC8 +:100600000F731127E02E8C8D8E110CC00FB607FCD6 +:10061000FACFE889F989808185FFF5CFCE010E9464 +:10062000B202F1CFEB8DEC0FFD2FF11DE35AFF4F1E +:10063000F0829FB7F8940B8FEA89FB8980818062F2 +:10064000CFCFCF93DF93EC01888D8823B9F0AA89AF +:10065000BB89E889F9898C9185FD03C0808186FD7D +:100660000DC00FB607FCF7CF8C9185FFF2CF8081CC +:1006700085FFEDCFCE010E94B202E9CFDF91CF918D +:10068000089580E090E0892B29F00E94A802811152 +:100690000E94000080E090E0892B49F080E090E02B +:1006A000892B29F00E94000081110E94000080E047 +:1006B00090E0892B49F080E090E0892B29F00E949E +:1006C000000081110E94000080E090E0892B49F039 +:1006D00080E090E0892B29F00E94000081110C94A9 +:1006E000000008951F920F920FB60F9211242F93BE +:1006F0003F938F939F93AF93BF93809113029091F9 +:100700001402A0911502B09116023091120223E05A +:10071000230F2D3758F50196A11DB11D209312020C +:100720008093130290931402A0931502B0931602C3 +:100730008091170290911802A0911902B0911A02AB +:100740000196A11DB11D8093170290931802A093EA +:100750001902B0931A02BF91AF919F918F913F916F +:100760002F910F900FBE0F901F90189526E8230F22 +:100770000296A11DB11DD2CF1F920F920FB60F92FC +:1007800011240BB60F922F933F934F935F936F9368 +:100790007F938F939F93AF93BF93EF93FF938BE1DF +:1007A00092E00E94B202FF91EF91BF91AF919F91B1 +:1007B0008F917F916F915F914F913F912F910F900A +:1007C0000BBE0F900FBE0F901F9018951F920F92A7 +:1007D0000FB60F9211240BB60F922F938F939F9306 +:1007E000EF93FF93E0912B02F0912C028081E09136 +:1007F0003102F091320282FD1DC09081809134025D +:100800008F5F8F7320913502821741F0E09134029F +:10081000F0E0E55EFD4F958F80933402FF91EF91FC +:100820009F918F912F910F900BBE0F900FBE0F9045 +:100830001F9018958081F2CFEBE1F2E013821282D3 +:1008400088EE93E0A0E0B0E084839583A683B7832D +:1008500084E092E09183808385EC90E095878487A3 +:1008600084EC90E09787868780EC90E0918B808B7A +:1008700081EC90E0938B828B82EC90E0958B848B63 +:1008800086EC90E0978B868B118E128E138E148ED1 +:100890001092B9021092B8020895CF93DF93CDB7AA +:1008A000DEB7789484B5826084BD84B5816084BDF0 +:1008B00085B5826085BD85B5816085BD80916E00FE +:1008C000816080936E00109281008091810082602F +:1008D000809381008091810081608093810080916C +:1008E00080008160809380008091B100846080935B +:1008F000B1008091B00081608093B0008091910040 +:10090000826080939100809191008160809391003A +:10091000809190008160809390008091A10082601E +:100920008093A1008091A10081608093A1008091BB +:10093000A00081608093A00080912101826080935B +:10094000210180912101816080932101809120010A +:1009500081608093200180917A00846080937A0086 +:1009600080917A00826080937A0080917A00816021 +:1009700080937A0080917A00806880937A00109248 +:10098000C1000DB71EB780E090E19093B90280934B +:10099000B8028DB79EB790510FB6F8949EBF0FBEA8 +:1009A0008DBFEDB7FEB731966F01EFECF1E04491EA +:1009B000E9E8F1E08491882399F090E0880F991F8D +:1009C000FC01E85BFE4FA591B491FC01EE59FE4F8E +:1009D000859194918FB7F894EC91E42BEC938FBFB1 +:1009E000E0912B02F0912C0282E08083E0912702BB +:1009F000F09128021082E0912902F0912A0280E110 +:100A0000808310923302E0912F02F091300286E051 +:100A10008083E0912D02F0912E028081806180839D +:100A2000E0912D02F0912E02808188608083E09118 +:100A30002D02F0912E02808180688083E0912D024A +:100A4000F0912E0280818F7D8083C601905FF60138 +:100A50002FEF21938E179F07E1F78091B8029091B5 +:100A6000B90281159041A8F0F12CE12CF601B1906A +:100A70006F01C7010E945B05B81621F06B2DC701FD +:100A80000E946305FFEFEF1AFF0AE11420E1F2066E +:100A900069F70FB6F8941EBF0FBE0DBF81E00E942C +:100AA0005B010E94080280E00E945B010E94080234 +:100AB0000E944103F3CFF999FECF92BD81BDF89A10 +:100AC000992780B50895262FF999FECF1FBA92BDB8 +:100AD00081BD20BD0FB6F894FA9AF99A0FBE01961F +:100AE0000895EE0FFF1F881F8BBF0790F691E02D32 +:060AF0001994F894FFCFF9 +:100AF60000000000D4023E026B0221039C027A022F +:020B06008E025D +:00000001FF diff --git a/_Boards/Atmel/Board_Nano/arduino_nano.board.json b/_Boards/Atmel/Board_Nano/arduino_nano.board.json new file mode 100644 index 00000000..fef3d441 --- /dev/null +++ b/_Boards/Atmel/Board_Nano/arduino_nano.board.json @@ -0,0 +1,184 @@ +{ + "$schema": "./mfboard.schema.json", + "AvrDudeSettings": { + "Attempts": 1, + "Device": "atmega328p", + "BaudRates": ["115200", "57600"], + "Programmer": "arduino", + "Timeout": 20000 + }, + "Connection": { + "ConnectionDelay": 1750, + "DelayAfterFirmwareUpdate": 0, + "DtrEnable": true, + "EEPROMSize": 286, + "ExtraConnectionRetry": true, + "ForceResetOnFirmwareUpdate": false, + "MessageSize": 64, + "TimeoutForFirmwareUpdate": 60000 + }, + "HardwareIds": [ + "^VID_2341&PID_0043", + "^VID_2A03&PID_0043", + "^VID_2341&PID_0243", + "^VID_2341&PID_0001", + "^VID_1A86&PID_7523", + "^VID_0403&PID_6001", + "^VID_067B&PID_2303", + "^VID_0403\\+PID_6001\\+.+" + ], + "Info": { + "CanInstallFirmware": true, + "CanResetBoard": true, + "FirmwareBaseName": "mobiflight_nano", + "FirmwareExtension": "hex", + "FriendlyName": "Arduino Nano", + "LatestFirmwareVersion": "2.5.1", + "MobiFlightType": "MobiFlight Nano", + "ResetFirmwareFile": "reset.arduino_uno_1_0_2.hex" + }, + "ModuleLimits": { + "MaxAnalogInputs": 8, + "MaxButtons": 18, + "MaxEncoders": 9, + "MaxInputShifters": 6, + "MaxLcdI2C": 2, + "MaxLedSegments": 6, + "MaxOutputs": 18, + "MaxServos": 8, + "MaxShifters": 6, + "MaxSteppers": 4, + "MaxInputMultiplexer": 6, + "MaxCustomDevices": 0 + }, + "Pins": [ + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 2 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 3 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 4 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 5 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 6 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 7 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 8 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 9 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 10 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 11 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 12 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 13 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A0", + "Pin": 14 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A1", + "Pin": 15 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A2", + "Pin": 16 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A3", + "Pin": 17 + }, + { + "isAnalog": true, + "isI2C": true, + "isPWM": false, + "Name": "A4", + "Pin": 18 + }, + { + "isAnalog": true, + "isI2C": true, + "isPWM": false, + "Name": "A5", + "Pin": 19 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A6", + "Pin": 20 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A7", + "Pin": 21 + } + ] +} diff --git a/_Boards/Atmel/Board_Nano/reset.arduino_uno_1_0_2.hex b/_Boards/Atmel/Board_Nano/reset.arduino_uno_1_0_2.hex new file mode 100644 index 00000000..86408120 --- /dev/null +++ b/_Boards/Atmel/Board_Nano/reset.arduino_uno_1_0_2.hex @@ -0,0 +1,134 @@ +:100000000C945D000C9485000C9485000C94850084 +:100010000C9485000C9485000C9485000C9485004C +:100020000C9485000C9485000C9485000C9485003C +:100030000C9485000C9485000C9485000C9485002C +:100040000C9437020C9485000C94A7020C94810246 +:100050000C9485000C9485000C9485000C9485000C +:100060000C9485000C9485000000000024002700FB +:100070002A0000000000250028002B0004040404CE +:100080000404040402020202020203030303030342 +:10009000010204081020408001020408102001021F +:1000A00004081020000000080002010000030407FB +:1000B0000000000000000000D90211241FBECFEF95 +:1000C000D8E0DEBFCDBF11E0A0E0B1E0E4E2F8E0AF +:1000D00002C005900D92A231B107D9F721E0A2E14B +:1000E000B1E001C01D92AA3BB207E1F710E0CDE5F7 +:1000F000D0E004C02197FE010E940A04CC35D1074C +:10010000C9F70E940A030C9410040C940000E1EB60 +:10011000F0E02491EDE9F0E09491E9E8F0E0E49179 +:10012000EE23C9F0222339F0233001F1A8F4213065 +:1001300019F1223029F1F0E0EE0FFF1FEE58FF4FCA +:10014000A591B4912FB7F894EC91811126C09095A8 +:100150009E239C932FBF08952730A9F02830C9F023 +:10016000243049F7209180002F7D03C0209180002A +:100170002F7720938000DFCF24B52F7724BDDBCFEE +:1001800024B52F7DFBCF2091B0002F772093B000B6 +:10019000D2CF2091B0002F7DF9CF9E2BDACF3FB781 +:1001A000F8948091170190911801A0911901B091D4 +:1001B0001A0126B5A89B05C02F3F19F00196A11D75 +:1001C000B11D3FBFBA2FA92F982F8827BC01CD01A1 +:1001D000620F711D811D911D42E0660F771F881F00 +:1001E000991F4A95D1F708958F929F92AF92BF922F +:1001F000CF92DF92EF92FF920E94CF004B015C0101 +:1002000088EEC82E83E0D82EE12CF12C0E94CF007E +:10021000681979098A099B09683E7340810591052F +:10022000A8F321E0C21AD108E108F10888EE880E8F +:1002300083E0981EA11CB11CC114D104E104F10497 +:1002400029F7FF90EF90DF90CF90BF90AF909F90F5 +:100250008F900895AF92BF92CF92DF92EF92FF926C +:100260000F931F93CF93DF936C017B018B01040FDE +:10027000151FEB015E01AE18BF08C017D10759F07A +:100280006991D601ED91FC910190F081E02DC601BC +:100290000995892B79F7C501DF91CF911F910F91B6 +:1002A000FF90EF90DF90CF90BF90AF900895FC014A +:1002B000538D448D252F30E0842F90E0821B930BCB +:1002C000541710F0CF96089501970895FC01918D71 +:1002D000828D981761F0A28DAE0FBF2FB11D5D9674 +:1002E0008C91928D9F5F9F73928F90E008958FEF16 +:1002F0009FEF0895FC01918D828D981731F0828DCA +:10030000E80FF11D858D90E008958FEF9FEF089520 +:10031000FC01918D228D892F90E0805C9F4F821B84 +:1003200091098F73992708958BE191E00E948801CC +:1003300021E0892B09F420E0822F089580E090E0ED +:10034000892B29F00E94940181110C9400000895DA +:10035000FC01A48DA80FB92FB11DA35ABF4F2C913A +:10036000848D90E001968F739927848FA689B78931 +:100370002C93A089B1898C91837080648C93938D28 +:10038000848D981306C00288F389E02D80818F7DCB +:1003900080830895EF92FF920F931F93CF93DF9383 +:1003A000EC0181E0888F9B8D8C8D98131AC0E889B1 +:1003B000F989808185FF15C09FB7F894EE89FF8980 +:1003C0006083E889F98980818370806480839FBF1E +:1003D00081E090E0DF91CF911F910F91FF90EF901E +:1003E0000895F62E0B8D10E00F5F1F4F0F7311272E +:1003F000E02E8C8D8E110CC00FB607FCFACFE88969 +:10040000F989808185FFF5CFCE010E94A801F1CF47 +:10041000EB8DEC0FFD2FF11DE35AFF4FF0829FB7DC +:10042000F8940B8FEA89FB8980818062CFCFCF93CC +:10043000DF93EC01888D8823B9F0AA89BB89E8890C +:10044000F9898C9185FD03C0808186FD0DC00FB6B2 +:1004500007FCF7CF8C9185FFF2CF808185FFEDCF30 +:10046000CE010E94A801E9CFDF91CF9108951F929C +:100470000F920FB60F9211242F933F938F939F9358 +:10048000AF93BF938091130190911401A091150136 +:10049000B09116013091120123E0230F2D3758F54A +:1004A0000196A11DB11D2093120180931301909319 +:1004B0001401A0931501B09316018091170190913A +:1004C0001801A0911901B0911A010196A11DB11D49 +:1004D0008093170190931801A0931901B0931A010A +:1004E000BF91AF919F918F913F912F910F900FBE30 +:1004F0000F901F90189526E8230F0296A11DB11D9D +:10050000D2CF1F920F920FB60F9211242F933F93C9 +:100510004F935F936F937F938F939F93AF93BF930B +:10052000EF93FF938BE191E00E94A801FF91EF917F +:10053000BF91AF919F918F917F916F915F914F91FB +:100540003F912F910F900FBE0F901F9018951F9203 +:100550000F920FB60F9211242F938F939F93EF93C7 +:10056000FF93E0912B01F0912C018081E09131010A +:10057000F091320182FD1BC09081809134018F5F28 +:100580008F7320913501821741F0E0913401F0E042 +:10059000E55EFE4F958F80933401FF91EF919F911F +:1005A0008F912F910F900FBE0F901F901895808103 +:1005B000F4CFEBE1F1E01382128288EE93E0A0E049 +:1005C000B0E084839583A683B78384E091E0918330 +:1005D000808385EC90E09587848784EC90E0978712 +:1005E000868780EC90E0918B808B81EC90E0938B00 +:1005F000828B82EC90E0958B848B86EC90E0978BDD +:10060000868B118E128E138E148E1092B901109259 +:10061000B8010895CF93DF93CDB7DEB7789484B552 +:10062000826084BD84B5816084BD85B5826085BDEE +:1006300085B5816085BD80916E00816080936E007C +:10064000109281008091810082608093810080916E +:10065000810081608093810080918000816080931F +:1006600080008091B10084608093B1008091B000DF +:1006700081608093B00080917A00846080937A00DA +:1006800080917A00826080937A0080917A00816004 +:1006900080937A0080917A00806880937A0010922B +:1006A000C1000DB71EB780E094E09093B90180932C +:1006B000B8018DB79EB794500FB6F8949EBF0FBE89 +:1006C0008DBFEDB7FEB731966F01EDE9F0E04491D3 +:1006D000E9E8F0E08491882399F090E0880F991F71 +:1006E000FC01E859FF4FA591B491FC01EE58FF4F72 +:1006F000859194918FB7F894EC91E42BEC938FBF94 +:10070000E0912B01F0912C0182E08083E0912701A0 +:10071000F09128011082E0912901F0912A0180E1F5 +:10072000808310923301E0912F01F091300186E037 +:100730008083E0912D01F0912E0180818061808382 +:10074000E0912D01F0912E01808188608083E091FD +:100750002D01F0912E01808180688083E0912D0130 +:10076000F0912E0180818F7D8083C6019C5FF60110 +:100770002FEF21938E179F07E1F78091B801909199 +:10078000B90181159440A8F0F12CE12CF601B1904B +:100790006F01C7010E94F403B81621F06B2DC70149 +:1007A0000E94FC03FFEFEF1AFF0AE11424E0F206B7 +:1007B00069F70FB6F8941EBF0FBE0DBF00E010E042 +:1007C00081E00E9487000E94F40080E00E94870080 +:1007D0000E94F4000115110599F30E9494018823E9 +:1007E00079F30E940000ECCFF999FECF92BD81BD54 +:1007F000F89A992780B50895262FF999FECF1FBA48 +:1008000092BD81BD20BD0FB6F894FA9AF99A0FBE39 +:1008100001960895EE0FFF1F0590F491E02D0994C5 +:04082000F894FFCF7A +:1008240000000000CA012A0157011702880166016D +:020834007A0147 +:00000001FF diff --git a/_Boards/Atmel/Board_ProMicro/arduino_micro.board.json b/_Boards/Atmel/Board_ProMicro/arduino_micro.board.json new file mode 100644 index 00000000..c856d786 --- /dev/null +++ b/_Boards/Atmel/Board_ProMicro/arduino_micro.board.json @@ -0,0 +1,162 @@ +{ + "$schema": "./mfboard.schema.json", + "AvrDudeSettings": { + "Attempts": 1, + "BaudRates": [ "57600" ], + "Device": "atmega32u4", + "Programmer": "avr109", + "Timeout": 15000 + }, + "Connection": { + "ConnectionDelay": 1250, + "DelayAfterFirmwareUpdate": 1250, + "DtrEnable": true, + "EEPROMSize": 440, + "ExtraConnectionRetry": false, + "ForceResetOnFirmwareUpdate": true, + "MessageSize": 64 + }, + "HardwareIds": [ + "^VID_1B4F&PID_9206", + "^VID_2341&PID_8036", + "^VID_2341&PID_8037" + ], + "Info": { + "CanInstallFirmware": true, + "CanResetBoard": true, + "FirmwareBaseName": "mobiflight_micro", + "FirmwareExtension": "hex", + "FriendlyName": "Arduino Pro Micro", + "LatestFirmwareVersion": "2.5.1", + "MobiFlightType": "MobiFlight Micro", + "ResetFirmwareFile": "reset.arduino_promicro_1_0_2.hex" + }, + "ModuleLimits": { + "MaxAnalogInputs": 9, + "MaxButtons": 18, + "MaxEncoders": 9, + "MaxInputShifters": 6, + "MaxLcdI2C": 2, + "MaxLedSegments": 6, + "MaxOutputs": 18, + "MaxServos": 8, + "MaxShifters": 6, + "MaxSteppers": 4, + "MaxInputMultiplexer": 6, + "MaxCustomDevices": 0 + }, + "Pins": [ + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 0 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 1 + }, + { + "isAnalog": false, + "isI2C": true, + "isPWM": false, + "Pin": 2 + }, + { + "isAnalog": false, + "isI2C": true, + "isPWM": true, + "Pin": 3 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 4 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 5 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": true, + "Pin": 6 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 7 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 8 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": true, + "Pin": 9 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": true, + "Pin": 10 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 14 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 15 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 16 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 18, + "Name": "A0" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 19, + "Name": "A1" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 20, + "Name": "A2" + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Pin": 21, + "Name": "A3" + } + ] +} \ No newline at end of file diff --git a/_Boards/Atmel/Board_ProMicro/reset.arduino_promicro_1_0_2.hex b/_Boards/Atmel/Board_ProMicro/reset.arduino_promicro_1_0_2.hex new file mode 100644 index 00000000..635a616a --- /dev/null +++ b/_Boards/Atmel/Board_ProMicro/reset.arduino_promicro_1_0_2.hex @@ -0,0 +1,262 @@ +:100000000C94CD000C94F5000C94F5000C94F500C4 +:100010000C94F5000C94F5000C94F5000C94F5008C +:100020000C94F5000C94F5000C941E040C948D04B3 +:100030000C94F5000C94F5000C94F5000C94F5006C +:100040000C94F5000C94F5000C94F5000C94F5005C +:100050000C94F5000C94F5000C94F5000C94D4036A +:100060000C94F5000C94F5000C94F5000C94F5003C +:100070000C94F5000C94F5000C94F5000C94F5002C +:100080000C94F5000C94F5000C94F5000C94F5001C +:100090000C94F5000C94F5000C94F5000C94F5000C +:1000A0000C94F5000C94F5000C94F500080B00027C +:1000B0000202000009040000010202000005240001 +:1000C0001001052401010104240206052406000193 +:1000D0000705810310004009040100020A00000026 +:1000E00007050202400000070583024000000403E8 +:1000F000090412010002EF02014041233780000190 +:100100000102030141726475696E6F204C4C43001B +:1001100041726475696E6F204D6963726F000000F3 +:100120000000240027002A002D00300000000000FD +:10013000250028002B002E003100040404040403D1 +:100140000405020202020403020202020606060677 +:10015000060604040202020404040802011040809E +:10016000401020408040800802040180402010029E +:1001700001108010204040200000000200090F0004 +:1001800000030401000C000000000000000000005B +:100190000000000000000000BF0611241FBECFEFCA +:1001A000DAE0DEBFCDBF11E0A0E0B1E0E4E1F0E1D4 +:1001B00002C005900D92A632B107D9F721E0A6E260 +:1001C000B1E001C01D92A739B207E1F710E0CDEC14 +:1001D000D0E004C02197FE010E940208CC3CD10768 +:1001E000C9F70E94D8060C9408080C940000E5E8B2 +:1001F000F1E02491E6E6F1E03491E7E4F1E0949156 +:10020000992309F430C02223E9F021502F30D0F493 +:10021000E22FF0E0E25FFE4F0C9402083C01400147 +:100220001D0134013801220122012201430149014B +:100230004D015101570122015B01209180002F7770 +:1002400020938000E92FF0E0EE0FFF1FE45DFE4FEA +:10025000A591B4919FB7F894EC91811132C030957B +:100260003E233C939FBF0895209180002F7DE8CFCF +:1002700020918000277FE4CF24B52F7724BDE2CFE3 +:1002800024B52F7DFBCF209190002F7720939000F5 +:10029000D9CF209190002F7DF9CF20919000277F1A +:1002A000F5CF2091C0002F772093C000CBCF2091B5 +:1002B000C0002F7DF9CF2091C200277F2093C2007C +:1002C000C1CF3E2BCECFFC0180914401882311F198 +:1002D0003FB7F89482E08093E9002091F200822FEA +:1002E00090E01816190614F481E090E0882339F0A4 +:1002F000289A44E6409343014091F1004083222331 +:1003000039F02091F200211103C02BE62093E80080 +:100310003FBF08958FEF9FEF08952FB7F89483E0C4 +:100320008093E9009091E800892F807295FF04C0C6 +:100330009091F20080E4891B2FBF089580913B01CA +:1003400081110DC082E08093370184E080933801F1 +:1003500010923A011092390181E080933B0187E3CA +:1003600091E008953FB7F894809133019091340162 +:10037000A0913501B091360126B5A89B05C02F3F4D +:1003800019F00196A11DB11D3FBFBA2FA92F982FBB +:100390008827BC01CD01620F711D811D911D42E0B6 +:1003A000660F771F881F991F4A95D1F708958F927E +:1003B0009F92AF92BF92CF92DF92EF92FF924B014A +:1003C0005C010E94B2016B017C010E94B2016C19B8 +:1003D0007D098E099F09683E734081059105A8F348 +:1003E00021E0821A9108A108B10888EEC80E83E0C6 +:1003F000D81EE11CF11C81149104A104B10429F759 +:10040000FF90EF90DF90CF90BF90AF909F908F9034 +:1004100008954091280150912901209126013091A1 +:10042000270142175307B4F49091E8009570E1F367 +:100430009091E80092FD19C08093F100809128010D +:100440009091290101968F739927892B19F48EEFCA +:100450008093E80080912801909129010196909362 +:1004600029018093280181E0089580E00895EF92AA +:10047000FF920F931F93CF93DF93F82E192FE62E41 +:10048000042F81E0860F880F0E94090283E00E94FA +:100490000902CF2DD12FEC0EFD2EF11CCE15DF055C +:1004A000B9F007FF13C0FE0184910E940902182FC2 +:1004B00080E00E940902812321968111EFCFDF9114 +:1004C000CF911F910F91FF90EF9008958881EDCF0C +:1004D00081E0F5CFDF92EF92FF920F931F93CF93BE +:1004E000DF93D82E8A01EB017B01E40EF51ECE15B9 +:1004F000DF0559F0D7FE12C0FE0184910E94090267 +:1005000021968111F4CF0FEF1FEFC801DF91CF913A +:100510001F910F91FF90EF90DF9008958881EECFAB +:100520000F931F93CF93DF931F92CDB7DEB782E077 +:10053000898342E450E06CEA70E080E80E946A023D +:100540000E949E01DC0112960D911C91011511056E +:1005500089F0D801ED91FC910280F381E02DBE017C +:100560006F5F7F4FC801099597FD04C0F8010085B2 +:100570001185ECCF89810F90DF91CF911F910F9161 +:100580000895615030F02091F100FC012083019624 +:10059000F8CF289A84E68093430108958F929F9222 +:1005A000AF92BF92CF92DF92EF92FF920F931F9381 +:1005B000CF93DF936C017B018A0180910B0188232B +:1005C00009F45CC080914401882309F457C08091EC +:1005D0002C0180FF05C08091E00082608093E000E4 +:1005E000E801B12C8AEFA82E93E0892E2AE3922EFF +:1005F000209711F4BB20D9F10E948D0181110AC00E +:10060000AA94AA20D9F161E070E080E090E00E9415 +:10061000D701EECF8C171D0611F00CF08C2F9FB771 +:10062000F8948092E9002091E80025FD02C09FBF68 +:10063000DFCF282F30E0C21BD30BF701815020F011 +:1006400041914093F100FACFE20EF31EBB2021F05E +:100650009092E800B12CEBCF8091E80085FDE7CFC8 +:100660009092E800BB24B394209709F3F3CF5D9AEE +:1006700084E680932B01101611063CF081E090E097 +:10068000F6019383828310E000E0C801DF91CF91EF +:100690001F910F91FF90EF90DF90CF90BF90AF90A0 +:1006A0009F908F900895CF93DF931F92CDB7DEB7C1 +:1006B0006983DC01ED91FC910280F381E02D41E042 +:1006C00050E0BE016F5F7F4F09950F90DF91CF9192 +:1006D000089583E08093E9008091F200882319F067 +:1006E0008AE38093E80008950E948D0190E00895C8 +:1006F000CF93DF931F92CDB7DEB7FC01848595853C +:1007000097FD08C02FEF3FEF358724870F90DF91CB +:10071000CF910895CE0101960E946301019719F4CB +:10072000898190E0F3CF8FEF9FEFF0CF0F931F936E +:10073000CF93DF931F92CDB7DEB78C01FC01848588 +:10074000958597FF0BC0CE0101960E94630101972A +:1007500071F4898190E0F80195878487F801848598 +:1007600095850F90DF91CF911F910F9108958FEF95 +:100770009FEFF1CFFC018485958597FD0BC09FB756 +:10078000F89482E08093E9008091F2009FBF90E0AE +:10079000019608959FB7F89482E08093E9008091D4 +:1007A000F2009FBF90E008951F920F920FB60F9234 +:1007B00011242F933F938F939F93AF93BF93809177 +:1007C0002F0190913001A0913101B091320130910F +:1007D0002E0123E0230F2D3758F50196A11DB11DE1 +:1007E00020932E0180932F0190933001A09331012B +:1007F000B09332018091330190913401A091350181 +:10080000B09136010196A11DB11D809333019093E3 +:100810003401A0933501B0933601BF91AF919F9100 +:100820008F913F912F910F900FBE0F901F901895B1 +:1008300026E8230F0296A11DB11DD2CF1F920F9261 +:100840000FB60F9211248F939F938091E1009091A6 +:10085000E100937F9093E10083FF0FC01092E900C5 +:1008600091E09093EB001092EC0092E39093ED00F6 +:100870001092440198E09093F00082FF22C093E030 +:100880009093E9009091F200992319F09AE39093E4 +:10089000E80090912B01992341F090912B01915008 +:1008A00090932B01911101C05D9890914301992380 +:1008B00041F090914301915090934301911101C0F7 +:1008C000289884FF18C08091E2008E7E816080931A +:1008D000E2008091E1008F7E8093E10080912C0105 +:1008E0008E7E806180932C019F918F910F900FBE1F +:1008F0000F901F90189580FFF7CF8091E2008E7EB9 +:1009000080618093E2008091E1008E7E8093E1001F +:1009100080912C018E7E8160E5CF1F920F920FB6E1 +:100920000F921124CF92DF92EF92FF920F931F93B9 +:100930002F933F934F935F936F937F938F939F93E7 +:10094000AF93BF93EF93FF93CF93DF93CDB7DEB712 +:100950006C97DEBFCDBF1092E9008091E80083FF65 +:1009600025C068E0CE0145960E94C10282EF8093C7 +:10097000E8008D8987FF39C09091E80090FFFCCF97 +:10098000982F907609F034C19E894F89588D2F8910 +:10099000F88C911131C0803861F580912D018093E0 +:1009A000F1001092F1008EEF8093E8006C960FB684 +:1009B000F894DEBF0FBECDBFDF91CF91FF91EF91D5 +:1009C000BF91AF919F918F917F916F915F914F9167 +:1009D0003F912F911F910F91FF90EF90DF90CF905B +:1009E0000F900FBE0F901F9018959EEF9093E80008 +:1009F000C7CF1092F100D5CF913059F48111D3CFE8 +:100A00004130510581F680912D018D7F80932D011C +:100A1000CACF933049F48111C6CF4130510519F640 +:100A200080912D018260F2CF953041F48091E800F1 +:100A300080FFFCCF20682093E300B5CF963009F00B +:100A4000A9C00B8D1C8D22E01092E90010922901A3 +:100A500010922801F2122EC0109227011092260146 +:100A60000E9490021F8299E09983FA8291E09E830E +:100A700090EA98879AEF998720912801309129016F +:100A8000275F3F4F3C832B838D831092E9001092A8 +:100A9000290110922801109327010093260149E0B3 +:100AA00050E0BE016F5F7F4F80E00E946A020E94AB +:100AB000900279CF10932701009326010E949E0196 +:100AC000DC0112960D911C910115110509F451C11B +:100AD000D801ED91FC910480F581E02DBE016B5EA3 +:100AE0007F4FC8010995009709F03EC1F8010085C4 +:100AF0001185EACFF3E0FF120EC08F89882309F435 +:100B000040C0823061F440E86DE080E191E00E94F5 +:100B10003702811148CF81E28093EB0047CF8130CB +:100B200029F440E86BE084E091E0F1CF833099F75D +:100B30000E949E01DC011296ED90FC908E010F5FE9 +:100B40001F4F6801E114F10479F0D701ED91FC9198 +:100B50000680F781E02DB801C7010995080F111D26 +:100B6000F701E084F184EECFD8011C92F6010190E8 +:100B70000020E9F73197BF016C197D0940E0C601FB +:100B8000C6CF6EEE70E0FB01449150E080E80E9419 +:100B90006A0209CF973009F4BECF983021F481E082 +:100BA0008093F10000CF993009F0FDCE837009F0F9 +:100BB000B2CFEDE0F1E081E031E096E32191222334 +:100BC00071F08093E9003093EB00DF0111972C91D5 +:100BD0002093EC009093ED008F5F873079F78EE7DC +:100BE0008093EA001092EA008F8980934401DBCE63 +:100BF0008B8D9C8D1092E900109229011092280192 +:100C00009093270180932601898D811192C08E894E +:100C10009D89913A49F4813209F07DCF47E050E057 +:100C200064E071E080E0B3CF913209F074CF833299 +:100C300069F48F89988DB0E0A0E0809300019093D3 +:100C40000101A0930201B0930301ADCE803269F49B +:100C50008091E80082FFFCCF67E084E091E00E9491 +:100C6000C1028BEF8093E8009ECE823209F09BCECA +:100C70008F8980930B01EEEFFFE7859194918B3F75 +:100C80009C4D51F1E0E0F8E0809104019091050164 +:100C9000A0910601B0910701803B9440A105B105E8 +:100CA000F1F480910B0180FD1AC0EE3F8AE0F80755 +:100CB00089F587E797E7918380838091600080932F +:100CC0002A0188E19BE00FB6F894A8958093600014 +:100CD0000FBE9093600067CEEEEFFAE0D5CF808133 +:100CE00091818737974709F05ECEA8958091600083 +:100CF00088618093600080912A0180936000EE3FBC +:100D00002AE0F20789F08091FE0A9091FF0A918310 +:100D1000808349CE808191818737980751F29093E3 +:100D2000FF0A8093FE0AC5CF1092FF0A1092FE0AB6 +:100D30003ACE0E949E01DC0112960D911C91011584 +:100D4000110509F4E8CED801ED91FC910190F081F4 +:100D5000E02DBE016B5E7F4FC8010995811123CE46 +:100D6000F80100851185EBCF181619060CF41BCE7F +:100D7000D2CEF1E0FF12BECE62EF70E004CFE5E428 +:100D8000F1E01382128288EE93E0A0E0B0E0848369 +:100D90009583A683B78387E191E0918380838FEF6A +:100DA0009FEF958784871092960110929501089580 +:100DB000CF93DF93CDB7DEB7789484B5826084BDDE +:100DC00084B5816084BD85B5826085BD85B581604F +:100DD00085BD80916E00816080936E0010928100CD +:100DE0008091810082608093810080918100816088 +:100DF0008093810080918000816080938000809149 +:100E00009100826080939100809191008160809335 +:100E10009100809190008160809390008091C1004A +:100E200084608093C1008091C10082608093C10082 +:100E30008091C10081608093C1008091C300816076 +:100E40008093C3008091C00082608093C000809135 +:100E5000C20081608093C20080917A008460809398 +:100E60007A0080917A00826080937A0080917A0083 +:100E7000816080937A0080917A00806880937A0004 +:100E80001092440110922D0110922C018091D700F4 +:100E900081608093D70080EA8093D80089B5806113 +:100EA00089BD89B5826089BD09B400FEFDCF61E0CE +:100EB00070E080E090E00E94D7018091D8008F7CA4 +:100EC00080618093D8008091E000807F8093E00073 +:100ED0008091E1008E7E8093E1008DE08093E200BE +:100EE000559A209A5D9828980DB71EB780E094E037 +:100EF00090939601809395018DB79EB794500FB64D +:100F0000F8949EBF0FBE8DBFEDB7FEB731966F014F +:100F1000E6E6F1E04491E7E4F1E08491882399F07A +:100F200090E0880F991FFC01E25EFE4FA591B491FD +:100F3000FC01E45DFE4F859194918FB7F894EC919C +:100F4000E42BEC938FBF8FEF9FEF90935201809330 +:100F50005101C6019C5FF6012FEF21938E179F0769 +:100F6000E1F7809195019091960181159440A8F048 +:100F7000F12CE12CF601B1906F01C7010E94EC0742 +:100F8000B81621F06B2DC7010E94F407FFEFEF1A8E +:100F9000FF0AE11424E0F20669F70FB6F8941EBFC9 +:100FA0000FBE0DBF00E010E081E00E94F70068EE88 +:100FB00073E080E090E00E94D70180E00E94F7009B +:100FC00068EE73E080E090E00E94D7010115110502 +:100FD00059F30E940000E8CFF999FECF92BD81BD80 +:100FE000F89A992780B50895262FF999FECF1FBA50 +:100FF00092BD81BD20BD0FB6F894FA9AF99A0FBE42 +:1010000001960895EE0FFF1F0590F491E02D0994CD +:04101000F894FFCF82 +:10101400FFFFFFFF00E100000000000000C180812D +:10102400000000000000005303CE0274036903BAF9 +:061034000378039603009F +:00000001FF diff --git a/_Boards/Atmel/Board_Uno/arduino_uno.board.json b/_Boards/Atmel/Board_Uno/arduino_uno.board.json new file mode 100644 index 00000000..0a4cd7e2 --- /dev/null +++ b/_Boards/Atmel/Board_Uno/arduino_uno.board.json @@ -0,0 +1,169 @@ +{ + "$schema": "./mfboard.schema.json", + "AvrDudeSettings": { + "Attempts": 1, + "Device": "atmega328p", + "BaudRates": ["115200"], + "Programmer": "arduino", + "Timeout": 15000 + }, + "Connection": { + "ConnectionDelay": 1750, + "DelayAfterFirmwareUpdate": 0, + "DtrEnable": true, + "EEPROMSize": 286, + "ExtraConnectionRetry": true, + "ForceResetOnFirmwareUpdate": false, + "MessageSize": 64 + }, + "HardwareIds": [ + "^VID_10C4&PID_EA60", + "^VID_2341&PID_0043", + "^VID_2A03&PID_0043", + "^VID_2341&PID_0243", + "^VID_2341&PID_0001", + "^VID_1A86&PID_7523", + "^VID_0403&PID_6001", + "^VID_0403\\+PID_6001\\+.+" + ], + "Info": { + "CanInstallFirmware": true, + "CanResetBoard": true, + "FriendlyName": "Arduino Uno", + "FirmwareBaseName": "mobiflight_uno", + "FirmwareExtension": "hex", + "LatestFirmwareVersion": "2.5.1", + "MobiFlightType": "MobiFlight Uno", + "ResetFirmwareFile": "reset.arduino_uno_1_0_2.hex" + }, + "ModuleLimits": { + "MaxAnalogInputs": 6, + "MaxButtons": 18, + "MaxEncoders": 9, + "MaxInputShifters": 6, + "MaxLcdI2C": 2, + "MaxLedSegments": 6, + "MaxOutputs": 18, + "MaxServos": 8, + "MaxShifters": 6, + "MaxSteppers": 4, + "MaxInputMultiplexer": 6, + "MaxCustomDevices": 0 + }, + "Pins": [ + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 2 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 3 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 4 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 5 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 6 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 7 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 8 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 9 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 10 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 11 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 12 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 13 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A0", + "Pin": 14 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A1", + "Pin": 15 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A2", + "Pin": 16 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A3", + "Pin": 17 + }, + { + "isAnalog": true, + "isI2C": true, + "isPWM": false, + "Name": "A4", + "Pin": 18 + }, + { + "isAnalog": true, + "isI2C": true, + "isPWM": false, + "Name": "A5", + "Pin": 19 + } + ] +} diff --git a/_Boards/Atmel/Board_Uno/reset.arduino_uno_1_0_2.hex b/_Boards/Atmel/Board_Uno/reset.arduino_uno_1_0_2.hex new file mode 100644 index 00000000..86408120 --- /dev/null +++ b/_Boards/Atmel/Board_Uno/reset.arduino_uno_1_0_2.hex @@ -0,0 +1,134 @@ +:100000000C945D000C9485000C9485000C94850084 +:100010000C9485000C9485000C9485000C9485004C +:100020000C9485000C9485000C9485000C9485003C +:100030000C9485000C9485000C9485000C9485002C +:100040000C9437020C9485000C94A7020C94810246 +:100050000C9485000C9485000C9485000C9485000C +:100060000C9485000C9485000000000024002700FB +:100070002A0000000000250028002B0004040404CE +:100080000404040402020202020203030303030342 +:10009000010204081020408001020408102001021F +:1000A00004081020000000080002010000030407FB +:1000B0000000000000000000D90211241FBECFEF95 +:1000C000D8E0DEBFCDBF11E0A0E0B1E0E4E2F8E0AF +:1000D00002C005900D92A231B107D9F721E0A2E14B +:1000E000B1E001C01D92AA3BB207E1F710E0CDE5F7 +:1000F000D0E004C02197FE010E940A04CC35D1074C +:10010000C9F70E940A030C9410040C940000E1EB60 +:10011000F0E02491EDE9F0E09491E9E8F0E0E49179 +:10012000EE23C9F0222339F0233001F1A8F4213065 +:1001300019F1223029F1F0E0EE0FFF1FEE58FF4FCA +:10014000A591B4912FB7F894EC91811126C09095A8 +:100150009E239C932FBF08952730A9F02830C9F023 +:10016000243049F7209180002F7D03C0209180002A +:100170002F7720938000DFCF24B52F7724BDDBCFEE +:1001800024B52F7DFBCF2091B0002F772093B000B6 +:10019000D2CF2091B0002F7DF9CF9E2BDACF3FB781 +:1001A000F8948091170190911801A0911901B091D4 +:1001B0001A0126B5A89B05C02F3F19F00196A11D75 +:1001C000B11D3FBFBA2FA92F982F8827BC01CD01A1 +:1001D000620F711D811D911D42E0660F771F881F00 +:1001E000991F4A95D1F708958F929F92AF92BF922F +:1001F000CF92DF92EF92FF920E94CF004B015C0101 +:1002000088EEC82E83E0D82EE12CF12C0E94CF007E +:10021000681979098A099B09683E7340810591052F +:10022000A8F321E0C21AD108E108F10888EE880E8F +:1002300083E0981EA11CB11CC114D104E104F10497 +:1002400029F7FF90EF90DF90CF90BF90AF909F90F5 +:100250008F900895AF92BF92CF92DF92EF92FF926C +:100260000F931F93CF93DF936C017B018B01040FDE +:10027000151FEB015E01AE18BF08C017D10759F07A +:100280006991D601ED91FC910190F081E02DC601BC +:100290000995892B79F7C501DF91CF911F910F91B6 +:1002A000FF90EF90DF90CF90BF90AF900895FC014A +:1002B000538D448D252F30E0842F90E0821B930BCB +:1002C000541710F0CF96089501970895FC01918D71 +:1002D000828D981761F0A28DAE0FBF2FB11D5D9674 +:1002E0008C91928D9F5F9F73928F90E008958FEF16 +:1002F0009FEF0895FC01918D828D981731F0828DCA +:10030000E80FF11D858D90E008958FEF9FEF089520 +:10031000FC01918D228D892F90E0805C9F4F821B84 +:1003200091098F73992708958BE191E00E948801CC +:1003300021E0892B09F420E0822F089580E090E0ED +:10034000892B29F00E94940181110C9400000895DA +:10035000FC01A48DA80FB92FB11DA35ABF4F2C913A +:10036000848D90E001968F739927848FA689B78931 +:100370002C93A089B1898C91837080648C93938D28 +:10038000848D981306C00288F389E02D80818F7DCB +:1003900080830895EF92FF920F931F93CF93DF9383 +:1003A000EC0181E0888F9B8D8C8D98131AC0E889B1 +:1003B000F989808185FF15C09FB7F894EE89FF8980 +:1003C0006083E889F98980818370806480839FBF1E +:1003D00081E090E0DF91CF911F910F91FF90EF901E +:1003E0000895F62E0B8D10E00F5F1F4F0F7311272E +:1003F000E02E8C8D8E110CC00FB607FCFACFE88969 +:10040000F989808185FFF5CFCE010E94A801F1CF47 +:10041000EB8DEC0FFD2FF11DE35AFF4FF0829FB7DC +:10042000F8940B8FEA89FB8980818062CFCFCF93CC +:10043000DF93EC01888D8823B9F0AA89BB89E8890C +:10044000F9898C9185FD03C0808186FD0DC00FB6B2 +:1004500007FCF7CF8C9185FFF2CF808185FFEDCF30 +:10046000CE010E94A801E9CFDF91CF9108951F929C +:100470000F920FB60F9211242F933F938F939F9358 +:10048000AF93BF938091130190911401A091150136 +:10049000B09116013091120123E0230F2D3758F54A +:1004A0000196A11DB11D2093120180931301909319 +:1004B0001401A0931501B09316018091170190913A +:1004C0001801A0911901B0911A010196A11DB11D49 +:1004D0008093170190931801A0931901B0931A010A +:1004E000BF91AF919F918F913F912F910F900FBE30 +:1004F0000F901F90189526E8230F0296A11DB11D9D +:10050000D2CF1F920F920FB60F9211242F933F93C9 +:100510004F935F936F937F938F939F93AF93BF930B +:10052000EF93FF938BE191E00E94A801FF91EF917F +:10053000BF91AF919F918F917F916F915F914F91FB +:100540003F912F910F900FBE0F901F9018951F9203 +:100550000F920FB60F9211242F938F939F93EF93C7 +:10056000FF93E0912B01F0912C018081E09131010A +:10057000F091320182FD1BC09081809134018F5F28 +:100580008F7320913501821741F0E0913401F0E042 +:10059000E55EFE4F958F80933401FF91EF919F911F +:1005A0008F912F910F900FBE0F901F901895808103 +:1005B000F4CFEBE1F1E01382128288EE93E0A0E049 +:1005C000B0E084839583A683B78384E091E0918330 +:1005D000808385EC90E09587848784EC90E0978712 +:1005E000868780EC90E0918B808B81EC90E0938B00 +:1005F000828B82EC90E0958B848B86EC90E0978BDD +:10060000868B118E128E138E148E1092B901109259 +:10061000B8010895CF93DF93CDB7DEB7789484B552 +:10062000826084BD84B5816084BD85B5826085BDEE +:1006300085B5816085BD80916E00816080936E007C +:10064000109281008091810082608093810080916E +:10065000810081608093810080918000816080931F +:1006600080008091B10084608093B1008091B000DF +:1006700081608093B00080917A00846080937A00DA +:1006800080917A00826080937A0080917A00816004 +:1006900080937A0080917A00806880937A0010922B +:1006A000C1000DB71EB780E094E09093B90180932C +:1006B000B8018DB79EB794500FB6F8949EBF0FBE89 +:1006C0008DBFEDB7FEB731966F01EDE9F0E04491D3 +:1006D000E9E8F0E08491882399F090E0880F991F71 +:1006E000FC01E859FF4FA591B491FC01EE58FF4F72 +:1006F000859194918FB7F894EC91E42BEC938FBF94 +:10070000E0912B01F0912C0182E08083E0912701A0 +:10071000F09128011082E0912901F0912A0180E1F5 +:10072000808310923301E0912F01F091300186E037 +:100730008083E0912D01F0912E0180818061808382 +:10074000E0912D01F0912E01808188608083E091FD +:100750002D01F0912E01808180688083E0912D0130 +:10076000F0912E0180818F7D8083C6019C5FF60110 +:100770002FEF21938E179F07E1F78091B801909199 +:10078000B90181159440A8F0F12CE12CF601B1904B +:100790006F01C7010E94F403B81621F06B2DC70149 +:1007A0000E94FC03FFEFEF1AFF0AE11424E0F206B7 +:1007B00069F70FB6F8941EBF0FBE0DBF00E010E042 +:1007C00081E00E9487000E94F40080E00E94870080 +:1007D0000E94F4000115110599F30E9494018823E9 +:1007E00079F30E940000ECCFF999FECF92BD81BD54 +:1007F000F89A992780B50895262FF999FECF1FBA48 +:1008000092BD81BD20BD0FB6F894FA9AF99A0FBE39 +:1008100001960895EE0FFF1F0590F491E02D0994C5 +:04082000F894FFCF7A +:1008240000000000CA012A0157011702880166016D +:020834007A0147 +:00000001FF diff --git a/_Boards/RaspberryPi/Pico/raspberrypi_pico.board.json b/_Boards/RaspberryPi/Pico/raspberrypi_pico.board.json new file mode 100644 index 00000000..71df962f --- /dev/null +++ b/_Boards/RaspberryPi/Pico/raspberrypi_pico.board.json @@ -0,0 +1,202 @@ +{ + "$schema": "./mfboard.schema.json", + "UsbDriveSettings": { + "VolumeLabel": "RPI-RP2", + "VerificationFileName": "INFO_UF2.TXT" + }, + "Connection": { + "ConnectionDelay": 1250, + "DelayAfterFirmwareUpdate": 1250, + "DtrEnable": true, + "EEPROMSize": 1496, + "ExtraConnectionRetry": false, + "ForceResetOnFirmwareUpdate": true, + "MessageSize": 64 + }, + "HardwareIds": ["^VID_2E8A&PID_000A"], + "Info": { + "CanInstallFirmware": true, + "CanResetBoard": true, + "FirmwareBaseName": "mobiflight_raspberrypico", + "FirmwareExtension": "uf2", + "FriendlyName": "Raspberry Pico", + "LatestFirmwareVersion": "2.5.1", + "MobiFlightType": "MobiFlight RaspiPico", + "ResetFirmwareFile": "reset.raspberry_pico_flash_nuke.uf2" + }, + "ModuleLimits": { + "MaxAnalogInputs": 3, + "MaxInputShifters": 6, + "MaxButtons": 26, + "MaxEncoders": 13, + "MaxLcdI2C": 2, + "MaxLedSegments": 6, + "MaxOutputs": 26, + "MaxServos": 8, + "MaxShifters": 6, + "MaxSteppers": 6, + "MaxInputMultiplexer": 6, + "MaxCustomDevices": 0 + }, + "Pins": [ + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 0 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 1 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 2 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 3 + }, + { + "isAnalog": false, + "isI2C": true, + "isPWM": true, + "Pin": 4 + }, + { + "isAnalog": false, + "isI2C": true, + "isPWM": true, + "Pin": 5 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 6 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 7 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 8 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 9 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 10 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 11 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 12 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 13 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 14 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": true, + "Pin": 15 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 16 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 17 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 18 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 19 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 20 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 21 + }, + { + "isAnalog": false, + "isI2C": false, + "isPWM": false, + "Pin": 22 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A0", + "Pin": 26 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A1", + "Pin": 27 + }, + { + "isAnalog": true, + "isI2C": false, + "isPWM": false, + "Name": "A2", + "Pin": 28 + } + ] +} diff --git a/_Boards/RaspberryPi/Pico/reset.raspberry_pico_flash_nuke.uf2 b/_Boards/RaspberryPi/Pico/reset.raspberry_pico_flash_nuke.uf2 new file mode 100644 index 00000000..31291e64 Binary files /dev/null and b/_Boards/RaspberryPi/Pico/reset.raspberry_pico_flash_nuke.uf2 differ diff --git a/copy_fw_files.py b/copy_fw_files.py new file mode 100644 index 00000000..dd4eaa32 --- /dev/null +++ b/copy_fw_files.py @@ -0,0 +1,69 @@ +Import("env") +import os, zipfile, shutil +from pathlib import Path + +# Get the version number from the build environment. +firmware_version = os.environ.get('VERSION', "") +if firmware_version == "": + firmware_version = "0.0.1" +firmware_version = firmware_version.lstrip("v") +firmware_version = firmware_version.strip(".") + +zip_file_name = 'Mobiflight-Connector' +build_path = './_build' +build_path_fw = build_path + '/firmware' +build_path_json = build_path + '/Boards' +distrubution_path = './_dist' +board_folder = ['./_Boards/Atmel', './_Boards/RaspberryPi'] + +def copy_fw_files (source, target, env): + fw_file_name=str(target[0]) + + if os.path.exists(build_path_fw) == False: + os.makedirs(build_path_fw) + if os.path.exists(build_path_json) == False: + os.makedirs(build_path_json) + + if fw_file_name[-3:] == "bin": + fw_file_name=fw_file_name[0:-3] + "uf2" + + # Copy build FW file + shutil.copy(fw_file_name, build_path_fw) + + # Copy reset/uf2/json files + file_extension = '.hex' + copy_files_by_extension(board_folder, build_path_fw, file_extension) + file_extension = '.uf2' + copy_files_by_extension(board_folder, build_path_fw, file_extension) + file_extension = '.json' + copy_files_by_extension(board_folder, build_path_json, file_extension) + + # Create ZIP file and add files from distrubution folder + zip_file_path = distrubution_path + '/' + zip_file_name + '_' + firmware_version + '.zip' + createZIP(build_path, zip_file_path, zip_file_name) + + +def copy_files_by_extension(source_folders, target_folder, file_extension): + for source_folder in source_folders: + for root, dirs, files in os.walk(source_folder): + for file in files: + if file.endswith(file_extension): + source_path = os.path.join(root, file) + target_path = os.path.join(target_folder, file) + shutil.copy2(source_path, target_path) + + +def createZIP(original_folder_path, zip_file_path, new_folder_name): + if os.path.exists(distrubution_path) == False: + os.mkdir(distrubution_path) + with zipfile.ZipFile(zip_file_path, 'w') as zipf: + for root, dirs, files in os.walk(original_folder_path): + for file in files: + # Create a new path in the ZIP file + new_path = os.path.join(new_folder_name, os.path.relpath(os.path.join(root, file), original_folder_path)) + # Add the file to the ZIP file + zipf.write(os.path.join(root, file), new_path) + + +env.AddPostAction("$BUILD_DIR/${PROGNAME}.hex", copy_fw_files) +env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", copy_fw_files) diff --git a/get_version.py b/get_version.py index 4a443427..1daa0c87 100644 --- a/get_version.py +++ b/get_version.py @@ -30,3 +30,4 @@ # Set the output filename to the name of the board and the version env.Replace(PROGNAME=f'{env["PIOENV"]}_{firmware_version.replace(".", "_")}') + diff --git a/platformio.ini b/platformio.ini index 15a29891..0ec96c82 100644 --- a/platformio.ini +++ b/platformio.ini @@ -53,6 +53,7 @@ build_src_filter = -<./MF_CustomDevice> extra_scripts = pre:get_version.py + copy_fw_files.py ; Build settings for the Arduino Mega [env:mobiflight_mega]