|
| 1 | +# `dzcb` History |
| 2 | + |
| 3 | +`dzcb` is written by Masen Furer KF7HVM <[email protected]>. |
| 4 | + |
| 5 | +## Motivation |
| 6 | + |
| 7 | +`dzcb` development began in late October 2020 in response to the lack of |
| 8 | +existing tools for creating a TYT MD-UV380 codeplug from a matrix of repeater |
| 9 | +frequencies and talkgroups. |
| 10 | + |
| 11 | +The [PNWDigital](http://pnwdigital.net) group publishes information on its |
| 12 | +repeater system in standard format CSV files (K7ABD format) which are generated |
| 13 | +directly from the network cBridges, and I wanted to use these files to directly |
| 14 | +generate a cross-platform compatible codeplug targeting the TYT MD-UV380, using |
| 15 | +[editcp](https://www.farnsworth.org/dale/codeplug/editcp/). |
| 16 | + |
| 17 | +And thus `dzcb` was born. |
| 18 | + |
| 19 | +## Criticism |
| 20 | + |
| 21 | +> Why did you need to write 3800 lines of code over 6 months to do what I could |
| 22 | +> do with an afternoon and a spreadsheet program? |
| 23 | +
|
| 24 | +Well, I _personally_ don't like editing codeplugs by hand, neither in a CPS or |
| 25 | +in a spreadsheet. |
| 26 | + |
| 27 | +The CPS experience is hit or miss depending on what radio you have and |
| 28 | +any work done in a CPS to edit a codeplug will generally not be applicable |
| 29 | +to other radio types. Vendor CPS packages are "different enough" from each |
| 30 | +other, often buggy, and only support Windows. |
| 31 | + |
| 32 | +The spreadsheet experience can be slightly better (at least you're using find/replace |
| 33 | +instead of clicking through lists and buggy forms). However, the problem |
| 34 | +with most CSV import formats is _they key on object name_, so renaming objects |
| 35 | +can be problematic, and needs to occur in multiple places (and possibly, |
| 36 | +multiple separate files). |
| 37 | + |
| 38 | +Finally, neither CPS nor CSV solve the problem of expanding a list of talkgroups |
| 39 | +across a single repeater, and the existing tools only support Anytone CPS format. |
| 40 | + |
| 41 | +_(Please email [email protected] with further criticism and I will respond publicly here) _ |
| 42 | + |
| 43 | + |
| 44 | +## Feature Development |
| 45 | + |
| 46 | +### Repeaterbook |
| 47 | + |
| 48 | +Since [repeaterbook](http://repeaterbook.com) is the primary source of analog |
| 49 | +repeater information in the region, I added support for automatically |
| 50 | +downloading up-to-date repeater records and formatting those in the same K7ABD |
| 51 | +analog format. |
| 52 | + |
| 53 | +Rather than download and assemble the zone/channel CSV by hand (copy/paste from |
| 54 | +RB), it made more sense to define a new CSV file with points of interest, |
| 55 | +distances, and desired bands to create the channels entries fresh whenever the |
| 56 | +codeplug is built. |
| 57 | + |
| 58 | +When repeater information is incorrect in the codeplug, it can be updated on |
| 59 | +Repeaterbook to benefit everyone. |
| 60 | + |
| 61 | +### More Output Formats |
| 62 | + |
| 63 | +Along the way, additional output formats were added based on recommendation |
| 64 | +or needs. |
| 65 | + |
| 66 | +#### GB3GF OpenGD77 |
| 67 | + |
| 68 | +This format is the only good way to represent an OpenGD77 codeplug in CSV format |
| 69 | +and is a defacto standard in the opengd77 world. |
| 70 | + |
| 71 | +Because the opengd77 firmware handles static talkgroups much differently than |
| 72 | +other common radios, it required a significant restructuring of the internal |
| 73 | +representation of the codeplug. Ultimately this architectural change made it |
| 74 | +easier to represent a single channel with multiple talkgroups which could later |
| 75 | +be expanded into multiple channels. |
| 76 | + |
| 77 | +#### Anytone CSV |
| 78 | + |
| 79 | +Anytone radios are popular and many people prefer to use the official CPS despite |
| 80 | +the fact that it only runs on windows. Support for Anytone CPS import format was |
| 81 | +added to achieve parity with existing codeplug generators. The implementation is |
| 82 | +flexible such that future CPS format changes can be easily accomodated. |
| 83 | + |
| 84 | +#### dmrconfig |
| 85 | + |
| 86 | +On the advice of Dave W7NCX, support for the cross platform cli tool |
| 87 | +[`dmrconfig`](https://github.com/OpenRTX/dmrconfig) textual codeplug |
| 88 | +format was added. |
| 89 | + |
| 90 | +### Advanced Filtering |
| 91 | + |
| 92 | +In response to user feedback, a new CSV format was created to allow an end user |
| 93 | +to customize names, include/exclude objects, and reorder zones, contacts, and |
| 94 | +channels within a codeplug. |
| 95 | + |
| 96 | +These modifications are performed against the original source files so there is |
| 97 | +no "manual" effort when the upstream data source updates the talkgroup deck, |
| 98 | +color code or frequency. The name and ordering will be applied to the updated |
| 99 | +channels as before. |
| 100 | + |
| 101 | +### `example-codeplug` |
| 102 | + |
| 103 | +An [example codeplug](https://github.com/mycodeplug/example-codeplug) and |
| 104 | +additional documentation was added to facilitate use by others in the |
| 105 | +community. |
0 commit comments