亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? soc_int.c

?? Infineon公司有一款實現SHDSL協議(ADSL協議的變種)的芯片
?? C
字號:
/*******************************************************************************
       Copyright (c) 2000, Infineon Technologies.  All rights reserved.
  
                               No Warranty                                                 
   Because the program is licensed free of charge, there is no warranty for 
   the program, to the extent permitted by applicable law.  Except when     
   otherwise stated in writing the copyright holders and/or other parties   
   provide the program "as is" without warranty of any kind, either         
   expressed or implied, including, but not limited to, the implied         
   warranties of merchantability and fitness for a particular purpose. The  
   entire risk as to the quality and performance of the program is with     
   you.  should the program prove defective, you assume the cost of all     
   necessary servicing, repair or correction.                               
                                                                            
   In no event unless required by applicable law or agreed to in writing    
   will any copyright holder, or any other party who may modify and/or      
   redistribute the program as permitted above, be liable to you for        
   damages, including any general, special, incidental or consequential     
   damages arising out of the use or inability to use the program           
   (including but not limited to loss of data or data being rendered        
   inaccurate or losses sustained by you or third parties or a failure of   
   the program to operate with any other programs), even if such holder or  
   other party has been advised of the possibility of such damages. 
 *******************************************************************************       
   
   Module:        SOC_INT
   Product ID:    22622.1.0.1
   Description:   Contains interrupt handling of SOCRATES.
                                                      
 ******************************************************************************/

//  Group= SOC_INT 

/* ============================= */
/* Includes                      */
/* ============================= */

#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include "reg165.h"            

#include "sysdef.h"            
#include "dds.h"          
#include "sysvar.h"
#include "sysfunc.h"

#include "modid.h"


/* ============================= */
/* Global variable definition   */
/* ============================= */


/* ============================= */
/* Local function declaration    */
/* ============================= */

static void Soc_Interrupt_Routine (void);


/* ============================= */
/* Global function definition    */
/* ============================= */

/*******************************************************************************
Description:
   Initialization of SOCRATES interrupts.
Arguments:
   none
Return Value:
   none
*******************************************************************************/
void Soc_Interrupt_Init (void)
{
                                       /* Establishment of SOCRATES int.      */
   if (!IrqEstablish (G_Int_Vector[INT_SOCRATES]))     
   {
      printf ("\nSOCRATES: IrqEstablish failed");
      return;
   }
                                       /* Set SOCRATES interrupt routine.     */
   IrqSetEntry (G_Int_Vector[INT_SOCRATES], Soc_Interrupt_Routine);

                                       /* Set SOCRATES interrupt level.       */
   SET_INT0_LEVEL;
    
                                       /* Enable SOCRATES interrupts.         */
   Enable_Interrupt (INT_SOCRATES);

                                       /* Clear pending interrupts.           */
   Soc_Interrupt_Routine();
}

/*******************************************************************************
Description:
   Add an Interrupt event to Fifo.
Arguments:
   type  -  Type of event from T_INT_TYPE
   value -  one byte concerning to this event
Return Value:
   none
Remarks:
   none
*******************************************************************************/
void Soc_Int_Fifo_Put (T_INT_TYPE type, WORD32 value)
{
   G_Int_Fifo.Data[G_Int_Fifo.Head].Int_Type = type;
   G_Int_Fifo.Data[G_Int_Fifo.Head].Value = value;
   G_Int_Fifo.Head++;
}

/*******************************************************************************
Description:
   Get an Interrupt event from Fifo.
Arguments:
   value -  pointer for one value byte concerning to this event
Return Value:
   Type of event from T_INT_TYPE
Remarks:
   none
*******************************************************************************/
T_INT_TYPE Soc_Int_Fifo_Get (WORD32 *value)
{
   T_INT_TYPE  type;
   
   Disable_Interrupt (INT_SOCRATES);
   
   if (G_Int_Fifo.Tail == G_Int_Fifo.Head)
   {
      Enable_Interrupt (INT_SOCRATES);
      return NO_INT;
   }
   else
   {   
      *value   = G_Int_Fifo.Data[G_Int_Fifo.Tail].Value;
      type     = G_Int_Fifo.Data[G_Int_Fifo.Tail].Int_Type;
      //G_Int_Fifo.Data[G_Int_Fifo.Tail].Int_Type = NO_INT;
      G_Int_Fifo.Tail++;
      Enable_Interrupt (INT_SOCRATES);
      return type;
   }

}
   
/* ============================= */
/* Local function definition     */
/* ============================= */

/*******************************************************************************
Description:
   Handling of SOCRATES HDLC, HDLC-EOC and Transceiver interrupts.
Arguments:
   none
Return Value:
   none
Remarks:
   Handles all HDLC and HDLC-EOC interrupts by calling 
   Soc_Hdlc_XXX_Interrupt and Soc_Eoc_XXX_Interrupt.
   Also Transceiver interrupts are handled for controlling the g.hs state
   machine and making entries for time measurement.
*******************************************************************************/
static void Soc_Interrupt_Routine (void)
{
   WORD8 ista, sub, 
         ghs_state, rev_nr, 
         i;

   /* Start endless loop.                 */
   while (TRUE)
   {
      /* Read interrupt status register.     */
      ista = In(SOCRATES_ISTA);

      /* Break from loop if no         
      interrupt is indicated.             */
      if (!ista)                         
         break;

#ifndef INTEROP
      /* An HDLC_BZ interrupt has happened.  */
      if (ista & SOCRATES_ISTA_HDLCBZ)
      {
         /* Read HDLC interrupt status reg.     */
         sub = In(SOCRATES_ISTA_BZ);
         //V24_PRINT (("ISTA_BZ: 0x%X", sub));

         /* An HDLC transmit interrupt           
         has happened.                       */
         if (sub & SOCRATES_ISTA_BZ_XPR)
         {
            Soc_Hdlc_Transmit_Interrupt();
         }

         /* An HDLC receive interrupt           
         has happened.                       */
         if (sub & (SOCRATES_ISTA_BZ_RPF | SOCRATES_ISTA_BZ_RME))
         {
            Soc_Hdlc_Receive_Interrupt (sub & SOCRATES_ISTA_BZ_RPF);
         }

         /* HDLC error interrupt.               
         has happened.                       */
         if (sub & (SOCRATES_ISTA_BZ_XDU | SOCRATES_ISTA_BZ_RFO))
         {
            Soc_Hdlc_Error_Interrupt (sub);
         }

         /* bits are selectively cleared in subroutines */
      }
#endif

      /* An HDLC_E interrupt has happened.     */
      if (ista & SOCRATES_ISTA_HDLCE)
      {
         /* Read HDLC_E interrupt status reg.     */
         sub = In(SOCRATES_ISTA_E);


#ifndef INTEROP
         /* An HDLC_E transmit interrupt           
         has happened, TransmitPool is ready   */
         if (sub & SOCRATES_ISTA_E_XPR_E)
         {
            Soc_Eoc_Transmit_Interrupt();
         }

         /* An HDLC_E receive interrupt           
         has happened.                       */
         if (sub & SOCRATES_ISTA_E_RPF_E)
         {
            Soc_Eoc_Receive_Interrupt ();
         }

         /* HDLC_E error interrupt.               
         has happened.                       */
         if (sub & (SOCRATES_ISTA_E_XDOV_E | SOCRATES_ISTA_E_XDU_E | SOCRATES_ISTA_E_RFO_E))
         {
            Soc_Eoc_Error_Interrupt (sub);
         }
#endif
         
         /* In HDLC_E FIFO is G.hs data available */
         if (sub & SOCRATES_ISTA_E_GHDBR)
         {
            /* read first byte from FIFO, this is the revision number */
            rev_nr = In (SOCRATES_RFIFO_E);  
            
            /* check if Capability List or SNR data is to read */
            switch (rev_nr)
            {
                           /* CL is to read */
            case 0x01:
               G_Ghs_Cl_Upload [CL_REVNR_CL] = rev_nr;  
               G_Ghs_Cl_Upload [CL_NUMOCT]   = In (SOCRATES_RFIFO_E); 
               
               /* read upload capability list */
               for (i=2; i< G_Ghs_Cl_Upload [CL_NUMOCT]; i++)
                  G_Ghs_Cl_Upload [i] = In (SOCRATES_RFIFO_E);  
               
               /* reset FIFO and answer acknowledge first from program level 
                  cause CL printout takes time */
               /* reset RFIFO_E for upcoming CL */
               Out (SOCRATES_CMD_E, SOCRATES_CMD_E_RRES_E);
               /* wait for acknowledge */
               WHILE_NOT_ABORT ((In (SOCRATES_STAT_E) & SOCRATES_STAT_E_RRESA_E) != SOCRATES_STAT_E_RRESA_E);
               Out (SOCRATES_CMD_E, 0x00);   
               /* Soc_Int_Fifo_Put (RESET_RFIFO_E, 0);  */
#ifndef INTEROP
               /* set Capability list uploadable flag */
               Soc_Int_Fifo_Put (CL_UP_INT, 0);  
#endif
               break;

                           /* SNR is to read */
            case 0x10:
               G_Snr [0]   = rev_nr;  
               G_Snr [1]   = In (SOCRATES_RFIFO_E); 
               
               /* upload SNR data */
               for (i=2; (i<G_Snr [1]) && (i<SNR_LENGTH); i++)
                  G_Snr [i] = In (SOCRATES_RFIFO_E);  

               /* reset FIFO and answer acknowledge first from program level 
                  cause SNR printout takes time */
               /* reset RFIFO_E for upcoming CL */
               Out (SOCRATES_CMD_E, SOCRATES_CMD_E_RRES_E);
               /* wait for acknowledge */
               WHILE_NOT_ABORT ((In (SOCRATES_STAT_E) & SOCRATES_STAT_E_RRESA_E) != SOCRATES_STAT_E_RRESA_E);
               Out (SOCRATES_CMD_E, 0x00);   
               /*Soc_Int_Fifo_Put (RESET_RFIFO_E, 0);  */
#ifndef INTEROP
               /* set Capability list uploadable flag */
               Soc_Int_Fifo_Put (SNR_INT, 0);  
#endif
               break;

            default:
               /* reset FIFO anyway */
               Soc_Int_Fifo_Put (RESET_RFIFO_E, 0);  
               V24_PRINT (("\n(SLOT %d) Error: Unknown CL Revision 0x%2X to upload", SLOT_NR, rev_nr));
               break;
            }          
         }
         
         /* delete all entries */
         Out (SOCRATES_ISTA_E, 0x00);
      }


      /* A transceiver interrupt has happened */
      if (ista & SOCRATES_ISTA_TRAN)
      {
         /* Read Transceiver interrupt status reg.      */
         sub = In(SOCRATES_ISTATR);

         /* A TRAN status change has happened.                       */
         if (sub & SOCRATES_ISTATR_ATSC)
         {
            /* read state   */
            ghs_state = In(SOCRATES_TSTAT);
            
            /* indicate new state for poll loop */
            Soc_Int_Fifo_Put (ATSC_INT, ghs_state);         

            if (ghs_state == PROCESSING_CL)
               G_Processing_Cl = TRUE;
            else if (ghs_state == GHS_STARTUP)
            {
               /* reset RFIFO_E for upcoming CL */
               Out (SOCRATES_CMD_E, SOCRATES_CMD_E_RRES_E);
               /* wait for acknowledge */
               WHILE_NOT_ABORT ((In (SOCRATES_STAT_E) & SOCRATES_STAT_E_RRESA_E) != SOCRATES_STAT_E_RRESA_E);
               Out (SOCRATES_CMD_E, 0x00);   
            }
               
            /* if timer is running make entries */
            if (G_Timer.Status == TIMER_STATUS_RUNNING)
            {
               if (G_Timer.Mode == TIMER_MODE_ALL_STATES)
               {
                  /* log state and time counter */
                  G_Timer.Entry[G_Timer.Index].State      = ghs_state;
                  Disable_Interrupt (INT_TIMER);       
                  G_Timer.Entry[G_Timer.Index].Time_High  = G_Timer.Time_Counter >> 8;
                  G_Timer.Entry[G_Timer.Index].Time_Low   = G_Timer.Time_Counter & 0x00FF;
                  Enable_Interrupt (INT_TIMER);       
                  G_Timer.Index++;

                  if (ghs_state == G_Timer.Stop_State)
                  {
                     Stop_Timer (TIMER_MEASURE);
                     G_Timer.Length = G_Timer.Index;
                     G_Timer.Status = TIMER_STATUS_FINISHED;
                  }
               }
               else if (ghs_state == G_Timer.Stop_State)
               {
                  Stop_Timer (TIMER_MEASURE);
                  /* log state and time counter */
                  G_Timer.Entry[G_Timer.Index].State      = ghs_state;
                  Disable_Interrupt (INT_TIMER);       
                  G_Timer.Entry[G_Timer.Index].Time_High  = G_Timer.Time_Counter >> 8;
                  G_Timer.Entry[G_Timer.Index].Time_Low   = G_Timer.Time_Counter & 0x00FF;
                  Enable_Interrupt (INT_TIMER);       
                  G_Timer.Index++;
                  G_Timer.Length = G_Timer.Index;
                  /* indicate that time measurement has finished and can be reported */
                  G_Timer.Status = TIMER_STATUS_FINISHED;
               }

            }
            /* if timer shall be started check state */
            if (G_Timer.Status == TIMER_STATUS_ACTIVE)
               if (ghs_state == G_Timer.Start_State)
               {
                  Start_Timer(TIMER_MEASURE);
                  G_Timer.Status = TIMER_STATUS_RUNNING;
               }
         }

#ifndef INTEROP
         /* Transceiver status 2 changed */
         if (sub & SOCRATES_ISTATR_TST2C)
         {
            /* indicate new value for poll loop */
            Soc_Int_Fifo_Put (TST2C_INT, In (SOCRATES_TRSTAT_2));         
         }
         
         /* received overhead bits changed */
         if (sub & SOCRATES_ISTATR_OVHC)
         {
            /* indicate new value for poll loop */
            Soc_Int_Fifo_Put (OVHC_INT, (In (SOCRATES_RX_OVERH_2)<<8)|In (SOCRATES_RX_OVERH_1));         
         }
#endif         
         /* delete all transceiver interrupt */
         Out (SOCRATES_ISTATR, 0x00);
      }
   }
}
                                                      




                         

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色老头久久综合| av中文字幕一区| 欧美一区二区三区免费观看视频| 午夜欧美在线一二页| 欧美喷水一区二区| 日本不卡高清视频| 久久中文字幕电影| 成人国产精品免费网站| 成人欧美一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 亚洲国产一区二区a毛片| 日韩一区二区三区视频| 国产一区二区不卡在线| ...xxx性欧美| 欧美一区二区三区婷婷月色| 国产一区二区三区免费观看| 中文字幕日本不卡| 91精品国产综合久久婷婷香蕉 | 日本一区二区三区免费乱视频| 国产成人综合在线播放| 亚洲自拍都市欧美小说| 精品国产一区久久| 日本久久电影网| 久草在线在线精品观看| 亚洲日本在线观看| 日韩精品一区二区三区在线| 91丝袜国产在线播放| 日韩高清不卡在线| 中文字幕亚洲区| 日韩女优视频免费观看| 91美女在线看| 国产精品夜夜嗨| 午夜电影一区二区三区| 1区2区3区欧美| 亚洲精品在线免费观看视频| 欧美色精品天天在线观看视频| 国产精品1024久久| 日韩精品欧美精品| 亚洲人成亚洲人成在线观看图片 | 国产成人av电影| 日韩电影在线一区| 亚洲精品日韩综合观看成人91| 欧美v亚洲v综合ⅴ国产v| 欧美综合欧美视频| proumb性欧美在线观看| 国产一区二区在线观看视频| 亚洲va欧美va人人爽午夜| 中文字幕av一区二区三区高| 日韩美一区二区三区| 欧美日韩亚洲丝袜制服| 色综合天天天天做夜夜夜夜做| 国产一区二区看久久| 美脚の诱脚舐め脚责91| 性做久久久久久免费观看| 1区2区3区国产精品| 国产日韩精品一区二区浪潮av| 欧美一区二区福利视频| 欧美日韩夫妻久久| 欧美亚洲图片小说| 91福利小视频| 色狠狠色狠狠综合| 91丨porny丨国产| jiyouzz国产精品久久| 粉嫩蜜臀av国产精品网站| 国产精品一区一区三区| 国内精品国产三级国产a久久| 免费成人美女在线观看| 免费观看日韩av| 美女高潮久久久| 麻豆精品在线视频| 久久不见久久见免费视频1| 免费在线成人网| 老鸭窝一区二区久久精品| 免费成人美女在线观看.| 免费高清在线一区| 精品一区二区免费在线观看| 毛片基地黄久久久久久天堂| 青青草91视频| 久久99精品久久久久婷婷| 精品一区二区三区av| 国产乱国产乱300精品| 国产精品中文字幕一区二区三区| 国产一区二区免费看| 国产福利91精品一区二区三区| 国产精品综合网| 成人在线视频一区二区| 99久久精品国产观看| 91久久一区二区| 欧美日韩情趣电影| 91精品国产欧美日韩| 日韩三级视频在线观看| 亚洲精品在线一区二区| 国产三级欧美三级日产三级99 | 国产亚洲制服色| 久久久99久久精品欧美| 日本一区二区成人在线| 一区二区三区在线视频免费| 日日骚欧美日韩| 看电影不卡的网站| 成人国产免费视频| 欧美性受xxxx黑人xyx性爽| 欧美久久久久久久久久| 欧美成人一区二区三区在线观看 | 懂色一区二区三区免费观看| 成人免费不卡视频| 欧美性受xxxx| 久久久欧美精品sm网站| 一区二区三区蜜桃| 久久国产精品露脸对白| 99久久久国产精品| 欧美男男青年gay1069videost | 麻豆精品国产91久久久久久| 国产精品一二三区在线| 欧美性xxxxxx少妇| 久久伊人蜜桃av一区二区| 亚洲精品一二三| 精品一区二区日韩| 色综合久久久久久久| 日韩欧美成人一区| 亚洲免费观看高清| 黄色小说综合网站| 在线精品视频小说1| 精品免费日韩av| 伊人色综合久久天天| 国产精品一区二区三区99| 欧美视频精品在线| 国产精品视频yy9299一区| 日韩国产高清在线| 91社区在线播放| 久久九九99视频| 五月开心婷婷久久| 色婷婷久久一区二区三区麻豆| 精品精品欲导航| 丝袜美腿一区二区三区| 99视频在线精品| 久久这里只有精品视频网| 亚洲成在人线在线播放| 91麻豆免费观看| 中文av一区二区| 国产精品一级二级三级| 欧美一区二区三区在线电影| 亚洲色欲色欲www在线观看| 国产在线播放一区二区三区| 8x8x8国产精品| 亚洲一区二区三区四区在线免费观看| 成人小视频免费在线观看| 欧美成人性战久久| 日韩 欧美一区二区三区| 欧美专区亚洲专区| 亚洲码国产岛国毛片在线| 成人激情文学综合网| 国产亚洲成aⅴ人片在线观看| 久久99精品国产麻豆婷婷| 欧美精品xxxxbbbb| 亚洲va中文字幕| 欧美日韩一区在线观看| 亚洲一区二区三区视频在线 | 国产欧美日韩麻豆91| 久草中文综合在线| 欧美一二三四在线| 日韩制服丝袜先锋影音| 在线电影一区二区三区| 亚洲一级片在线观看| 99riav一区二区三区| 1024精品合集| 91国产福利在线| 一区二区三区丝袜| 色哟哟日韩精品| 亚洲最快最全在线视频| 欧美少妇一区二区| 日一区二区三区| 日韩免费看的电影| 老色鬼精品视频在线观看播放| 欧美一区日本一区韩国一区| 卡一卡二国产精品| 国产欧美一区二区三区鸳鸯浴| 国产精品88888| 日韩一区欧美小说| 国产亲近乱来精品视频| 成人免费看黄yyy456| **网站欧美大片在线观看| 91丨porny丨首页| 亚洲国产美国国产综合一区二区| 在线观看网站黄不卡| 亚洲成人在线观看视频| 91精品国产免费| 精品在线亚洲视频| 国产农村妇女精品| 97久久精品人人做人人爽50路| 亚洲人成在线播放网站岛国| 欧美日韩精品一区二区在线播放| 午夜精品123| 国产亚洲欧洲997久久综合| 99久久99久久精品国产片果冻| 亚洲大片一区二区三区| 久久亚洲一区二区三区明星换脸| 成人免费电影视频| 午夜影院久久久| 国产亚洲女人久久久久毛片| 91在线一区二区三区|