Files
openbts/GPRS/GPRSExport.h
2014-07-16 23:57:22 +02:00

103 lines
3.1 KiB
C++

/*
* Copyright 2011, 2014 Range Networks, Inc.
*
* This software is distributed under multiple licenses;
* see the COPYING file in the main directory for licensing
* information for this specific distribution.
*
* This use of this software may be subject to additional restrictions.
* See the LEGAL file in the main directory for details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
// (pat) This is the GPRS exported include for use by clients in other directories.
#ifndef GPRSEXPORT_H
#define GPRSEXPORT_H
#include <ostream>
#include <CLI.h>
// The user of this file must include these first, to avoid circular .h files:
//#include "GSMConfig.h" // For Time
//#include "GSMCommon.h" // For ChannelType
// You must not include anything from the GSM directory to avoid circular calls
// that read files out of order, but we need transparent pointers to these classes,
// so they must be defined first.
namespace GSM {
class RxBurst;
class RachInfo;
class L3RRMessage;
class CCCHLogicalChannel;
class L3RequestReference;
class L3ImmediateAssignment;
class Time;
};
namespace GPRS {
struct GPRSConfig {
static unsigned GetRAColour();
static bool IsEnabled();
static bool IsSupported();
static bool sgsnIsInternal();
};
enum ChannelCodingType { // Compression/Coding schemes CS-1 to CS-4 coded as 0-3
ChannelCodingCS1,
ChannelCodingCS2,
ChannelCodingCS3,
ChannelCodingCS4,
ChannelCodingMax = ChannelCodingCS4,
};
// See notes at GPRSCellOptions_t::GPRSCellOptions_t()
struct GPRSCellOptions_t {
unsigned mNMO;
unsigned mT3168Code; // range 0..7
unsigned mT3192Code; // range 0..7
unsigned mDRX_TIMER_MAX;
unsigned mACCESS_BURST_TYPE;
unsigned mCONTROL_ACK_TYPE;
unsigned mBS_CV_MAX;
bool mNW_EXT_UTBF; // Extended uplink TBF 44.060 9.3.1b and 9.3.1.3
GPRSCellOptions_t();
};
extern const int GPRSUSFEncoding[8];
extern GPRSCellOptions_t &GPRSGetCellOptions();
// The following are not in a class because we dont want to include the entire GPRS class hierarchy.
// The function by which bursts are delivered to GPRS.
class PDCHL1FEC;
extern void GPRSWriteLowSideRx(const GSM::RxBurst&, PDCHL1FEC*);
// The function by which RACH messages are delivered to GPRS.
extern void GPRSProcessRACH(unsigned RA, const GSM::Time &when, float RSSI, float timingError);
extern int GetPowerAlpha();
extern int GetPowerGamma();
extern unsigned GPRSDebug;
extern void GPRSSetDebug(int value);
extern void GPRSNotifyGsmActivity(const char *imsi);
class TBF;
extern bool gprsPageCcchSetTime(TBF *tbf, GSM::L3ImmediateAssignment *iap, unsigned afterFrame);
extern GSM::L3ImmediateAssignment *makeSingleBlockImmediateAssign(GSM::RachInfo *rip, unsigned afterFrame);
// Hook into CLI/CLI.cpp:Parser class for GPRS sub-command.
CommandLine::CLIStatus gprsCLI(int,char**,std::ostream&);
int configGprsChannelsMin();
void gprsStart(); // External entry point to start gprs service.
void gprsStop();
}; // namespace GPRS
#endif