diff options
| author | Matthew Poletiek <matthew.poletiek@gmail.com> | 2020-12-08 21:03:16 -0600 |
|---|---|---|
| committer | Matthew Poletiek <matthew.poletiek@gmail.com> | 2020-12-08 21:03:16 -0600 |
| commit | e99416456afd4aa8bde42016826f9a345291cbf3 (patch) | |
| tree | a7a95639cd1cb5dbe2d91a2ca8e8defafac4296d /share | |
| parent | 194cf4e5e0b6a2811103a9b739a72b9afe2b886c (diff) | |
| download | chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.gz chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.xz | |
Initial Commit
Diffstat (limited to 'share')
| -rw-r--r-- | share/chirp.desktop | 13 | ||||
| -rw-r--r-- | share/chirp.icns | bin | 0 -> 80528 bytes | |||
| -rwxr-xr-x | share/chirp.ico | bin | 0 -> 119911 bytes | |||
| -rw-r--r-- | share/chirp.png | bin | 0 -> 9687 bytes | |||
| -rw-r--r-- | share/chirp.svg | 224 | ||||
| -rw-r--r-- | share/chirpw.1 | 46 | ||||
| -rw-r--r-- | share/contrib/chirp.rnc | 28 | ||||
| -rw-r--r-- | share/contrib/chirp.rng | 58 | ||||
| -rw-r--r-- | share/contrib/chirp_banks.rnc | 3 | ||||
| -rw-r--r-- | share/contrib/chirp_banks.rng | 11 | ||||
| -rw-r--r-- | share/contrib/chirp_memory.rnc | 64 | ||||
| -rw-r--r-- | share/contrib/chirp_memory.rng | 193 | ||||
| -rwxr-xr-x | share/make_supported.py | 178 |
13 files changed, 818 insertions, 0 deletions
diff --git a/share/chirp.desktop b/share/chirp.desktop new file mode 100644 index 0000000..966e2a0 --- /dev/null +++ b/share/chirp.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=CHIRP +GenericName=Radio Programming Tool +Comment=Program amateur radios +Icon=chirp +Exec=chirpw %F +Terminal=false +MimeType=inode/directory +Categories=Utility;HamRadio +Keywords=Hamradio;Programming;Handheld;Radio;Amateur;Programmer +StartupNotify=true diff --git a/share/chirp.icns b/share/chirp.icns Binary files differnew file mode 100644 index 0000000..2ac96be --- /dev/null +++ b/share/chirp.icns diff --git a/share/chirp.ico b/share/chirp.ico Binary files differnew file mode 100755 index 0000000..4006ff9 --- /dev/null +++ b/share/chirp.ico diff --git a/share/chirp.png b/share/chirp.png Binary files differnew file mode 100644 index 0000000..fe57c1a --- /dev/null +++ b/share/chirp.png diff --git a/share/chirp.svg b/share/chirp.svg new file mode 100644 index 0000000..38d0d05 --- /dev/null +++ b/share/chirp.svg @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="256" + height="256" + id="svg3773" + version="1.1" + inkscape:version="0.48.0 r9654" + sodipodi:docname="icon.svg" + inkscape:export-filename="/home/dan/chirp/share/chirp_icon.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs3775"> + <linearGradient + inkscape:collect="always" + id="linearGradient4534"> + <stop + style="stop-color:#cccccc;stop-opacity:1;" + offset="0" + id="stop4536" /> + <stop + style="stop-color:#cccccc;stop-opacity:0;" + offset="1" + id="stop4538" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3781" /> + <inkscape:perspective + id="perspective3791" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3918" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4534" + id="linearGradient4540" + x1="53.92857" + y1="895.57648" + x2="258.29047" + y2="978.07648" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.1149719,0,0,1.1149719,-14.716407,-106.21001)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4534" + id="linearGradient4581" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.1149719,0,0,1.1149719,-14.716407,-106.21001)" + x1="53.92857" + y1="895.57648" + x2="258.29047" + y2="978.07648" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4534" + id="linearGradient3870" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.1149719,0,0,1.1149719,-14.716406,-105.63857)" + x1="53.92857" + y1="895.57648" + x2="258.29047" + y2="978.07648" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="111.6916" + inkscape:cy="154.81709" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1111" + inkscape:window-height="898" + inkscape:window-x="1" + inkscape:window-y="51" + inkscape:window-maximized="0" + borderlayer="true" /> + <metadata + id="metadata3778"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-796.36218)"> + <rect + ry="15.791736" + y="873.21082" + x="1.2642059" + height="102.30268" + width="253.47159" + id="rect3872" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.23044455000000008;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <rect + style="fill:url(#linearGradient3870);fill-opacity:1;stroke:#000000;stroke-width:1.23044455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2898" + width="253.47159" + height="102.30268" + x="1.2642059" + y="873.21082" + ry="15.791736" /> + <path + inkscape:connector-curvature="0" + style="fill:#999999;fill-opacity:1;stroke:#000000;stroke-width:1.23044455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 176.78712,885.35647 c -33.62642,0.1389 -67.25587,-0.18333 -100.880357,0.1862 -10.307609,1.15201 -19.345272,9.79377 -20.699091,20.10844 -0.734857,7.05609 0.897593,14.58458 1.473236,21.58057 0.575642,6.99598 2.096299,13.83094 4.182258,19.70411 3.479417,9.79656 6.451804,11.97487 16.555151,16.29131 7.142428,0.37214 13.943255,0.28453 21.089461,0.46476 27.657372,-0.0642 53.912612,-1.19078 81.567102,-1.59673 10.50595,-5.2167 13.89795,-6.89364 18.02695,-17.49826 1.87897,-7.32651 3.80822,-16.77839 4.02861,-24.11121 0.009,-5.82937 0.31554,-11.74161 -0.81517,-17.4877 -2.45934,-9.1155 -10.69152,-16.42239 -20.14851,-17.42617 -1.43779,-0.21495 -2.92033,-0.22722 -4.37962,-0.21532 z" + id="rect2830" + sodipodi:nodetypes="ccczscccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:#59aab2;fill-opacity:1;stroke:#000000;stroke-width:1.23044455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 177.85993,889.75915 c -34.19435,0.32943 -68.39927,-0.43608 -102.586798,0.42688 -6.581373,1.02477 -12.230044,5.96703 -14.624589,12.10443 -1.284683,3.33332 -1.417022,6.99701 -1.014183,10.53154 0.538398,7.49048 1.640967,14.91401 2.648463,22.35103 1.207501,6.2585 2.930373,12.62821 6.648149,17.88864 2.721379,2.88972 6.415636,4.83199 10.246351,5.75465 4.307496,0.36597 8.637278,0.11598 12.951316,0.33184 28.885631,0.36595 57.750051,-1.08191 86.627201,-1.48002 2.83271,-1.09459 5.46743,-2.62236 8.0348,-4.2381 3.3277,-2.36475 5.74082,-5.93039 6.84205,-9.85432 2.19763,-6.55876 3.08044,-13.48374 3.81607,-20.33915 0.52396,-6.74433 0.69701,-13.6319 -0.80149,-20.26168 -2.52836,-7.83335 -10.57852,-13.40621 -18.78734,-13.21574 z" + id="path3672" /> + <text + xml:space="preserve" + style="font-size:17.71840286px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:BankGothic Md BT;-inkscape-font-specification:BankGothic Md BT Bold" + x="77.551765" + y="917.85834" + id="text3710"><tspan + sodipodi:role="line" + id="tspan3712" + x="77.551765" + y="917.85834" + dx="0 0 -0.70311111 0 4.2186675 0 4.9217787 0 1.0546669" + style="font-size:20.91755867px">c h i r p</tspan></text> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path3716" + sodipodi:cx="-634.28571" + sodipodi:cy="583.79077" + sodipodi:rx="74.285713" + sodipodi:ry="74.285713" + d="m -559.99999,583.79077 a 74.285713,74.285713 0 1 1 -148.57143,0 74.285713,74.285713 0 1 1 148.57143,0 z" + transform="matrix(0.12304446,0,0,0.12304446,104.62155,854.11197)" /> + <path + transform="matrix(0.12304446,0,0,0.12304446,309.93003,852.31903)" + d="m -559.99999,583.79077 a 74.285713,74.285713 0 1 1 -148.57143,0 74.285713,74.285713 0 1 1 148.57143,0 z" + sodipodi:ry="74.285713" + sodipodi:rx="74.285713" + sodipodi:cy="583.79077" + sodipodi:cx="-634.28571" + id="path3718" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path3741" + sodipodi:cx="-48.57143" + sodipodi:cy="689.50507" + sodipodi:rx="28.571428" + sodipodi:ry="28.571428" + d="m -20.000002,689.50507 a 28.571428,28.571428 0 1 1 -57.142857,0 28.571428,28.571428 0 1 1 57.142857,0 z" + transform="matrix(0.12304446,0,0,0.12304446,100.75445,851.65107)" /> + <path + transform="matrix(0.12304446,0,0,0.12304446,123.39463,851.65107)" + d="m -20.000002,689.50507 a 28.571428,28.571428 0 1 1 -57.142857,0 28.571428,28.571428 0 1 1 57.142857,0 z" + sodipodi:ry="28.571428" + sodipodi:rx="28.571428" + sodipodi:cy="689.50507" + sodipodi:cx="-48.57143" + id="path3743" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.12304446,0,0,0.12304446,168.92106,851.65107)" + d="m -20.000002,689.50507 a 28.571428,28.571428 0 1 1 -57.142857,0 28.571428,28.571428 0 1 1 57.142857,0 z" + sodipodi:ry="28.571428" + sodipodi:rx="28.571428" + sodipodi:cy="689.50507" + sodipodi:cx="-48.57143" + id="path3747" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path4566" + sodipodi:cx="-48.57143" + sodipodi:cy="689.50507" + sodipodi:rx="28.571428" + sodipodi:ry="28.571428" + d="m -20.000002,689.50507 a 28.571428,28.571428 0 1 1 -57.142857,0 28.571428,28.571428 0 1 1 57.142857,0 z" + transform="matrix(0.12304446,0,0,0.12304446,145.69407,851.65107)" /> + </g> +</svg> diff --git a/share/chirpw.1 b/share/chirpw.1 new file mode 100644 index 0000000..ba9b9e8 --- /dev/null +++ b/share/chirpw.1 @@ -0,0 +1,46 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH CHIRP 1 "February 12, 2011" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +chirpw \- A tool for programming two-way radio equipment +.SH SYNOPSIS +.B chirpw +.RI [ options ] +.br +.SH DESCRIPTION +This manual page documents briefly the +.B chirpw +command. +.PP +\fBchirpw\fP is a tool for programming two-way radio equipment +It provides a generic user interface to the programming data and +process that can drive many radio models under the hood. +.SH OPTIONS +This program follows the usual GNU command line syntax, with long +options starting with two dashes (`--'). +A summary of options is included below. +.TP +.B \-\-help +Show summary of options. +.TP +.B \-\-profile +Enable Profiling. +.SH AUTHOR +chirpw was written by Dan Smith. +.PP +This manual page was written by Dan Smith (with help from Steve Conklin), +for the Debian project (and may be used by others). diff --git a/share/contrib/chirp.rnc b/share/contrib/chirp.rnc new file mode 100644 index 0000000..6ea2715 --- /dev/null +++ b/share/contrib/chirp.rnc @@ -0,0 +1,28 @@ +# +# CHIRP XML Schema +# Copyright 2008 Dan Smith <dsmith@danplanet.com> +# + +include "chirp_memory.rnc" +include "chirp_banks.rnc" + +start = radio + +radio = element radio { + attribute version { chirpSchemaVersionType }?, + comment?, + memories, + banks +} + +comment = element comment { xsd:string }? + +memories = element memories { + element memory { memoryType }* +} + +banks = element banks { + element bank { bankType }* +} + +chirpSchemaVersionType = xsd:string { pattern = "[0-9][0-9]*.[0-9][0-9]*.[0-9]{1,4}" } diff --git a/share/contrib/chirp.rng b/share/contrib/chirp.rng new file mode 100644 index 0000000..d6020e5 --- /dev/null +++ b/share/contrib/chirp.rng @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <!-- + + CHIRP XML Schema + Copyright 2008 Dan Smith <dsmith@danplanet.com> + + --> + <include href="chirp_memory.rng"/> + <include href="chirp_banks.rng"/> + <start> + <ref name="radio"/> + </start> + <define name="radio"> + <element name="radio"> + <optional> + <attribute name="version"> + <ref name="chirpSchemaVersionType"/> + </attribute> + </optional> + <optional> + <ref name="comment"/> + </optional> + <ref name="memories"/> + <ref name="banks"/> + </element> + </define> + <define name="comment"> + <optional> + <element name="comment"> + <data type="string"/> + </element> + </optional> + </define> + <define name="memories"> + <element name="memories"> + <zeroOrMore> + <element name="memory"> + <ref name="memoryType"/> + </element> + </zeroOrMore> + </element> + </define> + <define name="banks"> + <element name="banks"> + <zeroOrMore> + <element name="bank"> + <ref name="bankType"/> + </element> + </zeroOrMore> + </element> + </define> + <define name="chirpSchemaVersionType"> + <data type="string"> + <param name="pattern">[0-9][0-9]*.[0-9][0-9]*.[0-9]{1,4}</param> + </data> + </define> +</grammar> diff --git a/share/contrib/chirp_banks.rnc b/share/contrib/chirp_banks.rnc new file mode 100644 index 0000000..d832539 --- /dev/null +++ b/share/contrib/chirp_banks.rnc @@ -0,0 +1,3 @@ +bankType = + attribute id { xsd:nonNegativeInteger }, + attribute label { xsd:string } diff --git a/share/contrib/chirp_banks.rng b/share/contrib/chirp_banks.rng new file mode 100644 index 0000000..fa25081 --- /dev/null +++ b/share/contrib/chirp_banks.rng @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <define name="bankType"> + <attribute name="id"> + <data type="nonNegativeInteger"/> + </attribute> + <attribute name="label"> + <data type="string"/> + </attribute> + </define> +</grammar> diff --git a/share/contrib/chirp_memory.rnc b/share/contrib/chirp_memory.rnc new file mode 100644 index 0000000..ad7ee2e --- /dev/null +++ b/share/contrib/chirp_memory.rnc @@ -0,0 +1,64 @@ +memoryType = + attribute location { xsd:nonNegativeInteger }?, + shortName, + longName?, + frequency, + SquelchList, + squelchSetting?, + duplex, + offset, + mode, + tuningStep, + skip?, + bank?, + dv? + +shortName = element shortName { xsd:string { pattern = "[A-Z0-9/ >\-]{0,6}" } } + +frequencyType = + attribute units { "Hz" | "kHz" | "MHz" | "GHz" }, + xsd:decimal + +longName = element longName { xsd:string { pattern = "[.A-Za-z0-9/ >\-]{0,16}" } } + +frequency = element frequency { frequencyType } + +SquelchList = + element squelch { squelchType }?, + element squelch { squelchType }?, + element squelch { squelchType }? + +squelchType = + element tone { xsd:decimal { minInclusive = "67.0" maxInclusive = "254.1" } }?, # could also use enumeration + element code { xsd:positiveInteger }?, + element polarity { xsd:string { pattern = "[RN]{2}" } }?, + attribute id { text }?, + attribute type { text }? + +offset = element offset { frequencyType } + +tuningStep = element tuningStep { frequencyType } + +squelchSetting = element squelchSetting { xsd:string } + +duplex = element duplex { "positive" | "negative" | "none" } + +mode = element mode { "FM" | "NFM" | "WFM" | "AM" | "NAM" | "DV" } + +dv = element dv { + element urcall { callsignType }, + element rpt1call { callsignType }, + element rpt2call { callsignType }, + element digitalCode { digitalCodeType }? +} + +callsignType = xsd:string { pattern = "[A-Z0-9/ ]*" } + +digitalCodeType = xsd:integer { minInclusive = "0" } + +skip = element skip { "S" | "P" | "" } + +bank = element bank { + attribute bankId { xsd:nonNegativeInteger }, + attribute bankIndex { xsd:nonNegativeInteger }? +} diff --git a/share/contrib/chirp_memory.rng b/share/contrib/chirp_memory.rng new file mode 100644 index 0000000..0d88eac --- /dev/null +++ b/share/contrib/chirp_memory.rng @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <define name="memoryType"> + <optional> + <attribute name="location"> + <data type="nonNegativeInteger"/> + </attribute> + </optional> + <ref name="shortName"/> + <optional> + <ref name="longName"/> + </optional> + <ref name="frequency"/> + <ref name="SquelchList"/> + <optional> + <ref name="squelchSetting"/> + </optional> + <ref name="duplex"/> + <ref name="offset"/> + <ref name="mode"/> + <ref name="tuningStep"/> + <optional> + <ref name="skip"/> + </optional> + <optional> + <ref name="bank"/> + </optional> + <optional> + <ref name="dv"/> + </optional> + </define> + <define name="shortName"> + <element name="shortName"> + <data type="string"> + <param name="pattern">[A-Z0-9/ >\-]{0,6}</param> + </data> + </element> + </define> + <define name="frequencyType"> + <attribute name="units"> + <choice> + <value>Hz</value> + <value>kHz</value> + <value>MHz</value> + <value>GHz</value> + </choice> + </attribute> + <data type="decimal"/> + </define> + <define name="longName"> + <element name="longName"> + <data type="string"> + <param name="pattern">[.A-Za-z0-9/ >\-]{0,16}</param> + </data> + </element> + </define> + <define name="frequency"> + <element name="frequency"> + <ref name="frequencyType"/> + </element> + </define> + <define name="SquelchList"> + <optional> + <element name="squelch"> + <ref name="squelchType"/> + </element> + </optional> + <optional> + <element name="squelch"> + <ref name="squelchType"/> + </element> + </optional> + <optional> + <element name="squelch"> + <ref name="squelchType"/> + </element> + </optional> + </define> + <define name="squelchType"> + <optional> + <element name="tone"> + <data type="decimal"> + <param name="minInclusive">67.0</param> + <param name="maxInclusive">254.1</param> + </data> + </element> + </optional> + <optional> + <!-- could also use enumeration --> + <element name="code"> + <data type="positiveInteger"/> + </element> + </optional> + <optional> + <element name="polarity"> + <data type="string"> + <param name="pattern">[RN]{2}</param> + </data> + </element> + </optional> + <optional> + <attribute name="id"/> + </optional> + <optional> + <attribute name="type"/> + </optional> + </define> + <define name="offset"> + <element name="offset"> + <ref name="frequencyType"/> + </element> + </define> + <define name="tuningStep"> + <element name="tuningStep"> + <ref name="frequencyType"/> + </element> + </define> + <define name="squelchSetting"> + <element name="squelchSetting"> + <data type="string"/> + </element> + </define> + <define name="duplex"> + <element name="duplex"> + <choice> + <value>positive</value> + <value>negative</value> + <value>none</value> + </choice> + </element> + </define> + <define name="mode"> + <element name="mode"> + <choice> + <value>FM</value> + <value>NFM</value> + <value>WFM</value> + <value>AM</value> + <value>NAM</value> + <value>DV</value> + </choice> + </element> + </define> + <define name="dv"> + <element name="dv"> + <element name="urcall"> + <ref name="callsignType"/> + </element> + <element name="rpt1call"> + <ref name="callsignType"/> + </element> + <element name="rpt2call"> + <ref name="callsignType"/> + </element> + <optional> + <element name="digitalCode"> + <ref name="digitalCodeType"/> + </element> + </optional> + </element> + </define> + <define name="callsignType"> + <data type="string"> + <param name="pattern">[A-Z0-9/ ]*</param> + </data> + </define> + <define name="digitalCodeType"> + <data type="integer"> + <param name="minInclusive">0</param> + </data> + </define> + <define name="skip"> + <element name="skip"> + <choice> + <value>S</value> + <value>P</value> + <value/> + </choice> + </element> + </define> + <define name="bank"> + <element name="bank"> + <attribute name="bankId"> + <data type="nonNegativeInteger"/> + </attribute> + <optional> + <attribute name="bankIndex"> + <data type="nonNegativeInteger"/> + </attribute> + </optional> + </element> + </define> +</grammar> diff --git a/share/make_supported.py b/share/make_supported.py new file mode 100755 index 0000000..67ecebd --- /dev/null +++ b/share/make_supported.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python + +import sys +import serial + +sys.path.insert(0, ".") +sys.path.insert(0, "..") + +tmp = sys.stdout +sys.stdout = sys.stderr +from chirp import * +from chirp.drivers import * +sys.stdout = tmp + +RF = chirp_common.RadioFeatures() +KEYS = [x for x in sorted(RF.__dict__.keys()) + if "_" in x and not x.startswith("_")] + +RADIO_TYPES = { + 'Clone': chirp_common.CloneModeRadio, + 'File': chirp_common.FileBackedRadio, + 'Live': chirp_common.LiveRadio, +} + + +counter = 0 + +def radio_type(radio): + for k, v in RADIO_TYPES.items(): + if isinstance(radio, v): + return k + return "" + + +def supported_row(radio): + global counter + counter += 1 + odd = counter % 2 + + row = '<tr class="%s" title="%s %s %s">' % (odd and "odd" or "even", + radio.VENDOR, + radio.MODEL, + radio.VARIANT) + row += "<td><a href=\"#%s\" name=\"%s\">%s %s %s</a></td>\n" % ( + 'row%04i' % counter, + 'row%04i' % counter, + radio.VENDOR, radio.MODEL, radio.VARIANT) + rf = radio.get_features() + for key in KEYS: + value = rf.__dict__[key] + if key == "valid_bands": + value = ["%s-%s MHz" % (chirp_common.format_freq(x), + chirp_common.format_freq(y)) + for x, y in value] + + if key in ["valid_bands", "valid_modes", "valid_power_levels", + "valid_tuning_steps"]: + try: + value = ", ".join([str(x) for x in value + if not str(x).startswith("?")]) + except Exception, e: + raise + + if key == "memory_bounds": + value = "%i-%i" % value + + if key == "requires_call_lists": + if "DV" not in rf.valid_modes: + value = None + elif value: + value = "Required" + else: + value = "Optional" + + if value is None: + row += '<td class="%s"><span class="False">N/A</span></td>' % key + elif isinstance(value, bool): + row += '<td class="%s"><span class="%s">%s</span></td>' % \ + (key, + value, + value and "Yes" or "No") + else: + row += '<td class="%s">%s</td>' % (key, value) + row += '<td class="radio_type">%s</td>' % radio_type(radio) + row += "</tr>\n" + return row + + +def header_row(): + row = "<thead><tr>" + row += "<th>Radio</th>\n" + for key in KEYS: + Key = key.split("_", 1)[1].title().replace("_", " ") + row += '<th title="%s">%s</th>' % (RF.get_doc(key), Key) + row += '<th title="Radio programming type">Type</th>\n' + row += "</tr></thead>\n" + return row + + +dest = sys.stdout +if len(sys.argv) > 1: + dest = open(sys.argv[1], 'w') + + +def output(string): + dest.write(string + '\n') + + +output(""" +<style> +td { + white-space: nowrap; + border-right: thin solid black; + padding: 3px; +} +tr.odd { + background: #E8E8E8;' +} +tr.odd:hover, tr.even:hover { + background-color: #FFCCFF; +} +th { + border-right: thin solid black; +} +table { + border-collapse: collapse; +} +th { + border-bottom: thick solid black; +} +span.false { + color: grey; +} +a { + text-decoration: none; + color: inherit; +} +</style> +<table> +""") + +models = {"Icom": [], + "Kenwood": [], + "Yaesu": [], + "Alinco": [], + "Baofeng": [], + "z_Other": [], + } + +models = [] + +exclude = [directory.DRV_TO_RADIO["Icom_7200"]] + +for radio in directory.DRV_TO_RADIO.values(): + if radio in exclude: + continue + + models.append(radio) + for alias in radio.ALIASES: + class DynamicRadioAlias(radio): + VENDOR = alias.VENDOR + MODEL = alias.MODEL + VARIANT = alias.VARIANT + models.append(DynamicRadioAlias) + + +def get_key(rc): + return '%s %s %s' % (rc.VENDOR, rc.MODEL, rc.VARIANT) + +for radio in sorted(models, cmp=lambda a, b: get_key(a) < get_key(b) and -1 or 1): + if counter % 10 == 0: + output(header_row()) + _radio = radio(None) + if _radio.get_features().has_sub_devices: + for __radio in _radio.get_sub_devices(): + output(supported_row(__radio)) + else: + output(supported_row(_radio)) |
