Commit Graph

205 Commits

Author SHA1 Message Date
Harald Welte 44239b448b [layer23] make sure we recognize our own IMM ASS
When trying to re-create the header file I made the 'valid' member
of the channel request history a single-bit field, but we actually
assign values different than 0 and 1 to it.  This has caused layer23
to consider the IMM ASS to our own channel requests as non-matching.
2010-06-25 16:34:17 +02:00
Harald Welte d58af304ee [layer23] reverse-engineer missing header file changes
It seems one of the recent commits introduced build errors due
to missing commits for header file changes.  Based on the code,
I reconstructed what I believe might have been the header files...
2010-06-25 03:13:52 +02:00
Harald Welte bc860c43c2 [layer23] use the TSC that is passed from L1 when going in dedicated mode 2010-06-24 18:57:28 +02:00
Sylvain Munaut 38c6b4b35a fw/layer1: Add support CCCH combined/non-combined
We introduce the concept of CCCH mode. It can be either
 - NONE: receive BCCCH only
 - COMBINED: CCCH on a BCCH/CCCH+SDDCH/4
 - NON_COMBINED: CCCH on a BCCH/CCCH

There is also a new command to change the mode without having
to do the resync.

Currently, we keep the previous default behavior of requesting
a combined CCCH by default

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-06-22 06:37:09 +02:00
Andreas.Eversberg 562ff2dd89 layer23: Added CLIP and CLIR feature. 2010-06-20 18:18:45 +00:00
Andreas.Eversberg 17e0a2c075 layer23: Added support for waiting calls, hold/retrieve calls. 2010-06-20 17:43:55 +00:00
Andreas.Eversberg f84a8c4b7e layer23: Complete rework of MCC and MNC structure.
Instead of handling numerical MCC and MNC, they are now stored and handled
hexadecimal, like they are received by the network. This makes it possible
to correctly handle 2 and 3 digits MNC. Internally 2 digit MNCs are stored
as 0xXXf, and 3 digits MNC are stored as 0xXXX, where X is the digit 0..9.

The length of MNC in the IMSI (2 or 3 digits) depend on the MNC length
trying to match. Anyway that MNC name can be printed even without knowing the
actual length. This is done by matching the IMSI against list of networks.

PLEASE REMOVE "/etc/osmocom/*.ba", because the MCC and MNC stored there is
not valid anymore.
2010-06-20 11:19:06 +00:00
Andreas.Eversberg 04acfa2e4b layer23: Corrected MCC in network table. -1 is used to indicate the counter rather than network name. 2010-06-16 22:06:46 +00:00
Andreas.Eversberg f195635d31 layer23: Added VTY command to display current states.
Also rejecting ASSIGNMENT COMMAND.
2010-06-16 17:17:29 +00:00
Andreas.Eversberg f479eff3d5 layer23: Added VTY messages to call application.
VTY now shows the process of call establishment, incomming call, and release.
2010-06-13 17:18:15 +00:00
Andreas.Eversberg 22f4e35243 layer23: Added feature to do emergency calls without a SIM card.
While testing, you may find out that making an emergency call is rejected
with cause 5 (illegal ME), because emergency facilities in some countries
like to reject calls without knowing the subscriber.

An emergency IMSI can be defined via VTY, so it is possible to make calls
with that IMSI, even without the SIM, because authentication is not
applicable during emergency call establishment.

All the information above, I received from the freely available 3GPP TS 04.08.
See NOTE at sub clause 4.5.1.5.
2010-06-13 14:41:55 +00:00
Andreas.Eversberg c6e756aab6 layer23: Fixed issues about location update and it's result.
Now location update reject works. The rejected network/cell is stored in
an appropriate list. The lists can be dumped from the VTY.

A fake authentication response is generated until the SIM interface is
available. If the network rejects the test SIM, due to authentication
failure, it is removed and limited service state is entered. This currenlty
works on networks with SDCCH on the TS0 only.
2010-06-13 13:51:30 +00:00
Andreas.Eversberg bba7716fee Added more release cases between RR and MM layer. 2010-06-12 18:44:21 +00:00
Andreas.Eversberg 247ec7acf3 Radio ressources now has functions for release of radio link.
The "BA range" is used for cell re-selection.

Due to layer 1 issues, the process gets stuck very often or looses
synchronization.

After location update, I can now make a call via VTY on SDCCH:
Call control sends SETUP request after requesting an MM connection.
My phone on the network side rang!! Call control fails and requires
further debugging...
2010-06-12 16:16:54 +00:00
Andreas.Eversberg 3c0a6b5b63 Added ARFCN to system information dump. 2010-06-12 16:11:35 +00:00
Andreas.Eversberg 6eaa91786e Updated description of buffers and queues in lapdm.c, changed queue name. 2010-06-12 16:07:49 +00:00
Andreas.Eversberg d8cc251cf1 Fixes and improvements of RR, MM, CC processes. 2010-06-06 18:19:46 +00:00
Andreas.Eversberg ff555175d1 Added call application to mnccms.c and added commands to dial/answer/hangup to VTY. 2010-06-06 18:17:15 +00:00
Andreas.Eversberg 95f7d2c99c Added new logging category for summary of process. 2010-06-06 18:16:01 +00:00
Andreas.Eversberg 72a63e90ff Completed layer 2 process. (LAPDm)
Not actually complete but most of it. Location update works now!
2010-06-05 19:47:25 +00:00
root 6404e12a90 Moved some spreaded settings of layer23 into settings.h.
The IMEI can now be set or generated randomly.
2010-05-24 18:15:21 +02:00
Andreas.Eversberg ba59a8cb51 Added more commands to VTY, especially selecting test SIM and configure it.
The test card can now be configured, as if it is already registered to a
network. So it will directly select the strongest cell of last scan.
2010-05-23 20:53:32 +00:00
root bfc0285c7c Fixes of layer23 processes during tests of MNCC interface.
-> Emergency calls will now trigger channel request.
-> Normal calls will be rejected due to limited/no service.
2010-05-24 02:21:24 +02:00
Andreas.Eversberg 9359a91504 Moved layer 1 <-> layer 2 interface from main.c to a seperate file of
liblayer23. Other applications using liblayer23 don't need to re-implement it.

Messages from layer 1 are not freed in layer2_read() anymore. They will be
freed by the upper layers. The layers may also decide to queue or to forward
the messages. In general: A message is always discarded by the message handler
and not after calling the message handler.
2010-05-22 10:46:20 +00:00
Harald Welte 8978ec571e layer1/l1ctl: Split L1CTL_NEW_CCCH_REQ in FBSB_REQ nad SYNC_REQ
We really want to have those two as distinct operations - and we
want proper state machines in L1 to quickly return if they've
managed to acquire a FB or SB or not.  Otherwise scanning will
take ages...

This code now introduces a new l1ctl_fbsb_req that is sent via
L1CTL to ask for a bitmask of FB0/FB1/SB operations.  The actual
FB0/FB1 detection now no longer runs for 500 TDMA interrupts
but completes as soon as we either know there is no FCCH,
or that our frequency error is smaller than a caller-specified
threshold.

FB0/FB1 are already working, SB is not yet, sorry.
2010-05-19 21:41:24 +02:00
Andreas.Eversberg 21cc7eecc5 Work on VTY interface:
- Load and save of config now works.
- Network search is displayed on VTY and the result can be selected there.
- Manual/auto mode can be selected via VTY and saved.
2010-05-13 12:51:22 +00:00
Andreas.Eversberg b763a07c47 Added "show ba 1" to view BA lists via VTY interface. 2010-05-09 17:31:49 +00:00
Andreas.Eversberg 3928d757f0 Added vty interface (taken from OpenBSC project).
It is now possible to show informations about:
- mobile
- subscriber
- received cell informations

Later it can be used to do configurations (phone's menu)
and trigger events, like dialing a phone number.
2010-05-09 16:01:49 +00:00
Andreas.Eversberg acd570fff8 Added SI3 rest octets to RR layer. Now a cell can be qualified:
- Low prio
- High prio
- Barred
2010-05-09 09:40:41 +00:00
Andreas.Eversberg f76e2064a4 Added BCCH timeout timer for detecting loss of radio link (layer23). 2010-05-08 14:31:27 +00:00
Andreas.Eversberg 2b5c2337ed Fixes for layer 3 processes:
- CCCH connection state variable
- The complete BAND is now searched prio selecting PLMN
2010-05-07 21:41:54 +00:00
Andreas.Eversberg 2b7d2ed446 - Fixes on MM, RR, cell selection, plmn search processes.
-> Cell selection now requires only one frequency to be scanned, if BA list
   of that PLMN is known.
2010-05-06 08:48:24 +00:00
Andreas.Eversberg 7c5b9ea288 Work on layer 3 processes:
- Fixes on PLMN search and cell selection process.
- Fixes on radio ressource.
- ^C will cause IMSI detach when pressed the first time.
  Pressing ^C again will cause termination of process at any time.
2010-05-05 08:40:10 +00:00
Andreas.Eversberg 7f009e41f9 Work on layer 3 processes:
- Fixed reference to system informations. (did crash when re-selecting).
- Fix in cell selection state machine. (any re-selection).
- MCC, MNC, LAC change of cell now triggers re-selection.
- Fixed some paging issues. Empty pagings are not displayed anymore. Also paging is now possible when 'camping on any cell'.
2010-05-04 09:48:51 +00:00
Andreas.Eversberg fe1dc19c6e More fixes on layer3.
The current code will scan frequencies, select a cell and camps on it.
No SIM is inserted. Paging requests and Immediate assginments can be seen.

When inserting a SIM card (uncomment it in app_mobile.c), location update
is triggered after selecting a cell. The RACH request is sent, an
Immediate assignment is received, the dedicated mode is requested.
Nothing happens then, because no confirm / abort of layer 2 is received.
2010-05-02 17:40:52 +00:00
Andreas.Eversberg 14974d3dba Many fixes in layer 3:
- Sysinfo storage
- Cell/Network selection process
- Channel request / Paging
2010-05-02 17:13:47 +00:00
Andreas.Eversberg 8e5f33b4d3 Fixed many issues in MM IDLE mode process. 2010-05-01 18:21:03 +00:00
Andreas Eversberg 516917e836 Fixes and improvements of layer23. 2010-04-29 20:46:11 +02:00
Andreas Eversberg 9ef7ac8b11 Added some debugging. / Minor condition fix. 2010-04-26 11:21:18 +02:00
Andreas Eversberg f1278ad9da Added new application "mobile" to layer23.
This is the current status of the layer 3 protocols. Everything compiles,
radio ressource layer is partly complete. Everything is untested, so don't
expect that it runs and does something usefull. The next step for me is
running and debugging it.

Here is the list of files that are added / modified:

	new file:   ../include/osmocom/gsm322.h
	new file:   ../include/osmocom/gsm48_cc.h
	new file:   ../include/osmocom/gsm48_mm.h
	new file:   ../include/osmocom/gsm48_rr.h
	modified:   ../include/osmocom/l23_app.h
	modified:   ../include/osmocom/logging.h
	new file:   ../include/osmocom/mncc.h
	modified:   ../include/osmocom/osmocom_data.h
	new file:   ../include/osmocom/subscriber.h
	new file:   ../include/osmocom/support.h
	new file:   ../include/osmocom/sysinfo.h
	new file:   ../include/osmocom/transaction.h
	modified:   Makefile.am
	new file:   app_mobile.c
	new file:   gsm322.c
	new file:   gsm48_cc.c
	new file:   gsm48_mm.c
	new file:   gsm48_rr.c
	modified:   main.c
	new file:   mnccms.c
	new file:   subscriber.c
	new file:   support.c
	new file:   sysinfo.c
	new file:   transaction.c
2010-04-25 18:28:24 +02:00
Andreas Eversberg 0d93f1c917 Changes to layer23:
Added name to osmocom_ms structure.

l2_ctx is now named l23_ctx, because it is also used there.

A work-handler is usefull for applications that need to check queues.
2010-04-25 18:10:59 +02:00
Andreas Eversberg e91d8a934c l1ctl_tx_ccch_req() now uses arfcn as parameter.
The arfcn variable is renamed to test_arfcn.

I think that arfcn and other frequency parameters should be stored at
the process which sets it and using it when calling l1ctl_tx_ccch_req().
2010-04-25 17:31:35 +02:00
Andreas Eversberg 96e479645f Wrapper for file access.
If file access is used to store network informations and user settings in the
/etc/ directory. Later it can be used to store them in the EEPROM of the
target.
2010-04-25 17:11:47 +02:00
Harald Welte 13a0a05887 layer23: signal the L1CTL DONE flag at the end of a power measurement 2010-04-05 22:21:36 +08:00
Harald Welte 1fa7930eea layer23: Introduce signals to indicate PM RES and L1 RESET to app 2010-04-05 21:30:00 +08:00
Harald Welte db60b706cc layer23: split into liblayer23 and 'apps'
similar to the concept of having 'apps' in the firmware build process,
I'm now building the common code as liblayer23 and we have three apps
that use this library:
 layer23 - the old layer23 program
 bcch_scan - a passive bcch scanner under development
 echo_test - a test program sending large msgb's containing zero bytes
2010-04-05 21:30:00 +08:00
Harald Welte 1e4d22cb5f Implement L23-triggered L1 power measurement scan
Now layer23 can ask L1 to scan an entire range of ARFCN's and do power
measurements.  This is the first step in the cell (re)selection process.
2010-03-27 18:42:43 +08:00
Harald Welte ace2b08244 add L1CTL ECHO REQUEST code 2010-03-27 12:32:32 +08:00
Harald Welte e8a7bbffd2 layer23: convert to libosmocore logging API 2010-03-27 08:56:05 +08:00
Harald Welte 0841075df2 layer23: remove debug.c and thus last remnants of libosmocom 2010-03-27 00:07:46 +08:00
Harald Welte c1cee898df misc compiler warning fixes
* added missing param in call to gsm48_rx_bcch
* added 'extern' to declarations of rsl_rlm_cause_strs and target_board
* added several 'const' for strings
* removed useless 'bufptr,' from hexdump
(From: itsme <itsme@xs4all.nl>)
2010-03-22 08:26:04 +08:00
Harald Welte 07446ab098 layer23: fill in signal level and dBm fields of gsmtap 2010-03-09 23:05:58 +01:00
Holger Hans Peter Freyther 5da778184d layer23: Use the write_queue instead of directly writing data to the socket 2010-03-08 12:23:09 +01:00
Harald Welte 582aec803c layer23: GSMTAP update (gsmtap for uplink, DCCH and ACCH)
* use GSMTAP for uplink frames (generated by layer23; sent to L1)
* only use GSMTAP if the user specifies the '-i dstip' arguments
* properly encode the GSMTAP channel type
* requires GSMTAP protocol version 0x02 (see next commit for wireshark patch)
2010-03-04 15:43:45 +01:00
Harald Welte d4e118a7a0 Rename 'layer2' program to 'layer23' program 2010-03-03 14:25:21 +01:00