⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readchip.c

📁 pdh控制程序
💻 C
字号:
#ifndef _READ_CHIP_C_
#define _READ_CHIP_C_

#include "api.h"

void get_chip_e1_use_status( SYSTEM_INFOMATION *psys, SYSTEM_DEVICE_STATUS *psdev  )
{
	BYTE local_e1_use;
	BYTE counter;

	local_e1_use = ReadChip( LOCAL_E1USE_ADDR );

	if( psys->e1_use != local_e1_use )
	{
		psys->e1_use = local_e1_use;

		for(counter=0; counter<psys->max_system_e1; counter++)
		{
			if( (psys->e1_use)&(BIT0<<counter) )
				psdev->local.e1_status[counter] &= ~BIT6;
			else
				psdev->local.e1_status[counter] |= BIT6;

			psdev->local.e1_status[counter] &= E1_NOALARM;
			if( ((psys->alarm[4]>>counter)&BIT0) && ((psys->e1_use>>counter)&BIT0) )
				psdev->local.e1_status[counter] |= E1_ALARM;
		}
	}
}
/*
void get_chip_fiber_alarm_status( SYSTEM_DEVICE_STATUS *psdev  )
{
	BYTE chip_status;
	BYTE fiber;

	chip_status = ReadChip( LOCAL_STATUS_ADDR );

	fiber = get_use_fiber( psdev->local.fiber_status );
	fiber = ( fiber + 1 ) % MAX_FIBER_NOMBER;

	psdev->local.fiber_status[fiber] &= FIBER_NOALARM;
	if( !((chip_status>>fiber)&BIT0) )
	{
		psdev->local.fiber_status[fiber] |= FIBER_LOS;
	}

    if( check_remote_status() == ALARM )
	{
		psdev->remote.fiber_status[0] &= FIBER_NOALARM;
		psdev->remote.fiber_status[1] &= FIBER_NOALARM;
	}
}
*/

void get_chip_fiber_use_status( SYSTEM_DEVICE_STATUS *psdev )
{
	BYTE chip_status;
	static BYTE chip_status_preview = INVALID;
	SYSTEM_INFOMATION *psys = &gSystemInfo;

	chip_status = ReadChip( LOCAL_HOOKSTATUS_ADDR );
	if( chip_status_preview != chip_status )
	{
		chip_status_preview = chip_status;

		if( !(chip_status&BIT1) )
		{
			psys->setbuffer[1] |= BIT4;
		}
		else
			psys->setbuffer[1] &= ~BIT4;
		psys->sendrc7017 = SETCMDSERIAL;
		psys->SetCommandCounter = 0;

		return;
	}

	if( !(chip_status&BIT2) )
	{
		psdev->local.fiber_status[0] &= FIBER_USE;
		psdev->local.fiber_status[1] |= FIBER_NOUSE;
	}
	else
	{
		psdev->local.fiber_status[0] |= FIBER_NOUSE;
		psdev->local.fiber_status[1] &= FIBER_USE;
	}
}

BYTE system_alarm_status( BYTE *e1_status, BYTE *fiber_status )
{
	BYTE fiber_alarm;
	BYTE e1_alarm;

	e1_alarm = light_e1_alarm( e1_status );
	fiber_alarm = light_fiber( fiber_status );
	if( (e1_alarm != INVALID) || (fiber_alarm != INVALID) )
		return NOALARM;
	return ALARM;
}

void chip_alarm_scan( void )
{
	SYSTEM_INFOMATION *psys = &gSystemInfo;
	SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
	BYTE alarm;

	get_chip_e1_use_status( psys, psdev );
/*	get_chip_fiber_alarm_status( psdev );*/
	get_chip_fiber_use_status( psdev );

	alarm = system_alarm_status( psdev->local.e1_status, psdev->local.fiber_status );
	psdev->local.alarm_hook &= 0x0f;
	psdev->local.alarm_hook |= (alarm<<4);

	alarm = system_alarm_status( psdev->remote.e1_status, psdev->remote.fiber_status );
	psdev->remote.alarm_hook &= 0x0f;
	psdev->remote.alarm_hook  |= (alarm<<4);

    if( (gSystemInfo.remote_fiber_status[0] == ALARM)
	&& (gSystemInfo.remote_fiber_status[1] == ALARM) )
    {
        psdev->remote.alarm_hook |= 0x10;
        psdev->remote.laser_close[1] = 0;
    }
    else
        psdev->remote.laser_close[1] = 1;

}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -