[layer23] "show cell 1 <arfcn>" gives better overview of cell allocation

This commit is contained in:
Andreas.Eversberg 2010-08-29 21:08:08 +00:00
parent 0d9a3b91c1
commit b0efeb81eb
2 changed files with 76 additions and 9 deletions

View File

@ -16,7 +16,6 @@
#define FREQ_TYPE_REP_5 0x20 /* sub channel of SI 5 */
#define FREQ_TYPE_REP_5bis 0x40 /* sub channel of SI 5bis */
#define FREQ_TYPE_REP_5ter 0x80 /* sub channel of SI 5ter */
#define FREQ_TYPE_SI_2_5 0xfc /* both SI 2 and SI 5 */
/* structure of all received system informations */
struct gsm48_sysinfo {

View File

@ -29,8 +29,8 @@
int gsm48_sysinfo_dump(struct gsm48_sysinfo *s, uint16_t arfcn,
void (*print)(void *, const char *, ...), void *priv)
{
char buffer[80];
int i, j;
char buffer[81];
int i, j, k;
/* available sysinfos */
print(priv, "ARFCN = %d\n", arfcn);
@ -58,6 +58,75 @@ int gsm48_sysinfo_dump(struct gsm48_sysinfo *s, uint16_t arfcn,
print(priv, "\n");
print(priv, "\n");
/* frequency list */
j = 0; k = 0;
for (i = 0; i < 1024; i++) {
if ((s->freq[i].mask & FREQ_TYPE_SERV)) {
if (!k) {
sprintf(buffer, "serv. cell : ");
j = strlen(buffer);
}
if (j >= 75) {
buffer[j - 1] = '\0';
print(priv, "%s\n", buffer);
sprintf(buffer, " ");
j = strlen(buffer);
}
sprintf(buffer + j, "%d,", i);
j = strlen(buffer);
k++;
}
}
if (j) {
buffer[j - 1] = '\0';
print(priv, "%s\n", buffer);
}
j = 0; k = 0;
for (i = 0; i < 1024; i++) {
if ((s->freq[i].mask & FREQ_TYPE_NCELL)) {
if (!k) {
sprintf(buffer, "SI2 (neigh.): ");
j = strlen(buffer);
}
if (j >= 75) {
buffer[j - 1] = '\0';
print(priv, "%s\n", buffer);
sprintf(buffer, " ");
j = strlen(buffer);
}
sprintf(buffer + j, "%d,", i);
j = strlen(buffer);
k++;
}
}
if (j) {
buffer[j - 1] = '\0';
print(priv, "%s\n", buffer);
}
j = 0; k = 0;
for (i = 0; i < 1024; i++) {
if ((s->freq[i].mask & FREQ_TYPE_REP)) {
if (!k) {
sprintf(buffer, "SI5 (report): ");
j = strlen(buffer);
}
if (j >= 75) {
buffer[j - 1] = '\0';
print(priv, "%s\n", buffer);
sprintf(buffer, " ");
j = strlen(buffer);
}
sprintf(buffer + j, "%d,", i);
j = strlen(buffer);
k++;
}
}
if (j) {
buffer[j - 1] = '\0';
print(priv, "%s\n", buffer);
}
print(priv, "\n");
/* frequency map */
for (i = 0; i < 1024; i += 64) {
if (i < 10)
@ -69,22 +138,21 @@ int gsm48_sysinfo_dump(struct gsm48_sysinfo *s, uint16_t arfcn,
for (j = 0; j < 64; j++) {
if ((s->freq[i+j].mask & FREQ_TYPE_SERV))
buffer[j + 5] = 'S';
else if ((s->freq[i+j].mask & FREQ_TYPE_HOPP))
buffer[j + 5] = 'H';
else if ((s->freq[i+j].mask & (FREQ_TYPE_NCELL
& FREQ_TYPE_REP)))
buffer[j + 5] = 'b';
else if ((s->freq[i+j].mask & FREQ_TYPE_NCELL))
buffer[j + 5] = 'n';
else if ((s->freq[i+j].mask & FREQ_TYPE_REP))
buffer[j + 5] = 'r';
else if ((s->freq[i+j].mask & FREQ_TYPE_SI_2_5))
buffer[j + 5] = '*';
else
buffer[j + 5] = '.';
}
sprintf(buffer + 69, " %d", i + 63);
print(priv, "%s\n", buffer);
}
print(priv, " S = serv. cell H = hopping seq. n = SI2 (neigh.) "
"r = SI5 (rep.) * = SI2+SI5\n\n");
print(priv, " 'S' = serv. cell 'n' = SI2 (neigh.) 'r' = SI5 (rep.) "
"'b' = SI2+SI5\n\n");
/* serving cell */
print(priv, "Serving Cell:\n");