Request for Comments - RadioReference Web Service

Status
Not open for further replies.

DonS

Member
Joined
Jun 17, 2003
Messages
4,099
Reaction score
-2
Location
Franktown, CO
blantonl said:
Spec was updated, attached for version 0.94.
Don, did you want me to only return the parent <talkgroups> element if there are actually talkgroups? In the mean time I said in the spec that <tg> can appear zero or more times. I don't want to change that just yet and break your app.
Doesn't matter. Either way will work. I was throwing an exception if <talkgroups> existed but had no child <tg> elements, but now I don't. I just:
1. Look for <talkgroups>
2. If <talkgroups> exists, look for child <tg> elements
The non-existence of either doesn't break anything.

-Don
 

DonS

Member
Joined
Jun 17, 2003
Messages
4,099
Reaction score
-2
Location
Franktown, CO
blantonl said:
Developers, I would prefer that you not hard code the URL into your apps
...
You could prefill it if you want to, but I'd like the user to have the ability to change it, or add other services if someone else wants to adopt the spec for their data.

done.
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
blantonl said:
Spec was updated, attached for version 0.94.

Grumbles, Suggestions, and a little Wishful Thinking

Grumble # 1 ...

XML tags that do nothing should be exterminated. The <talkgroups> and <sites> elements do nothing. Delete them!

Grumble # 2 ...

Elements like country, state (or province), county, and city are really attributes. They don't need to exist as full-blown elements/objects. Having ctid's, stid's, coid's (are there city ids too?) adds an unnecessary extra level of indirection. This reveals schema structure in the underlying database that might best be kept hidden from external applications. Ditto for tgids. I don't need to know the database's internal unique ID for something. If you do a backup/restore of the RR DB (BCP anyone ?), these values are likely to change.

This would also reduce the number of HTTP transactions between client and server. If I understand this right, to pull down a list of TRSs for a region I have to get a list of ctids, stids, and coids - which I then use to issue the real query to the server.

I have a similar gripe over System Types, System Flavors, and Voice Types. Instead of returning type id and flavor id and voice id, just go ahead and tell me what the darn thing is in plain text!

Suggestion # 1 ...

For the site ct attribute: this is Motorola specific. APCO P25 has something simular called a NAC. I suggest renaming this attribute to some thing like "connect" or "access" ie. something generic so it can be used for both Motorola and P25.

Suggestion # 2 ...

Here are the kinds of queries I'd like to support with minimal fuss:

1. retrieve a specific TRS by system type (ie. Motorola or P25) and system id.

2. retrieve a list of candidate TRS's that match a system type, system ID and have a control channel with LCN "X" whose frequency is "Y" Mhz.

If you take the existing Motorola SYSID query and add an extra type parameter, then you've got #1 above.

This second query is needed to pull down LTR and EDACS systems where the system id isn't unique enough. A variation on #2 might include state and city or county parameters to further limit the results.

These are two very useful "real world" queries that I'd like to support in some of my programs.

Suggestion #3 ...

Make sure that the sysid includes the WACN prefix when locating P25 systems. Example: Austin / Travis county is BEE09-13E. An RR DB search for sysid 13E might (eventually) return some other system.

Suggestion # 4 ...

Also, I know Lindsay does not track radio IDs in the RR DB, but for completeness, it would be nice to include an equivalent element for radio IDs - something like <rid> or whatever - with basically the same attributes as the <tg> element like desc, disc and group.

Suggestion # 5 ...

EDACS - as everyone knows - comes in two flavors - 4800 and 9600. When searching for a specific system, it is not unusual for two systems to exist in the same area with the same EDACS system id. They may be distinguishable by being on different bands or operating at different control channel data rates.

Splitting EDACS into two types - EDACS48 and EDACS96 - would help when trying to find data for one by filtering out the other.

Wishful thinking ...

Now ... Lindsay ... when are you going to support HTTP POSTs for submitting new findings to the moderators for review? I bet they'd love to be able to look at a submission and click "accept" or "decline" without having to do all that typing!

-rick
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
More Grumbles and Suggestions

Grumble #3

Please suppress empty attributes in the XML. I just pulled down Moto system 2318. Result was an 85 k text file. Using an editor, I removed all the empty attributes I could find. Resulting file was 69k - that's a 10% savings on bandwidth.

Grumble #4

Please make the <sysid> element an attribute of the <trs> element. Move the wacn attribute over there too or make the sysid a combined wacn-sysid value for P25. Either way works for me.

Grumble #5

XML attribute values should not contain line breaks. Many of the talkgroups pulled down had desc="xxx" where a linefeed appeared just before the closing quote mark.

Suggestion #6

Please make the Motorola LCN's actual Motorola channel #s. If I do a look-up based upon channel number (LCN), then it should match the channel number that appears on the control channel. Likewise for MPT1327 and (I think) Passport. The LCN values that are there now have no meaning and - IMHO - no purpose.

Suggestion #7

Again ... like the suggestion of having an element for representing a radio id - even though the RR DB will likely never use it, this next one is just for completeness. It would be nice to support patches. One way to do this is to add an optional attribute to each talkgroup. If a <tg> is patched to another <tg>, an attribute like patch="123" would appear.

Example: the dispatch on the graveyard shift ties three talkgroups together: north zone, south zone, and east zone. North zone is designated by the system as the "super" group. This means that radios in the field programmed for south or east zone will also break squelch for north zone for as long as the patch is in effect. The <tg> tags for the south and east zone would have this extra patch="xxx" attribute.

Suggestion #8

Please add "Conventional" to the list of system types. In other words, a system does not have to be trunked. This would allow the same XML format to represent conventional systems. In this case, there would be no talkgroups.

BTW, I just noticed that county is both a child element of the <trs> element and an attribute of the <site> element. This almost makes sense! Seeing each county name appear twice - once under the trs tag and again for each site seems redundant.

-rick
 

DonS

Member
Joined
Jun 17, 2003
Messages
4,099
Reaction score
-2
Location
Franktown, CO
rfmobile said:
BTW, I just noticed that county is both a child element of the <trs> element and an attribute of the <site> element. This almost makes sense! Seeing each county name appear twice - once under the trs tag and again for each site seems redundant.

Unless they're different. For example, statewide systems will have "Statewide" as the child <county> element of the <trs> element, but will have several (different) county attributes among the <site> elements.

System Types, System Flavors, and Voice Types. Instead of returning type id and flavor id and voice id, just go ahead and tell me what the darn thing is in plain text!

No, Lindsay, don't! If anything, add an enumeration that maps these values to "plain text" for the end user (replacing the mapping that already exists in the spec), but don't do that "instead of" returning the numeric IDs. It's much easier to switch() on a numeric value than parse text.

XML attribute values should not contain line breaks. Many of the talkgroups pulled down had desc="xxx" where a linefeed appeared just before the closing quote mark.

(While probably not desired in the desc attribute of the <tg> element, line breaks are perfectly acceptable in XML attributes. The XML processor is supposed to replace them with a single space character.)

That aside, can you give an example of a system where this occurs? While my parser strips newlines, I don't think I've seen any cases where a newline appeared within an attribute's value. So far, they've all been at the end of element tags.

If it is happening, it's likely because of "bad" data in the DB, where a newline was pasted into a field along with the rest of the text.

Please add "Conventional" to the list of system types. In other words, a system does not have to be trunked. This would allow the same XML format to represent conventional systems. In this case, there would be no talkgroups.

Not quite the same format. First, individual "channels" would need additional information: "receive mode" (AM,FM,etc.) and, if applicable, CTCSS/DCS attributes, at the least.

Also, according to a discussion yesterday with Lindsay about this very topic, the organization of non-trunked data is a bit different. There are "agencies", "categories", and "sub-categories", all of which can appear under both the "state" and "county" levels of the XML.
 

ericcarlson

Member
Database Admin
Joined
Dec 18, 2002
Messages
1,639
Reaction score
156
Location
Houston, Texas
DonS said:
rfmobile said:
BTW, I just noticed that county is both a child element of the <trs> element and an attribute of the <site> element. This almost makes sense! Seeing each county name appear twice - once under the trs tag and again for each site seems redundant.

Unless they're different. For example, statewide systems will have "Statewide" as the child <county> element of the <trs> element, but will have several (different) county attributes among the <site> elements.

The problem here is that a lot of the sites (possibly the majority) in the database do not currently have any county associated with them; the idea of sites having an assigned county is relatively new in the history of the database. Currently, only one county can be assigned to a site, which obviously is a problem for multi-county simulcasts. There is also the issue of systems that cover more than one county but might not have a site physically located in every county -- these systems will have multiple counties assigned at the TRS level but not at the site level.

-Eric
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
DonS said:
That aside, can you give an example of a system where this occurs? While my parser strips newlines, I don't think I've seen any cases where a newline appeared within an attribute's value. So far, they've all been at the end of element tags.

The STARNet system in the Houston metro area Sysid 2318 or sid 38. Me thinks Mr. Carlson knows this system well. Right, Eric?

Look for TGs in the 5700 range and the 6100 range and elsewhere.

<tg dec="6160" desc="Harris County Election Services
" group="Harris County Miscellaneous" tgid="1649" />
<tg dec="6192" desc="Harris County Flood Control - Administration
" group="Harris County Miscellaneous" tgid="1682" />
<tg dec="6224" desc="Harris County Flood Control
" group="Harris County Miscellaneous" tgid="1683" />

<tg dec="6288" desc="Harris County Medical Examiner - Dispatch B
" group="Harris County Miscellaneous" tgid="1653" />

<tg dec="8464" desc="Harris County District Attorney - Intake
" group="Harris County Miscellaneous" tgid="1659" />

<tg dec="8528" desc="Harris County Medical Examiner - Dispatch A
" group="Harris County Miscellaneous" tgid="1652" />

<tg dec="8720" desc="Harris County Commissioner Pct 1 - Dispatch
" group="Harris County Miscellaneous" tgid="1669" />

-rick
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
DonS said:
rfmobile said:
System Types, System Flavors, and Voice Types. Instead of returning type id and flavor id and voice id, just go ahead and tell me what the darn thing is in plain text!

No, Lindsay, don't! If anything, add an enumeration that maps these values to "plain text" for the end user (replacing the mapping that already exists in the spec), but don't do that "instead of" returning the numeric IDs. It's much easier to switch() on a numeric value than parse text.

I'll stand by my original "grumble" above. I don't know what Don does with the data once it's parsed. For me, I load the data and present it to the user on demand. Having a simple text field for the system type - for example - simplifies things. It also means I can add new system types later on without changing code to accomodate a new hard-coded enumeration (adding MPT1327 to UniTrunker, for example, did not break my user-interface). Now, having the ability to download a look-up table of what each enumeration means - that would work. Again, it's an extra level of indirection but I can live with that.

I would avoid storing the RR DB internal IDs in my own client-side data files so that - should things get renumbered - my data files are not affected. This would also allow me to deal with other hosting implementations of the web service spec that use different ID numbers.

-rick
 

ericcarlson

Member
Database Admin
Joined
Dec 18, 2002
Messages
1,639
Reaction score
156
Location
Houston, Texas
I know STARNET fairly well but most of the data in the RR Database existed before I was ever an admin here.

I think I just killed the trailing whitespace from the Harris County Miscellaneous group. If so, this is an issue with old talkgroups from early trunkedradio.net days. For some reason, extra whitespace was getting tacked onto the descriptions and saved in the database. The whitespace is stripped off whenever these older talkgroups are updated now and so shouldn't be an issue again after being fixed.

-Eric
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
DonS said:
rfmobile said:
Please add "Conventional" to the list of system types. In other words, a system does not have to be trunked. This would allow the same XML format to represent conventional systems. In this case, there would be no talkgroups.

Not quite the same format. First, individual "channels" would need additional information: "receive mode" (AM,FM,etc.) and, if applicable, CTCSS/DCS attributes, at the least.

I thought I saw a modulation type somewhere. More on the CTCSS/DCS in a moment.

DonS said:
Also, according to a discussion yesterday with Lindsay about this very topic, the organization of non-trunked data is a bit different. There are "agencies", "categories", and "sub-categories", all of which can appear under both the "state" and "county" levels of the XML.

Trunked systems have

a. sites,
b. channels, and
c. groups (talkgroups) of users.

Conventional systems have

a. sites,
b. channels and
c. groups (CTCSS, DCS, P25 NAC, or what have you) of users.

The implementation details for representing users is different but everything else is the same. I think "recycling" at least the <trs>, <site>, and <channel> tags would work. Having a conventional equivalent of the <tg> tag as a child element of the <channel> tag would allow conventional and trunked data to co-exist in the same XML exchange format. That means less code for you and I to re-write!

-rick
 

blantonl

Founder and CEO
Staff member
Super Moderator
Joined
Dec 9, 2000
Messages
11,916
Reaction score
7,618
Location
Dallas, TX
Rick is getting me back for all the suggestions and grumbles I provide him regarding T4Win and Unitrunker :lol:

XML tags that do nothing should be exterminated. The <talkgroups> and <sites> elements do nothing. Delete them!

I don't know Rick, I like them. They help bring a hierarchy to the data which makes it easier to process and read, IMHO of course.

Elements like country, state (or province), county, and city are really attributes. They don't need to exist as full-blown elements/objects. Having ctid's, stid's, coid's (are there city ids too?) adds an unnecessary extra level of indirection.

Actually, country, state, and county are really elements of a trunked system, since a system can reside in multiple, and we allow for that in the database. I can't represent that using attributes properly.

There are no city ID's, however stid's, ctid's, and aid's are important, since they are the primary keys to data in the database. So, if the software developers wanted to provide a link back up in the location hierarchy for a system, they'll need all of that information.

This reveals schema structure in the underlying database that might best be kept hidden from external applications. Ditto for tgids. I don't need to know the database's internal unique ID for something. If you do a backup/restore of the RR DB (BCP anyone ?), these values are likely to change.

That was exactly my intention (and the intention of a web service). Looking at tgids -- think about how we would match talkgroups in the database if we eventually implemented your suggestion to "Post" to the web service. Which is more efficient, match to a unique ID in the table, or cross reference to tg_dec, tg_group, and system? Hmmm.... I'll take the first one.

Also, the values WILL NOT change in the database, and a backup and restore would not impact this.... short of a complete loss of the database and we had to rebuild from scratch. Then we've got bigger problems.

So, in short, for some instances you will need to know the underlying schema, and that's the whole intention of the web service in the first place.

This would also reduce the number of HTTP transactions between client and server. If I understand this right, to pull down a list of TRSs for a region I have to get a list of ctids, stids, and coids - which I then use to issue the real query to the server.

Well, there is no other way to query the data. You can't just arbitrarily pick a point in the location hierarchy and fire away. you have to start from the top and work down - short of other query types which can be easily implemented (search by system name, sysid, etc as you have suggested below).

I have a similar gripe over System Types, System Flavors, and Voice Types. Instead of returning type id and flavor id and voice id, just go ahead and tell me what the darn thing is in plain text!

Well, as pointed out by some of the other developers, it's a lot easier to match and take action on enumerated values then it is strings. And what happens if MA/COM decides to sell EDACS to someone else, those hard coded values in your software are all the sudden invalid. Instead, enumerated values provide better flexibility, and my plan is to expose those enumerated values for you to query as well from the service.

For the site ct attribute: this is Motorola specific. APCO P25 has something similar called a NAC. I suggest renaming this attribute to some thing like "connect" or "access" ie. something generic so it can be used for both Motorola and P25.

I believe you are referring to the WACN, because for trunked systems the NAC is irrelevant, and I don't believe used. ct is fine, and we also have a field for wacn as well.

Here are the kinds of queries I'd like to support with minimal fuss:

1. retrieve a specific TRS by system type (ie. Motorola or P25) and system id.

Piece of cake, I'll get it done here soon. But you are still going to get ctid, stid, and coid, so if you want to back reference up the location hierarchy, you'll already have the data to do so.

2. retrieve a list of candidate TRS's that match a system type, system ID and have a control channel with LCN "X" whose frequency is "Y" Mhz.

If you take the existing Motorola SYSID query and add an extra type parameter, then you've got #1 above.

This second query is needed to pull down LTR and EDACS systems where the system id isn't unique enough. A variation on #2 might include state and city or county parameters to further limit the results.

These are two very useful "real world" queries that I'd like to support in some of my programs
I can do that to. No problem.

Suggestion #3 ...

Make sure that the sysid includes the WACN prefix when locating P25 systems. Example: Austin / Travis county is BEE09-13E. An RR DB search for sysid 13E might (eventually) return some other system.

I would prefer in this case that you provide some exception handling on your end versus exception handling on mine. BEE09 is a common WACN seen with just about all the P25 systems out there, so its a lot less unique then the system ID. If there are dup system ID's, we'll send both systems in the XML doc, and you can throw up a box asking the user "which one?"

Also, I know Lindsay does not track radio IDs in the RR DB, but for completeness, it would be nice to include an equivalent element for radio IDs - something like <rid> or whatever - with basically the same attributes as the <tg> element like desc, disc and group.
I concur...

EDACS - as everyone knows - comes in two flavors - 4800 and 9600. When searching for a specific system, it is not unusual for two systems to exist in the same area with the same EDACS system id. They may be distinguishable by being on different bands or operating at different control channel data rates.

Splitting EDACS into two types - EDACS48 and EDACS96 - would help when trying to find data for one by filtering out the other.
That is already enumerated in those types, flavors, and voice definitions you hate.. ;-)

Now ... Lindsay ... when are you going to support HTTP POSTs for submitting new findings to the moderators for review? I bet they'd love to be able to look at a submission and click "accept" or "decline" without having to do all that typing!

Well.... I'm looking at it, however we'll have to send down all those unique identifiers in the XML document so you can send'm back in that POST...
:lol:
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
blantonl said:
Rick is getting me back for all the suggestions and grumbles I provide him regarding T4Win and Unitrunker.

Right now I can't get enough Uni Trunker feedback so ... bring it on!

blantonl said:
That is already enumerated in those types, flavors, and voice definitions you hate.. ;-)

Yes, folks ... it's true. I'm a "flay-va hay-ta" ... ouch!

-rick
 

blantonl

Founder and CEO
Staff member
Super Moderator
Joined
Dec 9, 2000
Messages
11,916
Reaction score
7,618
Location
Dallas, TX
rfmobile said:
Right now I can't get enough Uni Trunker feedback so ... bring it on!

You poke the dog with a stick.... ok.. it's ON! 8)
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
blantonl said:
That was exactly my intention (and the intention of a web service).

The point behind the XML is data interchange. It should be rigid enough to enforce an object model without imposing assumptions about a particular implementation. (I can link my objects togther using memory pointers, unique IDs, kite string, or duct tape). There are dozens of ways to store this data. There's currently a dozen or so client implementations underway and potentially new server implementations yet to be announced. I should be able to code to the spec with being roped into someone else's table structure. As the spec stands now, I can almost see the tables and relations.

Grumble ... grumble ... grumble. (see "grumble" disclaimer below)

Looking at tgids -- think about how we would match talkgroups in the database if we eventually implemented your suggestion to "Post" to the web service. Which is more efficient, match to a unique ID in the table, or cross reference to tg_dec, tg_group, and system? Hmmm.... I'll take the first one.

You wouldn't want the posts to go directly into the DB. They'd go into a queue pending approval. Further, how can someone match to a tgid for a talkgroup that doesn't even exist in the database? If someone wants to update the description for an existing TG - sure, but for new, previously UNID groups (or whole systems), no.

This feature also brings up the issue of journaling. I know this is getting way ahead but at least we've got plenty of time to kick these kinds of ideas around.

Example: members A, B, and C all submit new TG info over a 24 hour period. The DB moderator (or are they called admins?) logs in and finds multiple submissions that overlap. In other words, there are three proposed interpretations of the same TG. The moderator ( let's call him "Lou" 8/ ) has to choose one. Lou chooses C's submission.

RR DB subscribers download and make use of the new information.

A week later - as it turns out - C's submission is incorrect. Folks using the new info report back. B's description was more accurate (or maybe the original description was dead-on). Lou would like to either recall B's submission or roll-back to the previous info.

How you choose to handle this is up to you. The software agent that drops the information at your door step should be able to do so with a minimum of fuss.

Also, the values WILL NOT change in the database, and a backup and restore would not impact this.... short of a complete loss of the database and we had to rebuild from scratch. Then we've got bigger problems.

Crossing my fingers.

blantonl said:
So, in short, for some instances you will need to know the underlying schema, and that's the whole intention of the web service in the first place.

Grumble ... grumble ... grumble.

(Grumble disclaimer: okay, don't worry ... I don't take myself *that* seriously).

blantonl said:
Well, there is no other way to query the data. You can't just arbitrarily pick a point in the location hierarchy and fire away.

We all have a finite amount of resources to throw at this project. I understand that. But ... if you're saying it can't be done on technical grounds ... I'll find a pointy-headed, pocket-protector-wearing alpha geek that can write the code to make it work! (Ewww, I know way too many folks that fit that description).

-rick
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
blantonl said:
me said:
1. retrieve a specific TRS by system type (ie. Motorola or P25) and system id.
Piece of cake, I'll get it done here soon.
me said:
2. retrieve a list of candidate TRS's that match a system type, system ID and have a control channel with LCN "X" whose frequency is "Y" Mhz.
I can do that to. No problem.

Awesome. Those are the two that count. Everything else in this thread is just stimulating geek talk.

And speaking of geek talk ...

-rick
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
Jusy so everyone understands, my perspective is on integrating RR DB access into programs like Uni-Trunker and T4Win. Here goes ...

blantonl said:
I would prefer in this case that you provide some exception handling on your end versus exception handling on mine. BEE09 is a common WACN seen with just about all the P25 systems out there, so its a lot less unique then the system ID. If there are dup system ID's, we'll send both systems in the XML doc, and you can throw up a box asking the user "which one?"

I've seen BEE00. I know others exist. As P25 systems become more common, you're going to see older equipment decomissioned and put up on eBay. Six months later a new P25 system goes live - assembled from used equipment. Did the new radio admin remember to change the WACN and / or sysid?

What? And pay for new RSS from Motorola? Nah ...

In 2004 I saw an Austin, Texas area Motorola Sysid changed from 800 to 900 mhz because the controller was canibalized for the new system. It's not an issue yet for P25, but it will be.

Here's my spin on this. The software (Uni-Trunker or what have you) will tell you the WACN. My PRO-96 displays the WACN right along with the 3 digit system id on the tiny LCD screen. It's known to the user. There's no reason they can't include that in their search. In fact, from an automation standpoint (inside a program like Uni-Trunker) - there's no need to prompt them because the WACN is already known.

Some folks are just getting used to P25. When you say "System ID", it sounds like a Motorola System ID - which very nearly perfectly identifies a Motorola system. So they think it serves the same purpose for P25. That isn't the case. The "identity" for a P25 system is actually 32 bits long. (Read the docs - it actually says this.) 12 bits are called the SysId. The remaining 20 bits are called the WACN.

In fact, to support roaming, a "foreign" P25 radio must include this 32 bit number (not just the 12 bit sysid) when announcing it's presence on another network.

In the case of Motorola (with the system id) and P25 (with the WACN and Sysid combined), the system is sufficiently identified. I'd like to save the hassle of prompting the user for systems like EDACS and LTR where the user will have to provide a clue (like a control channel frequency or a physical location) to narrow down the results. So far, that seems to work.

Bottom line is ... if you can support a WACN for this query, that would be great. Whenever the POST feature gets added, you can bet (from my software) the WACN will be included in the submission.

-rick
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
blantonl said:
I believe you are referring to the WACN, because for trunked systems the NAC is irrelevant, and I don't believe used. ct is fine, and we also have a field for wacn as well.

No, I mean the NAC. It's applicable to both trunked and conventional systems. From a hobbyist's perspective, there is no reason for anyone to know what the NAC is on a trunked system. But ... there's no reason for a hobbyist to know the connect tone on Motorola systems either.

Now ... on conventional P25 systems ... multiple NACs can be in effect on the same voice channel. Acts just like CTCSS or DCS on a conventional analog system. I'll save the whole P25 CAI layer of Link Control data for another day.

In either case, I suggest it for the purpose of completeness. From a decoding perspective, the info is there.

For EDACS, I suppose ESK serves the same purpose (and can be accomodated in the same manner as a Motorola connect tone).

-rick
 

DonS

Member
Joined
Jun 17, 2003
Messages
4,099
Reaction score
-2
Location
Franktown, CO
Invalid XML

Another instance where a script needs to either fix the DB, or adjust the data on-the-fly as XML is generated:

Some (all?) sites that contain location information have & deg ; in their attribute text. For example, here's the opening tag for a "site" element in sid=272:
Code:
<site num="001" desc="Sarasota" callsign="WPKY904" county=""
location="27° 34.98N 82° 32.18W" neigh="" ct="105.88"
modulation="">

XML parsers will barf on this.

-Don
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Reaction score
115
Location
Virginia
An XML <!ENTITY ... > declaration should take care of that.

Try this ...

<!ENTITY deg CDATA "°" -- degree sign, U+00B0 ISOnum -->

<!-- between the quotes, that should read ampersand-pound 176 semi-colon -->

From the server, you can ...

a. make this a part of the DTD and reference it at the start of the XML document.
b. include the DTD inline with the XML response (I forget how this is down).
c. just embed the single <!ENTITY ... > declaration above in the preamble portion of the XML response and skip the DTD.

Now, couldn't latitude and longitude be separate or is location just a free-form CDATA attribute?

-rick

PS. a list of other "funky" ISO characters can be found here.

http://www.w3.org/TR/REC-html40/sgml/entities.html
 

ericcarlson

Member
Database Admin
Joined
Dec 18, 2002
Messages
1,639
Reaction score
156
Location
Houston, Texas
rfmobile said:
Now, couldn't latitude and longitude be separate or is location just a free-form CDATA attribute?

The location field on a trunked site is free-form text and almost always not lat/lon (it's usually an address, intersection, mountain, building, etc.). If/when the FCC data is exposed via the RR XML, you should be able to get the lat/lon from the FCC license data.

-Eric
 
Status
Not open for further replies.
Top