Commit 47f4d24e authored by garciay's avatar garciay
Browse files

Update template names for MAPEM/SPATEM

Enhance RSUsimulator
parent 28b03d5f
Loading
Loading
Loading
Loading
+1 −1
Changes for ttcn/AtsMapemSpatem/ItsSpatem_TpFunctions.ttcn: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -595,7 +595,7 @@ module ItsSpatem_TpFunctions {
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_spat)));
                v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem)));
                mapemSpatemPort.send(v_spatemReq) ;
                
                f_sleep(PX_TAC);
+88 −6
Changes for ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Functions.ttcn: 88 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -31,6 +31,12 @@ module ItsRSUsSimulator_Functions {
    // LibItsMapemSpatemm
    import from LibItsMapemSpatem_Templates all;
    
    // LibItsMapemSpatemm
    import from LibItsIvim_Templates all;
    
    // LibItsMapemSpatemm
    import from LibItsSremSsem_Templates all;
    
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_TestSystem all;
    import from LibItsGeoNetworking_Functions all;
@@ -101,7 +107,21 @@ module ItsRSUsSimulator_Functions {
            }
            // SPATEM
            if (PICS_GENERATE_SPATEM) {
                // TODO
                // Build the list of the DENM events
                for (v_counter := 0; v_counter < lengthof(PICS_SPATEM_PARMS_RSUs[PX_RSU_ID - 1]); v_counter := v_counter + 1) {
                    v_spatems[v_counter] := 
                        m_spatemParm(
                            PICS_RSU_PARAMS[PX_RSU_ID - 1].stationID,
                            m_spatem(
                                PICS_SPATEM_PARMS_RSUs[PX_RSU_ID - 1][v_counter].intersections,
                                "SignalGroupID #" & int2str(PICS_SPATEM_PARMS_RSUs[PX_RSU_ID - 1][v_counter].signalGroupID)
                    ));
                    for (var integer v_intersection := 0; v_intersection < lengthof(v_spatems[v_counter].spat.intersections); v_intersection := v_intersection + 1) {
                        vc_states[v_counter][v_intersection] := v_spatems[v_counter].spat.intersections[v_intersection].states;
                    } // End of 'for' statement
                    // TODO Build SPATEM with dynamic values
                } // End of 'for' statement
                // TODO Build SPATEM with dynamic values
            }
            // IVIM
            if (PICS_GENERATE_IVIM) {
@@ -130,12 +150,12 @@ module ItsRSUsSimulator_Functions {
                    if (ispresent(PICS_DENM_EVENTS_RSU[PX_RSU_ID - 1][v_counter].roadWorksContainerExtended)) {
                        v_denms[v_counter].denm.alacarte := m_alacarte(PICS_DENM_EVENTS_RSU[PX_RSU_ID - 1][v_counter].roadWorksContainerExtended);
                    }
                } // End of 'for' loop
                } // End of 'for' statement
            }
            // CAM
            if (PICS_GENERATE_CAM) {
                // Build the list of the CAM events
                v_cam := valueof(
                v_cam := 
                    m_camParm(
                        PICS_RSU_PARAMS[PX_RSU_ID - 1].stationID,
                        m_rsuPosition(
@@ -143,7 +163,6 @@ module ItsRSUsSimulator_Functions {
                            vc_longPosVectorRsu.longitude
                        ), 
                        PICS_RSU_PARAMS[PX_RSU_ID - 1].pathHistory
                        ) 
                );
            } 
            // Build the messages value list for this RSU
@@ -206,6 +225,7 @@ module ItsRSUsSimulator_Functions {
                            out template (value) Payload p_payload
    ) runs on ItsRSUsSimulator {
        
        // Update dynamic parms
        vc_rsuMessagesValueList[PX_RSU_ID - 1].denms[vc_denmEventCounter].denm.management.referenceTime  := f_getCurrentTime();
        p_payload := valueof(
            f_adaptPayload(
@@ -238,10 +258,47 @@ module ItsRSUsSimulator_Functions {
    }
    
    function f_prepare_spatem(
                              in template (value) SPATEM p_spatem,
                              out template (value) Payload p_payload
    ) runs on ItsRSUsSimulator {
        var template (value) SPATEM v_spatem := p_spatem; // Make a copy
        
        // Rebuild SPATEM message
        for (var integer v_intersection := 0; v_intersection < lengthof(v_spatem.spat.intersections); v_intersection := v_intersection + 1) {
			var template (value) MovementList v_states := vc_states[PX_RSU_ID - 1][v_intersection];
            select (vc_spatemStatesId) {
                case (0) {
                    v_spatem.spat.intersections[v_intersection].states[0] := v_states[0];
                    v_spatem.spat.intersections[v_intersection].states[1] := v_states[1];
                    v_spatem.spat.intersections[v_intersection].states[2] := v_states[2];
                }
                case (1) {
                    v_spatem.spat.intersections[v_intersection].states[0] := v_states[1];
                    v_spatem.spat.intersections[v_intersection].states[1] := v_states[2];
                    v_spatem.spat.intersections[v_intersection].states[2] := v_states[0];
                }
                case (2) {
                    v_spatem.spat.intersections[v_intersection].states[0] := v_states[2];
                    v_spatem.spat.intersections[v_intersection].states[1] := v_states[0];
                    v_spatem.spat.intersections[v_intersection].states[2] := v_states[1];
                }
                case else {
                }
            } // End of 'select' statement
        } // End of 'for' statement
        vc_spatemStatesId := (vc_spatemStatesId + 1) mod 4; // TODO To be refined
        
        p_payload := {}; // FIXME To be developped
        p_payload := valueof(
            f_adaptPayload(
                bit2oct(
                    encvalue(
                        valueof(
                            v_spatem
                ))),
                PICS_MAPEM_BTP_DESTINATION_PORT,
                PICS_MAPEM_BTP_SOURCE_PORT
            )
        );
        
    }
    
@@ -331,7 +388,32 @@ module ItsRSUsSimulator_Functions {
    function f_processSrem(
                           in GeoNetworkingPdu p_geoNetworkingPdu
    ) runs on ItsRSUsSimulator {
        log("SREM=", p_geoNetworkingPdu)
        log("SREM=", p_geoNetworkingPdu);
        if (ispresent(p_geoNetworkingPdu.gnPacket.packet.payload.decodedPayload)) {
            if (ispresent(p_geoNetworkingPdu.gnPacket.packet.payload.decodedPayload.btpPacket.payload.decodedPayload)) {
                if (ischosen(p_geoNetworkingPdu.gnPacket.packet.payload.decodedPayload.btpPacket.payload.decodedPayload.sremPacket)) {
                    var SignalRequestMessage v_signalRequestMessage := p_geoNetworkingPdu.gnPacket.packet.payload.decodedPayload.btpPacket.payload.decodedPayload.sremPacket.srm;
                    var template (value) SSEM v_ssem := vc_rsuMessagesValueList[PX_RSU_ID - 1].ssem;
                    var template (value) Payload v_payload;
                    
                    log(v_signalRequestMessage);
                    // Build response
                    // TODO v_ssem.ssm.status
                    v_payload := valueof(
                        f_adaptPayload(
                            bit2oct(
                                encvalue(
                                    valueof(
                                        v_ssem
                            ))),
                            PICS_SSEM_BTP_DESTINATION_PORT,
                            PICS_SSEM_BTP_SOURCE_PORT
                        )
                    );
                    
                } // else, ignore message
            } // else, ignore message
        } // else, ignore message
        // TODO Process message, and send SSEM 
    }
    
+261 −6
Changes for ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Pics.ttcn: 261 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -294,10 +294,6 @@ module ItsRSUsSimulator_Pics {
            
            modulepar BtpPortId PICS_MAPEM_BTP_SOURCE_PORT       := 0;
            
            modulepar BtpPortId PICS_SPATEM_BTP_DESTINATION_PORT := 2004;
            
            modulepar BtpPortId PICS_SPATEM_BTP_SOURCE_PORT      := 0;
            
        } // End of group mapemCommonParams
        
        group mapemZone1 {
@@ -417,24 +413,271 @@ module ItsRSUsSimulator_Pics {
                    } // End of intersection #0
                }, // End of field intersections
                roadSegments := omit
            }
            } // End of PICS_MAPEM_PARMS_RSU_1
            
        } // End of group mapemZone1 
        
        group mapemZone2 {
            
            modulepar MapemParm PICS_MAPEM_PARMS_RSU_2 := {
                intersections := {
                    { // Start of intersection #0
                        name                                := "PICS_MAPEM_PARMS_RSU_1",
                        id := {
                            region                          := 0,
                            id                              := 0
                        },
                        revision                            := 0,
                        refPoint := {
                            lat                             := 435517392,
                            long                            := 103018217,
                            elevation                       := omit,
                            regional                        := omit
                        },
                        laneWidth                           := omit,
                        speedLimits                         := omit,
                        laneSet := {
                            { // Start of Lane #1
                                laneID                      :=  1,
                                name                        := omit,
                                ingressApproach             := 1,
                                egressApproach              := 1,
                                laneAttributes := {
                                    directionalUse          := '10'B,
                                    sharedWith              := '0000000000'B,
                                    laneType := {
                                        vehicle             := '00000000'B
                                    },
                                    regional                := omit
                                },
                                maneuvers                   := omit,
                                nodeList := {
                                    nodes := {
                                        {
                                            delta := {
                                                node_XY1 := {
                                                    x       := -10,
                                                    y       := 10
                                                }
                                            },
                                            attributes      := omit
                                        },
                                        {
                                            delta := {
                                                node_XY1 := {
                                                    x       := -10,
                                                    y       := 10
                                                }
                                            },
                                            attributes      := omit
                                        }
                                    }
                                },
                                connectsTo := {
                                    {
                                        connectingLane := {
                                            lane            := 1,
                                            maneuver        := omit
                                        }, 
                                        remoteIntersection  := omit,  
                                        signalGroup         := 1,    
                                        userClass           := omit, 
                                        connectionID        := omit
                                    }
                                },
                                overlays                    := omit,
                                regional                    := omit
                            }, // End of Lane #1
                            { // Start of Lane #2
                                laneID                      :=  1,
                                name                        := omit,
                                ingressApproach             := 1,
                                egressApproach              := 2,
                                laneAttributes := {
                                    directionalUse          := '01'B,
                                    sharedWith              := '0000000000'B,
                                    laneType := {
                                        vehicle             := '00000000'B
                                    },
                                    regional                := omit
                                },
                                maneuvers                   := omit,
                                nodeList := {
                                    nodes := {
                                        {
                                            delta := {
                                                node_XY1 := {
                                                    x       := -10,
                                                    y       := 10
                                                }
                                            },
                                            attributes      := omit
                                        },
                                        {
                                            delta := {
                                                node_XY1 := {
                                                    x       := -10,
                                                    y       := 10
                                                }
                                            },
                                            attributes      := omit
                                        }
                                    }
                                },
                                connectsTo                  := omit,
                                overlays                    := omit,
                                regional                    := omit
                            } // End of Lane #1
                        }, // End of LaneSet
                        preemptPriorityData                 := omit,
                        regional                            := omit
                    } // End of intersection #0
                }, // End of field intersections
                roadSegments := omit
            } // End of PICS_MAPEM_PARMS_RSU_2
            
        } // End of group mapemZone2 
        
        modulepar MapemParmList PICS_MAPEM_PARMS_RSUs := {
        modulepar MapemParmListRsu PICS_MAPEM_PARMS_RSUs := {
            PICS_MAPEM_PARMS_RSU_1,
            PICS_MAPEM_PARMS_RSU_2
        } // End of PICS_MAPEM_PARMS_RSU
        
    } // End of group mapemEvents 
    
    group spatemEvents {
        
        group spatemCommonParams {
            
            modulepar BtpPortId PICS_SPATEM_BTP_DESTINATION_PORT := 2004;
            
            modulepar BtpPortId PICS_SPATEM_BTP_SOURCE_PORT      := 0;
            
        } // End of group spatemCommonParams
        
        group spatemZone1 {
            
            modulepar SignalGroupParm PICS_SPATEM_PARMS_SG_1_RS_1 := {
                signalGroupID                               := 1,
                intersections := {
                    {
                        name                                := "PICS_SPATEM_PARMS_SG_1_RS_1",
                        id := {
                            region                          := 0,
                            id                              := 0
                        },
                        revision                            := 0,   
                        status                              := int2bit(0, 16),
                        moy                                 := omit,
                        timeStamp                           := omit, 
                        enabledLanes                        := omit,  
                        states := {
                            {
                               movementName                 := "protected-Movement-Allowed",
                               signalGroup                  := 1, 
                               state_time_speed:= {
                                   {
                                       eventState           := protected_Movement_Allowed,
                                       timing               := omit,
                                       speeds               := omit,
                                       regional             := omit
                                   }
                               },   
                               maneuverAssistList           := omit,
                               regional                     := omit
                            },
                            {
                               movementName                 := "protected-clearance",
                               signalGroup                  := 1, 
                               state_time_speed:= {
                                   {
                                       eventState           := protected_clearance,
                                       timing               := omit,
                                       speeds               := omit,
                                       regional             := omit
                                   }
                               },   
                               maneuverAssistList           := omit,
                               regional                     := omit
                            },
                            {
                               movementName                 := "stop_Then_Proceed",
                               signalGroup                  := 1, 
                               state_time_speed:= {
                                   {
                                       eventState           := stop_Then_Proceed,
                                       timing               := omit,
                                       speeds               := omit,
                                       regional             := omit
                                   }
                               },   
                               maneuverAssistList           := omit,
                               regional                     := omit
                            }
                        },
                        maneuverAssistList                  := omit,
                        regional                            := omit
                    }
                } // End of field states
            } // End of type PICS_SPATEM_PARMS_SG_1_RS_1
            
            modulepar SignalGroupParmList PICS_SPATEM_PARMS_RSU_1 := {
                PICS_SPATEM_PARMS_SG_1_RS_1
            } // End of type PICS_SPATEM_PARMS_RSU_1
            
        }
        
        group spatemZone2 {
            
            modulepar SignalGroupParm PICS_SPATEM_PARMS_SG_1_RS_2 := {
                signalGroupID                               := 1,
                intersections := {
                    {
                        name                                := "PICS_SPATEM_PARMS_SG_1_RS_2",
                        id := {
                            region                          := 0,
                            id                              := 0
                        },
                        revision                            := 0,   
                        status                              := int2bit(0, 16),
                        moy                                 := omit,
                        timeStamp                           := omit, 
                        enabledLanes                        := omit,  
                        states := {
                            {
                               movementName                 := "stop_Then_Proceed",
                               signalGroup                  := 1, 
                               state_time_speed:= {
                                   {
                                       eventState           := stop_Then_Proceed,
                                       timing               := omit,
                                       speeds               := omit,
                                       regional             := omit
                                   }
                               },   
                               maneuverAssistList           := omit,
                               regional                     := omit
                            }
                        },
                        maneuverAssistList                  := omit,
                        regional                            := omit
                    }
                } // End of field states
            } // End of type PICS_SPATEM_PARMS_SG_1_RS_2
            
            modulepar SignalGroupParmList PICS_SPATEM_PARMS_RSU_2 := {
                PICS_SPATEM_PARMS_SG_1_RS_2
            } // End of type PICS_SPATEM_PARMS_RSU_1_RS_2
            
        }
        
        modulepar SpatemParmRsu PICS_SPATEM_PARMS_RSUs := {
            PICS_SPATEM_PARMS_RSU_1,
            PICS_SPATEM_PARMS_RSU_2
        } // End of PICS_SPATEM_PARMS_RSUs
        
    } // End of group spatemEvents
    
    group ivimEvents {
        
        group ivimCommonParams {
@@ -463,6 +706,18 @@ module ItsRSUsSimulator_Pics {
            
    } // End of group ivimEvents 
    
    group ssemEvents {
        
        group ssemCommonParams {
            
            modulepar BtpPortId PICS_SSEM_BTP_DESTINATION_PORT := 2005;
            
            modulepar BtpPortId PICS_SSEM_BTP_SOURCE_PORT      := 0;
            
        } // End of group ssemCommonParams
        
    } // End of group ssemEvents
    
    group generationFrequencies {
        
        modulepar boolean PICS_GENERATE_CAM := true;
+16 −0
Changes for ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Templates.ttcn: 16 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -176,6 +176,22 @@ module ItsRSUsSimulator_Templates {
        
    } // End of group mapemTemplates
    
    group spatemTemplates {
        
        template (value) SPATEM m_spatemParm(
                                             in template (value) StationID p_stationID,
                                             in template (value) SPAT p_spat
        ) := {
            header := {
                protocolVersion := ItsPduHeader_protocolVersion_currentVersion_,
                messageID := ItsPduHeader_messageID_spatem_,
                stationID := p_stationID
            },
            spat := p_spat
        }
        
    } // End of group spatemTemplates
    
    group ivimTemplates {
        
    } // End of group ivimTemplates
+3 −1
Changes for ttcn/AtsRSUsSimulator/ItsRSUsSimulator_TestCases.ttcn: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -93,8 +93,10 @@ module ItsRSUsSimulator_TestCases {
            }
            [PICS_GENERATE_SPATEM] tc_spatem.timeout {
                log("*** " & testcasename() & ": DEBUG: Processing SPATEM ***");
                f_prepare_spatem(v_payload);
                for (var integer v_counter := 0; v_counter < lengthof(vc_rsuMessagesValueList[PX_RSU_ID - 1].spatems); v_counter := v_counter + 1) {
                    f_prepare_spatem(vc_rsuMessagesValueList[PX_RSU_ID - 1].spatems[v_counter], v_payload);
                    f_send(v_payload);
                }
                tc_spatem.start;
                repeat;
            }
Loading