Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
69ab736cf8 | ||
|
|
3e758dcebb | ||
|
|
b249811e28 | ||
|
|
7f216f35ab | ||
|
|
029471ecca | ||
|
|
4cc6c36c37 | ||
|
|
0cd5b0ac47 | ||
|
|
939c83127e | ||
|
|
3768aa7e1f | ||
|
|
7a85c3917f |
+313
@@ -12,6 +12,7 @@ menu.exceptions=C++ Exceptions
|
||||
menu.dbgport=Debug Port
|
||||
menu.dbglvl=Debug Level
|
||||
menu.boot2=Boot Stage 2
|
||||
menu.wificountry=WiFi Region
|
||||
menu.usbstack=USB Stack
|
||||
menu.ipstack=IP Stack
|
||||
|
||||
@@ -650,6 +651,110 @@ rpipicow.menu.usbstack.picosdk=Pico SDK
|
||||
rpipicow.menu.usbstack.picosdk.build.usbstack_flags=
|
||||
rpipicow.menu.usbstack.tinyusb=Adafruit TinyUSB
|
||||
rpipicow.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
|
||||
rpipicow.menu.wificountry.worldwide=Worldwide
|
||||
rpipicow.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
|
||||
rpipicow.menu.wificountry.australia=Australia
|
||||
rpipicow.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA
|
||||
rpipicow.menu.wificountry.austria=Austria
|
||||
rpipicow.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA
|
||||
rpipicow.menu.wificountry.belgium=Belgium
|
||||
rpipicow.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM
|
||||
rpipicow.menu.wificountry.brazil=Brazil
|
||||
rpipicow.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL
|
||||
rpipicow.menu.wificountry.canada=Canada
|
||||
rpipicow.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA
|
||||
rpipicow.menu.wificountry.chile=Chile
|
||||
rpipicow.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE
|
||||
rpipicow.menu.wificountry.china=China
|
||||
rpipicow.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA
|
||||
rpipicow.menu.wificountry.colombia=Colombia
|
||||
rpipicow.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA
|
||||
rpipicow.menu.wificountry.czech_republic=Czech Republic
|
||||
rpipicow.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC
|
||||
rpipicow.menu.wificountry.denmark=Denmark
|
||||
rpipicow.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK
|
||||
rpipicow.menu.wificountry.estonia=Estonia
|
||||
rpipicow.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA
|
||||
rpipicow.menu.wificountry.finland=Finland
|
||||
rpipicow.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND
|
||||
rpipicow.menu.wificountry.france=France
|
||||
rpipicow.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE
|
||||
rpipicow.menu.wificountry.germany=Germany
|
||||
rpipicow.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY
|
||||
rpipicow.menu.wificountry.greece=Greece
|
||||
rpipicow.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE
|
||||
rpipicow.menu.wificountry.hong_kong=Hong Kong
|
||||
rpipicow.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG
|
||||
rpipicow.menu.wificountry.hungary=Hungary
|
||||
rpipicow.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY
|
||||
rpipicow.menu.wificountry.iceland=Iceland
|
||||
rpipicow.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND
|
||||
rpipicow.menu.wificountry.india=India
|
||||
rpipicow.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA
|
||||
rpipicow.menu.wificountry.israel=Israel
|
||||
rpipicow.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL
|
||||
rpipicow.menu.wificountry.italy=Italy
|
||||
rpipicow.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY
|
||||
rpipicow.menu.wificountry.japan=Japan
|
||||
rpipicow.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN
|
||||
rpipicow.menu.wificountry.kenya=Kenya
|
||||
rpipicow.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA
|
||||
rpipicow.menu.wificountry.latvia=Latvia
|
||||
rpipicow.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA
|
||||
rpipicow.menu.wificountry.liechtenstein=Liechtenstein
|
||||
rpipicow.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN
|
||||
rpipicow.menu.wificountry.lithuania=Lithuania
|
||||
rpipicow.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA
|
||||
rpipicow.menu.wificountry.luxembourg=Luxembourg
|
||||
rpipicow.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG
|
||||
rpipicow.menu.wificountry.malaysia=Malaysia
|
||||
rpipicow.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA
|
||||
rpipicow.menu.wificountry.malta=Malta
|
||||
rpipicow.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA
|
||||
rpipicow.menu.wificountry.mexico=Mexico
|
||||
rpipicow.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO
|
||||
rpipicow.menu.wificountry.netherlands=Netherlands
|
||||
rpipicow.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS
|
||||
rpipicow.menu.wificountry.new_zealand=New Zealand
|
||||
rpipicow.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND
|
||||
rpipicow.menu.wificountry.nigeria=Nigeria
|
||||
rpipicow.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA
|
||||
rpipicow.menu.wificountry.norway=Norway
|
||||
rpipicow.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY
|
||||
rpipicow.menu.wificountry.peru=Peru
|
||||
rpipicow.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU
|
||||
rpipicow.menu.wificountry.philippines=Philippines
|
||||
rpipicow.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES
|
||||
rpipicow.menu.wificountry.poland=Poland
|
||||
rpipicow.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND
|
||||
rpipicow.menu.wificountry.portugal=Portugal
|
||||
rpipicow.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL
|
||||
rpipicow.menu.wificountry.singapore=Singapore
|
||||
rpipicow.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE
|
||||
rpipicow.menu.wificountry.slovakia=Slovakia
|
||||
rpipicow.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA
|
||||
rpipicow.menu.wificountry.slovenia=Slovenia
|
||||
rpipicow.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA
|
||||
rpipicow.menu.wificountry.south_africa=South Africa
|
||||
rpipicow.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA
|
||||
rpipicow.menu.wificountry.south_korea=South Korea
|
||||
rpipicow.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA
|
||||
rpipicow.menu.wificountry.spain=Spain
|
||||
rpipicow.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN
|
||||
rpipicow.menu.wificountry.sweden=Sweden
|
||||
rpipicow.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN
|
||||
rpipicow.menu.wificountry.switzerland=Switzerland
|
||||
rpipicow.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND
|
||||
rpipicow.menu.wificountry.taiwan=Taiwan
|
||||
rpipicow.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN
|
||||
rpipicow.menu.wificountry.thailand=Thailand
|
||||
rpipicow.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND
|
||||
rpipicow.menu.wificountry.turkey=Turkey
|
||||
rpipicow.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY
|
||||
rpipicow.menu.wificountry.uk=UK
|
||||
rpipicow.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK
|
||||
rpipicow.menu.wificountry.usa=USA
|
||||
rpipicow.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA
|
||||
rpipicow.menu.ipstack.ipv4only=IPv4 Only
|
||||
rpipicow.menu.ipstack.ipv4only.build.libpico=libpico.a
|
||||
rpipicow.menu.ipstack.ipv4only.build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
|
||||
@@ -811,6 +916,110 @@ rpipicowpicoprobe.menu.usbstack.picosdk=Pico SDK
|
||||
rpipicowpicoprobe.menu.usbstack.picosdk.build.usbstack_flags=
|
||||
rpipicowpicoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB
|
||||
rpipicowpicoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
|
||||
rpipicowpicoprobe.menu.wificountry.worldwide=Worldwide
|
||||
rpipicowpicoprobe.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
|
||||
rpipicowpicoprobe.menu.wificountry.australia=Australia
|
||||
rpipicowpicoprobe.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA
|
||||
rpipicowpicoprobe.menu.wificountry.austria=Austria
|
||||
rpipicowpicoprobe.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA
|
||||
rpipicowpicoprobe.menu.wificountry.belgium=Belgium
|
||||
rpipicowpicoprobe.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM
|
||||
rpipicowpicoprobe.menu.wificountry.brazil=Brazil
|
||||
rpipicowpicoprobe.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL
|
||||
rpipicowpicoprobe.menu.wificountry.canada=Canada
|
||||
rpipicowpicoprobe.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA
|
||||
rpipicowpicoprobe.menu.wificountry.chile=Chile
|
||||
rpipicowpicoprobe.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE
|
||||
rpipicowpicoprobe.menu.wificountry.china=China
|
||||
rpipicowpicoprobe.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA
|
||||
rpipicowpicoprobe.menu.wificountry.colombia=Colombia
|
||||
rpipicowpicoprobe.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA
|
||||
rpipicowpicoprobe.menu.wificountry.czech_republic=Czech Republic
|
||||
rpipicowpicoprobe.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC
|
||||
rpipicowpicoprobe.menu.wificountry.denmark=Denmark
|
||||
rpipicowpicoprobe.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK
|
||||
rpipicowpicoprobe.menu.wificountry.estonia=Estonia
|
||||
rpipicowpicoprobe.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA
|
||||
rpipicowpicoprobe.menu.wificountry.finland=Finland
|
||||
rpipicowpicoprobe.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND
|
||||
rpipicowpicoprobe.menu.wificountry.france=France
|
||||
rpipicowpicoprobe.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE
|
||||
rpipicowpicoprobe.menu.wificountry.germany=Germany
|
||||
rpipicowpicoprobe.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY
|
||||
rpipicowpicoprobe.menu.wificountry.greece=Greece
|
||||
rpipicowpicoprobe.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE
|
||||
rpipicowpicoprobe.menu.wificountry.hong_kong=Hong Kong
|
||||
rpipicowpicoprobe.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG
|
||||
rpipicowpicoprobe.menu.wificountry.hungary=Hungary
|
||||
rpipicowpicoprobe.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY
|
||||
rpipicowpicoprobe.menu.wificountry.iceland=Iceland
|
||||
rpipicowpicoprobe.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND
|
||||
rpipicowpicoprobe.menu.wificountry.india=India
|
||||
rpipicowpicoprobe.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA
|
||||
rpipicowpicoprobe.menu.wificountry.israel=Israel
|
||||
rpipicowpicoprobe.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL
|
||||
rpipicowpicoprobe.menu.wificountry.italy=Italy
|
||||
rpipicowpicoprobe.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY
|
||||
rpipicowpicoprobe.menu.wificountry.japan=Japan
|
||||
rpipicowpicoprobe.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN
|
||||
rpipicowpicoprobe.menu.wificountry.kenya=Kenya
|
||||
rpipicowpicoprobe.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA
|
||||
rpipicowpicoprobe.menu.wificountry.latvia=Latvia
|
||||
rpipicowpicoprobe.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA
|
||||
rpipicowpicoprobe.menu.wificountry.liechtenstein=Liechtenstein
|
||||
rpipicowpicoprobe.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN
|
||||
rpipicowpicoprobe.menu.wificountry.lithuania=Lithuania
|
||||
rpipicowpicoprobe.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA
|
||||
rpipicowpicoprobe.menu.wificountry.luxembourg=Luxembourg
|
||||
rpipicowpicoprobe.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG
|
||||
rpipicowpicoprobe.menu.wificountry.malaysia=Malaysia
|
||||
rpipicowpicoprobe.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA
|
||||
rpipicowpicoprobe.menu.wificountry.malta=Malta
|
||||
rpipicowpicoprobe.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA
|
||||
rpipicowpicoprobe.menu.wificountry.mexico=Mexico
|
||||
rpipicowpicoprobe.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO
|
||||
rpipicowpicoprobe.menu.wificountry.netherlands=Netherlands
|
||||
rpipicowpicoprobe.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS
|
||||
rpipicowpicoprobe.menu.wificountry.new_zealand=New Zealand
|
||||
rpipicowpicoprobe.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND
|
||||
rpipicowpicoprobe.menu.wificountry.nigeria=Nigeria
|
||||
rpipicowpicoprobe.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA
|
||||
rpipicowpicoprobe.menu.wificountry.norway=Norway
|
||||
rpipicowpicoprobe.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY
|
||||
rpipicowpicoprobe.menu.wificountry.peru=Peru
|
||||
rpipicowpicoprobe.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU
|
||||
rpipicowpicoprobe.menu.wificountry.philippines=Philippines
|
||||
rpipicowpicoprobe.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES
|
||||
rpipicowpicoprobe.menu.wificountry.poland=Poland
|
||||
rpipicowpicoprobe.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND
|
||||
rpipicowpicoprobe.menu.wificountry.portugal=Portugal
|
||||
rpipicowpicoprobe.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL
|
||||
rpipicowpicoprobe.menu.wificountry.singapore=Singapore
|
||||
rpipicowpicoprobe.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE
|
||||
rpipicowpicoprobe.menu.wificountry.slovakia=Slovakia
|
||||
rpipicowpicoprobe.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA
|
||||
rpipicowpicoprobe.menu.wificountry.slovenia=Slovenia
|
||||
rpipicowpicoprobe.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA
|
||||
rpipicowpicoprobe.menu.wificountry.south_africa=South Africa
|
||||
rpipicowpicoprobe.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA
|
||||
rpipicowpicoprobe.menu.wificountry.south_korea=South Korea
|
||||
rpipicowpicoprobe.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA
|
||||
rpipicowpicoprobe.menu.wificountry.spain=Spain
|
||||
rpipicowpicoprobe.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN
|
||||
rpipicowpicoprobe.menu.wificountry.sweden=Sweden
|
||||
rpipicowpicoprobe.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN
|
||||
rpipicowpicoprobe.menu.wificountry.switzerland=Switzerland
|
||||
rpipicowpicoprobe.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND
|
||||
rpipicowpicoprobe.menu.wificountry.taiwan=Taiwan
|
||||
rpipicowpicoprobe.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN
|
||||
rpipicowpicoprobe.menu.wificountry.thailand=Thailand
|
||||
rpipicowpicoprobe.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND
|
||||
rpipicowpicoprobe.menu.wificountry.turkey=Turkey
|
||||
rpipicowpicoprobe.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY
|
||||
rpipicowpicoprobe.menu.wificountry.uk=UK
|
||||
rpipicowpicoprobe.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK
|
||||
rpipicowpicoprobe.menu.wificountry.usa=USA
|
||||
rpipicowpicoprobe.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA
|
||||
rpipicowpicoprobe.menu.ipstack.ipv4only=IPv4 Only
|
||||
rpipicowpicoprobe.menu.ipstack.ipv4only.build.libpico=libpico.a
|
||||
rpipicowpicoprobe.menu.ipstack.ipv4only.build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
|
||||
@@ -970,6 +1179,110 @@ rpipicowpicodebug.menu.dbglvl.NDEBUG=NDEBUG
|
||||
rpipicowpicodebug.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
|
||||
rpipicowpicodebug.menu.usbstack.nousb=No USB
|
||||
rpipicowpicodebug.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico"
|
||||
rpipicowpicodebug.menu.wificountry.worldwide=Worldwide
|
||||
rpipicowpicodebug.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
|
||||
rpipicowpicodebug.menu.wificountry.australia=Australia
|
||||
rpipicowpicodebug.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA
|
||||
rpipicowpicodebug.menu.wificountry.austria=Austria
|
||||
rpipicowpicodebug.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA
|
||||
rpipicowpicodebug.menu.wificountry.belgium=Belgium
|
||||
rpipicowpicodebug.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM
|
||||
rpipicowpicodebug.menu.wificountry.brazil=Brazil
|
||||
rpipicowpicodebug.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL
|
||||
rpipicowpicodebug.menu.wificountry.canada=Canada
|
||||
rpipicowpicodebug.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA
|
||||
rpipicowpicodebug.menu.wificountry.chile=Chile
|
||||
rpipicowpicodebug.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE
|
||||
rpipicowpicodebug.menu.wificountry.china=China
|
||||
rpipicowpicodebug.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA
|
||||
rpipicowpicodebug.menu.wificountry.colombia=Colombia
|
||||
rpipicowpicodebug.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA
|
||||
rpipicowpicodebug.menu.wificountry.czech_republic=Czech Republic
|
||||
rpipicowpicodebug.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC
|
||||
rpipicowpicodebug.menu.wificountry.denmark=Denmark
|
||||
rpipicowpicodebug.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK
|
||||
rpipicowpicodebug.menu.wificountry.estonia=Estonia
|
||||
rpipicowpicodebug.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA
|
||||
rpipicowpicodebug.menu.wificountry.finland=Finland
|
||||
rpipicowpicodebug.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND
|
||||
rpipicowpicodebug.menu.wificountry.france=France
|
||||
rpipicowpicodebug.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE
|
||||
rpipicowpicodebug.menu.wificountry.germany=Germany
|
||||
rpipicowpicodebug.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY
|
||||
rpipicowpicodebug.menu.wificountry.greece=Greece
|
||||
rpipicowpicodebug.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE
|
||||
rpipicowpicodebug.menu.wificountry.hong_kong=Hong Kong
|
||||
rpipicowpicodebug.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG
|
||||
rpipicowpicodebug.menu.wificountry.hungary=Hungary
|
||||
rpipicowpicodebug.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY
|
||||
rpipicowpicodebug.menu.wificountry.iceland=Iceland
|
||||
rpipicowpicodebug.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND
|
||||
rpipicowpicodebug.menu.wificountry.india=India
|
||||
rpipicowpicodebug.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA
|
||||
rpipicowpicodebug.menu.wificountry.israel=Israel
|
||||
rpipicowpicodebug.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL
|
||||
rpipicowpicodebug.menu.wificountry.italy=Italy
|
||||
rpipicowpicodebug.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY
|
||||
rpipicowpicodebug.menu.wificountry.japan=Japan
|
||||
rpipicowpicodebug.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN
|
||||
rpipicowpicodebug.menu.wificountry.kenya=Kenya
|
||||
rpipicowpicodebug.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA
|
||||
rpipicowpicodebug.menu.wificountry.latvia=Latvia
|
||||
rpipicowpicodebug.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA
|
||||
rpipicowpicodebug.menu.wificountry.liechtenstein=Liechtenstein
|
||||
rpipicowpicodebug.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN
|
||||
rpipicowpicodebug.menu.wificountry.lithuania=Lithuania
|
||||
rpipicowpicodebug.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA
|
||||
rpipicowpicodebug.menu.wificountry.luxembourg=Luxembourg
|
||||
rpipicowpicodebug.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG
|
||||
rpipicowpicodebug.menu.wificountry.malaysia=Malaysia
|
||||
rpipicowpicodebug.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA
|
||||
rpipicowpicodebug.menu.wificountry.malta=Malta
|
||||
rpipicowpicodebug.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA
|
||||
rpipicowpicodebug.menu.wificountry.mexico=Mexico
|
||||
rpipicowpicodebug.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO
|
||||
rpipicowpicodebug.menu.wificountry.netherlands=Netherlands
|
||||
rpipicowpicodebug.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS
|
||||
rpipicowpicodebug.menu.wificountry.new_zealand=New Zealand
|
||||
rpipicowpicodebug.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND
|
||||
rpipicowpicodebug.menu.wificountry.nigeria=Nigeria
|
||||
rpipicowpicodebug.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA
|
||||
rpipicowpicodebug.menu.wificountry.norway=Norway
|
||||
rpipicowpicodebug.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY
|
||||
rpipicowpicodebug.menu.wificountry.peru=Peru
|
||||
rpipicowpicodebug.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU
|
||||
rpipicowpicodebug.menu.wificountry.philippines=Philippines
|
||||
rpipicowpicodebug.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES
|
||||
rpipicowpicodebug.menu.wificountry.poland=Poland
|
||||
rpipicowpicodebug.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND
|
||||
rpipicowpicodebug.menu.wificountry.portugal=Portugal
|
||||
rpipicowpicodebug.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL
|
||||
rpipicowpicodebug.menu.wificountry.singapore=Singapore
|
||||
rpipicowpicodebug.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE
|
||||
rpipicowpicodebug.menu.wificountry.slovakia=Slovakia
|
||||
rpipicowpicodebug.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA
|
||||
rpipicowpicodebug.menu.wificountry.slovenia=Slovenia
|
||||
rpipicowpicodebug.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA
|
||||
rpipicowpicodebug.menu.wificountry.south_africa=South Africa
|
||||
rpipicowpicodebug.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA
|
||||
rpipicowpicodebug.menu.wificountry.south_korea=South Korea
|
||||
rpipicowpicodebug.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA
|
||||
rpipicowpicodebug.menu.wificountry.spain=Spain
|
||||
rpipicowpicodebug.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN
|
||||
rpipicowpicodebug.menu.wificountry.sweden=Sweden
|
||||
rpipicowpicodebug.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN
|
||||
rpipicowpicodebug.menu.wificountry.switzerland=Switzerland
|
||||
rpipicowpicodebug.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND
|
||||
rpipicowpicodebug.menu.wificountry.taiwan=Taiwan
|
||||
rpipicowpicodebug.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN
|
||||
rpipicowpicodebug.menu.wificountry.thailand=Thailand
|
||||
rpipicowpicodebug.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND
|
||||
rpipicowpicodebug.menu.wificountry.turkey=Turkey
|
||||
rpipicowpicodebug.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY
|
||||
rpipicowpicodebug.menu.wificountry.uk=UK
|
||||
rpipicowpicodebug.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK
|
||||
rpipicowpicodebug.menu.wificountry.usa=USA
|
||||
rpipicowpicodebug.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA
|
||||
rpipicowpicodebug.menu.ipstack.ipv4only=IPv4 Only
|
||||
rpipicowpicodebug.menu.ipstack.ipv4only.build.libpico=libpico.a
|
||||
rpipicowpicodebug.menu.ipstack.ipv4only.build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
CoreMutex for the Raspberry Pi Pico RP2040
|
||||
|
||||
Implements a deadlock-safe multicore mutex for sharing things like the
|
||||
USB or UARTs.
|
||||
|
||||
Copyright (c) 2021 Earle F. Philhower, III <earlephilhower@yahoo.com>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "CoreMutex.h"
|
||||
|
||||
CoreMutex::CoreMutex(mutex_t *mutex, bool debugEnable) {
|
||||
_mutex = mutex;
|
||||
_acquired = false;
|
||||
if (__isFreeRTOS) {
|
||||
auto m = __get_freertos_mutex_for_ptr(mutex);
|
||||
__freertos_mutex_take(m);
|
||||
} else {
|
||||
uint32_t owner;
|
||||
if (!mutex_try_enter(_mutex, &owner)) {
|
||||
if (owner == get_core_num()) { // Deadlock!
|
||||
if (debugEnable) {
|
||||
DEBUGCORE("CoreMutex - Deadlock detected!\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
mutex_enter_blocking(_mutex);
|
||||
}
|
||||
}
|
||||
_acquired = true;
|
||||
}
|
||||
|
||||
CoreMutex::~CoreMutex() {
|
||||
if (_acquired) {
|
||||
if (__isFreeRTOS) {
|
||||
auto m = __get_freertos_mutex_for_ptr(_mutex);
|
||||
__freertos_mutex_give(m);
|
||||
} else {
|
||||
mutex_exit(_mutex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28,37 +28,8 @@
|
||||
|
||||
class CoreMutex {
|
||||
public:
|
||||
CoreMutex(mutex_t *mutex, bool debugEnable = true) {
|
||||
_mutex = mutex;
|
||||
_acquired = false;
|
||||
if (__isFreeRTOS) {
|
||||
auto m = __get_freertos_mutex_for_ptr(mutex);
|
||||
__freertos_mutex_take(m);
|
||||
} else {
|
||||
uint32_t owner;
|
||||
if (!mutex_try_enter(_mutex, &owner)) {
|
||||
if (owner == get_core_num()) { // Deadlock!
|
||||
if (debugEnable) {
|
||||
DEBUGCORE("CoreMutex - Deadlock detected!\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
mutex_enter_blocking(_mutex);
|
||||
}
|
||||
}
|
||||
_acquired = true;
|
||||
}
|
||||
|
||||
~CoreMutex() {
|
||||
if (_acquired) {
|
||||
if (__isFreeRTOS) {
|
||||
auto m = __get_freertos_mutex_for_ptr(_mutex);
|
||||
__freertos_mutex_give(m);
|
||||
} else {
|
||||
mutex_exit(_mutex);
|
||||
}
|
||||
}
|
||||
}
|
||||
CoreMutex(mutex_t *mutex, bool debugEnable = true);
|
||||
~CoreMutex();
|
||||
|
||||
operator bool() {
|
||||
return _acquired;
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
RP2040 utility class
|
||||
|
||||
Copyright (c) 2021 Earle F. Philhower, III <earlephilhower@yahoo.com>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <hardware/structs/psm.h>
|
||||
|
||||
extern "C" void boot_double_tap_check();
|
||||
|
||||
// The following check will never actually execute, but it will cause the boot reset
|
||||
// checker to be linked in as part of the constructors.
|
||||
|
||||
void RP2040::enableDoubleResetBootloader() {
|
||||
if (psm_hw->done == 0) {
|
||||
boot_double_tap_check();
|
||||
}
|
||||
}
|
||||
@@ -314,6 +314,8 @@ public:
|
||||
reboot();
|
||||
}
|
||||
|
||||
static void enableDoubleResetBootloader();
|
||||
|
||||
void wdt_begin(uint32_t delay_ms) {
|
||||
watchdog_enable(delay_ms, 1);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#define ARDUINO_PICO_MAJOR 2
|
||||
#define ARDUINO_PICO_MINOR 5
|
||||
#define ARDUINO_PICO_REVISION 4
|
||||
#define ARDUINO_PICO_VERSION_STR "2.5.4"
|
||||
#define ARDUINO_PICO_MINOR 6
|
||||
#define ARDUINO_PICO_REVISION 0
|
||||
#define ARDUINO_PICO_VERSION_STR "2.6.0"
|
||||
|
||||
@@ -69,7 +69,7 @@ bool SerialUART::setRTS(pin_size_t pin) {
|
||||
constexpr uint32_t valid[2] = { __bitset({3, 15, 19}) /* UART0 */,
|
||||
__bitset({7, 11, 23, 27}) /* UART1 */
|
||||
};
|
||||
if ((!_running) && ((1 << pin) & valid[uart_get_index(_uart)])) {
|
||||
if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1 << pin) & valid[uart_get_index(_uart)]))) {
|
||||
_rts = pin;
|
||||
return true;
|
||||
}
|
||||
@@ -86,7 +86,7 @@ bool SerialUART::setCTS(pin_size_t pin) {
|
||||
constexpr uint32_t valid[2] = { __bitset({2, 14, 18}) /* UART0 */,
|
||||
__bitset({6, 10, 22, 26}) /* UART1 */
|
||||
};
|
||||
if ((!_running) && ((1 << pin) & valid[uart_get_index(_uart)])) {
|
||||
if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1 << pin) & valid[uart_get_index(_uart)]))) {
|
||||
_cts = pin;
|
||||
return true;
|
||||
}
|
||||
|
||||
+13
-3
@@ -28,6 +28,7 @@ typedef struct {
|
||||
pin_size_t pin;
|
||||
PIO pio;
|
||||
int sm;
|
||||
int off;
|
||||
alarm_id_t alarm;
|
||||
} Tone;
|
||||
|
||||
@@ -38,10 +39,18 @@ auto_init_mutex(_toneMutex);
|
||||
static PIOProgram _tone2Pgm(&tone2_program);
|
||||
static std::map<pin_size_t, Tone *> _toneMap;
|
||||
|
||||
static inline bool pio_sm_get_enabled(PIO pio, uint sm) {
|
||||
check_pio_param(pio);
|
||||
check_sm_param(sm);
|
||||
return (pio->ctrl & ~(1u << sm)) & (1 << sm);
|
||||
}
|
||||
|
||||
int64_t _stopTonePIO(alarm_id_t id, void *user_data) {
|
||||
(void) id;
|
||||
Tone *tone = (Tone *)user_data;
|
||||
tone->alarm = 0;
|
||||
digitalWrite(tone->pin, LOW);
|
||||
pinMode(tone->pin, OUTPUT);
|
||||
pio_sm_set_enabled(tone->pio, tone->sm, false);
|
||||
return 0;
|
||||
}
|
||||
@@ -72,14 +81,12 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) {
|
||||
newTone = new Tone();
|
||||
newTone->pin = pin;
|
||||
pinMode(pin, OUTPUT);
|
||||
int off;
|
||||
if (!_tone2Pgm.prepare(&newTone->pio, &newTone->sm, &off)) {
|
||||
if (!_tone2Pgm.prepare(&newTone->pio, &newTone->sm, &newTone->off)) {
|
||||
DEBUGCORE("ERROR: tone unable to start, out of PIO resources\n");
|
||||
// ERROR, no free slots
|
||||
delete newTone;
|
||||
return;
|
||||
}
|
||||
tone2_program_init(newTone->pio, newTone->sm, off, pin);
|
||||
newTone->alarm = 0;
|
||||
} else {
|
||||
newTone = entry->second;
|
||||
@@ -88,6 +95,9 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) {
|
||||
newTone->alarm = 0;
|
||||
}
|
||||
}
|
||||
if (!pio_sm_get_enabled(newTone->pio, newTone->sm)) {
|
||||
tone2_program_init(newTone->pio, newTone->sm, newTone->off, pin);
|
||||
}
|
||||
pio_sm_clear_fifos(newTone->pio, newTone->sm); // Remove any old updates that haven't yet taken effect
|
||||
pio_sm_put_blocking(newTone->pio, newTone->sm, RP2040::usToPIOCycles(us));
|
||||
pio_sm_set_enabled(newTone->pio, newTone->sm, true);
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
|
||||
|
||||
Hacked by EFP3 to allow disabling unless requested
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include "pico.h"
|
||||
#include "pico/time.h"
|
||||
#include "pico/bootrom.h"
|
||||
#include "pico/binary_info.h"
|
||||
|
||||
// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS, Window of opportunity for a second press of a reset button to enter BOOTSEL mode (milliseconds), type=int, default=200, group=pico_bootsel_via_double_reset
|
||||
#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS
|
||||
#define PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS 350
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED, Optionally define a pin to use as bootloader activity LED when BOOTSEL mode is entered via reset double tap, type=int, min=0, max=29, group=pico_bootsel_via_double_reset
|
||||
|
||||
// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK, Optionally disable either the mass storage interface (bit 0) or the PICOBOOT interface (bit 1) when entering BOOTSEL mode via double reset, type=int, min=0, max=3, default=0, group=pico_bootsel_via_double_reset
|
||||
#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK
|
||||
#define PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK 0u
|
||||
#endif
|
||||
|
||||
/** \defgroup pico_bootsel_via_double_reset pico_bootsel_via_double_reset
|
||||
|
||||
When the 'pico_bootsel_via_double_reset' library is linked, a function is
|
||||
injected before main() which will detect when the system has been reset
|
||||
twice in quick succession, and enter the USB ROM bootloader (BOOTSEL mode)
|
||||
when this happens. This allows a double tap of a reset button on a
|
||||
development board to be used to enter the ROM bootloader, provided this
|
||||
library is always linked.
|
||||
*/
|
||||
|
||||
#if !PICO_NO_BI_BOOTSEL_VIA_DOUBLE_RESET
|
||||
bi_decl(bi_program_feature("double reset -> BOOTSEL"));
|
||||
#endif
|
||||
|
||||
// Doesn't make any sense for a RAM only binary
|
||||
#if !PICO_NO_FLASH
|
||||
static const uint32_t magic_token[] = {
|
||||
0xf01681de, 0xbd729b29, 0xd359be7a,
|
||||
};
|
||||
|
||||
// Place our marker on the 2nd core's stack...which will not have been touched when this code is executing
|
||||
static uint32_t *magic_location = (uint32_t*)0x20040000;
|
||||
//static uint32_t __uninitialized_ram(magic_location)[count_of(magic_token)];
|
||||
|
||||
/* Check for double reset and enter BOOTSEL mode if detected
|
||||
|
||||
This function is registered to run automatically before main(). The
|
||||
algorithm is:
|
||||
|
||||
1. Check for magic token in memory; enter BOOTSEL mode if found.
|
||||
2. Initialise that memory with that magic token.
|
||||
3. Do nothing for a short while (few hundred ms).
|
||||
4. Clear the magic token.
|
||||
5. Continue with normal boot.
|
||||
|
||||
Resetting the device twice quickly will interrupt step 3, leaving the token
|
||||
in place so that the second boot will go to the bootloader.
|
||||
*/
|
||||
|
||||
/*static*/ void __attribute__((constructor)) boot_double_tap_check(void) {
|
||||
for (uint i = 0; i < count_of(magic_token); i++) {
|
||||
if (magic_location[i] != magic_token[i]) {
|
||||
// Arm, wait, then disarm and continue booting
|
||||
for (i = 0; i < count_of(magic_token); i++) {
|
||||
magic_location[i] = magic_token[i];
|
||||
}
|
||||
busy_wait_us(PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS * 1000);
|
||||
magic_location[0] = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Detected a double reset, so enter USB bootloader
|
||||
magic_location[0] = 0;
|
||||
#ifdef PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED
|
||||
const uint32_t led_mask = 1u << PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED;
|
||||
#else
|
||||
const uint32_t led_mask = 0u;
|
||||
#endif
|
||||
reset_usb_boot(
|
||||
led_mask,
|
||||
PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK
|
||||
);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -81,6 +81,15 @@ void _gpioInterruptDispatcher(uint gpio, uint32_t events) {
|
||||
}
|
||||
}
|
||||
|
||||
// To be called when appropriately protected w/IRQ and mutex protects
|
||||
static void _detachInterruptInternal(pin_size_t pin) {
|
||||
auto irq = _map.find(pin);
|
||||
if (irq != _map.end()) {
|
||||
gpio_set_irq_enabled(pin, 0x0f /* all */, false);
|
||||
_map.erase(pin);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void attachInterrupt(pin_size_t pin, voidFuncPtr callback, PinStatus mode) {
|
||||
CoreMutex m(&_irqMutex);
|
||||
if (!m) {
|
||||
@@ -97,7 +106,7 @@ extern "C" void attachInterrupt(pin_size_t pin, voidFuncPtr callback, PinStatus
|
||||
default: return; // ERROR
|
||||
}
|
||||
noInterrupts();
|
||||
detachInterrupt(pin);
|
||||
_detachInterruptInternal(pin);
|
||||
CBInfo cb(callback);
|
||||
_map.insert({pin, cb});
|
||||
gpio_set_irq_enabled_with_callback(pin, events, true, _gpioInterruptDispatcher);
|
||||
@@ -134,10 +143,6 @@ extern "C" void detachInterrupt(pin_size_t pin) {
|
||||
}
|
||||
|
||||
noInterrupts();
|
||||
auto irq = _map.find(pin);
|
||||
if (irq != _map.end()) {
|
||||
gpio_set_irq_enabled(pin, 0x0f /* all */, false);
|
||||
_map.erase(pin);
|
||||
}
|
||||
_detachInterruptInternal(pin);
|
||||
interrupts();
|
||||
}
|
||||
|
||||
+2
-2
@@ -54,9 +54,9 @@ author = u'Earle F. Philhower, III'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = u'2.5.4'
|
||||
version = u'2.6.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = u'2.5.4'
|
||||
release = u'2.6.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
||||
+4
-4
@@ -27,12 +27,12 @@ WiFiClientSecure documentation for more details.
|
||||
|
||||
// Error checking is left as an exercise for the reader...
|
||||
HTTPClient https;
|
||||
https.setInsecure(); // Use certs, but do not check their authenticity
|
||||
https.setInsecure(); // Use certs, but do not check their authenticity
|
||||
if (https.begin("https://my.secure.server/url")) {
|
||||
if (http.GET() > 0) {
|
||||
String data = http.getString();
|
||||
if (https.GET() > 0) {
|
||||
String data = https.getString();
|
||||
}
|
||||
http.end();
|
||||
https.end();
|
||||
}
|
||||
|
||||
Unlike the ESP8266 and ESP32 ``HTTPClient`` implementations it is not necessary
|
||||
|
||||
+7
-18
@@ -65,25 +65,14 @@ Them hit the upload button and your sketch should upload and run.
|
||||
In some cases the Pico will encounter a hard hang and its USB port will not respond to the auto-reset request. Should this happen, just
|
||||
follow the initial procedure of holding the BOOTSEL button down while plugging in the Pico to enter the ROM bootloader.
|
||||
|
||||
Unable to Upload First Sketch
|
||||
-----------------------------
|
||||
If the Arduino IDE has never seen a serial port from a working device (Pico, AVR, or any other serial port), you
|
||||
may not be able to install using the prior directions because the ``Tools->Port`` menu will be grayed out and
|
||||
empty. In this case, a special workaround identified by @fjansson in `this issue report <https://github.com/earlephilhower/arduino-pico/issues/688>`_ .
|
||||
|
||||
To allow subsequent uploads to automatically work, you will need to manually install a UF2 binary onto the Raspberry Pi Pico one time to
|
||||
allow it to present a Serial port for the Arduino IDE to detect and save.
|
||||
|
||||
Perform the following steps to program a dummy sketch:
|
||||
|
||||
1. Open a new, empty sketch (doesn't work with a read-only example sketch).
|
||||
2. Compile it by pressing the "Verify" checkmark button.
|
||||
3. Select the ``Sketch -> Export Compiled Binary`` menu. Select a location e.g. the desktop. A folder is created there, containing a file ending in .uf2
|
||||
4. Copy this file to the Pico's drive, by drag and drop in the Explorer.
|
||||
|
||||
The Pico restarts and now now has a serial port. Now the Port menu in Arduino is not gray anymore, select the port there.
|
||||
After this, normal uploading from the Arduino editor should work.
|
||||
Uploading the First Sketch
|
||||
--------------------------
|
||||
The first time you upload a sketch to a board, you'll need to use the built-in ROM bootloader to handle the upload and not a serial port.
|
||||
|
||||
1. Hold the BOOTSEL button while plugging in the board.
|
||||
2. Select ``Tools->Port->UF2 Board`` from the menu.
|
||||
3. Upload as normal.
|
||||
4. After the board boots up, select the new serial port from the ``Tools->Port`` menu.
|
||||
|
||||
Windows 7 Driver Notes
|
||||
----------------------
|
||||
|
||||
@@ -70,3 +70,12 @@ int rp2040.getTotalHeap()
|
||||
Returns the total heap that was available to this program at compile time (i.e.
|
||||
the Pico RAM size minus things like the ``.data`` and ``.bss`` sections and other
|
||||
overhead).
|
||||
|
||||
Bootloader
|
||||
----------
|
||||
|
||||
void rp2040.enableDoubleResetBootloader()
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Add a call anywhere in the sketch to ``rp2040.enableDoubleResetBootloader()`` and
|
||||
the core will check for a double-tap on reset, and if found will start the USB
|
||||
bootloader.
|
||||
|
||||
@@ -54,6 +54,8 @@ SerialPIO KEYWORD2
|
||||
setFIFOSize KEYWORD2
|
||||
setPollingMode KEYWORD2
|
||||
|
||||
enableDoubleResetBootloader KEYWORD2
|
||||
|
||||
OUTPUT_2MA LITERAL1
|
||||
OUTPUT_4MA LITERAL1
|
||||
OUTPUT_8MA LITERAL1
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "framework-arduinopico",
|
||||
"version": "1.20504.0",
|
||||
"version": "1.20600.0",
|
||||
"description": "Arduino Wiring-based Framework (RPi Pico RP2040)",
|
||||
"keywords": [
|
||||
"framework",
|
||||
|
||||
@@ -113,6 +113,12 @@ sed 's/^tools.picoprobe.cmd=.*//g' | \
|
||||
sed 's/^#tools.picoprobe.cmd=/tools.picoprobe.cmd=/g' | \
|
||||
sed 's/^tools.picodebug.cmd=.*//g' | \
|
||||
sed 's/^#tools.picodebug.cmd=/tools.picodebug.cmd=/g' | \
|
||||
sed 's/^discovery.rp2040.pattern=.*//g' | \
|
||||
sed 's/^#discovery.rp2040.pattern=/discovery.rp2040.pattern=/g' | \
|
||||
sed 's/^pluggable_discovery.rp2040.pattern=.*//g' | \
|
||||
sed 's/^#pluggable_discovery.rp2040.pattern=/pluggable_discovery.rp2040.pattern=/g' | \
|
||||
sed 's/^tools.uf2conv-network.cmd=.*//g' | \
|
||||
sed 's/^#tools.uf2conv-network.cmd=/tools.uf2conv-network.cmd=/g' | \
|
||||
sed "s/version=.*/version=$ver/g" |\
|
||||
sed -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1($ver)/g"\
|
||||
> $outdir/platform.txt
|
||||
|
||||
+22
-4
@@ -20,7 +20,7 @@
|
||||
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
|
||||
|
||||
name=Raspberry Pi RP2040 Boards
|
||||
version=2.5.4
|
||||
version=2.6.0
|
||||
|
||||
runtime.tools.pqt-gcc.path={runtime.platform.path}/system/arm-none-eabi
|
||||
runtime.tools.pqt-python3.path={runtime.platform.path}/system/python3
|
||||
@@ -42,7 +42,7 @@ compiler.warning_flags.more=-Wall -Werror=return-type -Wno-ignored-qualifiers
|
||||
compiler.warning_flags.all=-Wall -Wextra -Werror=return-type -Wno-ignored-qualifiers
|
||||
|
||||
compiler.netdefines=-DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 -DCYW43_LWIP=0 {build.lwipdefs} -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1
|
||||
compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} -DARDUINO_VARIANT="{build.variant}"
|
||||
compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} -DARDUINO_VARIANT="{build.variant}" -DTARGET_RP2040
|
||||
compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" "-I{runtime.platform.path}/include"
|
||||
compiler.flags=-march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections {build.flags.exceptions} {build.flags.stackprotect} {build.flags.cmsis}
|
||||
compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt"
|
||||
@@ -95,9 +95,13 @@ build.flags.stackprotect=
|
||||
build.libpico=libpico.a
|
||||
build.boot2=boot2_generic_03h_4_padded_checksum
|
||||
build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
|
||||
build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
|
||||
|
||||
# Allow Pico boards do be auto-discovered by the IDE
|
||||
discovery.rp2040.pattern="{runtime.tools.pqt-python3.path}/python3" -I "{runtime.platform.path}/tools/discovery.py"
|
||||
#discovery.rp2040.pattern={runtime.tools.pqt-python3.path}/python3 -I "{runtime.platform.path}/tools/pluggable_discovery.py"
|
||||
discovery.rp2040.pattern={runtime.platform.path}/system/python3/python3 -I "{runtime.platform.path}/tools/pluggable_discovery.py"
|
||||
#pluggable_discovery.rp2040.pattern="{runtime.tools.pqt-python3.path}/python3" -I "{runtime.platform.path}/tools/pluggable_discovery.py"
|
||||
pluggable_discovery.rp2040.pattern="{runtime.platform.path}/system/python3/python3" -I "{runtime.platform.path}/tools/pluggable_discovery.py"
|
||||
|
||||
|
||||
# Compile patterns
|
||||
@@ -110,7 +114,7 @@ recipe.hooks.sketch.prebuild.pattern="{runtime.tools.pqt-python3.path}/python3"
|
||||
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
|
||||
|
||||
## Compile c++ files
|
||||
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
|
||||
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {build.wificc} {includes} "{source_file}" -o "{object_file}"
|
||||
|
||||
## Compile S files
|
||||
recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {includes} "{source_file}" -o "{object_file}"
|
||||
@@ -148,6 +152,12 @@ recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build
|
||||
recipe.size.regex=^(?:\.boot2|\.text|\.rodata|\.ARM\.extab|\.ARM\.exidx)\s+([0-9]+).*
|
||||
recipe.size.regex.data=^(?:\.data|\.bss|\.ram_vector_table|\.uninitialized_data)\s+([0-9]+).*
|
||||
|
||||
upload.tool.uf2conv=uf2conv
|
||||
upload.tool.serial=uf2conv
|
||||
upload.tool.network=uf2conv-network
|
||||
upload.tool.picoprobe=picoprobe
|
||||
upload.tool.picodebug=picodebug
|
||||
|
||||
tools.uf2conv.path=
|
||||
# Because the variable expansion doesn't allow one tool to find another, the following lines
|
||||
# will point to "{runtime.platform.path}/tools/python3/python3" in GIT and
|
||||
@@ -162,6 +172,14 @@ tools.uf2conv.upload.params.quiet=
|
||||
tools.uf2conv.upload.pattern="{cmd}" -I "{runtime.platform.path}/tools/uf2conv.py" --serial "{serial.port}" --family RP2040 --deploy "{build.path}/{build.project_name}.uf2"
|
||||
tools.uf2conv.upload.network_pattern="{network_cmd}" -I "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
|
||||
|
||||
#tools.uf2conv-network.cmd={runtime.tools.pqt-python3.path}/python3
|
||||
tools.uf2conv-network.cmd={runtime.platform.path}/system/python3/python3
|
||||
tools.uf2conv-network.upload.protocol=uf2
|
||||
tools.uf2conv-network.upload.params.verbose=
|
||||
tools.uf2conv-network.upload.params.quiet=
|
||||
tools.uf2conv-network.upload.pattern="{cmd}" -I "{runtime.platform.path}/tools/espota.py" -i "{upload.port.address}" -p "{upload.port.properties.port}" "--auth={upload.field.password}" -f "{build.path}/{build.project_name}.bin"
|
||||
|
||||
|
||||
#tools.picoprobe.cmd={runtime.tools.pqt-openocd.path}
|
||||
tools.picoprobe.cmd={runtime.platform.path}/system/openocd
|
||||
tools.picoprobe.upload.protocol=picoprobe
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
import time
|
||||
import subprocess
|
||||
import uf2conv
|
||||
|
||||
boards = False
|
||||
while True:
|
||||
l = uf2conv.get_drives()
|
||||
if (len(l) > 0) and (not boards):
|
||||
print ("""
|
||||
{
|
||||
"eventType": "add",
|
||||
"port": {
|
||||
"address": "1",
|
||||
"label": "Board",
|
||||
"boardName": "RPI 2040",
|
||||
"protocol": "uf2",
|
||||
"protocolLabel": "UF2 Devices",
|
||||
"prefs": {},
|
||||
"identificationPrefs": {}
|
||||
}
|
||||
}""", flush=True)
|
||||
boards = True
|
||||
elif (len(l) == 0) and boards:
|
||||
print ("""
|
||||
{
|
||||
"eventType": "remove",
|
||||
"port": {
|
||||
"address": "1",
|
||||
"label": "Board",
|
||||
"boardName": "RPI 2040",
|
||||
"protocol": "uf2",
|
||||
"protocolLabel": "UF2 Devices",
|
||||
"prefs": {},
|
||||
"identificationPrefs": {}
|
||||
}
|
||||
}""", flush=True)
|
||||
boards = False
|
||||
time.sleep(1)
|
||||
@@ -83,6 +83,17 @@ def BuildWithoutUSBStack(name):
|
||||
print("%s.menu.usbstack.nousb=No USB" % (name))
|
||||
print('%s.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico"' % (name))
|
||||
|
||||
def BuildCountry(name):
|
||||
countries = [ "Worldwide", "Australia", "Austria", "Belgium", "Brazil", "Canada", "Chile", "China", "Colombia", "Czech Republic",
|
||||
"Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hong Kong", "Hungary", "Iceland", "India", "Israel",
|
||||
"Italy", "Japan", "Kenya", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Malaysia", "Malta", "Mexico",
|
||||
"Netherlands", "New Zealand", "Nigeria", "Norway", "Peru", "Philippines", "Poland", "Portugal", "Singapore", "Slovakia",
|
||||
"Slovenia", "South Africa", "South Korea", "Spain", "Sweden", "Switzerland", "Taiwan", "Thailand", "Turkey", "UK", "USA"]
|
||||
for c in countries:
|
||||
sane = c.replace(" ", "_").upper()
|
||||
print("%s.menu.wificountry.%s=%s" % (name, sane.lower(), c))
|
||||
print("%s.menu.wificountry.%s.build.wificc=-DWIFICC=CYW43_COUNTRY_%s" % (name, sane.lower(), sane))
|
||||
|
||||
def BuildIPStack(name):
|
||||
print("%s.menu.ipstack.ipv4only=IPv4 Only" % (name))
|
||||
print('%s.menu.ipstack.ipv4only.build.libpico=libpico.a' % (name))
|
||||
@@ -151,6 +162,7 @@ def BuildGlobalMenuList():
|
||||
print("menu.dbgport=Debug Port")
|
||||
print("menu.dbglvl=Debug Level")
|
||||
print("menu.boot2=Boot Stage 2")
|
||||
print("menu.wificountry=WiFi Region")
|
||||
print("menu.usbstack=USB Stack")
|
||||
print("menu.ipstack=IP Stack")
|
||||
|
||||
@@ -190,6 +202,8 @@ def MakeBoard(name, vendor_name, product_name, vid, pid, pwr, boarddefine, flash
|
||||
BuildWithoutUSBStack(n)
|
||||
else:
|
||||
BuildUSBStack(n)
|
||||
if name == "rpipicow":
|
||||
BuildCountry(n)
|
||||
BuildIPStack(n)
|
||||
if name == "generic":
|
||||
BuildBoot(n)
|
||||
|
||||
Executable
+119
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
import threading
|
||||
|
||||
|
||||
toolspath = os.path.dirname(os.path.realpath(__file__))
|
||||
try:
|
||||
sys.path.insert(0, os.path.join(toolspath, ".")) # Add pyserial dir to search path
|
||||
import uf2conv # If this fails, we can't continue and will bomb below
|
||||
except ImportError:
|
||||
sys.stderr.write("uf2conv not found next to this tool.\n")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
scannerGo = False
|
||||
|
||||
def scanner():
|
||||
global scannerGo
|
||||
scannerGo = True
|
||||
boards = False
|
||||
while scannerGo:
|
||||
l = uf2conv.get_drives()
|
||||
if (len(l) > 0) and scannerGo and not boards:
|
||||
boards = True
|
||||
print ("""{
|
||||
"eventType": "add",
|
||||
"port": {
|
||||
"address": "UF2_Board",
|
||||
"label": "UF2 Board",
|
||||
"protocol": "uf2conv",
|
||||
"protocolLabel": "UF2 Devices",
|
||||
"properties": {
|
||||
"mac": "ffffffffffff",
|
||||
"pid" : "0x2e8a",
|
||||
"vid" : "0x000a"
|
||||
}
|
||||
}
|
||||
}""", flush=True)
|
||||
elif (len(l) == 0) and scannerGo and boards:
|
||||
boards = False
|
||||
print("""{
|
||||
"eventType": "remove",
|
||||
"port": {
|
||||
"address": "UF2_Board",
|
||||
"protocol": "uf2conv"
|
||||
}
|
||||
}""", flush = True)
|
||||
n = time.time() + 2
|
||||
while scannerGo and (time.time() < n):
|
||||
time.sleep(.1)
|
||||
scannerGo = True
|
||||
|
||||
def main():
|
||||
while True:
|
||||
cmdline = input()
|
||||
cmd = cmdline.split()[0]
|
||||
if cmd == "HELLO":
|
||||
print(""" {
|
||||
"eventType": "hello",
|
||||
"message": "OK",
|
||||
"protocolVersion": 1
|
||||
}""", flush = True)
|
||||
elif cmd == "START":
|
||||
print("""{
|
||||
"eventType": "start",
|
||||
"message": "OK"
|
||||
}""", flush = True);
|
||||
elif cmd == "STOP":
|
||||
scannerGo = False
|
||||
while not scannerGo:
|
||||
time.sleep(.1)
|
||||
print("""{
|
||||
"eventType": "stop",
|
||||
"message": "OK"
|
||||
}""", flush = True)
|
||||
elif cmd == "QUIT":
|
||||
scannerGo = False
|
||||
print("""{
|
||||
"eventType": "quit",
|
||||
"message": "OK"
|
||||
}""", flush = True)
|
||||
return
|
||||
elif cmd == "LIST":
|
||||
l = uf2conv.get_drives()
|
||||
if len(l) > 0:
|
||||
print ("""{
|
||||
"eventType": "list",
|
||||
"ports": [
|
||||
{
|
||||
"address": "UF2_Board",
|
||||
"label": "UF2 Board",
|
||||
"protocol": "uf2conv",
|
||||
"protocolLabel": "UF2 Devices",
|
||||
"properties": {
|
||||
"mac": "ffffffffffff",
|
||||
"pid" : "0x2e8a",
|
||||
"vid" : "0x000a"
|
||||
}
|
||||
}
|
||||
]
|
||||
}""", flush=True)
|
||||
else:
|
||||
print ("""{
|
||||
"eventType": "list",
|
||||
"ports": [ ]
|
||||
}""", flush=True)
|
||||
elif cmd == "START_SYNC":
|
||||
print("""{
|
||||
"eventType": "start_sync",
|
||||
"message": "OK"
|
||||
}""", flush = True)
|
||||
scannerGo = True
|
||||
threading.Thread(target = scanner).start()
|
||||
time.sleep(.5)
|
||||
|
||||
main()
|
||||
@@ -20,6 +20,10 @@
|
||||
|
||||
#include <pico/cyw43_arch.h>
|
||||
|
||||
#ifndef WIFICC
|
||||
#define WIFICC CYW43_COUNTRY_WORLDWIDE
|
||||
#endif
|
||||
|
||||
extern "C" void initVariant() {
|
||||
cyw43_arch_init();
|
||||
cyw43_arch_init_with_country(WIFICC);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user