90 lines
2.6 KiB
C
90 lines
2.6 KiB
C
#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);
|
|
}
|
|
}
|
|
}
|
|
|