878 lines
38 KiB
C
878 lines
38 KiB
C
#ifndef GSML1PRIM_H__
|
|
#define GSML1PRIM_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
/****************************************************************************
|
|
* Includes *
|
|
****************************************************************************/
|
|
|
|
#ifndef WIN32
|
|
#include <stdint.h>
|
|
#endif
|
|
|
|
#include "gsml1const.h"
|
|
#include "gsml1types.h"
|
|
|
|
/****************************************************************************
|
|
* Types (Primitive Parameters) *
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* typedef : GsmL1_MsgUnitParam_t
|
|
************************************************************************//**
|
|
*
|
|
* Buffer structure used to transfer all messages frame units between
|
|
* the layers.
|
|
*
|
|
* @ingroup gsml1_api_prim_params
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MsgUnitParam_t
|
|
{
|
|
uint8_t u8Size; ///< Size of the msg. unit
|
|
uint8_t u8Buffer[MAX_L2MSGSIZE]; ///< Buffer containing the msg. unit
|
|
|
|
// uint32_t u32Control; ///< Control word associated with the MsgUnit (0 if not applicable)
|
|
} GsmL1_MsgUnitParam_t;
|
|
|
|
/****************************************************************************
|
|
* typedef : GsmL1_MeasParam_t
|
|
************************************************************************//**
|
|
*
|
|
* Used to report library specific measured informations.
|
|
*
|
|
* @ingroup gsml1_api_prim_params
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MeasParam_t
|
|
{
|
|
float fRssi; ///< Received Signal Strength Indication (in dBm)
|
|
int16_t i16BurstTiming; ///< Burst timing (in quarter of bits)
|
|
float fLinkQuality; ///< Link quality of the communication (dB)
|
|
|
|
float fBer; ///< Bit error rate of the last decoded frame [0..1]
|
|
|
|
} GsmL1_MeasParam_t;
|
|
|
|
/****************************************************************************
|
|
* typedef : GsmL1_DeviceParam_t
|
|
************************************************************************//**
|
|
*
|
|
* TRX device parameters
|
|
*
|
|
* @ingroup gsml1_api_prim_params
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_DeviceParam_t
|
|
{
|
|
GsmL1_DevType_t devType; ///< Device type
|
|
|
|
GsmL1_FreqBand_t freqBand; ///< GSM Frequency band used by the TRX device
|
|
uint16_t u16Arfcn; ///< Radio frequency channel number
|
|
uint16_t u16BcchArfcn; ///< Associated beacon radio frequency channel number
|
|
|
|
uint8_t u8NbTsc; ///< Training sequence code to be used for normal bursts
|
|
uint8_t u8AutoTA; ///< Automatic timing advance (0:TA is handled by upper layers, 1:TA is handled by layer 1)
|
|
float fRxPowerLevel; ///< Nominal RX power level in dBm (use 0 if the control is handled by upper layers)
|
|
float fTxPowerLevel; /**< Transmission power level if applicable (in dBm).
|
|
@see Verify the values supported by the hardware. */
|
|
} GsmL1_DeviceParam_t;
|
|
|
|
|
|
/****************************************************************************
|
|
* Types (Primitives) *
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphInitReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains every necessary parameters to initialize a
|
|
* Base Tranceiver Station on a specific GSM Radio Frequency band.
|
|
*
|
|
* Primitive : MPH-INIT-REQ (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphInitReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Handle to a layer 3 entity
|
|
GsmL1_DeviceParam_t deviceParam; ///< TRX Device parameters
|
|
|
|
} GsmL1_MphInitReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphInitCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-INIT-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphInitCnf_t
|
|
{
|
|
HANDLE hLayer3; /**< Handle to the layer 3 entity.
|
|
|
|
The layer 3 handle received in the
|
|
MPH-INIT-REQ primitive is sent back
|
|
to the layer 3 (unmodified). */
|
|
|
|
HANDLE hLayer1; ///< Handle to the initialized Layer1 entity
|
|
GsmL1_FreqBand_t freqBand; ///< GSM Frequency band used by the TRX device
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-INIT-REQ primitive
|
|
|
|
} GsmL1_MphInitCnf_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphCloseReq
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains every necessary parameters to close a
|
|
* Base Tranceiver Station using a specific GSM Radio Frequency band.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphCloseReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Handle to the layer 3 entity
|
|
HANDLE hLayer1; ///< Handle of the Layer1 entity to close
|
|
|
|
} GsmL1_MphCloseReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphCloseCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-CLOSE-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphCloseCnf_t
|
|
{
|
|
HANDLE hLayer3; ///< Handle to the layer 3 entity
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-CLOSE-REQ primitive
|
|
|
|
} GsmL1_MphCloseCnf_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphConnectReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains all the necessary parameters to connect a physical
|
|
* channel on an layer 1 entity.
|
|
*
|
|
* Primitive : MPH-CONNECT-REQ (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphConnectReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Handle to a layer 3 entity
|
|
HANDLE hLayer1; /**< Handle to the layer1 on which the
|
|
physical channel is connected. */
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
#ifndef HW_SYSMOBTS_V1
|
|
uint8_t u8AutoDummy; /**< Automatically transmit dummy burst
|
|
when there is nothing else to transmit. */
|
|
#endif
|
|
GsmL1_LogChComb_t logChComb; /**< Logical channel multiplexing
|
|
over the physical channel */
|
|
|
|
} GsmL1_MphConnectReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphConnectCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-CONNECT-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphConnectCnf_t
|
|
{
|
|
HANDLE hLayer3; /**< The layer 3 handle received from in
|
|
MPH-CONNECT-REQ primitive is sent back to
|
|
the layer 3 (unmodified). */
|
|
HANDLE hLayer1; /**< Handle to the layer1 on which the
|
|
physical channel is connected. */
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-INIT-CONNECT-REQ primitive
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
|
|
} GsmL1_MphConnectCnf_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphDisconnectReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains all the necessary parameters to disconnect a
|
|
* physical channel on an layer 1 entity.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphDisconnectReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Handle to a layer 3 entity
|
|
HANDLE hLayer1; /**< Handle to the layer1 on which the
|
|
physical channel is disconnected. */
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
|
|
} GsmL1_MphDisconnectReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphDisconnectCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-DISCONNECT-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphDisconnectCnf_t
|
|
{
|
|
HANDLE hLayer3; /**< The layer 3 handle received from in
|
|
MPH-DISCONNECT-REQ primitive is sent
|
|
back to the layer 3 (unmodified). */
|
|
HANDLE hLayer1; /**< Handle to the layer1 on which the
|
|
physical channel is disconnected. */
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-DISCONNECT-REQ primitive
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
|
|
} GsmL1_MphDisconnectCnf_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphActivateReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains all the necessary parameters to activate a
|
|
* logical channel over a connected physical channel.
|
|
*
|
|
* Primitive : MPH-ACTIVATE-REQ (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphActivateReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Layer 3 entity
|
|
HANDLE hLayer2; ///< Layer 2 entity
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_Dir_t dir; ///< Direction path to configure
|
|
|
|
float fBFILevel; /**< Bad Frame Indication RX power level in dBm
|
|
(use 0 do disable BFI) */
|
|
GsmL1_LogChParam_t logChPrm; ///< Additional configuration parameters
|
|
|
|
} GsmL1_MphActivateReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphActivateCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-ACTIVATE-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphActivateCnf
|
|
{
|
|
HANDLE hLayer3; /**< The layer 3 handle received from in
|
|
MPH-ACTIVATE-REQ primitive is sent
|
|
back to the layer 3 (unmodified). */
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-INIT-ACTIVATE-REQ primitive
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_Dir_t dir; ///< Uplink/Downlink
|
|
|
|
} GsmL1_MphActivateCnf_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphDeactivateReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains all the necessary parameters to deactivate a
|
|
* logical channel from a connected physical channel.
|
|
*
|
|
* Primitive : MPH-DEACTIVATE-REQ (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphDeactivateReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Layer 3 entity
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_Dir_t dir; ///< Uplink/Downlink/Both
|
|
|
|
} GsmL1_MphDeactivateReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphDeactivateCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-DEACTIVATE-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphDeactivateCnf
|
|
{
|
|
HANDLE hLayer3; /**< The layer 3 handle received from in
|
|
MPH-DEACTIVATE-REQ primitive is sent
|
|
back to the layer 3 (unmodified). */
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-INIT-DEACTIVATE-REQ primitive
|
|
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_Dir_t dir; ///< Uplink/Downlink
|
|
|
|
} GsmL1_MphDeactivateCnf_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphConfigReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains all the necessary parameters to configure
|
|
* physical channel parameters through the SACCH burst.
|
|
*
|
|
* Primitive : MPH-CONFIG-REQ (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphConfigReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Layer 3 instance handle
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity which has the
|
|
physical channel on which the configuration
|
|
is done. */
|
|
GsmL1_ConfigParamId_t cfgParamId; ///< Configuration parameter ID
|
|
GsmL1_ConfigParam_t cfgParams; ///< Configuration parameters
|
|
|
|
} GsmL1_MphConfigReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphConfigCnf
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-CONFIG-REQ primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphConfigCnf_t
|
|
{
|
|
GsmL1_Status_t status; ///< Status of the MPH-CONFIG-REQ primitive
|
|
|
|
HANDLE hLayer3; ///< Layer 3 instance handle
|
|
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity which has the
|
|
physical channel on which the configuration
|
|
is done. */
|
|
|
|
GsmL1_ConfigParamId_t cfgParamId; ///< Configuration parameter ID
|
|
GsmL1_ConfigParam_t cfgParams; ///< Configuration parameters
|
|
|
|
} GsmL1_MphConfigCnf_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphMeasureReq_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure contains all the necessary parameters to measure the
|
|
* RSSI on a RF channel.
|
|
*
|
|
* Primitive : MPH-MEASURE-REQ (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphMeasureReq_t
|
|
{
|
|
HANDLE hLayer3; ///< Layer 3 instance handle
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity which has the
|
|
physical channel on which the configuration
|
|
is done. */
|
|
|
|
uint32_t u32Duration; ///< Duration of the measurement (in number of frames, 0:now)
|
|
|
|
} GsmL1_MphMeasureReq_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphMeasureCnf_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order to confirm the
|
|
* reception of a MPH-MEASURE-REQ primitive.
|
|
*
|
|
* Primitive : MPH-MEASURE-CNF (L3 -> L1)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphMeasureCnf_t
|
|
{
|
|
HANDLE hLayer3; ///< Layer 3 instance handle
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity which has the
|
|
physical channel on which the configuration
|
|
is done. */
|
|
|
|
GsmL1_Status_t status; ///< Status of the MPH-MEASURE-REQ primitive
|
|
float fMeanRssi; ///< RF channel mean received signal strength (dBm)
|
|
float fPeakRssi; ///< RF channel maximum received signal strength (dBm)
|
|
|
|
struct
|
|
{
|
|
float fMeanRssi; ///< Timeslot N mean received signal strength (dBm)
|
|
float fPeakRssi; ///< Timeslot N maximum received signal strength (dBm)
|
|
} tn[8];
|
|
|
|
} GsmL1_MphMeasureCnf_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_MphTimeInd
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent to the layer 3 at the beginning of every frame.
|
|
* It is sent when u8Tn is equal to 0.
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_MphTimeInd_t
|
|
{
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity sending the
|
|
MphTimeInd primitive */
|
|
uint32_t u32Fn; ///< Current frame number [0 .. 2 715 647]
|
|
uint8_t u8Tn; ///< Current timeslot [0..7]
|
|
|
|
} GsmL1_MphTimeInd_t;
|
|
|
|
/****************************************************************************
|
|
* Struct : GsmL1_MphSyncInd_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 3 in order indicate when the
|
|
* RF device is synchronized to a surrounding BTS or also when it looses its
|
|
* synchronization.
|
|
*
|
|
* Primitive : MPH-SYNC-IND (L1 -> L3)
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
*
|
|
****************************************************************************/
|
|
typedef struct GsmL1_MphSyncInd_t
|
|
{
|
|
HANDLE hLayer1; ///< Handle of the device which is sync/unsynced
|
|
uint8_t u8Synced; ///< Indicates if the RF device is synchronized to a BTS.
|
|
|
|
} GsmL1_MphSyncInd_t;
|
|
|
|
/******************************************************************************
|
|
* Struct : GsmL1_PhDataInd_t
|
|
**************************************************************************//**
|
|
*
|
|
* This structure is sent to the layer 2 to pass message units containing
|
|
* frames used by the data link layer or RLC/MAC peer-to-peer communications.
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
*****************************************************************************/
|
|
typedef struct GsmL1_PhDataInd_t
|
|
{
|
|
HANDLE hLayer2; /**< Layer 2 instance handle.
|
|
|
|
This handle is sent through the
|
|
MPH-CONNECT-REQ primitive. */
|
|
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_Dir_t dir; ///< Uplink/Downlink
|
|
|
|
GsmL1_MeasParam_t measParam; ///< Measurement parameters infos
|
|
GsmL1_MsgUnitParam_t msgUnitParam; ///< Message unit sent from the MS
|
|
|
|
uint16_t u16Arfcn; ///< Absolute radio frequency number
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
uint32_t u32Fn; ///< Frame number of the 1st RX burst
|
|
uint8_t u8BlockNbr; ///< Block number
|
|
|
|
} GsmL1_PhDataInd_t;
|
|
|
|
/******************************************************************************
|
|
* Struct : GsmL1_PhConnectInd_t
|
|
**************************************************************************//**
|
|
*
|
|
* This structure is sent to the layer 2 in order to indicate that a
|
|
* specific type of logical channel has been connected on a physical channel.
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
*****************************************************************************/
|
|
typedef struct GsmL1_PhConnectInd_t
|
|
{
|
|
HANDLE hLayer2; /**< Layer 2 instance handle.
|
|
This handle is sent in the MPH-ACTIVATE-REQ
|
|
primitive. */
|
|
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
uint16_t u16Arfcn; ///< Absolute radio frequency number
|
|
uint8_t u8Tn; ///< Time-slot [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_Dir_t dir; ///< Indicate the path of the transmission.
|
|
|
|
} GsmL1_PhConnectInd_t;
|
|
|
|
/******************************************************************************
|
|
* Struct : GsmL1_PhReadyToSendInd_t
|
|
**************************************************************************//**
|
|
*
|
|
* This structure is sent to allow the data link or the RLC/MAC layer
|
|
* to synchronize to the next instant of physical transmission.
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
*****************************************************************************/
|
|
typedef struct GsmL1_PhReadyToSendInd_t
|
|
{
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
HANDLE hLayer2; /**< Layer 2 instance handle.
|
|
|
|
This handle is sent in the MPH-ACTIVATE-REQ
|
|
primitive. */
|
|
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
|
|
uint32_t u32Fn; ///< Frame number of the 1st TX burst
|
|
|
|
uint16_t u16Arfcn; ///< Absolute radio frequency number
|
|
uint8_t u8Tn; ///< Timeslot number [0..7]
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
|
|
uint8_t u8BlockNbr; ///< Block number
|
|
|
|
} GsmL1_PhReadyToSendInd_t;
|
|
|
|
/******************************************************************************
|
|
* Struct : GsmL1_PhEmptyFrameReq_t
|
|
**************************************************************************//**
|
|
*
|
|
* This structure is sent back to the layer 1 when no frame has to be
|
|
* transmitted on the reception of a PH-READY-TO-SEND-IND primitive.
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
*****************************************************************************/
|
|
typedef struct GsmL1_PhEmptyFrameReq_t
|
|
{
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
uint32_t u32Fn; ///< Frame number of the 1st TX burst
|
|
|
|
uint8_t u8Tn; ///< Timeslot number
|
|
GsmL1_SubCh_t subCh; ///<Sub-channel number (1Fh if not applicable)
|
|
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
|
|
uint8_t u8BlockNbr; ///< Block number
|
|
|
|
} GsmL1_PhEmptyFrameReq_t;
|
|
|
|
/******************************************************************************
|
|
* Struct : GsmL1_PhDataReq_t
|
|
**************************************************************************//**
|
|
*
|
|
* This structure is used to send a message unit to the layer 1 in response
|
|
* to a PH-READY-To-SEND-IND primitive.
|
|
*
|
|
* @note
|
|
* For FR and HR traffic channel (TCH/FS, TCH/HS), the first byte of the
|
|
* message unit represents the payload type of the data (GsmL1_FrPlType_t
|
|
* or GsmL1_HrPlType_t). It is follow by the paqcked bits output from the
|
|
* vocoder.
|
|
*
|
|
* For AMR traffic channel (TCH/AFS, TCH/AHS), the first byte of the message
|
|
* unit represents the payload type of the data (GsmL1_FrPlType_t or
|
|
* GsmL1_HrPlType_t). The second byte is always the codec mode indication
|
|
* (CMI) and the third byte is always the codec mode response (CMR). They
|
|
* are followed by the IF2 frame.
|
|
*
|
|
* Refer to 3GPP TS 45.009 for more information about the in-band signaling.
|
|
* The format of IF2 frames are defined in 3GPP TS 26.101.
|
|
*
|
|
* @see GsmL1_FrPlType_t
|
|
* @see GsmL1_HrPlType_t
|
|
* @see GsmL1_CodecMode_t
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
*****************************************************************************/
|
|
typedef struct GsmL1_PhDataReq_t
|
|
{
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
|
|
uint32_t u32Fn; ///< Frame number of the 1st TX burst
|
|
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
GsmL1_MsgUnitParam_t msgUnitParam; ///< Message unit structure
|
|
|
|
uint8_t u8Tn; ///< Timeslot number
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
|
|
uint8_t u8BlockNbr; ///< Block number
|
|
|
|
} GsmL1_PhDataReq_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_PhRaInd_t
|
|
************************************************************************//**
|
|
*
|
|
* This structure is sent to the layer 3 on the arrival (in the network )
|
|
* of a RACH frame.
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
***************************************************************************/
|
|
typedef struct GsmL1_PhRaInd_t
|
|
{
|
|
HANDLE hLayer1; /**< Handle of the Layer 1 entity on which the
|
|
logical channel is activated */
|
|
HANDLE hLayer2; ///< Layer 2 instance handle.
|
|
|
|
uint32_t u32Fn; ///< Frame number of the RX burst
|
|
|
|
uint16_t u16Arfcn; ///< Absolute radio frequency number
|
|
uint8_t u8Tn; ///< Timeslot number
|
|
uint8_t u8BlockNbr; ///< Block number
|
|
|
|
GsmL1_Sapi_t sapi; ///< Service access point identifier
|
|
|
|
GsmL1_MsgUnitParam_t msgUnitParam; ///< Message unit structure
|
|
GsmL1_MeasParam_t measParam; ///< Measurement parameters infos
|
|
|
|
GsmL1_BurstType_t burstType; /**< Indicate which training sequence was used
|
|
to send the RACH/PRACH burst */
|
|
GsmL1_SubCh_t subCh; ///< Sub-channel number (1Fh if not applicable)
|
|
|
|
} GsmL1_PhRaInd_t;
|
|
|
|
/***************************************************************************
|
|
* Struct : GsmL1_Prim_t
|
|
************************************************************************//**
|
|
*
|
|
* Layer 1 primitive definition.
|
|
*
|
|
* @ingroup gsml1_api_prim
|
|
*
|
|
***************************************************************************/
|
|
typedef struct
|
|
{
|
|
GsmL1_PrimId_t id; ///< Primitive ID
|
|
union
|
|
{
|
|
GsmL1_MphInitReq_t mphInitReq; ///< Initialize the base station.
|
|
GsmL1_MphCloseReq_t mphCloseReq; ///< Closes the base station.
|
|
GsmL1_MphConnectReq_t mphConnectReq; ///< Connect a physical channel.
|
|
GsmL1_MphDisconnectReq_t mphDisconnectReq; ///< Disconnect a physical channel.
|
|
GsmL1_MphActivateReq_t mphActivateReq; ///< Activate a logical channel over a physical channel.
|
|
GsmL1_MphDeactivateReq_t mphDeactivateReq; ///< Deactivate a logical channel from a physical channel.
|
|
GsmL1_MphConfigReq_t mphConfigReq; ///< Configure a physical channel.
|
|
GsmL1_MphMeasureReq_t mphMeasureReq; ///< Measure the RSSI and frequency drift
|
|
GsmL1_MphInitCnf_t mphInitCnf; ///< Confirm the reception of a MPH-INIT_REQ primitive.
|
|
GsmL1_MphCloseCnf_t mphCloseCnf; ///< Confirm the reception of a MPH-CLOSE_REQ primitive.
|
|
GsmL1_MphConnectCnf_t mphConnectCnf; ///< Returns an handle pointing to the connected physical channel.
|
|
GsmL1_MphDisconnectCnf_t mphDisconnectCnf; ///< Confirm the reception of a MPH-DISCONNECT_REQ primitive.
|
|
GsmL1_MphActivateCnf_t mphActivateCnf; ///< Confirm the reception of a MPH-ACTIVATE_REQ primitive.
|
|
GsmL1_MphDeactivateCnf_t mphDeactivateCnf; ///< Confirm the reception of a MPH-DEACTIVATE_REQ primitive.
|
|
GsmL1_MphConfigCnf_t mphConfigCnf; ///< Confirm the reception of a MPH-CONFIG_REQ primitive.
|
|
GsmL1_MphMeasureCnf_t mphMeasureCnf; ///< Return the RSSI and freq. drift
|
|
GsmL1_MphTimeInd_t mphTimeInd; ///< Infom upper layer of the actual timeslot and frame number.
|
|
GsmL1_MphSyncInd_t mphSyncInd; ///< Synchronization status indication
|
|
GsmL1_PhEmptyFrameReq_t phEmptyFrameReq; ///< Layer 2 has nothing to transmit on a PH-READY-TO-SEND.
|
|
GsmL1_PhDataReq_t phDataReq; ///< Transfer a message frame unit to the layer 1.
|
|
GsmL1_PhConnectInd_t phConnectInd; ///< Inform layer 2 that a logical channel has connected on layer 1.
|
|
GsmL1_PhReadyToSendInd_t phReadyToSendInd; ///< Ask layer 3 for something to transmit.
|
|
GsmL1_PhDataInd_t phDataInd; ///< Transmit a message frame unit to layer 2.
|
|
GsmL1_PhRaInd_t phRaInd; ///< Inform the layer 2 of a random access initiated by the MS.
|
|
} u;
|
|
} GsmL1_Prim_t;
|
|
|
|
|
|
/****************************************************************************
|
|
* Public Functions *
|
|
****************************************************************************/
|
|
|
|
#ifdef _TMS320C6400
|
|
|
|
/****************************************************************************
|
|
* Public routines *
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Function : GsmL1_SendMphReq
|
|
************************************************************************//**
|
|
*
|
|
* This routine is used by the layer 3 to request a service from layer 1.
|
|
*
|
|
* @param [in] pMphReq
|
|
* Structure containing the primitive parameters
|
|
*
|
|
* @return
|
|
* GsmL1_Status_Success or the error code
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
GsmL1_Status_t GsmL1_SendMphReq( GsmL1_Prim_t *pMphReq );
|
|
|
|
/****************************************************************************
|
|
* Function : GsmL1_SendMphCnf
|
|
************************************************************************//**
|
|
*
|
|
* This routine is used by layer 1 to send the confirmation of a previously
|
|
* received request.
|
|
*
|
|
* @param [out] pMphCnf
|
|
* Structure containing the confirmation primitive parameters
|
|
*
|
|
* @return
|
|
* GsmL1_Status_Success or the error code
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
GsmL1_Status_t GsmL1_SendMphCnf( GsmL1_Prim_t *pMphCnf );
|
|
|
|
/****************************************************************************
|
|
* Function : GsmL1_SendMphInd
|
|
************************************************************************//**
|
|
*
|
|
* This routine is used by layer 1 to indicate something to layer 3.
|
|
*
|
|
* @param [out] pMphInd
|
|
* Structure containing indication primitive parameters
|
|
*
|
|
* @return
|
|
* GsmL1_Status_Success or the error code
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
GsmL1_Status_t GsmL1_SendMphInd( GsmL1_Prim_t *pMphInd );
|
|
|
|
/****************************************************************************
|
|
* Function : GsmL1_SendPhReq
|
|
************************************************************************//**
|
|
*
|
|
* This routine is used by the layer 2 to request a service from layer 1.
|
|
*
|
|
* @param [in] pPhReq
|
|
* Structure containing request primitive parameters
|
|
*
|
|
* @return
|
|
* GsmL1_Status_Success or the error code
|
|
*
|
|
* @ingroup gsml1_api_prim_ph
|
|
*
|
|
****************************************************************************/
|
|
GsmL1_Status_t GsmL1_SendPhReq( GsmL1_Prim_t *pPhReq );
|
|
|
|
/****************************************************************************
|
|
* Function : GsmL1_SendPhCnf
|
|
************************************************************************//**
|
|
*
|
|
* This routine is used by layer 1 to send the confirmation of a previously
|
|
* received request from layer 2.
|
|
*
|
|
* @param [out] pPhCnf
|
|
* Structure containing the confirmation primitive parameters
|
|
*
|
|
* @return
|
|
* GsmL1_Status_Success or the error code
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
GsmL1_Status_t GsmL1_SendPhCnf( GsmL1_Prim_t *pPhCnf );
|
|
|
|
/****************************************************************************
|
|
* Function : GsmL1_SendPhInd
|
|
************************************************************************//**
|
|
*
|
|
* This routine is used by layer 1 to indicate something to layer 2.
|
|
*
|
|
* @param [out] pPhInd
|
|
* Structure containing indication primitive parameters
|
|
*
|
|
* @return
|
|
* GsmL1_Status_Success or the error code
|
|
*
|
|
* @ingroup gsml1_api_prim_mph
|
|
*
|
|
****************************************************************************/
|
|
GsmL1_Status_t GsmL1_SendPhInd( GsmL1_Prim_t *pPhInd );
|
|
|
|
#endif // _TMS320C6400
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // extern "C"
|
|
|
|
#endif // GSML1PRIM_H__
|