From 8f853d96769995675e9036529088661a34f55e9b Mon Sep 17 00:00:00 2001 From: Jean-Philippe Brucker Date: Tue, 11 Aug 2015 15:06:10 +0100 Subject: [PATCH 01/12] Add FOTA bootloader image This file was previously stored in the mbed SDK, but it was decided that putting it inside the nRF library would make more sense. The exact location isn't too important, since mbed SDK is looking for file names in all scanned resource files, when building a BOOT image. It was built from the current ARMmbed dfu-bootloader repository. It uses the internal LF clock source only, so it is compatible with all nRF51822 devices. In addition, it doesn't rely on a specific SoftDevice: the SoftDevice information struct is inspected at a fixed address, to find out the application entry point. As a temporary solution, we'll duplicate the file because mbed assumes we need per-SoftDevice bootloaders. In the future, this will be a single file. In order to ease development, this bootloader pretends to use DFU version 0.4, so recent DFU applications won't mandate an init packet. --- bootloader/s110_nrf51822_8.0.0_bootloader.hex | 463 ++++++++++++++++++ bootloader/s130_nrf51_1.0.0_bootloader.hex | 463 ++++++++++++++++++ 2 files changed, 926 insertions(+) create mode 100644 bootloader/s110_nrf51822_8.0.0_bootloader.hex create mode 100644 bootloader/s130_nrf51_1.0.0_bootloader.hex diff --git a/bootloader/s110_nrf51822_8.0.0_bootloader.hex b/bootloader/s110_nrf51822_8.0.0_bootloader.hex new file mode 100644 index 0000000..c9c6884 --- /dev/null +++ b/bootloader/s110_nrf51822_8.0.0_bootloader.hex @@ -0,0 +1,463 @@ +:020000040003F7 +:20C00000983C002005DD030017DD030019DD03000000000000000000000000000000000057 +:20C0200000000000000000000000000069C1030000000000000000001DDD03001FDD0300D7 +:20C0400021DD030021DD030021DD030021DD030021DD03000000000021DD030021DD0300D9 +:20C0600021DD030021DD030021DD030021DD030021DD030021DD030021DD030021DD0300B8 +:20C0800021DD030057D8030021DD030021DD03006DD8030021DD03004DF4030021DD0300DD +:20C0A00021DD030021DD03000000000000000000000000000000000000000000000000007E +:20C0C00000F002F800F040F80CA030C8083824182D18A246671EAB4654465D46AC4201D18E +:20C0E00000F032F87E460F3E0FCCB6460126334200D0FB1AA246AB463343184710370000C8 +:20C1000030370000103A02D378C878C1FAD8520701D330C830C101D504680C6070470000D3 +:20C120000023002400250026103A01D378C1FBD8520700D330C100D50B6070471FB5C04655 +:20C14000C0461FBD10B510BD03F0E3FA1146FFF7F5FF00F0D3F803F0FBFA03B4FFF7F2FF19 +:20C1600003BC03F0FFFA00000648704502D1EFF3098101E0EFF30881886902380078024A97 +:20C1800010470000FDFFFFFF39D50300401E00BF00BF00BF00BF00BF00BF00BF00BF00BF28 +:20C1A00000BF00BF00BFF1D170470000401E00BF00BF00BF00BF00BF00BF00BF00BF00BFB4 +:20C1C00000BF00BF00BFF1D170470000401E00BF00BF00BF00BF00BF00BF00BF00BF00BF94 +:20C1E00000BF00BF00BFF1D170470000056885F3088846680A4AEFF305839A42304602D183 +:20C20000084CA6463047074C064D0646064FF0B4034C034D024E024FF0B404480047000005 +:20C2200000000000FFFFFFFF00000021F9FFFFFF70B505460C46164602E00FCC0FC5103EEE +:20C24000102EFAD2082E02D303CC03C5083E042E07D301CC01C5361F03E021782970641C63 +:20C260006D1C761EF9D270BD0A4610B50146664803F064F810BD10B502F078FC10BD10B5C6 +:20C28000624C86B01ECC03946C460EC4002807D0684618DF002803D00022114603F04EF864 +:20C2A0000F20800313DF002803D00022114603F045F8574B48225749092003F0A3F80028AB +:20C2C00003D00022114603F039F800200490059001206946087404A860DF002803D0002251 +:20C2E000114603F02BF84C4803F0A8F8002803D00022114603F022F806B010BD08B547485A +:20C30000C169B12943D0002445480F2140698903884204D000221146104603F00FF8012068 +:20C320000007006901218902884204D000221146104603F003F83B4800903B4B05220321A1 +:20C34000002001F0BAFA002803D00022114602F0F5FF00F067FC00F0AAFC012500281AD09D +:20C3600000F0B4FC002803D00022114602F0E6FF20466840FFF783FF00F038F800F0CCFC74 +:20C3800000280ED00022114602F0D8FF09E001240021C161B8E720466840FFF770FF00F002 +:20C3A00025F803252D03002C04D1A86800F090FB002807D100F047FC002803D000221146D5 +:20C3C00002F0BCFFA86800F083FB002806D000F06EFC002802D1A86800F041FCBFF34F8F12 +:20C3E00013491248C860BFF34F8FFEE7094A10B548321421082002F00BFF002803D00022E2 +:20C40000114602F09BFF10BDEFBEADDE8CF703006BF30300342B002077C20300000500404D +:20C4200000100010EFDC0300F42800200400FA0500ED00E070B5FC4C1E46A06815460229A3 +:20C4400002D0042916D108E0052813D1A369002B10D03246294604200BE002280AD1F348B0 +:20C46000406880470320A060A369002B02D0324629469847280003D00022114602F05EFF98 +:20C4800070BD4CB5E84E0120307005200195009400F058FB4CBD10B5E34C2078002801D057 +:20C4A000082010BD206901F0F4FA002803D00022114602F043FF0F2100228904206901F01E +:20C4C000ABFA040003D00022114602F037FF204610BDD54910B5D448243141610221816012 +:20C4E000C168243002F059FD002803D00022114602F024FF10BDCC4910B5CB481C31416145 +:20C50000022181600320000380680F218903081A4108C5481C3002F040FD002803D000223D +:20C52000114602F00BFF10BD704700B589B01822BF4902A8FFF77CFE06980799009001917A +:20C5400002A80FC800F0FEFA09B000BD00B5B64987B049886A461181032109038968069146 +:20C56000B249012050394A6803928A680492C9680591069A0091019202A90EC900F0E2FA6E +:20C58000002007B000BD30B5A84CA748503C89B02430E16802F001FD002803D00022114679 +:20C5A00002F0CCFEA048E2681C3041680023083002F0C3FC050012D1182102A802F0E6FFEA +:20C5C00000209949029049886A469181E1680691079A0091019203A90EC900F0B3FA284601 +:20C5E00009B030BD00B5904987B049886A4611818E49032050394A6803928A680492C9683A +:20C600000591069A0091019202A90EC900F09AFA0020B6E73EB5864A6B46183207CA07C3A4 +:20C62000814D00246C7029466C802431684602F068FC002801D0AC603EBD03207A4900038F +:20C6400080682431486024390A46526ACA610F218903091A490840187349764A1C31486068 +:20C6600071480021103001F07BF9002803D00022114602F063FE0F2100228904286901F013 +:20C68000CBF9002803D00022114602F057FE01206C60A86000203EBD63498861704770B59A +:20C6A000426862481468536891685038D26804604360C26081600078440701D5840705D130 +:20C6C0009C0703D18C0701D1940701D0062070BD5B189A18544D0F239B02EA60994213D81A +:20C6E0005549564B514CC60709D08868181A90420AD3534820605348606053480FE08968F6 +:20C70000591A4908914201D20C2070BD4F4921604F496160800701D54E4800E04E48A0607B +:20C72000A868012802D00826304670BDFFF7B3FE0600FAD12168E8688847F5E770B50500F7 +:20C7400004D0287A800703D0102070BD0E2070BD354CA068032805D0042801D0052803D0CB +:20C76000082070BD0520A0606868E168860060688019884204D90020C04360600C2070BD5C +:20C78000FFF789FE0028FAD1A96832466368606902F0D3FB0028F2D1616889196160E268EB +:20C7A0009142ECD0092070BD10B51F4C08206168002900D010BDA1680429FBD11B4861786F +:20C7C000403802F021FC002802D00021617010BD0521A16010BDF8B5134C0746A068032899 +:20C7E00004D0042804D008252846F8BD0420A0606068002801D00820F8BDFFF74CFE05000E +:20C80000FAD17868860060788119402901D90920F8BD064AB968403A1018324602F057FE82 +:20C82000607880196070DFE7002800201C2D00209CF7030083C403000030000000C003006D +:20C84000D3C403002BC503004DC50300F7C4030029C50300E5C5030087C5030010B5894CF1 +:20C86000A068052813D1E168606888420FD10620A060FFF710FE002808D16069E1684068FF +:20C8800002F0FCFB002801D10721A16010BD082010BD10B57B488168072901D0082010BD63 +:20C8A000006901F0F6F8002803D00022114602F045FD75488068804710BD1CB506200195C2 +:20C8C000009400F03FF91CBDF8B51C4617460D46064600F0C1F8002817D001200003854215 +:20C8E00007D92346291B301B1A46FFF7EDFF00280BD13A462946304600F0B9F8002804D117 +:20C900003A462946304600F0A7F8F8BDF0B589B0684600F015FA049800282AD001210903F7 +:20C92000079A4018904226D9501A45081046049A0C468718024668001618001908900320DF +:20C9400000038068049988420DD261190846042200F08DF800280CD121460422084600F073 +:20C9600086F8002805D1BA1B2B4630460899FFF7ABFF09B0F0BD049A079800F078F8F8E75C +:20C9800000B58DB004A800F0DBF9099800280DD0089800280CD008990B984018019000219D +:20C9A0000998009180080290684618DF0DB000BD0320000380680F218903091A4908ECE7FB +:20C9C00000B58DB004A800F0BBF909980028EDD00F210898890300280CD0089A0B98019158 +:20C9E0008018029003220998009280080390684618DFDBE70320000380680A1A5208EEE7D2 +:20CA000030B591B0684600F09BF90498002814D001210903079A4018904214D9501A43087B +:20CA20001046049A5C0082180019611803242403A468049DAC4202D20E2011B030BD121AB5 +:20CA4000FFF742FFF9E703200CAB07C3049880080F900CA818DFF0E71FB5032301909008B3 +:20CA6000039000930291684618DF04B010BD1FB5012301909008039000930291684618DF58 +:20CA8000F3E70000002800201C2D002010B5BB480368012B02D1022900D10160100003D099 +:20CAA0000022114602F04AFC10BD10B5B34C48DF002803D00022114602F040FC02F0FCFB82 +:20CAC0002068022803D0032801D00428EFD110BD38B50068401C19D00024684600F058F96F +:20CAE00000980168012910D1818800290AD0C168032000038068002202F0CEFA0099898861 +:20CB0000814201D1012400E00024204638BD10B504469A482021001D02F0B9F9002803D00E +:20CB20000022114602F00AFC9448002320222146001D02F01BF9002803D00022114602F053 +:20CB4000FDFB10BD0FB4F8B5684600F021F96846818B069D0122894CFF238948002D13D090 +:20CB6000012D17D0032D2BD00021022D37D02A46052D46D0042D4ED0062A01D10420206071 +:20CB8000F8BC08BC04B0184781800A9983600260C16010E08180099D089949190A9D49195D +:20CBA000C160A52183600160089901610999856141610B99C16122607148FFF7A8FFDFE7B9 +:20CBC00000990B6803608B888380C968C160AA21816008990161099941610A990BE0009D60 +:20CBE0002E68A52E09D00660AE888680ED68C5600161836041618161DDE781800360C160C5 +:20CC0000F6E700F085F9002803D00022114602F095FB0320B3E781800360C1600099896807 +:20CC20008160C9E70EB557480090202001900120029002F001F8002804D150496846091D98 +:20CC400002F023F80EBD10B5FFF7E4FC002805D100F02FFB0446FFF728FF204610BD70B58A +:20CC600011DF002803D00022114602F067FB464900200B68444C012180340A4682401A4206 +:20CC800004D0C506ED0E0A46AA402260401C2028F3D303242403A06813DF002803D000226F +:20CCA000114602F04BFBA06802F0F2F970BD08B5684600F06DF800980168A52904D0806888 +:20CCC000AA2801D0002008BD012008BD10B5FFF797FE002803D1FFF773FE00281BD064209C +:20CCE00001F0F2FDFFF712FE002803D00022114602F024FBFFF784FE002803D000221146DD +:20CD000002F01CFBFFF73CFE040003D00022114602F014FB204610BD00B589B018221B49CA +:20CD200002A8FFF785FA069807990090019102A80FC8FFF707FFFFF7B8FE002009B000BDB5 +:20CD400010B50E4988B0044600232022091D684602F04FF80098206068468088A08003983A +:20CD6000E0600298A06004982061059860610698A0610798E06108B010BD00002C280020E6 +:20CD8000282D00208DCA030000E100E0C0F70300014901607047000000FC030008280CD0DC +:20CDA00004DC002807D006280FD108E00B280AD00C280AD105E001207047022070470320C9 +:20CDC000704704207047042901D0062070470520704770B515460A46032823D0042820D1FF +:20CDE000FE4C002906D0E088FD49884219D0132176DF10E0284602F0A3F9002803D00022F7 +:20CE0000114602F09BFAE069A8420AD101220321F44801F003F8002803D00022114602F051 +:20CE20008DFA70BD01211046FFF7B8FF02460121EEE7F0B5054608790E4685B081070CD07C +:20CE400003221146284600F0E9FF002803D00022114602F073FA05B0F0BDE04900901831D9 +:20CE600002F047F9010011D1DC4CB168009AA06902F02DFB009802F097F9010006D1204647 +:20CE80006946183002F09CF9010003D0284600F0AFFAE0E704200190009880080290A06902 +:20CEA000039001A8FFF74AFC07000BD0092F10D0A06902F045F9010002D0284600F098FA04 +:20CEC0003946E3E73079616940186061A069E061C1E7307961694118616160780028BAD073 +:20CEE0006089401E0004000C6081B4D1284601F0E9F8002803D00022114602F01FFA20890D +:20CF00006081A8E710B50022114602F017FA10BD10B5B24C01202070E088B149884208D01B +:20CF2000132176DF002810D00022114602F006FA0BE0A078002808D074DF002803D0002282 +:20CF4000114602F0FBF90020A07001F034FC002803D00022114602F0F1F9002010BD70B5E1 +:20CF60000D68044601209D4A2B0002F002FC0A2B3043061320575C466012FFF76FFC0421FD +:20CF8000FFF70CFF024604212EE00022114602F0D5F970BDFFF7BCFF002803D0002211468A +:20CFA00002F0CCF9FFF775FC002808D170BDFFF7AFFF002803D00022114602F0BFF9FFF76D +:20CFC0007CFC70BD106188680078107170BD02201061886800780128F8D1FFF7E5FB02213F +:20CFE000FFF7DCFE02460221204600F017FF0028CBD170BD0320106170BD12692046012ACC +:20D0000006D0022A07D0032AF6D1FFF712FF70BD00F001FA70BD00F03BFA70BD50708888D5 +:20D020001081508170BD00205070108170BD2046516901F010F8DAE710B5044669488EB0EB +:20D0400081796846817068490180342101A802F09DFA022001900021684641728472012131 +:20D0600001820590002101A801F03FFA002803D00022114602F062F90EB010BDF0B5574C10 +:20D080008BB0A07800283AD156481821183802F07DFA2046534CC078183C00250126002875 +:20D0A00037D02746483700950195029510226946F81D039502F0DEF9002822D0F81D08909D +:20D0C00009976846067509A804906846067708A806900420FFF7B0FF25700220207204A813 +:20D0E000E060282020823F486582183873DF002803D00022114602F021F9384886700BB045 +:20D10000F0BD0520FFF798FF2670676025722582E9E70620FFF790FF257065602572E0E7E2 +:20D1200070B52E4C01880022E588A6B017290AD01EDC11293FD008DC022977D0102902D123 +:20D140008088E080A27026B070BD264C303426461836132951D01429F5D1C289638D002106 +:20D160009A4200D1314600238088E21D82DF1BE0512970D00EDC18296CD01929E3D18079F5 +:20D180000028E0D1A270E068401EE0604FD0FFF775FFD8E7522976D05529D4D18079002871 +:20D1A000D1D11321284676DF0028CCD00022114602F0C4F8C7E78020694688803220E06054 +:20D1C000012301AA06A92846AADF002803D00022114602F0B3F82078002807E038280020A2 +:20D1E000FFFF0000602D00203015000001D1FFF745FF0020C043E080A5E70722C14910A839 +:20D2000002F065F91022E11D0CA802F060F91C22314612A802F05BF90CA80A9012A8099039 +:20D2200006ABB94A852128467FDFBDE70DE01822B64906A8FEF7FCFF0A980B9900900191F8 +:20D2400006A80FC8FFF77EFC7DE70021284667DFAAE700E017E0817900299AD0807A042885 +:20D2600003D0062801D0052893D1022909D0012069460872FF208330888102A92846A8DF82 +:20D2800092E70220F4E700F08DF88DE710B5044601F0C2FA9B482146303800F09AFE2046D3 +:20D2A000FFF73EFF10BD10B50022114602F046F810BD30B5944D87B00024203D2C7094483D +:20D2C0002C6102F0B3F800286AD19248FFF7E4F901F000FF002863D18A4800F059F900288C +:20D2E00001D10120E87011206946087207228AA102A87CDF002803D00022114602F01EF8B4 +:20D3000000940C2168460194018018214180FF2184809131C1807ADF002803D0002211469A +:20D3200002F00CF804206946009408807C4801907C4802907348303800F00BFE002803D046 +:20D340000022114601F0FAFF1C21684602F01EF9754801900120800302900094032168468C +:20D360000173C4810474714806900594684601F0FEF9002803D00022114601F0DFFF624910 +:20D38000E12208784008400010400C30DF22104008700720487010208870FFF76FFE0020A3 +:20D3A00007B030BD70B5584C614D203CE088A84201D1082070BDE178002914D05149012359 +:20D3C00008223431A9DF0028F4D12A460C21E088A7DF5849884204D0082802D0891C88420E +:20D3E000E8D1002070BD00231A461946A9DF70BD10B50A46044603211046FFF7CFFC0246AE +:20D400000321204600F00AFD002803D00022114601F094FF10BD30B5054687B000200090AF +:20D4200001900290039038486A46203800791070364A0C3A1068926804906846069205900E +:20D4400008790C2806D003221BE00022114601F075FFA5E78C68204600F049F80190201D5E +:20D4600000F045F802902046083000F040F8039004A8FFF714F9002892D00121FFF78EFCB9 +:20D4800002460121284600F0C9FC0028DDD187E7FEB50446087982070ED08207920F042385 +:20D4A0009B1A0022154604E08E683554401CC0B2521C9A42F8D30871012000908868029048 +:20D4C0000879800801906846FFF785F900280DD00221FFF763FC02460221204600F09EFCB8 +:20D4E000002803D00022114601F028FFFEBD10B5044602F04DF80002E178000A09060843E0 +:20D5000010BD0000902D002058280020E4F703008DD20300D3CD0300446675546172670031 +:20D520005FCF0300A7D20300CD0C000005CF0300FFFF00000230000010B50C46002802D04D +:20D540000120086010BD2168002911D01C48421A814212D03C2A0DD23C303C3101220B78B9 +:20D5600003701346491E401E521C3C2BF7D904E00E200BE03C2201F0AAFF00223C211048A9 +:20D5800001F08AFD0E49891E08800020206010BD70B5054600223C21094801F07DFD084C21 +:20D5A000A41E2188884201D00B2070BD3C220449284601F08CFF2088401C2080002070BD87 +:20D5C000823F00208307FF22DB0E9A408907090E994000280BDA0007000F08388308FA484C +:20D5E0009B001B18D86990430843D86170478308F6489B001B1818689043084318607047AA +:20D6000070B50124F24960040860F24940108860F04940398860F04D6C602F20FEF7B6FDAC +:20D62000AC60EE4D00242F206C61FEF7AFFD2C7170BDF0B5E94F2821BC6841430D19396962 +:20D640004A1C09D028224A431619AB68B268934204D8D21AB26069623861F0BD0A4602E066 +:20D660000A46796A9B1B4E1C0BD028264E433719BE689E42F4D328264E433619B768FF1A1A +:20D68000B760AB60696228214A4311194862F0BD70B5D24C2269A5681346114606E0814212 +:20D6A00007D00A46282671434919496A4E1CF6D170BD002EFCD08A420CD1282043435819EC +:20D6C000406A2061401C05D1C34B01209860002363616071282041434819282381685A4310 +:20D6E000406A52195062421CE2D028225043401982685118816070BDF8B5B84C2569681CF9 +:20D7000035D0B748002640686169401A07023F0A19E028204543A0682A189068B84214D8D0 +:20D72000A3693F1A8619556A002B09D0116AD0699847002807D00022114601F0FFFD02E048 +:20D74000D169106A8847681CE3D1A178E078814206D1401CC0B2E070022801D10020E07079 +:20D760009E490006800D1C310E5000F0BAF9F8BDF8B50446994800270169009146785CE038 +:20D780009648F100C2688D1851E0601C07D0934A28209268604321468018446A24E0287854 +:20D7A000182141436A68401CC0B252182870A978884200D12F70894B516828209B6848434C +:20D7C000C0181368012B34D1037E002B31D19368C360D368036113694361526902627F4A52 +:20D7E0005279002A00D0C7607C4BC2685B6996469C46D31A1A027B4B120A9A4202D20369C3 +:20D80000D21808E0724663469A1A12020369120A934202D99A1A826000E08760C76001222E +:20D8200007610276921E42620846FFF702FF601CABD1287869788842A7D13046761EF6B202 +:20D8400000289DD1654801690098814201D00120F8BD0020F8BD644900200860486088607F +:20D86000C860614940390860486045E7FEB50020C0435A4D02906869019068462E6900F07B +:20D8800035F9074600F04FF90446002F08D002AA0199009800F08FF90298FFF769FF06E050 +:20D8A0000298FFF765FF002801D1002C02D0304600F0AAF900206871FEBDFFB59807002448 +:20D8C00081B01E4615460F4600280BD1002E09D0FFF796FE41490A9888610F703246002042 +:20D8E0008E6008E0072005B0F0BD28234343D4509B181C76401CB842F7DB28204743BB19C1 +:20D90000032048700F461846CB6019461830002218232E465E43D3005B181C705C709D708A +:20D9200058603018521C032AF5DB0020C0433861BC70FC7001242D482405046003211420A9 +:20D94000FFF740FE224880380460254C0198A06003211120FFF736FE606878610020C2E71A +:20D9600070B51E4CA568002D06D0002A06D0002804D00023247809E0082070BD072070BDBB +:20D9800028265E43AE59002E04D05B1CA342F7DB042070BD282401265C432E516419E261BF +:20D9A00061600360002070BD07494868C005C00D2CD010381CD50207120F083A9208920097 +:20D9C0005118C96919E0000000ED00E000E400E080E100E040130140001001406028002054 +:20D9E00000150140FFFF7F004011014080E200E08108B14A8900891809688007C00EC1400B +:20DA00000806800F012803D0032803D0022070470020704701207047FEB50446A74817469E +:20DA200082680D46002A0CD001788C4201D2052D01D20720FEBD2146282359435358012B7D +:20DA400001D00820FEBD8818406801281DD00026FFF7AAFFC00099490190C9684018694684 +:20DA600000F018F9002812D0012144600160944949680830E2C091490198C9684118009877 +:20DA8000487000F02EF80020FEBD2E46E0E70420FEBDF8B5894D0446A868002809D0297844 +:20DAA0008C4201D30720F8BD282161434058012801D00820F8BDFFF777FFC600E86869465B +:20DAC000301800F0E7F8002809D0022112C0E86831180098487000F004F80020F8BD04206B +:20DAE000F8BD0120774900050860704710B5734900238A78CC78A24212D0521CD2B28A70D0 +:20DB0000022A00D18B708A786C4B92001C339A580260486910180002000A4861012010BDA3 +:20DB20000360002010BDF8B5644801690091457833E06248E900C0680E1834782AE01820A2 +:20DB400060437168641C0818B178E4B2A14200D100240168022902D003291BD113E0574A00 +:20DB600040682821926841438F18397E002911D0FFF78EFD002038760CE028277843C018B1 +:20DB80000276406A03E04D4900228B680869471CF3D108617078A042D1D128466D1EEDB2D0 +:20DBA0000028C6D1454801690098814201D00120F8BD0020F8BDF7B5404C0025A7682369E0 +:20DBC0001EE028215943C9198E68864202D9301A886017E0801B751900268E600E764E6946 +:20DBE0009C464B6AB646002E0AD0019E76193602360ACE6076460E6116684E626146116045 +:20DC0000591CDED12361FEBDF8B52C4801694A1C3DD028225143826889188E6828494C681F +:20DC200047690079E11B0D022D0AED1C002815D10120254A00045060234A403A506021491D +:20DC4000400080310860214908602149012008602F20FEF79BFA194901200871B54200D208 +:20DC60003546E81900021649000A4031086014494968001B091B0902090A0002C91C000A88 +:20DC8000814203D901200F4940040860F8BDFFF7B7FCF8BD42788378521C934200D10022C2 +:20DCA0000378934201D1002070470A6041684078182250430818704700E400E06028002090 +:20DCC0000015014000E200E04013014000E100E00010014010B50446082904D000221146F9 +:20DCE000104601F02BFB21686068884710BD1CB501910090024A0821684601F09DFA1CBD53 +:20DD0000D5DC03000A48026803210A4302600948804709480047FEE7FEE7FEE7FEE7FEE797 +:20DD2000FEE7000005480649064A074B70470000240500404DDD0300C1C003009830002007 +:20DD4000983C00209834002098340020F8B500F035F82B4E002804D02A4870602A49F01300 +:20DD600088612A480124018CC9B201290DD1818C09070AD1018D0906090F042905D1808D56 +:20DD80000006000F01D1224884600027B461214D6F60A8058460686800280ED1C820FEF790 +:20DDA00005FA1D487F1C8742F5D30020B06101208007846068680028FCD0F8BD1348018CB5 +:20DDC000C9B2012917D1818C090714D1018D09060A0F03D1828D1206120F0ED0090F0129C2 +:20DDE00003D1828D1206120F07D0032903D1808D0006000F01D0002070470120704700008E +:20DE000000050040DFFF07C0006C0040C00F00F000060040000100408813000030B585B071 +:20DE2000002822D00388FE4CA34220D0FD4B1B78002B1CD0FB4B10255B1C1D7059700024C0 +:20DE400001259A70032269460A820094019402940394028A0A808D708C8004A902910393E7 +:20DE600000886946A6DF05B030BD0E20FBE70820F9E7F0B58BB0044602276846077300268B +:20DE800009968784C68408A80A900D46A18A208809AAA5DF002804D0E16A00291AD08847BE +:20DEA00018E06846008CC007C00F13D068460682208803A9A8DF002813D1A97E28461B30BA +:20DEC00001220B0001F055FC09430F1B202224263E284300FF20FE3069460882208803A94D +:20DEE000A8DF0BB0F0BD00960AE0062219E069460A71029022E0204690470020F1E700920D +:20DF00002B8B022BF3D2F0E700971DE003201AE0042018E0052016E0298B032905D20322BE +:20DF200008212046FFF77AFFDBE741780278080210436946888003D006200090A26ADAE784 +:20DF40000720FAE7092000906946A26AD3E70322E7E730B585B00D46040038D0002D36D0EC +:20DF60006868002833D00020C043AF4B20800FCB049301AB07C3AD4869460880891C01A888 +:20DF800063DF002822D1221D69460120A0DF00281CD168468078A071204600F0CEF8002886 +:20DFA00014D1204600F055F900280FD12946204600F002F9002809D16868A062A868002804 +:20DFC00000D0E06297490120087000204BE70E2049E73EB5002828D0002926D0826A002ABE +:20DFE00023D00A88102A21D0112A30D0502A1FD0512A1AD104460846891D0A78022A14D196 +:20E000004A88238A9A4210D1807A04280DD006280BD0052809D0891C2046FFF72AFF002860 +:20E0200003D0E16A002900D088473EBD898810E0CA8803899A42F8D1082200928A7F6B4605 +:20E040001A7120310291826A694690473EBD0021C94301803EBDF0B585B00A4605002DD00F +:20E0600028886F4988422BD06E480078002827D06C4C1020641C2070072060700127A770F8 +:20E080000321684601820026E11C104600F04CF801466846008A0918684601820096019680 +:20E0A00002960396298A01808770868004A80394029028886946A6DF05B0F0BD0E20FBE7D3 +:20E0C0000820F9E7F0B585B00A46050028D028885349884226D053480078002822D0514C3B +:20E0E0001120641C20700127684607820026611C104600F019F801466846008A0918684638 +:20E1000001820096019602960396298A01808770868004A80394029028886946A6DFCBE782 +:20E120000E20C9E70820C7E70870020A4A70020C8A70000EC8700420704730B58FB0054655 +:20E140001C21684601F022FA694608780421084369460870002401940394049405940694E6 +:20E16000A87908A9887031486946801C0884601C00070794000F0C77103048778A7FF920B4 +:20E180000240921CE7200240012002438A77142109A801F0FBF908A8099007A80A906946D3 +:20E1A0008C851420CC8508860D942B46A888083309AAA2DF0FB030BDF0B58FB00F4605465A +:20E1C0001C21684601F0E2F968460178022631430170002401940394049405940694A97917 +:20E1E00008A8817011496846091D0184601C0107090F103168460794017700200146684618 +:20E200004177817FF9200140891CE72001400120014368468177142109A801F0B7F907E086 +:20E22000FFFF000088280020FCF703003015000008A8099007A80A9068468685C4850686B5 +:20E240000D972B46A888203309AA6946A2DF0FB0F0BD30B58FB005461C21684601F096F9FD +:20E2600069460878082108431022104369460870002401940394049405940694A87908A962 +:20E280008870144869460884601C00070794000F0C7710304877887FF9210840801CF72123 +:20E2A000084010430121084369468877142109A801F06CF908A8099007A80A9069468C851A +:20E2C0001720CC8508860D942B46A888103309AAA2DF6FE731150000FFB583B0074600207F +:20E2E0000C9C8646267805463AE07868A90041180A88684682804988C1800022694601A8F7 +:20E3000065DF002810D1684601780598814226D17046002801D0002200E002222078891824 +:20E3200041181F2902D90C2007B0F0BD7146002908D1401CC0B2411C069B049A21701A54AF +:20E3400001208646217806980A18694601A865DF0028E9D1694620780978401820706D1CC0 +:20E360003888A842C1DC7046002804D020780699801B401E88550020D6E7F8B51546069C10 +:20E380001E46074602220094FFF7A6FF002806D133461022294638460094FFF79DFFF8BD07 +:20E3A000F7B582B000260546167000681446002805D02846039900F0CAF8060008D168794D +:20E3C00000281ED02078039F001D1F2802D90C2005B0F0BD684679DF0028F9D1217803226A +:20E3E000481C20707A5421781922481C20707A542078C1196846008800F0A4F821784018A0 +:20E400002070A8790223002810D02078039A411C2170135420780399471C012227700A54E5 +:20E420002078AA79471C039927700A54A868002815D00021415620788C460246C01C03992E +:20E440001F28C4D8501C20708B5422780A23501C20708B5420786246431C23700A54A8899B +:20E46000002809D028460094062202210C30039BFFF783FF0600ABD1A88A002809D02846D9 +:20E480000094072203211430039BFFF776FF06009ED1A88B002809D0284600941522142137 +:20E4A0001C30039BFFF769FF060091D1686A002805D02246039900F07FF8060088D1A86A01 +:20E4C000002805D02246039900F0B5F8060084D13020405D002806D022462846039900F0F6 +:20E4E000DCF80600C7D1304672E770B50C4692B000216A46117007251171002809D0817927 +:20E5000049070CD502A9FFF74BFF002808D102AE00E00026002C0ED0A079002802D028469D +:20E5200012B070BD01AA0AA92046FFF739FF0028F6D10AAA00E0002268460379017830463C +:20E5400072DFEDE70870000A487002207047F8B514780746A01C15460E461F2803D83879BF +:20E56000801C1F2801D90C20F8BD1D20001B80B26946864608803019801C7DDF0028F3D143 +:20E580003868022805D168460088704501D8092107E038790821002801D0704501D96846F6 +:20E5A0000088421C3255641CE2B2B1542978801C081828700020F8BDF8B50D461178064636 +:20E5C000881D14461F2801D90C20F8BD33880720062BFAD31927FF01BB4202D94D4A9342D6 +:20E5E000F3D17288062AF0D3BA4202D9494FBA42EBD1484FBB4203D0BA4201D09342E4D87E +:20E60000481C052220706A5420781222411C21702A54207841193088FFF794FF21784018C5 +:20E62000C0B2207041197088FFF78CFF2178401820700020F8BD70B5054600790E46801CD6 +:20E640001446C0B21178821C8A181F2A01D90C2070BD0A46491C401C2170B0542078FF224A +:20E66000411C21703254207881192888FFF76AFF21784018C0B22070AA88002A09D0A968AC +:20E68000002908D0801900F022FF2078297940182070002070BD072070BDF7B582B0029894 +:20E6A0001446C06A0F46002832D0029800252030009028E00298C16A0C2068430E18217855 +:20E6C00030794A1CC01C2270785421781622481C20707A542078C1193088FFF733FF217873 +:20E6E0004018C0B22070B288002A09D0B16800290ED0C01900F0EBFE207831794018207087 +:20E700006D1C0098EDB2007CA842D3D800205FE607205DE6FFFF000038B56749674A48883D +:20E7200090420FD04A78664C521CD2B24A70237B934208D3083175DF002803D0A1690029FF +:20E7400000D0884738BD00254D70217C002907D03B2176DF002803D0A169002900D0884728 +:20E7600061690029EED068460095884738BD70B5054601461C225248FDF75AFD4E4C002647 +:20E7800026702968002907D00822A01800F09FFE204608307ADF02E0474808307BDF0028C1 +:20E7A00008D1401E608044486670464A0021001DFFF7D6F870BD10B53F484068FFF769F9D5 +:20E7C00010BDF8B53C48103000F069F800263A4D3B4C002806D06169002919D001200090EB +:20E7E000684614E02878002804D0616900290FD00096F5E7687800280CD0A16800226868B8 +:20E80000FFF70AF9002803D0A169002900D088472E70F8BD6168F1E7F8B5294C028800276B +:20E82000254DE689102A18D029464968112A21D0122A2DD0502A0FD1801D0288B2420BD1FF +:20E84000028B022A08D1C27E837E10021843C007C00F13D0FFF7B5FFF8BD81886980014667 +:20E86000154808221631103000F031FE6F70002EF0D0F8BD0020C04368806F700846FFF7BB +:20E8800008F90028F5D0A1690029F2D08847F8BD811D09480822103000F019FEDAE7418827 +:20E8A000054808300288914204D34088814201D8012070470020704790280020FFFF0000B6 +:20E8C000CC2D002019E7030031B5054C04E0401E00902046FDF77AFC00980028F7D138BDC6 +:20E8E000E703000018225043FE4A00218018017181604161012281610261C1607047FFB577 +:20E9000081B0F94C049B039A054626691A4303200092002E03D1002A0ED001222261276919 +:20E92000039A0126360792003B0000F022FF072707162940526127000222EFE770693269FC +:20E9400092B25043326933691204920C9BB2594329DF002812D102210FE0084628DF00286A +:20E960000CD10399002901D0032106E00499002916D12978042946D017E0216105B0F0BDAE +:20E980007069326992B25043326993B24B4301461846039A29DF0028F0D10499002901D0F4 +:20E9A0000421EAE72978042920D00521E5E773693069366980B2434368681B189B18B6B2C7 +:20E9C0004E43301880181946049A29DF0028E9D0D4E7306980B24843696880188A08696902 +:20E9E00029DF0028CAD1009900290CD00621C4E77069316989B24843316989B200F0D9FD08 +:20EA000028DF0028BAD10721B7E7F8B5B54918230A780F205A435418241DB3492278266970 +:20EA2000CF68022A1BD001252D07042A2AD0052A5BD1286981B2304600F0BBFD0146A36877 +:20EA400028699A1980B24843101A820860681818861928694B1C80B25843801B34E0B8023C +:20EA600062686169121A0918A3683018181801239B029A4202D2920829DF31E0FF220132BA +:20EA800029DF2DE0E268974914205043F4314018001D0BC8B04203D160685943814218D02E +:20EAA000022A16D0286981B2304600F082FD0146286980B24843301A820828694B1C80B208 +:20EAC000584363689B19C01A83082046FFF717FF06E0286981B2304600F06BFDC01928DFED +:20EAE000002802D17F4901228A70F8BDF8B57D4C069E65780A2D1DD027787D19EDB20A2D5B +:20EB000001D30A3DEDB218277D432D192871AA6103C9EE60AB6069612861A1780020002978 +:20EB200004D1FFF772FF112800D100206178491C6170F8BD0420F8BD38B5024669481823B1 +:20EB400001785943081803690179022B0AD014246343644CF434E4588368009383691030F7 +:20EB6000A04738BD604B14331C68F5E7F8B55D4B9978012914D100255B499D700A69082A77 +:20EB800005D002280FD003280AD10D2006E0022807D00D7000F025FA002801D0FFF7CCFF37 +:20EBA000F8BD0D61F6E74F48182403784E496343CC681818641C001DCC600378022B05D11F +:20EBC0004668A102B14201D3012700E00027052B01D1072A03D00021042B02D003E00121C1 +:20EBE000FAE7072A03D00026042B02D007E00126FAE74068A302834201D3002A1AD0002000 +:20EC0000314301433943C5D0374E28463561FFF793FF344C2078FFF765FEF5606078401E1E +:20EC200060702078401CC0B220700A28B2D30A382070AFE70120E3E770B500252A4C2948D3 +:20EC4000E56025610570457085702E463046FFF749FE761C0A2EF9D3012212076560516952 +:20EC600028461269491E92B25143E560A1601D49F4310D608D600D61CD601B4914310D6090 +:20EC8000888001212170206170BDF8B5164A044610780E46002830D0002C30D0002E2ED058 +:20ECA000206800282BD0012000076768016989B28F4228D8102F26D3A168002923D09568E2 +:20ECC000794343694A19006980B243439A421AD801200007006980B2814212D901200007E1 +:20ECE000006903E0E82D0020A828002080B2394600F05FFC002906D103E00820F8BD0E20B9 +:20ED0000F8BDB80701D00720F8BDBD49486801281CD00F461421BB4A21C641438E18756092 +:20ED2000236853506168B160A168F160A268616800235143012212075B1C14699BB2A4B214 +:20ED40008C4205D21469A4B2091B02E00420F8BD00211469A4B265191469A4B28C42EBD985 +:20ED6000BD60401C336178600020F8BDF8B50446A3481E46007815460F46002807D0002F3D +:20ED800007D0002C05D02068002817D103E00820F8BD0E20F8BD9B48016800290ED0C268E3 +:20EDA000816840684A4310186268904206D9002D04D0A94202D3A819884201D90720F8BD90 +:20EDC000384600F008F9002811D0304600F003F900280CD0606800F0FEF8002807D02B4637 +:20EDE0003A46214602200096FFF780FEF8BD1020F8BDFFB5824881B000781F4616460D462B +:20EE0000002808D0002D08D00198002805D02868002817D103E00820B0E50E20AEE5794C91 +:20EE2000206800280ED0E168A0686268414389186A68914206D9002E04D0B04202D3F119AD +:20EE4000814201D9072099E5019800F0C4F800281BD0384600F0BFF8002816D0686800F025 +:20EE6000BAF8002811D068683246C119019800F02EFB00962868142148432458002203215B +:20EE80002846019BA047002078E5102076E5F8B505465B480F460078002805D0002D05D012 +:20EEA0002868002821D103E00820F8BD0E20F8BD544C00262068002817D0A168E0684843CC +:20EEC00061684118686881420FD900F084F800280DD0296814225143091968684A68896834 +:20EEE000801A00F066FB002903D00720F8BD1020F8BD3B460022294604200096FFF7F6FDB5 +:20EF0000F8BD3F4A1278002A0DD000280DD000290BD00268002A08D0394A14321368002B3E +:20EF200005D004207047082070470E20704702230B600068106000207047F8B504463048AF +:20EF40001E46007817460D46002807D0002D07D0002C05D0206802281BD103E00820F8BDC3 +:20EF60000E20F8BD264814300068002811D0084600F031F800280ED0304600F02CF800286C +:20EF800009D03B462A46214602200096FFF7AEFDF8BD0720F8BD1020F8BD08B5184A1278C8 +:20EFA000002A05D0002805D00268022A11D103E0082008BD0E2008BD114A14321268002AD5 +:20EFC00007D00B460022014604200092FFF78EFD08BD072008BD800701D000207047012068 +:20EFE0007047084910B5F43949780020002906D0FFF70BFD002802D0112800D1002010BD48 +:20F00000A8280020DC2E002070B500250C290ED304464318008941000919581A0A38C2B2BD +:20F020001748022A027002D30A318B4201D2092070BD144800F04BFA134914480A8882422E +:20F0400002D02388934217D14988814202D06088884211D10D4A0323521E20891B03A842DE +:20F060000AD9690009194989914203D09E896D1CB142F4D1002070BD0B2070BD00207047C6 +:20F08000C4280020F02E002080100010FFFF000010B5FDF7ABF810BD10B50446002A02D054 +:20F0A0001088002210E00A48FBE7030A00020343A05C584003061B0F43401803584083B2EB +:20F0C0001806C00C5840521C8A42EED310BD0000FFFF00004B48002101704C484A4A026039 +:20F0E0008160C160016108224161426081610846704710B500291DD000220A60434A5368A8 +:20F10000002B1BD0202817D85B1E5360D0682423401CD060106914684343E3180B60012366 +:20F1200083409169401C19434007400F91611061002010BD0E2010BD0C2010BD042010BD8F +:20F14000F0B5324A0646916800292BD057691020791A4907490F14680B4624254D436519D6 +:20F16000B54206D1012495698C4065400020956104E0491C4907490F8F42EED1491C4E07DC +:20F18000760F956901210C469C402B4623420AD19368002B07D05B1E936053685B1C53609D +:20F1A0003346F0E70420F0BD184A2423117C1268491E4907490F594320315050002070470B +:20F1C00070B500281AD0002918D0104AD368002B16D05B1ED360936824265B1C936053692A +:20F1E00015681C467343EE1820330660E858641C08606007400F5061002070BD0E2070BD84 +:20F20000042070BDC5280020FC2E00201C30002030B5CB0008339DB293070024002B01D0E6 +:20F22000072030BD3B4B9A605219DA605C701C7058809980002030BDF7B5364C0E466088D5 +:20F24000814237D8344F00F069F822786078A188884201DA401C00E00020C0B2904202D155 +:20F2600000F062F824E065786078884201DA401C00E00020607000F057F8BD4218D0A0688C +:20F28000EF000299C151009900290CD0002E0AD0608832464543E068281800F018F9A068B3 +:20F2A0003818868002E00021381881800020FEBD0420FEBD0920FEBD0EB504E068468188A8 +:20F2C000029A0098904702AA01A9684600F003F80028F3D00EBD70B50E4B05241D785E786C +:20F2E000AE4215D01D781C789E88B44201DA641C00E000241C705C88DE686C43A41904600F +:20F300009B68E800C418A4880C80185800241060204670BDCC280020FFFF000072B606484F +:20F320000168491C0160704703490868401E086000D162B670470000DC280020BFF34F8F11 +:20F3400003490248C860BFF34F8FFEE70400FA0500ED00E010B5002904D000221146104619 +:20F36000FFF7ECFF00F010F810BD10B50021024A0846FFF761FF10BD55F3030010B50846E6 +:20F380001146FCF771FF10BDF8B5384C2078002837D02069002807D00026E068002805D0FB +:20F3A0000025002E04D013E00126F6E70125F8E7684651DF052806D0002806D000221146D2 +:20F3C000FFF7BCFF04E0012602E0216900988847002D12D1608869460880A06861DF0528FA +:20F3E00006D0002806D000221146FFF7A7FF04E0012502E0E168A0688847002ED8D0002D15 +:20F40000CFD0F8BD70B5002901D08C0701D0072070BD164C0125A16062801549636010DF46 +:20F420000028F5D1257016202EDF70BD002803D00E49C860002070470E207047002803D0A8 +:20F440000A490861002070470E20704710B507484068002807D08047002803D0002211463E +:20F46000FFF76CFF10BDFFF78FFF10BDE02800207DF30300034610B50B439B070FD1042A66 +:20F480000DD308C810C9121FA342F8D018BA21BA884201D9012010BD0020C04310BD002AAC +:20F4A00003D0D30703D0521C07E0002010BD03780C78401C491C1B1B07D103780C78401C61 +:20F4C000491C1B1B01D1921EF1D1184610BDF8B5042A2CD3830712D00B78491C0370401C25 +:20F4E000521E83070BD00B78491C0370401C521E830704D00B78491C0370401C521E8B07F9 +:20F500009B0F05D0C91ADF002023DE1B08C90AE0FCF78EFEF8BD1D4608C9FD401C46B440B8 +:20F520002C4310C0121F042AF5D2F308C91A521EF0D40B78491C0370401C521EEAD40B78EC +:20F54000491C0370401C521EE4D409780170F8BD01E004C0091F0429FBD28B0701D50280F7 +:20F56000801CC90700D00270704700290BD0C30702D00270401C491E022904D3830702D5EE +:20F580000280801C891EE3E70022EEE70022DFE70378C2781946437812061B0219438378A2 +:20F5A000C0781B04194311430902090A000608437047002203098B422CD3030A8B4211D366 +:20F5C00000239C464EE003460B433CD4002243088B4231D303098B421CD3030A8B4201D39D +:20F5E00094463FE0C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B422D +:20F6000001D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524193 +:20F6200083088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241FB +:20F64000104670475DE0CA0F00D04942031000D34042534000229C4603098B422DD3030A47 +:20F660008B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D305 +:20F6800089013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D38B01C01A88 +:20F6A000524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D37F +:20F6C000CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B00C01A52417F +:20F6E000411A00D20146634652415B10104601D34042002B00D54942704763465B1000D31A +:20F70000404201B50020C046C04602BD704770477047754600F022F8AE460500694653469B +:20F72000C008C000854618B020B5FEF7FBFA60BC00274908B6460026C0C5C0C5C0C5C0C525 +:20F74000C0C5C0C5C0C5C0C5403D49008D4670470446C046C0462046FCF7FFFC004870479C +:20F760003830002001491820ABBEFEE726000200704730B47446641E2578641CAB4200D256 +:20F780001D46635D5B00E31830BC184702000000000000000000000000000000040000009F +:20F7A000000000000000000000000000000000000000000035C4030000000000000000004D +:20F7C000020000000000000000000000000000000000000000000000030000000000000024 +:20F7E0000000000005000000000000000000000000000000000000000000000023D1BCEA6A +:20F800005F782315DEEF1212000000002CF8030000280020F400000004C1030020F90300A1 +:20F82000F4280020A413000020C103000000000000000000000000000000000000000000F1 +:20F840000000000000000000000000000000000000000000000000000000000000000000A8 +:20F8600000000000000000000000FFFF000000003200000000000000000000000000000058 +:20F88000000000000000000000000000000000000000000000000000000000000000000068 +:20F8A000000000000000000000000000000000000024F40000000000000000000000000030 +:20F8C000000000000000000000000000000000000000000000000000000000000000000028 +:20F8E000000000000000000000000000000000000000000000000000000000000000000008 +:20F900000000000000000000000000000000000000000000000000000000000000000000E7 +:20FC00000100000000000000FE0000000000000000000000000000000000000000000000E5 +:020000041000EA +:0410140000C0030015 +:040000050003C0C173 +:00000001FF diff --git a/bootloader/s130_nrf51_1.0.0_bootloader.hex b/bootloader/s130_nrf51_1.0.0_bootloader.hex new file mode 100644 index 0000000..c9c6884 --- /dev/null +++ b/bootloader/s130_nrf51_1.0.0_bootloader.hex @@ -0,0 +1,463 @@ +:020000040003F7 +:20C00000983C002005DD030017DD030019DD03000000000000000000000000000000000057 +:20C0200000000000000000000000000069C1030000000000000000001DDD03001FDD0300D7 +:20C0400021DD030021DD030021DD030021DD030021DD03000000000021DD030021DD0300D9 +:20C0600021DD030021DD030021DD030021DD030021DD030021DD030021DD030021DD0300B8 +:20C0800021DD030057D8030021DD030021DD03006DD8030021DD03004DF4030021DD0300DD +:20C0A00021DD030021DD03000000000000000000000000000000000000000000000000007E +:20C0C00000F002F800F040F80CA030C8083824182D18A246671EAB4654465D46AC4201D18E +:20C0E00000F032F87E460F3E0FCCB6460126334200D0FB1AA246AB463343184710370000C8 +:20C1000030370000103A02D378C878C1FAD8520701D330C830C101D504680C6070470000D3 +:20C120000023002400250026103A01D378C1FBD8520700D330C100D50B6070471FB5C04655 +:20C14000C0461FBD10B510BD03F0E3FA1146FFF7F5FF00F0D3F803F0FBFA03B4FFF7F2FF19 +:20C1600003BC03F0FFFA00000648704502D1EFF3098101E0EFF30881886902380078024A97 +:20C1800010470000FDFFFFFF39D50300401E00BF00BF00BF00BF00BF00BF00BF00BF00BF28 +:20C1A00000BF00BF00BFF1D170470000401E00BF00BF00BF00BF00BF00BF00BF00BF00BFB4 +:20C1C00000BF00BF00BFF1D170470000401E00BF00BF00BF00BF00BF00BF00BF00BF00BF94 +:20C1E00000BF00BF00BFF1D170470000056885F3088846680A4AEFF305839A42304602D183 +:20C20000084CA6463047074C064D0646064FF0B4034C034D024E024FF0B404480047000005 +:20C2200000000000FFFFFFFF00000021F9FFFFFF70B505460C46164602E00FCC0FC5103EEE +:20C24000102EFAD2082E02D303CC03C5083E042E07D301CC01C5361F03E021782970641C63 +:20C260006D1C761EF9D270BD0A4610B50146664803F064F810BD10B502F078FC10BD10B5C6 +:20C28000624C86B01ECC03946C460EC4002807D0684618DF002803D00022114603F04EF864 +:20C2A0000F20800313DF002803D00022114603F045F8574B48225749092003F0A3F80028AB +:20C2C00003D00022114603F039F800200490059001206946087404A860DF002803D0002251 +:20C2E000114603F02BF84C4803F0A8F8002803D00022114603F022F806B010BD08B547485A +:20C30000C169B12943D0002445480F2140698903884204D000221146104603F00FF8012068 +:20C320000007006901218902884204D000221146104603F003F83B4800903B4B05220321A1 +:20C34000002001F0BAFA002803D00022114602F0F5FF00F067FC00F0AAFC012500281AD09D +:20C3600000F0B4FC002803D00022114602F0E6FF20466840FFF783FF00F038F800F0CCFC74 +:20C3800000280ED00022114602F0D8FF09E001240021C161B8E720466840FFF770FF00F002 +:20C3A00025F803252D03002C04D1A86800F090FB002807D100F047FC002803D000221146D5 +:20C3C00002F0BCFFA86800F083FB002806D000F06EFC002802D1A86800F041FCBFF34F8F12 +:20C3E00013491248C860BFF34F8FFEE7094A10B548321421082002F00BFF002803D00022E2 +:20C40000114602F09BFF10BDEFBEADDE8CF703006BF30300342B002077C20300000500404D +:20C4200000100010EFDC0300F42800200400FA0500ED00E070B5FC4C1E46A06815460229A3 +:20C4400002D0042916D108E0052813D1A369002B10D03246294604200BE002280AD1F348B0 +:20C46000406880470320A060A369002B02D0324629469847280003D00022114602F05EFF98 +:20C4800070BD4CB5E84E0120307005200195009400F058FB4CBD10B5E34C2078002801D057 +:20C4A000082010BD206901F0F4FA002803D00022114602F043FF0F2100228904206901F01E +:20C4C000ABFA040003D00022114602F037FF204610BDD54910B5D448243141610221816012 +:20C4E000C168243002F059FD002803D00022114602F024FF10BDCC4910B5CB481C31416145 +:20C50000022181600320000380680F218903081A4108C5481C3002F040FD002803D000223D +:20C52000114602F00BFF10BD704700B589B01822BF4902A8FFF77CFE06980799009001917A +:20C5400002A80FC800F0FEFA09B000BD00B5B64987B049886A461181032109038968069146 +:20C56000B249012050394A6803928A680492C9680591069A0091019202A90EC900F0E2FA6E +:20C58000002007B000BD30B5A84CA748503C89B02430E16802F001FD002803D00022114679 +:20C5A00002F0CCFEA048E2681C3041680023083002F0C3FC050012D1182102A802F0E6FFEA +:20C5C00000209949029049886A469181E1680691079A0091019203A90EC900F0B3FA284601 +:20C5E00009B030BD00B5904987B049886A4611818E49032050394A6803928A680492C9683A +:20C600000591069A0091019202A90EC900F09AFA0020B6E73EB5864A6B46183207CA07C3A4 +:20C62000814D00246C7029466C802431684602F068FC002801D0AC603EBD03207A4900038F +:20C6400080682431486024390A46526ACA610F218903091A490840187349764A1C31486068 +:20C6600071480021103001F07BF9002803D00022114602F063FE0F2100228904286901F013 +:20C68000CBF9002803D00022114602F057FE01206C60A86000203EBD63498861704770B59A +:20C6A000426862481468536891685038D26804604360C26081600078440701D5840705D130 +:20C6C0009C0703D18C0701D1940701D0062070BD5B189A18544D0F239B02EA60994213D81A +:20C6E0005549564B514CC60709D08868181A90420AD3534820605348606053480FE08968F6 +:20C70000591A4908914201D20C2070BD4F4921604F496160800701D54E4800E04E48A0607B +:20C72000A868012802D00826304670BDFFF7B3FE0600FAD12168E8688847F5E770B50500F7 +:20C7400004D0287A800703D0102070BD0E2070BD354CA068032805D0042801D0052803D0CB +:20C76000082070BD0520A0606868E168860060688019884204D90020C04360600C2070BD5C +:20C78000FFF789FE0028FAD1A96832466368606902F0D3FB0028F2D1616889196160E268EB +:20C7A0009142ECD0092070BD10B51F4C08206168002900D010BDA1680429FBD11B4861786F +:20C7C000403802F021FC002802D00021617010BD0521A16010BDF8B5134C0746A068032899 +:20C7E00004D0042804D008252846F8BD0420A0606068002801D00820F8BDFFF74CFE05000E +:20C80000FAD17868860060788119402901D90920F8BD064AB968403A1018324602F057FE82 +:20C82000607880196070DFE7002800201C2D00209CF7030083C403000030000000C003006D +:20C84000D3C403002BC503004DC50300F7C4030029C50300E5C5030087C5030010B5894CF1 +:20C86000A068052813D1E168606888420FD10620A060FFF710FE002808D16069E1684068FF +:20C8800002F0FCFB002801D10721A16010BD082010BD10B57B488168072901D0082010BD63 +:20C8A000006901F0F6F8002803D00022114602F045FD75488068804710BD1CB506200195C2 +:20C8C000009400F03FF91CBDF8B51C4617460D46064600F0C1F8002817D001200003854215 +:20C8E00007D92346291B301B1A46FFF7EDFF00280BD13A462946304600F0B9F8002804D117 +:20C900003A462946304600F0A7F8F8BDF0B589B0684600F015FA049800282AD001210903F7 +:20C92000079A4018904226D9501A45081046049A0C468718024668001618001908900320DF +:20C9400000038068049988420DD261190846042200F08DF800280CD121460422084600F073 +:20C9600086F8002805D1BA1B2B4630460899FFF7ABFF09B0F0BD049A079800F078F8F8E75C +:20C9800000B58DB004A800F0DBF9099800280DD0089800280CD008990B984018019000219D +:20C9A0000998009180080290684618DF0DB000BD0320000380680F218903091A4908ECE7FB +:20C9C00000B58DB004A800F0BBF909980028EDD00F210898890300280CD0089A0B98019158 +:20C9E0008018029003220998009280080390684618DFDBE70320000380680A1A5208EEE7D2 +:20CA000030B591B0684600F09BF90498002814D001210903079A4018904214D9501A43087B +:20CA20001046049A5C0082180019611803242403A468049DAC4202D20E2011B030BD121AB5 +:20CA4000FFF742FFF9E703200CAB07C3049880080F900CA818DFF0E71FB5032301909008B3 +:20CA6000039000930291684618DF04B010BD1FB5012301909008039000930291684618DF58 +:20CA8000F3E70000002800201C2D002010B5BB480368012B02D1022900D10160100003D099 +:20CAA0000022114602F04AFC10BD10B5B34C48DF002803D00022114602F040FC02F0FCFB82 +:20CAC0002068022803D0032801D00428EFD110BD38B50068401C19D00024684600F058F96F +:20CAE00000980168012910D1818800290AD0C168032000038068002202F0CEFA0099898861 +:20CB0000814201D1012400E00024204638BD10B504469A482021001D02F0B9F9002803D00E +:20CB20000022114602F00AFC9448002320222146001D02F01BF9002803D00022114602F053 +:20CB4000FDFB10BD0FB4F8B5684600F021F96846818B069D0122894CFF238948002D13D090 +:20CB6000012D17D0032D2BD00021022D37D02A46052D46D0042D4ED0062A01D10420206071 +:20CB8000F8BC08BC04B0184781800A9983600260C16010E08180099D089949190A9D49195D +:20CBA000C160A52183600160089901610999856141610B99C16122607148FFF7A8FFDFE7B9 +:20CBC00000990B6803608B888380C968C160AA21816008990161099941610A990BE0009D60 +:20CBE0002E68A52E09D00660AE888680ED68C5600161836041618161DDE781800360C160C5 +:20CC0000F6E700F085F9002803D00022114602F095FB0320B3E781800360C1600099896807 +:20CC20008160C9E70EB557480090202001900120029002F001F8002804D150496846091D98 +:20CC400002F023F80EBD10B5FFF7E4FC002805D100F02FFB0446FFF728FF204610BD70B58A +:20CC600011DF002803D00022114602F067FB464900200B68444C012180340A4682401A4206 +:20CC800004D0C506ED0E0A46AA402260401C2028F3D303242403A06813DF002803D000226F +:20CCA000114602F04BFBA06802F0F2F970BD08B5684600F06DF800980168A52904D0806888 +:20CCC000AA2801D0002008BD012008BD10B5FFF797FE002803D1FFF773FE00281BD064209C +:20CCE00001F0F2FDFFF712FE002803D00022114602F024FBFFF784FE002803D000221146DD +:20CD000002F01CFBFFF73CFE040003D00022114602F014FB204610BD00B589B018221B49CA +:20CD200002A8FFF785FA069807990090019102A80FC8FFF707FFFFF7B8FE002009B000BDB5 +:20CD400010B50E4988B0044600232022091D684602F04FF80098206068468088A08003983A +:20CD6000E0600298A06004982061059860610698A0610798E06108B010BD00002C280020E6 +:20CD8000282D00208DCA030000E100E0C0F70300014901607047000000FC030008280CD0DC +:20CDA00004DC002807D006280FD108E00B280AD00C280AD105E001207047022070470320C9 +:20CDC000704704207047042901D0062070470520704770B515460A46032823D0042820D1FF +:20CDE000FE4C002906D0E088FD49884219D0132176DF10E0284602F0A3F9002803D00022F7 +:20CE0000114602F09BFAE069A8420AD101220321F44801F003F8002803D00022114602F051 +:20CE20008DFA70BD01211046FFF7B8FF02460121EEE7F0B5054608790E4685B081070CD07C +:20CE400003221146284600F0E9FF002803D00022114602F073FA05B0F0BDE04900901831D9 +:20CE600002F047F9010011D1DC4CB168009AA06902F02DFB009802F097F9010006D1204647 +:20CE80006946183002F09CF9010003D0284600F0AFFAE0E704200190009880080290A06902 +:20CEA000039001A8FFF74AFC07000BD0092F10D0A06902F045F9010002D0284600F098FA04 +:20CEC0003946E3E73079616940186061A069E061C1E7307961694118616160780028BAD073 +:20CEE0006089401E0004000C6081B4D1284601F0E9F8002803D00022114602F01FFA20890D +:20CF00006081A8E710B50022114602F017FA10BD10B5B24C01202070E088B149884208D01B +:20CF2000132176DF002810D00022114602F006FA0BE0A078002808D074DF002803D0002282 +:20CF4000114602F0FBF90020A07001F034FC002803D00022114602F0F1F9002010BD70B5E1 +:20CF60000D68044601209D4A2B0002F002FC0A2B3043061320575C466012FFF76FFC0421FD +:20CF8000FFF70CFF024604212EE00022114602F0D5F970BDFFF7BCFF002803D0002211468A +:20CFA00002F0CCF9FFF775FC002808D170BDFFF7AFFF002803D00022114602F0BFF9FFF76D +:20CFC0007CFC70BD106188680078107170BD02201061886800780128F8D1FFF7E5FB02213F +:20CFE000FFF7DCFE02460221204600F017FF0028CBD170BD0320106170BD12692046012ACC +:20D0000006D0022A07D0032AF6D1FFF712FF70BD00F001FA70BD00F03BFA70BD50708888D5 +:20D020001081508170BD00205070108170BD2046516901F010F8DAE710B5044669488EB0EB +:20D0400081796846817068490180342101A802F09DFA022001900021684641728472012131 +:20D0600001820590002101A801F03FFA002803D00022114602F062F90EB010BDF0B5574C10 +:20D080008BB0A07800283AD156481821183802F07DFA2046534CC078183C00250126002875 +:20D0A00037D02746483700950195029510226946F81D039502F0DEF9002822D0F81D08909D +:20D0C00009976846067509A804906846067708A806900420FFF7B0FF25700220207204A813 +:20D0E000E060282020823F486582183873DF002803D00022114602F021F9384886700BB045 +:20D10000F0BD0520FFF798FF2670676025722582E9E70620FFF790FF257065602572E0E7E2 +:20D1200070B52E4C01880022E588A6B017290AD01EDC11293FD008DC022977D0102902D123 +:20D140008088E080A27026B070BD264C303426461836132951D01429F5D1C289638D002106 +:20D160009A4200D1314600238088E21D82DF1BE0512970D00EDC18296CD01929E3D18079F5 +:20D180000028E0D1A270E068401EE0604FD0FFF775FFD8E7522976D05529D4D18079002871 +:20D1A000D1D11321284676DF0028CCD00022114602F0C4F8C7E78020694688803220E06054 +:20D1C000012301AA06A92846AADF002803D00022114602F0B3F82078002807E038280020A2 +:20D1E000FFFF0000602D00203015000001D1FFF745FF0020C043E080A5E70722C14910A839 +:20D2000002F065F91022E11D0CA802F060F91C22314612A802F05BF90CA80A9012A8099039 +:20D2200006ABB94A852128467FDFBDE70DE01822B64906A8FEF7FCFF0A980B9900900191F8 +:20D2400006A80FC8FFF77EFC7DE70021284667DFAAE700E017E0817900299AD0807A042885 +:20D2600003D0062801D0052893D1022909D0012069460872FF208330888102A92846A8DF82 +:20D2800092E70220F4E700F08DF88DE710B5044601F0C2FA9B482146303800F09AFE2046D3 +:20D2A000FFF73EFF10BD10B50022114602F046F810BD30B5944D87B00024203D2C7094483D +:20D2C0002C6102F0B3F800286AD19248FFF7E4F901F000FF002863D18A4800F059F900288C +:20D2E00001D10120E87011206946087207228AA102A87CDF002803D00022114602F01EF8B4 +:20D3000000940C2168460194018018214180FF2184809131C1807ADF002803D0002211469A +:20D3200002F00CF804206946009408807C4801907C4802907348303800F00BFE002803D046 +:20D340000022114601F0FAFF1C21684602F01EF9754801900120800302900094032168468C +:20D360000173C4810474714806900594684601F0FEF9002803D00022114601F0DFFF624910 +:20D38000E12208784008400010400C30DF22104008700720487010208870FFF76FFE0020A3 +:20D3A00007B030BD70B5584C614D203CE088A84201D1082070BDE178002914D05149012359 +:20D3C00008223431A9DF0028F4D12A460C21E088A7DF5849884204D0082802D0891C88420E +:20D3E000E8D1002070BD00231A461946A9DF70BD10B50A46044603211046FFF7CFFC0246AE +:20D400000321204600F00AFD002803D00022114601F094FF10BD30B5054687B000200090AF +:20D4200001900290039038486A46203800791070364A0C3A1068926804906846069205900E +:20D4400008790C2806D003221BE00022114601F075FFA5E78C68204600F049F80190201D5E +:20D4600000F045F802902046083000F040F8039004A8FFF714F9002892D00121FFF78EFCB9 +:20D4800002460121284600F0C9FC0028DDD187E7FEB50446087982070ED08207920F042385 +:20D4A0009B1A0022154604E08E683554401CC0B2521C9A42F8D30871012000908868029048 +:20D4C0000879800801906846FFF785F900280DD00221FFF763FC02460221204600F09EFCB8 +:20D4E000002803D00022114601F028FFFEBD10B5044602F04DF80002E178000A09060843E0 +:20D5000010BD0000902D002058280020E4F703008DD20300D3CD0300446675546172670031 +:20D520005FCF0300A7D20300CD0C000005CF0300FFFF00000230000010B50C46002802D04D +:20D540000120086010BD2168002911D01C48421A814212D03C2A0DD23C303C3101220B78B9 +:20D5600003701346491E401E521C3C2BF7D904E00E200BE03C2201F0AAFF00223C211048A9 +:20D5800001F08AFD0E49891E08800020206010BD70B5054600223C21094801F07DFD084C21 +:20D5A000A41E2188884201D00B2070BD3C220449284601F08CFF2088401C2080002070BD87 +:20D5C000823F00208307FF22DB0E9A408907090E994000280BDA0007000F08388308FA484C +:20D5E0009B001B18D86990430843D86170478308F6489B001B1818689043084318607047AA +:20D6000070B50124F24960040860F24940108860F04940398860F04D6C602F20FEF7B6FDAC +:20D62000AC60EE4D00242F206C61FEF7AFFD2C7170BDF0B5E94F2821BC6841430D19396962 +:20D640004A1C09D028224A431619AB68B268934204D8D21AB26069623861F0BD0A4602E066 +:20D660000A46796A9B1B4E1C0BD028264E433719BE689E42F4D328264E433619B768FF1A1A +:20D68000B760AB60696228214A4311194862F0BD70B5D24C2269A5681346114606E0814212 +:20D6A00007D00A46282671434919496A4E1CF6D170BD002EFCD08A420CD1282043435819EC +:20D6C000406A2061401C05D1C34B01209860002363616071282041434819282381685A4310 +:20D6E000406A52195062421CE2D028225043401982685118816070BDF8B5B84C2569681CF9 +:20D7000035D0B748002640686169401A07023F0A19E028204543A0682A189068B84214D8D0 +:20D72000A3693F1A8619556A002B09D0116AD0699847002807D00022114601F0FFFD02E048 +:20D74000D169106A8847681CE3D1A178E078814206D1401CC0B2E070022801D10020E07079 +:20D760009E490006800D1C310E5000F0BAF9F8BDF8B50446994800270169009146785CE038 +:20D780009648F100C2688D1851E0601C07D0934A28209268604321468018446A24E0287854 +:20D7A000182141436A68401CC0B252182870A978884200D12F70894B516828209B6848434C +:20D7C000C0181368012B34D1037E002B31D19368C360D368036113694361526902627F4A52 +:20D7E0005279002A00D0C7607C4BC2685B6996469C46D31A1A027B4B120A9A4202D20369C3 +:20D80000D21808E0724663469A1A12020369120A934202D99A1A826000E08760C76001222E +:20D8200007610276921E42620846FFF702FF601CABD1287869788842A7D13046761EF6B202 +:20D8400000289DD1654801690098814201D00120F8BD0020F8BD644900200860486088607F +:20D86000C860614940390860486045E7FEB50020C0435A4D02906869019068462E6900F07B +:20D8800035F9074600F04FF90446002F08D002AA0199009800F08FF90298FFF769FF06E050 +:20D8A0000298FFF765FF002801D1002C02D0304600F0AAF900206871FEBDFFB59807002448 +:20D8C00081B01E4615460F4600280BD1002E09D0FFF796FE41490A9888610F703246002042 +:20D8E0008E6008E0072005B0F0BD28234343D4509B181C76401CB842F7DB28204743BB19C1 +:20D90000032048700F461846CB6019461830002218232E465E43D3005B181C705C709D708A +:20D9200058603018521C032AF5DB0020C0433861BC70FC7001242D482405046003211420A9 +:20D94000FFF740FE224880380460254C0198A06003211120FFF736FE606878610020C2E71A +:20D9600070B51E4CA568002D06D0002A06D0002804D00023247809E0082070BD072070BDBB +:20D9800028265E43AE59002E04D05B1CA342F7DB042070BD282401265C432E516419E261BF +:20D9A00061600360002070BD07494868C005C00D2CD010381CD50207120F083A9208920097 +:20D9C0005118C96919E0000000ED00E000E400E080E100E040130140001001406028002054 +:20D9E00000150140FFFF7F004011014080E200E08108B14A8900891809688007C00EC1400B +:20DA00000806800F012803D0032803D0022070470020704701207047FEB50446A74817469E +:20DA200082680D46002A0CD001788C4201D2052D01D20720FEBD2146282359435358012B7D +:20DA400001D00820FEBD8818406801281DD00026FFF7AAFFC00099490190C9684018694684 +:20DA600000F018F9002812D0012144600160944949680830E2C091490198C9684118009877 +:20DA8000487000F02EF80020FEBD2E46E0E70420FEBDF8B5894D0446A868002809D0297844 +:20DAA0008C4201D30720F8BD282161434058012801D00820F8BDFFF777FFC600E86869465B +:20DAC000301800F0E7F8002809D0022112C0E86831180098487000F004F80020F8BD04206B +:20DAE000F8BD0120774900050860704710B5734900238A78CC78A24212D0521CD2B28A70D0 +:20DB0000022A00D18B708A786C4B92001C339A580260486910180002000A4861012010BDA3 +:20DB20000360002010BDF8B5644801690091457833E06248E900C0680E1834782AE01820A2 +:20DB400060437168641C0818B178E4B2A14200D100240168022902D003291BD113E0574A00 +:20DB600040682821926841438F18397E002911D0FFF78EFD002038760CE028277843C018B1 +:20DB80000276406A03E04D4900228B680869471CF3D108617078A042D1D128466D1EEDB2D0 +:20DBA0000028C6D1454801690098814201D00120F8BD0020F8BDF7B5404C0025A7682369E0 +:20DBC0001EE028215943C9198E68864202D9301A886017E0801B751900268E600E764E6946 +:20DBE0009C464B6AB646002E0AD0019E76193602360ACE6076460E6116684E626146116045 +:20DC0000591CDED12361FEBDF8B52C4801694A1C3DD028225143826889188E6828494C681F +:20DC200047690079E11B0D022D0AED1C002815D10120254A00045060234A403A506021491D +:20DC4000400080310860214908602149012008602F20FEF79BFA194901200871B54200D208 +:20DC60003546E81900021649000A4031086014494968001B091B0902090A0002C91C000A88 +:20DC8000814203D901200F4940040860F8BDFFF7B7FCF8BD42788378521C934200D10022C2 +:20DCA0000378934201D1002070470A6041684078182250430818704700E400E06028002090 +:20DCC0000015014000E200E04013014000E100E00010014010B50446082904D000221146F9 +:20DCE000104601F02BFB21686068884710BD1CB501910090024A0821684601F09DFA1CBD53 +:20DD0000D5DC03000A48026803210A4302600948804709480047FEE7FEE7FEE7FEE7FEE797 +:20DD2000FEE7000005480649064A074B70470000240500404DDD0300C1C003009830002007 +:20DD4000983C00209834002098340020F8B500F035F82B4E002804D02A4870602A49F01300 +:20DD600088612A480124018CC9B201290DD1818C09070AD1018D0906090F042905D1808D56 +:20DD80000006000F01D1224884600027B461214D6F60A8058460686800280ED1C820FEF790 +:20DDA00005FA1D487F1C8742F5D30020B06101208007846068680028FCD0F8BD1348018CB5 +:20DDC000C9B2012917D1818C090714D1018D09060A0F03D1828D1206120F0ED0090F0129C2 +:20DDE00003D1828D1206120F07D0032903D1808D0006000F01D0002070470120704700008E +:20DE000000050040DFFF07C0006C0040C00F00F000060040000100408813000030B585B071 +:20DE2000002822D00388FE4CA34220D0FD4B1B78002B1CD0FB4B10255B1C1D7059700024C0 +:20DE400001259A70032269460A820094019402940394028A0A808D708C8004A902910393E7 +:20DE600000886946A6DF05B030BD0E20FBE70820F9E7F0B58BB0044602276846077300268B +:20DE800009968784C68408A80A900D46A18A208809AAA5DF002804D0E16A00291AD08847BE +:20DEA00018E06846008CC007C00F13D068460682208803A9A8DF002813D1A97E28461B30BA +:20DEC00001220B0001F055FC09430F1B202224263E284300FF20FE3069460882208803A94D +:20DEE000A8DF0BB0F0BD00960AE0062219E069460A71029022E0204690470020F1E700920D +:20DF00002B8B022BF3D2F0E700971DE003201AE0042018E0052016E0298B032905D20322BE +:20DF200008212046FFF77AFFDBE741780278080210436946888003D006200090A26ADAE784 +:20DF40000720FAE7092000906946A26AD3E70322E7E730B585B00D46040038D0002D36D0EC +:20DF60006868002833D00020C043AF4B20800FCB049301AB07C3AD4869460880891C01A888 +:20DF800063DF002822D1221D69460120A0DF00281CD168468078A071204600F0CEF8002886 +:20DFA00014D1204600F055F900280FD12946204600F002F9002809D16868A062A868002804 +:20DFC00000D0E06297490120087000204BE70E2049E73EB5002828D0002926D0826A002ABE +:20DFE00023D00A88102A21D0112A30D0502A1FD0512A1AD104460846891D0A78022A14D196 +:20E000004A88238A9A4210D1807A04280DD006280BD0052809D0891C2046FFF72AFF002860 +:20E0200003D0E16A002900D088473EBD898810E0CA8803899A42F8D1082200928A7F6B4605 +:20E040001A7120310291826A694690473EBD0021C94301803EBDF0B585B00A4605002DD00F +:20E0600028886F4988422BD06E480078002827D06C4C1020641C2070072060700127A770F8 +:20E080000321684601820026E11C104600F04CF801466846008A0918684601820096019680 +:20E0A00002960396298A01808770868004A80394029028886946A6DF05B0F0BD0E20FBE7D3 +:20E0C0000820F9E7F0B585B00A46050028D028885349884226D053480078002822D0514C3B +:20E0E0001120641C20700127684607820026611C104600F019F801466846008A0918684638 +:20E1000001820096019602960396298A01808770868004A80394029028886946A6DFCBE782 +:20E120000E20C9E70820C7E70870020A4A70020C8A70000EC8700420704730B58FB0054655 +:20E140001C21684601F022FA694608780421084369460870002401940394049405940694E6 +:20E16000A87908A9887031486946801C0884601C00070794000F0C77103048778A7FF920B4 +:20E180000240921CE7200240012002438A77142109A801F0FBF908A8099007A80A906946D3 +:20E1A0008C851420CC8508860D942B46A888083309AAA2DF0FB030BDF0B58FB00F4605465A +:20E1C0001C21684601F0E2F968460178022631430170002401940394049405940694A97917 +:20E1E00008A8817011496846091D0184601C0107090F103168460794017700200146684618 +:20E200004177817FF9200140891CE72001400120014368468177142109A801F0B7F907E086 +:20E22000FFFF000088280020FCF703003015000008A8099007A80A9068468685C4850686B5 +:20E240000D972B46A888203309AA6946A2DF0FB0F0BD30B58FB005461C21684601F096F9FD +:20E2600069460878082108431022104369460870002401940394049405940694A87908A962 +:20E280008870144869460884601C00070794000F0C7710304877887FF9210840801CF72123 +:20E2A000084010430121084369468877142109A801F06CF908A8099007A80A9069468C851A +:20E2C0001720CC8508860D942B46A888103309AAA2DF6FE731150000FFB583B0074600207F +:20E2E0000C9C8646267805463AE07868A90041180A88684682804988C1800022694601A8F7 +:20E3000065DF002810D1684601780598814226D17046002801D0002200E002222078891824 +:20E3200041181F2902D90C2007B0F0BD7146002908D1401CC0B2411C069B049A21701A54AF +:20E3400001208646217806980A18694601A865DF0028E9D1694620780978401820706D1CC0 +:20E360003888A842C1DC7046002804D020780699801B401E88550020D6E7F8B51546069C10 +:20E380001E46074602220094FFF7A6FF002806D133461022294638460094FFF79DFFF8BD07 +:20E3A000F7B582B000260546167000681446002805D02846039900F0CAF8060008D168794D +:20E3C00000281ED02078039F001D1F2802D90C2005B0F0BD684679DF0028F9D1217803226A +:20E3E000481C20707A5421781922481C20707A542078C1196846008800F0A4F821784018A0 +:20E400002070A8790223002810D02078039A411C2170135420780399471C012227700A54E5 +:20E420002078AA79471C039927700A54A868002815D00021415620788C460246C01C03992E +:20E440001F28C4D8501C20708B5422780A23501C20708B5420786246431C23700A54A8899B +:20E46000002809D028460094062202210C30039BFFF783FF0600ABD1A88A002809D02846D9 +:20E480000094072203211430039BFFF776FF06009ED1A88B002809D0284600941522142137 +:20E4A0001C30039BFFF769FF060091D1686A002805D02246039900F07FF8060088D1A86A01 +:20E4C000002805D02246039900F0B5F8060084D13020405D002806D022462846039900F0F6 +:20E4E000DCF80600C7D1304672E770B50C4692B000216A46117007251171002809D0817927 +:20E5000049070CD502A9FFF74BFF002808D102AE00E00026002C0ED0A079002802D028469D +:20E5200012B070BD01AA0AA92046FFF739FF0028F6D10AAA00E0002268460379017830463C +:20E5400072DFEDE70870000A487002207047F8B514780746A01C15460E461F2803D83879BF +:20E56000801C1F2801D90C20F8BD1D20001B80B26946864608803019801C7DDF0028F3D143 +:20E580003868022805D168460088704501D8092107E038790821002801D0704501D96846F6 +:20E5A0000088421C3255641CE2B2B1542978801C081828700020F8BDF8B50D461178064636 +:20E5C000881D14461F2801D90C20F8BD33880720062BFAD31927FF01BB4202D94D4A9342D6 +:20E5E000F3D17288062AF0D3BA4202D9494FBA42EBD1484FBB4203D0BA4201D09342E4D87E +:20E60000481C052220706A5420781222411C21702A54207841193088FFF794FF21784018C5 +:20E62000C0B2207041197088FFF78CFF2178401820700020F8BD70B5054600790E46801CD6 +:20E640001446C0B21178821C8A181F2A01D90C2070BD0A46491C401C2170B0542078FF224A +:20E66000411C21703254207881192888FFF76AFF21784018C0B22070AA88002A09D0A968AC +:20E68000002908D0801900F022FF2078297940182070002070BD072070BDF7B582B0029894 +:20E6A0001446C06A0F46002832D0029800252030009028E00298C16A0C2068430E18217855 +:20E6C00030794A1CC01C2270785421781622481C20707A542078C1193088FFF733FF217873 +:20E6E0004018C0B22070B288002A09D0B16800290ED0C01900F0EBFE207831794018207087 +:20E700006D1C0098EDB2007CA842D3D800205FE607205DE6FFFF000038B56749674A48883D +:20E7200090420FD04A78664C521CD2B24A70237B934208D3083175DF002803D0A1690029FF +:20E7400000D0884738BD00254D70217C002907D03B2176DF002803D0A169002900D0884728 +:20E7600061690029EED068460095884738BD70B5054601461C225248FDF75AFD4E4C002647 +:20E7800026702968002907D00822A01800F09FFE204608307ADF02E0474808307BDF0028C1 +:20E7A00008D1401E608044486670464A0021001DFFF7D6F870BD10B53F484068FFF769F9D5 +:20E7C00010BDF8B53C48103000F069F800263A4D3B4C002806D06169002919D001200090EB +:20E7E000684614E02878002804D0616900290FD00096F5E7687800280CD0A16800226868B8 +:20E80000FFF70AF9002803D0A169002900D088472E70F8BD6168F1E7F8B5294C028800276B +:20E82000254DE689102A18D029464968112A21D0122A2DD0502A0FD1801D0288B2420BD1FF +:20E84000028B022A08D1C27E837E10021843C007C00F13D0FFF7B5FFF8BD81886980014667 +:20E86000154808221631103000F031FE6F70002EF0D0F8BD0020C04368806F700846FFF7BB +:20E8800008F90028F5D0A1690029F2D08847F8BD811D09480822103000F019FEDAE7418827 +:20E8A000054808300288914204D34088814201D8012070470020704790280020FFFF0000B6 +:20E8C000CC2D002019E7030031B5054C04E0401E00902046FDF77AFC00980028F7D138BDC6 +:20E8E000E703000018225043FE4A00218018017181604161012281610261C1607047FFB577 +:20E9000081B0F94C049B039A054626691A4303200092002E03D1002A0ED001222261276919 +:20E92000039A0126360792003B0000F022FF072707162940526127000222EFE770693269FC +:20E9400092B25043326933691204920C9BB2594329DF002812D102210FE0084628DF00286A +:20E960000CD10399002901D0032106E00499002916D12978042946D017E0216105B0F0BDAE +:20E980007069326992B25043326993B24B4301461846039A29DF0028F0D10499002901D0F4 +:20E9A0000421EAE72978042920D00521E5E773693069366980B2434368681B189B18B6B2C7 +:20E9C0004E43301880181946049A29DF0028E9D0D4E7306980B24843696880188A08696902 +:20E9E00029DF0028CAD1009900290CD00621C4E77069316989B24843316989B200F0D9FD08 +:20EA000028DF0028BAD10721B7E7F8B5B54918230A780F205A435418241DB3492278266970 +:20EA2000CF68022A1BD001252D07042A2AD0052A5BD1286981B2304600F0BBFD0146A36877 +:20EA400028699A1980B24843101A820860681818861928694B1C80B25843801B34E0B8023C +:20EA600062686169121A0918A3683018181801239B029A4202D2920829DF31E0FF220132BA +:20EA800029DF2DE0E268974914205043F4314018001D0BC8B04203D160685943814218D02E +:20EAA000022A16D0286981B2304600F082FD0146286980B24843301A820828694B1C80B208 +:20EAC000584363689B19C01A83082046FFF717FF06E0286981B2304600F06BFDC01928DFED +:20EAE000002802D17F4901228A70F8BDF8B57D4C069E65780A2D1DD027787D19EDB20A2D5B +:20EB000001D30A3DEDB218277D432D192871AA6103C9EE60AB6069612861A1780020002978 +:20EB200004D1FFF772FF112800D100206178491C6170F8BD0420F8BD38B5024669481823B1 +:20EB400001785943081803690179022B0AD014246343644CF434E4588368009383691030F7 +:20EB6000A04738BD604B14331C68F5E7F8B55D4B9978012914D100255B499D700A69082A77 +:20EB800005D002280FD003280AD10D2006E0022807D00D7000F025FA002801D0FFF7CCFF37 +:20EBA000F8BD0D61F6E74F48182403784E496343CC681818641C001DCC600378022B05D11F +:20EBC0004668A102B14201D3012700E00027052B01D1072A03D00021042B02D003E00121C1 +:20EBE000FAE7072A03D00026042B02D007E00126FAE74068A302834201D3002A1AD0002000 +:20EC0000314301433943C5D0374E28463561FFF793FF344C2078FFF765FEF5606078401E1E +:20EC200060702078401CC0B220700A28B2D30A382070AFE70120E3E770B500252A4C2948D3 +:20EC4000E56025610570457085702E463046FFF749FE761C0A2EF9D3012212076560516952 +:20EC600028461269491E92B25143E560A1601D49F4310D608D600D61CD601B4914310D6090 +:20EC8000888001212170206170BDF8B5164A044610780E46002830D0002C30D0002E2ED058 +:20ECA000206800282BD0012000076768016989B28F4228D8102F26D3A168002923D09568E2 +:20ECC000794343694A19006980B243439A421AD801200007006980B2814212D901200007E1 +:20ECE000006903E0E82D0020A828002080B2394600F05FFC002906D103E00820F8BD0E20B9 +:20ED0000F8BDB80701D00720F8BDBD49486801281CD00F461421BB4A21C641438E18756092 +:20ED2000236853506168B160A168F160A268616800235143012212075B1C14699BB2A4B214 +:20ED40008C4205D21469A4B2091B02E00420F8BD00211469A4B265191469A4B28C42EBD985 +:20ED6000BD60401C336178600020F8BDF8B50446A3481E46007815460F46002807D0002F3D +:20ED800007D0002C05D02068002817D103E00820F8BD0E20F8BD9B48016800290ED0C268E3 +:20EDA000816840684A4310186268904206D9002D04D0A94202D3A819884201D90720F8BD90 +:20EDC000384600F008F9002811D0304600F003F900280CD0606800F0FEF8002807D02B4637 +:20EDE0003A46214602200096FFF780FEF8BD1020F8BDFFB5824881B000781F4616460D462B +:20EE0000002808D0002D08D00198002805D02868002817D103E00820B0E50E20AEE5794C91 +:20EE2000206800280ED0E168A0686268414389186A68914206D9002E04D0B04202D3F119AD +:20EE4000814201D9072099E5019800F0C4F800281BD0384600F0BFF8002816D0686800F025 +:20EE6000BAF8002811D068683246C119019800F02EFB00962868142148432458002203215B +:20EE80002846019BA047002078E5102076E5F8B505465B480F460078002805D0002D05D012 +:20EEA0002868002821D103E00820F8BD0E20F8BD544C00262068002817D0A168E0684843CC +:20EEC00061684118686881420FD900F084F800280DD0296814225143091968684A68896834 +:20EEE000801A00F066FB002903D00720F8BD1020F8BD3B460022294604200096FFF7F6FDB5 +:20EF0000F8BD3F4A1278002A0DD000280DD000290BD00268002A08D0394A14321368002B3E +:20EF200005D004207047082070470E20704702230B600068106000207047F8B504463048AF +:20EF40001E46007817460D46002807D0002D07D0002C05D0206802281BD103E00820F8BDC3 +:20EF60000E20F8BD264814300068002811D0084600F031F800280ED0304600F02CF800286C +:20EF800009D03B462A46214602200096FFF7AEFDF8BD0720F8BD1020F8BD08B5184A1278C8 +:20EFA000002A05D0002805D00268022A11D103E0082008BD0E2008BD114A14321268002AD5 +:20EFC00007D00B460022014604200092FFF78EFD08BD072008BD800701D000207047012068 +:20EFE0007047084910B5F43949780020002906D0FFF70BFD002802D0112800D1002010BD48 +:20F00000A8280020DC2E002070B500250C290ED304464318008941000919581A0A38C2B2BD +:20F020001748022A027002D30A318B4201D2092070BD144800F04BFA134914480A8882422E +:20F0400002D02388934217D14988814202D06088884211D10D4A0323521E20891B03A842DE +:20F060000AD9690009194989914203D09E896D1CB142F4D1002070BD0B2070BD00207047C6 +:20F08000C4280020F02E002080100010FFFF000010B5FDF7ABF810BD10B50446002A02D054 +:20F0A0001088002210E00A48FBE7030A00020343A05C584003061B0F43401803584083B2EB +:20F0C0001806C00C5840521C8A42EED310BD0000FFFF00004B48002101704C484A4A026039 +:20F0E0008160C160016108224161426081610846704710B500291DD000220A60434A5368A8 +:20F10000002B1BD0202817D85B1E5360D0682423401CD060106914684343E3180B60012366 +:20F1200083409169401C19434007400F91611061002010BD0E2010BD0C2010BD042010BD8F +:20F14000F0B5324A0646916800292BD057691020791A4907490F14680B4624254D436519D6 +:20F16000B54206D1012495698C4065400020956104E0491C4907490F8F42EED1491C4E07DC +:20F18000760F956901210C469C402B4623420AD19368002B07D05B1E936053685B1C53609D +:20F1A0003346F0E70420F0BD184A2423117C1268491E4907490F594320315050002070470B +:20F1C00070B500281AD0002918D0104AD368002B16D05B1ED360936824265B1C936053692A +:20F1E00015681C467343EE1820330660E858641C08606007400F5061002070BD0E2070BD84 +:20F20000042070BDC5280020FC2E00201C30002030B5CB0008339DB293070024002B01D0E6 +:20F22000072030BD3B4B9A605219DA605C701C7058809980002030BDF7B5364C0E466088D5 +:20F24000814237D8344F00F069F822786078A188884201DA401C00E00020C0B2904202D155 +:20F2600000F062F824E065786078884201DA401C00E00020607000F057F8BD4218D0A0688C +:20F28000EF000299C151009900290CD0002E0AD0608832464543E068281800F018F9A068B3 +:20F2A0003818868002E00021381881800020FEBD0420FEBD0920FEBD0EB504E068468188A8 +:20F2C000029A0098904702AA01A9684600F003F80028F3D00EBD70B50E4B05241D785E786C +:20F2E000AE4215D01D781C789E88B44201DA641C00E000241C705C88DE686C43A41904600F +:20F300009B68E800C418A4880C80185800241060204670BDCC280020FFFF000072B606484F +:20F320000168491C0160704703490868401E086000D162B670470000DC280020BFF34F8F11 +:20F3400003490248C860BFF34F8FFEE70400FA0500ED00E010B5002904D000221146104619 +:20F36000FFF7ECFF00F010F810BD10B50021024A0846FFF761FF10BD55F3030010B50846E6 +:20F380001146FCF771FF10BDF8B5384C2078002837D02069002807D00026E068002805D0FB +:20F3A0000025002E04D013E00126F6E70125F8E7684651DF052806D0002806D000221146D2 +:20F3C000FFF7BCFF04E0012602E0216900988847002D12D1608869460880A06861DF0528FA +:20F3E00006D0002806D000221146FFF7A7FF04E0012502E0E168A0688847002ED8D0002D15 +:20F40000CFD0F8BD70B5002901D08C0701D0072070BD164C0125A16062801549636010DF46 +:20F420000028F5D1257016202EDF70BD002803D00E49C860002070470E207047002803D0A8 +:20F440000A490861002070470E20704710B507484068002807D08047002803D0002211463E +:20F46000FFF76CFF10BDFFF78FFF10BDE02800207DF30300034610B50B439B070FD1042A66 +:20F480000DD308C810C9121FA342F8D018BA21BA884201D9012010BD0020C04310BD002AAC +:20F4A00003D0D30703D0521C07E0002010BD03780C78401C491C1B1B07D103780C78401C61 +:20F4C000491C1B1B01D1921EF1D1184610BDF8B5042A2CD3830712D00B78491C0370401C25 +:20F4E000521E83070BD00B78491C0370401C521E830704D00B78491C0370401C521E8B07F9 +:20F500009B0F05D0C91ADF002023DE1B08C90AE0FCF78EFEF8BD1D4608C9FD401C46B440B8 +:20F520002C4310C0121F042AF5D2F308C91A521EF0D40B78491C0370401C521EEAD40B78EC +:20F54000491C0370401C521EE4D409780170F8BD01E004C0091F0429FBD28B0701D50280F7 +:20F56000801CC90700D00270704700290BD0C30702D00270401C491E022904D3830702D5EE +:20F580000280801C891EE3E70022EEE70022DFE70378C2781946437812061B0219438378A2 +:20F5A000C0781B04194311430902090A000608437047002203098B422CD3030A8B4211D366 +:20F5C00000239C464EE003460B433CD4002243088B4231D303098B421CD3030A8B4201D39D +:20F5E00094463FE0C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B422D +:20F6000001D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524193 +:20F6200083088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D201465241FB +:20F64000104670475DE0CA0F00D04942031000D34042534000229C4603098B422DD3030A47 +:20F660008B4212D3FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D305 +:20F6800089013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D38B01C01A88 +:20F6A000524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D37F +:20F6C000CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B00C01A52417F +:20F6E000411A00D20146634652415B10104601D34042002B00D54942704763465B1000D31A +:20F70000404201B50020C046C04602BD704770477047754600F022F8AE460500694653469B +:20F72000C008C000854618B020B5FEF7FBFA60BC00274908B6460026C0C5C0C5C0C5C0C525 +:20F74000C0C5C0C5C0C5C0C5403D49008D4670470446C046C0462046FCF7FFFC004870479C +:20F760003830002001491820ABBEFEE726000200704730B47446641E2578641CAB4200D256 +:20F780001D46635D5B00E31830BC184702000000000000000000000000000000040000009F +:20F7A000000000000000000000000000000000000000000035C4030000000000000000004D +:20F7C000020000000000000000000000000000000000000000000000030000000000000024 +:20F7E0000000000005000000000000000000000000000000000000000000000023D1BCEA6A +:20F800005F782315DEEF1212000000002CF8030000280020F400000004C1030020F90300A1 +:20F82000F4280020A413000020C103000000000000000000000000000000000000000000F1 +:20F840000000000000000000000000000000000000000000000000000000000000000000A8 +:20F8600000000000000000000000FFFF000000003200000000000000000000000000000058 +:20F88000000000000000000000000000000000000000000000000000000000000000000068 +:20F8A000000000000000000000000000000000000024F40000000000000000000000000030 +:20F8C000000000000000000000000000000000000000000000000000000000000000000028 +:20F8E000000000000000000000000000000000000000000000000000000000000000000008 +:20F900000000000000000000000000000000000000000000000000000000000000000000E7 +:20FC00000100000000000000FE0000000000000000000000000000000000000000000000E5 +:020000041000EA +:0410140000C0030015 +:040000050003C0C173 +:00000001FF From b94eaffd5f49ee54b339c4fb91e2601a63416228 Mon Sep 17 00:00:00 2001 From: James Crosby Date: Tue, 18 Aug 2015 14:06:13 +0100 Subject: [PATCH 02/12] remove some unnecessary include paths --- module.json | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/module.json b/module.json index c19823a..22801ee 100644 --- a/module.json +++ b/module.json @@ -26,32 +26,22 @@ "source/btle/custom", "source/common", "source/nordic-sdk/components", - "source/nordic-sdk/components/libraries", - "source/nordic-sdk/components/libraries/scheduler", "source/nordic-sdk/components/libraries/util", "source/nordic-sdk/components/libraries/hci", "source/nordic-sdk/components/libraries/bootloader_dfu", "source/nordic-sdk/components/libraries/bootloader_dfu/hci_transport", "source/nordic-sdk/components/libraries/bootloader_dfu/experimental", - "source/nordic-sdk/components/libraries/crc16", - "source/nordic-sdk/components/softdevice", - "source/nordic-sdk/components/softdevice/s130", "source/nordic-sdk/components/softdevice/s130/include", - "source/nordic-sdk/components/softdevice/s130/doc", - "source/nordic-sdk/components/softdevice/common", "source/nordic-sdk/components/softdevice/common/softdevice_handler", - "source/nordic-sdk/components/drivers_nrf", "source/nordic-sdk/components/drivers_nrf/hal", "source/nordic-sdk/components/drivers_nrf/ble_flash", "source/nordic-sdk/components/drivers_nrf/pstorage", "source/nordic-sdk/components/drivers_nrf/pstorage/config", - "source/nordic-sdk/components/ble", "source/nordic-sdk/components/ble/ble_radio_notification", - "source/nordic-sdk/components/ble/ble_services", "source/nordic-sdk/components/ble/ble_services/ble_dfu", "source/nordic-sdk/components/ble/common", "source/nordic-sdk/components/ble/device_manager", "source/nordic-sdk/components/ble/device_manager/config" ], "targetDependencies": {} -} \ No newline at end of file +} From dc1d7893c4d39399c5b62a2332b6efa72d5f969c Mon Sep 17 00:00:00 2001 From: Jean-Philippe Brucker Date: Mon, 24 Aug 2015 17:49:45 +0100 Subject: [PATCH 03/12] Update S110 detection macros Those macros are defined by mbed SDK in targets.py. They changed from MCU_NORDIC_xxx_S110 to MCU_NRF51_xxx_S110. Update the #ifdefs accordingly. --- source/btle/btle.cpp | 4 ++-- source/btle/btle_discovery.cpp | 2 +- source/nRF5xGap.h | 2 +- source/nRF5xGattClient.cpp | 2 +- source/nRF5xGattClient.h | 2 +- .../nordic-sdk/components/softdevice/s130/include/ble_gap.h | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/btle/btle.cpp b/source/btle/btle.cpp index b6088d7..cb6e454 100644 --- a/source/btle/btle.cpp +++ b/source/btle/btle.cpp @@ -133,7 +133,7 @@ static void btle_handler(ble_evt_t *p_ble_evt) dm_ble_evt_handler(p_ble_evt); -#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110) +#if !defined(MCU_NRF51_16K_S110) && !defined(MCU_NRF51_32K_S110) bleGattcEventHandler(p_ble_evt); #endif @@ -141,7 +141,7 @@ static void btle_handler(ble_evt_t *p_ble_evt) switch (p_ble_evt->header.evt_id) { case BLE_GAP_EVT_CONNECTED: { Gap::Handle_t handle = p_ble_evt->evt.gap_evt.conn_handle; -#if defined(MCU_NORDIC_16K_S110) || defined(MCU_NORDIC_32K_S110) +#if defined(MCU_NRF51_16K_S110) || defined(MCU_NRF51_32K_S110) /* Only peripheral role is supported by S110 */ Gap::Role_t role = Gap::PERIPHERAL; #else diff --git a/source/btle/btle_discovery.cpp b/source/btle/btle_discovery.cpp index 6861a3d..d737f94 100644 --- a/source/btle/btle_discovery.cpp +++ b/source/btle/btle_discovery.cpp @@ -17,7 +17,7 @@ #include "nRF5xServiceDiscovery.h" #include "nRF5xGattClient.h" -#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110) +#if !defined(MCU_NRF51_16K_S110) && !defined(MCU_NRF51_32K_S110) void bleGattcEventHandler(const ble_evt_t *p_ble_evt) { nRF5xServiceDiscovery &sdSingleton = nRF5xGattClient::getInstance().discovery; diff --git a/source/nRF5xGap.h b/source/nRF5xGap.h index 91d4500..b272604 100644 --- a/source/nRF5xGap.h +++ b/source/nRF5xGap.h @@ -81,7 +81,7 @@ public: } /* Observer role is not supported by S110, return BLE_ERROR_NOT_IMPLEMENTED */ -#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110) +#if !defined(MCU_NRF51_16K_S110) && !defined(MCU_NRF51_32K_S110) virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams) { ble_gap_scan_params_t scanParams = { .active = scanningParams.getActiveScanning(), /**< If 1, perform active scanning (scan requests). */ diff --git a/source/nRF5xGattClient.cpp b/source/nRF5xGattClient.cpp index ef39d2d..b29a4f3 100644 --- a/source/nRF5xGattClient.cpp +++ b/source/nRF5xGattClient.cpp @@ -22,7 +22,7 @@ nRF5xGattClient::getInstance(void) { return nRFGattClientSingleton; } -#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110) +#if !defined(MCU_NRF51_16K_S110) && !defined(MCU_NRF51_32K_S110) ble_error_t nRF5xGattClient::launchServiceDiscovery(Gap::Handle_t connectionHandle, ServiceDiscovery::ServiceCallback_t sc, diff --git a/source/nRF5xGattClient.h b/source/nRF5xGattClient.h index cd06811..b8764f6 100644 --- a/source/nRF5xGattClient.h +++ b/source/nRF5xGattClient.h @@ -29,7 +29,7 @@ public: * When using S110, all Gatt client features will return * BLE_ERROR_NOT_IMPLEMENTED */ -#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110) +#if !defined(MCU_NRF51_16K_S110) && !defined(MCU_NRF51_32K_S110) /** * Launch service discovery. Once launched, service discovery will remain diff --git a/source/nordic-sdk/components/softdevice/s130/include/ble_gap.h b/source/nordic-sdk/components/softdevice/s130/include/ble_gap.h index d562c62..a41f655 100644 --- a/source/nordic-sdk/components/softdevice/s130/include/ble_gap.h +++ b/source/nordic-sdk/components/softdevice/s130/include/ble_gap.h @@ -547,7 +547,7 @@ typedef struct { ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ ble_gap_addr_t own_addr; /**< Bluetooth address of the local device used during connection setup. */ -#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110) +#if !defined(MCU_NRF51_16K_S110) && !defined(MCU_NRF51_32K_S110) uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ #endif uint8_t irk_match :1; /**< If 1, peer device's address resolved using an IRK. */ From 94e699bbe8550d1873dfe287f947076e2ece5dc6 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Fri, 14 Aug 2015 09:00:47 +0100 Subject: [PATCH 04/12] supress warnings for unused paramters and missing initializers for the Nordic code. --- source/supress-warnings.cmake | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 source/supress-warnings.cmake diff --git a/source/supress-warnings.cmake b/source/supress-warnings.cmake new file mode 100644 index 0000000..91d9395 --- /dev/null +++ b/source/supress-warnings.cmake @@ -0,0 +1,21 @@ +# Copyright 2015 ARM Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +message("suppressing warnings from ble-nrf51822") + +if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + set_target_properties(ble-nrf51822 + PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers" + ) +endif() From 6a5d142f0386c24b48f6dc17585e17537d4184e7 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Fri, 14 Aug 2015 09:04:18 +0100 Subject: [PATCH 05/12] initialize the member authorizationReply when posting authorization callbacks to the application. This is a nice-to-do. --- source/nRF5xGattServer.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/source/nRF5xGattServer.cpp b/source/nRF5xGattServer.cpp index 82168a5..d5e7151 100644 --- a/source/nRF5xGattServer.cpp +++ b/source/nRF5xGattServer.cpp @@ -392,6 +392,9 @@ void nRF5xGattServer::hwCallback(ble_evt_t *p_ble_evt) .offset = gattsEventP->params.authorize_request.request.write.offset, .len = gattsEventP->params.authorize_request.request.write.len, .data = gattsEventP->params.authorize_request.request.write.data, + .authorizationReply = AUTH_CALLBACK_REPLY_SUCCESS /* the callback handler must leave this member + * set to AUTH_CALLBACK_REPLY_SUCCESS if the client + * request is to proceed. */ }; ble_gatts_rw_authorize_reply_params_t reply = { .type = BLE_GATTS_AUTHORIZE_TYPE_WRITE, @@ -425,11 +428,14 @@ void nRF5xGattServer::hwCallback(ble_evt_t *p_ble_evt) } case GattServerEvents::GATT_EVENT_READ_AUTHORIZATION_REQ: { GattReadAuthCallbackParams cbParams = { - .connHandle = gattsEventP->conn_handle, - .handle = handle_value, - .offset = gattsEventP->params.authorize_request.request.read.offset, - .len = 0, - .data = NULL + .connHandle = gattsEventP->conn_handle, + .handle = handle_value, + .offset = gattsEventP->params.authorize_request.request.read.offset, + .len = 0, + .data = NULL, + .authorizationReply = AUTH_CALLBACK_REPLY_SUCCESS /* the callback handler must leave this member + * set to AUTH_CALLBACK_REPLY_SUCCESS if the client + * request is to proceed. */ }; ble_gatts_rw_authorize_reply_params_t reply = { From 4fa43078dbae1ff90c2606985de20103535fed44 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Fri, 14 Aug 2015 09:05:52 +0100 Subject: [PATCH 06/12] initialize all members of gattc_write_params_t in GattClient::write(). This avoids some compiler warnings about un-initialized members. --- source/nRF5xGattClient.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/nRF5xGattClient.h b/source/nRF5xGattClient.h index b8764f6..76a015e 100644 --- a/source/nRF5xGattClient.h +++ b/source/nRF5xGattClient.h @@ -122,9 +122,11 @@ public: } virtual ble_error_t write(GattClient::WriteOp_t cmd, Gap::Handle_t connHandle, GattAttribute::Handle_t attributeHandle, size_t length, const uint8_t *value) const { - ble_gattc_write_params_t writeParams = { }; + ble_gattc_write_params_t writeParams; writeParams.write_op = cmd; + writeParams.flags = 0; /* this is inconsequential */ writeParams.handle = attributeHandle; + writeParams.offset = 0; writeParams.len = length; writeParams.p_value = const_cast(value); From 6cdb6f161f28ec86603deb6fb6b5983b11f32e4d Mon Sep 17 00:00:00 2001 From: Fabien Comte Date: Fri, 28 Aug 2015 14:44:34 +0200 Subject: [PATCH 07/12] rgrover patch fixed --- source/nRF5xGattServer.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/source/nRF5xGattServer.cpp b/source/nRF5xGattServer.cpp index 82168a5..8b0fae7 100644 --- a/source/nRF5xGattServer.cpp +++ b/source/nRF5xGattServer.cpp @@ -223,8 +223,7 @@ ble_error_t nRF5xGattServer::write(Gap::Handle_t connectionHandle, GattAttribute int characteristicIndex = resolveValueHandleToCharIndex(attributeHandle); if ((characteristicIndex != -1) && - (p_characteristics[characteristicIndex]->getProperties() & (GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)) && - (gapConnectionHandle != connectionHandle)) { + (p_characteristics[characteristicIndex]->getProperties() & (GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY))) { /* HVX update for the characteristic value */ ble_gatts_hvx_params_t hvx_params; @@ -234,23 +233,29 @@ ble_error_t nRF5xGattServer::write(Gap::Handle_t connectionHandle, GattAttribute hvx_params.offset = 0; hvx_params.p_data = const_cast(buffer); hvx_params.p_len = &len; - + error_t error = (error_t) sd_ble_gatts_hvx(gapConnectionHandle, &hvx_params); - - /* ERROR_INVALID_STATE, ERROR_BUSY, ERROR_GATTS_SYS_ATTR_MISSING and ERROR_NO_TX_BUFFERS the ATT table has been updated. */ - if ((error != ERROR_NONE) && (error != ERROR_INVALID_STATE) && (error != ERROR_BLE_NO_TX_BUFFERS) && (error != ERROR_BUSY) && (error != ERROR_BLEGATTS_SYS_ATTR_MISSING)) { - ASSERT_INT( ERROR_NONE, - sd_ble_gatts_value_set(connectionHandle, attributeHandle, &value), - BLE_ERROR_PARAM_OUT_OF_RANGE ); - } - - /* Notifications consume application buffers. The return value can - be used for resending notifications. - */ if (error != ERROR_NONE) { - returnValue = BLE_STACK_BUSY; + switch (error) { + case ERROR_BLE_NO_TX_BUFFERS: /* Notifications consume application buffers. The return value can be used for resending notifications. */ + case ERROR_BUSY: + returnValue = BLE_STACK_BUSY; + break; + + case ERROR_INVALID_STATE: + case ERROR_BLEGATTS_SYS_ATTR_MISSING: + returnValue = BLE_ERROR_INVALID_STATE; + break; + + default : + ASSERT_INT( ERROR_NONE, + sd_ble_gatts_value_set(connectionHandle, attributeHandle, &value), + BLE_ERROR_PARAM_OUT_OF_RANGE ); + break; + } } } else { + returnValue = BLE_ERROR_INVALID_STATE; // if assert is not used ASSERT_INT( ERROR_NONE, sd_ble_gatts_value_set(connectionHandle, attributeHandle, &value), BLE_ERROR_PARAM_OUT_OF_RANGE ); From 887426ad0bc2534159439f65fc23dd425b5db938 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Fri, 28 Aug 2015 14:01:52 +0100 Subject: [PATCH 08/12] minor white space diff --- source/nRF5xGattServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/nRF5xGattServer.cpp b/source/nRF5xGattServer.cpp index 70c0590..e0e009a 100644 --- a/source/nRF5xGattServer.cpp +++ b/source/nRF5xGattServer.cpp @@ -233,7 +233,7 @@ ble_error_t nRF5xGattServer::write(Gap::Handle_t connectionHandle, GattAttribute hvx_params.offset = 0; hvx_params.p_data = const_cast(buffer); hvx_params.p_len = &len; - + error_t error = (error_t) sd_ble_gatts_hvx(gapConnectionHandle, &hvx_params); if (error != ERROR_NONE) { switch (error) { From 167f304b686da284229de327acd5fabd692f08b3 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Wed, 2 Sep 2015 09:17:02 +0100 Subject: [PATCH 09/12] minor cleanup to Fabien's pull request; remove the un-necessary gapConnectionHandle --- source/nRF5xGattServer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/nRF5xGattServer.cpp b/source/nRF5xGattServer.cpp index e0e009a..b0aee36 100644 --- a/source/nRF5xGattServer.cpp +++ b/source/nRF5xGattServer.cpp @@ -204,7 +204,6 @@ ble_error_t nRF5xGattServer::write(GattAttribute::Handle_t attributeHandle, cons ble_error_t nRF5xGattServer::write(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, const uint8_t buffer[], uint16_t len, bool localOnly) { - uint16_t gapConnectionHandle = nRF5xGap::getInstance().getConnectionHandle(); ble_error_t returnValue = BLE_ERROR_NONE; ble_gatts_value_t value = { @@ -234,7 +233,10 @@ ble_error_t nRF5xGattServer::write(Gap::Handle_t connectionHandle, GattAttribute hvx_params.p_data = const_cast(buffer); hvx_params.p_len = &len; - error_t error = (error_t) sd_ble_gatts_hvx(gapConnectionHandle, &hvx_params); + if (connectionHandle == BLE_CONN_HANDLE_INVALID) { /* use the default connection handle if the caller hasn't specified a valid connectionHandle. */ + connectionHandle = nRF5xGap::getInstance().getConnectionHandle(); + } + error_t error = (error_t) sd_ble_gatts_hvx(connectionHandle, &hvx_params); if (error != ERROR_NONE) { switch (error) { case ERROR_BLE_NO_TX_BUFFERS: /* Notifications consume application buffers. The return value can be used for resending notifications. */ From 3f9d15a7ebb7c2b0075911684b2ae362b28c4838 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Wed, 2 Sep 2015 14:22:39 +0100 Subject: [PATCH 10/12] add LICENSE at the top level; also clarify that there are multiple licenses involved in this module --- BSD-3clause-Nordic.txt | 31 +++++++++++++++++++++++++++++++ LICENSE | 6 ++++++ apache-2.0.txt | 13 +++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 BSD-3clause-Nordic.txt create mode 100644 LICENSE create mode 100644 apache-2.0.txt diff --git a/BSD-3clause-Nordic.txt b/BSD-3clause-Nordic.txt new file mode 100644 index 0000000..af65ba8 --- /dev/null +++ b/BSD-3clause-Nordic.txt @@ -0,0 +1,31 @@ +/* + * Copyright (c) Nordic Semiconductor ASA + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3. Neither the name of Nordic Semiconductor ASA nor the names of other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ef9055b --- /dev/null +++ b/LICENSE @@ -0,0 +1,6 @@ +Many of the files in this module have been inherited from the Nordic SDK for +nRF51822; they come with a BSD-like license offered by Nordic for use with mbed. +Others come from the mbed SDK, and are licensed under Apache-2.0. +Unless specifically indicated otherwise in a file, files are licensed +under the Apache 2.0 license, as can be found in: apache-2.0.txt. +The BSD-like Nordic license can be found in BSD-3clause-Nordic.txt diff --git a/apache-2.0.txt b/apache-2.0.txt new file mode 100644 index 0000000..9327527 --- /dev/null +++ b/apache-2.0.txt @@ -0,0 +1,13 @@ +Copyright (c) 2015 ARM Limited + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. From ee2b3dfe4a20a14aa858570fc27dc39374390f85 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Fri, 25 Sep 2015 14:19:49 +0100 Subject: [PATCH 11/12] nRF5xGattServer::write()L remember to setup returnValue to BLE_STACK_BUSY in the case of an unforseen error. --- source/nRF5xGattServer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/nRF5xGattServer.cpp b/source/nRF5xGattServer.cpp index b0aee36..8e4f7fa 100644 --- a/source/nRF5xGattServer.cpp +++ b/source/nRF5xGattServer.cpp @@ -253,6 +253,10 @@ ble_error_t nRF5xGattServer::write(Gap::Handle_t connectionHandle, GattAttribute ASSERT_INT( ERROR_NONE, sd_ble_gatts_value_set(connectionHandle, attributeHandle, &value), BLE_ERROR_PARAM_OUT_OF_RANGE ); + + /* Notifications consume application buffers. The return value can + * be used for resending notifications. */ + returnValue = BLE_STACK_BUSY; break; } } From d18b39efc484f011e58482652ac887d7a171d315 Mon Sep 17 00:00:00 2001 From: Rohit Grover Date: Fri, 25 Sep 2015 14:24:52 +0100 Subject: [PATCH 12/12] Release 0.4.8 ============= * Relocate the FOTA bootloader image to this repository. The bootloader image(s) was previously stored in the mbed SDK, but it was decided that putting it inside the nRF module would make more sense. This allows users to replace the bootloader with something other than the default. The new search algorithm is: - search for any file named nrf51822_bootloader.hex *ELSE* - search for any file named (depending on the choice of S130/S110 softdevice) s130_nrf51_1.0.0_bootloader.hex s110_nrf51822_8.0.0_bootloader.hex The exact location of the bootloader image isn't too important, since mbed SDK looks for file names in all scanned resource files. * Initialize the member `authorizationReply` when posting read-write authorization callbacks to the application. * Minor rework for error handling in nRF5xGattServer::write()--including remove of the un-necessary variable `gapConnectionHandle`. * Update yotta CMake files to suppress warnings for unused parameters and missing initializers (especially when building with gcc). --- module.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module.json b/module.json index 22801ee..c5dd46c 100644 --- a/module.json +++ b/module.json @@ -1,6 +1,6 @@ { "name": "ble-nrf51822", - "version": "0.4.7", + "version": "0.4.8", "description": "Nordic stack and drivers for the mbed BLE API.", "keywords": [ "Bluetooth",