📄 socrat_b.c
字号:
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 + -