Commit 0133af3d authored by berge's avatar berge
Browse files

fixed issues related to f_toTemplate function

parent 917f72d0
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1303,7 +1303,7 @@ module AtsECall_IVS_Testcases {
            // Test Body
            f_establishCall("Trigger eCall");

            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, PX_ECALL_MESSAGE), PX_TIMEOUT, true);
            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, f_toTemplate(PX_ECALL_MESSAGE)), PX_TIMEOUT, true);

            f_clearDown(NETWORK, c_now);

@@ -1319,7 +1319,7 @@ module AtsECall_IVS_Testcases {

            f_establishCall();

            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, PX_ECALL_MESSAGE));
            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, f_toTemplate(PX_ECALL_MESSAGE)));

            f_expectFeedback(mw_callHangUp(PX_WORKER, ?, EXTERNAL), PX_TIMEOUT, true);

@@ -1442,7 +1442,7 @@ module AtsECall_IVS_Testcases {
            // Test Body
            f_establishCall("Trigger eCall");

            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, PX_ECALL_MESSAGE));
            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, f_toTemplate(PX_ECALL_MESSAGE)));

            f_expectFeedback(mw_callHangUp(PX_WORKER, ?, EXTERNAL), PX_TIMEOUT, true);

@@ -1491,7 +1491,7 @@ module AtsECall_IVS_Testcases {
            // Test Body
            f_establishCall("Trigger eCall");

            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, PX_ECALL_MESSAGE));
            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, f_toTemplate(PX_ECALL_MESSAGE)));

            f_expectFeedback(mw_callHangUp(PX_WORKER, ?, EXTERNAL), PX_TIMEOUT, true);

@@ -1603,7 +1603,7 @@ module AtsECall_IVS_Testcases {
            // Test Body
            f_establishCall("Trigger eCall");

            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, PX_ECALL_MESSAGE));
            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, f_toTemplate(PX_ECALL_MESSAGE)));

            f_expectFeedback(mw_callHangUp(PX_WORKER, ?, EXTERNAL), PX_TIMEOUT, true);

@@ -1705,7 +1705,7 @@ module AtsECall_IVS_Testcases {
            // Test Body
            f_establishCall("Trigger eCall");

            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, PX_ECALL_MESSAGE));
            f_expectFeedback(mw_inbandMsdReceived(PX_WORKER, ?, f_toTemplate(PX_ECALL_MESSAGE)));

            f_clearDown(NETWORK, c_now);

+47 −0
Original line number Diff line number Diff line
@@ -256,6 +256,53 @@
        return v_result;
    }

    /**
    * @desc Decodes the encoded eCallMessage if it valid and sets the decoded field of ECallMessageUnion,
    * otherwise the ECallMessageUnion is unchanged.
    *
    * @return ECallMessageUnion with the decoded field set (if the input is valid), otherwise unchanged
    */
    function f_expandMsd(in template(present) ECallMessageUnion p_eCallMessageUnion) return template(present) ECallMessageUnion {
        // expand msd that was given as encoded if valid, otherwise leave as is
        if (ischosen(p_eCallMessageUnion.encoded) and isvalue(p_eCallMessageUnion.encoded)) {
            var ECallMessage v_msd;
            var bitstring v_encoded := oct2bit(valueof(p_eCallMessageUnion.encoded));
            
            if (decvalue(v_encoded, v_msd) == 0) {
                p_eCallMessageUnion.decoded := v_msd;
            }
        }

        return p_eCallMessageUnion;
    }

    /**
    * @desc Generates a template from the given
    *
    * @return ECallMessageUnion with the decoded field set (if the input is valid), otherwise unchanged
    */
    function f_toTemplate(in template(present) ECallMessageUnion p_eCallMessage) return template(present) ECallMessageUnion {
        p_eCallMessage := f_expandMsd(p_eCallMessage);

        if (ischosen(p_eCallMessage.decoded)) {
            p_eCallMessage.decoded.id := ?;
            p_eCallMessage.decoded.msd.msdStructure.messageIdentifier := ?;
            p_eCallMessage.decoded.msd.msdStructure.timestamp := ?;
            p_eCallMessage.decoded.msd.msdStructure.numberOfPassengers := *;
            p_eCallMessage.decoded.msd.optionalAdditionalData := *;

            if (PX_IGNORE_MSD_POSITION) {
                p_eCallMessage.decoded.msd.msdStructure.control_.positionCanBeTrusted := ?;
                p_eCallMessage.decoded.msd.msdStructure.vehicleLocation := ?;
                p_eCallMessage.decoded.msd.msdStructure.vehicleDirection := ?;
                p_eCallMessage.decoded.msd.msdStructure.recentVehicleLocationN1 := *;
                p_eCallMessage.decoded.msd.msdStructure.recentVehicleLocationN2 := *;
            }
        }

        return p_eCallMessage;
    }
      
    group altsteps {
        altstep a_default_ui_behaviour() runs on IvsMtc {
            // ignore message box selection by default
+1 −79
Original line number Diff line number Diff line
@@ -22,84 +22,6 @@ module LibItsECall_Templates {
        encode "MSDEncode";
    };
	
    // FIXME
    //import from LibItsECall_Functions {function f_toTemplate};

    /**
    * @desc Decodes the encoded eCallMessage if it valid and sets the decoded field of ECallMessageUnion,
    * otherwise the ECallMessageUnion is unchanged.
    *
    * @return ECallMessageUnion with the decoded field set (if the input is valid), otherwise unchanged
    */
    function f_expandMsd(in template(present) ECallMessageUnion p_eCallMessageUnion) return template(present) ECallMessageUnion {
        // expand msd that was given as encoded if valid, otherwise leave as is
        if (ischosen(p_eCallMessageUnion.encoded) and isvalue(p_eCallMessageUnion.encoded)) {
            var ECallMessage v_msd;
			var bitstring v_encoded := oct2bit(valueof(p_eCallMessageUnion.encoded));
			
            if (decvalue(v_encoded, v_msd) == 0) {
                p_eCallMessageUnion.decoded := v_msd;
            }
        }

        return p_eCallMessageUnion;
    }

    /**
    * @desc Generates a template from the given
    *
    * @return ECallMessageUnion with the decoded field set (if the input is valid), otherwise unchanged
    */
    function f_toTemplate(in template(present) ECallMessageUnion p_eCallMessage) return template(present) ECallMessageUnion {
        p_eCallMessage := f_expandMsd(p_eCallMessage);
/*
        if (ischosen(p_eCallMessage.decoded)) {
            var template(present) ECallMessageUnion v_finalECallMessageTemplate;

            template ECallMessageUnion mw_noIdentifier modifies p_eCallMessage  := {
                decoded := {
                    id := ?,
                    msd := {
                        msdStructure := {
                            messageIdentifier := ?,
                            timestamp := ?,
                            numberOfPassengers := *
                        },
                        optionalAdditionalData := *
                    }
                }
            };

            v_finalECallMessageTemplate := mw_noIdentifier;

            if (PX_IGNORE_MSD_POSITION) {
                template(present) ECallMessageUnion mw_tmp modifies v_finalECallMessageTemplate := {
                    decoded := {
                        msd := {
                            msdStructure := {
                                control_ := {
                                    positionCanBeTrusted := ?//,
                                },
                                vehicleLocation := ?,
                                vehicleDirection := ?,
                                recentVehicleLocationN1 := *,
                                recentVehicleLocationN2 := *
                            }
                        }
                    }
                };

                v_finalECallMessageTemplate := mw_tmp;
            }

            return v_finalECallMessageTemplate;
        }
        else {
            return p_eCallMessage;
        }
*/
    }

    template ECallMessageUnion ANY_DECODED_ECALL := { decoded := ? }


@@ -245,7 +167,7 @@ module LibItsECall_Templates {
            inbandMsdReceived := {
                worker := p_worker,
                time :=  p_time,
                eCallMessage := f_toTemplate(p_eCallMessage)
                eCallMessage := p_eCallMessage
            }
        }