| module BSSMAP_Templates { |
| |
| import from General_Types all; |
| import from Osmocom_Types all; |
| import from BSSAP_Types all; |
| |
| type integer BssmapCause; |
| |
| template PDU_BSSAP ts_BSSAP_BSSMAP := { |
| discriminator := '0'B, |
| spare := '0000000'B, |
| dlci := omit, |
| lengthIndicator := 0, /* overwritten by codec */ |
| pdu := ? |
| } |
| |
| template PDU_BSSAP tr_BSSAP_BSSMAP := { |
| discriminator := '0'B, |
| spare := '0000000'B, |
| dlci := omit, |
| lengthIndicator := ?, |
| pdu := { |
| bssmap := ? |
| } |
| } |
| |
| template (value) BSSMAP_IE_Cause ts_BSSMAP_IE_Cause(BssmapCause val) := { |
| elementIdentifier := '04'O, |
| lengthIndicator := 0, |
| causeValue := int2bit(val, 7), |
| extensionCauseValue := '0'B, |
| spare1 := omit |
| } |
| |
| template (value) PDU_BSSAP ts_BSSMAP_Reset(BssmapCause cause) modifies ts_BSSAP_BSSMAP := { |
| pdu := { |
| bssmap := { |
| reset := { |
| messageType := '30'O, |
| cause := ts_BSSMAP_IE_Cause(cause), |
| a_InterfaceSelectorForReset := omit |
| } |
| } |
| } |
| } |
| |
| template (value) PDU_BSSAP ts_BSSMAP_ResetAck modifies ts_BSSAP_BSSMAP := { |
| pdu := { |
| bssmap := { |
| resetAck := { |
| messageType := '31'O, |
| a_InterfaceSelectorForReset := omit |
| } |
| } |
| } |
| } |
| |
| template PDU_BSSAP tr_BSSMAP_ResetAck modifies tr_BSSAP_BSSMAP := { |
| pdu := { |
| bssmap := { |
| resetAck := { |
| messageType := '31'O, |
| a_InterfaceSelectorForReset := * |
| } |
| } |
| } |
| } |
| |
| template BSSMAP_IE_CellIdentifier ts_BSSMAP_IE_CellID := { |
| elementIdentifier := '05'O, |
| lengthIndicator := 0, |
| cellIdentifierDiscriminator := '0000'B, |
| spare1_4 := '0000'B, |
| cellIdentification := ? |
| } |
| |
| type uint16_t BssmapLAC; |
| type uint16_t BssmapCI; |
| |
| /* |
| template BSSMAP_IE_CellIdentifier ts_CellId_CGI(mcc, mnc, lac, ci) |
| modifies ts_BSSMAP_IE_CellID := { |
| cellIdentification := { |
| cI_LAC_CGI := { |
| mnc_mcc := FIXME, |
| lac := int2oct(lac, 2), |
| ci := int2oct(ci, 2) |
| } |
| } |
| } |
| */ |
| |
| template BSSMAP_IE_CellIdentifier ts_CellID_LAC_CI(BssmapLAC lac, BssmapCI ci) |
| modifies ts_BSSMAP_IE_CellID := { |
| cellIdentification := { |
| cI_LAC_CI := { |
| lac := int2oct(lac, 2), |
| ci := int2oct(ci, 2) |
| } |
| } |
| } |
| |
| template BSSMAP_IE_CellIdentifier ts_CellId_CI(BssmapCI ci) |
| modifies ts_BSSMAP_IE_CellID := { |
| cellIdentification := { |
| cI_CI := int2oct(ci, 2) |
| } |
| } |
| |
| template BSSMAP_IE_CellIdentifier ts_CellId_none |
| modifies ts_BSSMAP_IE_CellID := { |
| cellIdentification := { |
| cI_noCell := ''O |
| } |
| } |
| |
| |
| template BSSMAP_IE_Layer3Information ts_BSSMAP_IE_L3Info(octetstring l3info) := { |
| elementIdentifier := '17'O, |
| lengthIndicator := 0, |
| layer3info := l3info |
| } |
| |
| template PDU_BSSAP ts_BSSMAP_ComplL3(BSSMAP_IE_CellIdentifier cell_id, octetstring l3_info) |
| modifies ts_BSSAP_BSSMAP := { |
| pdu := { |
| bssmap := { |
| completeLayer3Information := { |
| messageType := '57'O, |
| cellIdentifier := cell_id, |
| layer3Information := ts_BSSMAP_IE_L3Info(l3_info), |
| chosenChannel := omit, |
| lSAIdentifier := omit, |
| aPDU := omit, |
| codecList := omit, |
| redirectAttemptFlag := omit, |
| sendSequenceNumber := omit, |
| iMSI := omit |
| } |
| } |
| } |
| } |
| |
| template PDU_BSSAP ts_BSSMAP_HandoReq(BssmapCause cause, BSSMAP_IE_CellIdentifierList cid_list) |
| modifies ts_BSSAP_BSSMAP := { |
| pdu := { |
| bssmap := { |
| handoverRequired := { |
| messageType := '11'O, |
| cause := ts_BSSMAP_IE_Cause(cause), |
| responseRequest := omit, |
| cellIdentifierList := cid_list, |
| circuitPoolList := omit, |
| currentChannelType1 := omit, |
| speechVersion := omit, |
| queueingIndicator := omit, |
| oldToNewBSSInfo := omit, |
| sourceToTargetRNCTransparentInfo := omit, |
| sourceToTargetRNCTransparentInfoCDMA := omit, |
| gERANClassmark := omit, |
| talkerPriority := omit, |
| speechCodec := omit, |
| cSG_Identifier := omit |
| } |
| } |
| } |
| } |
| |
| |
| } |