ItsRSUsSimulator_TestSystem.ttcn 7.13 KB
Newer Older
garciay's avatar
garciay committed
module ItsRSUsSimulator_TestSystem {
    
  // LibIts
  import from ITS_Container language "ASN.1:1997" all;
  import from DSRC language "ASN.1:1997" all;
  import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
  import from IEEE1609dot2 language "ASN.1:1997" all;
garciay's avatar
garciay committed
    
  // LibItsGeoNetworking
  import from LibItsGeoNetworking_TestSystem all;
  import from LibItsGeoNetworking_TypesAndValues all;
  // LibItsCam
  import from LibItsCam_TestSystem all;
  import from LibItsCam_TypesAndValues all;
    
  // LibItsDenm
  import from LibItsDenm_TestSystem all;
  import from LibItsDenm_TypesAndValues all;
    
  // LibItsHttp
  import from LibItsHttp_TestSystem all;
  import from LibItsHttp_TypesAndValues all;
  
  // LibItsPki
  import from LibItsPki_TestSystem all;
  import from LibItsPki_TypesAndValues all;
  
  // AtsRSUsSimulator
  import from ItsRSUsSimulator_TypesAndValues all;
  import from ItsRSUsSimulator_Pics all;
  import from ItsRSUsSimulator_Pixits all;

  type component ItsPkiHttpRsuSimulator extends ItsPkiHttp {
    port ResultPort resultPort
  }

  type port ResultPort message {
    inout EcData, AtData
  } with {
    extension "internal"
  }
  
  /**
   * @desc Test component for ITS Network and Transport layer
   */
  type component ItsRSUsSimulator extends ItsGeoNetworking {
garciay's avatar
garciay committed
    /**
     * @desc RSUsimulator configuration port
     */
    port ConfigRsuSimulatorPort cfPort;
    /**
     * @desc Internal communication port
     */
    port ResultPort resultPort;
    /** Use httPort when EC and AT are served by the same end point */
    port HttpPort httpEcPort;               /** Enrolment end point */
    port HttpPort httpAtVPort;              /** Authorization Validation end point */
    port HttpPort httpAtPort;               /** Authorization end point */ 
    var Certificate vc_eaCertificate;       /** Test Adapter EA certificate */
    var octetstring vc_eaPrivateKey;        /** Test Adapter EA private key for signature */
    var octetstring vc_eaPrivateEncKey;     /** Test Adapter EA private key for encryption */
    var octetstring vc_eaWholeHash;         /** Test Adapter EA whole-hash for signature check */
    var octetstring vc_eaWholeHash256;      /** Test Adapter EA whole-hash using SHA 256 for encryption because of encryption key size ==32 */
    var HashedId8   vc_eaHashedId8;         /** Test Adapter EA HashedId8 for decryption of IUT's response */
    var octetstring vc_aaPrivateKey;        /** Test Adapter AA private key for signature */
    var octetstring vc_aaPrivateEncKey;     /** Test Adapter AA private key for encryption */
    var HashedId8   vc_aaHashedId8;         /** Test Adapter AA HashedId8 for decryption of IUT's response */
    var octetstring vc_aaWholeHash;         /** Test Adapter AA whole-hash for signature check */
    var octetstring vc_aaWholeHash256;      /** Test Adapter EA whole-hash using SHA 256 for encryption because of encryption key size ==32 */
    /**
     * @desc RSU position
     */
    var LongPosVector vc_longPosVectorRsu;
    /**
     * @desc RSU Geonetworking area
     */
    var GeoArea vc_geoArea;
    /**
     * @desc Supported sent messages templates: one or more from CAM, DENM, MAPEM, SPATEM, IVIM, SSEM
     * @see PICS_GENERATE_xxx
     */
    var template (value) RsuMessagesValueList vc_rsuMessagesValueList := {};
    /**
     * @desc Current RSU identifier
     */
    var integer vc_rsu_id := PX_RSU_ID - 1;
    /**
     * @desc DENM event counter: one RSU can send one or mode different DENM
     */
    var integer vc_denmEventCounter := 0;
    /**
     * @desc DENM sequence number index
     */
    var SequenceNumber vc_sequenceNumber := 0;
    /**
     * @desc TODO
     */
    var MsgCount vc_msgIssueRevision := 0;
    /**
     * @desc List of MovementState per intersection and per RSU 
     */
    var template (value) MovementListPerIntersectionRsu vc_states;
    /**
     * @desc The SPATEM message to use in SignalGroupParmList
     */
    var integer vc_signalGroupParmId := 0; // TODO Use a PIXIT 
    /**
     * @desc Current SPATEM state
     */
    var integer vc_spatemStatesId := 0;
    /**
     * @desc TimeMark of the begining of a new SPATEM phase
     */
    var TimeMark vc_currentPhaseStartTime := 36001;
    /**
     * @desc Estimated TimeMark of the end of the current SPATEM phase
     */
    var TimeMark vc_endPhaseStartTime := 0;
    /**
     * @desc Repetition duration times of SPATEM phases
     */
    /* TODO To be removed
     * var SpatemRepetionDuration vc_repitition_duration := { 
     PICS_SPATEM_REPITITION_DURATION_STATE_1, 
     PICS_SPATEM_REPITITION_DURATION_STATE_2, 
     PICS_SPATEM_REPITITION_DURATION_STATE_3 
     };
    */
    var integer vc_spatemStatesNum := 3; // Two states
    var boolean vc_beacon := PICS_GENERATE_BEACON;
    var boolean vc_cam    := PICS_GENERATE_CAM;
    var boolean vc_denm   := PICS_GENERATE_DENM;
    var boolean vc_ivim   := PICS_GENERATE_IVIM;
    var boolean vc_mapem  := PICS_GENERATE_MAPEM;
    var boolean vc_spatem := PICS_GENERATE_SPATEM;
    var boolean vc_pki    := PICS_PKI_SUPPORT;
    //var boolean vc_evcsn := PICS_GENERATE_EVCSN;
    var float vc_cam_timer_value  := PICS_CAM_FREQUENCY;
    timer tc_beacon := PICS_BEACON_FREQUENCY;
    timer tc_cam    := PICS_CAM_FREQUENCY;
    timer tc_denm   := PICS_DENM_FREQUENCY;
    timer tc_mapem  := PICS_MAPEM_FREQUENCY;
    timer tc_spatem := PICS_SPATEM_FREQUENCY;
    timer tc_ivim   := PICS_IVIM_FREQUENCY;
    //timer tc_evcsn   := PICS_EVCSN_FREQUENCY;
    var integer vc_security_state := 0; // 0: initial, 1: enrolled, 2:authorization
    var boolean vc_reenrolment := false;
    var integer vc_ec_counter := 0;
    var SequenceOfEcData vc_ec_certificates := {};
    var integer vc_at_counter := 0;
    var SequenceOfAtData vc_at_certificates := {};
  } // End of component ItsRSUsSimulator
    /**
     * @desc Test system component for ITS Network and Transport layer
     */
  type component ItsRSUsSimulatorSystem extends ItsGeoNetworkingSystem {
    port ConfigRsuSimulatorPort cfPort;
    port HttpPort httpPort;
    port HttpPort httpPort_notif;
  type record of record {
    boolean          detected,
    ItsRSUsSimulator component_,
    integer          stationId,
    integer          detectionCounter
YannGarcia's avatar
YannGarcia committed
  } VehiclesSimulator;

  group configRsuSimulatorTypes {
    type record CfInitialize {
      integer i
    } with {
      variant "FIELDORDER(msb)"
      }
    type charstring CfEvent;
    type boolean CfResult;
    type union CfEventInd {
      anytype empty
    }
YannGarcia's avatar
YannGarcia committed
  } // End of group configRsuSimulatorTypes

  group configRsuSimulatorPort {
    /**
     * @desc Configuration RSUsimulator port
     */
    type port ConfigRsuSimulatorPort message {
YannGarcia's avatar
YannGarcia committed
      out
        CfInitialize, CfResult, UtGnResults, UtCamResults, UtDenmResults, UtGnEventInd, UtCamEventInd, UtDenmEventInd, UtPkiResults;
      in
        CfEvent, CfEventInd, UtGnInitialize, UtCamInitialize, UtDenmInitialize, UtGnTrigger, UtCamTrigger, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtPkiInitialize, UtPkiTrigger
      } // End of ConfigRsuSimulatorPort
  } // End of group configRsuSimulatorPort 
} // End of module ItsRSUsSimulator_TestSystem