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

📄 socrat_b.c

📁 Infineon公司有一款实现SHDSL协议(ADSL协议的变种)的芯片
💻 C
📖 第 1 页 / 共 4 页
字号:

    DdsMsgFree (pMsg);
}
/*******************************************************************************
Description:
   Sets the entries 63 to 74 of the capability list for the
   lineprobing parameter and rates.
Arguments:
   pMsg  -  Pointer to received message.
Return:
   NONE.
Remarks:
   None.
Author:
    CM 09.03.01
 ******************************************************************************/
static void Msg_Soc_Cl_Probe_Rates_Up (P_DDS_MSG pMsg)
{
    G_Ghs_Capability_List[CL_PBOUP]     = MsgReadWord8 (pMsg, 0);  /*PowerBackoff up */
    G_Ghs_Capability_List[CL_BRATEUP1]  = MsgReadWord8 (pMsg, 1);   /*B-Channels */
    G_Ghs_Capability_List[CL_BRATEUP2]  = MsgReadWord8 (pMsg, 2); 
    G_Ghs_Capability_List[CL_BRATEUP3]  = MsgReadWord8 (pMsg, 3);
    G_Ghs_Capability_List[CL_BRATEUP4]  = MsgReadWord8 (pMsg, 4); 
    G_Ghs_Capability_List[CL_BRATEUP5]  = MsgReadWord8 (pMsg, 5);   
    G_Ghs_Capability_List[CL_BRATEUP6]  = MsgReadWord8 (pMsg, 6);
    G_Ghs_Capability_List[CL_BRATEUP7]  = MsgReadWord8 (pMsg, 7);
    G_Ghs_Capability_List[CL_FIX1_UP]   = MsgReadWord8 (pMsg, 8);  
    G_Ghs_Capability_List[CL_FIX2_UP]   = MsgReadWord8 (pMsg, 9);  
    G_Ghs_Capability_List[CL_DURATUP]   = MsgReadWord8 (pMsg, 10);  /*Line burst duration */
    G_Ghs_Capability_List[CL_SCRAMBUP]  = MsgReadWord8 (pMsg, 11);  /*Scrambler */

    DdsMsgFree (pMsg);
}

/*******************************************************************************
Description:
   Makes the entries 75 to 80 of the capability list concerning framing parameters.
Arguments:
   pMsg  -  Pointer to received message.
Return:
   NONE.
Remarks:
   None.
Author:
    CM 14.11.00
 ******************************************************************************/
static void Msg_Soc_Cl_Framing (P_DDS_MSG pMsg)
{
    G_Ghs_Capability_List[CL_STUFFBIT_DN]   = MsgReadWord8 (pMsg, 0);   /*Stuff bits */
    G_Ghs_Capability_List[CL_SYNCOC1_DN]    = MsgReadWord8 (pMsg, 1);   /*Sync word */
    G_Ghs_Capability_List[CL_SYNCOC2_DN]    = MsgReadWord8 (pMsg, 2);   

    G_Ghs_Capability_List[CL_STUFFBIT_UP]   = MsgReadWord8 (pMsg, 3);   /*Stuff bits */
    G_Ghs_Capability_List[CL_SYNCOC1_UP]    = MsgReadWord8 (pMsg, 4);   /*Sync word */
    G_Ghs_Capability_List[CL_SYNCOC2_UP]    = MsgReadWord8 (pMsg, 5);

    DdsMsgFree (pMsg);
}

/*******************************************************************************
Description:
   Makes the entries 81 to 89 of the capability list concerning TPS-settings
   for Annex A.
Arguments:
   pMsg  -  Pointer to received message.
Return:
   NONE.
Remarks:
   None.
Author:
    CM 22.11.00
 ******************************************************************************/
static void Msg_Soc_Cl_TPS_A (P_DDS_MSG pMsg)
{
    G_Ghs_Capability_List[CL_TPSCLOCK_A]    = MsgReadWord8 (pMsg, 0);
    G_Ghs_Capability_List[CL_TPSCHANNEL_A]  = MsgReadWord8 (pMsg, 1);
    G_Ghs_Capability_List[CL_TPSISDN_A]     = MsgReadWord8 (pMsg, 2);   

    G_Ghs_Capability_List[CL_DUALTPS1_A]    = MsgReadWord8 (pMsg, 3);
    G_Ghs_Capability_List[CL_DUALTPS2_A]    = MsgReadWord8 (pMsg, 4);
    G_Ghs_Capability_List[CL_DUALTPS3_A]    = MsgReadWord8 (pMsg, 5);
    G_Ghs_Capability_List[CL_DUALTPS4_A]    = MsgReadWord8 (pMsg, 6);
    G_Ghs_Capability_List[CL_DUALTPS5_A]    = MsgReadWord8 (pMsg, 7);
    G_Ghs_Capability_List[CL_DUALTPS6_A]    = MsgReadWord8 (pMsg, 8);

    DdsMsgFree (pMsg);
}

/*******************************************************************************
Description:
   Makes the entries 90 to 99 of the capability list concerning TPS-settings
   for Annex B.
Arguments:
   pMsg  -  Pointer to received message.
Return:
   NONE.
Remarks:
   None.
Author:
    CM 22.11.00
 ******************************************************************************/
static void Msg_Soc_Cl_TPS_B (P_DDS_MSG pMsg)
{
    G_Ghs_Capability_List[CL_TPSCLOCK_B]    = MsgReadWord8 (pMsg, 0);
    G_Ghs_Capability_List[CL_TPSCHANNEL1_B] = MsgReadWord8 (pMsg, 1);
    G_Ghs_Capability_List[CL_TPSCHANNEL2_B] = MsgReadWord8 (pMsg, 2);
    G_Ghs_Capability_List[CL_TPSISDN_B]     = MsgReadWord8 (pMsg, 3);   

    G_Ghs_Capability_List[CL_DUALTPS1_B]    = MsgReadWord8 (pMsg, 4);
    G_Ghs_Capability_List[CL_DUALTPS2_B]    = MsgReadWord8 (pMsg, 5);
    G_Ghs_Capability_List[CL_DUALTPS3_B]    = MsgReadWord8 (pMsg, 6);
    G_Ghs_Capability_List[CL_DUALTPS4_B]    = MsgReadWord8 (pMsg, 7);
    G_Ghs_Capability_List[CL_DUALTPS5_B]    = MsgReadWord8 (pMsg, 8);
    G_Ghs_Capability_List[CL_DUALTPS6_B]    = MsgReadWord8 (pMsg, 9);

    DdsMsgFree (pMsg);
}

/*******************************************************************************
Description:
   Starts the time measurement between two transceiver states.
Arguments:
   pMsg  -  Pointer to received message.
Return:
   NONE.
Remarks:
   A previous started measurement can be overridden by a later call
   of Msg_Soc_State_Time. 
 ******************************************************************************/
static void Msg_Soc_State_Time (P_DDS_MSG pMsg)
{
   WORD8 mode;
   const WORD8  *error_text = NULL;
   
   G_V24       = MsgReadWord8 (pMsg, 0);
   mode        = MsgReadWord8 (pMsg, 1);

   if (mode > 0x03) error_text = "MODE";

   if (error_text == NULL)
   {
      if (mode == TIMER_MODE_FORCE_INDICATION)
      {
         Stop_Timer(TIMER_MEASURE);
         G_Timer.Length = G_Timer.Index;
         G_Timer.Status = TIMER_STATUS_FINISHED;
         /* indication is invoked by main polling loop */
      }
      else
      {
         /* reset entry counter */
         G_Timer.Index        = 0x00;
         G_Timer.Length       = 0x00;
         G_Timer.Status       = TIMER_STATUS_ACTIVE;
         
         G_Timer.Start_State  = MsgReadWord8 (pMsg, 2);
         G_Timer.Stop_State   = MsgReadWord8 (pMsg, 3);
         G_Timer.Mode         = mode;
      }
   }
   else
   {                                  /* V24 control message:          
                                       When error.                         */
     V24_PRINT (("\nSocrates_State_Time: %s ", Error_Text_Start));
     V24_PRINT (("%s ", error_text));     
     V24_PRINT (("%s", Error_Text_End));     
   } 

   DdsMsgFree (pMsg);
}

/*******************************************************************************
Description:
   Send the logged state times to PC.
Arguments:
   NONE.
Return:
   NONE.
Remarks:
   NONE.
 ******************************************************************************/
void Msg_Soc_Indicate_State_Time (void)
{
   P_DDS_MSG pMsg;
   WORD8 i;
  
   /* Send V24INT control messages  
   to serial interface.                */
   V24_PRINT (("\n(SLOT %d) i_Socrates_State_Time: ", SLOT_NR));

   /* Check if message is available.       */
   if (DdsMsgGetNum () > 3)   
   {
      /* Send message to user.                */
      pMsg = DdsMsgAlloc((G_Timer.Length * 3) + 0x02);   
      pMsg->dst     = 0;
      pMsg->src     = MOD_ID_SOCRATES_MODULE;
      pMsg->id      = MSG_ID_SOCRATES_INDICATE_STATE_TIME;
      pMsg->length  = (G_Timer.Length * 3) + 0x02;
      MsgWriteWord8 (pMsg, 0, G_Timer.Length);
      MsgWriteWord8 (pMsg, 1, G_Timer.Start_State);
      V24_PRINT (("0x%2X, 0x%2X", G_Timer.Length, G_Timer.Start_State));
      for (i=0; i<G_Timer.Length; i++)
      {
         MsgWriteWord8 (pMsg, (3*i)+2, G_Timer.Entry[i].State);
         MsgWriteWord8 (pMsg, (3*i)+3, G_Timer.Entry[i].Time_High);
         MsgWriteWord8 (pMsg, (3*i)+4, G_Timer.Entry[i].Time_Low);
         V24_PRINT (("\n\t0x%2X, 0x%2X, 0x%2X",G_Timer.Entry[i].State, 
            G_Timer.Entry[i].Time_High, G_Timer.Entry[i].Time_Low));
      }

      DdsMsgSend (pMsg); 
   }
   else
      V24_PRINT (("Error allocating message"));

   G_Timer.Status = TIMER_STATUS_IDLE;
}


/*******************************************************************************
Description:
   Send different interrupt events to PC.
Arguments:
   type  -  Event type
   nr    -  number of data bytes in pointer data
   data  -  pointer to data bytes to transmit
Return:
   NONE.
Remarks:
   NONE.
 ******************************************************************************/
void Msg_Soc_Interrupt (T_INT_TYPE type, WORD8 nr, const WORD8 *data)       
{
   P_DDS_MSG pMsg;
   WORD8 i;

   if (nr > 254) return;
   
   /* Send V24INT control messages  
   to serial interface.                */
   V24_PRINT (("\n(SLOT %d) i_Socrates_Interrupt: ", SLOT_NR));

   /* Check if message is available.       */
   if (DdsMsgGetNum () > 3)   
   {
      /* Send message to user.                */
      pMsg = DdsMsgAlloc(nr+2);   
      pMsg->dst     = 0;
      pMsg->src     = MOD_ID_SOCRATES_MODULE;
      pMsg->id      = MSG_ID_SOCRATES_INTERRUPT;
      pMsg->length  = nr+2;
      MsgWriteWord8 (pMsg, 0, type);
      MsgWriteWord8 (pMsg, 1, nr);

      for (i=0; i<nr; i++)
         MsgWriteWord8 (pMsg, i+2, data[i]);

      DdsMsgSend (pMsg); 
   }
   else
      V24_PRINT (("Error allocating message"));
}   
      


/*******************************************************************************
Description:
   Message entry function of this module. Assigns all module functions to 
   the according function identifier.
Arguments:
   pMsg  -  Pointer to received message.
Return:
   NONE.
Remarks:
   NONE.
 ******************************************************************************/
static void Socrates_Msg_Entry (P_DDS_MSG pMsg)
{ 
   switch (pMsg->id)
   {
   case MSG_ID_SOCRATES_SET_TRANSFER:
      Msg_Soc_Set_Transfer (pMsg);
      break;

   case MSG_ID_SOCRATES_SET_EPIC_SWITCH:
      Msg_Soc_Set_Epic_Switch (pMsg);
      break;

   case MSG_ID_SOCRATES_HDLC_BZ_RESET:
      Msg_Soc_Hdlc_Reset (pMsg);
      break;

   case MSG_ID_SOCRATES_HDLC_BZ_TRANSMIT:
      Msg_Soc_Hdlc_Transmit (pMsg);
      break;

   case MSG_ID_SOCRATES_HDLC_E_RESET:
      Msg_Soc_Eoc_Reset (pMsg);
      break;

   case MSG_ID_SOCRATES_HDLC_E_TRANSMIT:
      Msg_Soc_Eoc_Transmit (pMsg);
      break;

   case MSG_ID_SOCRATES_HDLC_E_TRANSMIT_BLOCK:
      Msg_Soc_Eoc_Transmit_Block (pMsg);
      break;

   case MSG_ID_SOCRATES_GHS_GENERAL_CONFIGURATION:
      V24_PRINT (("\nSocrates_Ghs_General_Configuration is not longer supported.")); 
      V24_PRINT (("\n\tPlease use Socrates_Cl-messages instead."));
      DdsMsgFree (pMsg);
      break;

   case MSG_ID_SOCRATES_GHS_DATA_RATES:
      V24_PRINT (("\nSocrates_Ghs_Data_Rates is not longer supported.")); 
      V24_PRINT (("\n\tPlease use Socrates_Cl-messages instead."));
      DdsMsgFree (pMsg);
      break;

   case MSG_ID_SOCRATES_GHS_TRANSMISSION_MODE:
      V24_PRINT (("\nSocrates_Ghs_Transmission_Mode is not longer supported.")); 
      V24_PRINT (("\n\tPlease use Socrates_Cl-messages instead."));
      DdsMsgFree (pMsg);
      break;

   case MSG_ID_SOCRATES_GHS_SET_STATE:
      Msg_Soc_Ghs_Set_State (pMsg);
      break;

   case MSG_ID_SOCRATES_GHS_INDICATE_STATE:
      Msg_Soc_Ghs_Indicate_State (pMsg);
      break;

   case MSG_ID_SOCRATES_GHS_ACTIVATE:
      Msg_Soc_Ghs_Activate (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_BASIC:
      Msg_Soc_Cl_Basic_Settings (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_PARAM:
      Msg_Soc_Cl_Parameter (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_STD_INFO:
      Msg_Soc_Cl_Std_Info (pMsg);
      break;

#ifdef DEBUG
   case MSG_ID_SOCRATES_CL_TRAIN_RATES_DN:
      Msg_Soc_Cl_Train_Rates_Dn (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_TRAIN_RATES_UP:
      Msg_Soc_Cl_Train_Rates_Up (pMsg);
      break;
#else
   case MSG_ID_SOCRATES_CL_TRAIN_RATES:
      Msg_Soc_Cl_Train_Rates (pMsg);
      break;
#endif

   case MSG_ID_SOCRATES_CL_PROBE_RATES_DN:
      Msg_Soc_Cl_Probe_Rates_Dn (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_PROBE_RATES_UP:
      Msg_Soc_Cl_Probe_Rates_Up (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_FRAMING:
      Msg_Soc_Cl_Framing (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_TPS_A:
      Msg_Soc_Cl_TPS_A (pMsg);
      break;

   case MSG_ID_SOCRATES_CL_TPS_B:
      Msg_Soc_Cl_TPS_B (pMsg);
      break;

   case MSG_ID_SOCRATES_STATE_TIME:
      Msg_Soc_State_Time (pMsg);
      break;

   default:
      printf ("\nModule SOCRAT_B.C\t: unknown msg id (0x%02X).", pMsg->id);
      DdsMsgFree (pMsg);
      break;
   }
}

⌨️ 快捷键说明

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