# lcsap.cnf # lcsap conformation file #.OPT PER ALIGNED #.END #.EXPORTS Correlation-ID_PDU #.PDU LCS-AP-PDU #.MAKE_ENUM ProcedureCode ProtocolIE-ID #.NO_EMIT TBCD-STRING #.OMIT_ASSIGNMENT # Get rid of unused code warnings Presence TriggeringMessage ProtocolIE-ContainerList Message-Identifier #.END #.TYPE_RENAME InitiatingMessage/value InitiatingMessage_value SuccessfulOutcome/value SuccessfulOutcome_value UnsuccessfulOutcome/value UnsuccessfulOutcome_value #.FIELD_RENAME InitiatingMessage/value initiatingMessagevalue UnsuccessfulOutcome/value unsuccessfulOutcome_value SuccessfulOutcome/value successfulOutcome_value ProtocolExtensionField/id ext_id #PrivateIE-Field/value private_value ProtocolIE-Field/value ie_field_value #.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID #.FN_FTR ProtocolIE-ID if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(lcsap_ProtocolIE_ID_vals), "unknown (%d)")); } #.END #.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue #.FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID #.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue #.FN_PARS Payload-Type VAL_PTR=&PayloadType # LCSAP connectionless-transfer # procedures, which according to 3GPP TS 29.171 LCS-AP, can only contain an LPPa # payload within the APDU IE of the procedure. #.FN_HDR Connectionless-Information PayloadType = 1; /* LPPa */ #.FN_BODY APDU VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (parameter_tvb) { switch (PayloadType) { case 0: /* LPP */ if (lpp_handle) { call_dissector(lpp_handle, parameter_tvb, %(ACTX)s->pinfo, tree); } break; case 1: /* LPPa */ if (lppa_handle) { call_dissector(lppa_handle, parameter_tvb, %(ACTX)s->pinfo, tree); } break; default: break; } } PayloadType = -1; #.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode #.FN_FTR ProcedureCode { guint8 tmp = tvb_get_guint8(tvb, 0); if (tmp == 0) col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%sReq", val_to_str(ProcedureCode, lcsap_ProcedureCode_vals, "unknown message")); else if (tmp == 32) col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%sResp", val_to_str(ProcedureCode, lcsap_ProcedureCode_vals, "unknown message")); else col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s", val_to_str(ProcedureCode, lcsap_ProcedureCode_vals, "unknown message")); } #.END #.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue #.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue #.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue #--- Parameterization is not supported in asn2wrs --- #ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, LCS-AP-PROTOCOL-IES : IEsSetParam} ::= # SEQUENCE (SIZE (lowerBound..upperBound)) OF # ProtocolIE-Container {{IEsSetParam}} #.END # Currently not used # FN_PARS ProtocolIE-ContainerPairList #MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") #MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") # FN_HDR ProtocolIE-ContainerPairList # static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = { # { "lowerBound", ASN1_PAR_INTEGER }, # { "upperBound", ASN1_PAR_INTEGER }, # { NULL, 0 } # }; # asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars); # END # following construction is not supported by asn2wrs # PLMN-ID ::= TBCD-STRING (SIZE (3)) # TBCD-STRING ::= OCTET STRING # 3GPP TS 29.171 version 10.3.0 Release 10 # 7.4.27 PLMN Identity #.FN_BODY PLMN-ID VAL_PTR = parameter_tvb tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 3, FALSE, ¶meter_tvb); if(tvb_reported_length(tvb)==0) return offset; if (!parameter_tvb) return offset; subtree = proto_item_add_subtree(actx->created_item, ett_lcsap_plmnd_id); dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, TRUE); #.END #.FN_BODY Positioning-Method-And-Usage VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; proto_tree_add_item(tree, hf_lcsap_pos_method, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_lcsap_pos_usage, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); #.FN_BODY GNSS-Positioning-Method-And-Usage VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; proto_tree_add_item(tree, hf_lcsap_gnss_pos_method, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_lcsap_gnss_id, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_lcsap_gnss_pos_usage, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); # # Code copied from packet-gsm_a_common.c #.FN_BODY Uncertainty-Code VAL_PTR = &uncertainty_code guint32 uncertainty_code; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 127U, &uncertainty_code, FALSE); proto_item_append_text(actx->created_item, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code) - 1)); #.FN_BODY DegreesLatitude VAL_PTR = °rees gint32 degrees; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 8388607U, °rees, FALSE); proto_item_append_text(actx->created_item, " (%.5f degrees)", (((double)degrees/8388607) * 90)); #.FN_BODY DegreesLongitude VAL_PTR = °rees gint32 degrees; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -8388608, 8388607U, °rees, FALSE); proto_item_append_text(actx->created_item, " (%.5f degrees)", (((double)degrees/16777215) * 360)); #.FN_BODY IMSI VAL_PTR=&imsi_tvb tvbuff_t *imsi_tvb; %(DEFAULT_BODY)s if (imsi_tvb) { proto_tree *subtree; subtree = proto_item_add_subtree(actx->created_item, ett_lcsap_imsi); dissect_e212_imsi(imsi_tvb, actx->pinfo, subtree, 0, tvb_reported_length(imsi_tvb), FALSE); } #.FN_BODY Horizontal-Accuracy VAL_PTR=&uncertainty_code guint32 uncertainty_code; %(DEFAULT_BODY)s #.FN_FTR Horizontal-Accuracy proto_item_append_text(actx->created_item, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code) - 1)); #.FN_BODY Vertical-Accuracy VAL_PTR=&vertical_uncertainty guint32 vertical_uncertainty; %(DEFAULT_BODY)s #.FN_FTR Vertical-Accuracy proto_item_append_text(actx->created_item, " (%.1f m)", 45 * (pow(1.025, (double)vertical_uncertainty) - 1)); #.TYPE_ATTR ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(lcsap_ProtocolIE_ID_vals) #.ASSIGN_VALUE_TO_TYPE # LCSAP does not have constants assigned to types, they are pure INTEGER # ProcedureCode id-Location-Service-Request ProcedureCode id-Connection-Oriented-Information-Transfer ProcedureCode id-Connectionless-Information-Transfer ProcedureCode id-Location-Abort ProcedureCode id-Reset ProcedureCode # ProtocolIE-ID id-Correlation-ID ProtocolIE-ID id-Location-Type ProtocolIE-ID id-E-UTRAN-Cell-Identifier ProtocolIE-ID id-LCS-Client-Type ProtocolIE-ID id-LCS-Priority ProtocolIE-ID id-LCS-QOS ProtocolIE-ID id-UE-Positioning-Capability ProtocolIE-ID id-Include-Velocity ProtocolIE-ID id-IMSI ProtocolIE-ID id-IMEI ProtocolIE-ID id-MultipleAPDUs ProtocolIE-ID id-Positioning-Data ProtocolIE-ID id-Velocity-Estimate ProtocolIE-ID id-Accuracy-Fulfillment-Indicator ProtocolIE-ID id-LCS-Cause ProtocolIE-ID id-Payload-Type ProtocolIE-ID id-Return-Error-Cause ProtocolIE-ID id-APDU ProtocolIE-ID id-Return-Error-Request ProtocolIE-ID id-Location-Estimate ProtocolIE-ID id-Source-Identity ProtocolIE-ID id-Destination-ID ProtocolIE-ID id-LCS-Service-Type-ID ProtocolIE-ID #.REGISTER #LCS-AP-PROTOCOL-IES Accuracy-Fulfillment-Indicator N lcsap.ies id-Accuracy-Fulfillment-Indicator APDU N lcsap.ies id-APDU Correlation-ID N lcsap.ies id-Correlation-ID Network-Element N lcsap.ies id-Destination-ID E-CGI N lcsap.ies id-E-UTRAN-Cell-Identifier Include-Velocity N lcsap.ies id-Include-Velocity IMEI N lcsap.ies id-IMEI IMSI N lcsap.ies id-IMSI LCS-Client-Type N lcsap.ies id-LCS-Client-Type LCS-Priority N lcsap.ies id-LCS-Priority LCS-QoS N lcsap.ies id-LCS-QOS LCS-Cause N lcsap.ies id-LCS-Cause Geographical-Area N lcsap.ies id-Location-Estimate Location-Type N lcsap.ies id-Location-Type MultipleAPDUs N lcsap.ies id-MultipleAPDUs Payload-Type N lcsap.ies id-Payload-Type Positioning-Data N lcsap.ies id-Positioning-Data Return-Error-Type N lcsap.ies id-Return-Error-Request Return-Error-Cause N lcsap.ies id-Return-Error-Cause Network-Element N lcsap.ies id-Source-Identity UE-Positioning-Capability N lcsap.ies id-UE-Positioning-Capability Velocity-Estimate N lcsap.ies id-Velocity-Estimate #LCS-AP-PROTOCOL-EXTENSION LCS-Service-Type-ID N lcsap.extension id-LCS-Service-Type-ID Location-Request N lcsap.proc.imsg id-Location-Service-Request Location-Response N lcsap.proc.sout id-Location-Service-Request Location-Response N lcsap.proc.uout id-Location-Service-Request Connection-Oriented-Information N lcsap.proc.imsg id-Connection-Oriented-Information-Transfer Connectionless-Information N lcsap.proc.imsg id-Connectionless-Information-Transfer Connectionless-Information N lcsap.proc.uout id-Connectionless-Information-Transfer Location-Abort-Request N lcsap.proc.imsg id-Location-Abort Location-Response N lcsap.proc.sout id-Location-Abort Reset-Request N lcsap.proc.imsg id-Reset Reset-Acknowledge N lcsap.proc.sout id-Reset #.TYPE_ATTR BitRate TYPE = FT_UINT64 DISPLAY = BASE_DEC STRINGS = NULL #.END