TACS support (variations added to AMPS code)
These are: - Bandwidth only 25 KHz, so lower deviations - Data rate only 8000 KHz - SID is called AID (Area ID) - MIN1 coding is different
This commit is contained in:
89
src/tacs/stations.c
Normal file
89
src/tacs/stations.c
Normal file
@@ -0,0 +1,89 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "../amps/stations.h"
|
||||
|
||||
/* area codes */
|
||||
static struct tacs_areas {
|
||||
const char *number; /* country code (first 3 digits of subscriber number) + area code */
|
||||
const char *carrier; /* name of carrier */
|
||||
const char *country; /* name of country */
|
||||
const char *national_prefix; /* digits to dial inside country */
|
||||
} tacs_areas[] = {
|
||||
{ "2220", "Telecom Italia Mobile", "Italy", "0336" },
|
||||
{ "2222", "Telecom Italia Mobile", "Italy", "0337" },
|
||||
{ "2224", "Telecom Italia Mobile", "Italy", "0330" },
|
||||
{ "2225", "Telecom Italia Mobile", "Italy", "0360" },
|
||||
{ "2226", "Telecom Italia Mobile", "Italy", "0368" },
|
||||
{ "2340", "Vodafone", "United Kingdom", "0836" },
|
||||
{ "2341", "Vodafone", "United Kingdom", "0421" },
|
||||
{ "2342", "CellNet", "United Kingdom", "0860" },
|
||||
{ "2343", "Vodafone", "United Kingdom", "0378" },
|
||||
{ "2344", "Vodafone", "United Kingdom", "0831" },
|
||||
{ "2345", "Vodafone", "United Kingdom", "0374" },
|
||||
{ "2346", "CellNet", "United Kingdom", "0850" },
|
||||
{ "2347", "CellNet", "United Kingdom", "0589" },
|
||||
{ "2348", "CellNet", "United Kingdom", "0402" },
|
||||
{ "2349", "CellNet", "United Kingdom", "0585" },
|
||||
{ NULL, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
void numbering(const char *number, const char **carrier, const char **country, const char **national_number)
|
||||
{
|
||||
int i;
|
||||
static char digits[64];
|
||||
|
||||
for (i = 0; tacs_areas[i].carrier; i++) {
|
||||
if (!strncmp(number, tacs_areas[i].number, 4)) {
|
||||
*carrier = tacs_areas[i].carrier;
|
||||
*country = tacs_areas[i].country;
|
||||
if (tacs_areas[i].national_prefix) {
|
||||
strcpy(digits, tacs_areas[i].national_prefix);
|
||||
strcat(digits, number + 4);
|
||||
*national_number = digits;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
1: the AID, system Identification number
|
||||
2: the telephone company name
|
||||
3: the country
|
||||
*/
|
||||
static struct tacs_stations {
|
||||
int aid;
|
||||
const char *carrier, *country;
|
||||
} tacs_stations[] = {
|
||||
{ -1, "Telecom Italia Mobile", "Italy" },
|
||||
{ 3600, "CellNet", "United Kingdom" },
|
||||
{ 2051, "VodaFone", "United Kingdom" },
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
|
||||
void list_stations(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; tacs_stations[i].carrier; i++) {
|
||||
if (tacs_stations[i].aid >= 0)
|
||||
printf("AID:%5d", tacs_stations[i].aid);
|
||||
else
|
||||
printf("AID: ???");
|
||||
printf(" Carrier: %s, %s\n", tacs_stations[i].carrier, tacs_stations[i].country);
|
||||
}
|
||||
}
|
||||
|
||||
void sid_stations(int aid)
|
||||
{
|
||||
int i, first = 1;
|
||||
|
||||
for (i = 0; tacs_stations[i].carrier; i++) {
|
||||
if (aid == tacs_stations[i].aid) {
|
||||
if (first)
|
||||
printf("Selected Area ID (AID) %d belongs to:\n", tacs_stations[i].aid);
|
||||
first = 0;
|
||||
printf("\t%s, %s\n", tacs_stations[i].carrier, tacs_stations[i].country);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user