Commit 3b7c100f authored by schmitting's avatar schmitting
Browse files

IAM group ready --- more work than expected!

parent 77c49310
Loading
Loading
Loading
Loading
+40 −4
Original line number Diff line number Diff line
@@ -782,9 +782,39 @@ const Bit2 c_UUI_service_rsp_prov := '10'B;
/* Value 'request, essential' of bit field element 'Service 1 request' in IE 'User-to-user indicators'. */
const Bit2 c_UUI_service_req_ess := '11'B;

/* Value 'operator, language French' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_operatorFrench := '00000001'B;

/* Value 'operator, language English' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_operatorEnglish := '00000010'B;

/* Value 'operator, language German' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_operatorGerman := '00000011'B;

/* Value 'operator, language Russian' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_operatorRussian := '00000100'B;

/* Value 'operator, language Spanish' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_operatorSpanish := '00000101'B;

/* Value 'ordinary subscriber' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_ISUP_CGC_cliPCat_ord_subs := '00001010'B;

/* Value 'test call' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_testcall := '00001101'B;

/* Value 'payphone' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_payphone := '00001111'B;

/* Value 'mobile terminal located in the home PLMN' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_mobiletermHome := '00010000'B;

/* Value 'mobile terminal located in a visited PLMN' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_mobiletermVisited := '00010001'B;

/* Value 'IEPS call marking for preferential call set up' for element callingPartysCategory inside Calling party's category parameter (CGC); Optional(O) format.  (TX side).*/
const Bit8 c_CGC_IEPS := '00001110'B;

/* Value '1 satellite' for element satelliteIndicator inside Nature of connection indicators parameter (NCI); Fixed(F) format.  (TX side).*/
const Bit2 c_ISUP_NCI_satInd_1sat := '01'B;

@@ -868,6 +898,12 @@ const Bit7 c_HLC_OSIapps := '1000001'B;

/* Value 'Audio visual' of bit field element 'High layer characteristics identification' in ISDN IE 'High Layer Compatibility' */
const Bit7 c_HLC_AudioVisual := '1100010'B;

/* Value 'Call is not end-to-end ISDN' of bit field element 'Progress description' in ISDN IE 'Progress Indicator' */
const Bit7 c_PI_1 := '0000001'B;

/* Value 'Origination address is non-ISDN' of bit field element 'Progress description' in ISDN IE 'Progress Indicator' */
const Bit7 c_PI_3 := '0000011'B;
} /* end group Constants */

group Functions {
@@ -1038,16 +1074,16 @@ return Bit8 {
}

/* Function to calculate length of ATP parameter carrying one CGPS IE*/
function f_calc_length_atp_cgps (in template InformationElements p_ies, in integer p_int)
function f_calc_length_atp_cgps (in template ISDN_IEs p_ies, in integer p_int)
return Bit8 {
 var InformationElements v_ies := valueof(p_ies);
 var ISDN_IEs v_ies := valueof(p_ies);
 return int2bit((lengthof (v_ies.callingPartySubaddress.subaddressInformation) + p_int), 8 );
}

/* Function to calculate length of ATP parameter carrying one CODS IE*/
function f_calc_length_atp_cods (in template InformationElements p_ies, in integer p_int)
function f_calc_length_atp_cods (in template ISDN_IEs p_ies, in integer p_int)
return Bit8 {
 var InformationElements v_ies := valueof(p_ies);
 var ISDN_IEs v_ies := valueof(p_ies);
 return int2bit((lengthof (v_ies.connectedSubaddress.subaddressInformation) + p_int), 8 );
}

+104 −18
Original line number Diff line number Diff line
@@ -55,7 +55,18 @@ template ATP_PAR_tlv m_ATP_CLSU :=
{
 paramType := '00000011'B,                                                   /* Parameter Type '00000011'B */
 paramLen := f_calc_length_atp_cgps({ callingPartySubaddress := m_cgps },3), /* Parameter Length field */
 informationElements := { callingPartySubaddress := m_cgps }                 /* Q.931 information element Calling sub-address */
 informationElements :=                                                      /* Q.931 information elements */
 { 
  specificInformationElements := 
  {
   highLayerCompatibility :=  omit,
   lowLayerCompatibility := omit,
   progressIndicator := omit,
   calledPartySubaddress := omit,
   callingPartySubaddress := m_cgps, /* Q.931 Calling sub-address */
   connectedSubaddress := omit
  }
 }
}

template ATP_PAR_tlv m_ATP_CNSU(octetstring p_subInfo) :=
@@ -63,7 +74,18 @@ template ATP_PAR_tlv m_ATP_CNSU(octetstring p_subInfo) :=
{
 paramType := '00000011'B,                                                /* Parameter Type '00000011'B */
 paramLen := f_calc_length_atp_cods({ connectedSubaddress := m_cons },3), /* Parameter Length field */
 informationElements := { connectedSubaddress := m_cons }                 /* Q.931 information element Connected sub-address */
 informationElements :=                                                   /* Q.931 information elements */
 { 
  specificInformationElements := 
  {
   highLayerCompatibility :=  omit,
   lowLayerCompatibility := omit,
   progressIndicator := omit,
   calledPartySubaddress := omit,
   callingPartySubaddress := omit,
   connectedSubaddress := m_cons             /* Q.931 information element Connected sub-address */
  }
 }
}

template ATP_PAR_tlv mw_ATP_PAR_tlv_any :=
@@ -74,13 +96,63 @@ template ATP_PAR_tlv mw_ATP_PAR_tlv_any :=
 informationElements := { anyInformationElements := ? } /* Any Q.931 information elements */
}

template ATP_PAR_tlv mw_ATP_HLC_CharIdent(Bit7 p_hlcId) :=
/* Generic RX template for Access Transport parameter (ATP); Optional(O) format, with Q.931 information element hlc, highLayerCharacteristicsIdentification parameterized and any-values otherwise. */
template ATP_PAR_tlv mw_ATP_HLC(template HighLayerCompatibility p_hlc) :=
/* RX template for Access Transport parameter (ATP); Optional(O) format, with Q.931 information element hlc, highLayerCharacteristicsIdentification parameterized and any-values otherwise. */
{
 paramType := '00000011'B, /* Parameter Type '00000011'B */
 paramLen := ?,            /* Parameter Length field */
 informationElements :=    /* Q.931 information elements */
 { 
  specificInformationElements := 
  {
   highLayerCompatibility :=  p_hlc,  /* Q.931 High layer compatibility */
   lowLayerCompatibility := *,
   progressIndicator := *,
   calledPartySubaddress := *,
   callingPartySubaddress := *,
   connectedSubaddress := *
  }
 }
}

template ATP_PAR_tlv mw_ATP_LLC(template LowLayerCompatibility p_llc) :=
/* RX template for Access Transport parameter (ATP); Optional(O) format, with Q.931 information element llc and any-values otherwise. */
{
 paramType := '00000011'B, /* Parameter Type '00000011'B */
 paramLen := ?,            /* Parameter Length field */
 informationElements :=    /* Q.931 information elements */
 { 
  specificInformationElements := 
  {
   highLayerCompatibility :=  *,
   lowLayerCompatibility := p_llc,  /* Q.931 Low layer compatibility */
   progressIndicator := *,
   calledPartySubaddress := *,
   callingPartySubaddress := *,
   connectedSubaddress := *
  }
 }
}

template ATP_PAR_tlv mw_ATP_PI(template ProgressIndicator p_pi) :=
/* RX template for Access Transport parameter (ATP); Optional(O) format, with Q.931 information element pi, progressDescription parameterized and any-values otherwise. */
{
 paramType := '00000011'B, /* Parameter Type '00000011'B */
 paramLen := ?,            /* Parameter Length field */
 informationElements := { highLayerCompatibility :=  mw_hlc(p_hlcId) } /* Q.931 information element hlc */
 informationElements :=    /* Q.931 information elements */
 { 
  specificInformationElements := 
  {
   highLayerCompatibility :=  *,
   lowLayerCompatibility := *,
   progressIndicator := p_pi,  /* Q.931 Progress Indicator */
   calledPartySubaddress := *,
   callingPartySubaddress := *,
   connectedSubaddress := *
  }
 }
}

template CallingPartySubaddress m_cgps :=
/* TX template for Q.931 Calling party subaddress information element, with all default values */
{
@@ -122,6 +194,18 @@ template HighLayerCompatibility mw_hlc(Bit7 p_hlcId) :=
 ext4 := *                                                    /* Extension */
}

template ProgressIndicator mw_pi(Bit7 p_progInd) :=
/* RX template for Q.931 Progress Indicator information element, with progressDescription parameterized and any-values otherwise.*/
{
 iEType := '00011110'B,            /* Information Element Type '00011110'B */
 iELen := '00000010'B,             /* Information Element Length field */
 location := ?,			           /* Location */
 spare := '0'B,                    /* Spare */
 codingStandard := ?,              /* Coding Standard */
 ext1 := '1'B,                     /* Extension */
 progressDescription := p_progInd, /* Progress Description */
 ext2 := '1'B                      /* Extension */
}
} /* end group ATP */

group BCI {
@@ -574,16 +658,18 @@ template CDN_PAR_lv mw_CDN_PAR_lv_any :=
 addressSignals := ?            /* address signals */
}

template CDN_PAR_lv mw_CDN(template Bit7 p_natAddrInd, charstring p_digits, boolean p_sendCmpl) :=
/* RX template for Called party number parameter (CDN); Mandatory Variable(MV) format, with Internal network number indicator = 'routing to internal network number not allowed', Numbering plan indicator = 'ISDN (Telephony) numbering plan', and Nature of Address, Address Digits and Sending Complete parameterized. */
template CDN_PAR_lv mw_CDN(template Bit7 p_natAddrInd,
						   template Bit3 p_numPlanInd,
						   template Bit1 p_intNtwNum) :=
/* RX template for Called party number parameter (CDN); Mandatory Variable(MV) format, with Internal network number indicator, Numbering plan indicator and Nature of Address parameterized. */
{
 paramLen := f_calc_paramLen(p_digits, p_sendCmpl, 2), /* Parameter Length field */
 paramLen := ?,                            /* Parameter Length field */
 natureOfAddressIndicator := p_natAddrInd, /* Nature of address indicator */
 oddEven := f_calc_oddeven(p_digits, p_sendCmpl),      /* O/E */
 oddEven := ?,                             /* O/E */
 spare := '0000'B,                         /* spare */
 numberingPlanIndicator := c_CLD_numPlanInd_isdn,      /* Numbering plan indicator */
 iNN := c_CLD_intNtwNum_notAlwd,                       /* Internal Network Number indicator */
 addressSignals := f_char_to_BCD(p_digits, p_sendCmpl) /* address signals */
 numberingPlanIndicator := p_numPlanInd,   /* Numbering plan indicator */
 iNN := p_intNtwNum,                       /* Internal Network Number indicator */
 addressSignals := ?                       /* address signals */
}
} /* end group CDN */

+156 −4
Original line number Diff line number Diff line
@@ -163,6 +163,150 @@ type record HighLayerCompatibility /* Q.931 High Layer Compatibility information
 }
with { encode "present=bytes(1,0x7D)" }

type record LowLayerCompatibility {
 Bit8 iEType ('01111100'B), /* Information Element Type '01111100'B */
 Bit8 iELen,                /* Information Element Length field */
 LLC_octet3  octet3, 
 LLC_octet4  octet4, 
 LLC_octet5  octet5 optional, 
 LLC_octet6  octet6 optional, 
 LLC_octet7  octet7 optional 
}
with { encode "present=bytes(1,0x7C)" }

type record LLC_octet3 {
 Bit5  informationTransferCapability,
 Bit2  codingStandard,
 Bit1  extension_3, 
 Bit6  spare6      ('000000'B)      optional,
 Bit1  negotiationIndicator         optional,
 Bit1  extension_3a                 optional
};

type record LLC_octet4 {
 Bit5 informationTransferRate,
 Bit2  transferMode, 
 Bit1  extension4,
 Bit7  rateMultiplier   optional,
 Bit1  extension4_1     optional
};

type record LLC_octet5 {
 // OctET 5:
 Bit5  userInformationLayer1Protocol,
 Bit2  layerId, 
 Bit1  extension5, 
 // OctET 5a:
  Bit5  userRate                    optional, 
 Bit1  negotiation                 optional,
 Bit1  synchronous_asynchronous    optional, 
 Bit1  extension5a                 optional,
 // OctET 5b:
 Bit1  spare5b   ('0'B)            optional,
 Bit1  bit2                        optional,
 Bit1  bit3                        optional,
 Bit1  bit4                        optional,
 Bit1  bit5                        optional,
 Bit1  bit6                        optional,
 Bit1  bit7                        optional,
 Bit1  extension5b                 optional,
 // OctET 5c:
 Bit3  parity                      optional, 
 Bit2  numberOfDataBits            optional, 
 Bit2  numberOfStopBits            optional, 
 Bit1  extension5c                 optional, 
 // OctET 5d:
 Bit6  modemType                   optional, 
 Bit1  duplexMode                  optional, 
 Bit1  extension_octet_5d          optional
};

type record LLC_octet6a_user {
 Bit7  userSpecifiedLayer2information,
 Bit1  extension6a
};

type record LLC_octet6a_other {
 Bit2  q933Use,   
 Bit3  spare6a        ('000'B),
 Bit2  modeOfOperation,   
 Bit1  extension6a,
 Bit7  windowSize       optional,
 Bit1  extension6b      optional
};

type union LLC_octet6a {
 LLC_octet6a_user    octet6a_user,
 LLC_octet6a_other   octet6a_other
};

type record LLC_octet6 {
 Bit5  userInformationLayer2Protocol,
 Bit2  layerId,
 Bit1  extension6,
 // OctET 6a-b:
 LLC_octet6a  octet6a   optional
};

type record LLC_octet7a_user {
  Bit7  userSpecifiedLayer3information,
  Bit1  extension7a
};

type record LLC_octet7a_other {
 Bit5  spare7a   ('00000'B),
 Bit2  modeOfOperation,   
 Bit1  extension7a,
 Bit4  defaultPacketSize optional,
 Bit3  spare7b ('000'B)  optional,
 Bit1  extension7b       optional,
 // OctET 7c:
 Bit7  packetWindowSize  optional,
 Bit1  extension7c       optional
};

type union LLC_octet7a {
 LLC_octet7a_user    octet7a_user,
 LLC_octet7a_other   octet7a_other
};

type record LLC_octet7 {
 Bit5  userInformationLayer3Protocol,
 Bit2  layerId   ('11'B),
 Bit1  extension7,
 // OctET 7a:
 LLC_octet7a  octet7a    optional
};

 type record ProgressIndicator /* Q.931 Progress indicator information element */
{
 Bit8 iEType ('00011110'B), /* Information Element Type '00011110'B */
 Bit8 iELen,                /* Information Element Length field */
 Bit4 location,			    /* Location */
 Bit1 spare,                /* Spare */
 Bit3 codingStandard,       /* Coding Standard */
 Bit1 ext1,                 /* Extension */
 Bit7 progressDescription,  /* Progress Description */
 Bit1 ext2                  /* Extension */
}
with { encode "present=bytes(1,0x1E)"; 
       encode (iELen) "tag=""PI_iELen"";";
       encode (subaddressInformation) "length=valueOf(getTag(""PI_iELen"")).toInt()-1;"; }

 type record CalledPartySubaddress /* Q.931 Called party subaddress information element */
{
 Bit8 iEType ('01110001'B),        /* Information Element Type '01110001'B */
 Bit8 iELen,                       /* Information Element Length field */
 Bit3 spare,                       /* Spare */
 Bit1 oddEven,                     /* OE */
 Bit3 typeOfSubaddress,            /* Type of Subaddress */
 Bit1 ext,                         /* Extension */
 octetstring subaddressInformation /* Subaddress Information */
}
with { encode "present=bytes(1,0x71)"; 
       encode (iELen) "tag=""CDPS_iELen"";";
       encode (subaddressInformation) "length=valueOf(getTag(""CDPS_iELen"")).toInt()-1;"; }

 type record CallingPartySubaddress /* Q.931 Calling party subaddress information element */
{
 Bit8 iEType ('01101101'B),        /* Information Element Type '01101101'B */
@@ -193,10 +337,18 @@ with { encode "present=bytes(1,0x4D)";

type union InformationElements
{
 octetstring anyInformationElements,            /* Used for receive templates */
 HighLayerCompatibility highLayerCompatibility, /* Q.931 High Layer Compatibility for send template */
 CallingPartySubaddress callingPartySubaddress, /* Q.931 Calling Party Subaddress for send template */
 ConnectedSubaddress connectedSubaddress        /* Q.931 Connected Subaddress for send template */
 ISDN_IEs specificInformationElements, /* Used for HLC, LLC, PI, CDPS, CGPS and CODS */
 octetstring anyInformationElements    /* Used for receive templates */
}

type set ISDN_IEs
{
 HighLayerCompatibility highLayerCompatibility optional, /* Q.931 High Layer Compatibility */
 LowLayerCompatibility lowLayerCompatibility optional,   /* Q.931 Low Layer Compatibility */
 ProgressIndicator progressIndicator optional,           /* Q.931 Progress Indicator */
 CalledPartySubaddress calledPartySubaddress optional,   /* Q.931 Called Party Subaddress */
 CallingPartySubaddress callingPartySubaddress optional, /* Q.931 Calling Party Subaddress */
 ConnectedSubaddress connectedSubaddress optional        /* Q.931 Connected Subaddress */
}
/* end auxiliary types for access transport parameter (ATP) */
} /* end group ATP */
+13634 −14125

File changed.

Preview size limit exceeded, changes collapsed.