Commit Graph

177 Commits

Author SHA1 Message Date
Andreas Eversberg b0c7ea72c8 Changed data structures for TBF and PDCH instances, to allow multislot
The new data structure is required to define slot/TFI assigment for MS
with multislot capability.

Now there are two lists for TBFs: uplink and downlink. It is possible to
have different TBFs with same TFI in the same direction, as long as they
are assigned on different timeslots.

See tbf.txt for description.

Note: This does not implement any multislot support. It defines the new
data structure. Currently only the first slot is assigned.
2012-07-13 14:46:03 +02:00
Andreas Eversberg e266bd48ac Adding signal handler to allow clean exit of PCU
The signal handler will end the main loop, so clean exit is performed.

The allocated memory is dumped in order to detect memory leaks.

All talloc functions use tall_pcu_ctx context instead of NULL, to track
memory leaks.
2012-07-13 14:00:21 +02:00
Ivan Kluchnikov df72c89e4b Removed unnecessary test for tbf. 2012-07-13 16:00:02 +04:00
Andreas Eversberg b8695f290a Removed obsolete if-condition 2012-07-13 13:48:45 +02:00
Andreas Eversberg ebde64f258 logging: Add vty to allow definition/storage of debug levels
Note: This requires new libosomocore that allows to compile VTY headers
with C++.
2012-07-13 13:46:25 +02:00
Andreas Eversberg 1294256d65 VTY implementation 2012-07-13 12:30:03 +02:00
Ivan Kluchnikov ef7f28cc7f Merge branch 'jolly_new'
Merge is based on jolly_new branch with two modifications.
1. Modified PCU L1 interface.
pcu_l1_if.cpp - common functions for tx and rx messages on L1 interface.
sysmo_sock.cpp - SYSMO-PCU socket functions.
openbts_sock.cpp - OpenBTS-PCU socket functions.
pcuif_proto.h - L1 interface's primitives.
2. Modified encoding of RLC/MAC Control messages, now we use structures and encode_gsm_rlcmac_downlink() function for encode control blocks (without  hand-coding).
2012-07-12 14:49:15 +04:00
Andreas Eversberg e13fa2d569 Send downlink IMMEDIATE ASSIGNMENT on PCH and not on AGCH
The IMSI is used to define paging group on which it is sent.

This is tested with MS that requires correct paging group.
2012-07-09 17:10:44 +02:00
Andreas Eversberg 88a214cc45 Fixed return value of pcu_l1if_open() when connection to BTS fails
If connection fails, a retry timer is used to try again. This is not an
error.
2012-07-07 08:21:01 +02:00
Andreas Eversberg 0e4030982f Restructured debugging levels to get better overview of TBFs/processes
Only when using LOGL_DEBUG, every detailled information is displayed.

When using LOGL_INFO, a summary of the process is displayed.

When using LOGL_NOTICE, only errors and warnings like timeouts
or invalid received informations are displayed.

When using LOGL_ERROR, only local error like software errorss are
displayed.
2012-07-06 11:04:57 +02:00
Andreas Eversberg 7b0450133c Fixed pseudo length of IMMEDIATE ASSIGNMENT message.
The pseudo length may not include the rest-octets, so it stays compatible
to non-GPRS phones.

At pcu_l1_if.c (OpenBTS) no pseudo length is given, so the frame is
only 22 bytes long. I could not test if it works.
2012-07-06 09:40:47 +02:00
Andreas Eversberg 1944bd5872 Minor fix of MCC, MNC options 2012-07-06 09:32:39 +02:00
Andreas Eversberg 3e372d57ed Cleanup of BSSGP code.
The hack for resetting BSSGP instance is removed and now performed
whenever the NS state changes to UNBLOCKED.

The BSSGP instance is now created only once, as it should be.

Received STATUS messages are ignored as they should be.

The creation and destruction of BSSGP/NS instances is now handled by
layer 1 interface alone.
2012-07-06 09:28:15 +02:00
Andreas Eversberg bf5a0f6e2c Move BSSGP/NS instances creation and desctruction to gprs_bssgp_pcu.cpp 2012-07-06 08:58:22 +02:00
Andreas Eversberg 81e895b619 Adding MCC/MNC spoof options to pcu_main.cpp
The option added is required to change PLMN that is announced to SGSN.
This allows BTS to have a different PLMN.

(Usefull for roaming in conjunction with simlock.)
2012-07-06 08:24:53 +02:00
Andreas Eversberg dfa563cd3b RLC/MAC process makes use from attributes, received from PCU socket
For OpenBTS interface and BSSGP, fixed values are still used.
2012-07-06 08:13:59 +02:00
Andreas Eversberg b3c6f6c716 Receive cell informations via PCU socket interface
These informations provide RAI, timers, counters and other attributes to
the BSSGP and RLC/MAC processes.

The attributes are stored in gprs_rlcmac_bts global structure.
2012-07-06 07:40:08 +02:00
Harald Welte d679009a2d remove dependencies to openbsc/osmoggsn internals
...and link against libosmogb (part of libosmocore.git)
2012-07-06 07:24:41 +02:00
Andreas Eversberg e6228b34a7 TBF acknowledged mode finished for both link directions 2012-07-03 13:36:03 +02:00
Ivan Kluchnikov c7e7f6868b Implemented Paging procedure on CCCH.
Added functions:
- gprs_bssgp_pcu_rx_paging_ps() for handling paging message from BSSGP;
- write_paging_request() for writing paging request message;
- gprs_rlcmac_paging_request() and pcu_l1if_tx_pch() for sending paging request message to BTS.
2012-06-29 22:53:15 +04:00
Ivan Kluchnikov bbbd79d6f1 Fixed DL TBF establishment on CCCH.
We shouldn't use paging procedure for DL TBF establishment, if we didn't receive paging message from BSSGP.
2012-06-29 20:30:10 +04:00
Andreas Eversberg 83ced4978a Adding .gitignore to source directory 2012-06-27 17:45:15 +02:00
Ivan Kluchnikov 34460b8407 Modified encoding of Packet Downlink Assignment and Packet Uplink Ack/Nack messages.
Removed hand-coding of RLC/MAC Control messages, now we use structures and encode_gsm_rlcmac_downlink() function for encode control blocks.
2012-06-27 18:41:04 +04:00
Andreas Eversberg 5dac2f09e1 Work on RLCMAC layer. Integration of scheduler and new packet transfer 2012-06-27 15:52:04 +02:00
Andreas Eversberg 66690dd3c6 Rewrite of RLC/MAC uplink acknowledged TBF.
It uses history buffer and sends ack/nack control messages about received
blocks. It defragments the blocks and forwards them to upper layer. It
does content resolution and ignores other MS. It sends final ACK after
all blocks have been sucessfully received. Timers are used to detect
loss of uplink, and repeat lost final ACK.
2012-06-27 15:44:31 +02:00
Andreas Eversberg 39621c41f3 Introducing scheduler to process transmission of blocks
The scheduler is triggered at ready-to-send-requesst. It schedules
control blocks, data block and dummy blocks, depending on priority.

It provides upstream ressource by setting USF. The ressources are
assigned, if required. The ressources are dispatched round-robin.

In case of polling, the upstream ressource is given to MS at the
time it will respond to polling request.
2012-06-27 15:36:27 +02:00
Ivan Kluchnikov d78ee73623 Fixed Downlink TBF Establishment on CCCH.
UL TBF should be released before DL TBF establishment on CCCH.
Added delay after transmitting Immediate Assignment.
2012-06-26 19:33:44 +04:00
Ivan Kluchnikov cf7b3a529f Merge branch 'jolly'
Merged jolly branch with master, fixed conflicts.
2012-06-26 16:54:22 +04:00
Andreas Eversberg 7d7cf54f39 Packet Downlink Assigment now uses ARFCN/TN of current BTS layout
Now the MS receives dowlink LLC frames.
2012-06-25 09:26:15 +02:00
Andreas Eversberg 055340801b Fixed IMM.ASS message
Now packets are reassembled correctly.
2012-06-24 11:46:49 +02:00
Andreas Eversberg fe411b3cfd Hack to slow down uplink transfer 2012-06-23 19:35:56 +02:00
Andreas Eversberg 0aed654ac7 Split of L1 interface to be used with OpenBTS or sysmo-BTS
The OpenBTS socket functions are moved from main to pcu_l1_if.cpp.

New sysmo_l1_if.cpp is introduced. It used special unix socket interface
to connect to sysmo-BTS. This is required to access CCCH/RACH and info
about cell layout. Traffic is also forwarded via this interface, but
it direct access of L1 baseband DSP will be added soon.

In order to handle ready-to-send requests above l1_if, the transmit
queue (for downlink blocks) is moved to gprs_rlcmac.cpp.

The TBF instance additionally holds TRX and TS info, but this is only
a hack currently. TBF instance requires more details about allocated
ressources in the future.
2012-06-23 10:33:16 +02:00
Andreas Eversberg f6b7ca5dd4 Adding more OpenBSC object files to Makefile.am
This is required, so it works in my environment. Might be revised soon.
2012-06-23 10:17:07 +02:00
Harald Welte 477e79e67e remove dependencies to openbsc/osmoggsn internals
...and link against libosmogb (part of libosmocore.git)
2012-06-18 12:22:18 +08:00
Ivan Kluchnikov a9e6dc5084 Improvement of TBF management.
Added functions for TBF allocation, establishment, data transfer and release management.
Modified TBF structure, added list for several LLC PDUs in one TBF.
Added function gprs_rlcmac_tx_llc_pdus() providing transmission of several LLC PDUs in one TBF to MS.
2012-06-17 08:30:06 +04:00
Ivan Kluchnikov 9b06ff0c4c Removed all size_t variables. Fixed type of readIndex and writeIndex variables.
We use unsigned int type for readIndex and writeIndex parameters in bitvec_read_field() and bitvec_write_field() functions.
2012-06-15 10:13:30 +04:00
Ivan Kluchnikov 856221fd3d Removed all OpenBTS dependencies. We don't use OpenBTS cout and gsmtap anymore. 2012-06-15 09:31:29 +04:00
Harald Welte 40383dcb46 Makefile.am: Don't link lots of openbsc / sgsn / ggsn internal .o files
this is probably a historic relict.  None of them should be used, and I
cannot see any actual use of them either.

The only non-library code that we link now is libosmo-gb (ns/bssgp),
which soon will be turned into a real library.
2012-06-14 21:15:59 +08:00
Harald Welte 57f6b0220f Add auto-foo (partial cleanup, master makefile/configure.ac 2012-06-14 21:05:44 +08:00
Harald Welte 57875a99ac add .gitignore file 2012-06-14 21:05:16 +08:00
Harald Welte c5187a1824 move everything to src/ subdirectory
The code corresponds to commit a9aa4777cc1144897a77dfb6c5c3d7325705251e
in openbts-p2.8.git (Tue Jun 12 18:14:49 2012 +0400)
2012-06-14 20:48:42 +08:00
Ivan Kluchnikov 6347711736 Fixed gprs_rlcmac_rcv_data_block() function.
Countdown Value = 0 means, that PCU received the last data block in TBF and we should ignore all next data blocks.
2012-06-12 18:14:49 +04:00
Ivan Kluchnikov 5e0df9354b Fixed parsing of BSSGP DL-UNITDATA in gprs_bssgp_pcu_rx_dl_ud() function. 2012-06-12 15:33:52 +04:00
Ivan Kluchnikov 2f69acd0ed Modified gprs_rlcmac_data_block_parse() function.
Implemented singular case of using Length Indicator field, which described in 10.4.14 TS 44.060.
2012-06-12 12:42:16 +04:00
Ivan Kluchnikov b172b1b18d Fixed handling of LLC-PDU Length Indicator.
Added implementation of Length Indicator, which consists of two octets.
2012-06-07 01:51:49 +04:00
Ivan Kluchnikov e3594236ff Modified gprs_rlcmac_segment_llc_pdu() and gprs_rlcmac_tx_dl_data_block() functions.
Changed the internal logic of the functions. Implemented singular case of using Length Indicator field, which described in 10.4.14 TS 44.060.
2012-06-07 01:12:29 +04:00
Ivan Kluchnikov bceb3fbf29 Modified gprs_rlcmac_data_block_parse() function.
Changed the internal logic of the function. Fixed handling for case with several LLC PDU in one data block.
2012-06-05 16:56:27 +04:00
Ivan Kluchnikov b2b8100499 Fixed gprs_rlcmac_rcv_data_block() and gprs_rlcmac_data_block_parse() functions.
Added handling for cases with several LLC PDU in one data block and several LLC PDU in one TBF.
2012-06-04 21:57:02 +04:00
Ivan Kluchnikov c5d8c27513 Fixed maximum length of LLC frame. 2012-06-04 21:55:02 +04:00
Ivan Kluchnikov 3fa42b21ee Fixed length of BSSGP header. 2012-06-04 19:07:25 +04:00