Inital import from F4IYT and F4GOH
This commit is contained in:
parent
6f20e23cc9
commit
e1fd3bec3e
40657
articleREF/radioref_2026_05_1008.pdf
Normal file
40657
articleREF/radioref_2026_05_1008.pdf
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
18247
gerber/baliseHF_pico2350/baliseHF_pico2350 - CADCAM Bottom Copper.TXT
Normal file
18247
gerber/baliseHF_pico2350/baliseHF_pico2350 - CADCAM Bottom Copper.TXT
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,45 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD23R,0.0600X0.0400*%
|
||||||
|
%ADD73R,0.0400X0.0600*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
G54D23*
|
||||||
|
X+13500Y+12760D03*
|
||||||
|
X+13500Y+14000D03*
|
||||||
|
X+15000Y+12760D03*
|
||||||
|
X+15000Y+14000D03*
|
||||||
|
X+19000Y+21760D03*
|
||||||
|
X+19000Y+23000D03*
|
||||||
|
X+12500Y+21760D03*
|
||||||
|
X+12500Y+23000D03*
|
||||||
|
X+13500Y+17260D03*
|
||||||
|
X+13500Y+18500D03*
|
||||||
|
X+18750Y+17760D03*
|
||||||
|
X+18750Y+19000D03*
|
||||||
|
X+20000Y+11000D03*
|
||||||
|
X+20000Y+12240D03*
|
||||||
|
X+6000Y+21500D03*
|
||||||
|
X+6000Y+22740D03*
|
||||||
|
X+3000Y+13740D03*
|
||||||
|
X+3000Y+12500D03*
|
||||||
|
X+6000Y+5240D03*
|
||||||
|
X+6000Y+4000D03*
|
||||||
|
G54D73*
|
||||||
|
X+9000Y+6000D03*
|
||||||
|
X+10240Y+6000D03*
|
||||||
|
X+9000Y+5000D03*
|
||||||
|
X+10240Y+5000D03*
|
||||||
|
X+9000Y+4000D03*
|
||||||
|
X+10240Y+4000D03*
|
||||||
|
X+6740Y+9000D03*
|
||||||
|
X+5500Y+9000D03*
|
||||||
|
X+9250Y+10000D03*
|
||||||
|
X+10490Y+10000D03*
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
M00*
|
||||||
|
|
@ -0,0 +1,446 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
%ADD72C,0.0100*%
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
G54D72*
|
||||||
|
X+15861Y+10854D02*
|
||||||
|
X+15861Y+11454D01*
|
||||||
|
X+15486Y+11454D01*
|
||||||
|
X+15861Y+11154D02*
|
||||||
|
X+15611Y+11154D01*
|
||||||
|
X+14986Y+11054D02*
|
||||||
|
X+15361Y+11054D01*
|
||||||
|
X+15111Y+11454D01*
|
||||||
|
X+15111Y+10854D01*
|
||||||
|
X+14611Y+11054D02*
|
||||||
|
X+14486Y+11054D01*
|
||||||
|
X+14486Y+10854D01*
|
||||||
|
X+14736Y+10854D01*
|
||||||
|
X+14861Y+11054D01*
|
||||||
|
X+14861Y+11254D01*
|
||||||
|
X+14736Y+11454D01*
|
||||||
|
X+14549Y+11454D01*
|
||||||
|
X+14486Y+11354D01*
|
||||||
|
X+14361Y+11254D02*
|
||||||
|
X+14236Y+11454D01*
|
||||||
|
X+14111Y+11454D01*
|
||||||
|
X+13986Y+11254D01*
|
||||||
|
X+13986Y+11054D01*
|
||||||
|
X+14111Y+10854D01*
|
||||||
|
X+14236Y+10854D01*
|
||||||
|
X+14361Y+11054D01*
|
||||||
|
X+14361Y+11254D01*
|
||||||
|
X+13861Y+10854D02*
|
||||||
|
X+13861Y+11454D01*
|
||||||
|
X+13486Y+11454D02*
|
||||||
|
X+13486Y+10854D01*
|
||||||
|
X+13861Y+11154D02*
|
||||||
|
X+13486Y+11154D01*
|
||||||
|
X+16936Y+11777D02*
|
||||||
|
X+16936Y+12377D01*
|
||||||
|
X+16624Y+12377D01*
|
||||||
|
X+16561Y+12277D01*
|
||||||
|
X+16561Y+12177D01*
|
||||||
|
X+16624Y+12077D01*
|
||||||
|
X+16561Y+11977D01*
|
||||||
|
X+16561Y+11877D01*
|
||||||
|
X+16624Y+11777D01*
|
||||||
|
X+16936Y+11777D01*
|
||||||
|
X+16936Y+12077D02*
|
||||||
|
X+16624Y+12077D01*
|
||||||
|
X+16061Y+11777D02*
|
||||||
|
X+16436Y+11777D01*
|
||||||
|
X+16436Y+12377D01*
|
||||||
|
X+16061Y+12377D01*
|
||||||
|
X+16436Y+12077D02*
|
||||||
|
X+16186Y+12077D01*
|
||||||
|
X+15936Y+11777D02*
|
||||||
|
X+15936Y+12177D01*
|
||||||
|
X+15811Y+12377D01*
|
||||||
|
X+15686Y+12377D01*
|
||||||
|
X+15561Y+12177D01*
|
||||||
|
X+15561Y+11777D01*
|
||||||
|
X+15936Y+11977D02*
|
||||||
|
X+15561Y+11977D01*
|
||||||
|
X+15061Y+11877D02*
|
||||||
|
X+15124Y+11777D01*
|
||||||
|
X+15311Y+11777D01*
|
||||||
|
X+15436Y+11977D01*
|
||||||
|
X+15436Y+12177D01*
|
||||||
|
X+15311Y+12377D01*
|
||||||
|
X+15124Y+12377D01*
|
||||||
|
X+15061Y+12277D01*
|
||||||
|
X+14936Y+12177D02*
|
||||||
|
X+14811Y+12377D01*
|
||||||
|
X+14686Y+12377D01*
|
||||||
|
X+14561Y+12177D01*
|
||||||
|
X+14561Y+11977D01*
|
||||||
|
X+14686Y+11777D01*
|
||||||
|
X+14811Y+11777D01*
|
||||||
|
X+14936Y+11977D01*
|
||||||
|
X+14936Y+12177D01*
|
||||||
|
X+14436Y+11777D02*
|
||||||
|
X+14436Y+12377D01*
|
||||||
|
X+14061Y+11777D01*
|
||||||
|
X+14061Y+12377D01*
|
||||||
|
X+13436Y+11777D02*
|
||||||
|
X+13436Y+12377D01*
|
||||||
|
X+13061Y+12377D02*
|
||||||
|
X+13061Y+11777D01*
|
||||||
|
X+13436Y+12077D02*
|
||||||
|
X+13061Y+12077D01*
|
||||||
|
X+12936Y+11777D02*
|
||||||
|
X+12936Y+12377D01*
|
||||||
|
X+12561Y+12377D01*
|
||||||
|
X+12936Y+12077D02*
|
||||||
|
X+12686Y+12077D01*
|
||||||
|
G54D27*
|
||||||
|
X+13790Y+13090D02*
|
||||||
|
X+13790Y+13690D01*
|
||||||
|
X+13210Y+13100D02*
|
||||||
|
X+13210Y+13690D01*
|
||||||
|
X+14310Y+13880D02*
|
||||||
|
X+13950Y+13880D01*
|
||||||
|
X+13950Y+13568D01*
|
||||||
|
X+14010Y+13505D01*
|
||||||
|
X+14070Y+13505D01*
|
||||||
|
X+14130Y+13568D01*
|
||||||
|
X+14130Y+13880D01*
|
||||||
|
X+14130Y+13568D02*
|
||||||
|
X+14190Y+13505D01*
|
||||||
|
X+14310Y+13505D01*
|
||||||
|
X+14010Y+13318D02*
|
||||||
|
X+13950Y+13255D01*
|
||||||
|
X+13950Y+13068D01*
|
||||||
|
X+14010Y+13005D01*
|
||||||
|
X+14070Y+13005D01*
|
||||||
|
X+14130Y+13068D01*
|
||||||
|
X+14190Y+13005D01*
|
||||||
|
X+14250Y+13005D01*
|
||||||
|
X+14310Y+13068D01*
|
||||||
|
X+14310Y+13255D01*
|
||||||
|
X+14250Y+13318D01*
|
||||||
|
X+14130Y+13193D02*
|
||||||
|
X+14130Y+13068D01*
|
||||||
|
X+15290Y+13090D02*
|
||||||
|
X+15290Y+13690D01*
|
||||||
|
X+14710Y+13100D02*
|
||||||
|
X+14710Y+13690D01*
|
||||||
|
X+15750Y+13505D02*
|
||||||
|
X+15810Y+13568D01*
|
||||||
|
X+15810Y+13755D01*
|
||||||
|
X+15690Y+13880D01*
|
||||||
|
X+15570Y+13880D01*
|
||||||
|
X+15450Y+13755D01*
|
||||||
|
X+15450Y+13568D01*
|
||||||
|
X+15510Y+13505D01*
|
||||||
|
X+15450Y+13005D02*
|
||||||
|
X+15450Y+13318D01*
|
||||||
|
X+15570Y+13318D01*
|
||||||
|
X+15570Y+13068D01*
|
||||||
|
X+15630Y+13005D01*
|
||||||
|
X+15750Y+13005D01*
|
||||||
|
X+15810Y+13068D01*
|
||||||
|
X+15810Y+13255D01*
|
||||||
|
X+15750Y+13318D01*
|
||||||
|
X+19290Y+22090D02*
|
||||||
|
X+19290Y+22690D01*
|
||||||
|
X+18710Y+22100D02*
|
||||||
|
X+18710Y+22690D01*
|
||||||
|
X+19750Y+22505D02*
|
||||||
|
X+19810Y+22568D01*
|
||||||
|
X+19810Y+22755D01*
|
||||||
|
X+19690Y+22880D01*
|
||||||
|
X+19570Y+22880D01*
|
||||||
|
X+19450Y+22755D01*
|
||||||
|
X+19450Y+22568D01*
|
||||||
|
X+19510Y+22505D01*
|
||||||
|
X+19570Y+22005D02*
|
||||||
|
X+19630Y+22068D01*
|
||||||
|
X+19630Y+22255D01*
|
||||||
|
X+19570Y+22318D01*
|
||||||
|
X+19510Y+22318D01*
|
||||||
|
X+19450Y+22255D01*
|
||||||
|
X+19450Y+22068D01*
|
||||||
|
X+19510Y+22005D01*
|
||||||
|
X+19750Y+22005D01*
|
||||||
|
X+19810Y+22068D01*
|
||||||
|
X+19810Y+22255D01*
|
||||||
|
X+12790Y+22090D02*
|
||||||
|
X+12790Y+22690D01*
|
||||||
|
X+12210Y+22100D02*
|
||||||
|
X+12210Y+22690D01*
|
||||||
|
X+13250Y+22505D02*
|
||||||
|
X+13310Y+22568D01*
|
||||||
|
X+13310Y+22755D01*
|
||||||
|
X+13190Y+22880D01*
|
||||||
|
X+13070Y+22880D01*
|
||||||
|
X+12950Y+22755D01*
|
||||||
|
X+12950Y+22568D01*
|
||||||
|
X+13010Y+22505D01*
|
||||||
|
X+13130Y+22255D02*
|
||||||
|
X+13070Y+22318D01*
|
||||||
|
X+13010Y+22318D01*
|
||||||
|
X+12950Y+22255D01*
|
||||||
|
X+12950Y+22068D01*
|
||||||
|
X+13010Y+22005D01*
|
||||||
|
X+13070Y+22005D01*
|
||||||
|
X+13130Y+22068D01*
|
||||||
|
X+13130Y+22255D01*
|
||||||
|
X+13190Y+22318D01*
|
||||||
|
X+13250Y+22318D01*
|
||||||
|
X+13310Y+22255D01*
|
||||||
|
X+13310Y+22068D01*
|
||||||
|
X+13250Y+22005D01*
|
||||||
|
X+13190Y+22005D01*
|
||||||
|
X+13130Y+22068D01*
|
||||||
|
X+13790Y+17590D02*
|
||||||
|
X+13790Y+18190D01*
|
||||||
|
X+13210Y+17600D02*
|
||||||
|
X+13210Y+18190D01*
|
||||||
|
X+14250Y+18005D02*
|
||||||
|
X+14310Y+18068D01*
|
||||||
|
X+14310Y+18255D01*
|
||||||
|
X+14190Y+18380D01*
|
||||||
|
X+14070Y+18380D01*
|
||||||
|
X+13950Y+18255D01*
|
||||||
|
X+13950Y+18068D01*
|
||||||
|
X+14010Y+18005D01*
|
||||||
|
X+14010Y+17505D02*
|
||||||
|
X+13950Y+17568D01*
|
||||||
|
X+13950Y+17755D01*
|
||||||
|
X+14010Y+17818D01*
|
||||||
|
X+14250Y+17818D01*
|
||||||
|
X+14310Y+17755D01*
|
||||||
|
X+14310Y+17568D01*
|
||||||
|
X+14250Y+17505D01*
|
||||||
|
X+14190Y+17505D01*
|
||||||
|
X+14130Y+17568D01*
|
||||||
|
X+14130Y+17818D01*
|
||||||
|
X+19040Y+18090D02*
|
||||||
|
X+19040Y+18690D01*
|
||||||
|
X+18460Y+18100D02*
|
||||||
|
X+18460Y+18690D01*
|
||||||
|
X+19500Y+18755D02*
|
||||||
|
X+19560Y+18818D01*
|
||||||
|
X+19560Y+19005D01*
|
||||||
|
X+19440Y+19130D01*
|
||||||
|
X+19320Y+19130D01*
|
||||||
|
X+19200Y+19005D01*
|
||||||
|
X+19200Y+18818D01*
|
||||||
|
X+19260Y+18755D01*
|
||||||
|
X+19320Y+18505D02*
|
||||||
|
X+19200Y+18380D01*
|
||||||
|
X+19560Y+18380D01*
|
||||||
|
X+19320Y+18005D02*
|
||||||
|
X+19200Y+17880D01*
|
||||||
|
X+19560Y+17880D01*
|
||||||
|
X+20290Y+11330D02*
|
||||||
|
X+20290Y+11930D01*
|
||||||
|
X+19710Y+11340D02*
|
||||||
|
X+19710Y+11930D01*
|
||||||
|
X+20750Y+11745D02*
|
||||||
|
X+20810Y+11808D01*
|
||||||
|
X+20810Y+11995D01*
|
||||||
|
X+20690Y+12120D01*
|
||||||
|
X+20570Y+12120D01*
|
||||||
|
X+20450Y+11995D01*
|
||||||
|
X+20450Y+11808D01*
|
||||||
|
X+20510Y+11745D01*
|
||||||
|
X+20690Y+11245D02*
|
||||||
|
X+20690Y+11620D01*
|
||||||
|
X+20450Y+11370D01*
|
||||||
|
X+20810Y+11370D01*
|
||||||
|
X+6290Y+21830D02*
|
||||||
|
X+6290Y+22430D01*
|
||||||
|
X+5710Y+21840D02*
|
||||||
|
X+5710Y+22430D01*
|
||||||
|
X+6750Y+22245D02*
|
||||||
|
X+6810Y+22308D01*
|
||||||
|
X+6810Y+22495D01*
|
||||||
|
X+6690Y+22620D01*
|
||||||
|
X+6570Y+22620D01*
|
||||||
|
X+6450Y+22495D01*
|
||||||
|
X+6450Y+22308D01*
|
||||||
|
X+6510Y+22245D01*
|
||||||
|
X+6450Y+22058D02*
|
||||||
|
X+6450Y+21745D01*
|
||||||
|
X+6510Y+21745D01*
|
||||||
|
X+6810Y+22058D01*
|
||||||
|
X+2710Y+13410D02*
|
||||||
|
X+2710Y+12810D01*
|
||||||
|
X+3290Y+13400D02*
|
||||||
|
X+3290Y+12810D01*
|
||||||
|
X+2490Y+13245D02*
|
||||||
|
X+2550Y+13308D01*
|
||||||
|
X+2550Y+13495D01*
|
||||||
|
X+2430Y+13620D01*
|
||||||
|
X+2310Y+13620D01*
|
||||||
|
X+2190Y+13495D01*
|
||||||
|
X+2190Y+13308D01*
|
||||||
|
X+2250Y+13245D01*
|
||||||
|
X+2250Y+13058D02*
|
||||||
|
X+2190Y+12995D01*
|
||||||
|
X+2190Y+12808D01*
|
||||||
|
X+2250Y+12745D01*
|
||||||
|
X+2310Y+12745D01*
|
||||||
|
X+2370Y+12808D01*
|
||||||
|
X+2430Y+12745D01*
|
||||||
|
X+2490Y+12745D01*
|
||||||
|
X+2550Y+12808D01*
|
||||||
|
X+2550Y+12995D01*
|
||||||
|
X+2490Y+13058D01*
|
||||||
|
X+2370Y+12933D02*
|
||||||
|
X+2370Y+12808D01*
|
||||||
|
X+5710Y+4910D02*
|
||||||
|
X+5710Y+4310D01*
|
||||||
|
X+6290Y+4900D02*
|
||||||
|
X+6290Y+4310D01*
|
||||||
|
X+5490Y+4745D02*
|
||||||
|
X+5550Y+4808D01*
|
||||||
|
X+5550Y+4995D01*
|
||||||
|
X+5430Y+5120D01*
|
||||||
|
X+5310Y+5120D01*
|
||||||
|
X+5190Y+4995D01*
|
||||||
|
X+5190Y+4808D01*
|
||||||
|
X+5250Y+4745D01*
|
||||||
|
X+5250Y+4558D02*
|
||||||
|
X+5190Y+4495D01*
|
||||||
|
X+5190Y+4308D01*
|
||||||
|
X+5250Y+4245D01*
|
||||||
|
X+5310Y+4245D01*
|
||||||
|
X+5370Y+4308D01*
|
||||||
|
X+5370Y+4495D01*
|
||||||
|
X+5430Y+4558D01*
|
||||||
|
X+5550Y+4558D01*
|
||||||
|
X+5550Y+4245D01*
|
||||||
|
X+9330Y+5710D02*
|
||||||
|
X+9930Y+5710D01*
|
||||||
|
X+9340Y+6290D02*
|
||||||
|
X+9930Y+6290D01*
|
||||||
|
X+9995Y+6750D02*
|
||||||
|
X+10058Y+6690D01*
|
||||||
|
X+10245Y+6690D01*
|
||||||
|
X+10370Y+6810D01*
|
||||||
|
X+10370Y+6930D01*
|
||||||
|
X+10245Y+7050D01*
|
||||||
|
X+10058Y+7050D01*
|
||||||
|
X+9995Y+6990D01*
|
||||||
|
X+9745Y+6930D02*
|
||||||
|
X+9620Y+7050D01*
|
||||||
|
X+9620Y+6690D01*
|
||||||
|
X+9308Y+6990D02*
|
||||||
|
X+9245Y+7050D01*
|
||||||
|
X+9058Y+7050D01*
|
||||||
|
X+8995Y+6990D01*
|
||||||
|
X+8995Y+6930D01*
|
||||||
|
X+9058Y+6870D01*
|
||||||
|
X+9245Y+6870D01*
|
||||||
|
X+9308Y+6810D01*
|
||||||
|
X+9308Y+6690D01*
|
||||||
|
X+8995Y+6690D01*
|
||||||
|
X+9330Y+4710D02*
|
||||||
|
X+9930Y+4710D01*
|
||||||
|
X+9340Y+5290D02*
|
||||||
|
X+9930Y+5290D01*
|
||||||
|
X+8245Y+5000D02*
|
||||||
|
X+8308Y+4940D01*
|
||||||
|
X+8495Y+4940D01*
|
||||||
|
X+8620Y+5060D01*
|
||||||
|
X+8620Y+5180D01*
|
||||||
|
X+8495Y+5300D01*
|
||||||
|
X+8308Y+5300D01*
|
||||||
|
X+8245Y+5240D01*
|
||||||
|
X+7995Y+5180D02*
|
||||||
|
X+7870Y+5300D01*
|
||||||
|
X+7870Y+4940D01*
|
||||||
|
X+7558Y+5240D02*
|
||||||
|
X+7495Y+5300D01*
|
||||||
|
X+7308Y+5300D01*
|
||||||
|
X+7245Y+5240D01*
|
||||||
|
X+7245Y+5180D01*
|
||||||
|
X+7308Y+5120D01*
|
||||||
|
X+7245Y+5060D01*
|
||||||
|
X+7245Y+5000D01*
|
||||||
|
X+7308Y+4940D01*
|
||||||
|
X+7495Y+4940D01*
|
||||||
|
X+7558Y+5000D01*
|
||||||
|
X+7433Y+5120D02*
|
||||||
|
X+7308Y+5120D01*
|
||||||
|
X+9330Y+3710D02*
|
||||||
|
X+9930Y+3710D01*
|
||||||
|
X+9340Y+4290D02*
|
||||||
|
X+9930Y+4290D01*
|
||||||
|
X+9995Y+3250D02*
|
||||||
|
X+10058Y+3190D01*
|
||||||
|
X+10245Y+3190D01*
|
||||||
|
X+10370Y+3310D01*
|
||||||
|
X+10370Y+3430D01*
|
||||||
|
X+10245Y+3550D01*
|
||||||
|
X+10058Y+3550D01*
|
||||||
|
X+9995Y+3490D01*
|
||||||
|
X+9745Y+3430D02*
|
||||||
|
X+9620Y+3550D01*
|
||||||
|
X+9620Y+3190D01*
|
||||||
|
X+8995Y+3310D02*
|
||||||
|
X+9370Y+3310D01*
|
||||||
|
X+9120Y+3550D01*
|
||||||
|
X+9120Y+3190D01*
|
||||||
|
X+6410Y+9290D02*
|
||||||
|
X+5810Y+9290D01*
|
||||||
|
X+6400Y+8710D02*
|
||||||
|
X+5810Y+8710D01*
|
||||||
|
X+6495Y+9510D02*
|
||||||
|
X+6558Y+9450D01*
|
||||||
|
X+6745Y+9450D01*
|
||||||
|
X+6870Y+9570D01*
|
||||||
|
X+6870Y+9690D01*
|
||||||
|
X+6745Y+9810D01*
|
||||||
|
X+6558Y+9810D01*
|
||||||
|
X+6495Y+9750D01*
|
||||||
|
X+6245Y+9690D02*
|
||||||
|
X+6120Y+9810D01*
|
||||||
|
X+6120Y+9450D01*
|
||||||
|
X+5495Y+9810D02*
|
||||||
|
X+5808Y+9810D01*
|
||||||
|
X+5808Y+9690D01*
|
||||||
|
X+5558Y+9690D01*
|
||||||
|
X+5495Y+9630D01*
|
||||||
|
X+5495Y+9510D01*
|
||||||
|
X+5558Y+9450D01*
|
||||||
|
X+5745Y+9450D01*
|
||||||
|
X+5808Y+9510D01*
|
||||||
|
X+9580Y+9710D02*
|
||||||
|
X+10180Y+9710D01*
|
||||||
|
X+9590Y+10290D02*
|
||||||
|
X+10180Y+10290D01*
|
||||||
|
X+10245Y+9250D02*
|
||||||
|
X+10308Y+9190D01*
|
||||||
|
X+10495Y+9190D01*
|
||||||
|
X+10620Y+9310D01*
|
||||||
|
X+10620Y+9430D01*
|
||||||
|
X+10495Y+9550D01*
|
||||||
|
X+10308Y+9550D01*
|
||||||
|
X+10245Y+9490D01*
|
||||||
|
X+9995Y+9430D02*
|
||||||
|
X+9870Y+9550D01*
|
||||||
|
X+9870Y+9190D01*
|
||||||
|
X+9245Y+9490D02*
|
||||||
|
X+9308Y+9550D01*
|
||||||
|
X+9495Y+9550D01*
|
||||||
|
X+9558Y+9490D01*
|
||||||
|
X+9558Y+9250D01*
|
||||||
|
X+9495Y+9190D01*
|
||||||
|
X+9308Y+9190D01*
|
||||||
|
X+9245Y+9250D01*
|
||||||
|
X+9245Y+9310D01*
|
||||||
|
X+9308Y+9370D01*
|
||||||
|
X+9558Y+9370D01*
|
||||||
|
M00*
|
||||||
|
|
@ -0,0 +1,192 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD71C,0.0600*%
|
||||||
|
%ADD30C,0.2900*%
|
||||||
|
%ADD31R,0.1000X0.1000*%
|
||||||
|
%ADD17C,0.1200*%
|
||||||
|
%ADD25C,0.1500*%
|
||||||
|
%AMDIL027*4,1,8,-0.0850,0.0800,
|
||||||
|
-0.0550,0.1100,0.0550,0.1100,0.0850,0.0800,0.0850,-0.0800,
|
||||||
|
0.0550,-0.1100,-0.0550,-0.1100,-0.0850,-0.0800,-0.0850,0.0800,0*
|
||||||
|
*%
|
||||||
|
%ADD33DIL027*%
|
||||||
|
%AMDIL028*4,1,8,-0.1100,0.0550,
|
||||||
|
-0.0800,0.0850,0.0800,0.0850,0.1100,0.0550,0.1100,-0.0550,
|
||||||
|
0.0800,-0.0850,-0.0800,-0.0850,-0.1100,-0.0550,-0.1100,0.0550,0*
|
||||||
|
*%
|
||||||
|
%ADD34DIL028*%
|
||||||
|
%ADD35R,0.1800X0.1800*%
|
||||||
|
%ADD37R,0.0800X0.0600*%
|
||||||
|
%ADD21C,0.0900*%
|
||||||
|
%ADD36C,0.1100*%
|
||||||
|
%ADD15C,0.1000*%
|
||||||
|
%AMDIL032*4,1,8,-0.0400,0.0480,
|
||||||
|
-0.0280,0.0600,0.0280,0.0600,0.0400,0.0480,0.0400,-0.0480,
|
||||||
|
0.0280,-0.0600,-0.0280,-0.0600,-0.0400,-0.0480,-0.0400,0.0480,0*
|
||||||
|
*%
|
||||||
|
%ADD38DIL032*%
|
||||||
|
%ADD39C,0.1800*%
|
||||||
|
%AMDIL034*4,1,8,-0.1100,0.0390,
|
||||||
|
-0.0940,0.0550,0.0940,0.0550,0.1100,0.0390,0.1100,-0.0390,
|
||||||
|
0.0940,-0.0550,-0.0940,-0.0550,-0.1100,-0.0390,-0.1100,0.0390,0*
|
||||||
|
*%
|
||||||
|
%ADD40DIL034*%
|
||||||
|
%ADD41R,0.0600X0.0800*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
G54D71*
|
||||||
|
X+17600Y+10600D03*
|
||||||
|
X+16600Y+1800D03*
|
||||||
|
X+17000Y+5000D03*
|
||||||
|
X+17200Y+13000D03*
|
||||||
|
X+17200Y+11400D03*
|
||||||
|
X+575Y+7310D03*
|
||||||
|
G54D30*
|
||||||
|
X+24000Y+2000D03*
|
||||||
|
X+2000Y+2000D03*
|
||||||
|
X+2000Y+22500D03*
|
||||||
|
X+23500Y+22500D03*
|
||||||
|
G54D31*
|
||||||
|
X+18500Y+12000D03*
|
||||||
|
X+18500Y+11000D03*
|
||||||
|
X+18500Y+10000D03*
|
||||||
|
X+18500Y+9000D03*
|
||||||
|
X+18500Y+8000D03*
|
||||||
|
X+22000Y+3000D03*
|
||||||
|
X+22000Y+1228D03*
|
||||||
|
X+19440Y+1228D03*
|
||||||
|
X+19440Y+3000D03*
|
||||||
|
X+1500Y+13500D03*
|
||||||
|
X+1500Y+12500D03*
|
||||||
|
X+1500Y+11500D03*
|
||||||
|
X+1500Y+10500D03*
|
||||||
|
G54D17*
|
||||||
|
X+4500Y+23500D03*
|
||||||
|
X+4500Y+21531D03*
|
||||||
|
X+21000Y+21531D03*
|
||||||
|
X+21000Y+23500D03*
|
||||||
|
G54D25*
|
||||||
|
X+24000Y+19000D03*
|
||||||
|
X+24000Y+17000D03*
|
||||||
|
X+22000Y+17000D03*
|
||||||
|
X+22000Y+19000D03*
|
||||||
|
X+23000Y+18000D03*
|
||||||
|
G54D33*
|
||||||
|
X+2500Y+17500D03*
|
||||||
|
G54D34*
|
||||||
|
X+4000Y+15500D03*
|
||||||
|
G54D33*
|
||||||
|
X+5000Y+17500D03*
|
||||||
|
G54D35*
|
||||||
|
X+23000Y+14000D03*
|
||||||
|
G54D37*
|
||||||
|
X+13500Y+12760D03*
|
||||||
|
X+13500Y+14000D03*
|
||||||
|
X+15000Y+12760D03*
|
||||||
|
X+15000Y+14000D03*
|
||||||
|
G54D71*
|
||||||
|
X+13000Y+15500D03*
|
||||||
|
X+13500Y+15000D03*
|
||||||
|
X+14000Y+15500D03*
|
||||||
|
G54D21*
|
||||||
|
X+17500Y+17000D03*
|
||||||
|
X+15500Y+17000D03*
|
||||||
|
X+15500Y+16000D03*
|
||||||
|
X+17500Y+16000D03*
|
||||||
|
G54D37*
|
||||||
|
X+19000Y+21760D03*
|
||||||
|
X+19000Y+23000D03*
|
||||||
|
X+12500Y+21760D03*
|
||||||
|
X+12500Y+23000D03*
|
||||||
|
G54D36*
|
||||||
|
X+7500Y+21500D03*
|
||||||
|
X+11500Y+21500D03*
|
||||||
|
X+13500Y+21500D03*
|
||||||
|
X+17500Y+21500D03*
|
||||||
|
G54D37*
|
||||||
|
X+13500Y+17260D03*
|
||||||
|
X+13500Y+18500D03*
|
||||||
|
G54D15*
|
||||||
|
X+18750Y+16000D03*
|
||||||
|
X+19750Y+16000D03*
|
||||||
|
G54D37*
|
||||||
|
X+18750Y+17760D03*
|
||||||
|
X+18750Y+19000D03*
|
||||||
|
G54D21*
|
||||||
|
X+15000Y+19000D03*
|
||||||
|
X+17000Y+19000D03*
|
||||||
|
X+12000Y+18500D03*
|
||||||
|
X+10000Y+18500D03*
|
||||||
|
G54D15*
|
||||||
|
X+11000Y+16000D03*
|
||||||
|
X+10000Y+16000D03*
|
||||||
|
G54D37*
|
||||||
|
X+20000Y+11000D03*
|
||||||
|
X+20000Y+12240D03*
|
||||||
|
X+6000Y+21500D03*
|
||||||
|
X+6000Y+22740D03*
|
||||||
|
G54D36*
|
||||||
|
X+1500Y+19500D03*
|
||||||
|
X+5500Y+19500D03*
|
||||||
|
G54D37*
|
||||||
|
X+3000Y+13740D03*
|
||||||
|
X+3000Y+12500D03*
|
||||||
|
X+6000Y+5240D03*
|
||||||
|
X+6000Y+4000D03*
|
||||||
|
G54D31*
|
||||||
|
X+4500Y+4000D03*
|
||||||
|
X+4500Y+5000D03*
|
||||||
|
X+4500Y+6000D03*
|
||||||
|
X+4500Y+7000D03*
|
||||||
|
X+4500Y+8000D03*
|
||||||
|
X+4500Y+9000D03*
|
||||||
|
X+4500Y+10000D03*
|
||||||
|
X+4500Y+11000D03*
|
||||||
|
X+4500Y+12000D03*
|
||||||
|
X+11500Y+12000D03*
|
||||||
|
X+11500Y+11000D03*
|
||||||
|
X+11500Y+10000D03*
|
||||||
|
X+11500Y+9000D03*
|
||||||
|
X+11500Y+8000D03*
|
||||||
|
X+11500Y+7000D03*
|
||||||
|
X+11500Y+6000D03*
|
||||||
|
X+11500Y+5000D03*
|
||||||
|
X+11500Y+4000D03*
|
||||||
|
X+7500Y+18500D03*
|
||||||
|
X+7500Y+17500D03*
|
||||||
|
X+7500Y+16500D03*
|
||||||
|
G54D38*
|
||||||
|
X+15000Y+7000D03*
|
||||||
|
X+16000Y+7000D03*
|
||||||
|
X+17000Y+7000D03*
|
||||||
|
X+15000Y+1000D03*
|
||||||
|
X+17000Y+1000D03*
|
||||||
|
G54D39*
|
||||||
|
X+14000Y+4000D03*
|
||||||
|
X+18000Y+4000D03*
|
||||||
|
G54D40*
|
||||||
|
X+21250Y+6000D03*
|
||||||
|
X+23250Y+4500D03*
|
||||||
|
X+24000Y+6000D03*
|
||||||
|
G54D31*
|
||||||
|
X+1500Y+6500D03*
|
||||||
|
X+1500Y+5500D03*
|
||||||
|
X+1500Y+4500D03*
|
||||||
|
G54D41*
|
||||||
|
X+9000Y+6000D03*
|
||||||
|
X+10240Y+6000D03*
|
||||||
|
X+9000Y+5000D03*
|
||||||
|
X+10240Y+5000D03*
|
||||||
|
X+9000Y+4000D03*
|
||||||
|
X+10240Y+4000D03*
|
||||||
|
X+6740Y+9000D03*
|
||||||
|
X+5500Y+9000D03*
|
||||||
|
X+9250Y+10000D03*
|
||||||
|
X+10490Y+10000D03*
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
M00*
|
||||||
115
gerber/baliseHF_pico2350/baliseHF_pico2350 - CADCAM Drill.TXT
Normal file
115
gerber/baliseHF_pico2350/baliseHF_pico2350 - CADCAM Drill.TXT
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
M48
|
||||||
|
INCH
|
||||||
|
T01C0.0150
|
||||||
|
T02C0.1181
|
||||||
|
T03C0.0400
|
||||||
|
T04C0.0314
|
||||||
|
T05C0.0600
|
||||||
|
T06C0.0320
|
||||||
|
T07C0.0300
|
||||||
|
T08C0.0433
|
||||||
|
T09C0.0826
|
||||||
|
T10C0.0787
|
||||||
|
%
|
||||||
|
T01
|
||||||
|
X+017600Y+010600
|
||||||
|
X+016600Y+001800
|
||||||
|
X+017000Y+005000
|
||||||
|
X+017200Y+013000
|
||||||
|
X+017200Y+011400
|
||||||
|
X+000575Y+007310
|
||||||
|
T02
|
||||||
|
X+024000Y+002000
|
||||||
|
X+002000Y+002000
|
||||||
|
X+002000Y+022500
|
||||||
|
X+023500Y+022500
|
||||||
|
X+002500Y+017500
|
||||||
|
X+004000Y+015500
|
||||||
|
X+005000Y+017500
|
||||||
|
T03
|
||||||
|
X+018500Y+012000
|
||||||
|
X+018500Y+011000
|
||||||
|
X+018500Y+010000
|
||||||
|
X+018500Y+009000
|
||||||
|
X+018500Y+008000
|
||||||
|
X+022000Y+003000
|
||||||
|
X+022000Y+001228
|
||||||
|
X+019440Y+001228
|
||||||
|
X+019440Y+003000
|
||||||
|
X+001500Y+013500
|
||||||
|
X+001500Y+012500
|
||||||
|
X+001500Y+011500
|
||||||
|
X+001500Y+010500
|
||||||
|
X+007500Y+021500
|
||||||
|
X+011500Y+021500
|
||||||
|
X+013500Y+021500
|
||||||
|
X+017500Y+021500
|
||||||
|
X+001500Y+019500
|
||||||
|
X+005500Y+019500
|
||||||
|
X+004500Y+004000
|
||||||
|
X+004500Y+005000
|
||||||
|
X+004500Y+006000
|
||||||
|
X+004500Y+007000
|
||||||
|
X+004500Y+008000
|
||||||
|
X+004500Y+009000
|
||||||
|
X+004500Y+010000
|
||||||
|
X+004500Y+011000
|
||||||
|
X+004500Y+012000
|
||||||
|
X+011500Y+012000
|
||||||
|
X+011500Y+011000
|
||||||
|
X+011500Y+010000
|
||||||
|
X+011500Y+009000
|
||||||
|
X+011500Y+008000
|
||||||
|
X+011500Y+007000
|
||||||
|
X+011500Y+006000
|
||||||
|
X+011500Y+005000
|
||||||
|
X+011500Y+004000
|
||||||
|
X+007500Y+018500
|
||||||
|
X+007500Y+017500
|
||||||
|
X+007500Y+016500
|
||||||
|
X+001500Y+006500
|
||||||
|
X+001500Y+005500
|
||||||
|
X+001500Y+004500
|
||||||
|
T04
|
||||||
|
X+004500Y+023500
|
||||||
|
X+004500Y+021531
|
||||||
|
X+021000Y+021531
|
||||||
|
X+021000Y+023500
|
||||||
|
T05
|
||||||
|
X+024000Y+019000
|
||||||
|
X+024000Y+017000
|
||||||
|
X+022000Y+017000
|
||||||
|
X+022000Y+019000
|
||||||
|
X+023000Y+018000
|
||||||
|
X+023000Y+014000
|
||||||
|
T06
|
||||||
|
X+013000Y+015500
|
||||||
|
X+013500Y+015000
|
||||||
|
X+014000Y+015500
|
||||||
|
T07
|
||||||
|
X+017500Y+017000
|
||||||
|
X+015500Y+017000
|
||||||
|
X+015500Y+016000
|
||||||
|
X+017500Y+016000
|
||||||
|
X+018750Y+016000
|
||||||
|
X+019750Y+016000
|
||||||
|
X+015000Y+019000
|
||||||
|
X+017000Y+019000
|
||||||
|
X+012000Y+018500
|
||||||
|
X+010000Y+018500
|
||||||
|
X+011000Y+016000
|
||||||
|
X+010000Y+016000
|
||||||
|
T08
|
||||||
|
X+015000Y+007000
|
||||||
|
X+016000Y+007000
|
||||||
|
X+017000Y+007000
|
||||||
|
X+015000Y+001000
|
||||||
|
X+017000Y+001000
|
||||||
|
T09
|
||||||
|
X+014000Y+004000
|
||||||
|
X+018000Y+004000
|
||||||
|
T10
|
||||||
|
X+021250Y+006000
|
||||||
|
X+023250Y+004500
|
||||||
|
X+024000Y+006000
|
||||||
|
M30
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
M00*
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
LABCENTER PROTEUS TOOL INFORMATION FILE
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
In case of difficulty, please e-mail support@labcenter.co.uk
|
||||||
|
|
||||||
|
Tool set up for Proteus layout 'baliseHF_pico2350.LYT'.
|
||||||
|
CADCAM generated at 11:10:26 AM on March-21-26.
|
||||||
|
|
||||||
|
File List
|
||||||
|
---------
|
||||||
|
Top Copper : baliseHF_pico2350 - CADCAM Top Copper.TXT
|
||||||
|
Bottom Copper : baliseHF_pico2350 - CADCAM Bottom Copper.TXT
|
||||||
|
Top Silk Screen : baliseHF_pico2350 - CADCAM Top Silk Screen.TXT
|
||||||
|
Bottom Silk Screen : baliseHF_pico2350 - CADCAM Bottom Silk Screen.TXT
|
||||||
|
Top Solder Resist : baliseHF_pico2350 - CADCAM Top Solder Resist.TXT
|
||||||
|
Bottom Solder Resist : baliseHF_pico2350 - CADCAM Bottom Solder Resist.TXT
|
||||||
|
Top SMT Paste Mask : baliseHF_pico2350 - CADCAM Top SMT Paste Mask.TXT
|
||||||
|
Bottom SMT Paste Mask : baliseHF_pico2350 - CADCAM Bottom SMT Paste Mask.TXT
|
||||||
|
Mechanical 1 : baliseHF_pico2350 - CADCAM Mechanical 1.TXT
|
||||||
|
Drill : baliseHF_pico2350 - CADCAM Drill.TXT
|
||||||
|
|
||||||
|
Photoplotter Setup
|
||||||
|
------------------
|
||||||
|
Format: RS274X, ASCII, 2.4, imperial, absolute, eob=*, LZO
|
||||||
|
Notes: D=Diameter, S=Side, W=Width, H=Height, C=Chamfer
|
||||||
|
|
||||||
|
D10 CIRCLE D=20th DRAW
|
||||||
|
D11 CIRCLE D=40th DRAW
|
||||||
|
D12 CIRCLE D=40th FLASH
|
||||||
|
D13 CIRCLE D=250th FLASH
|
||||||
|
D14 SQUARE S=80th FLASH
|
||||||
|
D15 CIRCLE D=100th FLASH
|
||||||
|
D16 RECT W=80th H=50th FLASH
|
||||||
|
D17 CIRCLE D=120th FLASH
|
||||||
|
D18 DIL W=150th H=200th C=30th FLASH
|
||||||
|
D19 DIL W=200th H=150th C=30th FLASH
|
||||||
|
D70 SQUARE S=150th FLASH
|
||||||
|
D71 CIRCLE D=60th FLASH
|
||||||
|
D20 CIRCLE D=70th FLASH
|
||||||
|
D21 CIRCLE D=90th FLASH
|
||||||
|
D22 CIRCLE D=80th FLASH
|
||||||
|
D23 RECT W=60th H=40th FLASH
|
||||||
|
D24 DIL W=60th H=100th C=12th FLASH
|
||||||
|
D25 CIRCLE D=150th FLASH
|
||||||
|
D26 DIL W=200th H=90th C=16th FLASH
|
||||||
|
D27 CIRCLE D=8th DRAW
|
||||||
|
D28 CIRCLE D=30th DRAW
|
||||||
|
D29 CIRCLE D=2.5th DRAW
|
||||||
|
D72 CIRCLE D=10th DRAW
|
||||||
|
D73 RECT W=40th H=60th FLASH
|
||||||
|
D30 CIRCLE D=290th FLASH
|
||||||
|
D31 SQUARE S=100th FLASH
|
||||||
|
D32 RECT W=100th H=70th FLASH
|
||||||
|
D33 DIL W=170th H=220th C=30th FLASH
|
||||||
|
D34 DIL W=220th H=170th C=30th FLASH
|
||||||
|
D35 SQUARE S=180th FLASH
|
||||||
|
D36 CIRCLE D=110th FLASH
|
||||||
|
D37 RECT W=80th H=60th FLASH
|
||||||
|
D38 DIL W=80th H=120th C=12th FLASH
|
||||||
|
D39 CIRCLE D=180th FLASH
|
||||||
|
D40 DIL W=220th H=110th C=16th FLASH
|
||||||
|
D41 RECT W=60th H=80th FLASH
|
||||||
|
|
||||||
|
NC Drill Setup
|
||||||
|
--------------
|
||||||
|
Format: ASCII, 2.4, imperial, absolute, eob=<CR><LF>, no zero suppression.
|
||||||
|
Notes: Tool sizes are diameters. Layer sets are in brackets - 0=TOP, 15=BOTTOM, 1-14=INNER.
|
||||||
|
|
||||||
|
T01 15th (0-15)
|
||||||
|
T02 118.1th (0-15)
|
||||||
|
T03 40th (0-15)
|
||||||
|
T04 31.4th (0-15)
|
||||||
|
T05 60th (0-15)
|
||||||
|
T06 32th (0-15)
|
||||||
|
T07 30th (0-15)
|
||||||
|
T08 43.3th (0-15)
|
||||||
|
T09 82.6th (0-15)
|
||||||
|
T10 78.7th (0-15)
|
||||||
|
|
||||||
|
|
||||||
|
[END OF FILE]
|
||||||
|
|
@ -0,0 +1,342 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD10C,0.0200*%
|
||||||
|
%ADD11C,0.0400*%
|
||||||
|
%ADD12C,0.0400*%
|
||||||
|
%ADD13C,0.2500*%
|
||||||
|
%ADD14R,0.0800X0.0800*%
|
||||||
|
%ADD15C,0.1000*%
|
||||||
|
%ADD16R,0.0800X0.0500*%
|
||||||
|
%ADD17C,0.1200*%
|
||||||
|
%AMDIL008*4,1,8,-0.0750,0.0700,
|
||||||
|
-0.0450,0.1000,0.0450,0.1000,0.0750,0.0700,0.0750,-0.0700,
|
||||||
|
0.0450,-0.1000,-0.0450,-0.1000,-0.0750,-0.0700,-0.0750,0.0700,0*
|
||||||
|
*%
|
||||||
|
%ADD18DIL008*%
|
||||||
|
%AMDIL009*4,1,8,-0.1000,0.0450,
|
||||||
|
-0.0700,0.0750,0.0700,0.0750,0.1000,0.0450,0.1000,-0.0450,
|
||||||
|
0.0700,-0.0750,-0.0700,-0.0750,-0.1000,-0.0450,-0.1000,0.0450,0*
|
||||||
|
*%
|
||||||
|
%ADD19DIL009*%
|
||||||
|
%ADD70R,0.1500X0.1500*%
|
||||||
|
%ADD71C,0.0600*%
|
||||||
|
%ADD20C,0.0700*%
|
||||||
|
%ADD21C,0.0900*%
|
||||||
|
%ADD22C,0.0800*%
|
||||||
|
%ADD23R,0.0600X0.0400*%
|
||||||
|
%AMDIL016*4,1,8,-0.0300,0.0380,
|
||||||
|
-0.0180,0.0500,0.0180,0.0500,0.0300,0.0380,0.0300,-0.0380,
|
||||||
|
0.0180,-0.0500,-0.0180,-0.0500,-0.0300,-0.0380,-0.0300,0.0380,0*
|
||||||
|
*%
|
||||||
|
%ADD24DIL016*%
|
||||||
|
%ADD25C,0.1500*%
|
||||||
|
%AMDIL018*4,1,8,-0.1000,0.0290,
|
||||||
|
-0.0840,0.0450,0.0840,0.0450,0.1000,0.0290,0.1000,-0.0290,
|
||||||
|
0.0840,-0.0450,-0.0840,-0.0450,-0.1000,-0.0290,-0.1000,0.0290,0*
|
||||||
|
*%
|
||||||
|
%ADD26DIL018*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
G54D10*
|
||||||
|
X+15500Y+16000D02*
|
||||||
|
X+16500Y+17000D01*
|
||||||
|
X+17500Y+17000D01*
|
||||||
|
G54D11*
|
||||||
|
X+5000Y+17500D02*
|
||||||
|
X+4000Y+17500D01*
|
||||||
|
X+3600Y+17900D01*
|
||||||
|
X+3600Y+19000D01*
|
||||||
|
X+3100Y+19500D01*
|
||||||
|
X+1500Y+19500D01*
|
||||||
|
G54D10*
|
||||||
|
X+15500Y+16999D02*
|
||||||
|
X+15500Y+17000D01*
|
||||||
|
G54D11*
|
||||||
|
X+14400Y+16999D01*
|
||||||
|
X+14000Y+16599D01*
|
||||||
|
X+14000Y+15500D01*
|
||||||
|
G54D10*
|
||||||
|
X+19440Y+3000D02*
|
||||||
|
X+22000Y+3000D01*
|
||||||
|
X+17600Y+10600D02*
|
||||||
|
X+17600Y+11600D01*
|
||||||
|
X+17200Y+12000D01*
|
||||||
|
X+11500Y+12000D01*
|
||||||
|
X+4500Y+10000D02*
|
||||||
|
X+3000Y+10000D01*
|
||||||
|
X+2500Y+9500D01*
|
||||||
|
X+2500Y+8260D02*
|
||||||
|
X+1840Y+8260D01*
|
||||||
|
X+1600Y+8020D01*
|
||||||
|
X+1000Y+8020D01*
|
||||||
|
G54D11*
|
||||||
|
X+7500Y+18500D02*
|
||||||
|
X+6500Y+19500D01*
|
||||||
|
X+5500Y+19500D01*
|
||||||
|
G54D10*
|
||||||
|
X+18500Y+12000D02*
|
||||||
|
X+17900Y+12600D01*
|
||||||
|
X+6800Y+12600D01*
|
||||||
|
X+6400Y+12200D01*
|
||||||
|
X+6400Y+6400D01*
|
||||||
|
X+6000Y+6000D01*
|
||||||
|
X+4500Y+6000D01*
|
||||||
|
X+10000Y+16000D02*
|
||||||
|
X+8500Y+17500D01*
|
||||||
|
X+7500Y+17500D01*
|
||||||
|
X+13000Y+15500D02*
|
||||||
|
X+13000Y+14600D01*
|
||||||
|
X+13400Y+14200D01*
|
||||||
|
X+17950Y+14200D01*
|
||||||
|
X+19750Y+16000D01*
|
||||||
|
X+23500Y+22500D02*
|
||||||
|
X+22000Y+22500D01*
|
||||||
|
X+21000Y+23500D01*
|
||||||
|
X+2000Y+22500D02*
|
||||||
|
X+3500Y+22500D01*
|
||||||
|
X+4500Y+23500D01*
|
||||||
|
X+24000Y+2000D02*
|
||||||
|
X+22000Y+2000D01*
|
||||||
|
X+22000Y+1228D01*
|
||||||
|
X+13000Y+15500D02*
|
||||||
|
X+12000Y+15500D01*
|
||||||
|
X+11500Y+15000D01*
|
||||||
|
X+10400Y+15000D01*
|
||||||
|
X+10000Y+15400D01*
|
||||||
|
X+10000Y+16000D01*
|
||||||
|
X+16600Y+1800D02*
|
||||||
|
X+16200Y+2200D01*
|
||||||
|
X+15400Y+2200D01*
|
||||||
|
X+15000Y+1800D01*
|
||||||
|
X+15000Y+1000D01*
|
||||||
|
X+22000Y+1228D02*
|
||||||
|
X+20200Y+1228D01*
|
||||||
|
X+20199Y+1228D01*
|
||||||
|
X+19440Y+1228D01*
|
||||||
|
X+19440Y+1228D01*
|
||||||
|
X+24000Y+19000D02*
|
||||||
|
X+22000Y+19000D01*
|
||||||
|
X+24000Y+17000D02*
|
||||||
|
X+22000Y+17000D01*
|
||||||
|
X+22000Y+17000D01*
|
||||||
|
X+19440Y+1228D02*
|
||||||
|
X+18800Y+1228D01*
|
||||||
|
X+18228Y+1800D01*
|
||||||
|
X+16600Y+1800D01*
|
||||||
|
X+4500Y+9000D02*
|
||||||
|
X+5200Y+9000D01*
|
||||||
|
X+5200Y+13400D01*
|
||||||
|
X+5600Y+13800D01*
|
||||||
|
X+19200Y+13800D01*
|
||||||
|
X+19600Y+13400D01*
|
||||||
|
X+19600Y+6400D01*
|
||||||
|
X+20000Y+6000D01*
|
||||||
|
X+21250Y+6000D01*
|
||||||
|
X+11500Y+8000D02*
|
||||||
|
X+8200Y+8000D01*
|
||||||
|
X+7794Y+7594D01*
|
||||||
|
X+7794Y+3400D01*
|
||||||
|
X+7394Y+3000D01*
|
||||||
|
X+4000Y+3000D01*
|
||||||
|
X+3600Y+3400D01*
|
||||||
|
X+3600Y+5000D01*
|
||||||
|
X+3100Y+5500D01*
|
||||||
|
X+1500Y+5500D01*
|
||||||
|
X+11500Y+5000D02*
|
||||||
|
X+17000Y+5000D01*
|
||||||
|
X+11500Y+10000D02*
|
||||||
|
X+13600Y+10000D01*
|
||||||
|
X+14000Y+9600D01*
|
||||||
|
X+14000Y+5800D01*
|
||||||
|
X+14400Y+5400D01*
|
||||||
|
X+18400Y+5400D01*
|
||||||
|
X+19300Y+4500D01*
|
||||||
|
X+23250Y+4500D01*
|
||||||
|
X+11500Y+11000D02*
|
||||||
|
X+16000Y+11000D01*
|
||||||
|
X+16400Y+10600D01*
|
||||||
|
X+16400Y+8400D01*
|
||||||
|
X+16800Y+8000D01*
|
||||||
|
X+18500Y+8000D01*
|
||||||
|
X+17200Y+13000D02*
|
||||||
|
X+6400Y+13000D01*
|
||||||
|
X+6000Y+12600D01*
|
||||||
|
X+6000Y+7400D01*
|
||||||
|
X+5600Y+7000D01*
|
||||||
|
X+4500Y+7000D01*
|
||||||
|
X+17200Y+11400D02*
|
||||||
|
X+17200Y+9400D01*
|
||||||
|
X+17600Y+9000D01*
|
||||||
|
X+18500Y+9000D01*
|
||||||
|
X+1500Y+11500D02*
|
||||||
|
X+2200Y+11500D01*
|
||||||
|
X+2700Y+12000D01*
|
||||||
|
X+4500Y+12000D01*
|
||||||
|
X+4500Y+11000D02*
|
||||||
|
X+3800Y+11000D01*
|
||||||
|
X+3300Y+10500D01*
|
||||||
|
X+1500Y+10500D01*
|
||||||
|
X+18500Y+10000D02*
|
||||||
|
X+19200Y+10000D01*
|
||||||
|
X+19200Y+13000D01*
|
||||||
|
X+18800Y+13400D01*
|
||||||
|
X+6000Y+13400D01*
|
||||||
|
X+5600Y+13000D01*
|
||||||
|
X+5600Y+8400D01*
|
||||||
|
X+5200Y+8000D01*
|
||||||
|
X+4500Y+8000D01*
|
||||||
|
G54D11*
|
||||||
|
X+12000Y+18500D02*
|
||||||
|
X+12600Y+18500D01*
|
||||||
|
X+13100Y+19000D01*
|
||||||
|
X+15000Y+19000D01*
|
||||||
|
G54D10*
|
||||||
|
X+11500Y+7000D02*
|
||||||
|
X+9600Y+7000D01*
|
||||||
|
X+8600Y+6000D01*
|
||||||
|
X+8600Y+3500D01*
|
||||||
|
X+7600Y+2500D01*
|
||||||
|
X+3712Y+2500D01*
|
||||||
|
X+3500Y+2712D01*
|
||||||
|
X+3500Y+3034D01*
|
||||||
|
X+3308Y+3226D01*
|
||||||
|
X+2773Y+3226D01*
|
||||||
|
X+2542Y+3457D01*
|
||||||
|
X+1291Y+3457D01*
|
||||||
|
X+400Y+4348D01*
|
||||||
|
X+400Y+6000D01*
|
||||||
|
X+900Y+6500D01*
|
||||||
|
X+1500Y+6500D01*
|
||||||
|
X+1000Y+9500D02*
|
||||||
|
X+400Y+9500D01*
|
||||||
|
X+1500Y+13500D02*
|
||||||
|
X+800Y+13500D01*
|
||||||
|
X+400Y+13100D01*
|
||||||
|
X+400Y+9500D01*
|
||||||
|
X+400Y+7550D01*
|
||||||
|
X+575Y+7310D01*
|
||||||
|
G54D12*
|
||||||
|
X+17600Y+10600D03*
|
||||||
|
X+16600Y+1800D03*
|
||||||
|
X+17000Y+5000D03*
|
||||||
|
X+17200Y+13000D03*
|
||||||
|
X+17200Y+11400D03*
|
||||||
|
X+575Y+7310D03*
|
||||||
|
G54D13*
|
||||||
|
X+24000Y+2000D03*
|
||||||
|
X+2000Y+2000D03*
|
||||||
|
X+2000Y+22500D03*
|
||||||
|
X+23500Y+22500D03*
|
||||||
|
G54D14*
|
||||||
|
X+18500Y+12000D03*
|
||||||
|
X+18500Y+11000D03*
|
||||||
|
X+18500Y+10000D03*
|
||||||
|
X+18500Y+9000D03*
|
||||||
|
X+18500Y+8000D03*
|
||||||
|
X+22000Y+3000D03*
|
||||||
|
X+22000Y+1228D03*
|
||||||
|
X+19440Y+1228D03*
|
||||||
|
X+19440Y+3000D03*
|
||||||
|
X+1500Y+13500D03*
|
||||||
|
X+1500Y+12500D03*
|
||||||
|
X+1500Y+11500D03*
|
||||||
|
X+1500Y+10500D03*
|
||||||
|
G54D15*
|
||||||
|
X+4500Y+23500D03*
|
||||||
|
X+4500Y+21531D03*
|
||||||
|
X+21000Y+21531D03*
|
||||||
|
X+21000Y+23500D03*
|
||||||
|
G54D16*
|
||||||
|
X+1000Y+8020D03*
|
||||||
|
X+1000Y+9500D03*
|
||||||
|
G54D17*
|
||||||
|
X+24000Y+19000D03*
|
||||||
|
X+24000Y+17000D03*
|
||||||
|
X+22000Y+17000D03*
|
||||||
|
X+22000Y+19000D03*
|
||||||
|
X+23000Y+18000D03*
|
||||||
|
G54D18*
|
||||||
|
X+2500Y+17500D03*
|
||||||
|
G54D19*
|
||||||
|
X+4000Y+15500D03*
|
||||||
|
G54D18*
|
||||||
|
X+5000Y+17500D03*
|
||||||
|
G54D70*
|
||||||
|
X+23000Y+14000D03*
|
||||||
|
G54D71*
|
||||||
|
X+13000Y+15500D03*
|
||||||
|
X+13500Y+15000D03*
|
||||||
|
X+14000Y+15500D03*
|
||||||
|
G54D20*
|
||||||
|
X+17500Y+17000D03*
|
||||||
|
X+15500Y+17000D03*
|
||||||
|
X+15500Y+16000D03*
|
||||||
|
X+17500Y+16000D03*
|
||||||
|
G54D21*
|
||||||
|
X+7500Y+21500D03*
|
||||||
|
X+11500Y+21500D03*
|
||||||
|
X+13500Y+21500D03*
|
||||||
|
X+17500Y+21500D03*
|
||||||
|
G54D22*
|
||||||
|
X+18750Y+16000D03*
|
||||||
|
X+19750Y+16000D03*
|
||||||
|
G54D20*
|
||||||
|
X+15000Y+19000D03*
|
||||||
|
X+17000Y+19000D03*
|
||||||
|
X+12000Y+18500D03*
|
||||||
|
X+10000Y+18500D03*
|
||||||
|
G54D22*
|
||||||
|
X+11000Y+16000D03*
|
||||||
|
X+10000Y+16000D03*
|
||||||
|
G54D21*
|
||||||
|
X+1500Y+19500D03*
|
||||||
|
X+5500Y+19500D03*
|
||||||
|
G54D23*
|
||||||
|
X+2500Y+9500D03*
|
||||||
|
X+2500Y+8260D03*
|
||||||
|
G54D14*
|
||||||
|
X+4500Y+4000D03*
|
||||||
|
X+4500Y+5000D03*
|
||||||
|
X+4500Y+6000D03*
|
||||||
|
X+4500Y+7000D03*
|
||||||
|
X+4500Y+8000D03*
|
||||||
|
X+4500Y+9000D03*
|
||||||
|
X+4500Y+10000D03*
|
||||||
|
X+4500Y+11000D03*
|
||||||
|
X+4500Y+12000D03*
|
||||||
|
X+11500Y+12000D03*
|
||||||
|
X+11500Y+11000D03*
|
||||||
|
X+11500Y+10000D03*
|
||||||
|
X+11500Y+9000D03*
|
||||||
|
X+11500Y+8000D03*
|
||||||
|
X+11500Y+7000D03*
|
||||||
|
X+11500Y+6000D03*
|
||||||
|
X+11500Y+5000D03*
|
||||||
|
X+11500Y+4000D03*
|
||||||
|
X+7500Y+18500D03*
|
||||||
|
X+7500Y+17500D03*
|
||||||
|
X+7500Y+16500D03*
|
||||||
|
G54D24*
|
||||||
|
X+15000Y+7000D03*
|
||||||
|
X+16000Y+7000D03*
|
||||||
|
X+17000Y+7000D03*
|
||||||
|
X+15000Y+1000D03*
|
||||||
|
X+17000Y+1000D03*
|
||||||
|
G54D25*
|
||||||
|
X+14000Y+4000D03*
|
||||||
|
X+18000Y+4000D03*
|
||||||
|
G54D26*
|
||||||
|
X+21250Y+6000D03*
|
||||||
|
X+23250Y+4500D03*
|
||||||
|
X+24000Y+6000D03*
|
||||||
|
G54D14*
|
||||||
|
X+1500Y+6500D03*
|
||||||
|
X+1500Y+5500D03*
|
||||||
|
X+1500Y+4500D03*
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
M00*
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD16R,0.0800X0.0500*%
|
||||||
|
%ADD23R,0.0600X0.0400*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
G54D16*
|
||||||
|
X+1000Y+8020D03*
|
||||||
|
X+1000Y+9500D03*
|
||||||
|
G54D23*
|
||||||
|
X+2500Y+9500D03*
|
||||||
|
X+2500Y+8260D03*
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
M00*
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,161 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD71C,0.0600*%
|
||||||
|
%ADD30C,0.2900*%
|
||||||
|
%ADD31R,0.1000X0.1000*%
|
||||||
|
%ADD17C,0.1200*%
|
||||||
|
%ADD32R,0.1000X0.0700*%
|
||||||
|
%ADD25C,0.1500*%
|
||||||
|
%AMDIL027*4,1,8,-0.0850,0.0800,
|
||||||
|
-0.0550,0.1100,0.0550,0.1100,0.0850,0.0800,0.0850,-0.0800,
|
||||||
|
0.0550,-0.1100,-0.0550,-0.1100,-0.0850,-0.0800,-0.0850,0.0800,0*
|
||||||
|
*%
|
||||||
|
%ADD33DIL027*%
|
||||||
|
%AMDIL028*4,1,8,-0.1100,0.0550,
|
||||||
|
-0.0800,0.0850,0.0800,0.0850,0.1100,0.0550,0.1100,-0.0550,
|
||||||
|
0.0800,-0.0850,-0.0800,-0.0850,-0.1100,-0.0550,-0.1100,0.0550,0*
|
||||||
|
*%
|
||||||
|
%ADD34DIL028*%
|
||||||
|
%ADD35R,0.1800X0.1800*%
|
||||||
|
%ADD21C,0.0900*%
|
||||||
|
%ADD36C,0.1100*%
|
||||||
|
%ADD15C,0.1000*%
|
||||||
|
%ADD37R,0.0800X0.0600*%
|
||||||
|
%AMDIL032*4,1,8,-0.0400,0.0480,
|
||||||
|
-0.0280,0.0600,0.0280,0.0600,0.0400,0.0480,0.0400,-0.0480,
|
||||||
|
0.0280,-0.0600,-0.0280,-0.0600,-0.0400,-0.0480,-0.0400,0.0480,0*
|
||||||
|
*%
|
||||||
|
%ADD38DIL032*%
|
||||||
|
%ADD39C,0.1800*%
|
||||||
|
%AMDIL034*4,1,8,-0.1100,0.0390,
|
||||||
|
-0.0940,0.0550,0.0940,0.0550,0.1100,0.0390,0.1100,-0.0390,
|
||||||
|
0.0940,-0.0550,-0.0940,-0.0550,-0.1100,-0.0390,-0.1100,0.0390,0*
|
||||||
|
*%
|
||||||
|
%ADD40DIL034*%
|
||||||
|
%ADD27C,0.0080*%
|
||||||
|
G54D71*
|
||||||
|
X+17600Y+10600D03*
|
||||||
|
X+16600Y+1800D03*
|
||||||
|
X+17000Y+5000D03*
|
||||||
|
X+17200Y+13000D03*
|
||||||
|
X+17200Y+11400D03*
|
||||||
|
X+575Y+7310D03*
|
||||||
|
G54D30*
|
||||||
|
X+24000Y+2000D03*
|
||||||
|
X+2000Y+2000D03*
|
||||||
|
X+2000Y+22500D03*
|
||||||
|
X+23500Y+22500D03*
|
||||||
|
G54D31*
|
||||||
|
X+18500Y+12000D03*
|
||||||
|
X+18500Y+11000D03*
|
||||||
|
X+18500Y+10000D03*
|
||||||
|
X+18500Y+9000D03*
|
||||||
|
X+18500Y+8000D03*
|
||||||
|
X+22000Y+3000D03*
|
||||||
|
X+22000Y+1228D03*
|
||||||
|
X+19440Y+1228D03*
|
||||||
|
X+19440Y+3000D03*
|
||||||
|
X+1500Y+13500D03*
|
||||||
|
X+1500Y+12500D03*
|
||||||
|
X+1500Y+11500D03*
|
||||||
|
X+1500Y+10500D03*
|
||||||
|
G54D17*
|
||||||
|
X+4500Y+23500D03*
|
||||||
|
X+4500Y+21531D03*
|
||||||
|
X+21000Y+21531D03*
|
||||||
|
X+21000Y+23500D03*
|
||||||
|
G54D32*
|
||||||
|
X+1000Y+8020D03*
|
||||||
|
X+1000Y+9500D03*
|
||||||
|
G54D25*
|
||||||
|
X+24000Y+19000D03*
|
||||||
|
X+24000Y+17000D03*
|
||||||
|
X+22000Y+17000D03*
|
||||||
|
X+22000Y+19000D03*
|
||||||
|
X+23000Y+18000D03*
|
||||||
|
G54D33*
|
||||||
|
X+2500Y+17500D03*
|
||||||
|
G54D34*
|
||||||
|
X+4000Y+15500D03*
|
||||||
|
G54D33*
|
||||||
|
X+5000Y+17500D03*
|
||||||
|
G54D35*
|
||||||
|
X+23000Y+14000D03*
|
||||||
|
G54D71*
|
||||||
|
X+13000Y+15500D03*
|
||||||
|
X+13500Y+15000D03*
|
||||||
|
X+14000Y+15500D03*
|
||||||
|
G54D21*
|
||||||
|
X+17500Y+17000D03*
|
||||||
|
X+15500Y+17000D03*
|
||||||
|
X+15500Y+16000D03*
|
||||||
|
X+17500Y+16000D03*
|
||||||
|
G54D36*
|
||||||
|
X+7500Y+21500D03*
|
||||||
|
X+11500Y+21500D03*
|
||||||
|
X+13500Y+21500D03*
|
||||||
|
X+17500Y+21500D03*
|
||||||
|
G54D15*
|
||||||
|
X+18750Y+16000D03*
|
||||||
|
X+19750Y+16000D03*
|
||||||
|
G54D21*
|
||||||
|
X+15000Y+19000D03*
|
||||||
|
X+17000Y+19000D03*
|
||||||
|
X+12000Y+18500D03*
|
||||||
|
X+10000Y+18500D03*
|
||||||
|
G54D15*
|
||||||
|
X+11000Y+16000D03*
|
||||||
|
X+10000Y+16000D03*
|
||||||
|
G54D36*
|
||||||
|
X+1500Y+19500D03*
|
||||||
|
X+5500Y+19500D03*
|
||||||
|
G54D37*
|
||||||
|
X+2500Y+9500D03*
|
||||||
|
X+2500Y+8260D03*
|
||||||
|
G54D31*
|
||||||
|
X+4500Y+4000D03*
|
||||||
|
X+4500Y+5000D03*
|
||||||
|
X+4500Y+6000D03*
|
||||||
|
X+4500Y+7000D03*
|
||||||
|
X+4500Y+8000D03*
|
||||||
|
X+4500Y+9000D03*
|
||||||
|
X+4500Y+10000D03*
|
||||||
|
X+4500Y+11000D03*
|
||||||
|
X+4500Y+12000D03*
|
||||||
|
X+11500Y+12000D03*
|
||||||
|
X+11500Y+11000D03*
|
||||||
|
X+11500Y+10000D03*
|
||||||
|
X+11500Y+9000D03*
|
||||||
|
X+11500Y+8000D03*
|
||||||
|
X+11500Y+7000D03*
|
||||||
|
X+11500Y+6000D03*
|
||||||
|
X+11500Y+5000D03*
|
||||||
|
X+11500Y+4000D03*
|
||||||
|
X+7500Y+18500D03*
|
||||||
|
X+7500Y+17500D03*
|
||||||
|
X+7500Y+16500D03*
|
||||||
|
G54D38*
|
||||||
|
X+15000Y+7000D03*
|
||||||
|
X+16000Y+7000D03*
|
||||||
|
X+17000Y+7000D03*
|
||||||
|
X+15000Y+1000D03*
|
||||||
|
X+17000Y+1000D03*
|
||||||
|
G54D39*
|
||||||
|
X+14000Y+4000D03*
|
||||||
|
X+18000Y+4000D03*
|
||||||
|
G54D40*
|
||||||
|
X+21250Y+6000D03*
|
||||||
|
X+23250Y+4500D03*
|
||||||
|
X+24000Y+6000D03*
|
||||||
|
G54D31*
|
||||||
|
X+1500Y+6500D03*
|
||||||
|
X+1500Y+5500D03*
|
||||||
|
X+1500Y+4500D03*
|
||||||
|
G54D27*
|
||||||
|
X+49Y+186D02*
|
||||||
|
X+25399Y+186D01*
|
||||||
|
X+25399Y+24647D01*
|
||||||
|
X+49Y+24647D01*
|
||||||
|
X+49Y+186D01*
|
||||||
|
M00*
|
||||||
Binary file not shown.
1464
gerber/filtre/filtre - CADCAM Bottom Copper.TXT
Normal file
1464
gerber/filtre/filtre - CADCAM Bottom Copper.TXT
Normal file
File diff suppressed because it is too large
Load Diff
11
gerber/filtre/filtre - CADCAM Bottom SMT Paste Mask.TXT
Normal file
11
gerber/filtre/filtre - CADCAM Bottom SMT Paste Mask.TXT
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
M00*
|
||||||
53
gerber/filtre/filtre - CADCAM Bottom Silk Screen.TXT
Normal file
53
gerber/filtre/filtre - CADCAM Bottom Silk Screen.TXT
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
%ADD12C,0.0100*%
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
G54D12*
|
||||||
|
X+827Y+3499D02*
|
||||||
|
X+827Y+3624D01*
|
||||||
|
X+627Y+3624D01*
|
||||||
|
X+627Y+3374D01*
|
||||||
|
X+827Y+3249D01*
|
||||||
|
X+1027Y+3249D01*
|
||||||
|
X+1227Y+3374D01*
|
||||||
|
X+1227Y+3561D01*
|
||||||
|
X+1127Y+3624D01*
|
||||||
|
X+627Y+3749D02*
|
||||||
|
X+1227Y+3749D01*
|
||||||
|
X+627Y+4124D01*
|
||||||
|
X+1227Y+4124D01*
|
||||||
|
X+627Y+4249D02*
|
||||||
|
X+1227Y+4249D01*
|
||||||
|
X+1227Y+4499D01*
|
||||||
|
X+1027Y+4624D01*
|
||||||
|
X+827Y+4624D01*
|
||||||
|
X+627Y+4499D01*
|
||||||
|
X+627Y+4249D01*
|
||||||
|
X+827Y+14249D02*
|
||||||
|
X+827Y+14374D01*
|
||||||
|
X+627Y+14374D01*
|
||||||
|
X+627Y+14124D01*
|
||||||
|
X+827Y+13999D01*
|
||||||
|
X+1027Y+13999D01*
|
||||||
|
X+1227Y+14124D01*
|
||||||
|
X+1227Y+14311D01*
|
||||||
|
X+1127Y+14374D01*
|
||||||
|
X+627Y+14499D02*
|
||||||
|
X+1227Y+14499D01*
|
||||||
|
X+627Y+14874D01*
|
||||||
|
X+1227Y+14874D01*
|
||||||
|
X+627Y+14999D02*
|
||||||
|
X+1227Y+14999D01*
|
||||||
|
X+1227Y+15249D01*
|
||||||
|
X+1027Y+15374D01*
|
||||||
|
X+827Y+15374D01*
|
||||||
|
X+627Y+15249D01*
|
||||||
|
X+627Y+14999D01*
|
||||||
|
M00*
|
||||||
34
gerber/filtre/filtre - CADCAM Bottom Solder Resist.TXT
Normal file
34
gerber/filtre/filtre - CADCAM Bottom Solder Resist.TXT
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD18C,0.1200*%
|
||||||
|
%ADD19R,0.1600X0.3000*%
|
||||||
|
%ADD71C,0.1100*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
G54D18*
|
||||||
|
X+1000Y+1000D03*
|
||||||
|
X+2968Y+1000D03*
|
||||||
|
X+2968Y+17500D03*
|
||||||
|
X+1000Y+17500D03*
|
||||||
|
G54D19*
|
||||||
|
X+3000Y+19700D03*
|
||||||
|
X+1000Y+19700D03*
|
||||||
|
G54D18*
|
||||||
|
X+3000Y+2500D03*
|
||||||
|
X+1000Y+2500D03*
|
||||||
|
X+3000Y+9250D03*
|
||||||
|
X+1000Y+9250D03*
|
||||||
|
X+3000Y+16250D03*
|
||||||
|
X+1000Y+16250D03*
|
||||||
|
G54D71*
|
||||||
|
X+3250Y+4000D03*
|
||||||
|
X+3250Y+8000D03*
|
||||||
|
X+3250Y+10500D03*
|
||||||
|
X+3250Y+14500D03*
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
M00*
|
||||||
22
gerber/filtre/filtre - CADCAM Drill.TXT
Normal file
22
gerber/filtre/filtre - CADCAM Drill.TXT
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
M48
|
||||||
|
INCH
|
||||||
|
T01C0.0314
|
||||||
|
T02C0.0400
|
||||||
|
%
|
||||||
|
T01
|
||||||
|
X+001000Y+001000
|
||||||
|
X+002968Y+001000
|
||||||
|
X+002968Y+017500
|
||||||
|
X+001000Y+017500
|
||||||
|
X+003000Y+002500
|
||||||
|
X+001000Y+002500
|
||||||
|
X+003000Y+009250
|
||||||
|
X+001000Y+009250
|
||||||
|
X+003000Y+016250
|
||||||
|
X+001000Y+016250
|
||||||
|
T02
|
||||||
|
X+003250Y+004000
|
||||||
|
X+003250Y+008000
|
||||||
|
X+003250Y+010500
|
||||||
|
X+003250Y+014500
|
||||||
|
M30
|
||||||
11
gerber/filtre/filtre - CADCAM Mechanical 1.TXT
Normal file
11
gerber/filtre/filtre - CADCAM Mechanical 1.TXT
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
M00*
|
||||||
49
gerber/filtre/filtre - CADCAM READ-ME.TXT
Normal file
49
gerber/filtre/filtre - CADCAM READ-ME.TXT
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
LABCENTER PROTEUS TOOL INFORMATION FILE
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
In case of difficulty, please e-mail support@labcenter.co.uk
|
||||||
|
|
||||||
|
Tool set up for Proteus layout 'filtre.LYT'.
|
||||||
|
CADCAM generated at 5:49:01 PM on September-06-25.
|
||||||
|
|
||||||
|
File List
|
||||||
|
---------
|
||||||
|
Top Copper : filtre - CADCAM Top Copper.TXT
|
||||||
|
Bottom Copper : filtre - CADCAM Bottom Copper.TXT
|
||||||
|
Top Silk Screen : filtre - CADCAM Top Silk Screen.TXT
|
||||||
|
Bottom Silk Screen : filtre - CADCAM Bottom Silk Screen.TXT
|
||||||
|
Top Solder Resist : filtre - CADCAM Top Solder Resist.TXT
|
||||||
|
Bottom Solder Resist : filtre - CADCAM Bottom Solder Resist.TXT
|
||||||
|
Top SMT Paste Mask : filtre - CADCAM Top SMT Paste Mask.TXT
|
||||||
|
Bottom SMT Paste Mask : filtre - CADCAM Bottom SMT Paste Mask.TXT
|
||||||
|
Mechanical 1 : filtre - CADCAM Mechanical 1.TXT
|
||||||
|
Drill : filtre - CADCAM Drill.TXT
|
||||||
|
|
||||||
|
Photoplotter Setup
|
||||||
|
------------------
|
||||||
|
Format: RS274X, ASCII, 2.4, imperial, absolute, eob=*, LZO
|
||||||
|
Notes: D=Diameter, S=Side, W=Width, H=Height, C=Chamfer
|
||||||
|
|
||||||
|
D10 CIRCLE D=40th DRAW
|
||||||
|
D11 CIRCLE D=2.5th DRAW
|
||||||
|
D12 CIRCLE D=10th DRAW
|
||||||
|
D13 CIRCLE D=100th FLASH
|
||||||
|
D14 RECT W=60th H=200th FLASH
|
||||||
|
D15 RECT W=40th H=60th FLASH
|
||||||
|
D16 CIRCLE D=90th FLASH
|
||||||
|
D17 CIRCLE D=8th DRAW
|
||||||
|
D18 CIRCLE D=120th FLASH
|
||||||
|
D19 RECT W=160th H=300th FLASH
|
||||||
|
D70 RECT W=60th H=80th FLASH
|
||||||
|
D71 CIRCLE D=110th FLASH
|
||||||
|
|
||||||
|
NC Drill Setup
|
||||||
|
--------------
|
||||||
|
Format: ASCII, 2.4, imperial, absolute, eob=<CR><LF>, no zero suppression.
|
||||||
|
Notes: Tool sizes are diameters. Layer sets are in brackets - 0=TOP, 15=BOTTOM, 1-14=INNER.
|
||||||
|
|
||||||
|
T01 31.4th (0-15)
|
||||||
|
T02 40th (0-15)
|
||||||
|
|
||||||
|
|
||||||
|
[END OF FILE]
|
||||||
1839
gerber/filtre/filtre - CADCAM Top Copper.TXT
Normal file
1839
gerber/filtre/filtre - CADCAM Top Copper.TXT
Normal file
File diff suppressed because it is too large
Load Diff
19
gerber/filtre/filtre - CADCAM Top SMT Paste Mask.TXT
Normal file
19
gerber/filtre/filtre - CADCAM Top SMT Paste Mask.TXT
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD15R,0.0400X0.0600*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
G54D15*
|
||||||
|
X+2240Y+4000D03*
|
||||||
|
X+1000Y+4000D03*
|
||||||
|
X+2240Y+10500D03*
|
||||||
|
X+1000Y+10500D03*
|
||||||
|
X+2240Y+14750D03*
|
||||||
|
X+1000Y+14750D03*
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
M00*
|
||||||
349
gerber/filtre/filtre - CADCAM Top Silk Screen.TXT
Normal file
349
gerber/filtre/filtre - CADCAM Top Silk Screen.TXT
Normal file
|
|
@ -0,0 +1,349 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
%ADD12C,0.0100*%
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
G54D12*
|
||||||
|
X+1221Y+5438D02*
|
||||||
|
X+621Y+5438D01*
|
||||||
|
X+621Y+5813D01*
|
||||||
|
X+921Y+5438D02*
|
||||||
|
X+921Y+5688D01*
|
||||||
|
X+1021Y+6313D02*
|
||||||
|
X+1021Y+5938D01*
|
||||||
|
X+621Y+6188D01*
|
||||||
|
X+1221Y+6188D01*
|
||||||
|
X+1021Y+6688D02*
|
||||||
|
X+1021Y+6813D01*
|
||||||
|
X+1221Y+6813D01*
|
||||||
|
X+1221Y+6563D01*
|
||||||
|
X+1021Y+6438D01*
|
||||||
|
X+821Y+6438D01*
|
||||||
|
X+621Y+6563D01*
|
||||||
|
X+621Y+6750D01*
|
||||||
|
X+721Y+6813D01*
|
||||||
|
X+821Y+6938D02*
|
||||||
|
X+621Y+7063D01*
|
||||||
|
X+621Y+7188D01*
|
||||||
|
X+821Y+7313D01*
|
||||||
|
X+1021Y+7313D01*
|
||||||
|
X+1221Y+7188D01*
|
||||||
|
X+1221Y+7063D01*
|
||||||
|
X+1021Y+6938D01*
|
||||||
|
X+821Y+6938D01*
|
||||||
|
X+1221Y+7438D02*
|
||||||
|
X+621Y+7438D01*
|
||||||
|
X+621Y+7813D02*
|
||||||
|
X+1221Y+7813D01*
|
||||||
|
X+921Y+7438D02*
|
||||||
|
X+921Y+7813D01*
|
||||||
|
X+1022Y+10673D02*
|
||||||
|
X+422Y+10673D01*
|
||||||
|
X+422Y+11048D01*
|
||||||
|
X+722Y+10673D02*
|
||||||
|
X+722Y+10923D01*
|
||||||
|
X+422Y+11235D02*
|
||||||
|
X+422Y+11485D01*
|
||||||
|
X+422Y+11360D02*
|
||||||
|
X+1022Y+11360D01*
|
||||||
|
X+1022Y+11235D02*
|
||||||
|
X+1022Y+11485D01*
|
||||||
|
X+422Y+11673D02*
|
||||||
|
X+1022Y+11673D01*
|
||||||
|
X+1022Y+12048D01*
|
||||||
|
X+422Y+12173D02*
|
||||||
|
X+422Y+12548D01*
|
||||||
|
X+422Y+12360D02*
|
||||||
|
X+1022Y+12360D01*
|
||||||
|
X+1022Y+13048D02*
|
||||||
|
X+1022Y+12673D01*
|
||||||
|
X+422Y+12673D01*
|
||||||
|
X+422Y+13048D01*
|
||||||
|
X+722Y+12673D02*
|
||||||
|
X+722Y+12923D01*
|
||||||
|
X+1022Y+13173D02*
|
||||||
|
X+422Y+13173D01*
|
||||||
|
X+422Y+13485D01*
|
||||||
|
X+522Y+13548D01*
|
||||||
|
X+622Y+13548D01*
|
||||||
|
X+722Y+13485D01*
|
||||||
|
X+722Y+13173D01*
|
||||||
|
X+722Y+13485D02*
|
||||||
|
X+822Y+13548D01*
|
||||||
|
X+1022Y+13548D01*
|
||||||
|
G54D17*
|
||||||
|
X-39Y+94D02*
|
||||||
|
X+3929Y+94D01*
|
||||||
|
X+3929Y+18407D01*
|
||||||
|
X-39Y+18407D01*
|
||||||
|
X-39Y+94D01*
|
||||||
|
X+265Y+14247D02*
|
||||||
|
X+625Y+14247D01*
|
||||||
|
X+625Y+14622D01*
|
||||||
|
X+625Y+14747D02*
|
||||||
|
X+265Y+14747D01*
|
||||||
|
X+265Y+15059D01*
|
||||||
|
X+325Y+15122D01*
|
||||||
|
X+385Y+15122D01*
|
||||||
|
X+445Y+15059D01*
|
||||||
|
X+445Y+14747D01*
|
||||||
|
X+385Y+15372D02*
|
||||||
|
X+265Y+15497D01*
|
||||||
|
X+625Y+15497D01*
|
||||||
|
X+500Y+18500D02*
|
||||||
|
X+3500Y+18500D01*
|
||||||
|
X+3500Y+20750D01*
|
||||||
|
X+500Y+20750D01*
|
||||||
|
X+500Y+18500D01*
|
||||||
|
X+1500Y+20280D02*
|
||||||
|
X+1500Y+20220D01*
|
||||||
|
X+1562Y+20160D01*
|
||||||
|
X+1812Y+20160D01*
|
||||||
|
X+1875Y+20220D01*
|
||||||
|
X+1875Y+20520D01*
|
||||||
|
X+2062Y+20520D02*
|
||||||
|
X+2375Y+20520D01*
|
||||||
|
X+2375Y+20460D01*
|
||||||
|
X+2062Y+20160D01*
|
||||||
|
X+3250Y+2500D02*
|
||||||
|
X+3225Y+2404D01*
|
||||||
|
X+3153Y+2326D01*
|
||||||
|
X+3039Y+2264D01*
|
||||||
|
X+2888Y+2214D01*
|
||||||
|
X+2491Y+2144D01*
|
||||||
|
X+2000Y+2100D01*
|
||||||
|
X+3250Y+2500D02*
|
||||||
|
X+3225Y+2596D01*
|
||||||
|
X+3153Y+2674D01*
|
||||||
|
X+3039Y+2736D01*
|
||||||
|
X+2888Y+2786D01*
|
||||||
|
X+2491Y+2856D01*
|
||||||
|
X+2000Y+2900D01*
|
||||||
|
X+750Y+2500D02*
|
||||||
|
X+775Y+2596D01*
|
||||||
|
X+847Y+2674D01*
|
||||||
|
X+961Y+2736D01*
|
||||||
|
X+1112Y+2786D01*
|
||||||
|
X+1509Y+2856D01*
|
||||||
|
X+2000Y+2900D01*
|
||||||
|
X+750Y+2500D02*
|
||||||
|
X+775Y+2404D01*
|
||||||
|
X+847Y+2326D01*
|
||||||
|
X+961Y+2264D01*
|
||||||
|
X+1112Y+2214D01*
|
||||||
|
X+1509Y+2144D01*
|
||||||
|
X+2000Y+2100D01*
|
||||||
|
X+1875Y+1640D02*
|
||||||
|
X+1812Y+1580D01*
|
||||||
|
X+1625Y+1580D01*
|
||||||
|
X+1500Y+1700D01*
|
||||||
|
X+1500Y+1820D01*
|
||||||
|
X+1625Y+1940D01*
|
||||||
|
X+1812Y+1940D01*
|
||||||
|
X+1875Y+1880D01*
|
||||||
|
X+2125Y+1820D02*
|
||||||
|
X+2250Y+1940D01*
|
||||||
|
X+2250Y+1580D01*
|
||||||
|
X+1910Y+3710D02*
|
||||||
|
X+1310Y+3710D01*
|
||||||
|
X+1900Y+4290D02*
|
||||||
|
X+1310Y+4290D01*
|
||||||
|
X+1495Y+4750D02*
|
||||||
|
X+1432Y+4690D01*
|
||||||
|
X+1245Y+4690D01*
|
||||||
|
X+1120Y+4810D01*
|
||||||
|
X+1120Y+4930D01*
|
||||||
|
X+1245Y+5050D01*
|
||||||
|
X+1432Y+5050D01*
|
||||||
|
X+1495Y+4990D01*
|
||||||
|
X+1682Y+4990D02*
|
||||||
|
X+1745Y+5050D01*
|
||||||
|
X+1932Y+5050D01*
|
||||||
|
X+1995Y+4990D01*
|
||||||
|
X+1995Y+4930D01*
|
||||||
|
X+1932Y+4870D01*
|
||||||
|
X+1745Y+4870D01*
|
||||||
|
X+1682Y+4810D01*
|
||||||
|
X+1682Y+4690D01*
|
||||||
|
X+1995Y+4690D01*
|
||||||
|
X+3250Y+9250D02*
|
||||||
|
X+3225Y+9154D01*
|
||||||
|
X+3153Y+9076D01*
|
||||||
|
X+3039Y+9014D01*
|
||||||
|
X+2888Y+8964D01*
|
||||||
|
X+2491Y+8894D01*
|
||||||
|
X+2000Y+8850D01*
|
||||||
|
X+3250Y+9250D02*
|
||||||
|
X+3225Y+9346D01*
|
||||||
|
X+3153Y+9424D01*
|
||||||
|
X+3039Y+9486D01*
|
||||||
|
X+2888Y+9536D01*
|
||||||
|
X+2491Y+9606D01*
|
||||||
|
X+2000Y+9650D01*
|
||||||
|
X+750Y+9250D02*
|
||||||
|
X+775Y+9346D01*
|
||||||
|
X+847Y+9424D01*
|
||||||
|
X+961Y+9486D01*
|
||||||
|
X+1112Y+9536D01*
|
||||||
|
X+1509Y+9606D01*
|
||||||
|
X+2000Y+9650D01*
|
||||||
|
X+750Y+9250D02*
|
||||||
|
X+775Y+9154D01*
|
||||||
|
X+847Y+9076D01*
|
||||||
|
X+961Y+9014D01*
|
||||||
|
X+1112Y+8964D01*
|
||||||
|
X+1509Y+8894D01*
|
||||||
|
X+2000Y+8850D01*
|
||||||
|
X+1875Y+8390D02*
|
||||||
|
X+1812Y+8330D01*
|
||||||
|
X+1625Y+8330D01*
|
||||||
|
X+1500Y+8450D01*
|
||||||
|
X+1500Y+8570D01*
|
||||||
|
X+1625Y+8690D01*
|
||||||
|
X+1812Y+8690D01*
|
||||||
|
X+1875Y+8630D01*
|
||||||
|
X+2062Y+8630D02*
|
||||||
|
X+2125Y+8690D01*
|
||||||
|
X+2312Y+8690D01*
|
||||||
|
X+2375Y+8630D01*
|
||||||
|
X+2375Y+8570D01*
|
||||||
|
X+2312Y+8510D01*
|
||||||
|
X+2375Y+8450D01*
|
||||||
|
X+2375Y+8390D01*
|
||||||
|
X+2312Y+8330D01*
|
||||||
|
X+2125Y+8330D01*
|
||||||
|
X+2062Y+8390D01*
|
||||||
|
X+2187Y+8510D02*
|
||||||
|
X+2312Y+8510D01*
|
||||||
|
X+1910Y+10210D02*
|
||||||
|
X+1310Y+10210D01*
|
||||||
|
X+1900Y+10790D02*
|
||||||
|
X+1310Y+10790D01*
|
||||||
|
X+1745Y+11000D02*
|
||||||
|
X+1682Y+10940D01*
|
||||||
|
X+1495Y+10940D01*
|
||||||
|
X+1370Y+11060D01*
|
||||||
|
X+1370Y+11180D01*
|
||||||
|
X+1495Y+11300D01*
|
||||||
|
X+1682Y+11300D01*
|
||||||
|
X+1745Y+11240D01*
|
||||||
|
X+2245Y+11060D02*
|
||||||
|
X+1870Y+11060D01*
|
||||||
|
X+2120Y+11300D01*
|
||||||
|
X+2120Y+10940D01*
|
||||||
|
X+1910Y+14460D02*
|
||||||
|
X+1310Y+14460D01*
|
||||||
|
X+1900Y+15040D02*
|
||||||
|
X+1310Y+15040D01*
|
||||||
|
X+1495Y+14000D02*
|
||||||
|
X+1432Y+13940D01*
|
||||||
|
X+1245Y+13940D01*
|
||||||
|
X+1120Y+14060D01*
|
||||||
|
X+1120Y+14180D01*
|
||||||
|
X+1245Y+14300D01*
|
||||||
|
X+1432Y+14300D01*
|
||||||
|
X+1495Y+14240D01*
|
||||||
|
X+1995Y+14300D02*
|
||||||
|
X+1682Y+14300D01*
|
||||||
|
X+1682Y+14180D01*
|
||||||
|
X+1932Y+14180D01*
|
||||||
|
X+1995Y+14120D01*
|
||||||
|
X+1995Y+14000D01*
|
||||||
|
X+1932Y+13940D01*
|
||||||
|
X+1745Y+13940D01*
|
||||||
|
X+1682Y+14000D01*
|
||||||
|
X+3250Y+16250D02*
|
||||||
|
X+3225Y+16154D01*
|
||||||
|
X+3153Y+16076D01*
|
||||||
|
X+3039Y+16014D01*
|
||||||
|
X+2888Y+15964D01*
|
||||||
|
X+2491Y+15894D01*
|
||||||
|
X+2000Y+15850D01*
|
||||||
|
X+3250Y+16250D02*
|
||||||
|
X+3225Y+16346D01*
|
||||||
|
X+3153Y+16424D01*
|
||||||
|
X+3039Y+16486D01*
|
||||||
|
X+2888Y+16536D01*
|
||||||
|
X+2491Y+16606D01*
|
||||||
|
X+2000Y+16650D01*
|
||||||
|
X+750Y+16250D02*
|
||||||
|
X+775Y+16346D01*
|
||||||
|
X+847Y+16424D01*
|
||||||
|
X+961Y+16486D01*
|
||||||
|
X+1112Y+16536D01*
|
||||||
|
X+1509Y+16606D01*
|
||||||
|
X+2000Y+16650D01*
|
||||||
|
X+750Y+16250D02*
|
||||||
|
X+775Y+16154D01*
|
||||||
|
X+847Y+16076D01*
|
||||||
|
X+961Y+16014D01*
|
||||||
|
X+1112Y+15964D01*
|
||||||
|
X+1509Y+15894D01*
|
||||||
|
X+2000Y+15850D01*
|
||||||
|
X+1875Y+16890D02*
|
||||||
|
X+1812Y+16830D01*
|
||||||
|
X+1625Y+16830D01*
|
||||||
|
X+1500Y+16950D01*
|
||||||
|
X+1500Y+17070D01*
|
||||||
|
X+1625Y+17190D01*
|
||||||
|
X+1812Y+17190D01*
|
||||||
|
X+1875Y+17130D01*
|
||||||
|
X+2375Y+17130D02*
|
||||||
|
X+2312Y+17190D01*
|
||||||
|
X+2125Y+17190D01*
|
||||||
|
X+2062Y+17130D01*
|
||||||
|
X+2062Y+16890D01*
|
||||||
|
X+2125Y+16830D01*
|
||||||
|
X+2312Y+16830D01*
|
||||||
|
X+2375Y+16890D01*
|
||||||
|
X+2375Y+16950D01*
|
||||||
|
X+2312Y+17010D01*
|
||||||
|
X+2062Y+17010D01*
|
||||||
|
X+3250Y+4500D02*
|
||||||
|
X+3250Y+5000D01*
|
||||||
|
X+3000Y+5000D02*
|
||||||
|
X+3500Y+5000D01*
|
||||||
|
X+3500Y+7000D01*
|
||||||
|
X+3000Y+7000D01*
|
||||||
|
X+3000Y+5000D01*
|
||||||
|
X+3250Y+7000D02*
|
||||||
|
X+3250Y+7500D01*
|
||||||
|
X+2480Y+5500D02*
|
||||||
|
X+2840Y+5500D01*
|
||||||
|
X+2840Y+5875D01*
|
||||||
|
X+2540Y+6062D02*
|
||||||
|
X+2480Y+6125D01*
|
||||||
|
X+2480Y+6312D01*
|
||||||
|
X+2540Y+6375D01*
|
||||||
|
X+2600Y+6375D01*
|
||||||
|
X+2660Y+6312D01*
|
||||||
|
X+2720Y+6375D01*
|
||||||
|
X+2780Y+6375D01*
|
||||||
|
X+2840Y+6312D01*
|
||||||
|
X+2840Y+6125D01*
|
||||||
|
X+2780Y+6062D01*
|
||||||
|
X+2660Y+6187D02*
|
||||||
|
X+2660Y+6312D01*
|
||||||
|
X+3250Y+11000D02*
|
||||||
|
X+3250Y+11500D01*
|
||||||
|
X+3000Y+11500D02*
|
||||||
|
X+3500Y+11500D01*
|
||||||
|
X+3500Y+13500D01*
|
||||||
|
X+3000Y+13500D01*
|
||||||
|
X+3000Y+11500D01*
|
||||||
|
X+3250Y+13500D02*
|
||||||
|
X+3250Y+14000D01*
|
||||||
|
X+2480Y+12000D02*
|
||||||
|
X+2840Y+12000D01*
|
||||||
|
X+2840Y+12375D01*
|
||||||
|
X+2720Y+12875D02*
|
||||||
|
X+2720Y+12500D01*
|
||||||
|
X+2480Y+12750D01*
|
||||||
|
X+2840Y+12750D01*
|
||||||
|
M00*
|
||||||
46
gerber/filtre/filtre - CADCAM Top Solder Resist.TXT
Normal file
46
gerber/filtre/filtre - CADCAM Top Solder Resist.TXT
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
G04 PROTEUS RS274X GERBER FILE*
|
||||||
|
%FSLAX24Y24*%
|
||||||
|
%MOIN*%
|
||||||
|
%ADD18C,0.1200*%
|
||||||
|
%ADD19R,0.1600X0.3000*%
|
||||||
|
%ADD70R,0.0600X0.0800*%
|
||||||
|
%ADD71C,0.1100*%
|
||||||
|
%ADD17C,0.0080*%
|
||||||
|
G54D18*
|
||||||
|
X+1000Y+1000D03*
|
||||||
|
X+2968Y+1000D03*
|
||||||
|
X+2968Y+17500D03*
|
||||||
|
X+1000Y+17500D03*
|
||||||
|
G54D19*
|
||||||
|
X+1000Y+19700D03*
|
||||||
|
X+3000Y+19700D03*
|
||||||
|
X+2000Y+19700D03*
|
||||||
|
G54D18*
|
||||||
|
X+3000Y+2500D03*
|
||||||
|
X+1000Y+2500D03*
|
||||||
|
G54D70*
|
||||||
|
X+2240Y+4000D03*
|
||||||
|
X+1000Y+4000D03*
|
||||||
|
G54D18*
|
||||||
|
X+3000Y+9250D03*
|
||||||
|
X+1000Y+9250D03*
|
||||||
|
G54D70*
|
||||||
|
X+2240Y+10500D03*
|
||||||
|
X+1000Y+10500D03*
|
||||||
|
X+2240Y+14750D03*
|
||||||
|
X+1000Y+14750D03*
|
||||||
|
G54D18*
|
||||||
|
X+3000Y+16250D03*
|
||||||
|
X+1000Y+16250D03*
|
||||||
|
G54D71*
|
||||||
|
X+3250Y+4000D03*
|
||||||
|
X+3250Y+8000D03*
|
||||||
|
X+3250Y+10500D03*
|
||||||
|
X+3250Y+14500D03*
|
||||||
|
G54D17*
|
||||||
|
X-50Y+186D02*
|
||||||
|
X+3899Y+186D01*
|
||||||
|
X+3899Y+20797D01*
|
||||||
|
X-50Y+20797D01*
|
||||||
|
X-50Y+186D01*
|
||||||
|
M00*
|
||||||
1
src/wsprPico_GPS_RP2350/.gitignore
vendored
Normal file
1
src/wsprPico_GPS_RP2350/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
.pio
|
||||||
BIN
src/wsprPico_GPS_RP2350/firmware.uf2
Normal file
BIN
src/wsprPico_GPS_RP2350/firmware.uf2
Normal file
Binary file not shown.
37
src/wsprPico_GPS_RP2350/include/README
Normal file
37
src/wsprPico_GPS_RP2350/include/README
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
This directory is intended for project header files.
|
||||||
|
|
||||||
|
A header file is a file containing C declarations and macro definitions
|
||||||
|
to be shared between several project source files. You request the use of a
|
||||||
|
header file in your project source file (C, C++, etc) located in `src` folder
|
||||||
|
by including it, with the C preprocessing directive `#include'.
|
||||||
|
|
||||||
|
```src/main.c
|
||||||
|
|
||||||
|
#include "header.h"
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Including a header file produces the same results as copying the header file
|
||||||
|
into each source file that needs it. Such copying would be time-consuming
|
||||||
|
and error-prone. With a header file, the related declarations appear
|
||||||
|
in only one place. If they need to be changed, they can be changed in one
|
||||||
|
place, and programs that include the header file will automatically use the
|
||||||
|
new version when next recompiled. The header file eliminates the labor of
|
||||||
|
finding and changing all the copies as well as the risk that a failure to
|
||||||
|
find one copy will result in inconsistencies within a program.
|
||||||
|
|
||||||
|
In C, the convention is to give header files names that end with `.h'.
|
||||||
|
|
||||||
|
Read more about using header files in official GCC documentation:
|
||||||
|
|
||||||
|
* Include Syntax
|
||||||
|
* Include Operation
|
||||||
|
* Once-Only Headers
|
||||||
|
* Computed Includes
|
||||||
|
|
||||||
|
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
|
||||||
238
src/wsprPico_GPS_RP2350/lib/Afficheur/Afficheur.cpp
Normal file
238
src/wsprPico_GPS_RP2350/lib/Afficheur/Afficheur.cpp
Normal file
|
|
@ -0,0 +1,238 @@
|
||||||
|
/*
|
||||||
|
* File: Afficheur.cpp
|
||||||
|
* Author: F4GOH
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Afficheur.h"
|
||||||
|
|
||||||
|
// Constructeur de Afficheur
|
||||||
|
|
||||||
|
Afficheur::Afficheur()
|
||||||
|
{
|
||||||
|
tft = new Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
|
||||||
|
}
|
||||||
|
|
||||||
|
Afficheur::~Afficheur() {
|
||||||
|
// Rien à nettoyer
|
||||||
|
}
|
||||||
|
|
||||||
|
void Afficheur::begin() {
|
||||||
|
// Initialisation I2C avec adresse 0x3C
|
||||||
|
pinMode(TFT_BL, OUTPUT);
|
||||||
|
digitalWrite(TFT_BL, HIGH);
|
||||||
|
|
||||||
|
SPI.setSCK(TFT_SCK);
|
||||||
|
SPI.setTX(TFT_MOSI);
|
||||||
|
tft->init(172, 320);
|
||||||
|
tft->setRotation(1);
|
||||||
|
tft->setAddrWindow(34, 0, 172, 320);
|
||||||
|
tft->fillScreen(ST77XX_BLACK);
|
||||||
|
tft->setTextWrap(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const uint16_t Afficheur::lineColors[8] = {
|
||||||
|
ST77XX_YELLOW,
|
||||||
|
ST77XX_CYAN,
|
||||||
|
ST77XX_GREEN,
|
||||||
|
ST77XX_MAGENTA,
|
||||||
|
ST77XX_ORANGE,
|
||||||
|
ST77XX_WHITE,
|
||||||
|
ST77XX_RED,
|
||||||
|
ST77XX_BLUE
|
||||||
|
};
|
||||||
|
|
||||||
|
void Afficheur::timeDisplay(char* txt) {
|
||||||
|
tft->setTextSize(4);
|
||||||
|
tft->setTextColor(ST77XX_CYAN, ST77XX_BLACK);
|
||||||
|
|
||||||
|
const int width = 172;
|
||||||
|
const int height = 22;
|
||||||
|
|
||||||
|
// Efface uniquement la zone du haut
|
||||||
|
tft->fillRect(0, 0, width, height, ST77XX_BLACK);
|
||||||
|
|
||||||
|
// Petit padding
|
||||||
|
tft->setCursor(46, 0);
|
||||||
|
tft->print(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Afficheur::modeDisplay(const char* txt) {
|
||||||
|
int16_t x, y;
|
||||||
|
uint16_t w, h;
|
||||||
|
|
||||||
|
tft->setTextSize(4);
|
||||||
|
tft->setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
|
||||||
|
|
||||||
|
tft->getTextBounds(txt, 0, 0, &x, &y, &w, &h);
|
||||||
|
|
||||||
|
const int width = 320;
|
||||||
|
const int height = 172;
|
||||||
|
|
||||||
|
// Centrage parfait en portrait
|
||||||
|
int cx = (width - w) / 2;
|
||||||
|
int cy = (height - h) / 2;
|
||||||
|
|
||||||
|
// Efface uniquement la zone centrale (évite de flinguer le reste)
|
||||||
|
int clearY = cy - 4;
|
||||||
|
int clearH = h + 8;
|
||||||
|
|
||||||
|
tft->fillRect(0, clearY, width, clearH, ST77XX_BLACK);
|
||||||
|
|
||||||
|
tft->setCursor(cx, cy);
|
||||||
|
tft->print(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Afficheur::modeEfface() {
|
||||||
|
const int width = 172;
|
||||||
|
// Zone centrale approximative (même logique que modeDisplay)
|
||||||
|
tft->fillRect(0, 120, width, 80, ST77XX_BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Afficheur::clearDisplay() {
|
||||||
|
tft->fillScreen(ST77XX_BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Afficheur::configDisplay(config& cfg) {
|
||||||
|
char line[40];
|
||||||
|
|
||||||
|
// Efface uniquement la fenêtre définie
|
||||||
|
tft->fillScreen(ST77XX_BLACK);
|
||||||
|
|
||||||
|
tft->setTextSize(2);
|
||||||
|
|
||||||
|
const int x = 0; // relatif à la fenêtre
|
||||||
|
const int lineHeight = 22;
|
||||||
|
|
||||||
|
int y = 10;
|
||||||
|
|
||||||
|
const char * bandStr[7] = {"160m", "80m", "60m", "40m", "30m", "20m", "free frequency"};
|
||||||
|
// Ligne 1 : fréquence et offset
|
||||||
|
tft->setTextColor(lineColors[0], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), " f=%lu %ld band %s", cfg.freq, cfg.offset,bandStr[cfg.band]);
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
y += lineHeight;
|
||||||
|
|
||||||
|
// Ligne 2
|
||||||
|
tft->setTextColor(lineColors[1], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), "dbm%u every %u minutes", cfg.dbm, cfg.minute);
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
y += lineHeight;
|
||||||
|
|
||||||
|
// Ligne 3
|
||||||
|
tft->setTextColor(lineColors[2], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), "gps baud %lu", cfg.baud);
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
y += lineHeight;
|
||||||
|
|
||||||
|
// Ligne 4
|
||||||
|
tft->setTextColor(lineColors[3], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), "loc %.4s Enigma %s", cfg.locator,cfg.enigma ? "on" : "off");
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
y += lineHeight;
|
||||||
|
|
||||||
|
// Ligne 5
|
||||||
|
const char* modeStr[] = { "WSPR", "RTTY", "FT8", "HELL", "CW","IAMBIC" };
|
||||||
|
tft->setTextColor(lineColors[4], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), "mode %s %s", modeStr[cfg.mode], cfg.call);
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
y += lineHeight;
|
||||||
|
|
||||||
|
// Ligne 6
|
||||||
|
tft->setTextColor(lineColors[5], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), "wpm %u nmea %s",
|
||||||
|
cfg.wpm,
|
||||||
|
cfg.nmeaEnabled ? "on" : "off");
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
y += lineHeight;
|
||||||
|
|
||||||
|
// Ligne 7
|
||||||
|
tft->setTextColor(lineColors[6], ST77XX_BLACK);
|
||||||
|
snprintf(line, sizeof(line), "Iambic type %c follow %s",
|
||||||
|
cfg.bicmd,
|
||||||
|
cfg.follow ? "on" : "off");
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(line);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Afficheur::printCharCW(char car) {
|
||||||
|
|
||||||
|
if (firstChar) {
|
||||||
|
// tft->fillScreen(ST77XX_BLACK);
|
||||||
|
tft->fillRect(
|
||||||
|
0,
|
||||||
|
CHAR_HEIGHT * 1, // début à la ligne 1
|
||||||
|
SCREEN_HEIGHT,
|
||||||
|
CHAR_HEIGHT * (MAX_LINES - 1), // hauteur des lignes 1 à 4
|
||||||
|
ST77XX_BLACK
|
||||||
|
);
|
||||||
|
|
||||||
|
tft->setTextSize(TEXT_SIZE);
|
||||||
|
tft->setTextWrap(false);
|
||||||
|
|
||||||
|
currentCol = 0;
|
||||||
|
currentLine = 1;
|
||||||
|
firstChar = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// retour ligne AVANT écriture
|
||||||
|
if (currentCol >= MAX_COLS) {
|
||||||
|
currentCol = 0;
|
||||||
|
currentLine++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// écran plein
|
||||||
|
if (currentLine >= MAX_LINES) {
|
||||||
|
//tft->fillScreen(ST77XX_BLACK);
|
||||||
|
|
||||||
|
tft->fillRect(
|
||||||
|
0,
|
||||||
|
CHAR_HEIGHT * 1, // début à la ligne 1
|
||||||
|
SCREEN_HEIGHT,
|
||||||
|
CHAR_HEIGHT * (MAX_LINES - 1), // hauteur des lignes 1 à 4
|
||||||
|
ST77XX_BLACK
|
||||||
|
);
|
||||||
|
|
||||||
|
currentLine = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int x = currentCol * CHAR_WIDTH;
|
||||||
|
int y = currentLine * CHAR_HEIGHT;
|
||||||
|
|
||||||
|
// 🔥 couleur selon la ligne
|
||||||
|
uint16_t color = lineColors[currentLine % (sizeof(lineColors) / sizeof(lineColors[0]))];
|
||||||
|
tft->setTextColor(color, ST77XX_BLACK);
|
||||||
|
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->write(car);
|
||||||
|
|
||||||
|
currentCol++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Afficheur::printFrequency(uint32_t freq) {
|
||||||
|
|
||||||
|
char buf[16];
|
||||||
|
snprintf(buf, sizeof(buf), "%lu", freq);
|
||||||
|
|
||||||
|
uint16_t color = lineColors[0];
|
||||||
|
|
||||||
|
tft->setTextSize(TEXT_SIZE);
|
||||||
|
tft->setTextWrap(false);
|
||||||
|
tft->setTextColor(color, ST77XX_BLACK);
|
||||||
|
|
||||||
|
// position ligne 0
|
||||||
|
int x = 20;
|
||||||
|
int y = 0;
|
||||||
|
|
||||||
|
tft->setCursor(x, y);
|
||||||
|
tft->print(buf);
|
||||||
|
}
|
||||||
78
src/wsprPico_GPS_RP2350/lib/Afficheur/Afficheur.h
Normal file
78
src/wsprPico_GPS_RP2350/lib/Afficheur/Afficheur.h
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* File: Afficheur.cpp
|
||||||
|
* Author: F4GOH
|
||||||
|
*
|
||||||
|
* spécialisation de SSD1306Wire
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AFFICHEUR_H
|
||||||
|
#define AFFICHEUR_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
#include <Adafruit_ST7789.h>
|
||||||
|
#include <SPI.h>
|
||||||
|
#include "Menu.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define TFT_BL 21
|
||||||
|
#define TFT_DC 16
|
||||||
|
#define TFT_CS 17
|
||||||
|
#define TFT_SCK 18
|
||||||
|
#define TFT_MOSI 19
|
||||||
|
#define TFT_RST 20
|
||||||
|
|
||||||
|
#define X_OFF 34
|
||||||
|
#define Y_OFF 0
|
||||||
|
|
||||||
|
|
||||||
|
#define MSGX 2
|
||||||
|
#define MSGY 2
|
||||||
|
|
||||||
|
#define TEXT_SIZE 4
|
||||||
|
#define CHAR_WIDTH (6 * TEXT_SIZE)
|
||||||
|
#define CHAR_HEIGHT (8 * TEXT_SIZE)
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH 172
|
||||||
|
#define SCREEN_HEIGHT 320
|
||||||
|
|
||||||
|
#define MAX_COLS 13
|
||||||
|
#define MAX_LINES 5
|
||||||
|
|
||||||
|
|
||||||
|
class Afficheur {
|
||||||
|
public:
|
||||||
|
Afficheur(); // Tu peux ajouter modePWR si nécessaire
|
||||||
|
virtual ~Afficheur();
|
||||||
|
|
||||||
|
void begin(); // Initialisation de l'écran
|
||||||
|
void timeDisplay(char * txt);
|
||||||
|
void modeDisplay(const char* txt);
|
||||||
|
void modeEfface();
|
||||||
|
void configDisplay(config& cfg);
|
||||||
|
void clearDisplay();
|
||||||
|
void printCharCW(char car);
|
||||||
|
void printFrequency(uint32_t freq);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
//Adafruit_SSD1306 display;
|
||||||
|
//U8G2_SSD1306_128X64_NONAME_F_HW_I2C display; //gfx
|
||||||
|
Adafruit_ST7789 *tft;
|
||||||
|
|
||||||
|
int cursorX = 0;
|
||||||
|
int cursorY = 0;
|
||||||
|
|
||||||
|
bool firstChar = true;
|
||||||
|
|
||||||
|
int currentCol = 0;
|
||||||
|
int currentLine = 0;
|
||||||
|
|
||||||
|
static const uint16_t lineColors[8];
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* AFFICHEUR_H */
|
||||||
|
|
||||||
|
|
||||||
105
src/wsprPico_GPS_RP2350/lib/Dds/Dds.cpp
Normal file
105
src/wsprPico_GPS_RP2350/lib/Dds/Dds.cpp
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Dds.cpp
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 28 août 2025, 07:55
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Dds.h"
|
||||||
|
|
||||||
|
Dds::Dds() {
|
||||||
|
}
|
||||||
|
|
||||||
|
Dds::Dds(const Dds& orig) {
|
||||||
|
}
|
||||||
|
|
||||||
|
Dds::~Dds() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dds::coreUnSetup() {
|
||||||
|
uint16_t t;
|
||||||
|
uint32_t delta;
|
||||||
|
PIO pio = pio0;
|
||||||
|
gpio_init(0);
|
||||||
|
gpio_set_dir(0, GPIO_OUT);
|
||||||
|
pio_gpio_init(pio0, 9);
|
||||||
|
uint offset = pio_add_program(pio0, &vfo_program);
|
||||||
|
pio_sm_set_consecutive_pindirs(pio0, 0, 9, 1, true);
|
||||||
|
pio_sm_config c = vfo_program_get_default_config(offset);
|
||||||
|
sm_config_set_set_pins(&c, 9, 1);
|
||||||
|
pio_sm_init(pio0, 0, offset, &c);
|
||||||
|
pio_sm_set_enabled(pio0, 0, true);
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
for(;;){
|
||||||
|
t = (periods+delta) >> 24;
|
||||||
|
pio_sm_put_blocking(pio0, 0, t);
|
||||||
|
delta += periods-(t << 24);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//A simplifier pour le calcul des fréquences beaucoup de répétitions
|
||||||
|
|
||||||
|
void Dds::setFreqWspr(uint32_t freq) {
|
||||||
|
uint64_t ratio = (uint64_t) CLK_KHZ * 1000LL * (1 << 24) / (uint64_t) freq;
|
||||||
|
periods = (uint32_t) ratio;
|
||||||
|
uint32_t dwsfr = WSPR_TONE_SPACING * (periods / freq) / 100L; //146 c'est 1.46 Hz
|
||||||
|
wsfr[0] = periods - (10 << 24); // + 3 x Abstand 1,46 Hz
|
||||||
|
wsfr[1] = wsfr[0] - dwsfr;
|
||||||
|
wsfr[2] = wsfr[1] - dwsfr;
|
||||||
|
wsfr[3] = wsfr[2] - dwsfr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dds::setFreqRtty(uint32_t freq) {
|
||||||
|
uint64_t ratio = (uint64_t) CLK_KHZ * 1000LL * (1 << 24) / (uint64_t) freq;
|
||||||
|
periods = (uint32_t) ratio;
|
||||||
|
uint32_t dwsfr = RTTY_TONE_SPACING * (periods / freq) / 100L; //170 Hz de shift
|
||||||
|
rttyfr[0] = periods - (10 << 24);
|
||||||
|
rttyfr[1] = rttyfr[0] - dwsfr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dds::setFreqFt8(uint32_t freq) {
|
||||||
|
uint64_t ratio = (uint64_t) CLK_KHZ * 1000LL * (1 << 24) / (uint64_t) freq;
|
||||||
|
periods = (uint32_t) ratio;
|
||||||
|
uint32_t dwsfr = FT8_TONE_SPACING * (periods / freq) / 100L; //170 Hz de shift
|
||||||
|
ft8fr[0] = periods - (10 << 24);
|
||||||
|
ft8fr[1] = ft8fr[0] - dwsfr;
|
||||||
|
ft8fr[2] = ft8fr[1] - dwsfr;
|
||||||
|
ft8fr[3] = ft8fr[2] - dwsfr;
|
||||||
|
ft8fr[4] = ft8fr[3] - dwsfr;
|
||||||
|
ft8fr[5] = ft8fr[4] - dwsfr;
|
||||||
|
ft8fr[6] = ft8fr[5] - dwsfr;
|
||||||
|
ft8fr[7] = ft8fr[6] - dwsfr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dds::setFreqCW(uint32_t freq) {
|
||||||
|
freqCW=freq;
|
||||||
|
uint64_t ratio = (uint64_t) CLK_KHZ * 1000LL * (1 << 24) / (uint64_t) freq;
|
||||||
|
periods = (uint32_t) ratio;
|
||||||
|
cwfr = periods - (10 << 24);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dds::changeFreqCW(int8_t sens) {
|
||||||
|
if (sens == 1) {
|
||||||
|
freqCW += 10;
|
||||||
|
} else if (sens==-1){
|
||||||
|
freqCW -= 10;
|
||||||
|
}
|
||||||
|
//Serial.println(freqCW);
|
||||||
|
uint64_t ratio = (uint64_t) CLK_KHZ * 1000LL * (1 << 24) / (uint64_t) freqCW;
|
||||||
|
periods = (uint32_t) ratio;
|
||||||
|
cwfr = periods - (10 << 24);
|
||||||
|
//Serial.println(cwfr);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t Dds::getFreqCW(){
|
||||||
|
return freqCW;
|
||||||
|
}
|
||||||
69
src/wsprPico_GPS_RP2350/lib/Dds/Dds.h
Normal file
69
src/wsprPico_GPS_RP2350/lib/Dds/Dds.h
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Dds.h
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 28 août 2025, 07:55
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DDS_H
|
||||||
|
#define DDS_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "vfo2.pio.h"
|
||||||
|
#include "pico/stdlib.h"
|
||||||
|
#include "pico/multicore.h"
|
||||||
|
|
||||||
|
|
||||||
|
//#define CLK_KHZ 125000L
|
||||||
|
#define CLK_KHZ 180000L
|
||||||
|
|
||||||
|
|
||||||
|
#define RTTY_TONE_SPACING 17000L //170Hz
|
||||||
|
#define RTTY_DELAY 22
|
||||||
|
|
||||||
|
#define WSPR_TONE_SPACING 146L //1.45 Hz
|
||||||
|
#define WSPR_DELAY 682
|
||||||
|
|
||||||
|
#define FT8_TONE_SPACING 625L //6.25 Hz
|
||||||
|
#define FT8_DELAY 160
|
||||||
|
|
||||||
|
//https://ufrc.org/info/informations-nouveau-mode-ft2-open-source/
|
||||||
|
#define FT2_TONE_SPACING 2100L //21 Hz
|
||||||
|
#define FT2_DELAY 13
|
||||||
|
|
||||||
|
#define HELL_DELAY 4081
|
||||||
|
|
||||||
|
class Dds {
|
||||||
|
public:
|
||||||
|
Dds();
|
||||||
|
Dds(const Dds& orig);
|
||||||
|
virtual ~Dds();
|
||||||
|
|
||||||
|
|
||||||
|
void coreUnSetup();
|
||||||
|
void setFreqWspr(uint32_t freq);
|
||||||
|
void setFreqRtty(uint32_t freq);
|
||||||
|
void setFreqFt8(uint32_t freq);
|
||||||
|
void setFreqCW(uint32_t freq);
|
||||||
|
void changeFreqCW(int8_t sens);
|
||||||
|
uint32_t getFreqCW();
|
||||||
|
|
||||||
|
uint32_t wsfr[4]; //4-FSK les tables sont elles au bon endroit ?
|
||||||
|
uint32_t rttyfr[2]; //2-FSK
|
||||||
|
uint32_t ft8fr[8]; //8-FSK
|
||||||
|
uint32_t cwfr;
|
||||||
|
uint32_t freqCW;
|
||||||
|
|
||||||
|
|
||||||
|
volatile uint32_t periods; //pas de setter en lien avec les tables pour le moment mais il faudrait le mettre en private
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DDS_H
|
||||||
48
src/wsprPico_GPS_RP2350/lib/Dds/vfo2.pio.h
Normal file
48
src/wsprPico_GPS_RP2350/lib/Dds/vfo2.pio.h
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
// -------------------------------------------------- //
|
||||||
|
// This file is autogenerated by pioasm; do not edit! //
|
||||||
|
// -------------------------------------------------- //
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
#include "hardware/pio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// --- //
|
||||||
|
// vfo //
|
||||||
|
// --- //
|
||||||
|
|
||||||
|
#define vfo_wrap_target 1
|
||||||
|
#define vfo_wrap 12
|
||||||
|
|
||||||
|
static const uint16_t vfo_program_instructions[] = {
|
||||||
|
0xe081, // 0: set pindirs, 1
|
||||||
|
// .wrap_target
|
||||||
|
0x80a0, // 1: pull block
|
||||||
|
0x6020, // 2: out x, 32
|
||||||
|
0xa041, // 3: mov y, x
|
||||||
|
0x0084, // 4: jmp y--, 4
|
||||||
|
0xe401, // 5: set pins, 1 [4]
|
||||||
|
0xe000, // 6: set pins, 0
|
||||||
|
0xa042, // 7: nop
|
||||||
|
0xa042, // 8: nop
|
||||||
|
0xa042, // 9: nop
|
||||||
|
0x004a, // 10: jmp x--, 10
|
||||||
|
0xe401, // 11: set pins, 1 [4]
|
||||||
|
0xe000, // 12: set pins, 0
|
||||||
|
// .wrap
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
static const struct pio_program vfo_program = {
|
||||||
|
.instructions = vfo_program_instructions,
|
||||||
|
.length = 13,
|
||||||
|
.origin = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline pio_sm_config vfo_program_get_default_config(uint offset) {
|
||||||
|
pio_sm_config c = pio_get_default_sm_config();
|
||||||
|
sm_config_set_wrap(&c, offset + vfo_wrap_target, offset + vfo_wrap);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
72
src/wsprPico_GPS_RP2350/lib/Encodeur/Encodeur.cpp
Normal file
72
src/wsprPico_GPS_RP2350/lib/Encodeur/Encodeur.cpp
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
#include "Encodeur.h"
|
||||||
|
|
||||||
|
Encodeur::Encodeur(PIO pio) {
|
||||||
|
_pio = pio;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Encodeur::begin() {
|
||||||
|
pinMode(QUADRATURE_A_PIN, INPUT_PULLUP);
|
||||||
|
pinMode(QUADRATURE_B_PIN, INPUT_PULLUP);
|
||||||
|
pinMode(PUSH_PIN, INPUT_PULLUP);
|
||||||
|
|
||||||
|
// Charger programmes PIO
|
||||||
|
_offsetA = pio_add_program(_pio, &quadratureA_program);
|
||||||
|
_smA = pio_claim_unused_sm(_pio, true);
|
||||||
|
|
||||||
|
_offsetB = pio_add_program(_pio, &quadratureB_program);
|
||||||
|
_smB = pio_claim_unused_sm(_pio, true);
|
||||||
|
|
||||||
|
// Init PIO
|
||||||
|
quadratureA_program_init(_pio, _smA, _offsetA, QUADRATURE_A_PIN, QUADRATURE_B_PIN);
|
||||||
|
quadratureB_program_init(_pio, _smB, _offsetB, QUADRATURE_A_PIN, QUADRATURE_B_PIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Encodeur::getCount() {
|
||||||
|
pio_sm_exec(_pio, _smA, pio_encode_mov(pio_isr, pio_x));
|
||||||
|
pio_sm_exec(_pio, _smA, pio_encode_push(false, false));
|
||||||
|
int32_t a = pio_sm_get_blocking(_pio, _smA);
|
||||||
|
|
||||||
|
pio_sm_exec(_pio, _smB, pio_encode_mov(pio_isr, pio_x));
|
||||||
|
pio_sm_exec(_pio, _smB, pio_encode_push(false, false));
|
||||||
|
int32_t b = pio_sm_get_blocking(_pio, _smB);
|
||||||
|
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Encodeur::reset() {
|
||||||
|
_lastCount = getCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Encodeur::updateButton() {
|
||||||
|
_lastBtnState = _btnState;
|
||||||
|
_btnState = !digitalRead(PUSH_PIN);
|
||||||
|
|
||||||
|
_pressedEvent = (!_lastBtnState && _btnState);
|
||||||
|
_releasedEvent = (_lastBtnState && !_btnState);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Encodeur::isPressed() {
|
||||||
|
return _btnState;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Encodeur::wasPressed() {
|
||||||
|
return _pressedEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Encodeur::wasReleased() {
|
||||||
|
return _releasedEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
int8_t Encodeur::tick() {
|
||||||
|
static int32_t last = 0;
|
||||||
|
|
||||||
|
int32_t current = getCount(); // ton PIO actuel
|
||||||
|
|
||||||
|
int32_t diff = current - last;
|
||||||
|
last = current;
|
||||||
|
|
||||||
|
if (diff > 0) return +1;
|
||||||
|
if (diff < 0) return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
41
src/wsprPico_GPS_RP2350/lib/Encodeur/Encodeur.h
Normal file
41
src/wsprPico_GPS_RP2350/lib/Encodeur/Encodeur.h
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "hardware/pio.h"
|
||||||
|
#include "quadrature.pio.h"
|
||||||
|
|
||||||
|
// Pins
|
||||||
|
#define QUADRATURE_A_PIN 28
|
||||||
|
#define QUADRATURE_B_PIN 29
|
||||||
|
#define PUSH_PIN 27
|
||||||
|
|
||||||
|
class Encodeur {
|
||||||
|
public:
|
||||||
|
Encodeur(PIO pio = pio1);
|
||||||
|
|
||||||
|
void begin();
|
||||||
|
|
||||||
|
// Lecture rotation
|
||||||
|
int32_t getCount();
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
// Bouton
|
||||||
|
void updateButton();
|
||||||
|
bool isPressed(); // état actuel
|
||||||
|
bool wasPressed(); // front montant
|
||||||
|
bool wasReleased(); // front descendant
|
||||||
|
int8_t tick();
|
||||||
|
|
||||||
|
private:
|
||||||
|
PIO _pio;
|
||||||
|
uint _smA, _smB;
|
||||||
|
uint _offsetA, _offsetB;
|
||||||
|
|
||||||
|
int32_t _lastCount = 0;
|
||||||
|
|
||||||
|
bool _btnState = false;
|
||||||
|
bool _lastBtnState = false;
|
||||||
|
bool _pressedEvent = false;
|
||||||
|
bool _releasedEvent = false;
|
||||||
|
};
|
||||||
109
src/wsprPico_GPS_RP2350/lib/Encodeur/quadrature.pio.h
Normal file
109
src/wsprPico_GPS_RP2350/lib/Encodeur/quadrature.pio.h
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
// -------------------------------------------------- //
|
||||||
|
// This file is autogenerated by pioasm; do not edit! //
|
||||||
|
// -------------------------------------------------- //
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
#include "hardware/pio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ----------- //
|
||||||
|
// quadratureB //
|
||||||
|
// ----------- //
|
||||||
|
|
||||||
|
#define quadratureB_wrap_target 0
|
||||||
|
#define quadratureB_wrap 13
|
||||||
|
|
||||||
|
static const uint16_t quadratureB_program_instructions[] = {
|
||||||
|
// .wrap_target
|
||||||
|
0x2020, // 0: wait 0 pin, 0
|
||||||
|
0x00c6, // 1: jmp pin, 6
|
||||||
|
0xa049, // 2: mov y, !x
|
||||||
|
0x0084, // 3: jmp y--, 4
|
||||||
|
0xa02a, // 4: mov x, !y
|
||||||
|
0x0007, // 5: jmp 7
|
||||||
|
0x0047, // 6: jmp x--, 7
|
||||||
|
0x20a0, // 7: wait 1 pin, 0
|
||||||
|
0x00ca, // 8: jmp pin, 10
|
||||||
|
0x0040, // 9: jmp x--, 0
|
||||||
|
0xa049, // 10: mov y, !x
|
||||||
|
0x008c, // 11: jmp y--, 12
|
||||||
|
0xa02a, // 12: mov x, !y
|
||||||
|
0x0000, // 13: jmp 0
|
||||||
|
// .wrap
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
static const struct pio_program quadratureB_program = {
|
||||||
|
.instructions = quadratureB_program_instructions,
|
||||||
|
.length = 14,
|
||||||
|
.origin = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline pio_sm_config quadratureB_program_get_default_config(uint offset) {
|
||||||
|
pio_sm_config c = pio_get_default_sm_config();
|
||||||
|
sm_config_set_wrap(&c, offset + quadratureB_wrap_target, offset + quadratureB_wrap);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void quadratureB_program_init(PIO pio, uint sm, uint offset, uint a_pin, uint b_pin) {
|
||||||
|
pio_sm_config c = quadratureB_program_get_default_config(offset);
|
||||||
|
sm_config_set_in_pins(&c, a_pin);
|
||||||
|
sm_config_set_jmp_pin(&c, b_pin);
|
||||||
|
sm_config_set_in_shift(&c, false, true, 32);
|
||||||
|
pio_sm_init(pio, sm, offset, &c);
|
||||||
|
pio_sm_set_enabled(pio, sm, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ----------- //
|
||||||
|
// quadratureA //
|
||||||
|
// ----------- //
|
||||||
|
|
||||||
|
#define quadratureA_wrap_target 0
|
||||||
|
#define quadratureA_wrap 13
|
||||||
|
|
||||||
|
static const uint16_t quadratureA_program_instructions[] = {
|
||||||
|
// .wrap_target
|
||||||
|
0x20a0, // 0: wait 1 pin, 0
|
||||||
|
0x00c6, // 1: jmp pin, 6
|
||||||
|
0xa049, // 2: mov y, !x
|
||||||
|
0x0084, // 3: jmp y--, 4
|
||||||
|
0xa02a, // 4: mov x, !y
|
||||||
|
0x0007, // 5: jmp 7
|
||||||
|
0x0047, // 6: jmp x--, 7
|
||||||
|
0x2020, // 7: wait 0 pin, 0
|
||||||
|
0x00ca, // 8: jmp pin, 10
|
||||||
|
0x0040, // 9: jmp x--, 0
|
||||||
|
0xa049, // 10: mov y, !x
|
||||||
|
0x008c, // 11: jmp y--, 12
|
||||||
|
0xa02a, // 12: mov x, !y
|
||||||
|
0x0000, // 13: jmp 0
|
||||||
|
// .wrap
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
static const struct pio_program quadratureA_program = {
|
||||||
|
.instructions = quadratureA_program_instructions,
|
||||||
|
.length = 14,
|
||||||
|
.origin = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline pio_sm_config quadratureA_program_get_default_config(uint offset) {
|
||||||
|
pio_sm_config c = pio_get_default_sm_config();
|
||||||
|
sm_config_set_wrap(&c, offset + quadratureA_wrap_target, offset + quadratureA_wrap);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void quadratureA_program_init(PIO pio, uint sm, uint offset, uint a_pin, uint b_pin) {
|
||||||
|
pio_sm_config c = quadratureA_program_get_default_config(offset);
|
||||||
|
sm_config_set_in_pins(&c, b_pin);
|
||||||
|
sm_config_set_jmp_pin(&c, a_pin);
|
||||||
|
sm_config_set_in_shift(&c, false, true, 32);
|
||||||
|
pio_sm_init(pio, sm, offset, &c);
|
||||||
|
pio_sm_set_enabled(pio, sm, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
106
src/wsprPico_GPS_RP2350/lib/Enigma/Enigma.cpp
Normal file
106
src/wsprPico_GPS_RP2350/lib/Enigma/Enigma.cpp
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
https://perso.isima.fr/~mafortias/enigma/index.html
|
||||||
|
utiliser la configuration par défaut
|
||||||
|
Attention, les fils de connection de la table de liaison des lettres n'est pas géré (plugboard)
|
||||||
|
pour faciliter le déchiffrage en ligne
|
||||||
|
supprimer les caractères AB de la configuration du plugboard
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include "Enigma.h"
|
||||||
|
|
||||||
|
Enigma::Enigma() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destructeur
|
||||||
|
|
||||||
|
Enigma::~Enigma() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Enigma::init() {
|
||||||
|
strcpy(rotorHautIn, "EKMFLGDQVZNTOWYHXUSPAIBRCJ");
|
||||||
|
strcpy(rotorHautOut, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||||
|
|
||||||
|
strcpy(rotorMilieuIn, "AJDKSIRUXBLHWTMCQGZNPYFVOE");
|
||||||
|
strcpy(rotorMilieuOut, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||||
|
|
||||||
|
strcpy(rotorBasIn, "BDFHJLCPRTXVZNYEIWGAKMUSQO");
|
||||||
|
strcpy(rotorBasOut, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||||
|
|
||||||
|
strcpy(reflector, "EJMZALYXVBWFCRQUONTSPIKHGD");
|
||||||
|
ptrbuf=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
char Enigma::encode(char car) {
|
||||||
|
int curIndex;
|
||||||
|
char carRot;
|
||||||
|
char carChiffre;
|
||||||
|
//gestion de la rotation des 3 disques
|
||||||
|
carRot = rotate(rotorHautIn);
|
||||||
|
rotate(rotorHautOut);
|
||||||
|
if (carRot == 'X') {
|
||||||
|
rotate(rotorMilieuIn);
|
||||||
|
rotate(rotorMilieuOut);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if (rotorMilieuIn[0]=='S'){
|
||||||
|
rotate(rotorMilieuIn);
|
||||||
|
rotate(rotorMilieuOut);
|
||||||
|
rotate(rotorBasIn);
|
||||||
|
rotate(rotorBasOut);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//recherche du caractère crypté sur 3 disques
|
||||||
|
curIndex = getCharRotor(rotorHautIn, rotorHautOut, car - 'A');
|
||||||
|
curIndex = getCharRotor(rotorMilieuIn, rotorMilieuOut, curIndex);
|
||||||
|
curIndex = getCharRotor(rotorBasIn, rotorBasOut, curIndex);
|
||||||
|
curIndex = getReflector(reflector, curIndex);
|
||||||
|
curIndex = getCharRotor(rotorBasOut, rotorBasIn, curIndex);
|
||||||
|
curIndex = getCharRotor(rotorMilieuOut, rotorMilieuIn, curIndex);
|
||||||
|
curIndex = getCharRotor(rotorHautOut, rotorHautIn, curIndex);
|
||||||
|
carChiffre=(char) ('A' + curIndex);
|
||||||
|
buffer[ptrbuf++]=carChiffre;
|
||||||
|
if (ptrbuf==BUFFER_SIZE-2){
|
||||||
|
ptrbuf=0;
|
||||||
|
}
|
||||||
|
buffer[ptrbuf]=0;
|
||||||
|
return carChiffre;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * Enigma::getChiffre(){
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
//decallage de la chaine de caractère
|
||||||
|
//retourne le caractère decallé en fin de fin de chaine
|
||||||
|
char Enigma::rotate(char *rot) {
|
||||||
|
char temp = rot[0];
|
||||||
|
for (int i = 1; i < 26; i++) {
|
||||||
|
rot[i - 1] = rot[i];
|
||||||
|
}
|
||||||
|
rot[25] = temp;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
//retourne l'index du caractère sortant en fonction des chaine in et out et de l'index du caractère entrant
|
||||||
|
//l'opération se fait sur un disque
|
||||||
|
int Enigma::getCharRotor(char *rotIn, char* rotOut, int indexCar){
|
||||||
|
int index;
|
||||||
|
int i;
|
||||||
|
char nextCar;
|
||||||
|
nextCar=rotIn[indexCar];
|
||||||
|
for (i = 0; i < 26; i++) {
|
||||||
|
if (rotOut[i] == nextCar) {
|
||||||
|
index=i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
//la suite de caractère du réflécteur est toujours la meme
|
||||||
|
//pas de recherche le nouvel index est immédiat
|
||||||
|
int Enigma::getReflector(char *refl, int indexCar) {
|
||||||
|
char car=refl[indexCar];
|
||||||
|
return car-'A';
|
||||||
|
}
|
||||||
56
src/wsprPico_GPS_RP2350/lib/Enigma/Enigma.h
Normal file
56
src/wsprPico_GPS_RP2350/lib/Enigma/Enigma.h
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/cppFiles/file.h to edit this template
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Enigma.h
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 6 mai 2026, 14:17
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ENIGMA_H
|
||||||
|
#define ENIGMA_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <cstring>
|
||||||
|
#define BUFFER_SIZE 100
|
||||||
|
|
||||||
|
class Enigma {
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructeur
|
||||||
|
Enigma();
|
||||||
|
|
||||||
|
// Destructeur
|
||||||
|
~Enigma();
|
||||||
|
|
||||||
|
void init();
|
||||||
|
char encode(char car);
|
||||||
|
char *getChiffre();
|
||||||
|
|
||||||
|
private:
|
||||||
|
char rotate(char *rot);
|
||||||
|
int getCharRotor(char *rotIn,char* rotOut,int indexCar);
|
||||||
|
int getReflector(char *refl,int indexCar);
|
||||||
|
|
||||||
|
char rotorHautIn[27];
|
||||||
|
char rotorHautOut[27];
|
||||||
|
|
||||||
|
char rotorMilieuIn[27];
|
||||||
|
char rotorMilieuOut[27];
|
||||||
|
|
||||||
|
char rotorBasIn[27];
|
||||||
|
char rotorBasOut[27];
|
||||||
|
|
||||||
|
char reflector[27];
|
||||||
|
char buffer[BUFFER_SIZE];
|
||||||
|
int ptrbuf;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* ENIGMA_H */
|
||||||
|
|
||||||
294
src/wsprPico_GPS_RP2350/lib/Iambic/Iambic.cpp
Normal file
294
src/wsprPico_GPS_RP2350/lib/Iambic/Iambic.cpp
Normal file
|
|
@ -0,0 +1,294 @@
|
||||||
|
|
||||||
|
#include "Iambic.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Constructeur
|
||||||
|
|
||||||
|
Iambic::Iambic(Modulation* m, Afficheur* a,int wpm,char _mode,bool _enigma)
|
||||||
|
: mod(m), afficheur(a) {
|
||||||
|
|
||||||
|
Keyboard.begin();
|
||||||
|
|
||||||
|
enigmaEn=_enigma;
|
||||||
|
wpmSpeed=wpm;
|
||||||
|
enigma.init();
|
||||||
|
|
||||||
|
|
||||||
|
pinMode(LED_PIN, OUTPUT);
|
||||||
|
pinMode(PIEZO_SPKR_PIN, OUTPUT);
|
||||||
|
pinMode(TX_SWITCH_PIN, OUTPUT);
|
||||||
|
|
||||||
|
// Setup input pins
|
||||||
|
pinMode(LEFT_PADDLE_PIN, INPUT_PULLUP); // sets Left Paddle digital pin as input
|
||||||
|
pinMode(RIGHT_PADDLE_PIN, INPUT_PULLUP); // sets Right Paddle digital pin as input
|
||||||
|
|
||||||
|
digitalWrite(LED_PIN, LOW); // turn the LED off
|
||||||
|
digitalWrite(TX_SWITCH_PIN, LOW); // Transmitter off
|
||||||
|
|
||||||
|
g_current_morse_character = 0b11111110;
|
||||||
|
g_keyerState = IDLE;
|
||||||
|
|
||||||
|
if (_mode == 'A') {
|
||||||
|
g_keyerControl = IAMBIC_A;
|
||||||
|
} else {
|
||||||
|
g_keyerControl = IAMBIC_B;
|
||||||
|
}
|
||||||
|
g_ditTime = 1200 / wpm;
|
||||||
|
|
||||||
|
// Setup for Righthanded paddle by default
|
||||||
|
g_dit_paddle = LEFT_PADDLE_PIN; // Dits on right hand thumb
|
||||||
|
g_dah_paddle = RIGHT_PADDLE_PIN; // Dahs on right hand index finger
|
||||||
|
|
||||||
|
g_sidetone_muted = false; // Default to no sidetone
|
||||||
|
|
||||||
|
//vband
|
||||||
|
// Etat des touches
|
||||||
|
left_down = false;
|
||||||
|
right_down = false;
|
||||||
|
|
||||||
|
// Anti-rebond
|
||||||
|
debounce_ms = 10;
|
||||||
|
left_time = 0;
|
||||||
|
right_time = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destructeur
|
||||||
|
Iambic::~Iambic() {
|
||||||
|
// Pas de delete ici car agrégation (pas propriétaire)
|
||||||
|
}
|
||||||
|
|
||||||
|
void Iambic::scan() {
|
||||||
|
static long ktimer;
|
||||||
|
if (enigmaEn) {
|
||||||
|
if (digitalRead(PUSH_PIN) == 0) {
|
||||||
|
char *buf;
|
||||||
|
buf = enigma.getChiffre();
|
||||||
|
Serial.println(buf);
|
||||||
|
mod->sendCw(buf, wpmSpeed);
|
||||||
|
enigma.init();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This state machine translates paddle input into DITS and DAHs and keys the transmitter.
|
||||||
|
switch (g_keyerState) {
|
||||||
|
case IDLE:
|
||||||
|
// Wait for direct or latched paddle press
|
||||||
|
if ((digitalRead(g_dit_paddle) == LOW) || (digitalRead(g_dah_paddle) == LOW) || (g_keyerControl & 0x03)) {
|
||||||
|
update_PaddleLatch();
|
||||||
|
g_current_morse_character = 0b11111110; // Sarting point for accumlating a character input via paddles
|
||||||
|
g_keyerState = CHK_DIT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CHK_DIT:
|
||||||
|
// See if the dit paddle was pressed
|
||||||
|
if (g_keyerControl & DIT_L) {
|
||||||
|
g_keyerControl |= DIT_PROC;
|
||||||
|
ktimer = g_ditTime;
|
||||||
|
g_current_morse_character = (g_current_morse_character << 1); // Shift a DIT (0) into the bit #0 position.
|
||||||
|
g_keyerState = KEYED_PREP;
|
||||||
|
} else {
|
||||||
|
g_keyerState = CHK_DAH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CHK_DAH:
|
||||||
|
// See if dah paddle was pressed
|
||||||
|
if (g_keyerControl & DAH_L) {
|
||||||
|
ktimer = g_ditTime * 3;
|
||||||
|
g_current_morse_character = ((g_current_morse_character << 1) | 1); // Shift left one position and make bit #0 a DAH (1)
|
||||||
|
g_keyerState = KEYED_PREP;
|
||||||
|
} else {
|
||||||
|
ktimer = millis() + (g_ditTime * 2); // Character space, is g_ditTime x 2 because already have a trailing intercharacter space
|
||||||
|
g_keyerState = PRE_IDLE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KEYED_PREP:
|
||||||
|
// Assert key down, start timing, state shared for dit or dah
|
||||||
|
tx_key_down();
|
||||||
|
|
||||||
|
ktimer += millis(); // set ktimer to interval end time
|
||||||
|
g_keyerControl &= ~(DIT_L + DAH_L); // clear both paddle latch bits
|
||||||
|
g_keyerState = KEYED; // next state
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KEYED:
|
||||||
|
// Wait for timer to expire
|
||||||
|
if (millis() > ktimer) { // are we at end of key down ?
|
||||||
|
tx_key_up();
|
||||||
|
|
||||||
|
ktimer = millis() + g_ditTime; // inter-element time
|
||||||
|
g_keyerState = INTER_ELEMENT; // next state
|
||||||
|
|
||||||
|
} else if (g_keyerControl & IAMBIC_B) {
|
||||||
|
update_PaddleLatch(); // early paddle latch check in Iambic B mode
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case INTER_ELEMENT:
|
||||||
|
// Insert time between dits/dahs
|
||||||
|
update_PaddleLatch(); // latch paddle state
|
||||||
|
if (millis() > ktimer) { // are we at end of inter-space ?
|
||||||
|
if (g_keyerControl & DIT_PROC) { // was it a dit or dah ?
|
||||||
|
g_keyerControl &= ~(DIT_L + DIT_PROC); // clear two bits
|
||||||
|
g_keyerState = CHK_DAH; // dit done, check for dah
|
||||||
|
} else {
|
||||||
|
g_keyerControl &= ~(DAH_L); // clear dah latch
|
||||||
|
ktimer = millis() + (g_ditTime * 2); // Character space, is g_ditTime x 2 because already have a trailing intercharacter space
|
||||||
|
g_keyerState = PRE_IDLE; // go idle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PRE_IDLE: // Wait for an intercharacter space
|
||||||
|
|
||||||
|
// Check for direct or latched paddle press
|
||||||
|
if ((digitalRead(g_dit_paddle) == LOW) || (digitalRead(g_dah_paddle) == LOW) || (g_keyerControl & 0x03)) {
|
||||||
|
update_PaddleLatch();
|
||||||
|
g_keyerState = CHK_DIT;
|
||||||
|
} else { // Check for intercharacter space
|
||||||
|
if (millis() > ktimer) { // We have a character
|
||||||
|
//Serial.println(g_current_morse_character);
|
||||||
|
char car;
|
||||||
|
car=morse_char_decode(g_current_morse_character);
|
||||||
|
afficheur->printCharCW(car);
|
||||||
|
enigma.encode(car);
|
||||||
|
//Serial.print(morse_char_decode(g_current_morse_character));
|
||||||
|
g_keyerState = IDLE; // go idle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Latch dit and/or dah press
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Iambic::update_PaddleLatch() {
|
||||||
|
if (digitalRead(g_dit_paddle) == LOW) {
|
||||||
|
g_keyerControl |= DIT_L;
|
||||||
|
}
|
||||||
|
if (digitalRead(g_dah_paddle) == LOW) {
|
||||||
|
g_keyerControl |= DAH_L;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Key the Transmitter
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
void Iambic::tx_key_down() {
|
||||||
|
if (!enigmaEn) {
|
||||||
|
digitalWrite(LED_PIN, HIGH); // turn the LED on
|
||||||
|
digitalWrite(TX_SWITCH_PIN, HIGH); // Turn the transmitter on
|
||||||
|
mod->sendCarriage(true);
|
||||||
|
}
|
||||||
|
if (!g_sidetone_muted) {
|
||||||
|
tone(PIEZO_SPKR_PIN, SIDETONE_FREQ_HZ); // Sidetone on if not muted
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Un-key the transmitter
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Iambic::tx_key_up() {
|
||||||
|
if (!enigmaEn) {
|
||||||
|
digitalWrite(LED_PIN, LOW); // turn the LED off
|
||||||
|
digitalWrite(TX_SWITCH_PIN, LOW); // Turn the transmitter off
|
||||||
|
mod->sendCarriage(false);
|
||||||
|
}
|
||||||
|
if (!g_sidetone_muted) {
|
||||||
|
noTone(PIEZO_SPKR_PIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char Iambic::morse_char_decode(uint8_t code) {
|
||||||
|
|
||||||
|
switch (code) {
|
||||||
|
case 0b11111001: return 'A';
|
||||||
|
case 0b11101000: return 'B';
|
||||||
|
case 0b11101010: return 'C';
|
||||||
|
case 0b11110100: return 'D';
|
||||||
|
case 0b11111100: return 'E';
|
||||||
|
case 0b11100010: return 'F';
|
||||||
|
case 0b11110110: return 'G';
|
||||||
|
case 0b11100000: return 'H';
|
||||||
|
case 0b11111000: return 'I';
|
||||||
|
case 0b11100111: return 'J';
|
||||||
|
case 0b11110101: return 'K';
|
||||||
|
case 0b11100100: return 'L';
|
||||||
|
case 0b11111011: return 'M';
|
||||||
|
case 0b11111010: return 'N';
|
||||||
|
case 0b11110111: return 'O';
|
||||||
|
case 0b11100110: return 'P';
|
||||||
|
case 0b11101101: return 'Q';
|
||||||
|
case 0b11110010: return 'R';
|
||||||
|
case 0b11110000: return 'S';
|
||||||
|
case 0b11111101: return 'T';
|
||||||
|
case 0b11110001: return 'U';
|
||||||
|
case 0b11100001: return 'V';
|
||||||
|
case 0b11110011: return 'W';
|
||||||
|
case 0b11101001: return 'X';
|
||||||
|
case 0b11101011: return 'Y';
|
||||||
|
case 0b11101100: return 'Z';
|
||||||
|
|
||||||
|
case 0b11011111: return '0';
|
||||||
|
case 0b11001111: return '1';
|
||||||
|
case 0b11000111: return '2';
|
||||||
|
case 0b11000011: return '3';
|
||||||
|
case 0b11000001: return '4';
|
||||||
|
case 0b11000000: return '5';
|
||||||
|
case 0b11010000: return '6';
|
||||||
|
case 0b11011000: return '7';
|
||||||
|
case 0b11011100: return '8';
|
||||||
|
case 0b11011110: return '9';
|
||||||
|
|
||||||
|
case 0b11010010: return '/';
|
||||||
|
case 0b10001100: return '?';
|
||||||
|
case 0b11001010: return '*'; // AR
|
||||||
|
case 0b00000000: return '#'; // ERROR
|
||||||
|
|
||||||
|
case 0b11101111: return ' '; // espace
|
||||||
|
|
||||||
|
default: return '?'; // inconnu
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Iambic::vband() {
|
||||||
|
|
||||||
|
bool left_current = digitalRead(LEFT_PADDLE_PIN) == LOW;
|
||||||
|
bool right_current = digitalRead(RIGHT_PADDLE_PIN) == LOW;
|
||||||
|
unsigned long now = millis();
|
||||||
|
|
||||||
|
// ----- LEFT (DIT) -----
|
||||||
|
if (left_current != left_down && (now - left_time) > debounce_ms) {
|
||||||
|
left_time = now;
|
||||||
|
left_down = left_current;
|
||||||
|
|
||||||
|
if (left_current) {
|
||||||
|
Keyboard.press(VBAND_LEFT);
|
||||||
|
} else {
|
||||||
|
Keyboard.release(VBAND_LEFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----- RIGHT (DAH) -----
|
||||||
|
if (right_current != right_down && (now - right_time) > debounce_ms) {
|
||||||
|
right_time = now;
|
||||||
|
right_down = right_current;
|
||||||
|
|
||||||
|
if (right_current) {
|
||||||
|
Keyboard.press(VBAND_RIGHT);
|
||||||
|
} else {
|
||||||
|
Keyboard.release(VBAND_RIGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
119
src/wsprPico_GPS_RP2350/lib/Iambic/Iambic.h
Normal file
119
src/wsprPico_GPS_RP2350/lib/Iambic/Iambic.h
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
/*
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/cppFiles/file.h to edit this template
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Iambic.h
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 9 avril 2026, 18:42
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef IAMBIC_H
|
||||||
|
#define IAMBIC_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Modulation.h>
|
||||||
|
#include "Afficheur.h"
|
||||||
|
#include <Keyboard.h>
|
||||||
|
#include "Enigma.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define VBAND_LEFT '['
|
||||||
|
#define VBAND_RIGHT ']'
|
||||||
|
|
||||||
|
|
||||||
|
// Keyer define
|
||||||
|
#define SIDETONE_FREQ_HZ 700 // Frequency for the keyer sidetone
|
||||||
|
#define DEFAULT_SPEED_WPM 10 // 15 WPM default keyer speed
|
||||||
|
#define KEYER_MODE_IS_IAMBIC_A // Remove the '//' at the beginning of the line if you prefer Iambic A, otherwise the code will use Iambic B. If you don't use squeeze keying it doesn't matter.
|
||||||
|
|
||||||
|
#define LEFT_PADDLE_PIN 2 // Left paddle input pin
|
||||||
|
#define RIGHT_PADDLE_PIN 8 // Right paddle input pin
|
||||||
|
#define PIEZO_SPKR_PIN 25 // Piezo Speaker connection via 100 ohm resistor
|
||||||
|
#define LED_PIN 3
|
||||||
|
#define TX_SWITCH_PIN 26 // Radio T/R Switch - HIGH is Key down (TX)), LOW is key up (RX).
|
||||||
|
|
||||||
|
#define DIT_L 0x01 // Dit latch (Binary 0000 0001)
|
||||||
|
#define DAH_L 0x02 // Dah latch (Binary 0000 0010)
|
||||||
|
#define DIT_PROC 0x04 // Dit is being processed (Binary 0000 0100)
|
||||||
|
#define IAMBIC_B 0x10 // 0x00 for Iambic A, 0x10 for Iambic B (Binary 0001 0000)
|
||||||
|
#define IAMBIC_A 0
|
||||||
|
|
||||||
|
#define PUSH_PIN 27
|
||||||
|
|
||||||
|
// Keyer State machine type - states for sending of Morse elements based on paddle input
|
||||||
|
enum KSTYPE {
|
||||||
|
IDLE,
|
||||||
|
CHK_DIT,
|
||||||
|
CHK_DAH,
|
||||||
|
KEYED_PREP,
|
||||||
|
KEYED,
|
||||||
|
INTER_ELEMENT,
|
||||||
|
PRE_IDLE,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Data type for storing Keyer settings in EEPROM
|
||||||
|
struct KeyerConfigType {
|
||||||
|
uint32_t ms_per_dit; // Speed
|
||||||
|
uint8_t dit_paddle_pin; // Dit paddle pin number
|
||||||
|
uint8_t dah_paddle_pin; // Dah Paddle pin number
|
||||||
|
uint8_t iambic_keying_mode; // 0 - Iambic-A, 1 Iambic-B
|
||||||
|
uint8_t sidetone_is_muted; //
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Iambic {
|
||||||
|
private:
|
||||||
|
Modulation* mod;
|
||||||
|
Afficheur* afficheur;
|
||||||
|
Enigma enigma;
|
||||||
|
|
||||||
|
uint32_t g_ditTime; // Number of milliseconds per dit
|
||||||
|
uint8_t g_keyerControl; // 0x1 Dit latch, 0x2 Dah latch, 0x04 Dit being processed, 0x10 for Iambic A or 1 for B
|
||||||
|
KSTYPE g_keyerState; // Keyer state global variable
|
||||||
|
bool g_sidetone_muted; // If 'true' the Piezo speaker output is muted except for when in command mode
|
||||||
|
|
||||||
|
|
||||||
|
// We declare these as variables so that DIT and DAH paddles can be swapped for both left and right hand users. Convention is DIT on thumb.
|
||||||
|
uint8_t g_dit_paddle; // Current PIN number for Dit paddle
|
||||||
|
uint8_t g_dah_paddle; // Current PIN number for Dah paddle
|
||||||
|
|
||||||
|
// We use this variable to encode Morse elements (DIT = 0, DAH =1) to capture the current character sent via the paddles which is needed for user commands.
|
||||||
|
// The encoding practice is to left pad the character with 1's. A zero start bit is to the left of the first encoded element.
|
||||||
|
// We start with B11111110 and shift left with a 0 or 1 from the least significant bit, according the last Morse element received (DIT = 0, DAH =1).
|
||||||
|
uint8_t g_current_morse_character;
|
||||||
|
|
||||||
|
// Etat des touches
|
||||||
|
bool left_down;
|
||||||
|
bool right_down;
|
||||||
|
|
||||||
|
// Anti-rebond
|
||||||
|
unsigned long debounce_ms;
|
||||||
|
unsigned long left_time;
|
||||||
|
unsigned long right_time;
|
||||||
|
|
||||||
|
bool enigmaEn;
|
||||||
|
int wpmSpeed;
|
||||||
|
|
||||||
|
char morse_char_decode(uint8_t code);
|
||||||
|
void update_PaddleLatch();
|
||||||
|
void tx_key_down();
|
||||||
|
void tx_key_up();
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructeur
|
||||||
|
Iambic(Modulation* m, Afficheur* a,int wpm,char _mode,bool _enigma);
|
||||||
|
|
||||||
|
// Destructeur
|
||||||
|
~Iambic();
|
||||||
|
|
||||||
|
void scan();
|
||||||
|
void vband();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // IAMBIC_H
|
||||||
180
src/wsprPico_GPS_RP2350/lib/Locator/Locator.cpp
Normal file
180
src/wsprPico_GPS_RP2350/lib/Locator/Locator.cpp
Normal file
|
|
@ -0,0 +1,180 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Locator.cpp
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 7 juillet 2025, 16:07
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Locator.h"
|
||||||
|
|
||||||
|
Locator::Locator() {
|
||||||
|
latitudeDec = 0.0;
|
||||||
|
longitudeDec = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Locator::Locator(const Locator& orig) {
|
||||||
|
}
|
||||||
|
|
||||||
|
Locator::~Locator() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String Locator::getLocator(float lat, float lon, int nbChar,uint8_t *dbm) {
|
||||||
|
const uint8_t valid_dbm[19] = {0, 3, 7, 10, 13, 17, 20, 23, 27, 30, 33, 37, 40, 43, 47, 50, 53, 57, 60};
|
||||||
|
|
||||||
|
if (lat < -90.0 || lat > 90.0 || lon < -180.0 || lon > 180.0) {
|
||||||
|
return "INVALID";
|
||||||
|
}
|
||||||
|
|
||||||
|
lon += 180.0;
|
||||||
|
lat += 90.0;
|
||||||
|
|
||||||
|
char locator[9];
|
||||||
|
|
||||||
|
// Field (A-R)
|
||||||
|
locator[0] = 'A' + int(lon / 20);
|
||||||
|
locator[1] = 'A' + int(lat / 10);
|
||||||
|
|
||||||
|
// Square (0-9)
|
||||||
|
locator[2] = '0' + int(fmod(lon, 20) / 2);
|
||||||
|
locator[3] = '0' + int(fmod(lat, 10));
|
||||||
|
|
||||||
|
// Subsquare (A-X)
|
||||||
|
int xLong = int(fmod(lon, 2) * 12);
|
||||||
|
int yLat = int(fmod(lat, 1) * 24);
|
||||||
|
locator[4] = 'A' + xLong;
|
||||||
|
locator[5] = 'A' + yLat;
|
||||||
|
|
||||||
|
// Extended square (0-9)
|
||||||
|
locator[6] = '0' + int(fmod(lon * 120, 10));
|
||||||
|
locator[7] = '0' + int(fmod(lat * 240, 10));
|
||||||
|
|
||||||
|
locator[8] = '\0';
|
||||||
|
|
||||||
|
// ===== AJOUT CALCUL DBM =====
|
||||||
|
int indice = (xLong / 4) * 3 + (yLat / 8);
|
||||||
|
*dbm = valid_dbm[indice];
|
||||||
|
// ============================
|
||||||
|
|
||||||
|
// Clamp nbChar
|
||||||
|
if (nbChar < 2) nbChar = 2;
|
||||||
|
if (nbChar > 8) nbChar = 8;
|
||||||
|
if (nbChar % 2 != 0) nbChar--;
|
||||||
|
|
||||||
|
return String(locator).substring(0, nbChar);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Locator::getLocator(float lat, float lon, int nbChar, char loc[],uint8_t *dbm) {
|
||||||
|
const uint8_t valid_dbm[19] = {0, 3, 7, 10, 13, 17, 20, 23, 27, 30, 33, 37, 40, 43, 47, 50, 53, 57, 60};
|
||||||
|
|
||||||
|
// Vérification des coordonnées
|
||||||
|
if (lat < -90.0 || lat > 90.0 || lon < -180.0 || lon > 180.0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lon += 180.0;
|
||||||
|
lat += 90.0;
|
||||||
|
|
||||||
|
char fullLocator[9]; // 8 caractères + null terminator
|
||||||
|
|
||||||
|
// Field (A-R)
|
||||||
|
fullLocator[0] = 'A' + int(lon / 20);
|
||||||
|
fullLocator[1] = 'A' + int(lat / 10);
|
||||||
|
|
||||||
|
// Square (0-9)
|
||||||
|
fullLocator[2] = '0' + int(fmod(lon, 20) / 2);
|
||||||
|
fullLocator[3] = '0' + int(fmod(lat, 10));
|
||||||
|
|
||||||
|
// Subsquare (A-X)
|
||||||
|
int xLong = int(fmod(lon, 2) * 12);
|
||||||
|
int yLat = int(fmod(lat, 1) * 24);
|
||||||
|
|
||||||
|
fullLocator[4] = 'A' + xLong;
|
||||||
|
fullLocator[5] = 'A' + yLat;
|
||||||
|
|
||||||
|
// Extended square (0-9)
|
||||||
|
fullLocator[6] = '0' + int(fmod(lon * 120, 10));
|
||||||
|
fullLocator[7] = '0' + int(fmod(lat * 240, 10));
|
||||||
|
|
||||||
|
fullLocator[8] = '\0';
|
||||||
|
|
||||||
|
// ===== AJOUT CALCUL DBM =====
|
||||||
|
int indice = (xLong / 4) * 3 + (yLat / 8);
|
||||||
|
*dbm = valid_dbm[indice]; // ou pos.pwrDbm
|
||||||
|
// ============================
|
||||||
|
|
||||||
|
// Clamp nbChar (bonne pratique ici aussi 👍)
|
||||||
|
if (nbChar < 2) nbChar = 2;
|
||||||
|
if (nbChar > 8) nbChar = 8;
|
||||||
|
if (nbChar % 2 != 0) nbChar--;
|
||||||
|
|
||||||
|
// Copie
|
||||||
|
for (int i = 0; i < nbChar; i++) {
|
||||||
|
loc[i] = fullLocator[i];
|
||||||
|
}
|
||||||
|
loc[nbChar] = '\0';
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Locator::convLocator(String locator) {
|
||||||
|
locator.toUpperCase();
|
||||||
|
if (locator.length() < 4) return;
|
||||||
|
|
||||||
|
float lon = (locator[0] - 'A') * 20.0 - 180.0;
|
||||||
|
float lat = (locator[1] - 'A') * 10.0 - 90.0;
|
||||||
|
|
||||||
|
lon += (locator[2] - '0') * 2.0;
|
||||||
|
lat += (locator[3] - '0') * 1.0;
|
||||||
|
|
||||||
|
if (locator.length() >= 6) {
|
||||||
|
lon += (locator[4] - 'A') * (2.0 / 24.0);
|
||||||
|
lat += (locator[5] - 'A') * (1.0 / 24.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locator.length() >= 8) {
|
||||||
|
lon += (locator[6] - '0') * (2.0 / 240.0);
|
||||||
|
lat += (locator[7] - '0') * (1.0 / 240.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
longitudeDec = lon;
|
||||||
|
latitudeDec = lat;
|
||||||
|
}
|
||||||
|
|
||||||
|
float Locator::getLatitudeDec() {
|
||||||
|
return latitudeDec;
|
||||||
|
}
|
||||||
|
|
||||||
|
float Locator::getLongitudeDec() {
|
||||||
|
return longitudeDec;
|
||||||
|
}
|
||||||
|
|
||||||
|
String Locator::getLatitudeDmd() {
|
||||||
|
char buffer[16];
|
||||||
|
char hemi = (latitudeDec >= 0) ? 'N' : 'S';
|
||||||
|
float absLat = abs(latitudeDec);
|
||||||
|
int deg = int(absLat);
|
||||||
|
float min = (absLat - deg) * 60.0;
|
||||||
|
sprintf(buffer, "%02d%05.2f%c", deg, min, hemi);
|
||||||
|
return String(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
String Locator::getLongitudeDmd() {
|
||||||
|
char buffer[16];
|
||||||
|
char hemi = (longitudeDec >= 0) ? 'E' : 'W';
|
||||||
|
float absLon = abs(longitudeDec);
|
||||||
|
int deg = int(absLon);
|
||||||
|
float min = (absLon - deg) * 60.0;
|
||||||
|
sprintf(buffer, "%03d%05.2f%c", deg, min, hemi);
|
||||||
|
return String(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
42
src/wsprPico_GPS_RP2350/lib/Locator/Locator.h
Normal file
42
src/wsprPico_GPS_RP2350/lib/Locator/Locator.h
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Locator.h
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 7 juillet 2025, 16:07
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LOCATOR_H
|
||||||
|
#define LOCATOR_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
class Locator {
|
||||||
|
public:
|
||||||
|
Locator();
|
||||||
|
Locator(const Locator& orig);
|
||||||
|
virtual ~Locator();
|
||||||
|
String getLocator(float latitude, float longitude, int nbChar ,uint8_t *dbm);
|
||||||
|
bool getLocator(float lat, float lon, int nbChar, char loc[],uint8_t *dbm);
|
||||||
|
|
||||||
|
void convLocator(String locator);
|
||||||
|
float getLatitudeDec();
|
||||||
|
float getLongitudeDec();
|
||||||
|
String getLatitudeDmd();
|
||||||
|
String getLongitudeDmd();
|
||||||
|
|
||||||
|
private:
|
||||||
|
float latitudeDec = 0.0;
|
||||||
|
float longitudeDec = 0.0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* LOCATOR_H */
|
||||||
|
|
||||||
493
src/wsprPico_GPS_RP2350/lib/Menu/Menu.cpp
Normal file
493
src/wsprPico_GPS_RP2350/lib/Menu/Menu.cpp
Normal file
|
|
@ -0,0 +1,493 @@
|
||||||
|
/*
|
||||||
|
* File: Menu.cpp
|
||||||
|
*
|
||||||
|
* Created on 22 avril 2022, 17:11
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Menu.h"
|
||||||
|
|
||||||
|
const char* Menu::modeStr[6] = {"WSPR", "RTTY", "FT8", "HELL", "CW", "IAMBIC"};
|
||||||
|
|
||||||
|
const char* Menu::bandStr[7] = {"160m", "80m", "60m", "40m", "30m", "20m", "free frequency"};
|
||||||
|
|
||||||
|
Menu::Menu() :
|
||||||
|
exitFlag(false),
|
||||||
|
con(new Console())
|
||||||
|
{
|
||||||
|
anchor = this;
|
||||||
|
pinMode(MENU_PIN, INPUT_PULLUP); // GP6 avec résistance interne activée
|
||||||
|
tabfreq[0] = {1838100, -50};
|
||||||
|
tabfreq[1] = {3570100, -150};
|
||||||
|
tabfreq[2] = {5288700, -200};
|
||||||
|
tabfreq[3] = {7040100, -300};
|
||||||
|
tabfreq[4] = {10140200, -400};
|
||||||
|
tabfreq[5] = {14097100, -550};
|
||||||
|
}
|
||||||
|
|
||||||
|
Menu::Menu(const Menu& orig) {
|
||||||
|
}
|
||||||
|
|
||||||
|
Menu::~Menu() {
|
||||||
|
anchor = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::run() {
|
||||||
|
exitFlag = false;
|
||||||
|
if (digitalRead(MENU_PIN) == 0) {
|
||||||
|
EEPROM.begin(sizeof (config));
|
||||||
|
EEPROM.get(0, cfg);
|
||||||
|
Serial.println(F("help command for info"));
|
||||||
|
while (exitFlag == false) {
|
||||||
|
con->run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Serial.println(F("\nConsole exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::setup() {
|
||||||
|
|
||||||
|
con->onCmd("call", _call_);
|
||||||
|
con->onCmd("freq", _freq_);
|
||||||
|
con->onCmd("minute",_minute_);
|
||||||
|
con->onCmd("offset", _offset_);
|
||||||
|
con->onCmd("gpsbaud", _gpsbaud_);
|
||||||
|
con->onCmd("dbm", _dbm_);
|
||||||
|
con->onCmd("mail", _mail_);
|
||||||
|
con->onCmd("show", _show_);
|
||||||
|
con->onCmd("raz", _raz_);
|
||||||
|
con->onCmd("restart", _restart_);
|
||||||
|
con->onCmd("save", _save_);
|
||||||
|
con->onCmd("exit", _exit_);
|
||||||
|
con->onCmd("help", _help_);
|
||||||
|
con->onCmd("scan", _scan_);
|
||||||
|
con->onCmd("loc", _loc_);
|
||||||
|
con->onCmd("mode", _mode_);
|
||||||
|
con->onCmd("band", _band_);
|
||||||
|
con->onCmd("iambic", _iambic_);
|
||||||
|
con->onCmd("nmea", _nmea_);
|
||||||
|
con->onCmd("wpm", _wpm_);
|
||||||
|
con->onCmd("follow", _follow_);
|
||||||
|
con->onCmd("enigma", _enigma_);
|
||||||
|
|
||||||
|
con->onUnknown(_unknown);
|
||||||
|
con->start();
|
||||||
|
this->run();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_exit_(ArgList& L, Stream& S) {
|
||||||
|
anchor->exitFlag = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_help_(ArgList& L, Stream& S) {
|
||||||
|
S.println(F("Available commands"));
|
||||||
|
S.println(F("Set transmission frequency : freq 7040100"));
|
||||||
|
S.println(F("Set offset value : offset -200"));
|
||||||
|
S.println(F("Set callsign : call F4XYZ"));
|
||||||
|
S.println(F("Set locator : loc JN07"));
|
||||||
|
S.println(F("Set mode wspr rtty ft8 hell cw iaùmbic : mode wspr"));
|
||||||
|
S.println(F("Set band 160,80m,60m,40m,30m,20m,freq : band 40m"));
|
||||||
|
S.println(F("Set modulo in minutes : minute 10"));
|
||||||
|
S.println(F("Set follow mode : follow 1"));
|
||||||
|
S.println(F("Set cw words per minute : wpm 15"));
|
||||||
|
S.println(F("Set iambic mode : iambic B"));
|
||||||
|
S.println(F("Set enigma mode 0 or 1 : enigma 1"));
|
||||||
|
S.println(F("Set transmission power (dBm) : dbm 10"));
|
||||||
|
S.println(F("Set email address : mail f4xyz at example.com"));
|
||||||
|
S.println(F("Set gps baud rate : gpsbaud 9600"));
|
||||||
|
S.println(F("Scan I2C bus : scan"));
|
||||||
|
S.println(F("Show nmea frame 0 or 1 : nmea 1"));
|
||||||
|
S.println(F("Save current configuration to EEPROM : save"));
|
||||||
|
S.println(F("Display current configuration : show"));
|
||||||
|
S.println(F("Reset all parameters to default : raz"));
|
||||||
|
S.println(F("Restart RPI pico : restart"));
|
||||||
|
S.println(F("Show this help message : help"));
|
||||||
|
S.println(F("Exit menu : exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Menu::acceptCmd(String cmd, int longMin, int longMax) {
|
||||||
|
|
||||||
|
if (cmd.length() >= longMin && cmd.length() <= longMax) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
Serial.println("Erreur");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_unknown(String& L, Stream& S) {
|
||||||
|
S.print(L);
|
||||||
|
S.println(" : command not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_call_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 4, 9);
|
||||||
|
if (ret == true) {
|
||||||
|
p.toUpperCase();
|
||||||
|
size_t len = strlen(p.c_str());
|
||||||
|
|
||||||
|
if (len < sizeof (cfg.call)) {
|
||||||
|
//memcpy(anchor->cfg.call, p.c_str(), len);
|
||||||
|
//anchor->cfg.call[len] = '\0'; // Ajout manuel du terminateur
|
||||||
|
strcpy(anchor->cfg.call, p.c_str());
|
||||||
|
S.printf("Callsign set to: %s\n\r", anchor->cfg.call);
|
||||||
|
} else {
|
||||||
|
S.println(F("Callsign too long. Max 9 characters."));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid callsign format."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_loc_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 4, 4);
|
||||||
|
if (ret == true) {
|
||||||
|
p.toUpperCase();
|
||||||
|
strcpy(anchor->cfg.locator, p.c_str());
|
||||||
|
S.printf("Locator set to: %s\n\r", anchor->cfg.locator);
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid locator format ex JN07"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Menu::_mode_(ArgList& L, Stream& S) {
|
||||||
|
String p = L.getNextArg();
|
||||||
|
p.toLowerCase(); // Normalise la casse pour comparaison
|
||||||
|
if (p == "wspr") {
|
||||||
|
anchor->cfg.mode = WSPR;
|
||||||
|
} else if (p == "rtty") {
|
||||||
|
anchor->cfg.mode = RTTY;
|
||||||
|
} else if (p == "ft8") {
|
||||||
|
anchor->cfg.mode = FT8;
|
||||||
|
} else if (p == "hell") {
|
||||||
|
anchor->cfg.mode = HELL;
|
||||||
|
} else if (p == "cw") {
|
||||||
|
anchor->cfg.mode = CW;
|
||||||
|
} else if (p == "iambic") {
|
||||||
|
anchor->cfg.mode = IAMBIC;
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid mode syntax. Example: mode wspr"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Affiche le mode sélectionné
|
||||||
|
S.printf("Mode set to: %s\n\r", modeStr[anchor->cfg.mode]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_band_(ArgList& L, Stream& S) {
|
||||||
|
String p = L.getNextArg();
|
||||||
|
p.toLowerCase(); // Normalise la casse pour comparaison
|
||||||
|
if (p == "160m") {
|
||||||
|
anchor->cfg.band = M160;
|
||||||
|
anchor->cfg.freq = anchor->tabfreq[0].freq;
|
||||||
|
anchor->cfg.offset = anchor->tabfreq[0].offset;
|
||||||
|
} else if (p == "80m") {
|
||||||
|
anchor->cfg.band = M80;
|
||||||
|
anchor->cfg.freq = anchor->tabfreq[1].freq;
|
||||||
|
anchor->cfg.offset = anchor->tabfreq[1].offset;
|
||||||
|
} else if (p == "60m") {
|
||||||
|
anchor->cfg.band = M60;
|
||||||
|
anchor->cfg.freq = anchor->tabfreq[2].freq;
|
||||||
|
anchor->cfg.offset = anchor->tabfreq[2].offset;
|
||||||
|
} else if (p == "40m") {
|
||||||
|
anchor->cfg.band = M40;
|
||||||
|
anchor->cfg.freq = anchor->tabfreq[3].freq;
|
||||||
|
anchor->cfg.offset = anchor->tabfreq[3].offset;
|
||||||
|
} else if (p == "30m") {
|
||||||
|
anchor->cfg.band = M30;
|
||||||
|
anchor->cfg.freq = anchor->tabfreq[4].freq;
|
||||||
|
anchor->cfg.offset = anchor->tabfreq[4].offset;
|
||||||
|
} else if (p == "20m") {
|
||||||
|
anchor->cfg.band = M20;
|
||||||
|
anchor->cfg.freq = anchor->tabfreq[5].freq;
|
||||||
|
anchor->cfg.offset = anchor->tabfreq[5].offset;
|
||||||
|
} else if (p == "freq") {
|
||||||
|
anchor->cfg.band = FREQ;
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid mode syntax. Example: band 40m"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Affiche le mode sélectionné
|
||||||
|
S.printf("Band set to: %s\n\r", bandStr[anchor->cfg.band]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//manque le test de la fréquence max supportée par le RPI
|
||||||
|
void Menu::_freq_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 6, 8);
|
||||||
|
if (ret == true) {
|
||||||
|
uint32_t freqValue = p.toInt(); // Conversion de la chaîne en entier
|
||||||
|
anchor->cfg.freq = freqValue; // Sauvegarde dans la structure
|
||||||
|
S.printf("Frequency set to: %lu Hz\n\r", anchor->cfg.freq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Menu::_minute_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 2);
|
||||||
|
if (ret == true) {
|
||||||
|
uint8_t minuteValue = (uint8_t) p.toInt(); // Conversion en entier 8 bits
|
||||||
|
anchor->cfg.minute = minuteValue; // Sauvegarde dans la structure
|
||||||
|
S.printf("Minute modulo set to: %u\n\r", anchor->cfg.minute);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_wpm_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 2);
|
||||||
|
if (ret == true) {
|
||||||
|
uint8_t wpm = (uint8_t) p.toInt(); // Conversion en entier 8 bits
|
||||||
|
anchor->cfg.wpm = wpm; // Sauvegarde dans la structure
|
||||||
|
S.printf("WPM set to: %u\n\r", anchor->cfg.wpm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//facteur de correction
|
||||||
|
void Menu::_offset_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 5);
|
||||||
|
if (ret == true) {
|
||||||
|
int32_t offsetValue = p.toInt(); // Conversion en entier signé
|
||||||
|
anchor->cfg.offset = offsetValue; // Sauvegarde dans la structure
|
||||||
|
S.printf("Offset set to: %ld\n\r", anchor->cfg.offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_gpsbaud_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 4, 5);
|
||||||
|
if (ret == true) {
|
||||||
|
uint32_t baudValue = p.toInt(); // Conversion en entier non signé
|
||||||
|
anchor->cfg.baud = baudValue; // Sauvegarde dans la structure
|
||||||
|
S.printf("GPS baudrate set to: %lu\n\r", anchor->cfg.baud);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//les valeurs de dbm sont normalisées la table pour vérification
|
||||||
|
void Menu::_dbm_(ArgList& L, Stream& S) {
|
||||||
|
String p = L.getNextArg();
|
||||||
|
bool ret = anchor->acceptCmd(p, 1, 2);
|
||||||
|
|
||||||
|
if (ret == true) {
|
||||||
|
int inputValue = p.toInt();
|
||||||
|
|
||||||
|
// Tableau des puissances disponibles
|
||||||
|
const uint8_t dbmTable[] = {
|
||||||
|
0, 3, 7, 10, 13, 17, 20, 23, 27, 30,
|
||||||
|
33, 37, 40, 43, 47, 50, 53, 57, 60
|
||||||
|
};
|
||||||
|
const size_t tableSize = sizeof(dbmTable) / sizeof(dbmTable[0]);
|
||||||
|
|
||||||
|
// Recherche de la valeur la plus proche
|
||||||
|
uint8_t closest = dbmTable[0];
|
||||||
|
int minDiff = abs(inputValue - dbmTable[0]);
|
||||||
|
|
||||||
|
for (size_t i = 1; i < tableSize; ++i) {
|
||||||
|
int diff = abs(inputValue - dbmTable[i]);
|
||||||
|
if (diff < minDiff) {
|
||||||
|
minDiff = diff;
|
||||||
|
closest = dbmTable[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Mise à jour de la configuration
|
||||||
|
anchor->cfg.dbm = closest;
|
||||||
|
S.printf("Transmission power set to: %u dBm (closest to %d)\n\r", closest, inputValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Menu::_mail_(ArgList& L, Stream& S) {
|
||||||
|
String arg;
|
||||||
|
bool ret;
|
||||||
|
String p = "";
|
||||||
|
while (!(arg = L.getNextArg()).isEmpty()) {
|
||||||
|
p = p + arg + " ";
|
||||||
|
}
|
||||||
|
ret = anchor->acceptCmd(p, 3, 30);
|
||||||
|
p.toUpperCase();
|
||||||
|
size_t len = strlen(p.c_str());
|
||||||
|
if (len < sizeof (anchor->cfg.mail)) {
|
||||||
|
//memcpy(anchor->cfg.mail, p.c_str(), len);
|
||||||
|
//anchor->cfg.mail[len] = '\0'; // Ajout manuel du terminateur
|
||||||
|
strcpy(anchor->cfg.mail, p.c_str());
|
||||||
|
S.printf("Email set to: %s\n\r", anchor->cfg.mail);
|
||||||
|
} else {
|
||||||
|
S.println(F("Email too long. Max 30 characters."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Menu::_nmea_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 1);
|
||||||
|
if (ret == true) {
|
||||||
|
int val = p.toInt(); // Conversion en entier
|
||||||
|
if (val == 0 || val == 1) {
|
||||||
|
anchor->cfg.nmeaEnabled = (val == 1); // Affectation booléenne
|
||||||
|
|
||||||
|
S.printf("Nmea frame debug %s\n\r", anchor->cfg.nmeaEnabled ? "enabled" : "disabled");
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid value. Use 0 to disable or 1 to enable nmea debug."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_iambic_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 1);
|
||||||
|
if (ret == true) {
|
||||||
|
char val = toupper(p[0]); // Conversion en char
|
||||||
|
if (val == 'A' || val == 'B') {
|
||||||
|
anchor->cfg.bicmd = val; // Affectation booléenne
|
||||||
|
|
||||||
|
S.printf("Iambic type %c\n\r", anchor->cfg.bicmd);
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid value. Use A or B type for iambic paddle."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Menu::_follow_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 1);
|
||||||
|
if (ret == true) {
|
||||||
|
int val = p.toInt(); // Conversion en entier
|
||||||
|
if (val == 0 || val == 1) {
|
||||||
|
anchor->cfg.follow = (val == 1); // Affectation booléenne
|
||||||
|
|
||||||
|
S.printf("Follow is %s\n\r", anchor->cfg.follow ? "enabled" : "disabled");
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid value. Use 0 to disable or 1 to enable follow mode."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_enigma_(ArgList& L, Stream& S) {
|
||||||
|
String p;
|
||||||
|
bool ret;
|
||||||
|
p = L.getNextArg();
|
||||||
|
ret = anchor->acceptCmd(p, 1, 1);
|
||||||
|
if (ret == true) {
|
||||||
|
int val = p.toInt(); // Conversion en entier
|
||||||
|
if (val == 0 || val == 1) {
|
||||||
|
anchor->cfg.enigma = (val == 1); // Affectation booléenne
|
||||||
|
|
||||||
|
S.printf("Enigma is %s\n\r", anchor->cfg.enigma ? "enabled" : "disabled");
|
||||||
|
} else {
|
||||||
|
S.println(F("Invalid value. Use 0 to disable or 1 to enable enigma mode."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_show_(ArgList& L, Stream& S) {
|
||||||
|
S.println("Current configuration :");
|
||||||
|
S.printf(" freq : %lu Hz\n\r", anchor->cfg.freq);
|
||||||
|
S.printf(" offset : %ld\n\r", anchor->cfg.offset);
|
||||||
|
S.printf(" call : %s\n\r", anchor->cfg.call);
|
||||||
|
S.printf(" locator : %s\n\r", anchor->cfg.locator);
|
||||||
|
S.printf(" dbm : %u dBm\n\r", anchor->cfg.dbm);
|
||||||
|
S.printf(" mode : %s\n\r", modeStr[anchor->cfg.mode]);
|
||||||
|
S.printf(" band : %s\n\r", bandStr[anchor->cfg.band]);
|
||||||
|
S.printf(" wpm : %u\n\r", anchor->cfg.wpm);
|
||||||
|
S.printf(" iambic mode : %c\n\r", anchor->cfg.bicmd);
|
||||||
|
S.printf(" Enigma is : %s\n\r", anchor->cfg.enigma ? "ON" : "OFF");
|
||||||
|
S.printf(" mail : %s\n\r", anchor->cfg.mail);
|
||||||
|
S.printf(" minute : %u min\n\r", anchor->cfg.minute);
|
||||||
|
S.printf(" Gps baud rate : %u\n\r", anchor->cfg.baud);
|
||||||
|
S.printf(" Nmea debug is : %s\n\r", anchor->cfg.nmeaEnabled ? "ON" : "OFF");
|
||||||
|
S.printf(" Follow is : %s\n\r", anchor->cfg.follow ? "ON" : "OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_save_(ArgList& L, Stream& S) {
|
||||||
|
EEPROM.put(0, anchor->cfg);
|
||||||
|
EEPROM.commit();
|
||||||
|
Serial.println("Configuration saved.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_raz_(ArgList& L, Stream& S) {
|
||||||
|
|
||||||
|
anchor->cfg.freq = 7040100; // Fréquence par défaut
|
||||||
|
anchor->cfg.offset = -200; // Fréquence par défaut
|
||||||
|
strcpy(anchor->cfg.call, "NOCALL"); // Indicatif par défaut
|
||||||
|
anchor->cfg.dbm = 10; // Puissance par défaut
|
||||||
|
strcpy(anchor->cfg.mail, "none@example.com"); // Email par défaut
|
||||||
|
strcpy(anchor->cfg.locator, "JN07"); // Locator par défaut
|
||||||
|
anchor->cfg.minute = 6; // Durée par défaut
|
||||||
|
anchor->cfg.baud=9600; //9600 bauds
|
||||||
|
anchor->cfg.mode=WSPR;
|
||||||
|
anchor->cfg.nmeaEnabled=false;
|
||||||
|
anchor->cfg.wpm=12;
|
||||||
|
anchor->cfg.bicmd='A';
|
||||||
|
anchor->cfg.follow=0;
|
||||||
|
anchor->cfg.enigma=0;
|
||||||
|
anchor->cfg.band = FREQ;
|
||||||
|
Serial.println("Configuration has been reset to default values.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::_restart_(ArgList& L, Stream& S) {
|
||||||
|
watchdog_reboot(0, 0, 0); // Redémarre immédiatement
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Menu::_scan_(ArgList& L, Stream& S) {
|
||||||
|
anchor->scanI2C();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::scanI2C() {
|
||||||
|
Serial.println(" 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f");
|
||||||
|
for (uint8_t row = 0; row < 8; row++) {
|
||||||
|
Serial.printf("%02x: ", row << 4);
|
||||||
|
for (uint8_t col = 0; col < 16; col++) {
|
||||||
|
uint8_t address = (row << 4) | col;
|
||||||
|
Wire.beginTransmission(address);
|
||||||
|
uint8_t error = Wire.endTransmission();
|
||||||
|
|
||||||
|
if (error == 0) {
|
||||||
|
Serial.printf("%02x ", address);
|
||||||
|
} else if (error == 4) {
|
||||||
|
Serial.print("UU "); // Bus error
|
||||||
|
} else {
|
||||||
|
Serial.print("-- ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Menu* Menu::anchor = NULL;
|
||||||
|
|
||||||
102
src/wsprPico_GPS_RP2350/lib/Menu/Menu.h
Normal file
102
src/wsprPico_GPS_RP2350/lib/Menu/Menu.h
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*
|
||||||
|
* File: Menu.h
|
||||||
|
*
|
||||||
|
* Created on 22 avril 2022, 17:11
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MENU_H
|
||||||
|
#define MENU_H
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <console.h>
|
||||||
|
#include "hardware/watchdog.h"
|
||||||
|
#include <EEPROM.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define MENU_PIN 6
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
WSPR,RTTY,FT8,HELL,CW,IAMBIC,NOTX
|
||||||
|
}txModes;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
M160,M80,M60,M40,M30,M20,M17,M15,FREQ
|
||||||
|
}bands;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t freq;
|
||||||
|
int32_t offset;
|
||||||
|
}freqbands;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t freq;
|
||||||
|
char call[10];
|
||||||
|
uint8_t dbm;
|
||||||
|
char mail[31];
|
||||||
|
int32_t offset;
|
||||||
|
uint8_t minute; // Durée en minutes
|
||||||
|
uint32_t baud;
|
||||||
|
char locator[5];
|
||||||
|
txModes mode;
|
||||||
|
bool nmeaEnabled;
|
||||||
|
uint8_t wpm;
|
||||||
|
bool follow;
|
||||||
|
char bicmd;
|
||||||
|
bands band;
|
||||||
|
bool enigma;
|
||||||
|
} config;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Menu {
|
||||||
|
|
||||||
|
public:
|
||||||
|
Menu();
|
||||||
|
Menu(const Menu& orig);
|
||||||
|
virtual ~Menu();
|
||||||
|
|
||||||
|
void run();
|
||||||
|
void setup();
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Méthodes associées aux commandes
|
||||||
|
static void _call_(ArgList& L, Stream& S);
|
||||||
|
static void _freq_(ArgList& L, Stream& S);
|
||||||
|
static void _minute_(ArgList& L, Stream& S);
|
||||||
|
static void _offset_(ArgList& L, Stream& S);
|
||||||
|
static void _gpsbaud_(ArgList& L, Stream& S);
|
||||||
|
static void _dbm_(ArgList& L, Stream& S);
|
||||||
|
static void _mail_(ArgList& L, Stream& S);
|
||||||
|
static void _mode_(ArgList& L, Stream& S);
|
||||||
|
static void _band_(ArgList& L, Stream& S);
|
||||||
|
static void _iambic_(ArgList& L, Stream& S);
|
||||||
|
static void _show_(ArgList& L, Stream& S);
|
||||||
|
static void _raz_(ArgList& L, Stream& S);
|
||||||
|
static void _save_(ArgList& L, Stream& S);
|
||||||
|
static void _restart_(ArgList& L, Stream& S);
|
||||||
|
static void _exit_(ArgList& L, Stream& S);
|
||||||
|
static void _help_(ArgList& L, Stream& S);
|
||||||
|
static void _unknown(String& L, Stream& S);
|
||||||
|
static void _scan_(ArgList& L, Stream& S);
|
||||||
|
static void _loc_(ArgList& L, Stream& S);
|
||||||
|
static void _nmea_(ArgList& L, Stream& S);
|
||||||
|
static void _wpm_(ArgList& L, Stream& S);
|
||||||
|
static void _follow_(ArgList& L, Stream& S);
|
||||||
|
static void _enigma_(ArgList& L, Stream& S);
|
||||||
|
//void displayRtc();
|
||||||
|
|
||||||
|
bool exitFlag;
|
||||||
|
Console *con;
|
||||||
|
config cfg;
|
||||||
|
static Menu* anchor;
|
||||||
|
bool acceptCmd(String cmd, int longMin, int longMax);
|
||||||
|
void scanI2C();
|
||||||
|
static const char* modeStr[6];
|
||||||
|
static const char* bandStr[7];
|
||||||
|
freqbands tabfreq[6];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MENU_H */
|
||||||
|
|
||||||
360
src/wsprPico_GPS_RP2350/lib/Modulation/Modulation.cpp
Normal file
360
src/wsprPico_GPS_RP2350/lib/Modulation/Modulation.cpp
Normal file
|
|
@ -0,0 +1,360 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Modulation.cpp
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 28 août 2025, 07:55
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Modulation.h"
|
||||||
|
|
||||||
|
Modulation::Modulation(config* _cfg) : cfg(_cfg) {
|
||||||
|
setFreqWspr(cfg->freq+cfg->offset);
|
||||||
|
setFreqRtty(cfg->freq+cfg->offset+500L); //a cote de la fréquence wspr
|
||||||
|
setFreqFt8(cfg->freq+cfg->offset+500L);
|
||||||
|
setFreqCW(cfg->freq+cfg->offset+500L);
|
||||||
|
anchor = this;
|
||||||
|
pinMode(TEST_PIN,OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
Modulation::Modulation(const Modulation& orig) {
|
||||||
|
}
|
||||||
|
|
||||||
|
Modulation::~Modulation() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void Modulation::marshall() {
|
||||||
|
// Clear the alarm irq
|
||||||
|
hw_clear_bits(&timer_hw->intr, 1u << ALARM_NUM);
|
||||||
|
// Reset the alarm register
|
||||||
|
timer_hw->alarm[ALARM_NUM] = timer_hw->timerawl + period_us ;
|
||||||
|
anchor->timerCallback();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Modulation::startTimerIRQ(uint32_t us) {
|
||||||
|
|
||||||
|
period_us = us;
|
||||||
|
// Enable the interrupt for the alarm (we're using Alarm 0)
|
||||||
|
hw_set_bits(&timer_hw->inte, 1u << ALARM_NUM) ;
|
||||||
|
// Associate an interrupt handler with the ALARM_IRQ
|
||||||
|
irq_set_exclusive_handler(ALARM_IRQ, marshall) ;
|
||||||
|
// Enable the alarm interrupt
|
||||||
|
irq_set_enabled(ALARM_IRQ, true) ;
|
||||||
|
// Write the lower 32 bits of the target time to the alarm register, arming it.
|
||||||
|
timer_hw->alarm[ALARM_NUM] = timer_hw->timerawl + period_us ;
|
||||||
|
irq_set_priority(ALARM_IRQ, 0); // Priorité haute
|
||||||
|
|
||||||
|
Serial.println("init irq");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Modulation::stopTimerIRQ() {
|
||||||
|
irq_set_enabled(ALARM_IRQ, false);
|
||||||
|
hardware_alarm_unclaim(ALARM_NUM);
|
||||||
|
Serial.println("stop irq");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Modulation::timerCallback() {
|
||||||
|
gpio_xor_mask(1u << TEST_PIN); // Toggle rapide
|
||||||
|
flagIrq = true;
|
||||||
|
//Serial.print("irq");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Modulation::waitIrq(){
|
||||||
|
while (!flagIrq){}
|
||||||
|
flagIrq=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Modulation::sendWspr(char *locator) {
|
||||||
|
|
||||||
|
memset(txBuffer, 0, WSPR_SYMBOL_COUNT);
|
||||||
|
if (cfg->follow) {
|
||||||
|
jtencode.wspr_encode(cfg->call, locator, dbm, txBuffer); //avec suivi
|
||||||
|
} else {
|
||||||
|
jtencode.wspr_encode(cfg->call, locator, cfg->dbm, txBuffer); //sans suivi
|
||||||
|
}
|
||||||
|
|
||||||
|
startTimerIRQ(WSPR_DELAY * 1000);
|
||||||
|
flagIrq = false;
|
||||||
|
for (uint8_t i = 0; i < WSPR_SYMBOL_COUNT; i++) {
|
||||||
|
periods = wsfr[txBuffer[i]]; //modulation fsk sur 4 niveaux de fréquences avec un shift de 1.48 Hz le contenu de buffer est 0 ou 1 ou 2 ou 3
|
||||||
|
//delay(WSPR_DELAY);
|
||||||
|
waitIrq();
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
stopTimerIRQ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Modulation::setDbm(uint8_t _dbm){
|
||||||
|
dbm=_dbm;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Modulation::sendRtty(char* stringRtty) {
|
||||||
|
const static int TableRtty[59] PROGMEM = { 4, 22, 17, 5, 18, 0, 11, 26, 30, 9, 0, 0, 6, 24, 7, 23, 13, 29, 25, 16, 10, 1, 21, 28, 12, 3, 14, 15, 0, 0, 0, 19, 0, 24, 19, 14, 18, 16, 22, 11, 5, 12, 26, 30, 9, 7, 6, 3, 13, 29, 10, 20, 1, 28, 15, 25, 23, 21, 17 };
|
||||||
|
//tableau dans l'ordre ascii qui démarre à partir de l'espace 32
|
||||||
|
//les valeurs représentent le code baudot
|
||||||
|
int signlett = 1; // RTTY Baudot signs/letters tables toggle
|
||||||
|
char c;
|
||||||
|
startTimerIRQ(RTTY_DELAY*1000);
|
||||||
|
c = *stringRtty++;
|
||||||
|
for (int n = 1; n < 20; n++) { //sync on envoie une série de letters table code
|
||||||
|
rttyTxByte(27);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (c != '\0') {
|
||||||
|
//Serial.print(c);
|
||||||
|
c = toupper(int(c)); // Uppercase
|
||||||
|
if (c == 10) // Line Feed
|
||||||
|
{
|
||||||
|
rttyTxByte(8);
|
||||||
|
} else if (c == 13) // Carriage Return
|
||||||
|
{
|
||||||
|
rttyTxByte(2);
|
||||||
|
} else if (c == 32) // Space
|
||||||
|
{
|
||||||
|
rttyTxByte(4);
|
||||||
|
} else if (c > 32 && c < 91) {
|
||||||
|
c = c - 32;
|
||||||
|
if (c < 33) {
|
||||||
|
if (signlett == 1) {
|
||||||
|
signlett = 0; // toggle form signs to letters table
|
||||||
|
rttyTxByte(27); //
|
||||||
|
}
|
||||||
|
} else if (signlett == 0) {
|
||||||
|
signlett = 1; // toggle form letters to signs table
|
||||||
|
rttyTxByte(31); //
|
||||||
|
}
|
||||||
|
rttyTxByte(int(pgm_read_word(&TableRtty[int(c)]))); // Send the 5 bits word
|
||||||
|
}
|
||||||
|
c = *stringRtty++; // Next character in string
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
stopTimerIRQ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Modulation::rttyTxByte(char c) {
|
||||||
|
int val;
|
||||||
|
c = (c << 2) + 3; //ajoute les deux bits de stop
|
||||||
|
for (int b = 7; b >= 0; b--) // MSB first
|
||||||
|
{
|
||||||
|
val = bitRead(c, b); // Read 1 bit
|
||||||
|
if (val == 0) periods = rttyfr[0]; //modulation fsk
|
||||||
|
else periods = rttyfr[1];
|
||||||
|
//delay(RTTY_DELAY);
|
||||||
|
waitIrq();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Modulation::sendFt8(char *call, char *locator) {
|
||||||
|
char buf[20];
|
||||||
|
sprintf(buf, "%s%s", call, locator);
|
||||||
|
//Serial.println(buf);
|
||||||
|
memset(txBuffer, 0, FT8_SYMBOL_COUNT);
|
||||||
|
jtencode.ft8_encode(buf, txBuffer);
|
||||||
|
|
||||||
|
//debug
|
||||||
|
/*
|
||||||
|
int n, lf;
|
||||||
|
lf = 0;
|
||||||
|
for (n = 0; n < FT8_SYMBOL_COUNT; n++) { //print symbols on serial monitor
|
||||||
|
if (lf % 16 == 0) {
|
||||||
|
Serial.println();
|
||||||
|
Serial.print(n);
|
||||||
|
Serial.print(": ");
|
||||||
|
}
|
||||||
|
lf++;
|
||||||
|
Serial.print(txBuffer[n]);
|
||||||
|
Serial.print(',');
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
*/
|
||||||
|
startTimerIRQ(FT8_DELAY*1000);
|
||||||
|
flagIrq=false;
|
||||||
|
for (uint8_t i = 0; i < FT8_SYMBOL_COUNT; i++) {
|
||||||
|
periods = ft8fr[txBuffer[i]];
|
||||||
|
//delay(FT8_DELAY);
|
||||||
|
waitIrq();
|
||||||
|
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
stopTimerIRQ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************************
|
||||||
|
* Hellschreiber 122.5 bauds => 8,163ms
|
||||||
|
* http://brainwagon.org/2012/01/11/hellduino-sending-hellschreiber-from-an-arduino
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
void Modulation::sendHell(char * stringHell) {
|
||||||
|
static word GlyphTab[59][8] PROGMEM = {
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x1f9c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0330, 0x0ffc, 0x0330, 0x0ffc, 0x0330, 0x0000, 0x0000},
|
||||||
|
{0x078c, 0x0ccc, 0x1ffe, 0x0ccc, 0x0c78, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x01e0, 0x0738, 0x1c0e, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x1c0e, 0x0738, 0x01e0, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x018c, 0x0198, 0x0ff0, 0x0198, 0x018c, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x001c, 0x001c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x001c, 0x0070, 0x01c0, 0x0700, 0x1c00, 0x0000, 0x0000},
|
||||||
|
{0x07f8, 0x0c0c, 0x0c0c, 0x0c0c, 0x07f8, 0x0000, 0x0000},
|
||||||
|
{0x0300, 0x0600, 0x0ffc, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x061c, 0x0c3c, 0x0ccc, 0x078c, 0x000c, 0x0000, 0x0000},
|
||||||
|
{0x0006, 0x1806, 0x198c, 0x1f98, 0x00f0, 0x0000, 0x0000},
|
||||||
|
{0x1fe0, 0x0060, 0x0060, 0x0ffc, 0x0060, 0x0000, 0x0000},
|
||||||
|
{0x000c, 0x000c, 0x1f8c, 0x1998, 0x18f0, 0x0000, 0x0000},
|
||||||
|
{0x07fc, 0x0c66, 0x18c6, 0x00c6, 0x007c, 0x0000, 0x0000},
|
||||||
|
{0x181c, 0x1870, 0x19c0, 0x1f00, 0x1c00, 0x0000, 0x0000},
|
||||||
|
{0x0f3c, 0x19e6, 0x18c6, 0x19e6, 0x0f3c, 0x0000, 0x0000},
|
||||||
|
{0x0f80, 0x18c6, 0x18cc, 0x18cc, 0x0ff0, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x1800, 0x1800, 0x19ce, 0x1f00, 0x0000, 0x0000, 0x0000},
|
||||||
|
{0x01f0, 0x0208, 0x04e4, 0x0514, 0x0514, 0x03e0, 0x0000},
|
||||||
|
{0x07fc, 0x0e60, 0x0c60, 0x0e60, 0x07fc, 0x0000, 0x0000},
|
||||||
|
{0x0c0c, 0x0ffc, 0x0ccc, 0x0ccc, 0x0738, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0c0c, 0x0c0c, 0x0c0c, 0x0c0c, 0x0000, 0x0000},
|
||||||
|
{0x0c0c, 0x0ffc, 0x0c0c, 0x0c0c, 0x07f8, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0ccc, 0x0ccc, 0x0c0c, 0x0c0c, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0cc0, 0x0cc0, 0x0c00, 0x0c00, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0c0c, 0x0c0c, 0x0ccc, 0x0cfc, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x00c0, 0x00c0, 0x00c0, 0x0ffc, 0x0000, 0x0000},
|
||||||
|
{0x0c0c, 0x0c0c, 0x0ffc, 0x0c0c, 0x0c0c, 0x0000, 0x0000},
|
||||||
|
{0x003c, 0x000c, 0x000c, 0x000c, 0x0ffc, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x00c0, 0x00e0, 0x0330, 0x0e1c, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x000c, 0x000c, 0x000c, 0x000c, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0600, 0x0300, 0x0600, 0x0ffc, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0700, 0x01c0, 0x0070, 0x0ffc, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0c0c, 0x0c0c, 0x0c0c, 0x0ffc, 0x0000, 0x0000},
|
||||||
|
{0x0c0c, 0x0ffc, 0x0ccc, 0x0cc0, 0x0780, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0c0c, 0x0c3c, 0x0ffc, 0x000f, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0cc0, 0x0cc0, 0x0cf0, 0x079c, 0x0000, 0x0000},
|
||||||
|
{0x078c, 0x0ccc, 0x0ccc, 0x0ccc, 0x0c78, 0x0000, 0x0000},
|
||||||
|
{0x0c00, 0x0c00, 0x0ffc, 0x0c00, 0x0c00, 0x0000, 0x0000},
|
||||||
|
{0x0ff8, 0x000c, 0x000c, 0x000c, 0x0ff8, 0x0000, 0x0000},
|
||||||
|
{0x0ffc, 0x0038, 0x00e0, 0x0380, 0x0e00, 0x0000, 0x0000},
|
||||||
|
{0x0ff8, 0x000c, 0x00f8, 0x000c, 0x0ff8, 0x0000, 0x0000},
|
||||||
|
{0x0e1c, 0x0330, 0x01e0, 0x0330, 0x0e1c, 0x0000, 0x0000},
|
||||||
|
{0x0e00, 0x0380, 0x00fc, 0x0380, 0x0e00, 0x0000, 0x0000},
|
||||||
|
{0x0c1c, 0x0c7c, 0x0ccc, 0x0f8c, 0x0e0c, 0x0000, 0x0000}
|
||||||
|
};
|
||||||
|
int val;
|
||||||
|
char ch;
|
||||||
|
word fbits;
|
||||||
|
startTimerIRQ(HELL_DELAY);
|
||||||
|
ch = *stringHell++;
|
||||||
|
while (ch != '\0') {
|
||||||
|
ch = toupper(int(ch)); // Uppercase
|
||||||
|
if (ch >= 32 && ch <= 90) // Character is in the range of ASCII space to Z
|
||||||
|
{
|
||||||
|
ch -= 32; // Character number starting at 0
|
||||||
|
for (int i = 0; i < 7; i++) // Scanning each 7 columns of glyph
|
||||||
|
{
|
||||||
|
fbits = int(pgm_read_word(&GlyphTab[int(ch)][i])); // Get each column of glyph
|
||||||
|
for (int b = 0; b < 14; b++) // Scanning each 14 rows
|
||||||
|
{
|
||||||
|
val = bitRead(fbits, b); // Get binary state of pixel
|
||||||
|
//DDS.setfreq(freqHell * val, 0); // Let's transmit (or not if pixel is clear)
|
||||||
|
if (val){
|
||||||
|
periods = rttyfr[0]; //utiliser la fréquence du rtty pour essais
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
}
|
||||||
|
waitIrq();
|
||||||
|
//delayMicroseconds(HELL_DELAY); //8,163ms/2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ch = *stringHell++; // Next character in string
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
stopTimerIRQ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* CW
|
||||||
|
***************************************************************************/
|
||||||
|
void Modulation::sendCw(char * stringCw, int cwWpm) {
|
||||||
|
static int morseVaricode[2][59] PROGMEM = {
|
||||||
|
{0, 212, 72, 0, 144, 0, 128, 120, 176, 180, 0, 80, 204, 132, 84, 144, 248, 120, 56, 24, 8, 0, 128, 192, 224, 240, 224, 168, 0, 136, 0, 48, 104, 64, 128, 160, 128, 0, 32, 192, 0, 0, 112, 160, 64, 192, 128, 224, 96, 208, 64, 0, 128, 32, 16, 96, 144, 176, 192},
|
||||||
|
{7, 6, 5, 0, 4, 0, 4, 6, 5, 6, 0, 5, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 0, 5, 0, 6, 6, 2, 4, 4, 3, 1, 4, 3, 4, 2, 4, 3, 4, 2, 2, 3, 4, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4}
|
||||||
|
};
|
||||||
|
|
||||||
|
int tempo = 1200 / cwWpm; // Duration of 1 dot
|
||||||
|
byte nb_bits, val;
|
||||||
|
int d;
|
||||||
|
int c = *stringCw++;
|
||||||
|
startTimerIRQ(tempo*1000);
|
||||||
|
waitIrq();
|
||||||
|
while (c != '\0') {
|
||||||
|
c = toupper(c); // Uppercase
|
||||||
|
if (c == 32) { // Space character between words in string
|
||||||
|
periods = 200 << 24; //dds off 7 dot length spacing
|
||||||
|
//delay(tempo * 7); // between words
|
||||||
|
for (int t=0;t<7;t++) waitIrq();
|
||||||
|
} else if (c > 32 && c < 91) {
|
||||||
|
c = c - 32;
|
||||||
|
d = int(pgm_read_word(&morseVaricode[0][c])); // Get CW varicode
|
||||||
|
nb_bits = int(pgm_read_word(&morseVaricode[1][c])); // Get CW varicode length
|
||||||
|
if (nb_bits != 0) { // Number of bits = 0 -> invalid character #%<>
|
||||||
|
for (int b = 7; b > 7 - nb_bits; b--) { // Send CW character, each bit represents a symbol (0 for dot, 1 for dash) MSB first
|
||||||
|
val = bitRead(d, b); //look varicode
|
||||||
|
|
||||||
|
periods = cwfr;
|
||||||
|
|
||||||
|
//delay(tempo + 2 * tempo * val); // A dot length or a dash length (3 times the dot)
|
||||||
|
waitIrq();
|
||||||
|
if (val == 1) {
|
||||||
|
waitIrq();
|
||||||
|
waitIrq();
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off 1 dot length spacing
|
||||||
|
//delay(tempo); // between symbols in a character
|
||||||
|
waitIrq();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off 3 dots length spacing
|
||||||
|
//delay(tempo * 3); // between characters in a word
|
||||||
|
waitIrq();
|
||||||
|
waitIrq();
|
||||||
|
waitIrq();
|
||||||
|
}
|
||||||
|
c = *stringCw++; // Next caracter in string
|
||||||
|
}
|
||||||
|
periods = 200 << 24; //dds off
|
||||||
|
stopTimerIRQ();
|
||||||
|
}
|
||||||
|
void Modulation::sendCarriage(bool state) {
|
||||||
|
if (state) {
|
||||||
|
periods = cwfr;
|
||||||
|
} else {
|
||||||
|
periods = 200 << 24;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Modulation* Modulation::anchor = NULL;
|
||||||
|
uint32_t Modulation::period_us;
|
||||||
|
|
||||||
98
src/wsprPico_GPS_RP2350/lib/Modulation/Modulation.h
Normal file
98
src/wsprPico_GPS_RP2350/lib/Modulation/Modulation.h
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File: Modulation.h
|
||||||
|
* Author: ale
|
||||||
|
*
|
||||||
|
* Created on 28 août 2025, 07:55
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MODULATION_H
|
||||||
|
#define MODULATION_H
|
||||||
|
|
||||||
|
#include "Dds.h"
|
||||||
|
#include "Menu.h"
|
||||||
|
#include <JTEncode.h>
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "hardware/timer.h"
|
||||||
|
#include "pico/stdlib.h"
|
||||||
|
#include "hardware/irq.h"
|
||||||
|
#include "hardware/structs/timer.h"
|
||||||
|
|
||||||
|
|
||||||
|
// exemples pas mal https://github.com/vha3/Hunter-Adams-RP2040-Demos/
|
||||||
|
|
||||||
|
|
||||||
|
#define TEST_PIN 25
|
||||||
|
#define ALARM_NUM 0
|
||||||
|
//#define ALARM_IRQ TIMER_IRQ_0
|
||||||
|
|
||||||
|
#define ALARM_IRQ TIMER0_IRQ_0
|
||||||
|
|
||||||
|
#define PREAMBULE 0x55
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
SLOW =100,
|
||||||
|
FAST =50
|
||||||
|
}duration;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
BYTES_NO_CRC = 0x70, //plutot texte a revoir
|
||||||
|
BYTES_WITH_CRC = 0x71,
|
||||||
|
VARICODE = 0x72,
|
||||||
|
GEOLOC = 0x73,
|
||||||
|
CONVOLUTION = 0x74,
|
||||||
|
ACK=0x7F
|
||||||
|
}mode;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Modulation : public Dds {
|
||||||
|
public:
|
||||||
|
Modulation(config* _cfg);
|
||||||
|
Modulation(const Modulation& orig);
|
||||||
|
virtual ~Modulation();
|
||||||
|
|
||||||
|
void sendWspr(char *locator);
|
||||||
|
void sendRtty(char* stringRtty);
|
||||||
|
void sendFt8(char *call, char *locator);
|
||||||
|
void sendHell(char * stringHell);
|
||||||
|
void sendCw(char * stringCw, int cwWpm);
|
||||||
|
void setDbm(uint8_t _dbm);
|
||||||
|
void sendCarriage(bool state);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
static void marshall(); //Merci F4JRE !!!
|
||||||
|
void timerCallback();
|
||||||
|
static Modulation* anchor;
|
||||||
|
|
||||||
|
|
||||||
|
void startTimerIRQ(uint32_t us);
|
||||||
|
void stopTimerIRQ();
|
||||||
|
|
||||||
|
|
||||||
|
void rttyTxByte(char c);
|
||||||
|
void waitIrq();
|
||||||
|
|
||||||
|
config* cfg;
|
||||||
|
JTEncode jtencode;
|
||||||
|
uint8_t txBuffer[WSPR_SYMBOL_COUNT]; //constante dans lib JTEncode
|
||||||
|
volatile bool flagIrq;
|
||||||
|
|
||||||
|
static uint32_t period_us;
|
||||||
|
|
||||||
|
byte tempo;
|
||||||
|
byte txMode;
|
||||||
|
uint8_t dbm;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* MODULATION_H */
|
||||||
46
src/wsprPico_GPS_RP2350/lib/README
Normal file
46
src/wsprPico_GPS_RP2350/lib/README
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
This directory is intended for project specific (private) libraries.
|
||||||
|
PlatformIO will compile them to static libraries and link into executable file.
|
||||||
|
|
||||||
|
The source code of each library should be placed in a an own separate directory
|
||||||
|
("lib/your_library_name/[here are source files]").
|
||||||
|
|
||||||
|
For example, see a structure of the following two libraries `Foo` and `Bar`:
|
||||||
|
|
||||||
|
|--lib
|
||||||
|
| |
|
||||||
|
| |--Bar
|
||||||
|
| | |--docs
|
||||||
|
| | |--examples
|
||||||
|
| | |--src
|
||||||
|
| | |- Bar.c
|
||||||
|
| | |- Bar.h
|
||||||
|
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
|
||||||
|
| |
|
||||||
|
| |--Foo
|
||||||
|
| | |- Foo.c
|
||||||
|
| | |- Foo.h
|
||||||
|
| |
|
||||||
|
| |- README --> THIS FILE
|
||||||
|
|
|
||||||
|
|- platformio.ini
|
||||||
|
|--src
|
||||||
|
|- main.c
|
||||||
|
|
||||||
|
and a contents of `src/main.c`:
|
||||||
|
```
|
||||||
|
#include <Foo.h>
|
||||||
|
#include <Bar.h>
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
PlatformIO Library Dependency Finder will find automatically dependent
|
||||||
|
libraries scanning project source files.
|
||||||
|
|
||||||
|
More information about PlatformIO Library Dependency Finder
|
||||||
|
- https://docs.platformio.org/page/librarymanager/ldf.html
|
||||||
609
src/wsprPico_GPS_RP2350/nbproject/configurations.xml
Normal file
609
src/wsprPico_GPS_RP2350/nbproject/configurations.xml
Normal file
|
|
@ -0,0 +1,609 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configurationDescriptor version="100">
|
||||||
|
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
|
||||||
|
<df root="." name="0">
|
||||||
|
<df name="lib">
|
||||||
|
<df name="Enigma">
|
||||||
|
<in>Enigma.cpp</in>
|
||||||
|
<in>Enigma.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Iambic">
|
||||||
|
<in>Iambic.cpp</in>
|
||||||
|
<in>Iambic.h</in>
|
||||||
|
</df>
|
||||||
|
</df>
|
||||||
|
<in>platformio.ini</in>
|
||||||
|
</df>
|
||||||
|
<logicalFolder name="ExternalFiles"
|
||||||
|
displayName="Important Files"
|
||||||
|
projectFiles="false"
|
||||||
|
kind="IMPORTANT_FILES_FOLDER">
|
||||||
|
<itemPath>nbproject/private/launcher.properties</itemPath>
|
||||||
|
</logicalFolder>
|
||||||
|
</logicalFolder>
|
||||||
|
<sourceFolderFilter>^(nbproject|.pio)$</sourceFolderFilter>
|
||||||
|
<sourceRootList>
|
||||||
|
<Elem>.</Elem>
|
||||||
|
</sourceRootList>
|
||||||
|
<projectmakefile></projectmakefile>
|
||||||
|
<confs>
|
||||||
|
<conf name="Default" type="0">
|
||||||
|
<toolsSet>
|
||||||
|
<compilerSet>default</compilerSet>
|
||||||
|
<dependencyChecking>false</dependencyChecking>
|
||||||
|
<rebuildPropChanged>false</rebuildPropChanged>
|
||||||
|
</toolsSet>
|
||||||
|
<codeAssistance>
|
||||||
|
<includeAdditional>true</includeAdditional>
|
||||||
|
</codeAssistance>
|
||||||
|
<makefileType>
|
||||||
|
<makeTool>
|
||||||
|
<buildCommandWorkingDir>.</buildCommandWorkingDir>
|
||||||
|
<buildCommand>"/usr/local/bin/pio" -f -c netbeans run</buildCommand>
|
||||||
|
<cleanCommand>"/usr/local/bin/pio" -f -c netbeans run --target clean</cleanCommand>
|
||||||
|
<executablePath></executablePath>
|
||||||
|
<cTool>
|
||||||
|
<incDir>
|
||||||
|
<pElem>src</pElem>
|
||||||
|
<pElem>/home/ale/NetBeansProjects/pico/wsprPico2/include</pElem>
|
||||||
|
<pElem>/home/ale/NetBeansProjects/pico/wsprPico2/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040/api/deprecated</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040/api/deprecated-avr-comp</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/include/rp2350</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/include/rp2350/pico_base</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2350/hardware_regs/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2350/hardware_structs/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2350/pico_platform/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Device/RP2350/Include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_sha256/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_sha256/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_btstack/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_cyw43_arch/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_cyw43_driver/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/cyw43-driver/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/3rd-party/bluedroid/decoder/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/3rd-party/bluedroid/encoder/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/3rd-party/yxml</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/platform/embedded</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/tinyusb/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/boards/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/hardware_claim/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_base_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_binary_info/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_sync/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_time/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_util/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_stdlib_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_usb_reset_interface_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/boot_bootrom_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/cmsis/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Core/Include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_adc/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_base/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_boot_lock/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_clocks/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_divider/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_dma/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_exception/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_flash/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_gpio/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_i2c/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_interp/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_irq/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_rtc/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_pio/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_pll/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_pwm/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_resets/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_spi/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_sync/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_sync_spin_lock/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_timer/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_uart/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_vreg/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_watchdog/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_xosc/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_aon_timer/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_async_context/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_bootrom/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_double/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_flash/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_float/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_int64_ops/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_lwip/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_multicore/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_common/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_compiler/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_sections/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_panic/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_printf/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_runtime/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_runtime_init/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_rand/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_stdio/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_stdio_uart/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_unique_id/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/lwip/src/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040/freertos</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/variants/rpipico2</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/ADCInput/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/ArduinoOTA/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/AsyncUDP/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/AudioBufferManager/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BTstackLib/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BluetoothAudio/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BluetoothHCI/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BluetoothHIDMaster/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/DNSServer/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/EEPROM/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/ESPHost/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/FatFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/FatFSUSB/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Bluetooth/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Joystick/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Keyboard/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Mouse/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HTTPClient/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HTTPUpdate/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HTTPUpdateServer/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Hash/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/I2S/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Joystick/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/JoystickBLE/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/JoystickBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Keyboard/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/KeyboardBLE/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/KeyboardBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/LEAmDNS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/LittleFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MD5Builder/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MIDIUSB/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Mouse/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MouseAbsolute/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MouseBLE/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MouseBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/NetBIOS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/PDM/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/PWMAudio/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/PicoOTA/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SD/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SDFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SPI/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SPISlave/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SdFat/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SerialBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Servo/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SimpleMDNS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SingleFileDrive/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SoftwareSPI/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Ticker/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Updater/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/VFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/WebServer/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/WiFi/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Wire/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/http-parser/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_CYW43/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_ESPHost/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_Ethernet/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_WINC1500/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_enc28j60/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w5100/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w5500/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w55rp20/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w6100/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w6300/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/rp2040</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/rp2350</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/arm-none-eabi/include/c++/14.3.0</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/arm-none-eabi/include/c++/14.3.0/arm-none-eabi</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/lib/gcc/arm-none-eabi/14.3.0/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/lib/gcc/arm-none-eabi/14.3.0/include-fixed</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/arm-none-eabi/include</pElem>
|
||||||
|
</incDir>
|
||||||
|
<preprocessorList>
|
||||||
|
<Elem>ARDUINO=10810</Elem>
|
||||||
|
<Elem>ARDUINO_ARCH_RP2040</Elem>
|
||||||
|
<Elem>ARDUINO_ARCH_RP2040</Elem>
|
||||||
|
<Elem>ARDUINO_RASPBERRY_PI_PICO_2</Elem>
|
||||||
|
<Elem>ARDUINO_VARIANT="rpipico2"</Elem>
|
||||||
|
<Elem>BOARD_NAME="rpipico2"</Elem>
|
||||||
|
<Elem>CFG_TUSB_MCU=OPT_MCU_RP2040</Elem>
|
||||||
|
<Elem>CFG_TUSB_MCU=OPT_MCU_RP2040</Elem>
|
||||||
|
<Elem>CFG_TUSB_OS=OPT_OS_PICO</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_CLOCK=29u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_CS=25u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_DATA_IN=24u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_DATA_OUT=24u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_HOST_WAKE=24u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_REG_ON=23u</Elem>
|
||||||
|
<Elem>CYW43_LWIP=1</Elem>
|
||||||
|
<Elem>CYW43_PIN_WL_DYNAMIC=1</Elem>
|
||||||
|
<Elem>CYW43_PIO_CLOCK_DIV_DYNAMIC=1</Elem>
|
||||||
|
<Elem>CYW43_PIO_CLOCK_DIV_DYNAMIC=1</Elem>
|
||||||
|
<Elem>CYW43_TASK_STACK_SIZE=1024</Elem>
|
||||||
|
<Elem>CYW43_WARN=//</Elem>
|
||||||
|
<Elem>DISABLE_FS_H_WARNING=1</Elem>
|
||||||
|
<Elem>FILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC</Elem>
|
||||||
|
<Elem>F_CPU=150000000L</Elem>
|
||||||
|
<Elem>LIB_BOOT_STAGE2_HEADERS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_AON_TIMER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_ATOMIC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_BIT_OPS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_BIT_OPS_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_BOOTSEL_VIA_DOUBLE_RESET=1</Elem>
|
||||||
|
<Elem>LIB_PICO_CLIB_INTERFACE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_CRT0=1</Elem>
|
||||||
|
<Elem>LIB_PICO_CXX_OPTIONS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DIVIDER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DIVIDER_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DOUBLE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DOUBLE_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLASH=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLOAT=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLOAT_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLOAT_PICO_VFP=1</Elem>
|
||||||
|
<Elem>LIB_PICO_INT64_OPS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_INT64_OPS_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MALLOC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MEM_OPS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MEM_OPS_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MULTICORE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_NEWLIB_INTERFACE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_COMMON=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_PANIC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_SECTIONS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PRINTF=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PRINTF_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_RAND=1</Elem>
|
||||||
|
<Elem>LIB_PICO_RUNTIME=1</Elem>
|
||||||
|
<Elem>LIB_PICO_RUNTIME_INIT=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SHA256=1</Elem>
|
||||||
|
<Elem>LIB_PICO_STANDARD_BINARY_INFO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_STANDARD_LINK=1</Elem>
|
||||||
|
<Elem>LIB_PICO_STDIO=0</Elem>
|
||||||
|
<Elem>LIB_PICO_STDIO_UART=0</Elem>
|
||||||
|
<Elem>LIB_PICO_STDLIB=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC_CRITICAL_SECTION=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC_MUTEX=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC_SEM=1</Elem>
|
||||||
|
<Elem>LIB_PICO_TIME=1</Elem>
|
||||||
|
<Elem>LIB_PICO_TIME_ADAPTER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_UNIQUE_ID=1</Elem>
|
||||||
|
<Elem>LIB_PICO_UTIL=1</Elem>
|
||||||
|
<Elem>LIB_TINYUSB_BOARD=1</Elem>
|
||||||
|
<Elem>LIB_TINYUSB_DEVICE=1</Elem>
|
||||||
|
<Elem>LWIP_CHECKSUM_CTRL_PER_NETIF=1</Elem>
|
||||||
|
<Elem>LWIP_IGMP=1</Elem>
|
||||||
|
<Elem>LWIP_IPV4=1</Elem>
|
||||||
|
<Elem>LWIP_IPV6=0</Elem>
|
||||||
|
<Elem>PICO_32BIT=1</Elem>
|
||||||
|
<Elem>PICO_BUILD=1</Elem>
|
||||||
|
<Elem>PICO_COPY_TO_RAM=0</Elem>
|
||||||
|
<Elem>PICO_CYW43_ARCH_HEADER=stdint.h</Elem>
|
||||||
|
<Elem>PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1</Elem>
|
||||||
|
<Elem>PICO_FLASH_SIZE_BYTES=4194304</Elem>
|
||||||
|
<Elem>PICO_MAX_SHARED_IRQ_HANDLERS=6</Elem>
|
||||||
|
<Elem>PICO_NO_BINARY_INFO=1</Elem>
|
||||||
|
<Elem>PICO_NO_FLASH=0</Elem>
|
||||||
|
<Elem>PICO_NO_HARDWARE=0</Elem>
|
||||||
|
<Elem>PICO_ON_DEVICE=1</Elem>
|
||||||
|
<Elem>PICO_PLATFORM=rp2350-arm-s</Elem>
|
||||||
|
<Elem>PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1</Elem>
|
||||||
|
<Elem>PICO_RP2040_USB_DEVICE_UFRAME_FIX=1</Elem>
|
||||||
|
<Elem>PICO_RP2350=1</Elem>
|
||||||
|
<Elem>PICO_USE_BLOCKED_RAM=0</Elem>
|
||||||
|
<Elem>PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64</Elem>
|
||||||
|
<Elem>PLATFORMIO=60118</Elem>
|
||||||
|
<Elem>TARGET_RP2350</Elem>
|
||||||
|
<Elem>USBD_MAX_POWER_MA=250</Elem>
|
||||||
|
<Elem>USBD_PID=0x000F</Elem>
|
||||||
|
<Elem>USBD_VID=0x2E8A</Elem>
|
||||||
|
<Elem>USB_MANUFACTURER="Raspberry Pi"</Elem>
|
||||||
|
<Elem>USB_PID=0x000F</Elem>
|
||||||
|
<Elem>USB_PRODUCT="Pico 2"</Elem>
|
||||||
|
<Elem>USB_VID=0x2E8A</Elem>
|
||||||
|
<Elem>USE_UTF8_LONG_NAMES=1</Elem>
|
||||||
|
</preprocessorList>
|
||||||
|
</cTool>
|
||||||
|
<ccTool>
|
||||||
|
<incDir>
|
||||||
|
<pElem>src</pElem>
|
||||||
|
<pElem>/home/ale/NetBeansProjects/pico/wsprPico2/include</pElem>
|
||||||
|
<pElem>/home/ale/NetBeansProjects/pico/wsprPico2/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040/api/deprecated</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040/api/deprecated-avr-comp</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/include/rp2350</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/include/rp2350/pico_base</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2350/hardware_regs/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2350/hardware_structs/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2350/pico_platform/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Device/RP2350/Include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_sha256/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_sha256/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_btstack/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_cyw43_arch/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_cyw43_driver/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/cyw43-driver/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/3rd-party/bluedroid/decoder/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/3rd-party/bluedroid/encoder/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/3rd-party/yxml</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/btstack/platform/embedded</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/tinyusb/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/boards/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/hardware_claim/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_base_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_binary_info/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_sync/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_time/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_util/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_stdlib_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/common/pico_usb_reset_interface_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/boot_bootrom_headers/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/cmsis/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Core/Include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_adc/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_base/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_boot_lock/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_clocks/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_divider/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_dma/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_exception/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_flash/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_gpio/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_i2c/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_interp/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_irq/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_rtc/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_pio/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_pll/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_pwm/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_resets/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_spi/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_sync/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_sync_spin_lock/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_timer/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_uart/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_vreg/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_watchdog/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/hardware_xosc/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_aon_timer/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_async_context/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_bootrom/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_double/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_flash/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_float/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_int64_ops/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_lwip/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_multicore/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_common/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_compiler/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_sections/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_platform_panic/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_printf/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_runtime/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_runtime_init/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_rand/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_stdio/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_stdio_uart/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/src/rp2_common/pico_unique_id/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/pico-sdk/lib/lwip/src/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/cores/rp2040/freertos</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/variants/rpipico2</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/ADCInput/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/ArduinoOTA/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/AsyncUDP/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/AudioBufferManager/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BTstackLib/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BluetoothAudio/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BluetoothHCI/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/BluetoothHIDMaster/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/DNSServer/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/EEPROM/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/ESPHost/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/FatFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/FatFSUSB/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Bluetooth/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Joystick/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Keyboard/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HID_Mouse/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HTTPClient/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HTTPUpdate/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/HTTPUpdateServer/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Hash/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/I2S/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Joystick/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/JoystickBLE/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/JoystickBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Keyboard/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/KeyboardBLE/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/KeyboardBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/LEAmDNS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/LittleFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MD5Builder/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MIDIUSB/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Mouse/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MouseAbsolute/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MouseBLE/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/MouseBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/NetBIOS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/PDM/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/PWMAudio/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/PicoOTA/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SD/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SDFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SPI/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SPISlave/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SdFat/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SerialBT/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Servo/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SimpleMDNS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SingleFileDrive/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/SoftwareSPI/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Ticker/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Updater/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/VFS/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/WebServer/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/WiFi/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/Wire/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/http-parser/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_CYW43/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_ESPHost/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_Ethernet/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_WINC1500/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_enc28j60/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w5100/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w5500/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w55rp20/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w6100/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/lwIP_w6300/src</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/rp2040</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/framework-arduinopico/libraries/rp2350</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/arm-none-eabi/include/c++/14.3.0</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/arm-none-eabi/include/c++/14.3.0/arm-none-eabi</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/lib/gcc/arm-none-eabi/14.3.0/include</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/lib/gcc/arm-none-eabi/14.3.0/include-fixed</pElem>
|
||||||
|
<pElem>/home/ale/.platformio/packages/toolchain-rp2040-earlephilhower/arm-none-eabi/include</pElem>
|
||||||
|
</incDir>
|
||||||
|
<preprocessorList>
|
||||||
|
<Elem>ARDUINO=10810</Elem>
|
||||||
|
<Elem>ARDUINO_ARCH_RP2040</Elem>
|
||||||
|
<Elem>ARDUINO_ARCH_RP2040</Elem>
|
||||||
|
<Elem>ARDUINO_RASPBERRY_PI_PICO_2</Elem>
|
||||||
|
<Elem>ARDUINO_VARIANT="rpipico2"</Elem>
|
||||||
|
<Elem>BOARD_NAME="rpipico2"</Elem>
|
||||||
|
<Elem>CFG_TUSB_MCU=OPT_MCU_RP2040</Elem>
|
||||||
|
<Elem>CFG_TUSB_MCU=OPT_MCU_RP2040</Elem>
|
||||||
|
<Elem>CFG_TUSB_OS=OPT_OS_PICO</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_CLOCK=29u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_CS=25u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_DATA_IN=24u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_DATA_OUT=24u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_HOST_WAKE=24u</Elem>
|
||||||
|
<Elem>CYW43_DEFAULT_PIN_WL_REG_ON=23u</Elem>
|
||||||
|
<Elem>CYW43_LWIP=1</Elem>
|
||||||
|
<Elem>CYW43_PIN_WL_DYNAMIC=1</Elem>
|
||||||
|
<Elem>CYW43_PIO_CLOCK_DIV_DYNAMIC=1</Elem>
|
||||||
|
<Elem>CYW43_PIO_CLOCK_DIV_DYNAMIC=1</Elem>
|
||||||
|
<Elem>CYW43_TASK_STACK_SIZE=1024</Elem>
|
||||||
|
<Elem>CYW43_WARN=//</Elem>
|
||||||
|
<Elem>DISABLE_FS_H_WARNING=1</Elem>
|
||||||
|
<Elem>FILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC</Elem>
|
||||||
|
<Elem>F_CPU=150000000L</Elem>
|
||||||
|
<Elem>LIB_BOOT_STAGE2_HEADERS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_AON_TIMER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_ATOMIC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_BIT_OPS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_BIT_OPS_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_BOOTSEL_VIA_DOUBLE_RESET=1</Elem>
|
||||||
|
<Elem>LIB_PICO_CLIB_INTERFACE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_CRT0=1</Elem>
|
||||||
|
<Elem>LIB_PICO_CXX_OPTIONS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DIVIDER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DIVIDER_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DOUBLE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_DOUBLE_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLASH=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLOAT=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLOAT_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_FLOAT_PICO_VFP=1</Elem>
|
||||||
|
<Elem>LIB_PICO_INT64_OPS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_INT64_OPS_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MALLOC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MEM_OPS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MEM_OPS_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_MULTICORE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_NEWLIB_INTERFACE=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_COMMON=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_COMPILER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_PANIC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PLATFORM_SECTIONS=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PRINTF=1</Elem>
|
||||||
|
<Elem>LIB_PICO_PRINTF_PICO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_RAND=1</Elem>
|
||||||
|
<Elem>LIB_PICO_RUNTIME=1</Elem>
|
||||||
|
<Elem>LIB_PICO_RUNTIME_INIT=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SHA256=1</Elem>
|
||||||
|
<Elem>LIB_PICO_STANDARD_BINARY_INFO=1</Elem>
|
||||||
|
<Elem>LIB_PICO_STANDARD_LINK=1</Elem>
|
||||||
|
<Elem>LIB_PICO_STDIO=0</Elem>
|
||||||
|
<Elem>LIB_PICO_STDIO_UART=0</Elem>
|
||||||
|
<Elem>LIB_PICO_STDLIB=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC_CRITICAL_SECTION=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC_MUTEX=1</Elem>
|
||||||
|
<Elem>LIB_PICO_SYNC_SEM=1</Elem>
|
||||||
|
<Elem>LIB_PICO_TIME=1</Elem>
|
||||||
|
<Elem>LIB_PICO_TIME_ADAPTER=1</Elem>
|
||||||
|
<Elem>LIB_PICO_UNIQUE_ID=1</Elem>
|
||||||
|
<Elem>LIB_PICO_UTIL=1</Elem>
|
||||||
|
<Elem>LIB_TINYUSB_BOARD=1</Elem>
|
||||||
|
<Elem>LIB_TINYUSB_DEVICE=1</Elem>
|
||||||
|
<Elem>LWIP_CHECKSUM_CTRL_PER_NETIF=1</Elem>
|
||||||
|
<Elem>LWIP_IGMP=1</Elem>
|
||||||
|
<Elem>LWIP_IPV4=1</Elem>
|
||||||
|
<Elem>LWIP_IPV6=0</Elem>
|
||||||
|
<Elem>PICO_32BIT=1</Elem>
|
||||||
|
<Elem>PICO_BUILD=1</Elem>
|
||||||
|
<Elem>PICO_COPY_TO_RAM=0</Elem>
|
||||||
|
<Elem>PICO_CYW43_ARCH_HEADER=stdint.h</Elem>
|
||||||
|
<Elem>PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1</Elem>
|
||||||
|
<Elem>PICO_FLASH_SIZE_BYTES=4194304</Elem>
|
||||||
|
<Elem>PICO_MAX_SHARED_IRQ_HANDLERS=6</Elem>
|
||||||
|
<Elem>PICO_NO_BINARY_INFO=1</Elem>
|
||||||
|
<Elem>PICO_NO_FLASH=0</Elem>
|
||||||
|
<Elem>PICO_NO_HARDWARE=0</Elem>
|
||||||
|
<Elem>PICO_ON_DEVICE=1</Elem>
|
||||||
|
<Elem>PICO_PLATFORM=rp2350-arm-s</Elem>
|
||||||
|
<Elem>PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1</Elem>
|
||||||
|
<Elem>PICO_RP2040_USB_DEVICE_UFRAME_FIX=1</Elem>
|
||||||
|
<Elem>PICO_RP2350=1</Elem>
|
||||||
|
<Elem>PICO_USE_BLOCKED_RAM=0</Elem>
|
||||||
|
<Elem>PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64</Elem>
|
||||||
|
<Elem>PLATFORMIO=60118</Elem>
|
||||||
|
<Elem>TARGET_RP2350</Elem>
|
||||||
|
<Elem>USBD_MAX_POWER_MA=250</Elem>
|
||||||
|
<Elem>USBD_PID=0x000F</Elem>
|
||||||
|
<Elem>USBD_VID=0x2E8A</Elem>
|
||||||
|
<Elem>USB_MANUFACTURER="Raspberry Pi"</Elem>
|
||||||
|
<Elem>USB_PID=0x000F</Elem>
|
||||||
|
<Elem>USB_PRODUCT="Pico 2"</Elem>
|
||||||
|
<Elem>USB_VID=0x2E8A</Elem>
|
||||||
|
<Elem>USE_UTF8_LONG_NAMES=1</Elem>
|
||||||
|
</preprocessorList>
|
||||||
|
</ccTool>
|
||||||
|
</makeTool>
|
||||||
|
<preBuild>
|
||||||
|
<preBuildCommandWorkingDir>.</preBuildCommandWorkingDir>
|
||||||
|
<preBuildCommand></preBuildCommand>
|
||||||
|
</preBuild>
|
||||||
|
</makefileType>
|
||||||
|
<item path="lib/Enigma/Enigma.cpp" ex="false" tool="1" flavor2="0">
|
||||||
|
</item>
|
||||||
|
<item path="lib/Enigma/Enigma.h" ex="false" tool="3" flavor2="0">
|
||||||
|
</item>
|
||||||
|
<item path="lib/Iambic/Iambic.cpp" ex="false" tool="1" flavor2="0">
|
||||||
|
</item>
|
||||||
|
<item path="lib/Iambic/Iambic.h" ex="false" tool="3" flavor2="0">
|
||||||
|
</item>
|
||||||
|
<item path="platformio.ini" ex="false" tool="3" flavor2="0">
|
||||||
|
</item>
|
||||||
|
</conf>
|
||||||
|
</confs>
|
||||||
|
</configurationDescriptor>
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU
|
||||||
|
* General Public License Version 2 only ("GPL") or the Common
|
||||||
|
* Development and Distribution License("CDDL") (collectively, the
|
||||||
|
* "License"). You may not use this file except in compliance with the
|
||||||
|
* License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html
|
||||||
|
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
|
||||||
|
* specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header
|
||||||
|
* Notice in each file and include the License file at
|
||||||
|
* nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the
|
||||||
|
* License Header, with the fields enclosed by brackets [] replaced by
|
||||||
|
* your own identifying information:
|
||||||
|
* "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL
|
||||||
|
* or only the GPL Version 2, indicate your decision by adding
|
||||||
|
* "[Contributor] elects to include this software in this distribution
|
||||||
|
* under the [CDDL or GPL Version 2] license." If you do not indicate a
|
||||||
|
* single choice of license, a recipient has the option to distribute
|
||||||
|
* your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above.
|
||||||
|
* However, if you add GPL Version 2 code and therefore, elected the GPL
|
||||||
|
* Version 2 license, then the option applies only if the new code is
|
||||||
|
* made subject to such option by the copyright holder.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*/
|
||||||
|
|
||||||
|
// List of standard headers was taken in http://en.cppreference.com/w/c/header
|
||||||
|
|
||||||
|
#include <assert.h> // Conditionally compiled macro that compares its argument to zero
|
||||||
|
#include <ctype.h> // Functions to determine the type contained in character data
|
||||||
|
#include <errno.h> // Macros reporting error conditions
|
||||||
|
#include <float.h> // Limits of float types
|
||||||
|
#include <limits.h> // Sizes of basic types
|
||||||
|
#include <locale.h> // Localization utilities
|
||||||
|
#include <math.h> // Common mathematics functions
|
||||||
|
#include <setjmp.h> // Nonlocal jumps
|
||||||
|
#include <signal.h> // Signal handling
|
||||||
|
#include <stdarg.h> // Variable arguments
|
||||||
|
#include <stddef.h> // Common macro definitions
|
||||||
|
#include <stdio.h> // Input/output
|
||||||
|
#include <string.h> // String handling
|
||||||
|
#include <stdlib.h> // General utilities: memory management, program utilities, string conversions, random numbers
|
||||||
|
#include <time.h> // Time/date utilities
|
||||||
|
#include <iso646.h> // (since C95) Alternative operator spellings
|
||||||
|
#include <wchar.h> // (since C95) Extended multibyte and wide character utilities
|
||||||
|
#include <wctype.h> // (since C95) Wide character classification and mapping utilities
|
||||||
|
#ifdef _STDC_C99
|
||||||
|
#include <complex.h> // (since C99) Complex number arithmetic
|
||||||
|
#include <fenv.h> // (since C99) Floating-point environment
|
||||||
|
#include <inttypes.h> // (since C99) Format conversion of integer types
|
||||||
|
#include <stdbool.h> // (since C99) Boolean type
|
||||||
|
#include <stdint.h> // (since C99) Fixed-width integer types
|
||||||
|
#include <tgmath.h> // (since C99) Type-generic math (macros wrapping math.h and complex.h)
|
||||||
|
#endif
|
||||||
|
#ifdef _STDC_C11
|
||||||
|
#include <stdalign.h> // (since C11) alignas and alignof convenience macros
|
||||||
|
#include <stdatomic.h> // (since C11) Atomic types
|
||||||
|
#include <stdnoreturn.h> // (since C11) noreturn convenience macros
|
||||||
|
#include <threads.h> // (since C11) Thread library
|
||||||
|
#include <uchar.h> // (since C11) UTF-16 and UTF-32 character utilities
|
||||||
|
#endif
|
||||||
100
src/wsprPico_GPS_RP2350/nbproject/private/configurations.xml
Normal file
100
src/wsprPico_GPS_RP2350/nbproject/private/configurations.xml
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configurationDescriptor version="100">
|
||||||
|
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
|
||||||
|
<df root="." name="0">
|
||||||
|
<df name="include">
|
||||||
|
</df>
|
||||||
|
<df name="lib">
|
||||||
|
<df name="Afficheur">
|
||||||
|
<in>Afficheur.cpp</in>
|
||||||
|
<in>Afficheur.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Dds">
|
||||||
|
<in>Dds.cpp</in>
|
||||||
|
<in>Dds.h</in>
|
||||||
|
<in>vfo2.pio.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Encodeur">
|
||||||
|
<in>Encodeur.cpp</in>
|
||||||
|
<in>Encodeur.h</in>
|
||||||
|
<in>quadrature.pio.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Enigma">
|
||||||
|
<in>Enigma.cpp</in>
|
||||||
|
<in>Enigma.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Iambic">
|
||||||
|
<in>Iambic.cpp</in>
|
||||||
|
<in>Iambic.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Locator">
|
||||||
|
<in>Locator.cpp</in>
|
||||||
|
<in>Locator.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Menu">
|
||||||
|
<in>Menu.cpp</in>
|
||||||
|
<in>Menu.h</in>
|
||||||
|
</df>
|
||||||
|
<df name="Modulation">
|
||||||
|
<in>Modulation.cpp</in>
|
||||||
|
<in>Modulation.h</in>
|
||||||
|
</df>
|
||||||
|
</df>
|
||||||
|
<df name="src">
|
||||||
|
<in>main.cpp</in>
|
||||||
|
</df>
|
||||||
|
<df name="test">
|
||||||
|
</df>
|
||||||
|
<in>platformio.ini</in>
|
||||||
|
</df>
|
||||||
|
</logicalFolder>
|
||||||
|
<projectmakefile></projectmakefile>
|
||||||
|
<confs>
|
||||||
|
<conf name="Default" type="0">
|
||||||
|
<toolsSet>
|
||||||
|
<developmentServer>localhost</developmentServer>
|
||||||
|
<platform>2</platform>
|
||||||
|
</toolsSet>
|
||||||
|
<compile>
|
||||||
|
<compiledirpicklist>
|
||||||
|
<compiledirpicklistitem>.</compiledirpicklistitem>
|
||||||
|
<compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem>
|
||||||
|
</compiledirpicklist>
|
||||||
|
<compiledir>${AUTO_FOLDER}</compiledir>
|
||||||
|
<compilecommandpicklist>
|
||||||
|
<compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem>
|
||||||
|
<compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem>
|
||||||
|
</compilecommandpicklist>
|
||||||
|
<compilecommand>${AUTO_COMPILE}</compilecommand>
|
||||||
|
</compile>
|
||||||
|
<dbx_gdbdebugger version="1">
|
||||||
|
<gdb_pathmaps>
|
||||||
|
</gdb_pathmaps>
|
||||||
|
<gdb_interceptlist>
|
||||||
|
<gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
|
||||||
|
</gdb_interceptlist>
|
||||||
|
<gdb_options>
|
||||||
|
<DebugOptions>
|
||||||
|
</DebugOptions>
|
||||||
|
</gdb_options>
|
||||||
|
<gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
|
||||||
|
</dbx_gdbdebugger>
|
||||||
|
<nativedebugger version="1">
|
||||||
|
<engine>gdb</engine>
|
||||||
|
</nativedebugger>
|
||||||
|
<runprofile version="9">
|
||||||
|
<runcommandpicklist>
|
||||||
|
<runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
|
||||||
|
<runcommandpicklistitem>/usr/local/bin/pio -f -c netbeans run --target upload</runcommandpicklistitem>
|
||||||
|
</runcommandpicklist>
|
||||||
|
<runcommand>/usr/local/bin/pio -f -c netbeans run --target upload</runcommand>
|
||||||
|
<rundir>.</rundir>
|
||||||
|
<buildfirst>false</buildfirst>
|
||||||
|
<terminal-type>0</terminal-type>
|
||||||
|
<remove-instrumentation>0</remove-instrumentation>
|
||||||
|
<environment>
|
||||||
|
</environment>
|
||||||
|
</runprofile>
|
||||||
|
</conf>
|
||||||
|
</confs>
|
||||||
|
</configurationDescriptor>
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU
|
||||||
|
* General Public License Version 2 only ("GPL") or the Common
|
||||||
|
* Development and Distribution License("CDDL") (collectively, the
|
||||||
|
* "License"). You may not use this file except in compliance with the
|
||||||
|
* License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html
|
||||||
|
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
|
||||||
|
* specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header
|
||||||
|
* Notice in each file and include the License file at
|
||||||
|
* nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the
|
||||||
|
* License Header, with the fields enclosed by brackets [] replaced by
|
||||||
|
* your own identifying information:
|
||||||
|
* "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL
|
||||||
|
* or only the GPL Version 2, indicate your decision by adding
|
||||||
|
* "[Contributor] elects to include this software in this distribution
|
||||||
|
* under the [CDDL or GPL Version 2] license." If you do not indicate a
|
||||||
|
* single choice of license, a recipient has the option to distribute
|
||||||
|
* your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above.
|
||||||
|
* However, if you add GPL Version 2 code and therefore, elected the GPL
|
||||||
|
* Version 2 license, then the option applies only if the new code is
|
||||||
|
* made subject to such option by the copyright holder.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*/
|
||||||
|
|
||||||
|
// List of standard headers was taken in http://en.cppreference.com/w/cpp/header
|
||||||
|
|
||||||
|
#include <cstdlib> // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search
|
||||||
|
#include <csignal> // Functions and macro constants for signal management
|
||||||
|
#include <csetjmp> // Macro (and function) that saves (and jumps) to an execution context
|
||||||
|
#include <cstdarg> // Handling of variable length argument lists
|
||||||
|
#include <typeinfo> // Runtime type information utilities
|
||||||
|
#include <bitset> // std::bitset class template
|
||||||
|
#include <functional> // Function objects, designed for use with the standard algorithms
|
||||||
|
#include <utility> // Various utility components
|
||||||
|
#include <ctime> // C-style time/date utilites
|
||||||
|
#include <cstddef> // typedefs for types such as size_t, NULL and others
|
||||||
|
#include <new> // Low-level memory management utilities
|
||||||
|
#include <memory> // Higher level memory management utilities
|
||||||
|
#include <climits> // limits of integral types
|
||||||
|
#include <cfloat> // limits of float types
|
||||||
|
#include <limits> // standardized way to query properties of arithmetic types
|
||||||
|
#include <exception> // Exception handling utilities
|
||||||
|
#include <stdexcept> // Standard exception objects
|
||||||
|
#include <cassert> // Conditionally compiled macro that compares its argument to zero
|
||||||
|
#include <cerrno> // Macro containing the last error number
|
||||||
|
#include <cctype> // functions to determine the type contained in character data
|
||||||
|
#include <cwctype> // functions for determining the type of wide character data
|
||||||
|
#include <cstring> // various narrow character string handling functions
|
||||||
|
#include <cwchar> // various wide and multibyte string handling functions
|
||||||
|
#include <string> // std::basic_string class template
|
||||||
|
#include <vector> // std::vector container
|
||||||
|
#include <deque> // std::deque container
|
||||||
|
#include <list> // std::list container
|
||||||
|
#include <set> // std::set and std::multiset associative containers
|
||||||
|
#include <map> // std::map and std::multimap associative containers
|
||||||
|
#include <stack> // std::stack container adaptor
|
||||||
|
#include <queue> // std::queue and std::priority_queue container adaptors
|
||||||
|
#include <algorithm> // Algorithms that operate on containers
|
||||||
|
#include <iterator> // Container iterators
|
||||||
|
#include <cmath> // Common mathematics functions
|
||||||
|
#include <complex> // Complex number type
|
||||||
|
#include <valarray> // Class for representing and manipulating arrays of values
|
||||||
|
#include <numeric> // Numeric operations on values in containers
|
||||||
|
#include <iosfwd> // forward declarations of all classes in the input/output library
|
||||||
|
#include <ios> // std::ios_base class, std::basic_ios class template and several typedefs
|
||||||
|
#include <istream> // std::basic_istream class template and several typedefs
|
||||||
|
#include <ostream> // std::basic_ostream, std::basic_iostream class templates and several typedefs
|
||||||
|
#include <iostream> // several standard stream objects
|
||||||
|
#include <fstream> // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs
|
||||||
|
#include <sstream> // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs
|
||||||
|
#include <strstream> // std::strstream, std::istrstream, std::ostrstream(deprecated)
|
||||||
|
#include <iomanip> // Helper functions to control the format or input and output
|
||||||
|
#include <streambuf> // std::basic_streambuf class template
|
||||||
|
#include <cstdio> // C-style input-output functions
|
||||||
|
#include <locale> // Localization utilities
|
||||||
|
#include <clocale> // C localization utilities
|
||||||
|
#include <ciso646> // empty header. The macros that appear in iso646.h in C are keywords in C++
|
||||||
|
#if __cplusplus >= 201103L
|
||||||
|
#include <typeindex> // (since C++11) std::type_index
|
||||||
|
#include <type_traits> // (since C++11) Compile-time type information
|
||||||
|
#include <chrono> // (since C++11) C++ time utilites
|
||||||
|
#include <initializer_list> // (since C++11) std::initializer_list class template
|
||||||
|
#include <tuple> // (since C++11) std::tuple class template
|
||||||
|
#include <scoped_allocator> // (since C++11) Nested allocator class
|
||||||
|
#include <cstdint> // (since C++11) fixed-size types and limits of other types
|
||||||
|
#include <cinttypes> // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions
|
||||||
|
#include <system_error> // (since C++11) defines std::error_code, a platform-dependent error code
|
||||||
|
#include <cuchar> // (since C++11) C-style Unicode character conversion functions
|
||||||
|
#include <array> // (since C++11) std::array container
|
||||||
|
#include <forward_list> // (since C++11) std::forward_list container
|
||||||
|
#include <unordered_set> // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers
|
||||||
|
#include <unordered_map> // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers
|
||||||
|
#include <random> // (since C++11) Random number generators and distributions
|
||||||
|
#include <ratio> // (since C++11) Compile-time rational arithmetic
|
||||||
|
#include <cfenv> // (since C++11) Floating-point environment access functions
|
||||||
|
#include <codecvt> // (since C++11) Unicode conversion facilities
|
||||||
|
#include <regex> // (since C++11) Classes, algorithms and iterators to support regular expression processing
|
||||||
|
#include <atomic> // (since C++11) Atomic operations library
|
||||||
|
#include <ccomplex> // (since C++11)(deprecated in C++17) simply includes the header <complex>
|
||||||
|
#include <ctgmath> // (since C++11)(deprecated in C++17) simply includes the headers <ccomplex> (until C++17)<complex> (since C++17) and <cmath>: the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers
|
||||||
|
#include <cstdalign> // (since C++11)(deprecated in C++17) defines one compatibility macro constant
|
||||||
|
#include <cstdbool> // (since C++11)(deprecated in C++17) defines one compatibility macro constant
|
||||||
|
#include <thread> // (since C++11) std::thread class and supporting functions
|
||||||
|
#include <mutex> // (since C++11) mutual exclusion primitives
|
||||||
|
#include <future> // (since C++11) primitives for asynchronous computations
|
||||||
|
#include <condition_variable> // (since C++11) thread waiting conditions
|
||||||
|
#endif
|
||||||
|
#if __cplusplus >= 201300L
|
||||||
|
#include <shared_mutex> // (since C++14) shared mutual exclusion primitives
|
||||||
|
#endif
|
||||||
|
#if __cplusplus >= 201500L
|
||||||
|
#include <any> // (since C++17) std::any class template
|
||||||
|
#include <optional> // (since C++17) std::optional class template
|
||||||
|
#include <variant> // (since C++17) std::variant class template
|
||||||
|
#include <memory_resource> // (since C++17) Polymorphic allocators and memory resources
|
||||||
|
#include <string_view> // (since C++17) std::basic_string_view class template
|
||||||
|
#include <execution> // (since C++17) Predefined execution policies for parallel versions of the algorithms
|
||||||
|
#include <filesystem> // (since C++17) std::path class and supporting functions
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
# Launchers File syntax:
|
||||||
|
#
|
||||||
|
# [Must-have property line]
|
||||||
|
# launcher1.runCommand=<Run Command>
|
||||||
|
# [Optional extra properties]
|
||||||
|
# launcher1.displayName=<Display Name, runCommand by default>
|
||||||
|
# launcher1.buildCommand=<Build Command, Build Command specified in project properties by default>
|
||||||
|
# launcher1.runDir=<Run Directory, ${PROJECT_DIR} by default>
|
||||||
|
# launcher1.symbolFiles=<Symbol Files loaded by debugger, ${OUTPUT_PATH} by default>
|
||||||
|
# launcher1.env.<Environment variable KEY>=<Environment variable VALUE>
|
||||||
|
# (If this value is quoted with ` it is handled as a native command which execution result will become the value)
|
||||||
|
# [Common launcher properties]
|
||||||
|
# common.runDir=<Run Directory>
|
||||||
|
# (This value is overwritten by a launcher specific runDir value if the latter exists)
|
||||||
|
# common.env.<Environment variable KEY>=<Environment variable VALUE>
|
||||||
|
# (Environment variables from common launcher are merged with launcher specific variables)
|
||||||
|
# common.symbolFiles=<Symbol Files loaded by debugger>
|
||||||
|
# (This value is overwritten by a launcher specific symbolFiles value if the latter exists)
|
||||||
|
#
|
||||||
|
# In runDir, symbolFiles and env fields you can use these macros:
|
||||||
|
# ${PROJECT_DIR} - project directory absolute path
|
||||||
|
# ${OUTPUT_PATH} - linker output path (relative to project directory path)
|
||||||
|
# ${OUTPUT_BASENAME}- linker output filename
|
||||||
|
# ${TESTDIR} - test files directory (relative to project directory path)
|
||||||
|
# ${OBJECTDIR} - object files directory (relative to project directory path)
|
||||||
|
# ${CND_DISTDIR} - distribution directory (relative to project directory path)
|
||||||
|
# ${CND_BUILDDIR} - build directory (relative to project directory path)
|
||||||
|
# ${CND_PLATFORM} - platform name
|
||||||
|
# ${CND_CONF} - configuration name
|
||||||
|
# ${CND_DLIB_EXT} - dynamic library extension
|
||||||
|
#
|
||||||
|
# All the project launchers must be listed in the file!
|
||||||
|
#
|
||||||
|
# launcher1.runCommand=...
|
||||||
|
# launcher2.runCommand=...
|
||||||
|
# ...
|
||||||
|
# common.runDir=...
|
||||||
|
# common.env.KEY=VALUE
|
||||||
|
|
||||||
|
# launcher1.runCommand=<type your run command here>
|
||||||
30
src/wsprPico_GPS_RP2350/nbproject/private/private.xml
Normal file
30
src/wsprPico_GPS_RP2350/nbproject/private/private.xml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||||
|
<code-assistance-data xmlns="http://www.netbeans.org/ns/make-project-private/1">
|
||||||
|
<code-model-enabled>true</code-model-enabled>
|
||||||
|
</code-assistance-data>
|
||||||
|
<data xmlns="http://www.netbeans.org/ns/make-project-private/1">
|
||||||
|
<activeConfTypeElem>0</activeConfTypeElem>
|
||||||
|
<activeConfIndexElem>0</activeConfIndexElem>
|
||||||
|
</data>
|
||||||
|
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||||
|
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||||
|
<group>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/src/main.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Iambic/Iambic.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Dds/Dds.h</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Dds/Dds.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Encodeur/Encodeur.h</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Encodeur/Encodeur.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Afficheur/Afficheur.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Afficheur/Afficheur.h</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Iambic/Iambic.h</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Modulation/Modulation.h</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Modulation/Modulation.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Menu/Menu.h</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Menu/Menu.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Enigma/Enigma.cpp</file>
|
||||||
|
<file>file:/home/ale/NetBeansProjects/pico/wsprPico2/lib/Enigma/Enigma.h</file>
|
||||||
|
</group>
|
||||||
|
</open-files>
|
||||||
|
</project-private>
|
||||||
26
src/wsprPico_GPS_RP2350/nbproject/project.xml
Normal file
26
src/wsprPico_GPS_RP2350/nbproject/project.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||||
|
<type>org.netbeans.modules.cnd.makeproject</type>
|
||||||
|
<configuration>
|
||||||
|
<data xmlns="http://www.netbeans.org/ns/make-project/1">
|
||||||
|
<name>wsprPico2</name>
|
||||||
|
<c-extensions/>
|
||||||
|
<cpp-extensions>cpp</cpp-extensions>
|
||||||
|
<header-extensions>h</header-extensions>
|
||||||
|
<sourceEncoding>UTF-8</sourceEncoding>
|
||||||
|
<make-dep-projects/>
|
||||||
|
<sourceRootList>
|
||||||
|
<sourceRootElem>.</sourceRootElem>
|
||||||
|
</sourceRootList>
|
||||||
|
<confList>
|
||||||
|
<confElem>
|
||||||
|
<name>Default</name>
|
||||||
|
<type>0</type>
|
||||||
|
</confElem>
|
||||||
|
</confList>
|
||||||
|
<formatting>
|
||||||
|
<project-formatting-style>false</project-formatting-style>
|
||||||
|
</formatting>
|
||||||
|
</data>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
||||||
25
src/wsprPico_GPS_RP2350/platformio.ini
Normal file
25
src/wsprPico_GPS_RP2350/platformio.ini
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
; PlatformIO Project Configuration File
|
||||||
|
;
|
||||||
|
; Build options: build flags, source filter
|
||||||
|
; Upload options: custom upload port, speed and extra flags
|
||||||
|
; Library options: dependencies, extra library storages
|
||||||
|
; Advanced options: extra scripting
|
||||||
|
;
|
||||||
|
; Please visit documentation for the other options and examples
|
||||||
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
|
[env:pico2]
|
||||||
|
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
|
||||||
|
board = rpipico2
|
||||||
|
framework = arduino
|
||||||
|
board_build.core = earlephilhower
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
https://github.com/etherkit/JTEncode
|
||||||
|
akoro/Console@^1.2.1
|
||||||
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
|
SPI
|
||||||
|
Wire
|
||||||
|
adafruit/Adafruit NeoPixel@^1.15.1
|
||||||
|
https://github.com/adafruit/Adafruit-ST7735-Library
|
||||||
|
https://github.com/adafruit/Adafruit-gfx-library
|
||||||
383
src/wsprPico_GPS_RP2350/src/main.cpp
Normal file
383
src/wsprPico_GPS_RP2350/src/main.cpp
Normal file
|
|
@ -0,0 +1,383 @@
|
||||||
|
/*
|
||||||
|
* PicoWSPR 40m/30m
|
||||||
|
* https://www.elektronik-labor.de/Raspberry/Pico38.html
|
||||||
|
*
|
||||||
|
* TX GP1 (RX)
|
||||||
|
* RX GP0 (TX)
|
||||||
|
* https://github.com/earlephilhower/arduino-pico
|
||||||
|
* one wire GP2
|
||||||
|
* LED GP4
|
||||||
|
* BP MENU GP6 actif au NL0 (detection à la mise sous tension)
|
||||||
|
*
|
||||||
|
* installer wsjt-x
|
||||||
|
* https://wsjt.sourceforge.io/wsjtx.html
|
||||||
|
* wsjtx_2.7.0_amd64.deb
|
||||||
|
* sudo dpkg -i wsjtx_2.7.0_amd64.deb
|
||||||
|
* sudo apt-get install -f
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Menu.h>
|
||||||
|
#include <TinyGPS++.h>
|
||||||
|
|
||||||
|
#include <Modulation.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include "Afficheur.h"
|
||||||
|
#include "Locator.h"
|
||||||
|
#include "Iambic.h"
|
||||||
|
|
||||||
|
#include "Encodeur.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define PTT_PIN 26
|
||||||
|
#define LED_TX_PIN 3
|
||||||
|
#define MINUTES 10
|
||||||
|
|
||||||
|
TinyGPSPlus gps;
|
||||||
|
|
||||||
|
|
||||||
|
Menu *leMenu;
|
||||||
|
Modulation* mod;
|
||||||
|
Afficheur *afficheur;
|
||||||
|
Iambic *iambic;
|
||||||
|
Locator loc;
|
||||||
|
|
||||||
|
|
||||||
|
void checkGps();
|
||||||
|
void computeLocator(int nbChar);
|
||||||
|
void initTimeTable(void);
|
||||||
|
txModes recherche(int minutes, int seconde);
|
||||||
|
void txing(txModes md);
|
||||||
|
|
||||||
|
void rtty();
|
||||||
|
void wspr();
|
||||||
|
void ft8();
|
||||||
|
void hell();
|
||||||
|
void cw();
|
||||||
|
void manchester();
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
float latitude; // Latitude en degrés
|
||||||
|
float longitude; // Longitude en degrés
|
||||||
|
float speedKmph; // Vitesse en km/h
|
||||||
|
float courseDeg; // Cap en degrés
|
||||||
|
char locator[9]; //= "JN07";
|
||||||
|
} GpsData;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
txModes mode;
|
||||||
|
uint8_t minute;
|
||||||
|
uint8_t seconde;
|
||||||
|
}timeTable;
|
||||||
|
|
||||||
|
timeTable timt[(60/MINUTES)*4];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int secondPrec = 0;
|
||||||
|
|
||||||
|
GpsData position;
|
||||||
|
config cfg;
|
||||||
|
|
||||||
|
volatile bool stateObjMod=false;
|
||||||
|
|
||||||
|
bool firstTxStart=false;
|
||||||
|
|
||||||
|
|
||||||
|
Encodeur enc(pio1);
|
||||||
|
|
||||||
|
|
||||||
|
void setup(void) {
|
||||||
|
set_sys_clock_khz(CLK_KHZ, true);
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
|
||||||
|
Wire.setSDA(4);
|
||||||
|
Wire.setSCL(5);
|
||||||
|
|
||||||
|
Wire.begin();
|
||||||
|
|
||||||
|
|
||||||
|
pinMode(PTT_PIN,OUTPUT);
|
||||||
|
digitalWrite(PTT_PIN,LOW);
|
||||||
|
pinMode(LED_TX_PIN,OUTPUT);
|
||||||
|
digitalWrite(LED_TX_PIN,LOW);
|
||||||
|
|
||||||
|
afficheur = new Afficheur();
|
||||||
|
afficheur->begin();
|
||||||
|
|
||||||
|
if (digitalRead(MENU_PIN) == 0) {
|
||||||
|
afficheur->modeDisplay("MENU");
|
||||||
|
}
|
||||||
|
|
||||||
|
leMenu = new Menu(); // Menu de configuration
|
||||||
|
leMenu->setup();
|
||||||
|
|
||||||
|
delete(leMenu);
|
||||||
|
|
||||||
|
afficheur->modeEfface();
|
||||||
|
|
||||||
|
EEPROM.begin(sizeof (config));
|
||||||
|
EEPROM.get(0, cfg);
|
||||||
|
|
||||||
|
Serial1.setTX(0); // GP0 = TX vers GPS RX
|
||||||
|
Serial1.setRX(1); // GP1 = RX depuis GPS TX
|
||||||
|
Serial1.begin(cfg.baud); // Démarre UART1
|
||||||
|
|
||||||
|
|
||||||
|
mod = new Modulation(&cfg);
|
||||||
|
stateObjMod = true; //il faut que l'objet mod ait le temps de s'initialiser avant de lancer le dds dans le core 1
|
||||||
|
|
||||||
|
|
||||||
|
if (cfg.mode == IAMBIC) {
|
||||||
|
iambic = new Iambic(mod, afficheur, cfg.wpm, cfg.bicmd,cfg.enigma);
|
||||||
|
}
|
||||||
|
|
||||||
|
Wire.setClock(400000);
|
||||||
|
initTimeTable();
|
||||||
|
//led no gps sync to lcd
|
||||||
|
afficheur->configDisplay(cfg);
|
||||||
|
//delay(10000);
|
||||||
|
enc.begin();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
/*
|
||||||
|
char car;
|
||||||
|
enc.updateButton();
|
||||||
|
if (enc.wasPressed()) {
|
||||||
|
Serial.print(" | CLICK");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Serial.available() > 0) {
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (cfg.mode == IAMBIC) {
|
||||||
|
//Serial.println("scan");
|
||||||
|
iambic->scan();
|
||||||
|
iambic->vband();
|
||||||
|
int8_t step = enc.tick(); //+1, -1, ou 0
|
||||||
|
if (step!=0) {
|
||||||
|
mod->changeFreqCW(step);
|
||||||
|
afficheur->printFrequency(mod->getFreqCW());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
checkGps();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void checkGps() {
|
||||||
|
char car;
|
||||||
|
char buffer[12];
|
||||||
|
txModes md;
|
||||||
|
while (Serial1.available()) {
|
||||||
|
car = Serial1.read();
|
||||||
|
gps.encode(car);
|
||||||
|
if (cfg.nmeaEnabled) {
|
||||||
|
Serial.print(car);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//séquenceur
|
||||||
|
if (gps.time.isValid() && gps.location.isUpdated()) {
|
||||||
|
|
||||||
|
int hour = gps.time.hour();
|
||||||
|
int minute = gps.time.minute();
|
||||||
|
int second = gps.time.second();
|
||||||
|
//int day = gps.date.day(); //inutile
|
||||||
|
//int month = gps.date.month();
|
||||||
|
//int year = gps.date.year();
|
||||||
|
|
||||||
|
if (second != secondPrec) {
|
||||||
|
if (!cfg.nmeaEnabled) {
|
||||||
|
snprintf(buffer, sizeof (buffer), "%02d:%02d:%02d", hour, minute, second);
|
||||||
|
Serial.printf("Heure GPS: %s\n\r", buffer);
|
||||||
|
afficheur->timeDisplay(buffer);
|
||||||
|
}
|
||||||
|
secondPrec = second;
|
||||||
|
if (cfg.follow) {
|
||||||
|
md=recherche(minute,second);
|
||||||
|
if (md!=NOTX){
|
||||||
|
if (!firstTxStart) {
|
||||||
|
afficheur->clearDisplay();
|
||||||
|
firstTxStart = true;
|
||||||
|
}
|
||||||
|
txing(md);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (minute % cfg.minute == 0 && second == 0) { //peut etre une tramsission à faire
|
||||||
|
if (!firstTxStart) {
|
||||||
|
afficheur->clearDisplay();
|
||||||
|
firstTxStart = true;
|
||||||
|
}
|
||||||
|
txing(cfg.mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Serial.println("Heure GPS non disponible.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//returne un bool et change de couleur
|
||||||
|
void computeLocator(int nbChar) {
|
||||||
|
uint8_t dbm;
|
||||||
|
if (gps.location.isUpdated()) {
|
||||||
|
position.latitude = gps.location.lat();
|
||||||
|
position.longitude = gps.location.lng();
|
||||||
|
position.speedKmph = gps.speed.knots();
|
||||||
|
position.courseDeg = gps.course.deg();
|
||||||
|
loc.getLocator(position.latitude, position.longitude, nbChar, position.locator,&dbm);
|
||||||
|
mod->setDbm(dbm);
|
||||||
|
Serial.printf("Lat: %.6f, Lon: %.6f\n\r", position.latitude, position.longitude);
|
||||||
|
Serial.printf("Speed: %.2f km/h, Course: %.2f°\n\r", position.speedKmph, position.courseDeg);
|
||||||
|
Serial.printf("Locator: %s dbm %d\n\n\r", position.locator,dbm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void txing(txModes md) {
|
||||||
|
switch (md) { //manque la gestion de la répétition avec cfg.nbFrame
|
||||||
|
case WSPR: wspr();
|
||||||
|
break;
|
||||||
|
case RTTY: rtty();
|
||||||
|
break;
|
||||||
|
case FT8: ft8();
|
||||||
|
break;
|
||||||
|
case HELL: hell();
|
||||||
|
break;
|
||||||
|
case CW: cw();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ft8() {
|
||||||
|
digitalWrite(LED_TX_PIN,HIGH);
|
||||||
|
Serial.println("Appel de la fonction ft8");
|
||||||
|
computeLocator(8);
|
||||||
|
afficheur->modeDisplay("FT8");
|
||||||
|
digitalWrite(PTT_PIN,HIGH);
|
||||||
|
mod->sendFt8(cfg.call,position.locator);
|
||||||
|
digitalWrite(PTT_PIN,LOW);
|
||||||
|
afficheur->modeEfface();
|
||||||
|
digitalWrite(LED_TX_PIN,LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wspr() {
|
||||||
|
digitalWrite(LED_TX_PIN,HIGH);
|
||||||
|
Serial.println("Appel de la fonction WSPR");
|
||||||
|
computeLocator(4);
|
||||||
|
|
||||||
|
afficheur->modeDisplay("WSPR");
|
||||||
|
digitalWrite(PTT_PIN,HIGH);
|
||||||
|
mod->sendWspr(position.locator);
|
||||||
|
digitalWrite(PTT_PIN,LOW);
|
||||||
|
afficheur->modeEfface();
|
||||||
|
digitalWrite(LED_TX_PIN,LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rtty() {
|
||||||
|
char buffer[300];
|
||||||
|
digitalWrite(LED_TX_PIN,HIGH);
|
||||||
|
Serial.println("Appel de la fonction RTTY");
|
||||||
|
computeLocator(8);
|
||||||
|
sprintf(buffer, " %s BEACON LOC %s LAT:%.6f LON:%.6f SPD:%.1f KTS HDG:%.0f PSE REPORT %s ........\n\r", cfg.call, position.locator, position.latitude, position.longitude, position.speedKmph, position.courseDeg,cfg.mail);
|
||||||
|
Serial.println(buffer);
|
||||||
|
afficheur->modeDisplay("RTTY");
|
||||||
|
digitalWrite(PTT_PIN,HIGH);
|
||||||
|
mod->sendRtty(buffer);
|
||||||
|
digitalWrite(PTT_PIN,LOW);
|
||||||
|
afficheur->modeEfface();
|
||||||
|
digitalWrite(LED_TX_PIN,LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hell() {
|
||||||
|
char buffer[300];
|
||||||
|
digitalWrite(LED_TX_PIN,HIGH);
|
||||||
|
Serial.println("Appel de la fonction HELL");
|
||||||
|
computeLocator(8);
|
||||||
|
sprintf(buffer, "..... %s BEACON LOC %s ....\n\r", cfg.call, position.locator);
|
||||||
|
Serial.println(buffer);
|
||||||
|
afficheur->modeDisplay("HELL");
|
||||||
|
digitalWrite(PTT_PIN,HIGH);
|
||||||
|
mod->sendHell(buffer);
|
||||||
|
digitalWrite(PTT_PIN,LOW);
|
||||||
|
afficheur->modeEfface();
|
||||||
|
digitalWrite(LED_TX_PIN,LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cw() {
|
||||||
|
char buffer[300];
|
||||||
|
digitalWrite(LED_TX_PIN,HIGH);
|
||||||
|
Serial.println("Appel de la fonction CW");
|
||||||
|
computeLocator(8);
|
||||||
|
sprintf(buffer, " %s %s BEACON %s \n\r", cfg.call,cfg.call, position.locator);
|
||||||
|
Serial.println(buffer);
|
||||||
|
afficheur->modeDisplay(" CW");
|
||||||
|
digitalWrite(PTT_PIN,HIGH);
|
||||||
|
mod->sendCw(buffer,cfg.wpm);
|
||||||
|
digitalWrite(PTT_PIN,LOW);
|
||||||
|
afficheur->modeEfface();
|
||||||
|
digitalWrite(LED_TX_PIN,LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void initTimeTable(void)
|
||||||
|
{
|
||||||
|
uint8_t idx = 0;
|
||||||
|
|
||||||
|
for (uint8_t base = 0; base < 60; base += MINUTES)
|
||||||
|
{
|
||||||
|
// 2 WSPR
|
||||||
|
timt[idx].mode = WSPR;
|
||||||
|
timt[idx].minute = base + 0;
|
||||||
|
timt[idx].seconde = 0;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
timt[idx].mode = WSPR;
|
||||||
|
timt[idx].minute = base + 2;
|
||||||
|
timt[idx].seconde = 0;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
// 2 FT8
|
||||||
|
timt[idx].mode = FT8;
|
||||||
|
timt[idx].minute = base + 4;
|
||||||
|
timt[idx].seconde = 0;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
timt[idx].mode = FT8;
|
||||||
|
timt[idx].minute = base + 4;
|
||||||
|
timt[idx].seconde = 30;
|
||||||
|
idx++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
txModes recherche(int minutes, int seconde)
|
||||||
|
{
|
||||||
|
uint8_t size = (60 / MINUTES) * 4;
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
if (timt[i].minute == minutes && timt[i].seconde == seconde)
|
||||||
|
{
|
||||||
|
return timt[i].mode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NOTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup1(void){
|
||||||
|
while (!stateObjMod){}
|
||||||
|
delay(1); //nécessaire pour que le dds démarre
|
||||||
|
mod->coreUnSetup();
|
||||||
|
}
|
||||||
|
|
||||||
11
src/wsprPico_GPS_RP2350/test/README
Normal file
11
src/wsprPico_GPS_RP2350/test/README
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
This directory is intended for PlatformIO Test Runner and project tests.
|
||||||
|
|
||||||
|
Unit Testing is a software testing method by which individual units of
|
||||||
|
source code, sets of one or more MCU program modules together with associated
|
||||||
|
control data, usage procedures, and operating procedures, are tested to
|
||||||
|
determine whether they are fit for use. Unit testing finds problems early
|
||||||
|
in the development cycle.
|
||||||
|
|
||||||
|
More information about PlatformIO Unit Testing:
|
||||||
|
- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html
|
||||||
Loading…
Reference in New Issue
Block a user