diff --git a/Tools/AP_Bootloader/board_types.txt b/Tools/AP_Bootloader/board_types.txt index 1416ef0a15..9f40a72741 100644 --- a/Tools/AP_Bootloader/board_types.txt +++ b/Tools/AP_Bootloader/board_types.txt @@ -192,3 +192,4 @@ AP_HW_NeutronRC_H7_BT 2000 # OpenDroneID enabled boards. Use 10000 + the base board ID AP_HW_CubeOrange_ODID 10140 AP_HW_Pixhawk6_ODID 10053 +AP_HW_SpeedyBeeF405WING 1106 diff --git a/Tools/bootloaders/SpeedyBeeF405WING_bl.bin b/Tools/bootloaders/SpeedyBeeF405WING_bl.bin new file mode 100755 index 0000000000..342e1162e4 Binary files /dev/null and b/Tools/bootloaders/SpeedyBeeF405WING_bl.bin differ diff --git a/Tools/bootloaders/SpeedyBeeF405WING_bl.elf b/Tools/bootloaders/SpeedyBeeF405WING_bl.elf new file mode 100755 index 0000000000..cd5ea42261 Binary files /dev/null and b/Tools/bootloaders/SpeedyBeeF405WING_bl.elf differ diff --git a/Tools/bootloaders/SpeedyBeeF405WING_bl.hex b/Tools/bootloaders/SpeedyBeeF405WING_bl.hex new file mode 100644 index 0000000000..ae47f49033 --- /dev/null +++ b/Tools/bootloaders/SpeedyBeeF405WING_bl.hex @@ -0,0 +1,897 @@ +:020000040800F2 +:1000000000060020E10100089D0E00081D0E0008FA +:10001000750E00081D0E0008490E0008E3010008D7 +:10002000E3010008E3010008E30100087121000872 +:10003000E3010008E3010008E3010008E301000810 +:10004000E3010008E3010008E3010008E301000800 +:10005000E3010008E30100083932000865320008B6 +:1000600091320008BD320008E9320008E3010008BF +:10007000E3010008E3010008E3010008E3010008D0 +:10008000E3010008E3010008E3010008E3010008C0 +:10009000E3010008E3010008E3010008153300084C +:1000A000E3010008E3010008E3010008E3010008A0 +:1000B000AD300008E3010008E3010008E301000897 +:1000C000E3010008E3010008E3010008E301000880 +:1000D000E3010008E3010008E3010008E301000870 +:1000E0007D330008E3010008E3010008E301000894 +:1000F000E3010008E3010008E3010008E301000850 +:10010000E3010008E3010008E3010008E30100083F +:10011000E3010008E3010008E3010008E30100082F +:10012000E3010008E3010008E3010008E30100081F +:10013000E3010008E3010008E3010008E30100080F +:10014000E3010008E3010008E3010008A928000812 +:10015000E3010008E3010008E3010008E3010008EF +:10016000E3010008E3010008E3010008E3010008DF +:10017000E3010008E3010008E3010008E3010008CF +:10018000E3010008E3010008E3010008E3010008BF +:10019000E3010008E3010008E3010008E3010008AF +:1001A000E3010008E3010008E3010008E30100089F +:1001B000E3010008E3010008E3010008E30100088F +:1001C000E3010008E3010008E3010008E30100087F +:1001D000E3010008E3010008E3010008E30100086F +:1001E00002E000F000F8FEE772B63A4880F30888B3 +:1001F000394880F3098839484EF60851CEF200019B +:10020000086040F20000CCF200004EF63471CEF2ED +:1002100000010860BFF34F8FBFF36F8F40F2000003 +:10022000C0F2F0004EF68851CEF200010860BFF334 +:100230004F8FBFF36F8F4FF00000E1EE100A4EF6C4 +:100240003C71CEF200010860062080F31488BFF3F1 +:100250006F8F02F00DF801F0E9FF02F08BFE4FF016 +:1002600055301F491B4A91423CBF41F8040BFAE745 +:100270001C49194A91423CBF41F8040BFAE71A495C +:100280001A4A1B4B9A423EBF51F8040B42F8040B2A +:10029000F8E700201749184A91423CBF41F8040B87 +:1002A000FAE701F0C7FF02F0B9FE144C144DAC425E +:1002B00003DA54F8041B8847F9E700F041F8114CC1 +:1002C000114DAC4203DA54F8041B8847F9E701F0FA +:1002D000AFBF000000060020002200200000000840 +:1002E0000000002000060020A8370008002200209F +:1002F0004022002040220020A82D0020E00100081C +:10030000E0010008E0010008E00100082DE9F04FDD +:100310002DED108AC1F80CD0C3689D46BDEC108A43 +:10032000BDE8F08F002383F311882846A047002002 +:1003300001F02AFBFEE701F0A5FA00DFFEE700006E +:1003400038B501F0E5FE054601F008FF0446D8B9CE +:100350000F4B9D421AD001339D4218BF044641F213 +:10036000883504BF01240025002001F0DBFE0CB11C +:1003700000F076F800F028FD00F0A2FB284600F01F +:10038000C3F800F06DF8F9E70025EDE70546EBE767 +:10039000010007B008B500F065FBA0F1200358424A +:1003A000584108BD07B541F21203022101A8ADF87A +:1003B000043000F075FB03B05DF804FB38B5202372 +:1003C00083F311881748C3680BB101F063FB164A29 +:1003D000144800234FF47A7101F020FB002383F3CB +:1003E0001188124C236813B12368013B23606368B2 +:1003F00013B16368013B63600D4D2B7833B96368BB +:100400007BB9022000F052FC322363602B78032B6F +:1004100007D163682BB9022000F048FC4FF47A73CF +:10042000636038BD40220020BD0300085C2300202B +:1004300054220020084B187003280CD8DFE800F085 +:1004400008050208022000F021BC022000F00EBCCA +:10045000024B00225A607047542200205C23002087 +:10046000244B254A10B51C461968013140D004338D +:100470009342F9D16268214B9A4239D9204B9B684B +:1004800003F1006303F580339A4231D2002000F07B +:1004900031FB0220FFF7CEFF1A4B1A6C00221A64C0 +:1004A000196E1A66196E596C5A64596E5A665A6EEC +:1004B0005A6942F080025A615A6922F080025A61F8 +:1004C0005A691A6942F000521A611A6922F0005200 +:1004D0001A611B6972B64FF0E0232021C3F8084D62 +:1004E000D4E9003281F311889D4683F308881047D0 +:1004F00010BD00BF0000010820000108FFFF000838 +:1005000000220020003802402DE9F04F93B0A94BA3 +:1005100000902022FF210AA89D6800F0FFFBA64A58 +:100520001378A3B9A5480121C3601170202383F378 +:100530001188C3680BB101F0ADFAA14A9F480023AE +:100540004FF47A7101F06AFA002383F31188009B5B +:1005500013B19C4B009A1A609B4A009C1378032BA2 +:100560001EBF00231370974A4FF0000A18BF536054 +:10057000D3465646D146012000F088FB24B1914B6A +:100580001B68002B00F00F82002000F06BFA039034 +:10059000039B002BF2DB012000F068FB039B213B57 +:1005A000162BE8D801A252F823F000BF0906000874 +:1005B00031060008C5060008770500087705000821 +:1005C000770500084D0700081B09000835080008DA +:1005D00097080008BF080008E5080008770500082C +:1005E000F70800087705000869090008A90600084F +:1005F00077050008AD09000815060008A9060008DF +:1006000077050008970800080220FFF7C3FE0028BE +:1006100040F0F381009B0221BAF1000F08BF1C4695 +:1006200005A841F21233ADF8143000F039FAA2E710 +:100630004FF47A7000F016FA071EEBDB0220FFF78A +:10064000A9FE0028E6D0013F052F00F2D881DFE89F +:1006500007F0030A0D10133605230593042105A89E +:1006600000F01EFA17E053480421F9E75748042127 +:10067000F6E757480421F3E74FF01C08404600F026 +:100680003BFA08F104080590042105A800F008FAD7 +:10069000B8F12C0FF2D1012000FA07F747EA0B0B53 +:1006A0005FFA8BFB4FF0000900F084FB26B10BF0E2 +:1006B0000B030B2B08BF0024FFF774FE5BE74548D4 +:1006C0000421CDE7002EA5D00BF00B030B2BA1D1FD +:1006D0000220FFF75FFE074600289BD0012000F0B4 +:1006E00009FA0220FFF7A6FE00265FFA86F84046C8 +:1006F00000F010FA044688B1404600F01BFA0136BB +:100700000028F2D1BA46044641F21213022105A88C +:10071000ADF814303E4600F0C3F92CE70120FFF796 +:1007200089FE2546234B9B68AB4207D9284600F03B +:10073000E3F9013040F066810435F3E7224B0025F0 +:100740001D70204BBA465D603E46ADE7002E3FF47B +:1007500061AF0BF00B030B2B7FF45CAF0220FFF7B4 +:1007600069FE322000F07EF9B0F10008FFF652AFCA +:1007700018F003077FF44EAF0E4A926808EB0503AA +:1007800093423FF647AFB8F5807F3FF743AF124B38 +:100790000193B84522DD4FF47A7000F063F90390BD +:1007A000039A002AFFF636AF019B039A03F8012B48 +:1007B0000137EDE7002200205823002040220020CE +:1007C000BD0300085C2300205422002004220020E6 +:1007D000082200200C22002058220020C820FFF709 +:1007E000D9FD074600283FF415AF1F2D11D8C5F1DC +:1007F000200242450AAB25F0030028BF4246834948 +:100800000192184400F064FA019A8048FF2100F038 +:1008100085FA4FEAA8037D490193C8F38702284669 +:1008200000F084FA064600283FF46EAF019B05EB0A +:10083000830539E70220FFF7ADFD00283FF4EAAE5B +:1008400000F0A2F900283FF4E5AE0027B846704B4F +:100850009B68BB4218D91F2F11D80A9B01330ED0B9 +:1008600027F0030312AA134453F8203C0593404693 +:10087000042205A900F014FB04378046E7E7384658 +:1008800000F03AF90590F2E7CDF81480042105A8AC +:1008900000F006F908E70023642104A8049300F09F +:1008A000F5F800287FF4B6AE0220FFF773FD0028AC +:1008B0003FF4B0AE049800F04FF90590E6E700234E +:1008C000642104A8049300F0E1F800287FF4A2AEAC +:1008D0000220FFF75FFD00283FF49CAE049800F073 +:1008E0004BF9EAE70220FFF755FD00283FF492AEEE +:1008F00000F05AF9E1E70220FFF74CFD00283FF431 +:1009000089AE05A9142000F055F90421074604908A +:1009100004A800F0C5F83946B9E7322000F0A2F883 +:10092000071EFFF677AEBB077FF474AE384A9268B5 +:1009300007EB090393423FF66DAE0220FFF72AFD55 +:1009400000283FF467AE27F003074F44B9453FF452 +:10095000ABAE484600F0D0F80421059005A800F0A1 +:100960009FF809F10409F1E74FF47A70FFF712FDDF +:1009700000283FF44FAE00F007F9002844D00A9B4E +:1009800001330BD008220AA9002000F0CFF900287B +:100990003AD02022FF210AA800F0C0F9FFF702FD9B +:1009A0001C4800F0F7FF13B0BDE8F08F002E3FF4B5 +:1009B00031AE0BF00B030B2B7FF42CAE0023642124 +:1009C00005A8059300F062F8074600287FF422AEE0 +:1009D0000220FFF7DFFC804600283FF41BAEFFF744 +:1009E000E1FC41F2883000F0D5FF059800F014FAE0 +:1009F000464600F0DFF93C46BDE5064654E64FF0BA +:100A0000000907E6BA467FE637467DE65822002011 +:100A100000220020A086010070B50F4B1B78013327 +:100A2000DBB2012B0C4611D80C4D29684FF47A73B8 +:100A30000E6AA2FB0332014622462846B047844292 +:100A400004D1074B00221A70012070BD4FF4FA70D8 +:100A500000F0A0FF0020F8E7102200205025002021 +:100A60009023002007B50023024601210DF1070065 +:100A70008DF80730FFF7D0FF20B19DF8070003B0D5 +:100A80005DF804FB4FF0FF30F9E700000A4608B5B7 +:100A90000421FFF7C1FF80F00100C0B2404208BD51 +:100AA00030B4054C2368DD69044B0A46AC46014668 +:100AB000204630BC604700BF50250020A0860100C2 +:100AC00070B501F017FA094E094D308000242868EE +:100AD0003388834208D901F007FA2B6804440133B4 +:100AE000B4F5803F2B60F2D370BD00BF922300208D +:100AF0006423002001F0C0BA00F1006000F58030EE +:100B00000068704700F10060920000F5803001F04D +:100B10003FBA0000054B1A68054B1B889B1A83429D +:100B200002D9104401F0E0B900207047642300208E +:100B30009223002038B5074D04462868204401F070 +:100B4000DBF928B928682044BDE8384001F0ECB949 +:100B500038BD00BF6423002010F003030AD1B0F5B4 +:100B6000047F05D200F10050A0F51040D0F8003805 +:100B7000184670470023FBE700F10050A0F5104035 +:100B8000D0F8100A70470000064991F8243033B1BC +:100B90000023086A81F824300822FFF7B3BF012040 +:100BA000704700BF68230020014B1868704700BFE2 +:100BB000002004E070B52A4B1B68C3F30B02044607 +:100BC0001B0C62B140F21340824230D040F2194017 +:100BD00082422ED040F2214082422CD10322214D6C +:100BE0000C2000FB0252556842F20102934224D0CD +:100BF000B3F5805F23D041F20102934221D041F24C +:100C0000030293421FD041F20702934214BF3F23D5 +:100C10003123013C0C44013D0A46A24215D215F98C +:100C2000016F501C9EB100F8016C0246F5E70122ED +:100C3000D5E70222D3E70C4DD6E73323E9E741237A +:100C4000E7E75A23E5E75923E3E7104605E02C25BB +:100C50008442157001D9901C5370401A70BD00BFBA +:100C6000002004E0A83400087C340008022804D1E5 +:100C7000054B4FF080429A6170470128FCD1024B2E +:100C80004FF00052F7E700BF00000240022804D1F5 +:100C9000054B4FF480429A6170470128FCD1024B0A +:100CA0004FF40052F7E700BF00000240022805D1D0 +:100CB000064A536983F48043536170470128FCD18D +:100CC000024A536983F40053F6E700BF0000024074 +:100CD00010B50023934203D0CC5CC4540133F9E730 +:100CE00010BD000010B5013810F9013F3BB191F97A +:100CF00000409C4203D11AB10131013AF4E71AB124 +:100D000091F90020981A10BD1046FCE703460246F0 +:100D1000D01A12F9011B0029FAD170470244034688 +:100D2000934202D003F8011BFAE770472DE9F8431C +:100D30001F4D144695F824200746884652BBDFF81D +:100D400070909CB395F824302BB92022FF2148469F +:100D50002F62FFF7E3FF95F82400C0F10802A242DA +:100D600028BF2246D6B24146920005EB8000FFF72D +:100D7000AFFF95F82430A41B1E44F6B2082E17448A +:100D80009044E4B285F82460DBD1FFF7FDFE002833 +:100D9000D7D108E02B6A03EB82038342CFD0FFF761 +:100DA000F3FE0028CBD10020BDE8F8830120FBE74B +:100DB00068230020024B1A78024B1A70704700BF5C +:100DC000902300201022002010B50F4C0F4800F097 +:100DD000F7F821460D4800F01FF924680C48626DB1 +:100DE000D2F8043843F00203C2F8043800F0D2FD10 +:100DF0000849204600F016FA626DD2F8043823F054 +:100E00000203C2F8043810BD9C35000850250020AC +:100E100040420F00A43500087047000000B59BB0A9 +:100E2000EFF3098168226846FFF752FFEFF305836D +:100E3000044B9A6BDA6A9A6A9A6A9A6A9A6A9A6A06 +:100E40009B6AFEE700ED00E000B59BB0EFF309817F +:100E500068226846FFF73CFFEFF30583044B9A6B6B +:100E60009A6A9A6A9A6A9A6A9A6A9B6AFEE700BFC5 +:100E700000ED00E000B59BB0EFF309816822684601 +:100E8000FFF726FFEFF30583034B5A6B9A6A9A6AC2 +:100E90009A6A9A6A9B6AFEE700ED00E0FEE70000AE +:100EA00030B5094D0A4491420DD011F8013B58402C +:100EB000082340F30004013B2C4013F0FF0384EAB5 +:100EC0005000F6D1EFE730BD2083B8ED02684368EB +:100ED0001143016003B118477047000013B5446B1C +:100EE000D4F894341A681178042915D1217C022988 +:100EF00012D11979128901238B4013420CD101A917 +:100F000004F14C0001F03CFFD4F89444019B21799A +:100F10000246206800F0CEF902B010BD143001F096 +:100F2000BFBE00004FF0FF33143001F0B9BE000027 +:100F30004C3001F091BF00004FF0FF334C3001F016 +:100F40008BBF0000143001F08DBE00004FF0FF3168 +:100F5000143001F087BE00004C3001F05DBF00008E +:100F60004FF0FF324C3001F057BF000000207047B7 +:100F700010B5D0F894341A6811780429044617D1B2 +:100F8000017C022914D15979528901238B401342E3 +:100F90000ED1143001F020FE024648B1D4F894443A +:100FA0004FF4807361792068BDE8104000F070B99B +:100FB00010BD0000406BFFF7DBBF00007047000072 +:100FC0007FB5124B036000234360C0E90233012563 +:100FD00002260F4B057404460290019300F184022F +:100FE000294600964FF48073143001F0D1FD094B6F +:100FF0000294CDE9006304F523724FF4807329460F +:1010000004F14C0001F098FE04B070BDD834000823 +:10101000B50F0008DD0E00080B68202282F311884E +:101020000A7903EB820290614A79093243F822007F +:101030008A7912B103EB8203986102230374C0F82A +:101040009414002383F311887047000038B5037FA0 +:10105000044613B190F85430ABB9201D012502218C +:10106000FFF734FF04F1140025776FF0010100F061 +:10107000B9FC84F8545004F14C006FF00101BDE854 +:10108000384000F0AFBC38BD10B501210446043033 +:10109000FFF71CFF0023237784F8543010BD0000B5 +:1010A00038B504460025143001F08AFD04F14C00E7 +:1010B000257701F059FE201D84F854500121FFF7D7 +:1010C00005FF2046BDE83840FFF752BF90F8443096 +:1010D00003F06003202B07D190F84520212A4FF020 +:1010E000000303D81F2A06D800207047222AFBD10C +:1010F000C0E90E3303E0034A82630722C26303643C +:10110000012070471122002037B5D0F894341A68B6 +:101110001178042904461AD1017C022917D11979C2 +:10112000128901238B40134211D100F14C0528464E +:1011300001F0DAFE58B101A9284601F021FED4F8E9 +:101140009444019B21790246206800F0B3F803B073 +:1011500030BD0000F0B500EB810385B09E69044608 +:101160000D46FEB1202383F3118804EB8507301D63 +:101170000821FFF7ABFEFB685B691B6806F14C00BA +:101180001BB1019001F00AFE019803A901F0F8FDDE +:10119000024648B1039B2946204600F08BF8002305 +:1011A00083F3118805B0F0BDFB685A691268002A04 +:1011B000F5D01B8A013B1340F1D104F14402EAE768 +:1011C000093138B550F82140DCB1202383F3118870 +:1011D000D4F894241368527903EB8203DB689B698B +:1011E0005D6845B104216018FFF770FE294604F1DF +:1011F000140001F0FBFC2046FFF7BAFE002383F346 +:10120000118838BD7047000001F0A8B801230370B1 +:101210000023C0E90133C36183620362C362436296 +:101220000363704738B50446202383F311880025F3 +:10123000C0E90355C0E90555416001F09FF802235C +:10124000237085F3118838BD70B500EB8103054626 +:101250005069DA600E46144618B110220021FFF7DB +:101260005DFDA06918B110220021FFF757FD31463E +:101270002846BDE8704001F04BB90000826802F0DA +:10128000011282600022C0E90422826101F0CCB91F +:10129000F0B400EB81044789E4680125A4698D401E +:1012A0003D43458123600023A2606360F0BC01F0F0 +:1012B000E7B90000F0B400EB81040789E468012578 +:1012C00064698D403D43058123600023A260636013 +:1012D000F0BC01F061BA000070B50223002504469D +:1012E0000370C0E90255C0E90455C564856180F802 +:1012F000345001F0A9F863681B6823B129462046E1 +:10130000BDE87040184770BD037880F85030052361 +:10131000037043681B6810B504460BB1042198475D +:101320000023A36010BD000090F8502043680270B5 +:101330001B680BB1052118477047000070B590F885 +:101340003430044613B1002380F8343004F14402F1 +:10135000204601F08BF963689B68B3B994F8443078 +:1013600013F0600535D00021204601F0DDFB00219F +:10137000204601F0CFFB63681B6813B106212046AD +:101380009847062384F8343070BD204698470028DB +:10139000E4D0B4F84A30E26B9A4288BFE36394F930 +:1013A0004430E56B002B4FF0200380F20381002DC9 +:1013B00000F0F280092284F8342083F311880021A0 +:1013C000D4E90E232046FFF775FF002383F311882D +:1013D000DAE794F8452003F07F0343EA022340F262 +:1013E0000232934200F0C58021D8B3F5807F48D007 +:1013F0000DD8012B3FD0022B00F09380002BB2D1EF +:1014000004F14C02A2630222E2632364C1E7B3F554 +:10141000817F00F09B80B3F5407FA4D194F84630E3 +:10142000012BA0D1B4F84C3043F0020332E0B3F505 +:10143000006F4DD017D8B3F5A06F31D0A3F5C063BE +:10144000012B90D8636894F846205E6894F84710A2 +:10145000B4F848302046B047002884D04368A363DE +:101460000368E3631AE0B3F5106F36D040F602422A +:1014700093427FF478AF5C4BA3630223E3630023C2 +:10148000C3E794F84630012B7FF46DAFB4F84C30CD +:1014900023F00203C4E90E55A4F84C30256478E724 +:1014A000B4F84430B3F5A06F0ED194F8463084F808 +:1014B0004E30204601F020F863681B6813B101210B +:1014C00020469847032323700023C4E90E339CE78A +:1014D00004F14F03A3630123C3E72378042B10D146 +:1014E000202383F311882046FFF7C8FE85F3118877 +:1014F0000321636884F84F5021701B680BB12046AC +:10150000984794F84630002BDED084F84F300423FF +:10151000237063681B68002BD6D0022120469847B1 +:10152000D2E794F848301D0603F00F0120460AD593 +:1015300001F08EF8012804D002287FF414AF2B4B61 +:101540009AE72B4B98E701F075F8F3E794F84630EB +:10155000002B7FF408AF94F8483013F00F01B3D09C +:101560001A06204602D501F0F3FAADE701F0E6FADB +:10157000AAE794F84630002B7FF4F5AE94F8483093 +:1015800013F00F01A0D01B06204602D501F0CCFAC3 +:101590009AE701F0BFFA97E7142284F8342083F326 +:1015A00011882B462A4629462046FFF771FE85F30F +:1015B0001188E9E65DB1152284F8342083F311889F +:1015C0000021D4E90E232046FFF762FEFDE60B2240 +:1015D00084F8342083F311882B462A462946204676 +:1015E000FFF768FEE3E700BF083500080035000894 +:1015F0000435000838B590F834300446002B3ED04E +:10160000063BDAB20F2A34D80F2B32D8DFE803F0CA +:1016100037313108223231313131313131313737DF +:10162000C56BB0F84A309D4214D2C3681B8AB5FB23 +:10163000F3F203FB12556DB9202383F311882B4677 +:101640002A462946FFF736FE85F311880A2384F8D7 +:1016500034300EE0142384F83430202383F31188CF +:1016600000231A4619462046FFF712FE002383F393 +:10167000118838BD036C03B198470023E7E70021C8 +:10168000204601F051FA0021204601F043FA636838 +:101690001B6813B10621204698470623D7E70000B0 +:1016A00010B590F83430142B044629D017D8062BE7 +:1016B00005D001D81BB110BD093B022BFBD800217E +:1016C000204601F031FA0021204601F023FA636838 +:1016D0001B6813B1062120469847062319E0152BF5 +:1016E000E9D10B2380F83430202383F311880023C1 +:1016F0001A461946FFF7DEFD002383F31188DAE767 +:10170000C3689B695B68002BD5D1036C03B1984714 +:10171000002384F83430CEE7024B0022C3E90033C3 +:101720009A60704794230020002303748268054B5D +:101730001B6899689142FBD25A680360426010604E +:10174000586070479423002008B5202383F3118844 +:10175000037C032B05D0042B0DD02BB983F3118808 +:1017600008BD436900221A604FF0FF334361FFF761 +:10177000DBFF0023F2E7D0E9003213605A60F3E7A1 +:10178000002303748268054B1B6899689142FBD85B +:101790005A680360426010605860704794230020CC +:1017A000054B19690874186802681A60536018615B +:1017B00001230374FEF7AABD9423002030B54B1C0F +:1017C0000B4D87B0044610D02B690A4A01A800F0DF +:1017D00025F92046FFF7E4FF049B13B101A800F0B0 +:1017E00059F92B69586907B030BDFFF7D9FFF8E701 +:1017F000942300204917000838B50C4D41612B692E +:1018000081689A689142044603D8BDE83840FFF7E2 +:101810008BBF1846FFF7B4FF01232C6101462374E8 +:101820002046BDE83840FEF771BD00BF942300207C +:10183000044B1A681B6990689B68984294BF00200B +:10184000012070479423002010B5084C23682069BC +:101850001A6822605460012223611A74FFF790FF16 +:1018600001462069BDE81040FEF750BD94230020DA +:1018700008B5FFF7DDFF18B1BDE80840FFF7E4BF8A +:1018800008BD0000FFF7E0BFFEE7000010B50C4CFC +:10189000FFF742FF00F0B4F80A498022204600F02A +:1018A0003BF8012344F8180C037400F071FC00238A +:1018B00083F3118862B60448BDE8104000F04CB8CC +:1018C000BC2300200C3500081C35000800F01CB9B2 +:1018D000EFF3118020B9EFF30583202282F3118802 +:1018E0007047000010B530B9EFF30584C4F3080465 +:1018F00014B180F3118810BDFFF7BAFF84F311888B +:10190000F9E70000034A516853685B1A9842FBD814 +:10191000704700BF001000E0826002220282704720 +:101920008368A3F17C0243F80C2C026943F83C2C39 +:10193000426943F8382C074A43F81C2CC26843F824 +:10194000102C022203F8082C002203F8072CA3F124 +:10195000180070472503000810B5202383F3118871 +:10196000FFF7DEFF00210446FFF746FF002383F365 +:101970001188204610BD0000024B1B6958610F20E2 +:10198000FFF70EBF94230020202383F31188FFF775 +:10199000F3BF000008B50146202383F31188082017 +:1019A000FFF70CFF002383F3118808BD49B1064BF4 +:1019B00042681B6918605A60136043600420FFF797 +:1019C000FDBE4FF0FF30704794230020036898421B +:1019D00006D01A680260506059611846FFF7A4BE2D +:1019E0007047000038B504460D462068844200D197 +:1019F00038BD036823605C604561FFF795FEF4E73E +:101A0000054B03F11402C3E905224FF0FF31002218 +:101A1000C3E90712704700BF9423002070B51C4E25 +:101A2000C0E9032305460C4601F090FA334653F80B +:101A3000142F9A420DD13062C5E901242A600A2C84 +:101A40002CBF00190A30C6E90555BDE8704001F009 +:101A50006BBA316A431AE31838BF1C469368A34235 +:101A600002D9081901F06EFA73699A6894420CD889 +:101A70005A68AC602B606A6015609A685D60121BE2 +:101A80009A604FF0FF33F36170BD1B68A41AECE756 +:101A90009423002038B51B4C636998420DD0D0E9DF +:101AA000003213605A6000228168C2609A680A445A +:101AB0009A604FF0FF33E36138BD2246036842F875 +:101AC000143F002193425A60C16003D1BDE8384001 +:101AD00001F032BA9A688168256A0A449A6001F076 +:101AE00035FA63699A68411B8A42E5D9AB181D1A19 +:101AF000092D206A98BF01F10A02BDE83840104460 +:101B000001F020BA942300202DE9F041184C002761 +:101B100004F11406656901F019FA236AAA68C11A6A +:101B20008A4215D813442362D5E9003213605A6003 +:101B30006369D5F80C80EF60B34201D101F0FCF984 +:101B400087F311882869C047202383F31188E1E7D0 +:101B50006169B14209D013441B1ABDE8F0410A2B58 +:101B60002CBFC0180A3001F0EDB9BDE8F08100BF0C +:101B70009423002000207047FEE70000704700001B +:101B80004FF0FF307047000002290CD0032904D029 +:101B90000129074818BF00207047032A05D80548C7 +:101BA00000EBC2007047044870470020704700BF38 +:101BB0000036000820220020B435000870B59AB025 +:101BC0000546084601A9144600F0C2F801A8FFF72F +:101BD0009DF8431C5B00C5E90034002223700323F9 +:101BE0006370C6B201AB02341046D1B28E4204F12A +:101BF000020401D81AB070BD13F8011B04F8021CCE +:101C000004F8010C0132F0E708B5202383F31188B2 +:101C10000348FFF779FA002383F3118808BD00BF5A +:101C20005025002090F8443003F01F02012A07D10C +:101C300090F845200B2A03D10023C0E90E3315E0AC +:101C400003F06003202B08D1B0F848302BB990F88E +:101C50004520212A03D81F2A04D8FFF737BA222AA1 +:101C6000EBD0FAE7034A82630722C26303640120D0 +:101C7000704700BF1822002007B5052917D8DFE8F4 +:101C800001F0191603191920202383F31188104A33 +:101C900001900121FFF7D8FA01980E4A0221FFF7BF +:101CA000D3FA0D48FFF7FCF9002383F3118803B042 +:101CB0005DF804FB202383F311880748FFF7C6F97A +:101CC000F2E7202383F311880348FFF7DDF9EBE700 +:101CD00054350008783500085025002038B50C4DE3 +:101CE0000C4C0D492A4604F10800FFF767FF05F187 +:101CF000CA0204F110000949FFF760FF05F5CA7236 +:101D000004F118000649BDE83840FFF757BF00BF8F +:101D1000182A002020220020343500083E35000813 +:101D20004935000870B5044608460D46FEF7EEFF3B +:101D3000C6B22046013403780BB9184670BD32464E +:101D40002946FEF7CFFF0028F3D10120F6E7000077 +:101D50002DE9F04705460C46FEF7D8FF2B49C6B2E1 +:101D60002846FFF7DFFF08B10A36F6B228492846B1 +:101D7000FFF7D8FF08B11036F6B2632E0BD8DFF8A4 +:101D80008C80DFF88C90234FDFF894A02E7846B932 +:101D90002670BDE8F08729462046BDE8F04701F0EF +:101DA00065BB252E2ED1072241462846FEF79AFF15 +:101DB00070B9194B224603F1100153F8040B42F895 +:101DC000040B8B42F9D11B78137007351134DDE712 +:101DD000082249462846FEF785FF98B90F4BA21CFA +:101DE000197809090232C95D02F8041C13F8011BB5 +:101DF00001F00F015345C95D02F8031CF0D11834FE +:101E00000835C3E704F8016B0135BFE72036000849 +:101E1000493500083A36000828360008107AFF1FB6 +:101E20001C7AFF1FBFF34F8F024AD368DB03FCD439 +:101E3000704700BF003C024008B5094B1B7873B9DE +:101E4000FFF7F0FF074B1A69002ABFBF064A5A6026 +:101E500002F188325A601A6822F480621A6008BD62 +:101E6000762C0020003C02402301674508B50B4B4F +:101E70001B7893B9FFF7D6FF094B1A6942F000426D +:101E80001A611A6842F480521A601A6822F4805269 +:101E90001A601A6842F480621A6008BD762C00202D +:101EA000003C02400B28F0B516D80C4C0C492378A6 +:101EB0007BB90C4D0E460C234FF0006255F8047BA5 +:101EC00046F8042B013B13F0FF033A44F6D10123FB +:101ED000237051F82000F0BD0020FCE7A82C002062 +:101EE000782C00204C360008014B53F82000704736 +:101EF0004C3600080C2070470B2810B5044601D959 +:101F0000002010BDFFF7CEFF064B53F824301844D5 +:101F1000C21A0BB90120F4E712680132F0D1043B78 +:101F2000F6E700BF4C3600080B2838B5044628D821 +:101F3000FFF7CEFCFFF776FFFFF77EFF124AF32391 +:101F4000D360E300DBB243F4007343F00203136198 +:101F5000136943F48033136105462046FFF762FF9F +:101F6000FFF7A0FF094B53F8241000F0E9F82846CA +:101F7000FFF77CFFFFF7B6FC2046BDE83840FFF7CF +:101F8000BBBF002038BD00BF003C02404C360008FB +:101F900012F001032DE9F04105460E4614464BD1DF +:101FA0008218B2F1016F61D8314B1B6813F0010345 +:101FB0005CD0304FFFF78CFCFFF73EFFF323FB6054 +:101FC000FFF730FF314640F20128032C18D824F0E7 +:101FD0000104284E0C446D1A40F20118A1423369E5 +:101FE00005EB01072AD123F001033361FFF73EFF20 +:101FF000FFF778FC0120BDE8F081043C0435E4E7FC +:10200000AB07E4D13B6923F440733B613B6943EA8E +:1020100008033B6151F8046B2E60BFF34F8FFFF74D +:1020200001FF2B689E42E8D03B6923F001033B612E +:10203000FFF71CFFFFF756FC0020DCE723F440739A +:102040003361336943EA080333610B883B80BFF394 +:102050004F8FFFF7E7FE3F8831F8023BBFB2BB422C +:10206000BCD0336923F001033361E1E71846C2E7CE +:1020700000380240003C0240084908B50B7828B1FE +:102080001BB9FFF7D9FE01230B7008BD002BFCD054 +:10209000BDE808400870FFF7E9BE00BF762C0020BD +:1020A00010B50244064BD2B2904200D110BD441C80 +:1020B00000B253F8200041F8040BE0B2F4E700BF8F +:1020C000502800400F4B30B51C6F240407D41C6F00 +:1020D00044F400741C671C6F44F400441C670A4CF1 +:1020E000236843F4807323600244084BD2B29042C9 +:1020F00000D130BD441C00B251F8045B43F82050BD +:10210000E0B2F4E700380240007000405028004080 +:1021100007B5012201A90020FFF7C2FF019803B013 +:102120005DF804FB13B50446FFF7F2FFA04205D0AB +:10213000012201A900200194FFF7C4FF02B010BDE5 +:1021400070470000034B1A681AB9034AD2F8742882 +:102150001A607047AC2C00200030024008B5FFF731 +:10216000F1FF024B1868C0F3407008BDAC2C002092 +:10217000EFF3098305494A6B22F001024A63683391 +:1021800083F30988002383F31188704700EF00E090 +:10219000202080F3118862B60C4B0D4AD96821F4D7 +:1021A000E0610904090C0A43DA60D3F8FC2009490C +:1021B00042F08072C3F8FC200A6842F001020A6013 +:1021C0001022DA7783F82200704700BF00ED00E0AC +:1021D0000003FA05001000E010B5202383F31188F6 +:1021E0000E4B5B6813F4006314D0F1EE103AEFF37A +:1021F0000984683C4FF08073E361094BDB6B236615 +:1022000084F30988FFF714FB10B1064BA36110BDDE +:10221000054BFBE783F31188F9E700BF00ED00E011 +:1022200000EF00E0370300083A03000870470000A1 +:10223000FEE700000A4B0B480B4A90420BD30B4BB6 +:10224000DA1C121AC11E22F003028B4238BF002290 +:102250000021FEF763BD53F8041B40F8041BECE7B4 +:10226000E8370008A82D0020A82D0020A82D002068 +:102270007047000070B5D0E915439E6800224FF00A +:10228000FF3504EB42135101D3F800090028BEBF0B +:10229000D3F8000940F08040C3F80009D3F8000BE0 +:1022A0000028BEBFD3F8000B40F08040C3F8000BFD +:1022B000013263189642C3F80859C3F8085BE0D2AC +:1022C0004FF00113C4F81C3870BD00001D4B03EB28 +:1022D00080022DE9F043D2F80CC05D6DDCF81420CB +:1022E000461CD2F800E005EB063605EB40185168B5 +:1022F00071450AD3D5F83438012202FA00F023EAF6 +:102300000000C5F83408BDE8F083BCF81040AEEB1F +:102310000103A34228BF2346D8F81849A4B2B3EB5F +:10232000840FF0D89468A4F1040959F8047F376049 +:10233000A4EB09071F44042FF7D81C440B449460F6 +:102340005360D4E7B02C0020890141F020010161E5 +:1023500003699B06FCD41220FFF7D4BA10B5054CD4 +:102360002046FEF753FF4FF0A0436365024BA36581 +:1023700010BD00BFB02C0020A036000870B5037857 +:10238000012B054650D12A4B446D98421BD1294B55 +:102390005A6B42F080025A635A6D42F080025A65CD +:1023A0005A6D5A6942F080025A615A6922F08002DD +:1023B0005A610E2143205B6900F0D4FB1E4BE360A1 +:1023C0001E4BC4F800380023C4F8003EC02323602D +:1023D0006E6D4FF40413A3633369002BFCDA012301 +:1023E00033610C20FFF78EFA3369DB07FCD412202F +:1023F000FFF788FA3369002BFCDA0026A66028462E +:10240000FFF738FF6B68C4F81068DB68C4F814681D +:10241000C4F81C684BB90A4BA3614FF0FF336361EA +:10242000A36843F00103A36070BD064BF4E700BF4F +:10243000B02C00200038024040140040030020026D +:10244000003C30C0083C30C0F8B5446D0546002162 +:102450002046FFF779FFA96D00234FF001128F6826 +:10246000C4F834384FF00066C4F81C284FF0FF3031 +:1024700004EB431201339F42C2F80069C2F8006BBB +:10248000C2F80809C2F8080BF2D20B686A6DEB6556 +:10249000636210231361166916F01006FBD1122037 +:1024A000FFF730FAD4F8003823F4FE63C4F800389C +:1024B000A36943F4402343F01003A3610923C4F844 +:1024C0001038C4F814380A4BEB604FF0C043C4F81E +:1024D000103B084BC4F8003BC4F81069C4F800393D +:1024E000EB6D03F1100243F48013EA65A362F8BDBB +:1024F0007C36000840800010426D90F84E10D2F8F3 +:10250000003823F4FE6343EA0113C2F80038704731 +:102510002DE9F84300EB8103456DDA68166806F093 +:102520000306731E022B05EB41130C4680460FFA7F +:1025300081F94FEA41104FF00001C3F8101B4FF032 +:10254000010104F1100398BFB60401FA03F3916985 +:102550008EBF334E06F1805606F5004600293AD06C +:10256000578A04F15801490137436F50D5F81C18B8 +:102570000B43C5F81C382B180021C3F810195369F8 +:102580000127611EA7409BB3138A928B9B08012AE7 +:1025900088BF5343D8F85C20981842EA034301F1FE +:1025A000400205EB8202C8F85C00214653602846D1 +:1025B000FFF7CAFE08EB8900C3681B8A43EA84530D +:1025C000483464011E432E51D5F81C381F43C5F80A +:1025D0001C78BDE8F88305EB4917D7F8001B21F4F8 +:1025E0000041C7F8001BD5F81C1821EA0303C0E717 +:1025F00004F13F0305EB83030A4A5A60284621464B +:10260000FFF7A2FE05EB4910D0F8003923F4004390 +:10261000C0F80039D5F81C3823EA0707D7E700BF10 +:102620000080001000040002826D1268C265FFF78E +:1026300021BE00005831436D49015B5813F400403E +:1026400004D013F4001F0CBF0220012070470000CB +:102650004831436D49015B5813F4004004D013F432 +:10266000001F0CBF022001207047000000EB810119 +:10267000CB68196A0B6813604B68536070470000A1 +:1026800000EB810330B5DD68AA691368D36019B91E +:10269000402B84BF402313606B8A1468426D1C4436 +:1026A000013CB4FBF3F46343033323F0030302EB75 +:1026B000411043EAC44343F0C043C0F8103B2B68C9 +:1026C00003F00303012B09B20ED1D2F8083802EB54 +:1026D000411013F4807FD0F8003B14BF43F08053C7 +:1026E00043F00053C0F8003B02EB4112D2F8003B2C +:1026F00043F00443C2F8003B30BD00002DE9F04137 +:10270000244D6E6D06EB40130446D3F8087BC3F8E6 +:10271000087B38070AD5D6F81438190706D505EB13 +:1027200084032146DB6828465B689847FA071FD573 +:10273000D6F81438DB071BD505EB8403D968CCB970 +:102740008B69488A5A68B2FBF0F600FB16228AB9F8 +:102750001868DA6890420DD2121AC3E900242023C7 +:1027600083F311880B482146FFF78AFF84F3118811 +:10277000BDE8F081012303FA04F26B8923EA020326 +:102780006B81CB68002BF3D021460248BDE8F041B5 +:10279000184700BFB02C002000EB810370B5DD6846 +:1027A000436D6C692668E6604A0156BB1A444FF4D3 +:1027B0000020C2F810092A6802F00302012A0AB2B6 +:1027C0000ED1D3F8080803EB421410F4807FD4F83C +:1027D000000914BF40F0805040F00050C4F80009D8 +:1027E00003EB4212D2F8000940F00440C2F800099D +:1027F000D3F83408012202FA01F10143C3F8341876 +:1028000070BD19B9402E84BF4020206020682E8AF8 +:102810008419013CB4FBF6F440EAC44040F0005097 +:102820001A44C6E7F8B504461E48456D05EB441347 +:10283000D3F80869C3F80869F10717D5D5F8103837 +:10284000DA0713D500EB8403D9684B691F68DA688F +:10285000974218D2D21B00271A605F60202383F3AF +:1028600011882146FFF798FF87F31188330617D5A3 +:10287000D5F834280123A340134211D02046BDE8E7 +:10288000F840FFF723BD012303FA04F2038923EA8A +:10289000020303818B68002BE8D021469847E5E7C7 +:1028A000F8BD00BFB02C00202DE9F74F984C666DA5 +:1028B0007569B3691D4015F48058756107D02046CD +:1028C000FEF70AFD03B0BDE8F04FFFF785BC002D11 +:1028D00012DAD6F8003E8E489F071EBFD6F8003E9B +:1028E00023F00303C6F8003ED6F8043823F00103B2 +:1028F000C6F80438FEF718FD280505D58448FFF70B +:10290000B9FC8348FEF700FDA9040CD5D6F80838B9 +:1029100013F0060FF36823F470530CBF43F4105305 +:1029200043F4A053F3602A0704D56368DB680BB156 +:1029300077489847EB0274D4AF0227D5D4F8549067 +:10294000DFF8CCB100274FF0010A09EB4712D2F8AB +:10295000003B03F44023B3F5802F11D1D2F8003BA4 +:10296000002B0DDA62890AFA07F322EA0303638176 +:1029700004EB8703DB68DB6813B139465846984798 +:10298000A36D01379B68FFB29F42DED9E80617D5D9 +:10299000676D3A6AC2F30A1002F00F0302F4F012F4 +:1029A000B2F5802F00F08880B2F5402F08D104EBFB +:1029B00083030022DB681B6A07F5805790426DD1C4 +:1029C0002903D6F8184813D5E20302D50020FFF7F3 +:1029D00095FEA30302D50120FFF790FE670302D501 +:1029E0000220FFF78BFE260302D50320FFF786FEA9 +:1029F0006D037FF567AFE00702D50020FFF712FFF8 +:102A0000A10702D50120FFF70DFF620702D50220C2 +:102A1000FFF708FF23077FF555AF0320FFF702FFFD +:102A200050E7636DDFF8E8B0019300274FF0010A2B +:102A3000A36D9B685FFA87F999453FF67DAF019BCF +:102A400003EB4913D3F8002902F44022B2F5802F9A +:102A500022D1D3F80029002A1EDAD3F8002942F047 +:102A60009042C3F80029D3F80029002AFBDB606DEF +:102A70004946FFF769FC22890AFA09F322EA0303AF +:102A8000238104EB8903DB689B6813B149465846F0 +:102A900098474846FFF71AFC0137C9E7910708BF76 +:102AA000D7F80080072A98BF03F8018B02F10102D2 +:102AB00098BF4FEA182881E7023304EB830207F539 +:102AC00080575268D2F818C0DCF80820DCE9001CF6 +:102AD000A1EB0C0C002188420AD104EB830463684B +:102AE0009B699A6802449A605A6802445A6067E790 +:102AF00011F0030F08BFD7F800808C4588BF02F89B +:102B0000018B01F1010188BF4FEA1828E3E700BFFC +:102B1000B02C0020436D03EB4111D1F8003B43F48E +:102B20000013C1F8003B7047436D03EB4111D1F82E +:102B3000003943F40013C1F800397047436D03EBCB +:102B40004111D1F8003B23F40013C1F8003B70475A +:102B5000436D03EB4111D1F8003923F40013C1F8A0 +:102B60000039704700F1604303F561430901C9B2C0 +:102B700083F80013012200F01F039A4043099B00D1 +:102B800003F1604303F56143C3F880211A60704785 +:102B900030B5039C0172043304FB0325C0E90653DE +:102BA000049B03630021059BC160C0E90000C0E9EC +:102BB0000422C0E90842C0E90A11436330BD0000A5 +:102BC000416A0022C0E90411C0E90A22C2606FF024 +:102BD0000101FEF707BF0000D0E90432934201D1A2 +:102BE000C2680AB9181D7047002070470369196050 +:102BF000C2680132C260C2691344826903619342B0 +:102C000024BF436A03610021FEF7E0BE38B50446E5 +:102C10000D46E3683BB16269131D1268A362134459 +:102C2000E362002007E0237A33B929462046FEF705 +:102C3000BDFE0028EDDA38BD6FF00100FBE70000B3 +:102C4000C368C269013BC36043691344826943613D +:102C5000934224BF436A436100238362036B03B141 +:102C60001847704770B52023044683F31188866A9D +:102C70003EB9FFF7CBFF054618B186F31188284609 +:102C800070BDA36AE26A13F8015BA362934202D3A8 +:102C90002046FFF7D5FF002383F31188EFE70000FC +:102CA0002DE9F84F04460E46174698464FF0200986 +:102CB00089F311880025AA46D4F828B0BBF1000F8B +:102CC00009D141462046FFF7A1FF20B18BF31188BF +:102CD0002846BDE8F88FD4E90A12A7EB050B521A73 +:102CE000934528BF9346BBF1400F1BD9334601F1F2 +:102CF000400251F8040B43F8040B9142F9D1A36A46 +:102D000040334036A3624035D4E90A239A4202D3C5 +:102D10002046FFF795FF8AF31188BD42D8D289F388 +:102D20001188C9E730465A46FDF7D2FFA36A5B44D3 +:102D30005E44A3625D44E7E710B5029C0172043370 +:102D400004FB0321C0E906130023C0E90A33039BF7 +:102D50000363049BC460C0E90000C0E90422C0E929 +:102D60000842436310BD0000026AC260426AC0E9C3 +:102D700004220022C0E90A226FF00101FEF732BEF0 +:102D8000D0E904239A4201D1C26822B9184650F80A +:102D9000043B0B607047002070470000C368C269A5 +:102DA0000133C3604369134482694361934224BF82 +:102DB000436A43610021FEF709BE000038B50446AE +:102DC0000D46E3683BB123691A1DA262E269134410 +:102DD000E362002007E0237A33B929462046FEF754 +:102DE000E5FD0028EDDA38BD6FF00100FBE70000DB +:102DF00003691960C268013AC260C26913448269FA +:102E00000361934224BF436A036100238362036B1F +:102E100003B118477047000070B520230D460446E3 +:102E2000114683F31188866A2EB9FFF7C7FF10B1E8 +:102E300086F3118870BDA36A1D70A36AE26A01332C +:102E40009342A36204D3E16920460439FFF7D0FF1F +:102E5000002080F31188EDE72DE9F84F04460D4678 +:102E6000904699464FF0200A8AF311880026B3460F +:102E7000A76A4FB949462046FFF7A0FF20B187F364 +:102E800011883046BDE8F88FD4E90A073A1AA8EB52 +:102E90000607974228BF1746402F1BD905F140036C +:102EA00055F8042B40F8042B9D42F9D1A36A403316 +:102EB000A3624036D4E90A239A4204D3E16920464A +:102EC0000439FFF795FF8BF311884645D9D28AF371 +:102ED0001188CDE729463A46FDF7FAFEA36A3B443E +:102EE0003D44A3623E44E5E7D0E904239A4217D16A +:102EF000C3689BB1836A8BB1043B9B1A0ED01360ED +:102F0000C368013BC360C3691A44836902619A4282 +:102F100024BF436A0361002383620123184670477C +:102F20000023FBE700F088B84FF08043002258638D +:102F30001A610222DA6070474FF080430022DA60A3 +:102F4000704700004FF08043586370474FF0804354 +:102F5000586A70474B6843608B688360CB68C36076 +:102F60000B6943614B6903628B6943620B680360C1 +:102F70007047000008B5264B26481A6940F2FF1139 +:102F80000A431A611A6922F4FF7222F001021A61DF +:102F90001A691A6B0A431A631A6D0A431A651E4AA4 +:102FA0001B6D1146FFF7D6FF02F11C0100F5806092 +:102FB000FFF7D0FF02F1380100F58060FFF7CAFF8C +:102FC00002F1540100F58060FFF7C4FF02F17001C7 +:102FD00000F58060FFF7BEFF02F18C0100F5806014 +:102FE000FFF7B8FF02F1A80100F58060FFF7B2FF1C +:102FF00002F1C40100F58060FFF7ACFF02F1E001CF +:1030000000F58060FFF7A6FFBDE8084000F09AB821 +:103010000038024000000240AC36000808B500F05D +:1030200007FAFEF733FCFFF78DF8BDE80840FEF71E +:1030300055BE000070470000104B1A6C42F00102B0 +:103040001A641A6E42F001021A660D4A1B6E9368EA +:1030500043F0010393604FF0804353229A624FF094 +:10306000FF32DA6200229A615A63DA605A60012202 +:103070005A6108211A601C20FFF774BD0038024015 +:10308000002004E04FF0804208B51169D3680B407E +:10309000D9B2C9439B07116107D5202383F3118857 +:1030A000FEF714FC002383F3118808BD08B5FFF771 +:1030B000E9FFBDE80840FFF78FB800001F4B1A6911 +:1030C0006FEAC2526FEAD2521A611A69C2F3080259 +:1030D0001A614FF0FF301A695A69586100215A6924 +:1030E00059615A691A6A62F080521A621A6A02F0C9 +:1030F00080521A621A6A5A6A58625A6A59625A6A3D +:103100001A6C42F080521A641A6E42F080521A66AB +:103110001A6E0B4A106840F480701060186F00F44B +:103120004070B0F5007F1EBF4FF4803018671967FC +:10313000536823F40073536000F05AB9003802401A +:1031400000700040334B4FF080521A64324A4FF403 +:10315000404111601A6842F001021A601A68910732 +:10316000FCD59A6822F003029A602A4B9A6812F002 +:103170000C02FBD1196801F0F90119609A601A6814 +:1031800042F480321A601A689203FCD55A6F42F0FA +:1031900001025A671F4B5A6F9007FCD51F4A5A60AD +:1031A0001A6842F080721A601B4A53685904FCD5B1 +:1031B000184B1A689201FCD5194A9A60194B1A6883 +:1031C000194B9A42194B21D1194A1168194A914257 +:1031D0001CD140F205121A60144A136803F00F0361 +:1031E000052BFAD10B4B9A6842F002029A609A685A +:1031F00002F00C02082AFAD15A6C42F480425A6456 +:103200005A6E42F480425A665B6E704740F2057215 +:10321000E1E700BF0038024000700040085440075A +:1032200000948838002004E011640020003C024033 +:1032300000ED00E041C20F41084A08B5516913682A +:103240000B4003F00103536123B1054A13680BB12E +:1032500050689847BDE80840FEF7BEBF003C0140FB +:10326000282D0020084A08B5516913680B4003F067 +:103270000203536123B1054A93680BB1D0689847A4 +:10328000BDE80840FEF7A8BF003C0140282D002003 +:10329000084A08B5516913680B4003F004035361F1 +:1032A00023B1054A13690BB150699847BDE808403E +:1032B000FEF792BF003C0140282D0020084A08B5C7 +:1032C000516913680B4003F00803536123B1054AA9 +:1032D00093690BB1D0699847BDE80840FEF77CBF01 +:1032E000003C0140282D0020084A08B551691368A8 +:1032F0000B4003F01003536123B1054A136A0BB16D +:10330000506A9847BDE80840FEF766BF003C0140A0 +:10331000282D0020174B10B55A691C68144004F47E +:1033200078725A61A30604D5134A936A0BB1D06A26 +:103330009847600604D5104A136B0BB1506B984741 +:10334000210604D50C4A936B0BB1D06B9847E2056C +:1033500004D5094A136C0BB1506C9847A30504D5EA +:10336000054A936C0BB1D06C9847BDE81040FEF74E +:1033700033BF00BF003C0140282D00201A4B10B580 +:103380005A691C68144004F47C425A61620504D5F1 +:10339000164A136D0BB1506D9847230504D5134A97 +:1033A000936D0BB1D06D9847E00404D50F4A136EAE +:1033B0000BB1506E9847A10404D50C4A936E0BB123 +:1033C000D06E9847620404D5084A136F0BB1506F52 +:1033D0009847230404D5054A936F0BB1D06F9847E3 +:1033E000BDE81040FEF7F8BE003C0140282D00204B +:1033F000062108B50846FFF7B5FB06210720FFF7B1 +:10340000B1FB06210820FFF7ADFB06210920FFF7DD +:10341000A9FB06210A20FFF7A5FB06211720FFF7CD +:10342000A1FBBDE8084006212820FFF79BBB000058 +:1034300008B5FFF743FE00F00BF8FDF7E5FEFDF7DA +:10344000BDFDFFF7F7FDBDE80840FFF76BBD0000CD +:103450000023054A19460133102BC2E9001102F17D +:103460000802F8D1704700BF282D0020034611F84C +:10347000012B03F8012B002AF9D1704753544D3327 +:1034800032463F3F3F00000053544D333246343004 +:10349000780053544D3332463432780053544D3310 +:1034A0003246343436585800000000007C3400089E +:1034B0003F00000013040000883400083F000000B3 +:1034C00019040000923400083F00000021040000AD +:1034D0009C3400083F00000000000000390F000885 +:1034E000250F0008610F00084D0F0008590F000854 +:1034F000450F0008310F00081D0F00086D0F000870 +:103500000000000001000000000000006D61696E15 +:103510000000000069646C650000000014350008BC +:10352000D823002050250020010000008918000841 +:10353000000000004172647550696C6F7400254290 +:103540004F415244252D424C002553455249414C90 +:1035500025000000020000000000000055110008D6 +:10356000C111000840004000E8290020F82900208F +:103570000200000000000000030000000000000046 +:10358000051200080000000010000000082A0020BA +:10359000000000000100000000000000B02C00202E +:1035A00001010200791C0008891B0008251C000885 +:1035B000091C000843000000BC3500080902430054 +:1035C000020100C0320904000001020201000524CA +:1035D0000010010524010001042402020524060054 +:1035E00001070582030800FF09040100020A000028 +:1035F00000070501024000000705810240000000AD +:1036000012000000083600081201100102000040FC +:1036100009124157000201020301000004030904DA +:1036200025424F41524425005370656564794265D7 +:10363000654634303557494E4700303132333435E2 +:1036400036373839414243444546000000400000C7 +:1036500000400000004000000040000000000100A9 +:103660000000020000000200000002000000020052 +:103670000000020000000200000002000000000044 +:103680003D130008F5150008A11600084000400091 +:10369000102D0020102D002001000000202D002002 +:1036A00080000000400100000300000000018016BF +:1036B00000000000AAAAAAAA00010000FF9F0000C3 +:1036C0000000000000A00A0000000001000000004F +:1036D000AAAAAAAA00000001FFFF00000000000043 +:1036E000000000000000001000000000AAAAAAAA22 +:1036F00000000010FFFF00000000000000000000BC +:103700000000000000000000AAAAAAAA0000000011 +:10371000FFFF0000000000000000000000000000AB +:1037200000000000AAAAAAAA00000000FFFF0000F3 +:103730000000000000000000000000000000000089 +:10374000AAAAAAAA00000000FFFF000000000000D3 +:10375000000000000000000000000000AAAAAAAAC1 +:1037600000000000FFFF000000000000000000005B +:1037700000000000000000000A000000000000003F +:103780000300000000000000000000000000000036 +:103790000000000000000000000000000000000029 +:1037A00000000000000000005204000000000000C3 +:1037B00000000F0000000000FF009600000000085D +:1037C0000096000000000800040000001C360008FD +:1037D00000000000000000000000000000000000E9 +:0837E0000000000000000000E1 +:00000001FF diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/defaults.parm new file mode 100644 index 0000000000..fe1e4e7096 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/defaults.parm @@ -0,0 +1,9 @@ +# WS2812 LED +NTF_LED_LEN,4 +NTF_LED_TYPES 257 +SERVO12_FUNCTION,120 + +#Serial Port defaults +SERIAL1_PROTOCOL 23 +SERIAL4_PROTOCOL -1 +SERIAL6_PROTOCOL 2 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef-bl.dat new file mode 100644 index 0000000000..84d03b16a6 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef-bl.dat @@ -0,0 +1,37 @@ +# hw definition file for processing by chibios_pins.py +# for speedybeef4 bootloader + +# MCU class and specific type +MCU STM32F4xx STM32F405xx + +# board ID for firmware load +APJ_BOARD_ID 1106 + +# crystal frequency +OSCILLATOR_HZ 8000000 + +FLASH_SIZE_KB 1024 + +# bootloader is installed at zero offset +FLASH_RESERVE_START_KB 0 + +# the location where the bootloader will put the firmware +FLASH_BOOTLOADER_LOAD_KB 64 + +# LEDs +PA14 LED_BOOTLOADER OUTPUT LOW GPIO(0) +PA13 LED_ACTIVITY OUTPUT LOW GPIO(1) +define HAL_LED_ON 0 + +# order of UARTs +SERIAL_ORDER OTG1 + +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +DEFAULTGPIO OUTPUT LOW PULLDOWN + +# Add CS pins to ensure they are high in bootloader +PA4 MPU_CS CS +PB12 OSD_CS CS +PC14 SDCARD_CS CS diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat new file mode 100644 index 0000000000..a89bce7bab --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat @@ -0,0 +1,224 @@ +# hw definition file for SpeedyBee F4 WING hardware +# tested on the Speedybee F405 WING board +# + +# MCU class and specific type +MCU STM32F4xx STM32F405xx + +# board ID for firmware load +APJ_BOARD_ID 1106 + +# crystal frequency +OSCILLATOR_HZ 8000000 + +define STM32_ST_USE_TIMER 5 +define CH_CFG_ST_RESOLUTION 32 + +# reserve 16k for bootloader, 16k for OSD and 32k for flash storage +FLASH_RESERVE_START_KB 64 +FLASH_SIZE_KB 1024 + +define HAL_STORAGE_SIZE 15360 +STORAGE_FLASH_PAGE 1 + +# only one I2C bus +I2C_ORDER I2C1 + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6 + +# LEDs +PA13 LED_GREEN OUTPUT LOW GPIO(0) +PA14 LED_BLUE OUTPUT LOW GPIO(1) + +define HAL_GPIO_A_LED_PIN 0 +define HAL_GPIO_B_LED_PIN 1 + +# buzzer +PC15 BUZZER OUTPUT GPIO(80) LOW +define HAL_BUZZER_PIN 80 +define HAL_BUZZER_ON 1 +define HAL_BUZZER_OFF 0 + +# spi1 bus for IMU +PA5 SPI1_SCK SPI1 +PA6 SPI1_MISO SPI1 +PA7 SPI1_MOSI SPI1 +PA4 MPU_CS CS + +# spi2 for OSD +PB13 SPI2_SCK SPI2 +PC2 SPI2_MISO SPI2 +PC3 SPI2_MOSI SPI2 +PB12 OSD_CS CS + +# spi3 for sdcard +PB3 SPI3_SCK SPI3 +PB4 SPI3_MISO SPI3 +PB5 SPI3_MOSI SPI3 +PC14 SDCARD_CS CS + +# only one I2C bus in normal config +PB8 I2C1_SCL I2C1 +PB9 I2C1_SDA I2C1 + +# analog pins +PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1) +PC1 BATT_CURRENT_SENS ADC1 SCALE(1) +PC4 RSSI_ADC_PIN ADC1 SCALE(1) + +PC5 PRESSURE_SENS ADC1 SCALE(1) +define HAL_DEFAULT_AIRSPEED_PIN 15 + +# define default battery setup +define HAL_BATT_MONITOR_DEFAULT 4 +define HAL_BATT_VOLT_PIN 10 +define HAL_BATT_CURR_PIN 11 +define HAL_BATT_VOLT_SCALE 11.05 # matched to PDB board +define HAL_BATT_CURR_SCALE 50 # matched to PDB board + +# analog rssi pin +define BOARD_RSSI_ANA_PIN 14 + +# USART1 (ELRS) +PA9 USART1_TX USART1 +PA10 USART1_RX USART1 + + +# USART2 (RCIN with inverter) + +PA3 TIM9_CH2 TIM9 RCININT PULLDOWN LOW + +# alternative with PA3 as USART2_RX +PA2 USART2_TX USART2 NODMA +PA3 USART2_RX USART2 NODMA ALT(1) + +# USART3 (GPS) +PC10 USART3_TX USART3 +PC11 USART3_RX USART3 NODMA + +# UART4 serial4 +PA0 UART4_TX UART4 +PA1 UART4_RX UART4 NODMA + +# USART5 (DJI / VTX) +PC12 UART5_TX UART5 +PD2 UART5_RX UART5 NODMA + +# UART6 (onboard Telemetry) +PC6 USART6_TX USART6 +PC7 USART6_RX USART6 +define HAL_SERIAL6_BAUD 115 + +# USB +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +# PWM out pins. Note that channel order follows the ArduPilot motor +# order conventions +PB7 TIM4_CH2 TIM4 PWM(1) GPIO(50) +PB6 TIM4_CH1 TIM4 PWM(2) GPIO(51) +PB0 TIM3_CH3 TIM3 PWM(3) GPIO(52) +PB1 TIM3_CH4 TIM3 PWM(4) GPIO(53) +PC8 TIM8_CH3 TIM8 PWM(5) GPIO(54) +PC9 TIM8_CH4 TIM8 PWM(6) GPIO(55) +PB14 TIM8_CH2N TIM8 PWM(7) GPIO(56) + +PA15 TIM2_CH1 TIM2 PWM(8) GPIO(57) +PB10 TIM2_CH3 TIM2 PWM(9) GPIO(58) +PB11 TIM2_CH4 TIM2 PWM(10) GPIO(59) + +PB15 TIM1_CH3N TIM1 PWM(11) GPIO(60) +PA8 TIM1_CH1 TIM1 PWM(12) GPIO(61)# LED + +# one IMU +IMU Invensensev3 SPI:icm42605 ROTATION_ROLL_180_YAW_270 +define HAL_DEFAULT_INS_FAST_SAMPLE 1 + +# one baro +BARO SPL06 I2C:0:0x76 +define AP_BARO_BACKEND_DEFAULT_ENABLED 0 +define AP_BARO_SPL06_ENABLED 1 + +# no built-in compass, but probe the i2c bus for all possible +# external compass types +define ALLOW_ARM_NO_COMPASS +define HAL_PROBE_EXTERNAL_I2C_COMPASSES +define HAL_I2C_INTERNAL_MASK 0 +define HAL_COMPASS_AUTO_ROT_DEFAULT 2 + +# ICM42688P on SPI1 +SPIDEV icm42605 SPI1 DEVID1 MPU_CS MODE3 2*MHZ 8*MHZ + +# OSD on SPI2 +SPIDEV osd SPI2 DEVID2 OSD_CS MODE0 10*MHZ 10*MHZ + +# SD Card on SPI3 +SPIDEV sdcard SPI3 DEVID3 SDCARD_CS MODE0 400*KHZ 25*MHZ + +# filesystem setup on sdcard +define HAL_OS_FATFS_IO 1 +define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" +define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" + +# setup for OSD +define OSD_ENABLED 1 +define HAL_OSD_TYPE_DEFAULT 1 +ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin + +define STM32_PWM_USE_ADVANCED TRUE + +# reduce max size of embedded params for apj_tool.py +define AP_PARAM_MAX_EMBEDDED_PARAM 1024 +define HAL_WITH_DSP FALSE + +# save some flash + +# disable SMBUS and fuel battery monitors to save flash +define AP_BATTMON_SMBUS_ENABLE 0 +define AP_BATTMON_FUEL_ENABLE 0 +define AP_BATTMON_SYNTHETIC_CURRENT_ENABLED 0 +define HAL_BATTMON_INA2XX_ENABLED 0 + +# disable parachute and sprayer to save flash +define HAL_PARACHUTE_ENABLED 0 +define HAL_SPRAYER_ENABLED 0 +define AP_GRIPPER_ENABLED 0 +define HAL_GENERATOR_ENABLED 0 +define AP_ICENGINE_ENABLED 0 +#define LANDING_GEAR_ENABLED 0 +define WINCH_ENABLED 0 +define HAL_ADSB_ENABLED 0 + +define AC_OAPATHPLANNER_ENABLED 0 +define PRECISION_LANDING 0 +#define HAL_BARO_WIND_COMP_ENABLED 0 +define AP_OPTICALFLOW_ENABLED 0 + + +# Disable un-needed hardware drivers +define HAL_WITH_ESC_TELEM 0 +define AP_FETTEC_ONEWIRE_ENABLED 0 + +define AP_VOLZ_ENABLED 0 +define AP_ROBOTISSERVO_ENABLE 0 +define HAL_PICCOLO_CAN_ENABLE 0 +define HAL_TORQEEDO_ENABLED 0 +define HAL_RUNCAM_ENABLED 0 +define HAL_HOTT_TELEM_ENABLED 0 +define HAL_NMEA_OUTPUT_ENABLED 0 +define HAL_BUTTON_ENABLED 0 +define AP_NOTIFY_OREOLED_ENABLED 0 + +#only support MS4525 ANALOG ASP5033 driver +define AP_AIRSPEED_BACKEND_DEFAULT_ENABLED 0 +define AP_AIRSPEED_MS4525_ENABLED 1 +define AP_AIRSPEED_ANALOG_ENABLED 1 +define AP_AIRSPEED_ASP5033_ENABLED 1 + +#only support UBLOX and NMEA GPS driver +define AP_GPS_BACKEND_DEFAULT_ENABLED 0 +define AP_GPS_UBLOX_ENABLED 1 +define AP_GPS_NMEA_ENABLED 1 + +define AP_TRAMP_ENABLED 1 diff --git a/libraries/AP_OSD/AP_OSD.cpp b/libraries/AP_OSD/AP_OSD.cpp index 8a953b8623..c2fdb7bbb1 100644 --- a/libraries/AP_OSD/AP_OSD.cpp +++ b/libraries/AP_OSD/AP_OSD.cpp @@ -90,7 +90,7 @@ const AP_Param::GroupInfo AP_OSD::var_info[] = { // @Param: _OPTIONS // @DisplayName: OSD Options // @Description: This sets options that change the display - // @Bitmask: 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll, 3:Convert feet to miles at 5280ft instead of 10000ft, 4:DisableCrosshair, 19:Right justify TUNED_PN element, 20:Prefix LQ with RF Mode, 21:One decimal attitude, 22:One decimal throttle, 23:Shorten Pluscode + // @Bitmask: 0:UseDecimalPack, 1:InvertedWindArrow, 2:InvertedAHRoll, 3:Convert feet to miles at 5280ft instead of 10000ft, 4:DisableCrosshair, 5:TranslateArrows, 17:wide Sidebar, 18:Two decimal vertical speed, 19:Right justify TUNED_PN element, 20:Prefix LQ with RF Mode, 21:One decimal attitude, 22:One decimal throttle, 23:Shorten Pluscode // @User: Standard AP_GROUPINFO("_OPTIONS", 8, AP_OSD, options, OPTION_DECIMAL_PACK | OPTION_ONE_DECIMAL_ATTITUDE | OPTION_RF_MODE_ALONG_WITH_LQ | OPTION_RIGHT_JUSTIFY_TUNED_PN ), diff --git a/libraries/AP_OSD/AP_OSD.h b/libraries/AP_OSD/AP_OSD.h index 5d0cc34f9f..3fe7977173 100644 --- a/libraries/AP_OSD/AP_OSD.h +++ b/libraries/AP_OSD/AP_OSD.h @@ -314,11 +314,14 @@ class AP_OSD_Screen : public AP_OSD_AbstractScreen #if HAL_PLUSCODE_ENABLE void draw_pluscode(uint8_t x, uint8_t y); #endif + //helper functions void draw_speed(uint8_t x, uint8_t y, bool available, float magnitude = 0, bool blink = false); void draw_speed_with_arrow(uint8_t x, uint8_t y, float angle_rad, float magnitude, bool blink = false); void draw_distance(uint8_t x, uint8_t y, float distance, bool can_only_be_positive = true, bool available = true); void draw_temperature(uint8_t x, uint8_t y, bool available, float value = 0, bool blink = false); + char get_arrow_font_index (int32_t angle_cd); + #if HAL_WITH_ESC_TELEM void draw_highest_esc_temp(uint8_t x, uint8_t y); void draw_rpm(uint8_t x, uint8_t y, float rpm); // helper @@ -631,6 +634,8 @@ class AP_OSD OPTION_INVERTED_AH_ROLL = 1U<<2, OPTION_IMPERIAL_MILES = 1U<<3, OPTION_DISABLE_CROSSHAIR = 1U<<4, + OPTION_BF_ARROWS = 1U<<5, + OPTION_WIDE_SIDEBAR = 1U<<17, OPTION_TWO_DECIMALS_VERTICAL_SPEED = 1U<<18, OPTION_RIGHT_JUSTIFY_TUNED_PN = 1U<<19, OPTION_RF_MODE_ALONG_WITH_LQ = 1U<<20, diff --git a/libraries/AP_OSD/AP_OSD_MSP_DisplayPort.h b/libraries/AP_OSD/AP_OSD_MSP_DisplayPort.h index 7ac7904dbe..27b72e9475 100644 --- a/libraries/AP_OSD/AP_OSD_MSP_DisplayPort.h +++ b/libraries/AP_OSD/AP_OSD_MSP_DisplayPort.h @@ -56,13 +56,13 @@ class AP_OSD_MSP_DisplayPort : public AP_OSD_Backend static const uint8_t SYM_FS = 0x99; static const uint8_t SYM_KMH = 0x9E; static const uint8_t SYM_MPH = 0x9D; - static const uint8_t SYM_DEGR = 0x1D; + static const uint8_t SYM_DEGR = 0x08; static const uint8_t SYM_PCNT = 0x25; static const uint8_t SYM_RPM = 0x12; static const uint8_t SYM_ASPD = 0x41; - static const uint8_t SYM_GSPD = 0x70; - static const uint8_t SYM_WSPD = 0x1B; - static const uint8_t SYM_VSPD = 0x7F; + static const uint8_t SYM_GSPD = 0x47; + static const uint8_t SYM_WSPD = 0x57; + static const uint8_t SYM_VSPD = 0x5E; static const uint8_t SYM_WPNO = 0x23; static const uint8_t SYM_WPDIR = 0xE6; static const uint8_t SYM_WPDST = 0xE7; @@ -71,10 +71,10 @@ class AP_OSD_MSP_DisplayPort : public AP_OSD_Backend static const uint8_t SYM_SAT_L = 0x1E; static const uint8_t SYM_SAT_R = 0x1F; - static const uint8_t SYM_HDOP_L = 0x11; - static const uint8_t SYM_HDOP_R = 0x08; + static const uint8_t SYM_HDOP_L = 0x48; + static const uint8_t SYM_HDOP_R = 0x44; - static const uint8_t SYM_HOME = 0x05; + static const uint8_t SYM_HOME = 0x11; static const uint8_t SYM_WIND = 0x57; static const uint8_t SYM_ARROW_START = 0x60; @@ -103,30 +103,30 @@ class AP_OSD_MSP_DisplayPort : public AP_OSD_Backend static const uint8_t SYM_DEGREES_C = 0x0E; static const uint8_t SYM_DEGREES_F = 0x0D; - static const uint8_t SYM_GPS_LAT = 0x68; - static const uint8_t SYM_GPS_LONG = 0x6C; - static const uint8_t SYM_ARMED = 0x08; - static const uint8_t SYM_DISARMED = 0x08; + static const uint8_t SYM_GPS_LAT = 0x89; + static const uint8_t SYM_GPS_LONG = 0x98; + static const uint8_t SYM_ARMED = 0x00; + static const uint8_t SYM_DISARMED = 0x2A; static const uint8_t SYM_ROLL0 = 0x2D; static const uint8_t SYM_ROLLR = 0x64; static const uint8_t SYM_ROLLL = 0x6C; static const uint8_t SYM_PTCH0 = 0x7C; static const uint8_t SYM_PTCHUP = 0x68; static const uint8_t SYM_PTCHDWN = 0x60; - static const uint8_t SYM_XERR = 0xEE; + static const uint8_t SYM_XERR = 0x21; static const uint8_t SYM_KN = 0xF0; static const uint8_t SYM_NM = 0xF1; - static const uint8_t SYM_DIST = 0x22; + static const uint8_t SYM_DIST = 0x04; static const uint8_t SYM_FLY = 0x9C; static const uint8_t SYM_EFF = 0xF2; static const uint8_t SYM_AH = 0xF3; static const uint8_t SYM_MW = 0xF4; static const uint8_t SYM_CLK = 0x08; static const uint8_t SYM_KILO = 0x4B; - static const uint8_t SYM_TERALT = 0xEF; + static const uint8_t SYM_TERALT = 0x7F; static const uint8_t SYM_FENCE_ENABLED = 0xF5; static const uint8_t SYM_FENCE_DISABLED = 0xF6; - static const uint8_t SYM_RNGFD = 0x72; + static const uint8_t SYM_RNGFD = 0x7F; static const uint8_t SYM_LQ = 0xF8; static constexpr uint8_t symbols[AP_OSD_NUM_SYMBOLS] { diff --git a/libraries/AP_OSD/AP_OSD_Screen.cpp b/libraries/AP_OSD/AP_OSD_Screen.cpp index 2fe5ac5363..fcfc198528 100644 --- a/libraries/AP_OSD/AP_OSD_Screen.cpp +++ b/libraries/AP_OSD/AP_OSD_Screen.cpp @@ -2202,11 +2202,22 @@ void AP_OSD_Screen::draw_speed(uint8_t x, uint8_t y, bool available, float magni backend->write(x+spaces, y, blink, fmt, magnitude_scaled, u_icon(SPEED)); } +char AP_OSD_Screen::get_arrow_font_index(int32_t angle_cd) +{ + uint32_t interval = 36000 / SYMBOL(SYM_ARROW_COUNT); + angle_cd = wrap_360_cd(angle_cd); + // if using BF font table must translate arrows + if (check_option(AP_OSD::OPTION_BF_ARROWS)) { + angle_cd = angle_cd > 18000? 54000 - angle_cd : 18000- angle_cd; + } + return SYMBOL(SYM_ARROW_START) + ((angle_cd + interval / 2) / interval) % SYMBOL(SYM_ARROW_COUNT); +} + // draw a arrow at the given angle, and print the given magnitude void AP_OSD_Screen::draw_speed_with_arrow(uint8_t x, uint8_t y, float angle_rad, float magnitude, bool blink) { - static const int32_t arrow_interval = 36000 / SYMBOL(SYM_ARROW_COUNT); - char arrow = SYMBOL(SYM_ARROW_START) + ((int32_t(angle_rad*DEGX100) + arrow_interval / 2) / arrow_interval) % SYMBOL(SYM_ARROW_COUNT); + int32_t angle_cd = angle_rad * DEGX100; + char arrow = get_arrow_font_index(angle_cd); backend->write(x, y, false, "%c", arrow); draw_speed(x+1, y, true, magnitude, blink); } @@ -2365,13 +2376,12 @@ void AP_OSD_Screen::draw_home(uint8_t x, uint8_t y) if (home_is_set) { // const Location &home_loc = ahrs.get_home(); float distance = home_loc.get_distance(loc); - int32_t angle = wrap_360_cd(loc.get_bearing_to(home_loc) - yaw_sensor); - int32_t interval = 36000 / SYMBOL(SYM_ARROW_COUNT); + int32_t angle_cd = loc.get_bearing_to(home_loc) - yaw_sensor; if (distance < 2.0f) { //avoid fast rotating arrow at small distances - angle = 0; + angle_cd = 0; } - char arrow = SYMBOL(SYM_ARROW_START) + ((angle + interval / 2) / interval) % SYMBOL(SYM_ARROW_COUNT); + char arrow = get_arrow_font_index(angle_cd); backend->write(x, y, false, "%c%c", SYMBOL(SYM_HOME), arrow); draw_distance(x+2, y, distance, true); } else { @@ -2489,12 +2499,16 @@ void AP_OSD_Screen::draw_sidebars(uint8_t x, uint8_t y) // render the altitude ladder // similar formula to above, but accounts for negative altitudes int alt_symbol_index = fmodf(fmodf(scaled_alt, alt_interval) + alt_interval, alt_interval) / alt_interval * total_sectors; + uint8_t sidebar_width = 16; + if(check_option(AP_OSD::OPTION_WIDE_SIDEBAR)){ + sidebar_width=30; + } for (int i = 0; i < 7; i++){ if (i == 3) { // the middle section of the ladder with the currrent altitude - backend->write(x+16, y+i, false, "%c%d%c", SYMBOL(SYM_SIDEBAR_L_ARROW), (int) scaled_alt, u_icon(ALTITUDE)); + backend->write(x+sidebar_width, y+i, false, "%c%d%c", SYMBOL(SYM_SIDEBAR_L_ARROW), (int) scaled_alt, u_icon(ALTITUDE)); } else { - backend->write(x+16, y+i, false, "%c", SYMBOL(sidebar_sectors[alt_symbol_index])); + backend->write(x+sidebar_width, y+i, false, "%c", SYMBOL(sidebar_sectors[alt_symbol_index])); } alt_symbol_index = (alt_symbol_index + 12) % 18; } @@ -2933,13 +2947,13 @@ void AP_OSD_Screen::draw_waypoint(uint8_t x, uint8_t y) WITH_SEMAPHORE(ahrs.get_semaphore()); yaw_sensor = ahrs.yaw_sensor; } - int32_t angle = wrap_360_cd(osd->nav_info.wp_bearing - yaw_sensor); - int32_t interval = 36000 / SYMBOL(SYM_ARROW_COUNT); + + int32_t angle_cd = osd->nav_info.wp_bearing - yaw_sensor; if (osd->nav_info.wp_distance < 2.0f) { //avoid fast rotating arrow at small distances - angle = 0; + angle_cd = 0; } - char arrow = SYMBOL(SYM_ARROW_START) + ((angle + interval / 2) / interval) % SYMBOL(SYM_ARROW_COUNT); + char arrow = get_arrow_font_index(angle_cd); backend->write(x,y, false, "%c%2u%c",SYMBOL(SYM_WPNO), osd->nav_info.wp_number, arrow); draw_distance(x+4, y, osd->nav_info.wp_distance, true); }