/******************************************************************************* | |
Copyright (C) Marvell International Ltd. and its affiliates | |
This software file (the "File") is owned and distributed by Marvell | |
International Ltd. and/or its affiliates ("Marvell") under the following | |
alternative licensing terms. Once you have made an election to distribute the | |
File under one of the following license alternatives, please (i) delete this | |
introductory statement regarding license alternatives, (ii) delete the two | |
license alternatives that you have not elected to use and (iii) preserve the | |
Marvell copyright notice above. | |
******************************************************************************** | |
Marvell Commercial License Option | |
If you received this File from Marvell and you have entered into a commercial | |
license agreement (a "Commercial License") with Marvell, the File is licensed | |
to you under the terms of the applicable Commercial License. | |
******************************************************************************** | |
Marvell GPL License Option | |
If you received this File from Marvell, you may opt to use, redistribute and/or | |
modify this File in accordance with the terms and conditions of the General | |
Public License Version 2, June 1991 (the "GPL License"), a copy of which is | |
available along with the File in the license.txt file or by writing to the Free | |
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or | |
on the worldwide web at http://www.gnu.org/licenses/gpl.txt. | |
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED | |
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY | |
DISCLAIMED. The GPL License provides additional details about this warranty | |
disclaimer. | |
******************************************************************************** | |
Marvell BSD License Option | |
If you received this File from Marvell, you may opt to use, redistribute and/or | |
modify this File under the following licensing terms. | |
Redistribution and use in source and binary forms, with or without modification, | |
are permitted provided that the following conditions are met: | |
* Redistributions of source code must retain the above copyright notice, | |
this list of conditions and the following disclaimer. | |
* Redistributions in binary form must reproduce the above copyright | |
notice, this list of conditions and the following disclaimer in the | |
documentation and/or other materials provided with the distribution. | |
* Neither the name of Marvell nor the names of its contributors may be | |
used to endorse or promote products derived from this software without | |
specific prior written permission. | |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR | |
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | |
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
******************************************************************************/ | |
/******************************************************************************/ | |
/** **/ | |
/** MODULE : ONU EPON **/ | |
/** **/ | |
/** FILE : eponOnuAlrm.c **/ | |
/** **/ | |
/** DESCRIPTION : This file implements ONU EPON Alarm and Statistics **/ | |
/** functionality **/ | |
/** **/ | |
/****************************************************************************** | |
* * | |
* MODIFICATION HISTORY: * | |
* * | |
* 26Jan10 oren_ben_hayun created * | |
* ========================================================================== * | |
* | |
******************************************************************************/ | |
/* Include Files | |
------------------------------------------------------------------------------*/ | |
#include "eponOnuHeader.h" | |
/* Local Constant | |
------------------------------------------------------------------------------*/ | |
#define __FILE_DESC__ "mv_pon/core/epon/eponOnuAlrm.c" | |
/* Global Variables | |
------------------------------------------------------------------------------*/ | |
/* Local Variables | |
------------------------------------------------------------------------------*/ | |
MV_U32 onuEponPreviousAlarm = 0; | |
MV_U32 onuEponCurrentAlarm = 0; | |
MV_U32 onuEponLosAlarm = 0; | |
/* Export Functions | |
------------------------------------------------------------------------------*/ | |
/* Local Functions | |
------------------------------------------------------------------------------*/ | |
void onuEponAlarmProcess(void); | |
/******************************************************************************/ | |
/* ========================================================================== */ | |
/* Alarm Section */ | |
/* ========================================================================== */ | |
/******************************************************************************/ | |
/******************************************************************************* | |
** | |
** onuEponAlarmSet | |
** ____________________________________________________________________________ | |
** | |
** DESCRIPTION: The function set onu epon alarm | |
** | |
** PARAMETERS: MV_U32 alarm | |
** MV_BOOL status | |
** | |
** OUTPUTS: None | |
** | |
** RETURNS: MV_OK | |
** | |
*******************************************************************************/ | |
MV_STATUS onuEponAlarmSet(MV_U32 alarm, MV_BOOL state) | |
{ | |
if ((alarm & ONU_EPON_ALARM_MASK) == 0) | |
{ | |
mvPonPrint(PON_PRINT_ERROR, PON_ALARM_MODULE, | |
"ERROR: (%s:%d) invalid alarm(%d) type\n\r", __FILE_DESC__, __LINE__, alarm); | |
return(MV_ERROR); | |
} | |
if (state == MV_FALSE) | |
{ | |
onuEponCurrentAlarm &= ~(alarm); | |
} | |
else | |
{ | |
onuEponCurrentAlarm |= (alarm); | |
} | |
onuEponAlarmProcess(); | |
return(MV_OK); | |
} | |
/******************************************************************************* | |
** | |
** onuEponAlarmProcess | |
** ____________________________________________________________________________ | |
** | |
** DESCRIPTION: The function process the current alarm state and notify screen | |
** | |
** PARAMETERS: MV_U32 macId | |
** | |
** OUTPUTS: None | |
** | |
** RETURNS: None | |
** | |
*******************************************************************************/ | |
void onuEponAlarmProcess(void) | |
{ | |
MV_U32 onuEponPreviousAlarmState; | |
MV_U32 onuEponCurrentAlarmState; | |
MV_U32 onuEponChangeAlarm; | |
/* get the ASIC prvious alarm status */ | |
onuEponPreviousAlarmState = onuEponPreviousAlarm; | |
/* get the ASIC current alarm status */ | |
onuEponCurrentAlarmState = onuEponCurrentAlarm; | |
/* Init PON los alarm */ | |
onuEponLosAlarm = 0; | |
/* alarm changed */ | |
if ((onuEponCurrentAlarmState ^ onuEponPreviousAlarmState) != 0) | |
{ | |
onuEponChangeAlarm = (onuEponCurrentAlarmState ^ onuEponPreviousAlarmState); | |
if ((onuEponChangeAlarm & onuEponCurrentAlarmState) != 0) | |
{ | |
if (onuEponChangeAlarm & ONU_EPON_XVR_SD_MASK) | |
{ | |
mvPonPrint(PON_PRINT_INFO, PON_ALARM_MODULE, | |
"INFO: (%s:%d) === XVR SD Off ===\n\r", __FILE_DESC__, __LINE__); | |
onuEponLosAlarm |= 0x01; | |
} | |
if (onuEponChangeAlarm & ONU_EPON_SERDES_SD_MASK) | |
{ | |
mvPonPrint(PON_PRINT_INFO, PON_ALARM_MODULE, | |
"INFO: (%s:%d) === SERDES SD Off ===\n\r", __FILE_DESC__, __LINE__); | |
onuEponLosAlarm |= 0x02; | |
} | |
} | |
else /* ((onuEponChangeAlarm & onuEponCurrentAlarmState) == 0) */ | |
{ | |
if (onuEponChangeAlarm & ONU_EPON_XVR_SD_MASK) | |
{ | |
mvPonPrint(PON_PRINT_INFO, PON_ALARM_MODULE, | |
"INFO: (%s:%d) === XVR SD On ===\n\r", __FILE_DESC__, __LINE__); | |
onuEponLosAlarm |= 0x01<<8; | |
} | |
if (onuEponChangeAlarm & ONU_EPON_SERDES_SD_MASK) | |
{ | |
mvPonPrint(PON_PRINT_INFO, PON_ALARM_MODULE, | |
"INFO: (%s:%d) === SERDES SD On ===\n\r", __FILE_DESC__, __LINE__); | |
onuEponLosAlarm |= 0x02<<8; | |
} | |
} | |
onuEponPreviousAlarm = onuEponCurrentAlarmState; | |
} | |
} | |
/******************************************************************************* | |
** | |
** onuEponAlarmGet | |
** ____________________________________________________________________________ | |
** | |
** DESCRIPTION: The function return current alarm status | |
** | |
** PARAMETERS: MV_U32 *alarm | |
** | |
** OUTPUTS: None | |
** | |
** RETURNS: None | |
** | |
*******************************************************************************/ | |
void onuEponAlarmGet(MV_U32 *alarm) | |
{ | |
alarm[0] = ((onuEponCurrentAlarm & ONU_EPON_XVR_SD_MASK) != 0) ? (1) : (0); | |
alarm[1] = ((onuEponCurrentAlarm & ONU_EPON_SERDES_SD_MASK) != 0) ? (1) : (0); | |
} | |
/******************************************************************************* | |
** | |
** onuEponLosAlarmGet | |
** ____________________________________________________________________________ | |
** | |
** DESCRIPTION: The function return current PON los alarm status | |
** | |
** PARAMETERS: MV_U32 *alarm | |
** | |
** OUTPUTS: None | |
** | |
** RETURNS: None | |
** | |
*******************************************************************************/ | |
void onuEponLosAlarmGet(MV_U32 *alarm) | |
{ | |
*alarm = onuEponLosAlarm; | |
/* Set PON los alarm to default value */ | |
//onuEponLosAlarm = 0; | |
} |