Group / Table
One suggestion...
You might want to change the references to "Group" and/or "Table", where those refer to the upper 4 bits of the 16-bit Channel, so that they instead use the term "Channel Identifier".
The 16-bit Channel field (in messages like GRP_V_CH_GRANT) has two parts: the 4-bit Channel Identifier and the 12-bit Channel Number. (TIA/EIA-102.AABC 2.3.8, 6.2.9, and Annex F)
This is suggested in order to avoid confusion with other "Group" terminology in P25, and "Table" terminology in the PRO-96.
A note about how these values relate to the PRO-96's "Extended Tables"...
There can be up to 16 sets of unique channel parameters (base, channel spacing,bandwidth,tx offset) in a P25 system (well, per control channel). Each such set is associated with a Channel Identifier. There are up to 4096 individual Channel Numbers associated with each Channel Identifier. When a Channel Grant message is received, a radio looks at the Channel Identifier, then uses the Channel Number to calculate the correct frequencies from the base/spacing/offset info for that Channel Identifier.
The PRO-96 doesn't break the 16-bit Channel field into these two parts. Instead, it uses the entire 16-bit field as a single number to look up the correct "range" (i.e. Win96's 'ChLO' and 'ChHI' fields in Extended Tables), then calculates the voice frequency based on base/offset/step for the found range.
The PRO-96 "works" as long as there are not more than 6 discontinuous (or overlapping) frequency ranges in use by the system.
There appears to be at least one system that uses up to 8 overlapping sets of Channel Identifier data. Since you can only enter 6 "ranges" on the PRO-96, it will have a problem tuning to voice frequencies if the high 4 bits of the Channel field (the Channel Identifier) specify a range that has not been explicitly (and correctly) programmed.
-Don