Fixed typos in cli output and source code comments
This commit is contained in:
parent
97636aac1e
commit
a07764f0d9
6
README
6
README
|
@ -37,10 +37,10 @@ a BSA44 (magnetic card C-Netz hackable phone) back in the 90's.
|
|||
|
||||
Andy Zauner for providing signaling specification of C-Netz back in the 90's.
|
||||
|
||||
Hans Wigger for providing valuable informations about A-Netz and B-Netz and
|
||||
Hans Wigger for providing valuable information about A-Netz and B-Netz and
|
||||
helping me to get an A-Netz phone.
|
||||
|
||||
Stephan Hessberger for his work on oebl.de, that provides valuable informations
|
||||
Stephan Hessberger for his work on oebl.de, that provides valuable information
|
||||
about A-Netz, B-Netz, C-Netz, Eurosignal and much more.
|
||||
|
||||
Friedhelm Hillebrand for providing complete specification of the mobile phone
|
||||
|
@ -48,7 +48,7 @@ of C-Netz.
|
|||
|
||||
Mikko Ristila for providing newer NMT specs (with DMS/SMS specifications).
|
||||
|
||||
Dieter Spaar and Mark Atherton for prividing AMPS informations and recordings
|
||||
Dieter Spaar and Mark Atherton for providing AMPS information and recordings
|
||||
to verify and debug AMPS support.
|
||||
See http://www.idesignz.org/AMPS/AMPS_BS.html for first base station
|
||||
implementation of AMPS.
|
||||
|
|
|
@ -417,7 +417,7 @@ The transceiver of the base station switches to channel 19 and sends a paging se
|
|||
Then the base station returns to the ordered channel and waits 700 ms to 2.1 seconds for the mobile station to send the call acknowledge signal ("Rufbestätigung").
|
||||
If it is not received, the base station repeats the paging sequence again.
|
||||
If there is still no call acknowledge signal, it sends a clear signal ("Trennsignal") for at lease 350 ms and returns to idle state and indicates announcement to the calling party that the mobile station is (currently) not available.
|
||||
(German announcement sais: "Dieser Anschluß ist vorrübergehend nicht erreichbar!")
|
||||
(German announcement says: "Dieser Anschluß ist vorrübergehend nicht erreichbar!")
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@ -710,7 +710,7 @@ Detecting loss of carrier signal:
|
|||
|
||||
<p>
|
||||
This works with SDR only, because we do not have any RSSI (Received Signal Strength Indicator) signal from a radio connected to the sound card.
|
||||
With SDR we know the RX level, so we can define a threashold value for a lost signal.
|
||||
With SDR we know the RX level, so we can define a threshold value for a lost signal.
|
||||
Use '-S <db>' or '--squelch <db>' to define the squelch threshold level.
|
||||
To measure the noise floor, use the 'm' key to get a bar graph of the current RSSI. (RF level)
|
||||
Add some dB to the noise floor for the squelch threshold value.
|
||||
|
|
|
@ -576,7 +576,7 @@ imts.c:861 info : Received paging test digit '3' (level 103% delay 67 ms).
|
|||
|
||||
<p>
|
||||
In this case the soundcard's round trip delay is 67 ms.
|
||||
Substract 67 from 349 and you get 282.
|
||||
Subtract 67 from 349 and you get 282.
|
||||
Add '-F 282' to command line option, instead of '-b 5'.
|
||||
Now we react about 282 ms after we detected the start of the Guard tone.
|
||||
The reaction now matches the time when the phone transmits the Connect tone.
|
||||
|
@ -677,7 +677,7 @@ squelch.c:99 info : RF signal measurement: -69.9 dB noise floor, using squelch
|
|||
squelch.c:99 info : RF signal measurement: -70.2 dB noise floor, using squelch threshold of -60.2 dB
|
||||
squelch.c:112 info : RF signal strong: Unmuting audio (RF -54.2 >= -60.2 dB)
|
||||
dsp.c:476 info : High RF level, unmuting; turning transmitter on.
|
||||
imts.c:506 info : Detectes RF signal in IDLE mode, calling the opterator at '010'.
|
||||
imts.c:506 info : Detects RF signal in IDLE mode, calling the opterator at '010'.
|
||||
call.c:405 info : Incoming call from 'unknown' to '010'
|
||||
call.c:407 info : -> Call to Operator '010'
|
||||
call.c:385 info : Indicate MNCC setup towards fixed network
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<p>
|
||||
To run this software, you need a Linux PC with development environment (gcc compiler).
|
||||
At least one Alsa sound interfaces is required.
|
||||
Two sound interfaces are required to talk and listen trough the base station using a headset with microphone.
|
||||
Two sound interfaces are required to talk and listen through the base station using a headset with microphone.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
|
|
@ -43,7 +43,7 @@ The network was closed for the exclusive benefit of the standard GSM in July 28t
|
|||
<li>Frequency range UHF (Band 1): 424.800 - 427.9875 MHz (down-link); 414.800 - 417.9875 MHz (up-link)
|
||||
<li>Frequency range VHF (Band 3): 169.800 - 172.9875 MHz (down-link); 165.200 - 168.3875 MHz (up-link)
|
||||
<li>See software option "-B list" for other bands
|
||||
<li>256 voice or contol channels
|
||||
<li>256 voice or control channels
|
||||
<li>Duplex distance: 10 MHz
|
||||
<li>Channel spacing: 12.5 KHz
|
||||
<li>Voice modulation: FM
|
||||
|
|
|
@ -223,7 +223,7 @@ I suggest to stay below 60% for each threads.
|
|||
|
||||
<p>
|
||||
<b>Example: C-Netz</b><br>
|
||||
Two channes are created, one the OgK (control channel) and one SpK (speech channel).
|
||||
Two channels are created, one the OgK (control channel) and one SpK (speech channel).
|
||||
The distance between channels is 20 KHz (two channels).
|
||||
Because C-Netz uses only odd channel numbers for 10 KHz spacing, we use channel 131 (OgK) and 135 (SpK).
|
||||
</p>
|
||||
|
|
|
@ -63,7 +63,7 @@ Use a diode with a low forward voltage drop, like a Schottky diode. I use a simp
|
|||
|
||||
<p>
|
||||
<font color="red">Important: Some serial interfaces have wrong signal labels.
|
||||
TX and RX might be reversed, so that TX is actually an input and RX an ouput.
|
||||
TX and RX might be reversed, so that TX is actually an input and RX an output.
|
||||
You will find out when you connect an Milliamp meter between signal and ground.
|
||||
The output will have several Milliamps, but the input doesn't.
|
||||
</font>
|
||||
|
@ -111,42 +111,42 @@ Use the '-s' option to give the correct serial interface:
|
|||
FUTLN=23100001, Sicherungscode=3103, Kartekennung=3, Sonderheitenschluessel=0, Wartungsschluessel=65535
|
||||
Telephone directory has 80 entries.
|
||||
SIM emulator ready, please start the phone!
|
||||
sim.c:1352 info : Reset singnal on (low)
|
||||
sim.c:1352 info : Reset singnal off (high)
|
||||
sim.c:1352 info : Reset signal on (low)
|
||||
sim.c:1352 info : Reset signal off (high)
|
||||
sim.c:1371 info : Card has disabled PIN (system PIN '0000') Selecting card #1.
|
||||
sim.c:1374 info : Sending ATR
|
||||
sim.c:1125 info : RX message
|
||||
sim.c:1135 info : control I: N(S)=0 N(R)=0
|
||||
sim.c: 473 info : SL-APPL app 3
|
||||
sim.c:1222 info : TX resonse
|
||||
sim.c:1222 info : TX response
|
||||
sim.c:1228 info : control I: N(S)=0 N(R)=1
|
||||
sim.c:1125 info : RX message
|
||||
sim.c:1135 info : control I: N(S)=1 N(R)=1
|
||||
sim.c: 558 info : RD-EBDT
|
||||
sim.c:1222 info : TX resonse
|
||||
sim.c:1222 info : TX response
|
||||
sim.c:1228 info : control I: N(S)=1 N(R)=2
|
||||
sim.c:1125 info : RX message
|
||||
sim.c:1135 info : control I: N(S)=2 N(R)=2
|
||||
sim.c: 473 info : SL-APPL app 4
|
||||
sim.c:1222 info : TX resonse
|
||||
sim.c:1222 info : TX response
|
||||
sim.c:1228 info : control I: N(S)=2 N(R)=3
|
||||
sim.c:1125 info : RX message
|
||||
sim.c:1135 info : control I: N(S)=3 N(R)=3
|
||||
sim.c: 473 info : SL-APPL app 3
|
||||
sim.c:1222 info : TX resonse
|
||||
sim.c:1222 info : TX response
|
||||
sim.c:1228 info : control I: N(S)=3 N(R)=4
|
||||
sim.c:1125 info : RX message
|
||||
sim.c:1135 info : control I: N(S)=4 N(R)=4
|
||||
sim.c: 558 info : RD-EBDT
|
||||
sim.c:1222 info : TX resonse
|
||||
sim.c:1222 info : TX response
|
||||
sim.c:1228 info : control I: N(S)=4 N(R)=5
|
||||
sim.c:1125 info : RX message
|
||||
sim.c:1135 info : control I: N(S)=5 N(R)=5
|
||||
sim.c: 599 info : RD-RUFN (loc=0)
|
||||
sim.c: 655 info : 80 numbers can be stored in EEPROM
|
||||
sim.c:1222 info : TX resonse
|
||||
sim.c:1222 info : TX response
|
||||
sim.c:1228 info : control I: N(S)=5 N(R)=6
|
||||
sim.c:1352 info : Reset singnal on (low)
|
||||
sim.c:1352 info : Reset signal on (low)
|
||||
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -270,7 +270,7 @@ Press 'w' again to turn off this view.
|
|||
|
||||
<p>
|
||||
To check measurements like input level and quality, press the 'm' key.
|
||||
You will get an ASCII art plot of differen bar graphs.
|
||||
You will get an ASCII art plot of different bar graphs.
|
||||
They show tone / frame level and quality.
|
||||
The green bar shows the current level.
|
||||
The yellow marker shows the last/peak/average level.
|
||||
|
@ -339,7 +339,7 @@ nmt -k 1 -k 4 -a hw:0,0 -a hw:0,0 -T CC/TC -T TC -0 1 -0 2 -Y se,1 -x
|
|||
</pre>
|
||||
|
||||
<p>
|
||||
This example will run a base station with two channel (1 and 4) via two radios connectd to a stereo sound card.
|
||||
This example will run a base station with two channel (1 and 4) via two radios connected to a stereo sound card.
|
||||
The sound card is accessed via '-a hw:0,0'.
|
||||
Because the sound card is stereo, the '-a' option can be given for two channels.
|
||||
The first channel is a combined control+traffic channel and the second a traffic channel.
|
||||
|
|
|
@ -302,7 +302,7 @@ www.bccomponents.com <p>
|
|||
www.panasonic.com<p>
|
||||
www.kemet.com<p>
|
||||
<p>
|
||||
for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
|
||||
for trimmer reference see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
|
||||
|
||||
<map name="nav_main">
|
||||
<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
|
||||
|
|
|
@ -1318,7 +1318,7 @@ www.bccomponents.com <p>
|
|||
www.panasonic.com<p>
|
||||
www.kemet.com<p>
|
||||
<p>
|
||||
for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
|
||||
for trimmer reference see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
|
||||
|
||||
<map name="nav_main">
|
||||
<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
|
||||
|
|
|
@ -89,12 +89,12 @@ struct amps {
|
|||
int fsk_rx_sync_tolerant; /* be more tolerant to sync */
|
||||
/* the dotting buffer stores the elapsed samples, so we can calculate
|
||||
* an average time of zero-crossings during dotting sequence.
|
||||
* this buffer wrapps every 256 values */
|
||||
* this buffer wrpps every 256 values */
|
||||
double fsk_rx_dotting_elapsed[256]; /* dotting buffer with elapsed samples since last zero-crossing */
|
||||
uint8_t fsk_rx_dotting_pos; /* position of next value in dotting buffer */
|
||||
int fsk_rx_dotting_life; /* counter to expire when no sync was found after dotting */
|
||||
double fsk_rx_dotting_average; /* last average slope position of dotting sequnece. */
|
||||
/* the ex buffer holds the duration of one bit, and wrapps every
|
||||
/* the ex buffer holds the duration of one bit, and wraps every
|
||||
* bit. */
|
||||
double fsk_rx_bitcount; /* counts the bit. if it reaches or exceeds 1, the bit is complete and the next bit starts */
|
||||
sample_t *fsk_rx_window; /* rx buffer for one bit */
|
||||
|
@ -103,7 +103,7 @@ struct amps {
|
|||
int fsk_rx_window_begin; /* where to begin detecting level */
|
||||
int fsk_rx_window_end; /* where to end detecting level */
|
||||
int fsk_rx_window_pos; /* current position in buffer */
|
||||
/* the rx bufffer received one frame until rx length */
|
||||
/* the rx buffer received one frame until rx length */
|
||||
char fsk_rx_frame[FSK_MAX_BITS + 1]; /* +1 because 0-termination */
|
||||
int fsk_rx_frame_length; /* length of expected frame */
|
||||
int fsk_rx_frame_count; /* count number of received bit */
|
||||
|
@ -123,7 +123,7 @@ struct amps {
|
|||
char rx_recc_dialing[33]; /* received dial string */
|
||||
/* FOCC frame states */
|
||||
int rx_focc_word_count; /* counts received words */
|
||||
int tx_focc_frame_count; /* used to schedule system informations */
|
||||
int tx_focc_frame_count; /* used to schedule system information */
|
||||
int tx_focc_send; /* if set, send message words */
|
||||
uint32_t tx_focc_min1; /* mobile id */
|
||||
uint16_t tx_focc_min2;
|
||||
|
@ -131,8 +131,8 @@ struct amps {
|
|||
uint8_t tx_focc_msg_type; /* message (3 values) */
|
||||
uint8_t tx_focc_ordq;
|
||||
uint8_t tx_focc_order;
|
||||
int tx_focc_word_count; /* counts transmitted words in a muli word message */
|
||||
int tx_focc_word_repeat; /* countrs repeats of mulit word message */
|
||||
int tx_focc_word_count; /* counts transmitted words in a multi word message */
|
||||
int tx_focc_word_repeat; /* counts repeats of multi word message */
|
||||
/* FVC frame states */
|
||||
int tx_fvc_send; /* if set, send message words */
|
||||
int tx_fvc_chan; /* channel to assign for voice call */
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*
|
||||
* AMPS modulates the carrier frequency. If it is 8 kHz above, it is high level,
|
||||
* if it is 8 kHz below, it is low level. The bits are coded using Manchester
|
||||
* code. A 1 is coded by low level, followed by a hight level. A 0 is coded by
|
||||
* code. A 1 is coded by low level, followed by a high level. A 0 is coded by
|
||||
* a high level, followed by a low level. This will cause at least one level
|
||||
* change within each bit. Also the level changes between equal bits, see
|
||||
* Manchester coding. The bit rate is 10 KHz.
|
||||
|
@ -239,7 +239,7 @@ int dsp_init_sender(amps_t *amps, int tolerant)
|
|||
}
|
||||
amps->fsk_rx_window = spl;
|
||||
|
||||
/* create devation and ramp */
|
||||
/* create deviation and ramp */
|
||||
amps->fsk_deviation = (!tacs) ? AMPS_FSK_DEVIATION : TACS_FSK_DEVIATION;
|
||||
dsp_init_ramp(amps);
|
||||
|
||||
|
@ -508,7 +508,7 @@ static void fsk_rx_bit(amps_t *amps, sample_t *spl, int len, int pos, int begin,
|
|||
int bit;
|
||||
double max = 0, min = 0;
|
||||
|
||||
/* decode one bit. substact the first half from the second half.
|
||||
/* decode one bit. subtract the first half from the second half.
|
||||
* the result shows the direction of the bit change: 1 == positive.
|
||||
*/
|
||||
pos -= begin; /* possible wrap is handled below */
|
||||
|
|
|
@ -2136,7 +2136,7 @@ struct amps_ie_desc amps_ie_desc[] = {
|
|||
{ AMPS_IE_AUTH, "AUTH", "Support of authentication procedures described in TIA/EIA-136-510", ie_yes },
|
||||
{ AMPS_IE_AUTHBS, "AUTHBS", "Output response of the authentication algorithm initiated by the Base Station Challenge Order", ie_hex },
|
||||
{ AMPS_IE_AUTHR, "AUTHR", "Output response of the authentication algorithm", ie_hex },
|
||||
{ AMPS_IE_AUTHU, "AUTHU", "Output of the authentication algorithm when responsing to a Unique Challenge Order", ie_hex },
|
||||
{ AMPS_IE_AUTHU, "AUTHU", "Output of the authentication algorithm when responding to a Unique Challenge Order", ie_hex },
|
||||
{ AMPS_IE_Acked_Data, "Acked Data", "Used to identidy the selected privacy mode for a data/fax call", ie_acked_data },
|
||||
{ AMPS_IE_Async_Data, "Async Data", "Async Data is supported on the current Analog Control Channel", ie_yes },
|
||||
{ AMPS_IE_BIS, "BIS", "Busy-Idle status field", ie_bis },
|
||||
|
@ -2149,7 +2149,7 @@ struct amps_ie_desc amps_ie_desc[] = {
|
|||
{ AMPS_IE_CHARACTER_3, "CHARACTER 3", "ASCII Character", ie_ascii },
|
||||
{ AMPS_IE_CMAC, "CMAC", "Control mobile attenuation field", ie_cmac },
|
||||
{ AMPS_IE_CMAX_1, "CMAX-1", "CMAX is the number of access channels in the system", ie_cmax },
|
||||
{ AMPS_IE_COUNT, "COUNT", "A modulo-64 count for authenticaiton", NULL },
|
||||
{ AMPS_IE_COUNT, "COUNT", "A modulo-64 count for authentication", NULL },
|
||||
{ AMPS_IE_CPA, "CPA", "Combined paging/access field", ie_yes },
|
||||
{ AMPS_IE_CPN_RL, "CPN_RL", "Number of Characters in Calling Party Number", NULL },
|
||||
{ AMPS_IE_CRC, "CRC", "Identifies used CRC", ie_crc },
|
||||
|
@ -3192,7 +3192,7 @@ static int amps_decode_word_recc(amps_t *amps, uint64_t word, int first)
|
|||
}
|
||||
amps->rx_recc_nawc--;
|
||||
if (amps->rx_recc_nawc != nawc) {
|
||||
PDEBUG_CHAN(DFRAME, DEBUG_NOTICE, "Received additional word with NAWC missmatch!\n");
|
||||
PDEBUG_CHAN(DFRAME, DEBUG_NOTICE, "Received additional word with NAWC mismatch!\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3661,7 +3661,7 @@ static int amps_decode_bits_recc(amps_t *amps, const char *bits, int first)
|
|||
if (debuglevel == DEBUG_DEBUG || crc_ok_count > 0) {
|
||||
PDEBUG_CHAN(DFRAME, DEBUG_INFO, "RX RECC: DCC=%d (%d of 5 CRCs are ok)\n", dcc, crc_ok_count);
|
||||
if (dcc != amps->si.dcc) {
|
||||
PDEBUG(DFRAME, DEBUG_INFO, "received DCC=%d missmatches the base station's DCC=%d\n", dcc, amps->si.dcc);
|
||||
PDEBUG(DFRAME, DEBUG_INFO, "received DCC=%d mismatches the base station's DCC=%d\n", dcc, amps->si.dcc);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ void init_sysinfo(amps_si *si, int cmac, int vmac, int dtx, int dcc, int sid1, i
|
|||
|
||||
/* all words */
|
||||
si->dcc = dcc;
|
||||
/* VC assginment */
|
||||
/* VC assignment */
|
||||
si->vmac = vmac;
|
||||
|
||||
/* filler */
|
||||
|
@ -100,15 +100,15 @@ void init_sysinfo(amps_si *si, int cmac, int vmac, int dtx, int dcc, int sid1, i
|
|||
for (i = 0; i < 16; i++)
|
||||
si->overload.olc[i] = 1;
|
||||
|
||||
/* Acces Tyoe */
|
||||
/* Access Tyoe */
|
||||
/* 'bis' must be 0, so the phone does not wait for busy bit.
|
||||
* We cannot respond with B/I fast enough due to processing delay.
|
||||
* So we don't set the B/I bit to busy on reception of message.
|
||||
* The access type message (including this 'bis') must also be included.
|
||||
*/
|
||||
si->acc_type.bis = bis; /* must be clear to ignore B/I bit */
|
||||
si->acc_type.pci_home = 0; /* if set, bscap must allso be set */
|
||||
si->acc_type.pci_roam = 0; /* if set, bscap must allso be set */
|
||||
si->acc_type.pci_home = 0; /* if set, bscap must also be set */
|
||||
si->acc_type.pci_roam = 0; /* if set, bscap must also be set */
|
||||
si->acc_type.bspc = 0;
|
||||
si->acc_type.bscap = 0;
|
||||
|
||||
|
@ -145,7 +145,7 @@ void prepare_sysinfo(amps_si *si)
|
|||
si->num = i; /* train is running */
|
||||
si->count = 0; /* first message in train */
|
||||
if (i > (int)(sizeof(si->type) / sizeof(si->type[0]))) {
|
||||
fprintf(stderr, "si type array overflow, pleas fix!\n");
|
||||
fprintf(stderr, "si type array overflow, please fix!\n");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ struct sysinfo_overload {
|
|||
uint8_t olc[16];
|
||||
};
|
||||
|
||||
/* Acces Tyoe */
|
||||
/* Access Tyoe */
|
||||
struct sysinfo_acc_type {
|
||||
uint8_t bis;
|
||||
uint8_t pci_home;
|
||||
|
@ -90,7 +90,7 @@ typedef struct system_information {
|
|||
int overhead_repeat;
|
||||
/* all words */
|
||||
uint8_t dcc;
|
||||
/* VC assginment */
|
||||
/* VC assignment */
|
||||
uint8_t vmac;
|
||||
/* broadcast */
|
||||
struct sysinfo_filler filler;
|
||||
|
|
|
@ -65,7 +65,7 @@ static const char *trans_state_name(int state)
|
|||
case TRANS_PAGE_REPLY:
|
||||
return "PAGE REPLY";
|
||||
default:
|
||||
return "<invald transaction state>";
|
||||
return "<invalid transaction state>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ const char *trans_short_state_name(int state)
|
|||
case TRANS_PAGE_REPLY:
|
||||
return "PAGE";
|
||||
default:
|
||||
return "<invald transaction state>";
|
||||
return "<invalid transaction state>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -109,7 +109,7 @@ transaction_t *create_transaction(amps_t *amps, enum amps_trans_state state, uin
|
|||
transaction_t *trans = NULL;
|
||||
amps_t *search_amps;
|
||||
|
||||
/* search transaction for this subsriber */
|
||||
/* search transaction for this subscriber */
|
||||
for (sender = sender_head; sender; sender = sender->next) {
|
||||
search_amps = (amps_t *) sender;
|
||||
/* search transaction for this callref */
|
||||
|
@ -121,7 +121,7 @@ transaction_t *create_transaction(amps_t *amps, enum amps_trans_state state, uin
|
|||
const char *number = amps_min2number(trans->min1, trans->min2);
|
||||
int old_callref = trans->callref;
|
||||
amps_t *old_amps = trans->amps;
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found alredy pending transaction for subscriber '%s', deleting!\n", number);
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found already pending transaction for subscriber '%s', deleting!\n", number);
|
||||
destroy_transaction(trans);
|
||||
if (old_amps) /* should be... */
|
||||
amps_go_idle(old_amps);
|
||||
|
|
|
@ -89,11 +89,11 @@ typedef struct bnetz {
|
|||
enum dsp_mode dsp_mode; /* current mode: audio, durable tone 0 or 1, "Telegramm" */
|
||||
fsk_mod_t fsk_mod; /* fsk modem instance */
|
||||
fsk_demod_t fsk_demod;
|
||||
uint16_t rx_telegramm; /* rx shift register for receiveing telegramm */
|
||||
uint16_t rx_telegramm; /* rx shift register for receiving telegramm */
|
||||
double rx_telegramm_quality[16];/* quality of each bit in telegramm */
|
||||
double rx_telegramm_level[16]; /* level of each bit in telegramm */
|
||||
int rx_telegramm_qualidx; /* index of quality array above */
|
||||
uint16_t rx_tone; /* rx shift register for receiveing continuous tone */
|
||||
uint16_t rx_tone; /* rx shift register for receiving continuous tone */
|
||||
double rx_tone_quality[16]; /* quality of tone fragment (100th of second) */
|
||||
double rx_tone_level[16]; /* level of tone fragment (100th of second) */
|
||||
int rx_tone_qualidx; /* index of quality array above */
|
||||
|
|
|
@ -153,7 +153,7 @@ static int handle_options(int short_option, int __attribute__((unused)) argi, ch
|
|||
|
||||
|
||||
/* process next fsk bit.
|
||||
* if the dial string terminats, change to SILENCE mode
|
||||
* if the dial string terminates, change to SILENCE mode
|
||||
*/
|
||||
static int fsk_send_bit(void __attribute__((unused)) *inst)
|
||||
{
|
||||
|
@ -236,7 +236,7 @@ again:
|
|||
}
|
||||
}
|
||||
|
||||
/* loop that gets audio from encoder and fowards it to sound card.
|
||||
/* loop that gets audio from encoder and forwards it to sound card.
|
||||
* alternatively a sound file is written.
|
||||
*/
|
||||
static void process_signal(void)
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
* If no SpK is available, the call is rejected. If queue (Warteschlange) is
|
||||
* enabled, WSK(R) is scheduled. After transmission, the state changes to
|
||||
* TRANS_MT_QUEUE. Upon timeout (no channel becomes available), the call is
|
||||
* rejected by scheduling VA(R). Upon available channel the call proceeeds with
|
||||
* rejected by scheduling VA(R). Upon available channel the call proceeds with
|
||||
* VAK(R) as described above.
|
||||
*
|
||||
* If an MO (mobile originating) call is made (received VWG(K)), a transaction
|
||||
|
@ -57,11 +57,11 @@
|
|||
* (Warteschlange) is enabled, WWBP(R) is scheduled. After transmission, the
|
||||
* state is changed to TRANS_MO_QUEUE. Upon timeout (no channel becomes
|
||||
* available), the call is rejected by scheduling VA(R). Upon available channel
|
||||
* the call proceeeds with VAG(R) as described above.
|
||||
* the call proceeds with VAG(R) as described above.
|
||||
*
|
||||
* Switching to SpK is performed two time slots after transmitting VAK(R) or
|
||||
* VAG(R). The timer is started. The schedulers schedules 8 times BQ(K) and
|
||||
* awaits at least one BEL(K). If BEK(K) is received, the timer is stoped. If
|
||||
* awaits at least one BEL(K). If BEK(K) is received, the timer is stopped. If
|
||||
* BQ(K) was sent at least 8 times and if timer is stopped, the scheduler
|
||||
* schedules VHQ(K). If no BEL(K) was received, AFK(K) is scheduled N_AFKT
|
||||
* times, then the process on OgK (WBP+VAG or VAK) is repeated N times.
|
||||
|
@ -114,7 +114,7 @@
|
|||
/*
|
||||
* Notes on the combined channel hack:
|
||||
*
|
||||
* For combined SpK+OgK hack, the channel is used as SpK as last choise. This
|
||||
* For combined SpK+OgK hack, the channel is used as SpK as last choice. This
|
||||
* allows to use only one transceiver for making C-Netz to work. Also it allows
|
||||
* to use all transceivers for simultanious phone calls. Some phones may not
|
||||
* work with that.
|
||||
|
@ -508,7 +508,7 @@ void cnetz_go_idle(cnetz_t *cnetz)
|
|||
|
||||
/* set scheduler to OgK or turn off SpK */
|
||||
if (cnetz->dsp_mode == DSP_MODE_SPK_K || cnetz->dsp_mode == DSP_MODE_SPK_V) {
|
||||
/* switch next frame after distributed signaling boundary (mutliple of 8 slots) */
|
||||
/* switch next frame after distributed signaling boundary (multiple of 8 slots) */
|
||||
cnetz_set_sched_dsp_mode(cnetz, (atoi(cnetz->sender.kanal) == CNETZ_OGK_KANAL) ? DSP_MODE_OGK : DSP_MODE_OFF, (cnetz->sched_ts + 8) & 24);
|
||||
} else {
|
||||
/* switch next frame */
|
||||
|
|
|
@ -10,7 +10,7 @@ typedef struct cnetz cnetz_t;
|
|||
|
||||
/* dsp modes of transmission */
|
||||
enum dsp_mode {
|
||||
DSP_SCHED_NONE = 0, /* use for sheduling: nothing to shedule */
|
||||
DSP_SCHED_NONE = 0, /* use for scheduling: nothing to schedule */
|
||||
DSP_MODE_OFF, /* send nothing on unused SpK */
|
||||
DSP_MODE_OGK, /* send "Telegramm" on OgK */
|
||||
DSP_MODE_SPK_K, /* send concentrated "Telegramm" SpK */
|
||||
|
|
|
@ -94,7 +94,7 @@ int update_db(cnetz_t __attribute__((unused)) *cnetz, uint8_t futln_nat, uint8_t
|
|||
{
|
||||
cnetz_db_t *db, **dbp;
|
||||
|
||||
/* search transaction for this subsriber */
|
||||
/* search transaction for this subscriber */
|
||||
db = cnetz_db_head;
|
||||
while (db) {
|
||||
if (db->futln_nat == futln_nat
|
||||
|
|
|
@ -118,7 +118,7 @@ int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], en
|
|||
}
|
||||
|
||||
if (clock_speed[0] > 1000 || clock_speed[0] < -1000 || clock_speed[1] > 1000 || clock_speed[1] < -1000) {
|
||||
PDEBUG_CHAN(DDSP, DEBUG_ERROR, "Clock speed %.1f,%.1f ppm out of range! Plese use range between +-1000 ppm!\n", clock_speed[0], clock_speed[1]);
|
||||
PDEBUG_CHAN(DDSP, DEBUG_ERROR, "Clock speed %.1f,%.1f ppm out of range! Please use range between +-1000 ppm!\n", clock_speed[0], clock_speed[1]);
|
||||
return -EINVAL;
|
||||
}
|
||||
PDEBUG_CHAN(DDSP, DEBUG_INFO, "Using clock speed of %.1f ppm (RX) and %.1f ppm (TX) to correct sound card's clock.\n", clock_speed[0], clock_speed[1]);
|
||||
|
@ -136,7 +136,7 @@ int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], en
|
|||
goto error;
|
||||
}
|
||||
|
||||
/* create devation and ramp */
|
||||
/* create deviation and ramp */
|
||||
cnetz->fsk_deviation = FSK_DEVIATION;
|
||||
dsp_init_ramp(cnetz);
|
||||
|
||||
|
@ -229,7 +229,7 @@ void calc_clock_speed(cnetz_t *cnetz, double samples, int tx, int result)
|
|||
|
||||
ti = get_time();
|
||||
|
||||
/* skip some time to avoid false mesurement due to filling of buffers */
|
||||
/* skip some time to avoid false measurement due to filling of buffers */
|
||||
if (cs->meas_ti == 0.0) {
|
||||
cs->meas_ti = ti + 1.0;
|
||||
return;
|
||||
|
@ -431,7 +431,7 @@ static int fsk_block_encode(cnetz_t *cnetz, const char *bits, int ogk)
|
|||
* the marker is placed in the middle of the 6th bit.
|
||||
* because we have a transition (ramp) in the middle of each bit.
|
||||
* the phone will see the position of the marker as start of the 6th bit.
|
||||
* the marker marks the pont where the speech is ramped up, so the phone
|
||||
* the marker marks the point where the speech is ramped up, so the phone
|
||||
* will see the speech completely ramped up after the 6th bit
|
||||
*/
|
||||
static int fsk_distributed_encode(cnetz_t *cnetz, const char *bits)
|
||||
|
@ -662,7 +662,7 @@ again:
|
|||
if (cnetz->sched_dsp_mode_ts >= 0 && cnetz->sched_r_m == 0) {
|
||||
if (cnetz->sched_dsp_mode_ts == cnetz->sched_ts) {
|
||||
/* OgK / SpK(K) / SpK(V) */
|
||||
PDEBUG_CHAN(DDSP, DEBUG_INFO, "Now switchting channel mode to %s at timeslot %d\n", cnetz_dsp_mode_name(cnetz->sched_dsp_mode), cnetz->sched_dsp_mode_ts);
|
||||
PDEBUG_CHAN(DDSP, DEBUG_INFO, "Now switching channel mode to %s at timeslot %d\n", cnetz_dsp_mode_name(cnetz->sched_dsp_mode), cnetz->sched_dsp_mode_ts);
|
||||
cnetz->sched_dsp_mode_ts = -1;
|
||||
cnetz_set_dsp_mode(cnetz, cnetz->sched_dsp_mode);
|
||||
}
|
||||
|
|
|
@ -39,13 +39,13 @@
|
|||
* 0-level of the phone's transmitter is. (level of carrier frequency) Also we
|
||||
* use receiver and sound card that cause any level to return to 0 after some
|
||||
* time, Even if the transmitter still transmits a level above or below the
|
||||
* carrier frequnecy. Insted we look at the change of the received signal. An
|
||||
* carrier frequnecy. Instead we look at the change of the received signal. An
|
||||
* upward change indicates 1. An downward change indicates 0. (This may also be
|
||||
* reversed, if we find out, that we received a sync sequence in reversed
|
||||
* polarity.) If there is no significant change in level, we keep the value of
|
||||
* last change, regardless of what level we actually receive.
|
||||
*
|
||||
* To determine a change from noise, we use a theshold. This is set to half of
|
||||
* To determine a change from noise, we use a threshold. This is set to half of
|
||||
* the level of last received change. This means that the next change may be
|
||||
* down to a half lower. There is a special case during distributed signaling.
|
||||
* The first level change of each data chunk raises or falls from 0-level
|
||||
|
@ -65,7 +65,7 @@
|
|||
* determine the highest slope, the highest difference between subsequent
|
||||
* samples is used. For every sample we move the window one bit to the right
|
||||
* (next sample), check if change level matches the threshold and highest slope
|
||||
* is in the middle and so forth. Only if the highes slope is exactly in the
|
||||
* is in the middle and so forth. Only if the highest slope is exactly in the
|
||||
* middle, we declare a change. This means that we detect a slope about half of
|
||||
* a bit duration later.
|
||||
*
|
||||
|
@ -342,12 +342,12 @@ static inline void got_bit(fsk_fm_demod_t *fsk, int bit, double change_level)
|
|||
case FSK_SYNC_NONE:
|
||||
fsk->rx_sync = (fsk->rx_sync << 1) | bit;
|
||||
/* use half level of last change for threshold change detection.
|
||||
* if there is no change detected for 5 bits, set theshold to
|
||||
* if there is no change detected for 5 bits, set threshold to
|
||||
* 1 percent, so the 7 pause bits before a frame will make sure
|
||||
* that the change is below noise level, so the first sync
|
||||
* bit is detected. then the change is set and adjusted
|
||||
* for all other bits in the sync sequence.
|
||||
* after sync, the theshold is set to half of the average of
|
||||
* after sync, the threshold is set to half of the average of
|
||||
* all changes in the sync sequence */
|
||||
if (change_level > 0.0) {
|
||||
fsk->level_threshold = change_level / 2.0;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
#define BITS_PER_SUPERFRAME 12672.0 /* super frame (Oberrahmen) has duration of excactly 2.4 seconds */
|
||||
#define BITS_PER_BLOCK 198.0 /* block has duration of excactly 37.5 milli seconds */
|
||||
#define BITS_PER_SUPERFRAME 12672.0 /* super frame (Oberrahmen) has duration of exactly 2.4 seconds */
|
||||
#define BITS_PER_BLOCK 198.0 /* block has duration of exactly 37.5 milli seconds */
|
||||
#define BITS_PER_SPK_BLOCK 66.0 /* spk block has a duration of exactly 12.5 milli seconds */
|
||||
|
||||
/* fsk rx sync state */
|
||||
|
|
|
@ -103,7 +103,7 @@ void print_help(const char *arg0)
|
|||
printf(" Power level 8 starts with level 6 and is then reduced on SpK.\n");
|
||||
printf(" -A --authentication <challenge>\n");
|
||||
printf(" Enable authorization flag on the base station and use given challenge\n");
|
||||
printf(" as autorization random. Depending on the key inside the card you will\n");
|
||||
printf(" as authorization random. Depending on the key inside the card you will\n");
|
||||
printf(" get a response. Any response is accepted. Phone must have smart card!\n");
|
||||
printf(" The challenge can be any 64 bit (hex) number like: 0x0123456789abcdef\n");
|
||||
printf(" Note: Authentication is automatically enabled for the base station\n");
|
||||
|
|
|
@ -1204,7 +1204,7 @@ int init_coding(void)
|
|||
block_code[i] = word;
|
||||
}
|
||||
|
||||
/* check if redunancy of a single bit matches the combined redundancy */
|
||||
/* check if redundancy of a single bit matches the combined redundancy */
|
||||
for (i = 0; i < 128; i++) {
|
||||
int r = 0;
|
||||
for (j = 0; j < 7; j++) {
|
||||
|
|
|
@ -44,7 +44,7 @@ transaction_t *create_transaction(cnetz_t *cnetz, uint64_t state, uint8_t futln_
|
|||
transaction_t *trans = NULL;
|
||||
cnetz_t *search_cnetz;
|
||||
|
||||
/* search transaction for this subsriber */
|
||||
/* search transaction for this subscriber */
|
||||
for (sender = sender_head; sender; sender = sender->next) {
|
||||
search_cnetz = (cnetz_t *) sender;
|
||||
/* search transaction for this callref */
|
||||
|
@ -56,7 +56,7 @@ transaction_t *create_transaction(cnetz_t *cnetz, uint64_t state, uint8_t futln_
|
|||
const char *rufnummer = transaction2rufnummer(trans);
|
||||
int old_callref = trans->callref;
|
||||
cnetz_t *old_cnetz = trans->cnetz;
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found alredy pending transaction for subscriber '%s', deleting!\n", rufnummer);
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found already pending transaction for subscriber '%s', deleting!\n", rufnummer);
|
||||
destroy_transaction(trans);
|
||||
if (old_cnetz) /* should be... */
|
||||
cnetz_go_idle(old_cnetz);
|
||||
|
@ -261,7 +261,7 @@ static const char *trans_state_name(uint64_t state)
|
|||
case TRANS_MT_DELAY:
|
||||
return "MT_DELAY";
|
||||
default:
|
||||
return "<invald transaction state>";
|
||||
return "<invalid transaction state>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -309,7 +309,7 @@ const char *trans_short_state_name(uint64_t state)
|
|||
case TRANS_MT_DELAY:
|
||||
return "IN QUEUE";
|
||||
default:
|
||||
return "<invald transaction state>";
|
||||
return "<invalid transaction state>";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#define TRANS_WBN (1 << 7) /* dialing received, waiting for time slot to reject call */
|
||||
#define TRANS_VAG (1 << 8) /* establishment of call sent, switching channel */
|
||||
/* mobile terminated call */
|
||||
#define TRANS_WSK (1 << 9) /* incomming call in queue */
|
||||
#define TRANS_WSK (1 << 9) /* incoming call in queue */
|
||||
#define TRANS_VAK (1 << 10) /* establishment of call sent, switching channel */
|
||||
/* traffic channel */
|
||||
#define TRANS_BQ (1 << 11) /* accnowledge channel */
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
* DTR state:
|
||||
* When DTR is off, state is clamped to INIT state.
|
||||
* When DTR becomes on, RX and TX state machines begin to run.
|
||||
* When DTR becomes off, state machines change to INIT state immidiately.
|
||||
* When DTR becomes off, state machines change to INIT state immediately.
|
||||
*
|
||||
* (B)RTS state:
|
||||
* When (B)RTS becomes on, data transmission is enabled.
|
||||
|
@ -61,7 +61,7 @@
|
|||
* When data reception is not blocked, data is received from the demodulator
|
||||
* and forwarded towards upper layer.
|
||||
* While receiving in half duplex mode, (B)RD is blocked, meaning that '1'
|
||||
* (MARK) is forwarded toward upper layer, regardless fo the data from the
|
||||
* (MARK) is forwarded toward upper layer, regardless of the data from the
|
||||
* demodulator.
|
||||
* Squelch (mute receive audio) is used to prevent noise when turning off
|
||||
* half duplex transmission.
|
||||
|
@ -91,7 +91,7 @@
|
|||
#define RX_CD_ON_7911 -42.0 /* according to datasheet (at 600 Ohms) */
|
||||
#define RX_CD_OFF_7910 -45.0 /* according to datasheet (at 600 Ohms) */
|
||||
#define RX_CD_OFF_7911 -47.5 /* according to datasheet (at 600 Ohms) */
|
||||
#define RX_QUALITY 0.1 /* FIXME: minium quality */
|
||||
#define RX_QUALITY 0.1 /* FIXME: minimum quality */
|
||||
#define BIT_ADJUST 0.5 /* must be 0.5 to completely sync each bit */
|
||||
|
||||
/* frequencies used */
|
||||
|
|
|
@ -14,7 +14,7 @@ typedef struct datenklo {
|
|||
|
||||
/* settings */
|
||||
uint8_t mc; /* modem chip mode */
|
||||
int auto_rts; /* automatic RTS controling for half duplex */
|
||||
int auto_rts; /* automatic RTS controlling for half duplex */
|
||||
double max_baud; /* limit to what the mode supports */
|
||||
double force_tx_baud, force_rx_baud; /* override IOCTL */
|
||||
int tx_back, rx_back; /* set if back channel is used for path */
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "eurosignal.h"
|
||||
#include "dsp.h"
|
||||
|
||||
/* anouncement timers */
|
||||
/* announcement timers */
|
||||
#define ANSWER_TIME 1.0 /* wait after answer */
|
||||
#define OOO_TIME 3.8 /* announcement 1.7 s, pause 2.1 s */
|
||||
#define UNASSIGNED_TIME1 2.2 /* announcement 2.2 s s */
|
||||
|
@ -572,7 +572,7 @@ static void call_timeout(struct timer *timer)
|
|||
}
|
||||
/* if subcriber list is available, but ID is not found, we are unassigned */
|
||||
if (id_list && !search_id(call->station_id)) {
|
||||
PDEBUG(DEURO, DEBUG_INFO, "Subscriber unknwon, playing announcement.\n");
|
||||
PDEBUG(DEURO, DEBUG_INFO, "Subscriber unknown, playing announcement.\n");
|
||||
call->announcement_spl = es_kaudn_spl;
|
||||
call->announcement_size = es_kaudn_size;
|
||||
call->announcement_index = 0;
|
||||
|
@ -768,7 +768,7 @@ static void _release(int callref, int __attribute__((unused)) cause)
|
|||
|
||||
call->callref = 0;
|
||||
|
||||
/* queued ID will keep in release state until trasmission has finished */
|
||||
/* queued ID will keep in release state until transmission has finished */
|
||||
if (call->state == EURO_CALL_ACKNOWLEDGE && call->page_count) {
|
||||
call_new_state(call, EURO_CALL_RELEASED);
|
||||
return;
|
||||
|
|
|
@ -65,13 +65,13 @@ typedef struct eurosignal {
|
|||
double tx_phaseshift65536; /* current tone's phase shift per sample */
|
||||
double tx_phase; /* current phase of tone */
|
||||
double tx_time; /* current elapsed time of tone */
|
||||
char tx_digits[7]; /* current ID beeing transmitted */
|
||||
char tx_digits[7]; /* current ID being transmitted */
|
||||
int tx_digit_index; /* current digit beein transmitted */
|
||||
fm_demod_t rx_demod; /* demodulator for frequency */
|
||||
iir_filter_t rx_lp; /* low pass to filter the frequency result */
|
||||
int rx_digit_count; /* count the tone until detected */
|
||||
char rx_digit_last; /* last tone, so we detect any change */
|
||||
int rx_digit_receiving; /* we recive digis */
|
||||
int rx_digit_receiving; /* we receive digis */
|
||||
char rx_digits[7]; /* current ID being received */
|
||||
int rx_digit_index; /* current digit receiving */
|
||||
int rx_timeout_count; /* count the timeout */
|
||||
|
|
|
@ -68,8 +68,8 @@ void print_help(const char *arg0)
|
|||
printf(" be the received pager ID. The called number will be '1' for the first\n");
|
||||
printf(" ID given, '2' for scond, ...)\n");
|
||||
printf(" -D --degraded\n");
|
||||
printf(" Play the anouncement that the system is degraded due to failure of one\n");
|
||||
printf(" or more transmitters. If the caller hangs up during or rigt after the\n");
|
||||
printf(" Play the announcement that the system is degraded due to failure of one\n");
|
||||
printf(" or more transmitters. If the caller hangs up during or right after the\n");
|
||||
printf(" announcement, no paging is performed.\n");
|
||||
printf(" -S --scan <from> <to>\n");
|
||||
printf(" Scan through given IDs once (no repetition). This can be useful to find\n");
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
*
|
||||
* The release timer will release the call, if no release response from BS has
|
||||
* been received. This may happen due to signaling link error. Since there
|
||||
* is no document available about message timout conditions, I just use
|
||||
* is no document available about message timeout conditions, I just use
|
||||
* that timer when there is no response. I think that the base station does
|
||||
* the same and releases the call, if no release response has been received.
|
||||
*/
|
||||
|
@ -133,7 +133,7 @@ static void config_send(uint8_t ident, uint8_t job, uint16_t offset, uint16_t le
|
|||
uint32_t checksum = 0;
|
||||
uint8_t rc = 1; /* Auftrag angenommen */
|
||||
|
||||
PDEBUG(DCNETZ, DEBUG_NOTICE, "MSC requests data base block. (offset=%d, lenght=%d)\n", offset, length);
|
||||
PDEBUG(DCNETZ, DEBUG_NOTICE, "MSC requests data base block. (offset=%d, length=%d)\n", offset, length);
|
||||
|
||||
if (!conf.loaded) {
|
||||
PDEBUG(DCNETZ, DEBUG_ERROR, "MSC requests data base, but no file name given. Please give file name!\n");
|
||||
|
@ -288,7 +288,7 @@ static cnetz_db_t *find_db(uint8_t futln_nat, uint8_t futln_fuvst, uint16_t futl
|
|||
{
|
||||
cnetz_db_t *db;
|
||||
|
||||
/* search transaction for this subsriber */
|
||||
/* search transaction for this subscriber */
|
||||
db = cnetz_db_head;
|
||||
while (db) {
|
||||
if (db->futln_nat == futln_nat
|
||||
|
@ -588,7 +588,7 @@ static transaction_t *create_transaction(uint8_t ident, uint8_t futln_nat, uint8
|
|||
trans = search_transaction_number(futln_nat, futln_fuvst, futln_rest);
|
||||
if (trans && mo) {
|
||||
const char *rufnummer = transaction2rufnummer(trans);
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found alredy pending transaction for subscriber '%s', dropping that!\n", rufnummer);
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found already pending transaction for subscriber '%s', dropping that!\n", rufnummer);
|
||||
if (trans->callref)
|
||||
call_up_release(trans->callref, CAUSE_NORMAL);
|
||||
trans->callref = 0;
|
||||
|
@ -597,7 +597,7 @@ static transaction_t *create_transaction(uint8_t ident, uint8_t futln_nat, uint8
|
|||
}
|
||||
if (trans) {
|
||||
const char *rufnummer = transaction2rufnummer(trans);
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found alredy pending transaction for subscriber '%s', we are busy!\n", rufnummer);
|
||||
PDEBUG(DTRANS, DEBUG_NOTICE, "Found already pending transaction for subscriber '%s', we are busy!\n", rufnummer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -963,7 +963,7 @@ outgoing:
|
|||
trans->spk_nr = Q;
|
||||
/* SPK not exist, release */
|
||||
if (!trans->spk) {
|
||||
PDEBUG(DCNETZ, DEBUG_ERROR, "SpK '%d' requested by BS not configured, please configure all SpK that base station has avaiable!\n", Q);
|
||||
PDEBUG(DCNETZ, DEBUG_ERROR, "SpK '%d' requested by BS not configured, please configure all SpK that base station has available!\n", Q);
|
||||
len = encode_stnqu(&opcode, &data, Q);
|
||||
message_send(ident, opcode, data, len);
|
||||
if (trans->callref)
|
||||
|
|
|
@ -170,7 +170,7 @@ again:
|
|||
goto again;
|
||||
}
|
||||
|
||||
/* loop that gets audio from encoder and fowards it to sound card.
|
||||
/* loop that gets audio from encoder and forwards it to sound card.
|
||||
* alternatively a sound file is written.
|
||||
*/
|
||||
static void process_signal(void)
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
*/
|
||||
#define RX_MIN_FREQ 50.0 /* minimum frequency error to detect tone */
|
||||
#define MAX_DISPLAY (MAX_DEVIATION / SPEECH_DEVIATION)/* as much as MAX_DEVIATION */
|
||||
/* Note that FILTER_BW / SUSTAIN and QUAL_TIME sum up and should not exeed minimum tone length */
|
||||
/* Note that FILTER_BW / SUSTAIN and QUAL_TIME sum up and should not exceed minimum tone length */
|
||||
#define RX_FILTER_BW 100.0 /* amplitude filter (causes delay) */
|
||||
#define RX_SUSTAIN 0.010 /* how long a tone must sustain until detected (causes delay) */
|
||||
#define RX_QUAL_TIME 0.005 /* how long a quality measurement lasts after detecting a tone */
|
||||
|
@ -164,7 +164,7 @@ int dsp_init_transceiver(imts_t *imts, double squelch_db, int ptt)
|
|||
|
||||
/* delay buffer */
|
||||
if (ptt) {
|
||||
PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Push to talk: Adding delay buffer to remove noise when singal gets lost.\n");
|
||||
PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Push to talk: Adding delay buffer to remove noise when signal gets lost.\n");
|
||||
imts->delay_max = (int)((double)imts->sender.samplerate * DELAY_TIME);
|
||||
imts->delay_spl = calloc(imts->delay_max, sizeof(*imts->delay_spl));
|
||||
if (!imts->delay_spl) {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
*
|
||||
* There are call states defined by imts->state.
|
||||
* imts_receive_tone() is called whenever a tone/silence/noise is detected.
|
||||
* imts_lost_tone() is calles as soon as (only) a tone is gone.
|
||||
* imts_lost_tone() is calls as soon as (only) a tone is gone.
|
||||
* imts_timeout() is called when the timer has timed out.
|
||||
* All these callbacks are used to process the call setup and disconnect.
|
||||
* The imts_timeout() function will not only handle failures due to timeouts,
|
||||
|
@ -532,7 +532,7 @@ void imts_signal_indication(imts_t *imts)
|
|||
{
|
||||
/* setup a call from mobile to base station */
|
||||
if (imts->mode == MODE_MTS && imts->state == IMTS_IDLE) {
|
||||
PDEBUG_CHAN(DIMTS, DEBUG_INFO, "Detectes RF signal in IDLE mode, calling the opterator at '%s'.\n", imts->operator);
|
||||
PDEBUG_CHAN(DIMTS, DEBUG_INFO, "Detects RF signal in IDLE mode, calling the opterator at '%s'.\n", imts->operator);
|
||||
imts->callref = call_up_setup(NULL, imts->operator, OSMO_CC_NETWORK_MTS_NONE, "");
|
||||
imts_new_state(imts, IMTS_CONVERSATION);
|
||||
imts_set_dsp_mode(imts, DSP_MODE_AUDIO, 0, 0.0, 0);
|
||||
|
|
|
@ -69,9 +69,9 @@ void print_help(const char *arg0)
|
|||
printf(" To compensate audio processing latency, give delay when to respond,\n");
|
||||
printf(" after detection of Guard tone from mobile phone.\n");
|
||||
printf(" Run software in loopback mode '-l 2' to measure round trip delay.\n");
|
||||
printf(" Substract delay from 350 ms. If the phone has different Guard tone\n");
|
||||
printf(" length, substract from that value.\n");
|
||||
printf(" -D --detector-test <idle length> <seize lenght> <silence length>\n");
|
||||
printf(" Subtract delay from 350 ms. If the phone has different Guard tone\n");
|
||||
printf(" length, subtract from that value.\n");
|
||||
printf(" -D --detector-test <idle length> <seize length> <silence length>\n");
|
||||
printf(" Transmit detector test signal, to adjust decoder inside mobile phone.\n");
|
||||
printf(" Give length of idle / seize and silence in seconds. Listen to it with\n");
|
||||
printf(" a radio receiver. To exclude an element, set its length to '0'.\n");
|
||||
|
@ -84,7 +84,7 @@ void print_help(const char *arg0)
|
|||
printf(" Because there is no dial on the mobile phone, operator assistance is\n");
|
||||
printf(" required to complete the call.\n");
|
||||
printf(" By default, the operator '%s' is dialed.\n", operator);
|
||||
printf(" -D --detector-test <600 Hz length> <1500 Hz lenght> <silence length>\n");
|
||||
printf(" -D --detector-test <600 Hz length> <1500 Hz length> <silence length>\n");
|
||||
printf(" Transmit detector test signal, to adjust decoder inside MTS phone.\n");
|
||||
printf(" Give length of 600/1500 Hz and silence in seconds. Listen to it with\n");
|
||||
printf(" a radio receiver. To exclude an element, set its length to '0'.\n");
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
* OUT-VERIFY Outgoing call, digits are repeated
|
||||
* CALL Active call
|
||||
* CALL-DIALING User is dialing during call
|
||||
* IN-PAGING Incomming call, user is paged
|
||||
* IN-PAGING Incoming call, user is paged
|
||||
* RELEASED Fixed network released call
|
||||
*
|
||||
* Timers:
|
||||
|
|
|
@ -332,7 +332,7 @@ void display_measurements_update(dispmeasparam_t *param, double value, double va
|
|||
param->value_count++;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Paramer '%s' has unknown type %d, please fix!\n", param->name, param->type);
|
||||
fprintf(stderr, "Parameter '%s' has unknown type %d, please fix!\n", param->name, param->type);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ int init_emphasis(emphasis_t *state, int samplerate, double cut_off, double cut_
|
|||
|
||||
/* do not pre-emphasis above CUT_OFF_L
|
||||
* Mobile network specifications want -18 dB per octave.
|
||||
* With two interations we have 24 dB, - 6 dB (from emphasis). */
|
||||
* With two iterations we have 24 dB, - 6 dB (from emphasis). */
|
||||
iir_lowpass_init(&state->p.lp, cut_off_l, samplerate, 2);
|
||||
|
||||
/* calibrate amplification to be neutral at 1000 Hz */
|
||||
|
|
|
@ -181,7 +181,7 @@ void fir_process(fir_filter_t *fir, sample_t *samples, int num)
|
|||
/* convolve samples */
|
||||
y = 0;
|
||||
for (j = 0; j < fir->ntaps; j++) {
|
||||
/* convolve sample from ring buffer, starting with oldes */
|
||||
/* convolve sample from ring buffer, starting with oldest */
|
||||
y += fir->buffer[fir->buffer_pos] * fir->taps[j];
|
||||
if (++fir->buffer_pos == fir->ntaps)
|
||||
fir->buffer_pos = 0;
|
||||
|
|
|
@ -72,7 +72,7 @@ int fm_mod_init(fm_mod_t *mod, double samplerate, double offset, double amplitud
|
|||
int i;
|
||||
|
||||
if (!has_init) {
|
||||
fprintf(stderr, "libfm was not initialized, plese fix!\n");
|
||||
fprintf(stderr, "libfm was not initialized, please fix!\n");
|
||||
abort();
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ again:
|
|||
int fm_demod_init(fm_demod_t *demod, double samplerate, double offset, double bandwidth)
|
||||
{
|
||||
if (!has_init) {
|
||||
fprintf(stderr, "libfm was not initialized, plese fix!\n");
|
||||
fprintf(stderr, "libfm was not initialized, please fix!\n");
|
||||
abort();
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ int fsk_mod_init(fsk_mod_t *fsk, void *inst, int (*send_bit)(void *inst), int sa
|
|||
fsk->cycles_per_bit65536[1] = waves * 65536.0;
|
||||
}
|
||||
|
||||
/* if filter is enabled, add a band pass filter to smoot the spectrum of the tones
|
||||
/* if filter is enabled, add a band pass filter to smooth the spectrum of the tones
|
||||
* the bandwidth is twice the difference between f0 and f1
|
||||
*/
|
||||
if (filter) {
|
||||
|
|
|
@ -16,7 +16,7 @@ typedef struct fsk_mod {
|
|||
int tx_bit; /* current transmitting bit (-1 if not set) */
|
||||
double tx_bitpos; /* current transmit position in bit */
|
||||
int filter; /* set, if filters are used */
|
||||
iir_filter_t lp[2]; /* filter to smoot transmission spectrum */
|
||||
iir_filter_t lp[2]; /* filter to smooth transmission spectrum */
|
||||
} fsk_mod_t;
|
||||
|
||||
typedef struct fsk_demod {
|
||||
|
|
|
@ -532,7 +532,7 @@ dial_after_hangup:
|
|||
fflush(stdout);
|
||||
}
|
||||
|
||||
/* get keys from keyboad to control call via console
|
||||
/* get keys from keyboard to control call via console
|
||||
* returns 1 on exit (ctrl+c) */
|
||||
void process_console(int c)
|
||||
{
|
||||
|
@ -588,7 +588,7 @@ void process_console(int c)
|
|||
/* put samples into ring buffer */
|
||||
for (i = 0; i < count; i++) {
|
||||
console.tx_buffer[console.tx_buffer_pos] = samples[i];
|
||||
/* if ring buffer wrapps, deliver data down to call process */
|
||||
/* if ring buffer wraps, deliver data down to call process */
|
||||
if (++console.tx_buffer_pos == 160) {
|
||||
console.tx_buffer_pos = 0;
|
||||
/* only if we have a call */
|
||||
|
|
|
@ -143,7 +143,7 @@ void main_mobile_print_help(const char *arg0, const char *ext_usage)
|
|||
printf(" at least one control channel and two voice channels. Alternatively\n");
|
||||
printf(" use one combined control+voice channel and one voice channels.\n");
|
||||
printf(" -o --osmocc-sock\n");
|
||||
printf(" Disable built-in call contol and offer socket\n");
|
||||
printf(" Disable built-in call control and offer socket\n");
|
||||
printf(" --cc \"<osmo-cc arg>\" [--cc ...]\n");
|
||||
printf(" Pass arguments to Osmo-CC endpoint. Use '-cc help' for description.\n");
|
||||
printf(" -t --tones 0 | 1\n");
|
||||
|
@ -152,7 +152,7 @@ void main_mobile_print_help(const char *arg0, const char *ext_usage)
|
|||
printf(" -l --loopback <type>\n");
|
||||
printf(" Loopback test: 1 = internal | 2 = external | 3 = echo\n");
|
||||
printf(" -r --realtime <prio>\n");
|
||||
printf(" Set prio: 0 to diable, 99 for maximum (default = %d)\n", rt_prio);
|
||||
printf(" Set prio: 0 to disable, 99 for maximum (default = %d)\n", rt_prio);
|
||||
printf(" --fast-math\n");
|
||||
printf(" Use fast math approximation for slow CPU / ARM based systems.\n");
|
||||
printf(" --write-rx-wave <file>\n");
|
||||
|
|
|
@ -295,7 +295,7 @@ void sender_set_fm(sender_t *sender, double max_deviation, double max_modulation
|
|||
sender->speech_deviation = speech_deviation;
|
||||
sender->max_display = max_display;
|
||||
|
||||
PDEBUG_CHAN(DSENDER, DEBUG_DEBUG, "Maxium deviation: %.1f kHz, Maximum modulation: %.1f kHz\n", max_deviation / 1000.0, max_modulation / 1000.0);
|
||||
PDEBUG_CHAN(DSENDER, DEBUG_DEBUG, "Maximum deviation: %.1f kHz, Maximum modulation: %.1f kHz\n", max_deviation / 1000.0, max_modulation / 1000.0);
|
||||
PDEBUG_CHAN(DSENDER, DEBUG_DEBUG, "Deviation at speech level: %.1f kHz\n", speech_deviation / 1000.0);
|
||||
}
|
||||
|
||||
|
|
|
@ -846,7 +846,7 @@ static int ack_msg(mtp_t *mtp, uint8_t bsn)
|
|||
{
|
||||
struct mtp_msg *msg = mtp->tx_queue, *temp;
|
||||
|
||||
/* search for frame that has been tranmitted and acked */
|
||||
/* search for frame that has been transmitted and acked */
|
||||
while (msg) {
|
||||
/* is not transmitted, we are done */
|
||||
if (!msg->transmitted) {
|
||||
|
@ -916,13 +916,13 @@ static void mtp_receive_lssu(mtp_t *mtp, uint8_t fsn, uint8_t bib, uint8_t statu
|
|||
handle_event(mtp, MTP_PRIM_SIO, NULL, 0);
|
||||
break;
|
||||
case STATUS_N:
|
||||
/* Adopt intial sequence numbers: SAE does, so do we */
|
||||
/* Adopt initial sequence numbers: SAE does, so do we */
|
||||
mtp->rx_seq = fsn;
|
||||
mtp->fib = bib;
|
||||
handle_event(mtp, MTP_PRIM_SIN, NULL, 0);
|
||||
break;
|
||||
case STATUS_E:
|
||||
/* Adopt intial sequence numbers: SAE does, so do we */
|
||||
/* Adopt initial sequence numbers: SAE does, so do we */
|
||||
mtp->rx_seq = fsn;
|
||||
mtp->fib = bib;
|
||||
handle_event(mtp, MTP_PRIM_SIE, NULL, 0);
|
||||
|
@ -964,7 +964,7 @@ static void mtp_receive_fisu(mtp_t *mtp, uint8_t bsn, uint8_t bib, uint8_t fsn,
|
|||
/* if the FSN is different and received FIB equals last BIB sent */
|
||||
if (fsn != mtp->rx_seq && fib == mtp->bib) {
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, " -> Send nack, because we missed a frame and FIB equals last transmitted BIB.\n");
|
||||
/* shedule NACK */
|
||||
/* schedule NACK */
|
||||
mtp->tx_nack = 1;
|
||||
}
|
||||
}
|
||||
|
@ -1017,7 +1017,7 @@ static void mtp_receive_msu(mtp_t *mtp, uint8_t bsn, uint8_t bib, uint8_t fsn, u
|
|||
/* iii) if sequence number is not equal and not one more than the last received,
|
||||
* a NACK is sent, if FIB equals last BIB */
|
||||
if (fib == mtp->bib) {
|
||||
/* shedule NACK */
|
||||
/* schedule NACK */
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, " -> Send nack, because we missed a frame and FIB equals last transmitted BIB.\n");
|
||||
mtp->tx_nack = 1;
|
||||
} else
|
||||
|
@ -1101,9 +1101,9 @@ static int mtp_receive_frame(mtp_t *mtp, uint8_t *data, int len)
|
|||
}
|
||||
|
||||
if (len == 1)
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, "Receiving LSSU (lentgh = %d) with status flag 0x%02x (%s)\n", len, data[3], mtp_sf_names[data[3] & 0x7]);
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, "Receiving LSSU (length = %d) with status flag 0x%02x (%s)\n", len, data[3], mtp_sf_names[data[3] & 0x7]);
|
||||
if (len == 2)
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, "Receiving LSSU (lentgh = %d) with status flag 0x%04x (%s)\n", len, data[3] | (data[4] << 8), mtp_sf_names[data[3] & 0x7]);
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, "Receiving LSSU (length = %d) with status flag 0x%04x (%s)\n", len, data[3] | (data[4] << 8), mtp_sf_names[data[3] & 0x7]);
|
||||
if (len == 1 || len == 2) {
|
||||
/* receive LSSU */
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, " -> FSN %d, FIB %d, BSN %d, BIB %d\n", fsn, fib, bsn, bib);
|
||||
|
@ -1138,7 +1138,7 @@ uint8_t mtp_send_bit(mtp_t *mtp)
|
|||
/* start frame after flag */
|
||||
if (++mtp->tx_bit_count == 8) {
|
||||
mtp->tx_bit_count = 0;
|
||||
/* continously send flag when power off */
|
||||
/* continuously send flag when power off */
|
||||
if (mtp->l2_state == MTP_L2STATE_POWER_OFF)
|
||||
return bit;
|
||||
mtp->tx_byte_count = 0;
|
||||
|
@ -1242,7 +1242,7 @@ void mtp_receive_bit(mtp_t *mtp, uint8_t bit)
|
|||
{
|
||||
int rc;
|
||||
|
||||
/* octect counting */
|
||||
/* octet counting */
|
||||
if (mtp->rx_octet_counting) {
|
||||
if (++mtp->rx_octet_count == 8 * N) {
|
||||
/* octet counter hits */
|
||||
|
@ -1267,7 +1267,7 @@ void mtp_receive_bit(mtp_t *mtp, uint8_t bit)
|
|||
mtp_monitor(mtp, MONITOR_GOOD);
|
||||
}
|
||||
if (rc == 0 && mtp->rx_octet_counting) {
|
||||
/* stop octect counting */
|
||||
/* stop octet counting */
|
||||
PDEBUG_CHAN(DMTP2, DEBUG_DEBUG, "Stop Octet counting, due to correctly received frame\n");
|
||||
mtp->rx_octet_counting = 0;
|
||||
}
|
||||
|
|
|
@ -960,7 +960,7 @@ static int osmo_cc_handle_endpoint(osmo_cc_endpoint_t *ep)
|
|||
}
|
||||
|
||||
/* main handler
|
||||
* note that it must be called in a loop (with ohter handlers) until no work was done
|
||||
* note that it must be called in a loop (with other handlers) until no work was done
|
||||
*/
|
||||
int osmo_cc_handle(void)
|
||||
{
|
||||
|
@ -1071,7 +1071,7 @@ static void osmo_cc_help_address(void)
|
|||
printf("remote [<IPv6 address>]:<port>\n\n");
|
||||
|
||||
printf("These options can be used to define local and remote IP and port for the socket\n");
|
||||
printf("interface. Note that IPv6 adresses must be enclosed by '[' and ']'.\n\n");
|
||||
printf("interface. Note that IPv6 addresses must be enclosed by '[' and ']'.\n\n");
|
||||
|
||||
printf("If no local address was given, the IPv4 loopback IP and port %d is used. If\n", OSMO_CC_DEFAULT_PORT);
|
||||
printf("this port is already in use, the first free higher port is used.\n\n");
|
||||
|
|
|
@ -109,7 +109,7 @@ osmo_cc_msg_t *osmo_cc_new_msg(uint8_t msg_type)
|
|||
PDEBUG(DCC, DEBUG_ERROR, "No memory\n");
|
||||
abort();
|
||||
}
|
||||
/* set message type and zero lentgh */
|
||||
/* set message type and zero length */
|
||||
msg->type = msg_type;
|
||||
msg->length_networkorder = htons(0);
|
||||
|
||||
|
@ -831,7 +831,7 @@ int osmo_cc_get_ie_sdp(osmo_cc_msg_t *msg, int ie_repeat, char *sdp, size_t sdp_
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* helper to encode socket addresss */
|
||||
/* helper to encode socket address */
|
||||
void osmo_cc_add_ie_socket_address(osmo_cc_msg_t *msg, const char *address)
|
||||
{
|
||||
struct osmo_cc_ie_socket_address *ie_socket_address;
|
||||
|
@ -840,7 +840,7 @@ void osmo_cc_add_ie_socket_address(osmo_cc_msg_t *msg, const char *address)
|
|||
memcpy(ie_socket_address->address, address, strlen(address));
|
||||
}
|
||||
|
||||
/* helper to decode socket addresss */
|
||||
/* helper to decode socket address */
|
||||
int osmo_cc_get_ie_socket_address(osmo_cc_msg_t *msg, int ie_repeat, char *address, size_t address_size)
|
||||
{
|
||||
struct osmo_cc_ie_socket_address *ie_socket_address;
|
||||
|
|
|
@ -223,7 +223,7 @@ enum osmo_cc_ie_type {
|
|||
#define OSMO_CC_DTMF_MODE_ON 1 /* start tone */
|
||||
#define OSMO_CC_DTMF_MODE_DIGITS 2 /* play tone(s) with duration and pauses */
|
||||
|
||||
#define OSMO_CC_SOCKET_CAUSE_VERSION_MISMATCH 1 /* version missmatch */
|
||||
#define OSMO_CC_SOCKET_CAUSE_VERSION_MISMATCH 1 /* version mismatch */
|
||||
#define OSMO_CC_SOCKET_CAUSE_FAILED 2 /* connection failed */
|
||||
#define OSMO_CC_SOCKET_CAUSE_BROKEN_PIPE 3 /* connected socket failed */
|
||||
#define OSMO_CC_SOCKET_CAUSE_TIMEOUT 4 /* keepalive packets timeout */
|
||||
|
|
|
@ -141,7 +141,7 @@ char *osmo_cc_session_gensdp(osmo_cc_session_t *session)
|
|||
return sdp;
|
||||
}
|
||||
|
||||
/* seperate a word from string that is delimited with one or more space characters */
|
||||
/* separate a word from string that is delimited with one or more space characters */
|
||||
static char *wordsep(char **text_p)
|
||||
{
|
||||
char *text = *text_p;
|
||||
|
|
|
@ -470,7 +470,7 @@ static int osmo_cc_session_negotiate(osmo_cc_session_t *session_local, struct os
|
|||
|
||||
PDEBUG(DCC, DEBUG_DEBUG, "Negotiating session.\n");
|
||||
|
||||
/* copy remote session infromation */
|
||||
/* copy remote session information */
|
||||
session_local->origin_remote.username = strdup(session_remote->origin_remote.username);
|
||||
session_local->origin_remote.sess_id = strdup(session_remote->origin_remote.sess_id);
|
||||
session_local->origin_remote.sess_version = strdup(session_remote->origin_remote.sess_version);
|
||||
|
|
|
@ -442,7 +442,7 @@ static int transmit_conn(osmo_cc_conn_t *conn)
|
|||
|
||||
/* start TX keepalive timeer, if not already
|
||||
* because we stop at every message above, we actually restart the timer here.
|
||||
* only if there is no message for the amout of time, the timer fires.
|
||||
* only if there is no message for the amount of time, the timer fires.
|
||||
*/
|
||||
if (!timer_running(&conn->tx_keepalive_timer))
|
||||
timer_start(&conn->tx_keepalive_timer, OSMO_CC_SOCKET_TX_KEEPALIVE);
|
||||
|
|
|
@ -81,7 +81,7 @@ int samplerate_downsample(samplerate_t *state, sample_t *samples, int input_num)
|
|||
|
||||
/* remove number of input samples from index */
|
||||
in_index -= (double)input_num;
|
||||
/* in_index cannot be negative, excpet due to rounding error, so... */
|
||||
/* in_index cannot be negative, except due to rounding error, so... */
|
||||
if ((int)in_index < 0)
|
||||
in_index = 0.0;
|
||||
|
||||
|
@ -137,7 +137,7 @@ int samplerate_upsample(samplerate_t *state, sample_t *input, int input_num, sam
|
|||
|
||||
/* remove number of input samples from index */
|
||||
in_index -= (double)input_num;
|
||||
/* in_index cannot be negative, excpet due to rounding error, so... */
|
||||
/* in_index cannot be negative, except due to rounding error, so... */
|
||||
if ((int)in_index < 0)
|
||||
in_index = 0.0;
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ void *sdr_open(const char __attribute__((__unused__)) *audiodev, double *tx_freq
|
|||
sdr->amplitude = 1.0 / (double)channels;
|
||||
sdr->samplerate = samplerate;
|
||||
sdr->latspl = latspl;
|
||||
sdr->threads = threads; /* always requried, because write may block */
|
||||
sdr->threads = threads; /* always required, because write may block */
|
||||
sdr->oversample = oversample;
|
||||
|
||||
if (threads) {
|
||||
|
|
|
@ -80,7 +80,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
|||
error = uhd_string_vector_make(&clocks);
|
||||
if (error) {
|
||||
clock_vector_error:
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to hande UHD vector, please fix!\n");
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to handle UHD vector, please fix!\n");
|
||||
uhd_close();
|
||||
return -EIO;
|
||||
}
|
||||
|
@ -139,7 +139,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
|||
error = uhd_string_vector_make(&antennas);
|
||||
if (error) {
|
||||
tx_vector_error:
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to hande UHD vector, please fix!\n");
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to handle UHD vector, please fix!\n");
|
||||
uhd_close();
|
||||
return -EIO;
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
|||
tune_request.args = strdup(_tune_args);
|
||||
error = uhd_usrp_set_tx_freq(usrp, &tune_request, channel, &tune_result);
|
||||
if (error) {
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to set TX frequeny to %.0f Hz\n", tx_frequency);
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to set TX frequency to %.0f Hz\n", tx_frequency);
|
||||
uhd_close();
|
||||
return -EIO;
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
|||
error = uhd_string_vector_make(&antennas);
|
||||
if (error) {
|
||||
rx_vector_error:
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to hande UHD vector, please fix!\n");
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to handle UHD vector, please fix!\n");
|
||||
uhd_close();
|
||||
return -EIO;
|
||||
}
|
||||
|
@ -437,7 +437,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
|||
tune_request.args = strdup(_tune_args);
|
||||
error = uhd_usrp_set_rx_freq(usrp, &tune_request, channel, &tune_result);
|
||||
if (error) {
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to set RX frequeny to %.0f Hz\n", rx_frequency);
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to set RX frequency to %.0f Hz\n", rx_frequency);
|
||||
uhd_close();
|
||||
return -EIO;
|
||||
}
|
||||
|
|
|
@ -60,12 +60,12 @@ serial_t *serial_open(const char *serial_device, int serial_baud, int serial_dat
|
|||
|
||||
if (serial_databits < 5 || serial_databits > 8) {
|
||||
serial_errno = -EINVAL;
|
||||
serial_errnostr = "Only 5 trough 8 stopbits supported.";
|
||||
serial_errnostr = "Only 5 through 8 stopbits supported.";
|
||||
return NULL;
|
||||
}
|
||||
if (serial_stopbits < 1 || serial_stopbits > 2) {
|
||||
serial_errno = -EINVAL;
|
||||
serial_errnostr = "Only 1 trough 2 stopbits supported.";
|
||||
serial_errnostr = "Only 1 through 2 stopbits supported.";
|
||||
return NULL;
|
||||
}
|
||||
if (serial_xonxoff !='e' && serial_xonxoff != 'd') {
|
||||
|
@ -201,7 +201,7 @@ serial_t *serial_open(const char *serial_device, int serial_baud, int serial_dat
|
|||
free(serial);
|
||||
} else {
|
||||
serial_errno = -ENOMEM;
|
||||
serial_errnostr = "not enougth memory for handle";
|
||||
serial_errnostr = "not enough memory for handle";
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -227,7 +227,7 @@ void serial_close(serial_t *serial)
|
|||
/*
|
||||
read = serial_read(serial, &buffer, size);
|
||||
|
||||
reads until buffer "size" has reached or until timeout has occured.
|
||||
reads until buffer "size" has reached or until timeout has occurred.
|
||||
"read" gives the number of bytes read.
|
||||
*/
|
||||
|
||||
|
@ -251,7 +251,7 @@ int serial_read(serial_t *serial, uint8_t *buffer, int size)
|
|||
/*
|
||||
wrote = serial_write(serial, &buffer, size);
|
||||
|
||||
writes until buffer "size" has reached or until timeout has occured.
|
||||
writes until buffer "size" has reached or until timeout has occurred.
|
||||
"wrote" gives the number of bytes written.
|
||||
*/
|
||||
|
||||
|
|
|
@ -384,7 +384,7 @@ int sound_read(void *inst, sample_t **samples, int num, int channels, double *rf
|
|||
int in, rc;
|
||||
int i, ii;
|
||||
|
||||
/* make valgrind happy, because snd_pcm_readi() does not seem to initally fill buffer with values */
|
||||
/* make valgrind happy, because snd_pcm_readi() does not seem to initially fill buffer with values */
|
||||
memset(buff, 0, sizeof(buff));
|
||||
|
||||
/* get samples in rx buffer */
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* Based on orignal Scrambler code from SIT-Rom:
|
||||
/* Based on original Scrambler code from SIT-Rom:
|
||||
|
||||
r6 already has input bit at position 0.
|
||||
r6 (low) and r7 (high) are the shift register.
|
||||
|
|
|
@ -451,13 +451,13 @@ static void dms_rx_dt(nmt_t *nmt, uint8_t d, uint8_t s, uint8_t n, uint8_t *data
|
|||
|
||||
if (dms->state.dir != d && !dms_allow_loopback) {
|
||||
/* drop frames with wrong direction indicator */
|
||||
PDEBUG(DDMS, DEBUG_INFO, "DMS frame ignored, direction indicator missmatch!\n");
|
||||
PDEBUG(DDMS, DEBUG_INFO, "DMS frame ignored, direction indicator mismatch!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (dms->state.n_r != n) {
|
||||
/* ignore out of sequence frames */
|
||||
PDEBUG(DDMS, DEBUG_DEBUG, "DMS frame number missmatch (due to resending)\n");
|
||||
PDEBUG(DDMS, DEBUG_DEBUG, "DMS frame number mismatch (due to resending)\n");
|
||||
} else {
|
||||
PDEBUG(DDMS, DEBUG_INFO, "Received valid DMS frame: %s\n", print_ct_dt(s, n, data, dms->state.eight_bits));
|
||||
|
||||
|
@ -526,7 +526,7 @@ static void dms_rx_rr(nmt_t *nmt, uint8_t d, uint8_t s, uint8_t n)
|
|||
|
||||
if (dms->state.dir != d && !dms_allow_loopback) {
|
||||
/* drop frames with wrong direction indicator */
|
||||
PDEBUG(DDMS, DEBUG_INFO, "DMS frame ignored, direction indicator missmatch!\n");
|
||||
PDEBUG(DDMS, DEBUG_INFO, "DMS frame ignored, direction indicator mismatch!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -539,7 +539,7 @@ static void dms_rx_rr(nmt_t *nmt, uint8_t d, uint8_t s, uint8_t n)
|
|||
dms_frame = dms_frame->next;
|
||||
}
|
||||
|
||||
/* if we don't find a frame, it must have been already acked, so we igore RR */
|
||||
/* if we don't find a frame, it must have been already acked, so we ignore RR */
|
||||
if (!dms_frame || i == 4) {
|
||||
PDEBUG(DDMS, DEBUG_DEBUG, "Received already acked DMS frame: RR(%d) (s = %d), ignoring\n", n, s);
|
||||
return;
|
||||
|
@ -581,7 +581,7 @@ static void dms_rx_nr(nmt_t *nmt, uint8_t d, uint8_t s, uint8_t n)
|
|||
|
||||
if (dms->state.dir != d && !dms_allow_loopback) {
|
||||
/* drop frames with wrong direction indicator */
|
||||
PDEBUG(DDMS, DEBUG_INFO, "DMS frame ignored, direction indicator missmatch!\n");
|
||||
PDEBUG(DDMS, DEBUG_INFO, "DMS frame ignored, direction indicator mismatch!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -713,7 +713,7 @@ void fsk_receive_bit_dms(nmt_t *nmt, int bit, double quality, double level)
|
|||
if (dms->rx_bit_count == 9) {
|
||||
dms->rx_bit_count = 0;
|
||||
if (dms->rx_frame[0] != dms->rx_frame[1]) {
|
||||
PDEBUG(DDMS, DEBUG_DEBUG, "Repeated DMS label missmatches!\n");
|
||||
PDEBUG(DDMS, DEBUG_DEBUG, "Repeated DMS label mismatches!\n");
|
||||
dms->rx_in_sync = 0;
|
||||
return;
|
||||
}
|
||||
|
@ -750,7 +750,7 @@ void fsk_receive_bit_dms(nmt_t *nmt, int bit, double quality, double level)
|
|||
* calls from upper layer
|
||||
*/
|
||||
|
||||
/* recive data from upper layer to be sent as DT frames
|
||||
/* receive data from upper layer to be sent as DT frames
|
||||
* the DT frames are generated */
|
||||
void dms_send(nmt_t *nmt, const uint8_t *data, int length, int eight_bits)
|
||||
{
|
||||
|
|
|
@ -305,7 +305,7 @@ static struct nmt_frame {
|
|||
{ NMT_MESSAGE_2b, "NNNPYYZXXXXXXnnn", MTX_TO_MS, 12, "2b", "Traffic channel allocation on calling channel" },
|
||||
{ NMT_MESSAGE_2c, "NNNPYYZXXXXXXHHH", MTX_TO_MS, 12, "2c", "Queueing information to MS with priority on calling channel" },
|
||||
{ NMT_MESSAGE_2d, "NNNPYYZXXXXXXHHH", MTX_TO_MS, 12, "2d", "Traffic channel scanning order on calling channel" },
|
||||
{ NMT_MESSAGE_2e, "NNNPYYZXXXXXXHHH", MTX_TO_MS, 4, "2e", "Alternative type of call to MS on combinded CC/TC" },
|
||||
{ NMT_MESSAGE_2e, "NNNPYYZXXXXXXHHH", MTX_TO_MS, 4, "2e", "Alternative type of call to MS on combined CC/TC" },
|
||||
{ NMT_MESSAGE_2f, "NNNPYYZXXXXXXHHH", MTX_TO_MS, 12, "2f", "Queuing information to ordinary MS" },
|
||||
{ NMT_MESSAGE_3a, "NNNPYYZXXXXXXnnn", MTX_TO_MS, 5, "3a", "Traffic channel allocation on traffic channel" },
|
||||
{ NMT_MESSAGE_3b, "NNNPYYZXXXXXXHHH", MTX_TO_MS, 5, "3b", "Identity request on traffic channel" },
|
||||
|
@ -829,7 +829,7 @@ int init_frame(void)
|
|||
|
||||
/* check if all digits actually exist */
|
||||
for (i = 0; nmt_frame[i].digits; i++) {
|
||||
/* check mesage type */
|
||||
/* check message type */
|
||||
if ((int)nmt_frame[i].message_type != i) {
|
||||
PDEBUG(DFRAME, DEBUG_ERROR, "Message type at message index #%d does not have a value of %d, but has %d, please fix!\n", i, i + 1, nmt_frame[i].message_type);
|
||||
return -1;
|
||||
|
|
|
@ -61,7 +61,7 @@ void print_help(const char *arg0)
|
|||
main_mobile_print_help(arg0, "[-N 900] -Y <traffic area> | list [-I 1] [-0 1] ");
|
||||
/* - - */
|
||||
printf(" -N --nmt-system 450/900\n");
|
||||
printf(" Give NMT type as first paramer. (default = '%d')\n", nmt_system);
|
||||
printf(" Give NMT type as first parameter. (default = '%d')\n", nmt_system);
|
||||
printf(" Note: This option must be given at first!\n");
|
||||
printf(" -T --channel-type <channel type> | list\n");
|
||||
printf(" Give channel type, use 'list' to get a list. (default = '%s')\n", chan_type_short_name(nmt_system, chan_type[0]));
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
* After timeout, all channels with that transaction pointer are released.
|
||||
*
|
||||
* When paging was replied, other channels with the transaction pointer are
|
||||
* relased, but the channel with the reply is linked to transaction in both
|
||||
* released, but the channel with the reply is linked to transaction in both
|
||||
* directions. (trans->nmt points to nmt, nmt->trans points to trans)
|
||||
*
|
||||
*/
|
||||
|
|
|
@ -453,7 +453,7 @@ static int decode_sms_submit(nmt_t *nmt, const uint8_t *data, int length)
|
|||
/* decode orig address */
|
||||
char orig_address[orig_digits + 1];
|
||||
decode_address(orig_data, orig_digits, orig_address);
|
||||
PDEBUG(DSMS, DEBUG_DEBUG, "Decoded originating addess: '%s'\n", orig_address);
|
||||
PDEBUG(DSMS, DEBUG_DEBUG, "Decoded originating address: '%s'\n", orig_address);
|
||||
|
||||
/* go into TP */
|
||||
data = tpdu_data;
|
||||
|
@ -500,7 +500,7 @@ static int decode_sms_submit(nmt_t *nmt, const uint8_t *data, int length)
|
|||
length -= 2 + dest_len;
|
||||
char dest_address[dest_digits + 1];
|
||||
decode_address(dest_data, dest_digits, dest_address);
|
||||
PDEBUG(DSMS, DEBUG_DEBUG, "Decoded destination addess: '%s'\n", dest_address);
|
||||
PDEBUG(DSMS, DEBUG_DEBUG, "Decoded destination address: '%s'\n", dest_address);
|
||||
|
||||
/* skip above protocol identifier */
|
||||
if (length < 1) {
|
||||
|
|
|
@ -445,7 +445,7 @@ static int dissassemble_frame(frame_t *frame, const uint8_t *message, int num)
|
|||
|
||||
PDEBUG(DFRAME, DEBUG_DEBUG, "Decoding frame %s %s\n", r2000_dir_name(dir), r2000_frame_name(frame->message, dir));
|
||||
|
||||
/* dissassemble elements elements */
|
||||
/* disassemble elements elements */
|
||||
value = 0;
|
||||
for (i = 0; i < num; i++) {
|
||||
value = (value << 1) | ((message[i / 8] >> (7 - (i & 7))) & 1);
|
||||
|
|
|
@ -345,7 +345,7 @@ int main(int argc, char *argv[])
|
|||
fprintf(stderr, "*******************************************************************************\n");
|
||||
fprintf(stderr, "I strongly suggest to let me do pre- and de-emphasis (options -p -d)!\n");
|
||||
fprintf(stderr, "Use a transmitter/receiver without emphasis and let me do that!\n");
|
||||
fprintf(stderr, "Because 50 baud supervisory signalling around 150 Hz will not be tranmitted by\n");
|
||||
fprintf(stderr, "Because 50 baud supervisory signalling around 150 Hz will not be transmitted by\n");
|
||||
fprintf(stderr, "regular radio, use direct input to the PLL of your transmitter (or use SDR).\n");
|
||||
fprintf(stderr, "*******************************************************************************\n");
|
||||
}
|
||||
|
|
|
@ -647,7 +647,7 @@ static r2000_t *move_call_to_chan(r2000_t *old_r2000, enum r2000_chan_type chan_
|
|||
* idle process
|
||||
*/
|
||||
|
||||
/* trasmit beacon */
|
||||
/* transmit beacon */
|
||||
static void tx_idle(r2000_t __attribute__((unused)) *r2000, frame_t *frame)
|
||||
{
|
||||
frame->voie = 1;
|
||||
|
@ -792,7 +792,7 @@ static void tx_ident(r2000_t *r2000, frame_t *frame)
|
|||
frame->sm_mor = r2000->subscriber.mor;
|
||||
|
||||
if (r2000->tx_frame_count == 1)
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Sending identity requrest\n");
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Sending identity request\n");
|
||||
}
|
||||
|
||||
/* receive identity response */
|
||||
|
@ -923,7 +923,7 @@ static void rx_alert(r2000_t *r2000, frame_t *frame)
|
|||
|
||||
switch (r2000->state) {
|
||||
case STATE_IN_ALERT:
|
||||
/* answer incomming call */
|
||||
/* answer incoming call */
|
||||
PDEBUG(DR2000, DEBUG_INFO, "Answer call to network.\n");
|
||||
call_up_answer(r2000->callref, subscriber2string(&r2000->subscriber));
|
||||
break;
|
||||
|
|
|
@ -22,16 +22,16 @@ enum r2000_state {
|
|||
STATE_IDLE, /* channel is not in use */
|
||||
STATE_INSCRIPTION, /* SM registers */
|
||||
STATE_OUT_ASSIGN, /* assign outgoing call on CC */
|
||||
STATE_IN_ASSIGN, /* assign incomming call on CC */
|
||||
STATE_IN_ASSIGN, /* assign incoming call on CC */
|
||||
STATE_RECALL_ASSIGN, /* assign outgoing recall on CC */
|
||||
STATE_OUT_IDENT, /* identity outgoing call on TC */
|
||||
STATE_IN_IDENT, /* identity incomming call on TC */
|
||||
STATE_IN_IDENT, /* identity incoming call on TC */
|
||||
STATE_RECALL_IDENT, /* identity outgoing recall on TC */
|
||||
STATE_OUT_DIAL1, /* dialing outgoing call on TC */
|
||||
STATE_OUT_DIAL2, /* dialing outgoing call on TC */
|
||||
STATE_SUSPEND, /* suspend after dialing outgoing call on TC */
|
||||
STATE_RECALL_WAIT, /* wait for calling back the phone */
|
||||
STATE_IN_ALERT, /* alerting incomming call on TC */
|
||||
STATE_IN_ALERT, /* alerting incoming call on TC */
|
||||
STATE_OUT_ALERT, /* alerting outgoing call on TC */
|
||||
STATE_RECALL_ALERT, /* alerting outgoing recall on TC */
|
||||
STATE_ACTIVE, /* channel is in use */
|
||||
|
|
|
@ -135,7 +135,7 @@ void print_help(const char *arg0)
|
|||
printf(" Give modulation index of amplitude modulated signal. (default %.0f)\n", modulation_index);
|
||||
printf(" -E --emphasis <uS> | 0\n");
|
||||
printf(" Use given time constant of pre- and de-emphasis for frequency\n");
|
||||
printf(" modulation. Give 0 to disbale emphasis. (default = %.0f uS)\n", time_constant_us);
|
||||
printf(" modulation. Give 0 to disable emphasis. (default = %.0f uS)\n", time_constant_us);
|
||||
printf(" VHF broadcast 50 uS in Europe and 75 uS in the United States.\n");
|
||||
printf(" Other radio FM should use 530 uS, to cover complete speech spectrum.\n");
|
||||
printf(" -V --volume %.3f\n", volume);
|
||||
|
|
|
@ -75,7 +75,7 @@ int radio_init(radio_t *radio, int latspl, int samplerate, double frequency, con
|
|||
radio->signal_bandwidth = bandwidth;
|
||||
break;
|
||||
case MODULATION_NONE:
|
||||
PDEBUG(DRADIO, DEBUG_ERROR, "Wrong modulation, plese fix!\n");
|
||||
PDEBUG(DRADIO, DEBUG_ERROR, "Wrong modulation, please fix!\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
@ -333,7 +333,7 @@ int radio_init(radio_t *radio, int latspl, int samplerate, double frequency, con
|
|||
goto error;
|
||||
}
|
||||
|
||||
/* termporary I/Q/carrier buffers, used while demodulating */
|
||||
/* temporary I/Q/carrier buffers, used while demodulating */
|
||||
radio->I_buffer = calloc(latspl, sizeof(*radio->I_buffer));
|
||||
radio->Q_buffer = calloc(latspl, sizeof(*radio->Q_buffer));
|
||||
radio->carrier_buffer = calloc(latspl, sizeof(*radio->carrier_buffer));
|
||||
|
@ -505,7 +505,7 @@ int radio_tx(radio_t *radio, float *baseband, int signal_num)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
PDEBUG(DRADIO, DEBUG_ERROR, "Wrong audio mode, plese fix!\n");
|
||||
PDEBUG(DRADIO, DEBUG_ERROR, "Wrong audio mode, please fix!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -740,7 +740,7 @@ int radio_rx(radio_t *radio, float *baseband, int signal_num)
|
|||
}
|
||||
#endif
|
||||
if (!radio->rx_audio_mode) {
|
||||
PDEBUG(DRADIO, DEBUG_ERROR, "Wrong audio mode, plese fix!\n");
|
||||
PDEBUG(DRADIO, DEBUG_ERROR, "Wrong audio mode, please fix!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ void print_help(const char *arg0)
|
|||
printf(" the default values are used. Values are always overwritten with card\n");
|
||||
printf(" data, if defined.\n");
|
||||
printf(" -F --futln <phone number>\n");
|
||||
printf(" Give 7 digits subsriber ID (default = '%s')\n", FUTLN_DEFAULT);
|
||||
printf(" Give 7 digits subscriber ID (default = '%s')\n", FUTLN_DEFAULT);
|
||||
printf(" --sicherung <security code>\n");
|
||||
printf(" Card's security code for simple authentication (default = '%s')\n", SICHERUNG_DEFAULT);
|
||||
printf(" --kartenkennung <card ID>\n");
|
||||
|
@ -246,7 +246,7 @@ int main_loop(serial_t *serial, int sniffer)
|
|||
*/
|
||||
if (!work) {
|
||||
cts = serial_cts(serial);
|
||||
/* initally AND when CTS becomes 1 (pulled to low by reset line) */
|
||||
/* initially AND when CTS becomes 1 (pulled to low by reset line) */
|
||||
if (last_cts != cts) {
|
||||
if (sniffer == 1)
|
||||
sniffer_reset(&sim_sniffer);
|
||||
|
|
|
@ -56,7 +56,7 @@ static void my_ultostr(char *nptr, uint32_t value, int zeros)
|
|||
digits++;
|
||||
}
|
||||
|
||||
/* minium digits to fill up with '0' */
|
||||
/* minimum digits to fill up with '0' */
|
||||
if (digits < zeros)
|
||||
digits = zeros;
|
||||
|
||||
|
@ -1044,7 +1044,7 @@ static void rx_sdu(sim_sim_t *sim, uint8_t *data, int length)
|
|||
}
|
||||
|
||||
/* unsupported message */
|
||||
PDEBUG(DSIM7, DEBUG_NOTICE, "CLA 0x%02x INS 0x%02x uknown\n", cla, ins);
|
||||
PDEBUG(DSIM7, DEBUG_NOTICE, "CLA 0x%02x INS 0x%02x unknown\n", cla, ins);
|
||||
data = alloc_msg(sim, 0);
|
||||
tx_sdu(sim, CCRC_ERROR, data, 0);
|
||||
}
|
||||
|
@ -1222,7 +1222,7 @@ static int rx_char(sim_sim_t *sim, uint8_t c)
|
|||
/* create layer 2 message for layer 1 */
|
||||
static void tx_block(sim_sim_t *sim, enum l2_cmd cmd, uint8_t __attribute__((unused)) *data, int length)
|
||||
{
|
||||
PDEBUG(DSIM2, DEBUG_INFO, "TX resonse\n");
|
||||
PDEBUG(DSIM2, DEBUG_INFO, "TX response\n");
|
||||
|
||||
/* header */
|
||||
sim->block_address = (sim->addr_dst << 4) | sim->addr_src;
|
||||
|
@ -1355,7 +1355,7 @@ void sim_reset(sim_sim_t *sim, int reset)
|
|||
int i;
|
||||
char pin[8];
|
||||
|
||||
PDEBUG(DSIM1, DEBUG_INFO, "Reset singnal %s\n", (reset) ? "on (low)" : "off (high)");
|
||||
PDEBUG(DSIM1, DEBUG_INFO, "Reset signal %s\n", (reset) ? "on (low)" : "off (high)");
|
||||
memset(sim, 0, sizeof(*sim));
|
||||
|
||||
if (reset)
|
||||
|
|
|
@ -84,7 +84,7 @@ void reset_init(uint8_t pin)
|
|||
out = portOutputRegister(port);
|
||||
reset_in = portInputRegister(port);
|
||||
|
||||
*mode &= ~reset_bit; /* intput */
|
||||
*mode &= ~reset_bit; /* input */
|
||||
*out |= reset_bit; /* pullup */
|
||||
}
|
||||
#endif
|
||||
|
@ -178,7 +178,7 @@ void setup() {
|
|||
pinMode(STATUS_LED, OUTPUT);
|
||||
#endif
|
||||
|
||||
/* intial eeprom init */
|
||||
/* initial eeprom init */
|
||||
byte = eeprom_read(EEPROM_MAGIC + 0);
|
||||
ver = eeprom_read(EEPROM_MAGIC + 1);
|
||||
if (byte != 'C' || ver != '0' + EEPROM_VERSION)
|
||||
|
@ -261,7 +261,7 @@ tx_again:
|
|||
/* perform RX, when low (start bit) */
|
||||
if (!(*serial_in & serial_bit)) {
|
||||
c = serial_rx();
|
||||
/* if block was completly received, go to tx_again */
|
||||
/* if block was completely received, go to tx_again */
|
||||
if (sim_rx(&sim, c) < 0)
|
||||
goto tx_again;
|
||||
/* start counting timeout condition */
|
||||
|
|
|
@ -133,7 +133,7 @@ static void rx_icl_sdu(uint8_t *data, int length)
|
|||
case CLA_AUTO:
|
||||
switch (ins_aprc) {
|
||||
case AUT_1:
|
||||
PDEBUG(DSIM7, DEBUG_INFO, " -> AUTO-1 (Autorization)\n");
|
||||
PDEBUG(DSIM7, DEBUG_INFO, " -> AUTO-1 (Authorization)\n");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -104,7 +104,7 @@ int main(void)
|
|||
/* note at position 6 we have no more change towards 8 bit offset */
|
||||
ret = check_repetition(data, len, 8, 6);
|
||||
if (ret) {
|
||||
printf("Theres is a change of repetition after %d bits after start %d, please fix!\n", ret, 6);
|
||||
printf("There's is a change of repetition after %d bits after start %d, please fix!\n", ret, 6);
|
||||
return 1;
|
||||
}
|
||||
printf("Repetition not detected, good!\n");
|
||||
|
@ -123,7 +123,7 @@ int main(void)
|
|||
/* note at position 6 we have no more change towards 8 bit offset */
|
||||
ret = check_repetition(data, len, 8, 6);
|
||||
if (ret != 34) {
|
||||
printf("Theres is NO change of repetition after 34 bits, but after %d bits, which should not happen!\n", ret);
|
||||
printf("There's is NO change of repetition after 34 bits, but after %d bits, which should not happen!\n", ret);
|
||||
return 1;
|
||||
}
|
||||
printf("Repetition detected after %d bits from start %d, good!\n", ret, 6);
|
||||
|
|
|
@ -105,7 +105,7 @@ void print_help(const char *arg0)
|
|||
printf(" -w --wave-file <filename>\n");
|
||||
printf(" Output to wave file instead of SDR\n");
|
||||
printf(" -r --realtime <prio>\n");
|
||||
printf(" Set prio: 0 to diable, 99 for maximum (default = %d)\n", rt_prio);
|
||||
printf(" Set prio: 0 to disable, 99 for maximum (default = %d)\n", rt_prio);
|
||||
printf("\nsignal options:\n");
|
||||
printf(" -F --fbas 1 | 0\n");
|
||||
printf(" Turn color on or off. (default = %d)\n", fbas);
|
||||
|
@ -210,7 +210,7 @@ static int handle_options(int short_option, int argi, char **argv)
|
|||
case 'I':
|
||||
station_id = strdup(argv[argi]);
|
||||
if (strlen(station_id) != 12) {
|
||||
fprintf(stderr, "Given station ID must be exactly 12 charaters long. (Use spaces to fill it.)\n");
|
||||
fprintf(stderr, "Given station ID must be exactly 12 characters long. (Use spaces to fill it.)\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -133,7 +133,7 @@ int zeit_init(double audio_level_dBm, int alerting)
|
|||
}
|
||||
sekunden_time += minuten_time;
|
||||
|
||||
PDEBUG(DZEIT, DEBUG_DEBUG, "Total time to play anouncement, starting with beep: %.2f seconds\n", (double)sekunden_time / 8000.0);
|
||||
PDEBUG(DZEIT, DEBUG_DEBUG, "Total time to play announcement, starting with beep: %.2f seconds\n", (double)sekunden_time / 8000.0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue