blob: 9f90ac49141568764da82ba0e160d394537220cf [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 1998-2009 PacketVideo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
* -------------------------------------------------------------------
*/
// ----------------------------------------------------------------------
//
// This Software is an original work of authorship of PacketVideo Corporation.
// Portions of the Software were developed in collaboration with NTT DoCoMo,
// Inc. or were derived from the public domain or materials licensed from
// third parties. Title and ownership, including all intellectual property
// rights in and to the Software shall remain with PacketVideo Corporation
// and NTT DoCoMo, Inc.
//
// -----------------------------------------------------------------------
/************************************************************************/
/* file name : seml.h */
/* file contents : Maintenance Loop Signalling Entity */
/* : Management Header */
/* draw : '96.11.11 */
/*----------------------------------------------------------------------*/
/* amendment : */
/* Copyright (C) 1996 NTT DoCoMo */
/************************************************************************/
#ifndef _SEML_H_
#define _SEML_H_
/************************************************************************/
/* Headerfile Include */
/************************************************************************/
#include <string.h>
#include "h245pri.h"
#include "sebase.h"
/************************************************************************/
/* Definition */
/************************************************************************/
#define ML_OUTGOING_NOT_LOOPED 0X00 /* Outgoing Not Looped */
#define ML_OUTGOING_AWTING_RPS 0X10 /* Outgoing Awaiting Response */
#define ML_OUTGOING_LOOPED 0X20 /* Outgoing Looped */
#define ML_INCOMING_NOT_LOOPED 0X01 /* Incoming Not Looped */
#define ML_INCOMING_AWTING_RPS 0X11 /* Incoming Awaiting Response */
#define ML_INCOMING_LOOPED 0X21 /* Incoming Looped */
/************************************************************************/
/* Function Prototype Declare */
/************************************************************************/
class ML : public SEBase
{
public:
enum InOut { OUTGOING, INCOMING };
ML(InOut inout = OUTGOING) : SEBase()
{
T102TimerStop() ;
TmrSqcNumberClear() ;
if (inout == INCOMING) StatusWrite(ML_INCOMING_NOT_LOOPED);
else StatusWrite(ML_OUTGOING_NOT_LOOPED);
}
~ML() {}
void Reset()
{
T102TimerStop() ;
TmrSqcNumberClear() ;
if (StatusRead() & 0x01 /*INCOMING*/) StatusWrite(ML_INCOMING_NOT_LOOPED);
else StatusWrite(ML_OUTGOING_NOT_LOOPED);
}
void _0900_0000(PS_MlRequestType) ;
void _0901_0010(PS_MlRejectCause) ;
void _0901_0011(PS_MlRejectCause) ;
void _0901_0020(PS_MlRejectCause) ;
void _0902_0001(PS_MaintenanceLoopRequest) ;
void _0902_0011(PS_MaintenanceLoopRequest) ;
void _0903_0011(void) ;
void _0904_0010(PS_MaintenanceLoopAck) ;
void _0905_0010(PS_MaintenanceLoopReject) ;
void _0905_0020(PS_MaintenanceLoopReject) ;
void _0906_0010(int32) ;
void _0907_0011(void) ;
private:
ML(const ML&);
void MsgLoopReqSend(PS_MlRequestType);
void MsgLoopAckSend(void);
void MsgLoopRjtSend(PS_MlRejectCause);
void MsgLoopOffSend(void);
void PtvLoopIdcSend(PS_MaintenanceLoopRequest);
void PtvRlsIdcSend(int32, PS_MlRejectCause);
void PtvLoopCfmSend(void);
void PtvErrIdcSend(ENUM_ErrCode);
public:
uint8 StatusRead(void)
{
return Status;
}
private:
void StatusWrite(uint8 status)
{
#ifdef PVANALYZER
StatusShow(Status, status);
#endif
Status = status ;
}
#ifdef PVANALYZER
void StatusShow(uint8 oldStatus, uint8 newStatus);
char* StateLabel(uint8 status);
#endif
void LoopTypeRead(PS_MlRequestType pType)
{
oscl_memcpy((int8*)pType, (int8*)&LoopType, sizeof(S_MlRequestType));
}
void LoopTypeWrite(PS_MlRequestType pType)
{
oscl_memcpy((int8*)&LoopType, (int8*)pType, sizeof(S_MlRequestType));
}
void TmrSqcNumberClear(void)
{
TmrSqcNumber = 0;
}
int32 TmrSqcNumberRead(void)
{
return TmrSqcNumber;
}
void TmrSqcNumberInc(void)
{
TmrSqcNumber++;
}
void T102TimerStart(void);
void T102TimerStop(void);
int32 TmrSqcNumber;
uint8 Status;
S_MlRequestType LoopType ;
};
#endif /* _SEML_ */