| module L3_Templates { |
| |
| import from General_Types all; |
| import from MobileL3_Types all; |
| import from MobileL3_CommonIE_Types all; |
| import from MobileL3_MM_Types all; |
| import from MobileL3_RRM_Types all; |
| |
| type enumerated CmServiceType { |
| CM_TYPE_MO_CALL ('0001'B), |
| CM_TYPE_EMERG_CALL ('0010'B), |
| CM_TYPE_MO_SMS ('0100'B), |
| CM_TYPE_SS_ACT ('1000'B) |
| } |
| |
| |
| /* send template fro Mobile Identity (TMSI) */ |
| template MobileIdentityLV ts_MI_TMSI_LV(OCT4 tmsi) := { |
| lengthIndicator := 0, /* overwritten */ |
| mobileIdentityV := { |
| typeOfIdentity := '000'B, /* overwritten */ |
| oddEvenInd_identity := { |
| tmsi_ptmsi := { |
| oddevenIndicator := '0'B, |
| fillerDigit := '1111'B, |
| octets := tmsi |
| } |
| } |
| } |
| } |
| |
| private function f_enc_IMSI_L3(hexstring digits) return IMSI_L3 { |
| var IMSI_L3 l3; |
| var integer len := lengthof(digits); |
| if (len rem 2 == 1) { /* modulo remainder */ |
| l3.oddevenIndicator := '1'B; |
| l3.fillerDigit := '1111'B; |
| } else { |
| l3.oddevenIndicator := '0'B; |
| l3.fillerDigit := omit; |
| } |
| l3.digits := digits; |
| return l3; |
| } |
| |
| /* send template fro Mobile Identity (IMSI) */ |
| template (value) MobileIdentityLV ts_MI_IMSI_LV(hexstring imsi_digits) := { |
| lengthIndicator := 0, /* overwritten */ |
| mobileIdentityV := { |
| typeOfIdentity := '000'B, /* overwritten */ |
| oddEvenInd_identity := { |
| imsi := f_enc_IMSI_L3(imsi_digits) |
| } |
| } |
| } |
| |
| /* Send template for Classmark 2 */ |
| template (value) MobileStationClassmark2_LV ts_CM2 := { |
| lengthIndicator := 0, |
| rf_PowerCapability := '000'B, |
| a5_1 := '0'B, |
| esind := '1'B, |
| revisionLevel := '10'B, |
| spare1_1 := '0'B, |
| mobileStationClassmark2_oct4 := omit, |
| mobileStationClassmark2_oct5 := omit |
| }; |
| |
| /* Send template for CM SERVICE REQUEST */ |
| template (value) PDU_ML3_MS_NW ts_CM_SERV_REQ(BIT4 serv_type, MobileIdentityLV mi_lv) := { |
| discriminator := '0000'B, /* overwritten */ |
| tiOrSkip := { |
| skipIndicator := '0000'B |
| }, |
| msgs := { |
| mm := { |
| cMServiceRequest := { |
| messageType := '000000'B, /* overwritten */ |
| nsd := '00'B, |
| cm_ServiceType := serv_type, |
| cipheringKeySequenceNumber := { '000'B, '0'B }, |
| mobileStationClassmark2 := ts_CM2, |
| mobileIdentity := mi_lv, |
| priorityLevel := omit, |
| additionalUpdateParameterTV := omit, |
| deviceProperties := omit |
| } |
| } |
| } |
| } |
| |
| /* Send template for PAGING RESPONSE */ |
| template (value) PDU_ML3_MS_NW ts_PAG_RESP(MobileIdentityLV mi_lv) := { |
| discriminator := '0000'B, /* overwritten */ |
| tiOrSkip := { |
| skipIndicator := '0000'B |
| }, |
| msgs := { |
| rrm := { |
| pagingResponse := { |
| messageType := '00000000'B, /* overwritten */ |
| cipheringKeySequenceNumber := { '000'B, '0'B }, |
| spare1_4 := '0000'B, |
| mobileStationClassmark := ts_CM2, |
| mobileIdentity := mi_lv, |
| additionalUpdateParameters := omit |
| } |
| } |
| } |
| } |
| |
| } |