C-Netz: --ms-power defines power level (not P-bits)
Also the level 8 can be selected. Actually level 6 is selected, but reduced to 8 when making a call.
This commit is contained in:
@@ -181,6 +181,26 @@ double cnetz_kanal2freq(int kanal, int unterband)
|
||||
return freq * 1e6;
|
||||
}
|
||||
|
||||
/* convert power level to P-bits by selecting next higher level */
|
||||
static uint8_t cnetz_power2bits(int power)
|
||||
{
|
||||
switch (power) {
|
||||
case 1:
|
||||
return 3;
|
||||
case 2:
|
||||
case 3:
|
||||
return 2;
|
||||
case 4:
|
||||
case 5:
|
||||
return 1;
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
const char *cnetz_state_name(enum cnetz_state state)
|
||||
{
|
||||
static char invalid[16];
|
||||
@@ -941,7 +961,7 @@ const telegramm_t *cnetz_transmit_telegramm_rufblock(cnetz_t *cnetz)
|
||||
memset(&telegramm, 0, sizeof(telegramm));
|
||||
|
||||
telegramm.opcode = OPCODE_LR_R;
|
||||
telegramm.max_sendeleistung = cnetz->ms_power;
|
||||
telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
|
||||
telegramm.bedingte_genauigkeit_der_fufst = si.genauigkeit;
|
||||
telegramm.zeitschlitz_nr = cnetz->sched_ts;
|
||||
telegramm.grenzwert_fuer_einbuchen_und_umbuchen = si.grenz_einbuchen;
|
||||
@@ -1082,7 +1102,7 @@ const telegramm_t *cnetz_transmit_telegramm_meldeblock(cnetz_t *cnetz)
|
||||
|
||||
memset(&telegramm, 0, sizeof(telegramm));
|
||||
telegramm.opcode = OPCODE_MLR_M;
|
||||
telegramm.max_sendeleistung = cnetz->ms_power;
|
||||
telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
|
||||
telegramm.ogk_verkehrsanteil = 0; /* must be 0 or phone might not respond to messages in different slot */
|
||||
telegramm.teilnehmergruppensperre = si.teilnehmergruppensperre;
|
||||
telegramm.anzahl_gesperrter_teilnehmergruppen = si.anzahl_gesperrter_teilnehmergruppen;
|
||||
@@ -1270,8 +1290,8 @@ const telegramm_t *cnetz_transmit_telegramm_spk_k(cnetz_t *cnetz)
|
||||
if (!trans)
|
||||
return &telegramm;
|
||||
|
||||
telegramm.max_sendeleistung = cnetz->ms_power;
|
||||
telegramm.sendeleistungsanpassung = 1;
|
||||
telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
|
||||
telegramm.sendeleistungsanpassung = (cnetz->ms_power < 8) ? 1 : 0;
|
||||
telegramm.entfernung = si.entfernung;
|
||||
telegramm.fuz_nationalitaet = si.fuz_nat;
|
||||
telegramm.fuz_fuvst_nr = si.fuz_fuvst;
|
||||
@@ -1600,8 +1620,8 @@ const telegramm_t *cnetz_transmit_telegramm_spk_v(cnetz_t *cnetz)
|
||||
meter = (now - trans->call_start) / (double)cnetz->metering + 1;
|
||||
}
|
||||
|
||||
telegramm.max_sendeleistung = cnetz->ms_power;
|
||||
telegramm.sendeleistungsanpassung = 1;
|
||||
telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
|
||||
telegramm.sendeleistungsanpassung = (cnetz->ms_power < 8) ? 1 : 0;
|
||||
telegramm.ankuendigung_gespraechsende = 0;
|
||||
telegramm.gebuehren_stand = meter;
|
||||
telegramm.fuz_nationalitaet = si.fuz_nat;
|
||||
|
Reference in New Issue
Block a user