鎬濅匠绉戞妧 2020-04-17T09:19:38Z /feed/atom/ WordPress admin <![CDATA[Automotive Ethernet]]> /some-ip-55-diagram-copy/ 2020-04-17T09:19:38Z 2020-03-26T02:35:43Z Basic Concept
  • 浣滀负涓庝紶缁熻溅杞芥€荤嚎涓嶅悓鐨勯€氫俊鏂瑰紡锛屼互澶綉鍏锋湁鑷韩鐨勭壒鐐癸細
    • 浼犺緭閫熷害蹇?/li>
    • 鐐瑰鐐归€氫俊
  • 鐐瑰鐐圭殑閫氫俊鏂瑰紡锛屾槸浠ュお缃戦潪甯搁矞鏄庣殑鐗圭偣銆傚湪寮€鍙戝拰娴嬭瘯宸ヤ綔涓紝閽堝浠ュお缃戜篃闇€瑕佺敤涓嶅悓鐨勬柟寮忓幓鑰冭檻濡備綍閰嶇疆鐩稿簲鐨勫伐鍏枫€侟br>鍩烘湰鐨勫簲鐢ㄥ満鏅細
    • Media Converting
    • Test Access Point

Media Converting

濯掍綋杞崲鏂瑰紡锛屼篃灏辨槸鐩存帴鍦ㄧ墿鐞嗗眰杩涜濯掍綋杞崲銆傝〃鐜颁负杞﹁浇浠ュお缃戝拰鐢佃剳涔嬮棿閫氳繃浠ュお缃戣繘琛岀墿鐞嗗眰杞崲銆侟/p>

2010骞村拰2017骞达紝Technica鍏堝悗姝e紡鍙戝竷閽堝100BASE-T1鍜?000BASE-T1鐨勫獟浣撹浆鎹㈠櫒锛屽叾浜у搧鐗圭偣鏄細

  • 100Base-T1鍜?00Base-Tx涔嬮棿鐗╃悊灞傚叏鍙屽伐杞崲
  • 涓嶅瓨鍌ㄦ垨淇敼浠讳綍鏁版嵁鍖呫€侟/li>
  • 鍏锋湁鏋佸ぇ鐨勫彲闈犳€с€侟/li>

MediaConverter鐨勪娇鐢ㄥ満鏅熀鏈笂涓€鏍凤細

Test Access Point

Technica閽堝TAP鐨勯渶姹傦紝浠?012骞村紑濮 锛屽紑鍙戜簡澶氱妯″潡锛屽彲浠ユ弧瓒冲悇绉嶅満鏅殑闇€瑕併€侟/p>

MediaGateway
12 x 100BASE-T1
3 x 1000BASE-Tx
1 x SFP

CM Eth Combo
2 x 2 x 100Base-T1
1 x 2 x 1000Base-T1
1000Base-T (Logging/Cascading)

CM 100 high
6 x 2 x 100Base-T1
1000Base-T (Logging/Cascading)

CM 100 high
6 x 2 x 1000Base-T1
10G SFP+ (Logging)

搴旂敤妗堜緥1

Technica 2012骞村彂甯冪殑MediaGateway锛孧ediaGatway鍔熻兘寮哄ぇ锛屽叾涓殑涓€涓姛鑳斤紝渚挎槸鑳藉湪绗簩灞備笂瀹炵幇TAP銆侟/p>

2012骞村彂甯冪殑MediaGateway锛孧ediaGatway鍔熻兘寮哄ぇ锛屽叾涓殑涓€涓姛鑳斤紝渚挎槸鑳藉湪绗簩灞備笂瀹炵幇TAP銆侟/p>

搴旂敤妗堜緥2 Latency

Technica 2019骞村彂甯冪殑Capture Module锛岃兘鍦ㄧ墿鐞嗗眰涓婂疄鐜癟AP銆侟br>濡備笅鍥炬墍绀猴紝CM 100 High,鑳藉悓鏃剁洃鍚袱璺俊鍙凤紝涓€璺粠鎽勫儚澶村埌鎺у埗鍣紝涓€璺粠鎺у埗鍣ㄥ埌浠〃锛屼粠鑰屽疄鐜板欢杩熸祴璇曘€ 娴嬭瘯璁剧疆绠€鍗曢珮鏁堛€侟/p>

搴旂敤妗堜緥3 Packet Loss

涓嬮潰鐨勪緥瀛愶紝CM 1000 High,閫氳繃1000BASE-T1 SPY Mini妯″潡锛屽緱鍒版潵鑷縺鍏夐浄杈剧殑T1淇″彿锛屽苟鑾峰緱鏃堕棿鎴充互鍙婃秷鎭暟閲忥紝骞跺皢鎶ユ枃鏃犱慨鏀圭殑鍙戦€佺粰鎺у埗鍣ㄣ€傛帶鍒跺櫒鍙互鎻愪緵鑾峰緱鐨勬秷鎭殑鏁伴噺锛屼粠鑰屽疄鐜颁涪鍖呮祴璇曘€侟/p>

]]>
admin <![CDATA[SOME/IP-SD-Diagram]]> /some-ip-54-main-phase-for-client-services-copy/ 2020-03-06T06:38:46Z 2020-03-06T06:31:57Z Publish/Subscribe with link loss at client (figure ignoring timings)

Publish/Subscribe Registration/Deregistration behavior (figure ignoring timings)

Publish/Subscribe with link loss at Server (figure ignoring timings)

Publish/Subscribe State Diagram (server behavior for unicast eventgroups)

Publish/Subscribe State Diagram (server behavior for multicast eventgroups

Publish/Subscribe State Diagram (server behavior for adaptive unicast/multicast eventgroups)

Publish/Subscribe Example for Endpoint Options and the usage of ports

  • Example
  • following Figure shows an example with the different Endpoint and a Multicast Option:
    涓嬪浘灞曠ず浜嗕竴涓緥瀛愶紝浣跨敤涓嶅悓鐨凟ndpoint鍜孧ulticast Option
    • The Server offers the Service Instance on Server UDP-Endpoint SU and Server TCP-Endpoint ST
      鏈嶅姟鍣ㄦ彁渚涗簡涓€涓湇鍔″疄渚嬶紝閫氳繃UDP-Endpoint 锛堢畝绉癝U锛 鍜 TCP-Endpoint ST锛堢畝绉癝T锛堻/li>
    • The Client opens a TCP connection
      瀹㈡埛绔墦寮€涓€涓猅CP杩炴帴锛圫ocket锛堻/li>
    • The Client sends a Subscribe Eventgroup entry with Client UDP-Endpoint CU (unicast) and a Client TCP-Endpoint CT
      瀹㈡埛绔彂閫佷竴涓猄ubscribe Eventgroup entry锛屽甫鏈夊鎴风UDP-Endpoint (unicast)(绠€绉癈U)鍜屼竴涓鎴风TCP-Endpoint 锛堢畝绉癈T锛堻/li>
    • The Server answers with a Subscribe Eventgroup Ack entry with Multicast MU
      鏈嶅姟鍣ㄩ€氳繃澶氭挱option锛堢畝绉癕U锛夊洖澶嶄竴涓猄ubscribe Eventgroup Ack entry
  • Then the following operations happen:
    鎺ヤ笅鏉ヨ繖涔堣繍琛岋細
    • The Client calls a method on the Server
      瀹㈡埛绔皟鐢ㄦ湇鍔″櫒绔殑method
    • Request is sent from CU to SU and Response from SU to CU
      Request浠庡鎴风閫氳繃UDP鍙戠粰鏈嶅姟鍣ㄧ锛屽洖澶嶆秷鎭粠鏈嶅姟鍣ㄧ閫氳繃UDP鍙戝洖瀹㈡埛绔?/li>
    • For TCP this would be: Request dyn to ST and RESPONSE from ST to CT
    • The Server sends a Unicast UDP Event: SU to CU
      鏈嶅姟鍣ㄧ鍙戦€佷竴涓猆nicast UDP Event:鍒板鎴风锛歋U鍒癈U
    • The Server sends a Unicast TCP Event: ST to CT
      鏈嶅姟鍣ㄧ鍙戦€佷竴涓猆nicast TCP Event鍒板鎴风: ST鍒癈T.
    • The Server sends a Multicast UDP Event: SU to MU
      鏈嶅姟鍣ㄧ鍙戦€佷竴涓狹ulticast UDP Event鍒板鎴风锛歋U鍒癕U
  • Keep in mind that Multicast Endpoints use a Multicast IP Address on the receiver side,i.e. the client, and TCP cannot be used for Multicast

]]>
admin <![CDATA[SOME/IP-SD-Main Phase for Client Services]]> /some-ip-53-repetition-phase-for-client-services-copy/ 2020-03-05T10:38:50Z 2020-03-05T06:15:00Z
  • If the Service Discovery Module receives an OfferService Entry, the following step(s) shall be performed in the following order:
    濡傛灉鏈嶅姟鍙戠幇妯″潡鏀跺埌OfferService entry锛屽垯搴旀寜浠ヤ笅椤哄簭鎵ц浠ヤ笅姝ラ锛欬ul>
  • If received TTL is not equal to the max value, update the timer by the received TTL value.
    濡傛灉鏀跺埌鐨凾TL涓嶇瓑浜庢渶澶у€硷紝鍒欐寜鎺ユ敹鐨凾TL鍊兼洿鏂板畾鏃跺櫒銆侟/li>
  • Open TCP connection if SdClientServiceTcpRef is configured and was not opened before.
    濡傛灉閰嶇疆浜哠dClientServiceTcpRef骞朵笖涔嬪墠鏈墦寮€锛屽垯鎵撳紑TCP杩炴帴銆侟/li>
  • Note娉ㄦ剰锛
    The amount of separate Service Discovery messages shall be reduced, i.e.: Combine as much information as possible into one Service Discovery message before calling the Socket Adaptor鈥檚 transmit API. 搴斿噺灏戝崟鐙殑Service Discovery娑堟伅鐨勬暟閲忥紝鍗筹細鍦ㄨ皟鐢ㄥ鎺ュ瓧閫傞厤鍣ㄧ殑浼犺緭API涔嬪墠锛屽皢灏藉彲鑳藉鐨勪俊鎭悎骞跺埌涓€涓湇鍔″彂鐜版秷鎭腑銆侟/li>
    • If an OfferService entry was received and its TTL timer did not expire yet, the associated Socket Connections are in state SOAD_SOCON_ONLINE in the Main phase:
      濡傛灉鍦ㄤ富闃舵鏀跺埌OfferService entry涓斿叾TTL璁℃椂鍣ㄥ皻鏈埌鏈燂紝鐩稿叧鐨勫鎺ュ瓧杩炴帴澶勪簬鐘舵€丼OAD_SOCON_ONLINE锛欬ul>
    • If the client service has not been reported as SD_CLIENT_SERVICE_AVAILABLE:
      濡傛灉瀹㈡埛绔湇鍔″皻鏈姤鍛婁负SD_CLIENT_SERVICE_AVAILABLE锛欬ul>
    • the API SoAd_EnableSpecificRouting() shall be called with SdClientServiceActivationRef (see SdConsumedMethods) and the relevant Socket Connections for this Client Service Instance.
      搴斾娇鐢⊿dClientServiceActivationRef锛堣鍙傞槄SdConsumedMethods锛夊拰姝ゅ鎴风鏈嶅姟瀹炰緥鐨勭浉鍏冲鎺ュ瓧杩炴帴鏉ヨ皟鐢ˋPI SoAd_EnableSpecificRouting锛堬級銆侟/li>
    • SD_CLIENT_SERVICE_AVAILABLE shall be indicated to the BswM module by calling the API BswM_Sd_ClientServiceCurrentState().
      搴旈€氳繃璋冪敤API BswM_Sd_ClientServiceCurrentState()鍚態swM妯″潡鎸囩ずSD_CLIENT_SERVICE_AVAILABLE銆侟/li>
    • If an OfferService entry was received and its TTL timer did not expire yet, the associated Socket Connections are in state SOAD_SOCON_ONLINE in the Main phase:
      濡傛灉鍦ㄤ富闃舵鏀跺埌OfferService entry涓斿叾TTL璁℃椂鍣ㄥ皻鏈埌鏈燂紝涓旂浉鍏崇殑濂楁帴瀛楄繛鎺ュ浜庣姸鎬丼OAD_SOCON_ONLINE锛欬ul>
    • For each currently requested Consumed Eventgroup of this Client Service Instance (Consumed Eventgroups are requested using Sd_ConsumedEventGroupSetState() and with state SD_CONSUMED_EVENTGROUP_REQUESTED or automatically on startup if SdConsumedEventGroupAutoRequire is configured to true), the following shall be done in exactly this order:
      瀵逛簬姝ゅ鎴风鏈嶅姟瀹炰緥鐨勬瘡涓綋鍓嶈姹傜殑Consumed Eventgroup 锛堜娇鐢⊿d_ConsumedEventGroupSetState锛堬級鍜岀姸鎬丼D_CONSUMED_EVENTGROUP_REQUESTED璇锋眰Consumed Eventgroups 锛屾垨鑰呭鏋淪dConsumedEventGroupAutoRequire閰嶇疆涓簍rue锛屽垯鍦ㄥ惎鍔ㄦ椂鑷姩鍚敤锛夛紝浠ヤ笅鍐呭搴旀寜浠ヤ笅椤哄簭瀹屾垚锛欬ul>
    • StopSubscribeEventgroup entry shall be sent out, if the last SubscribeEventgroup entry was sent as reaction to an OfferService entry received via Multicast, it was never answered with a SubscribeEventgroupAck, and the current OfferService entry was received via Multicast.
      濡傛灉鏈€鍚庝竴涓猄ubscribeEventgroup entry浣滀负瀵筄fferService entry鐨勫搷搴旇€屽彂閫侊紝瀹冧粠鏈€氳繃SubscribeEventgroupAck琚洖澶嶏紝骞朵笖褰撳墠鐨凮fferService entry鏄€氳繃Multicast鎺ユ敹鐨勶紝鍒欏彂閫丼topSubscribeEventgroup entry銆侟/li>
    • A SubscribeEventgroup entry shall be sent out.
      鐒跺悗鍙戦€丼ubscribeEventgroup entry銆侟/li>
    • Note:
      • The transmission of a response to an Offer received via multicast shall be delayed with the configured delay.
        閫氳繃澶氭挱鎺ユ敹鐨凮ffer鐨勫搷搴旀秷鎭殑浼犺緭搴旇寤惰繜锛岃繖涓欢杩熷彲浠ヨ閰嶇疆銆
      • When the request response delay elapses before the associated Socket Connections are in state SOAD_SOCON_ONLINE, the StopSubscribeEventgroup and SubscribeEventgroup shall be delayed until the Socket Connections are online and shall not be considered as reaction to an OfferService entry received via Multicast.
        褰撳湪鍏宠仈鐨勫鎺ュ瓧杩炴帴澶勪簬SOAD_SOCON_ONLINE鐘舵€佷箣鍓嶈姹傚搷搴斿欢杩熷凡缁忕粨鏉燂紝StopSubscribeEventgroup鍜孲ubscribeEventgroup灏嗚寤惰繜锛岀洿鍒癝ocket Connections鍦ㄧ嚎锛屽苟涓斾笉搴旇瑙嗕负瀵归€氳繃Multicast鎺ユ敹鐨凮fferService entry鐨勫弽搴斻€
      • When the request response delay elapses while the ClientService is in state RELEASED, there shall be no response to this Offer entry.
        褰揅lientService澶勪簬RELEASED鐘舵€佹椂锛屽鏋滆姹傚搷搴斿欢杩熷凡缁忕粨鏉燂紝鍒欎笉浼氬姝ffer entry 鍋氬嚭鍝嶅簲銆侟/li>
    • When the Client Service is reported as SD_CLIENT_SERVICE_DOWN to the BswM by calling the API BswM_Sd_ClientServiceCurrentState() :
      褰撻€氳繃璋冪敤API BswM_Sd_ClientServiceCurrentState()灏嗗鎴风鏈嶅姟鍚態swM鎶ュ憡涓篠D_CLIENT_SERVICE_DOWN:
      • The API SoAd_DisableSpecificRouting() shall be called with SdClientServiceActivationRef (see SdConsumedMethods) and the relevant Socket Connections for this Client Service Instance.
        搴斾娇鐢⊿dClientServiceActivationRef锛堣鍙傞槄SdConsumedMethods锛夊拰姝ゅ鎴风鏈嶅姟瀹炰緥鐩稿叧鐨勫鎺ュ瓧杩炴帴鍘昏皟鐢ˋPI SoAd_DisableSpecificRouting()銆侟/li>
    • If a StopSubscribeEventgroup and SubscribeEventgroup for the same Eventgroup (i.e. same Service ID, Instance ID, Eventgroup ID, Counter, and Major Version) have to be sent out, these entries have to be directly after each other in the same SD message (no entry between them).
      瀵逛簬鐩稿悓浜嬩欢缁勶紙鍗崇浉鍚岀殑鏈嶅姟ID锛屽疄渚婭D锛屼簨浠剁粍ID锛岃鏁板櫒鍜屼富鐗堟湰锛夛紝濡傛灉蹇呴』鍙戦€丼topSubscribeEventgroup鍜孲ubscribeEventgroup锛屽垯杩欎簺entry蹇呴』鍦ㄧ浉鍚岀殑SD娑堟伅涓洿鎺ョ浉缁ц繛缁彂閫侊紝鑰屾棤entry鍦ㄥ畠浠箣闂淬€侟ul>
    • StopSubscribeEventgroup entry shall be sent out, if the last SubscribeEventgroup entry was sent as reaction to an OfferService entry received via Multicast, it was never answered with a SubscribeEventgroupAck, and the current OfferService entry was received via Multicast.
      濡傛灉鍙戦€佹渶鍚庝竴涓猄ubscribeEventgroup entry鏄敤鏉ュ搷搴擮fferService entry锛屼絾浠庢病鏈夋敹鍒癝ubscribeEventgroupAck锛屼笖杩欎釜OfferService entry鏄互Multicast鎺ユ敹鍒扮殑锛屽垯StopSubscribeEventgroup entry闇€瑕佽鍙戦€併€侟/li>
    • A SubscribeEventgroup entry shall be sent out .
      鐒跺悗鍙戦€丼ubscribeEventgroup entry銆侟/li>
    • If the Service Discovery Module receives a SubscribeEventgroupAck fitting this Consumed Eventgroup for the first time after this Consumed Eventgroup was requested, the following step(s) shall be performed in the following order:
      濡傛灉鏈嶅姟鍙戠幇妯″潡鍦ㄨ姹傛Consumed Eventgroup鍚庣涓€娆℃敹鍒伴€傚悎姝onsumed Eventgroup鐨凷ubscribeEventgroupAck锛屽垯搴旀寜浠ヤ笅椤哄簭鎵ц浠ヤ笅姝ラ锛
      • Use the information of the Multicast Option (if existing) to set up relevant Multicast Information in SoAd (see SoConId related to SdConsumedEventGroupMulticastActivationRef).
        浣跨敤Multicast Option 锛堝鏋滃瓨鍦級鐨勪俊鎭湪SoAd涓缃浉鍏崇殑澶氭挱淇℃伅锛堣鍙傞槄涓嶴dConsumedEventGroupMulticastActivationRef鐩稿叧鐨凷oConId锛夈€
      • Call the API SoAd_RequestIpAddrAssignment() using the IP address received by the SubscribeEventgroupAck message.
        浣跨敤SubscribeEventgroupAck娑堟伅鎺ユ敹鐨処P鍦板潃璋冪敤API SoAd_RequestIpAddrAssignment锛堬級銆
      • Call BswM_Sd_ConsumedEventGroupCurrentState with SD_CONSUMED_EVENTGROUP_AVAILABLE.
        浣跨敤SD_CONSUMED_EVENTGROUP_AVAILABLE璋冪敤BswM_Sd_ConsumedEventGroupCurrentState銆侟/li>
      • Setup TTL timer with the TTL of the SubscribeEventgroupAck entry.
        浣跨敤SubscribeEventgroupAck entry鐨凾TL璁剧疆TTL璁℃椂鍣ㄣ€侟/li>
    • If a Service Discovery Message contains only a SubscribeEventgroupNack entry but no SubscribeEventgroupAck entry for the same Eventgroup, Service Discovery shall do the following:
      濡傛灉鏈嶅姟鍙戠幇娑堟伅浠呭寘鍚玈ubscribeEventgroupNack entry浣嗕笉鍖呭惈鍚屼竴浜嬩欢缁勭殑SubscribeEventgroupAck entry锛屽垯Service Discovery灏嗘墽琛屼互涓嬫搷浣滐細
      • Report the DEM error SD_E_SUBSCR_NACK_RECV (and restart the TCP connection (if applicable)
        鎶ュ憡DEM閿欒SD_E_SUBSCR_NACK_RECV 骞堕噸鏂板惎鍔═CP杩炴帴锛堝鏋滈€傜敤锛堻/li>
      • call the API SoAd_CloseSoCon()with parameter abort set to TRUE to close all socket connections associated to this service instance
        灏嗗弬鏁癮bort璁剧疆涓篢RUE骞惰皟鐢ˋPI SoAd_CloseSoCon()浠ュ叧闂笌姝ゆ湇鍔″疄渚嬪叧鑱旂殑鎵€鏈夊鎺ュ瓧杩炴帴
      • call the API SoAd_OpenSoCon() to reopen all socket connections associated to this service instance
        璋冪敤API SoAd_OpenSoCon()浠ラ噸鏂版墦寮€涓庢鏈嶅姟瀹炰緥鍏宠仈鐨勬墍鏈夊鎺ュ瓧杩炴帴
    • If the Service Discovery Module receives a StopOfferService Entry, the following step(s) shall be performed in the following order:
      濡傛灉鏈嶅姟鍙戠幇妯″潡鏀跺埌StopOfferService鏉$洰锛屽垯搴旀寜浠ヤ笅椤哄簭鎵ц浠ヤ笅姝ラ锛欬ul>
    • Stop the TTL timers of this Client Service Instance and all related Consumed Eventgroups.
      鍋滄姝ゅ鎴风鏈嶅姟瀹炰緥鍜屾墍鏈夌浉鍏崇殑Consumed Eventgroup鐨凾TL璁℃椂鍣ㄣ€侟/li>
    • Report this Client Service as DOWN if it was reported AVAILABLE before (call BswM_Sd_ClientServiceCurrentState with SD_CLIENT_SERVICE_DOWN and the Client Service鈥檚 handle ID)
      濡傛灉涔嬪墠鎶ュ憡浜咥VAILABLE锛屽垯灏嗘瀹㈡埛绔湇鍔℃姤鍛婁负DOWN锛堜娇鐢⊿D_CLIENT_SERVICE_DOWN鍜屽鎴锋湇鍔$殑鍙ユ焺ID璋冪敤BswM_Sd_ClientServiceCurrentState锛夈€
    • Report all Consumed Eventgroups as DOWN that were reported AVAILABLE before (call BswM_Sd_ConsumedEventGroupCurrentState with SD_CONSUMED_EVENTGROUP_DOWN and the Consumed Eventgroup鈥檚 handle ID).
      灏嗕箣鍓嶆姤鍛婁负AVAILABLE鐨勬墍鏈塁onsumed Eventgroup鎶ュ憡涓篋OWN锛堜娇鐢⊿D_CONSUMED_EVENTGROUP_DOWN鍜孋onsumed Eventgroups鐨勫彞鏌処D璋冪敤BswM_Sd_ConsumedEventGroupCurrentState锛夈€
    • Close all Socket Connections associated with this Client Service Instance that have been opened before.
      鍏抽棴涔嬪墠鎵撳紑鐨勪笌姝ゅ鎴风鏈嶅姟瀹炰緥鍏宠仈鐨勬墍鏈夊鎺ュ瓧杩炴帴銆
    • Stay in Main Phase and do not send FindService entries.
      淇濇寔涓婚樁娈碉紝涓嶅彂閫丗indService鏉$洰銆侟/li>
    • If Sd_LocalIpAddrAssignmentChg() is called with a state other than 鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥 while being in Main Phase:
      濡傛灉鍦ㄤ富闃舵涓皟鐢⊿d_LocalIpAddrAssignmentChg() 鏃剁姸鎬佷笉鏄€淭CPIP_IPADDR_STATE_ASSIGNED鈥濓細
      • The Down Phase shall be entered. 搴旇繘鍏own Phase銆侟/li>
      • 鈥淪D_CLIENT_SERVICE_DOWN鈥 shall be indicated to the BswM module by calling the API BswM_Sd_ClientServiceCurrentState(), if the present state is SD_CLIENT_SERVICE_AVAILABLE.
        濡傛灉褰撳墠鐘舵€佷负SD_CLIENT_SERVICE_AVAILABLE锛屽垯搴旈€氳繃璋冪敤API BswM_Sd_ClientServiceCurrentState()鍚態swM妯″潡鎸囩ず鈥淪D_CLIENT_SERVICE_DOWN鈥濄€侟/li>
      • 鈥淪D_CONSUMED_EVENTGROUP_DOWN鈥 shall be indicated to the BswM module by calling the API BswM_Sd_ConsumedEventGroupCurrentState() for all associated ConsumedEventgroups, if the present state is SD_CONSUMED_EVENTGROUP_AVAILABLE.
        濡傛灉褰撳墠鐘舵€佷负SD_CONSUMED_EVENTGROUP_AVAILABLE锛屽垯搴旈€氳繃涓烘墍鏈夊叧鑱旂殑ConsumedEventgroup璋冪敤API BswM_Sd_ConsumedEventGroupCurrentState()鍚態swM妯″潡琛ㄦ槑鈥淪D_CONSUMED_EVENTGROUP_DOWN鈥濄€侟/li>
    • If the TCP/IP connection has been lost (Socket connection is other than SOAD_SOCON_ONLINE), the Service Discovery Module shall leave the Main Phase, enter the Wait Phase, and stop the TTL timers of the associated Client Service Instances and EventGroups.
      濡傛灉TCP / IP杩炴帴涓㈠け锛堝鎺ュ瓧杩炴帴涓嶆槸SOAD_SOCON_ONLINE锛夛紝鏈嶅姟鍙戠幇妯″潡搴旂寮€涓婚樁娈碉紝杩涘叆绛夊緟闃舵锛屽苟鍋滄鐩稿叧瀹㈡埛绔湇鍔″疄渚嬪拰浜嬩欢缁勭殑TTL瀹氭椂鍣ㄣ€侟/li>
    • The Service Discovery Module shall stay in the Main Phase as long as the following conditions apply:
      鍙婊¤冻浠ヤ笅鏉′欢锛屾湇鍔″彂鐜版ā鍧楀簲淇濇寔鍦ㄤ富闃舵锛欬ul>
    • Client Service is needed (i.e. Sd_ClientServiceSetState()has been called with State 鈥淪D_CLIENT_SERVICE_REQUESTED鈥?
      闇€瑕佸鎴风鏈嶅姟锛堝嵆宸蹭娇鐢ㄧ姸鎬佲€淪D_CLIENT_SERVICE_REQUESTED鈥濊皟鐢⊿d_ClientServiceSetState()
    • IP address assigned and can be used (i.e. Sd_LocalIpAddrAssignmentChg has been called with status TCPIP_IPADDR_STATE_ASSIGNED).
      鍒嗛厤骞跺彲浠ヤ娇鐢ㄧ殑IP鍦板潃锛堝嵆宸茶皟鐢ㄧ姸鎬佷负TCPIP_IPADDR_STATE_ASSIGNED鐨凷d_LocalIpAddrAssignmentChg锛夈€侟/li>
  • The Service Discovery Module shall leave the Main Phase and enter the state SD_CLIENT_SERVICE_DOWN if at least one of the listed conditions described as above does not apply any more.
    濡傛灉涓婅堪鑷冲皯涓€涓垪鍑虹殑鏉′欢涓嶅啀閫傜敤锛屽垯鏈嶅姟鍙戠幇妯″潡搴旂寮€涓婚樁娈靛苟杩涘叆鐘舵€丼D_CLIENT_SERVICE_DOWN銆
    • If the Client goes DOWN which is indicated by a call of Sd_ClientServiceSetState () with State 鈥淪D_CLIENT_SERVICE_RELEASED鈥 while all other conditions listed in SWS_SD_00375 still apply, the Service Discovery module shall perform the following steps:
      濡傛灉瀹㈡埛绔繘鍏OWN锛岃繖鏄€氳繃璋冪敤鐘舵€佷负鈥淪D_CLIENT_SERVICE_RELEASED鈥濈殑API Sd_ClientServiceSetState锛堬級寮曞彂鐨勶紝鑰孲WS_SD_00375锛堜笂椤碉級涓垪鍑虹殑鎵€鏈夊叾浠栨潯浠朵粛鐒堕€傜敤锛屽垯鏈嶅姟鍙戠幇妯″潡搴旀墽琛屼互涓嬫楠わ細
      • Enter the Down Phase and indicate the state SD_CLIENT_SERVICE_DOWN to the BswM by calling the API BswM_Sd_ClientServiceCurrentState ().
        杩涘叆Down Phase骞堕€氳繃璋冪敤API BswM_Sd_ClientServiceCurrentState锛堬級鍚態swM鎸囩ず鐘舵€丼D_CLIENT_SERVICE_DOWN銆侟/li>
      • For all subscribed eventgroups of this Client Service,
        瀵逛簬姝ゅ鎴锋湇鍔$殑鎵€鏈夎闃呬簨浠剁粍锛孅ul>
      • a StopSubscribeEventgroup shall be sent
        搴斿彂閫丼topSubscribeEventgroup銆侟/li>
      • the status shall be set to SD_CONSUMED_EVENTGROUP_DOWN and reported to BswM by calling the API BswM_Sd_ConsumedEventGroupCurrentState().
        鐘舵€佸簲璁剧疆涓篠D_CONSUMED_EVENTGROUP_DOWN骞堕€氳繃璋冪敤API BswM_Sd_ConsumedEventGroupCurrentState()鎶ュ憡缁橞swM_Sd_ConsumedEventGroupCurrentState锛堬級锛孅/li>
    • If the Consumed Event Group is not requested anymore as indicated by a call of Sd_ConsumedEventGroupSetState with state SD_CONSUMED_EVENTGROUP_RELEASED, the Service Discovery module shall perform the following steps for the consumed event group:
      濡傛灉閫氳繃璋冪敤鐘舵€佷负SD_CONSUMED_EVENTGROUP_RELEASED鐨凷d_ConsumedEventGroupSetState琛ㄦ槑涓嶅啀璇锋眰Consumed Event Group 锛屽垯鏈嶅姟鍙戠幇妯″潡灏嗗Consumed Event Group鎵ц浠ヤ笅姝ラ锛欬ul>
    • A StopSubscribeEventgroup shall be sent.
      搴斿彂閫丼topSubscribeEventgroup銆侟/li>
    • The status shall be set to SD_CONSUMED_EVENTGROUP_DOWN and be reported to BswM_Sd_ConsumedEventGroupCurrentState(), if the status is not currently SD_CONSUMED_EVENTGROUP_DOWN.
      濡傛灉鐘舵€佸綋鍓嶄笉鏄疭D_CONSUMED_EVENTGROUP_DOWN锛屽垯鐘舵€佸簲璁剧疆涓篠D_CONSUMED_EVENTGROUP_DOWN骞舵姤鍛婄粰BswM_Sd_ConsumedEventGroupCurrentState
    • If the TTL Timer of a Client Service expires, the Service Discovery module shall perform the following steps:
      濡傛灉瀹㈡埛绔疭ervice鐨凾TL瀹氭椂鍣ㄥ埌鏈燂紝鍒欐湇鍔″彂鐜版ā鍧楀簲鎵ц浠ヤ笅姝ラ锛欬ul>
    • Enter the Initial Wait Phase and indicate the state SD_CLIENT_SERVICE_DOWN to the BswM by calling the API BswM_Sd_ClientServiceCurrentState ().
      杈撳叆鍒濆绛夊緟闃舵锛屽苟閫氳繃璋冪敤API BswM_Sd_ClientServiceCurrentState锛堬級鍚態swM鎻愪緵鐘舵€佷俊鎭疭D_CLIENT_SERVICE_DOWN銆侟/li>
    • All subscribed Eventgroups of this Client Service shall expired in this instance (stop TTL timer) and the expiration shall be handled as describe in SWS_SD_00601.
      姝ゅ鎴风鏈嶅姟鐨勬墍鏈夊凡璁㈤槄浜嬩欢缁勫湪姝ゅ疄渚嬩腑灏嗗埌鏈燂紙鍋滄TTL璁℃椂鍣級锛屽苟涓斿簲鎸夌収SWS_SD_00601涓殑鎻忚堪澶勭悊璇ュ埌鏈熷け鏁堛€侟/li>
  • If the TTL Timer of an Eventgroup expires, the Service Discovery module shall perform the following step(s):
    濡傛灉Eventgroup鐨凾TL瀹氭椂鍣ㄥ埌鏈燂紝鍒欐湇鍔″彂鐜版ā鍧楀簲鎵ц浠ヤ笅姝ラ锛欬ul>
  • The status shall be set to SD_CONSUMED_EVENTGROUP_DOWN and reported to BswM by calling the API BswM_Sd_ConsumedEventGroupCurrentState().
    鐘舵€佸簲璁剧疆涓篠D_CONSUMED_EVENTGROUP_DOWN锛屽苟閫氳繃璋冪敤API BswM_Sd_ConsumedEventGroupCurrentState锛堬級鎶ュ憡缁橞swM銆侟/li>
  • When the Main Phase is left,
    褰撲富闃舵绂诲紑鏃讹紝
    • The API SoAd_DisableSpecificRouting()shall be called for all Socket Connections associated with this Client Service ID that have been opened before.
      搴斾负涔嬪墠鎵撳紑杩囩殑涓庢瀹㈡埛绔湇鍔D鍏宠仈鐨勬墍鏈夊鎺ュ瓧杩炴帴璋冪敤API SoAd_DisableSpecificRouting銆侟/li>
    • Close all Socket Connections associated with this Client Service Instance that have been opened before.
      鍏抽棴涔嬪墠鎵撳紑鐨勪笌姝ゅ鎴风鏈嶅姟瀹炰緥鍏宠仈鐨勬墍鏈夊鎺ュ瓧杩炴帴銆侟/li>
  • ]]>
    admin <![CDATA[SOME/IP-SD-Repetition Phase for Client Services]]> /some-ip-52-initial-wait-phase-for-client-services-copy/ 2020-03-04T06:40:04Z 2020-03-04T06:34:24Z
    • When the Repetition Phase is entered, the Service Discovery Module shall start the timer SdClientTimerInitialFindRepetitionsBaseDelay 鈱?)
      褰撹繘鍏epetition闃舵鍚庯紝鏈嶅姟鍙戠幇妯″潡搴斿惎鍔ㄨ鏃跺櫒SdClientTimerInitialFindRepetitionsBaseDelay
    • When the timer SdClientTimerInitialFindRepetitionsBaseDelay expires within the Repetition Phase, a FindOffer Message shall be sent. 鈱?)
      褰撹鏃跺櫒SdClientTimerInitialFindRepetitionsBaseDelay鍦ㄩ噸澶嶉樁娈靛埌鏈熸椂锛屽簲鍙戦€丗indOffer娑堟伅銆侟/li>
    • In the Repetition Phase up to SdClientTimerInitialFindRepetitionsMax FindServer entries shall be sent with doubling intervals (BaseDelay, first FindService Entry, 2x BaseDelay, second FindService Entry, 4x BaseDelay, third FindService Entry, 鈥?.
      鍦ㄩ噸澶嶉樁娈碉紝鐩村埌SdClientTimerInitialFindRepetitionsMax FindServer鏉$洰搴斾互鍙屽€嶉棿闅斿彂閫侊紙BaseDelay锛岀涓€涓狥indService鏉$洰锛?x BaseDelay锛岀浜屼釜FindService鏉$洰锛?x BaseDelay锛岀涓変釜FindService鏉$洰锛屸€︹€︼級銆侟/li>
    • Note: Example config and resulting behavior (no OfferService received during example):

    SdClientTimerInitialFindRepetitionBaseDelay=30
    SdClientTimerInitialFindRepetitionMax=3

    [Initial Wait Phase starts]
    Wait Initial Wait Delay based on Configured Min and Max
    Send entry.
    [Initial Wait Phase ends]

    [Repetition Phase starts]
    Wait 30ms (=30ms * 20).
    Send entry.

    Wait 60ms (=30ms * 21).
    Send entry.

    Wait 120ms (=30ms * 22).
    Send entry.
    [Repetition Phase ends]

    • If the Service Discovery Module receives an OfferService Entry while the current state SD_CLIENT_SERVICE_REQUESTED is for this Client Service Instance, the following step(s) shall be performed in the following order:
      濡傛灉鏈嶅姟鍙戠幇妯″潡鏀跺埌OfferService鏉$洰锛岃€岃鏈嶅姟瀹炰緥鐨勫綋鍓嶇姸鎬佹槸SD_CLIENT_SERVICE_REQUESTED锛屽垯搴旀寜浠ヤ笅椤哄簭鎵ц浠ヤ笅姝ラ锛欬ul>
    • Cancel the repetition timer.
      鍙栨秷閲嶅璁℃椂鍣ㄣ€
    • If received TTL is not equal to the max value, set the TTL timer for this entry to the received TTL value.
      濡傛灉鏀跺埌鐨凾TL涓嶇瓑浜庢渶澶у€硷紝鍒欏皢璇ユ潯鐩殑TTL瀹氭椂鍣ㄨ缃负鎺ユ敹鐨凾TL鍊笺€侟/li>
    • Open TCP connection if SdClientServiceTcpRef is configured and was not opened before.
      濡傛灉閰嶇疆浜哠dClientServiceTcpRef骞朵笖涔嬪墠鏈墦寮€锛屽垯鎵撳紑TCP杩炴帴銆
    • Leave the Repetition Phase immediately and enter the Main Phase.
      绔嬪嵆绂诲紑Repetition闃舵骞惰繘鍏ain闃舵銆侟/li>
    • After sending the maximum repetitions (defined by SdClientTimerInitialFindRepetitionsMax) of FindService entries, the Repetition Phase shall be left and the Main Phase shall be entered.
      鍦ㄥ彂閫丗indService鏉$洰鐨勬渶澶ч噸澶嶆鏁帮紙鐢盨dClientTimerInitialFindRepetitionsMax瀹氫箟锛夊悗锛屽簲绂诲紑Repetition闃舵骞惰緭鍏ain闃舵銆侟/li>
    • If Sd_ClientServiceSetState()is called with state SD_CLIENT_SERVICE_RELEASED while being in Repetition Phase, this phase shall be left and the service instance shall enter Down Phase.
      濡傛灉鍦ㄥ浜嶳epetition闃舵鏃朵娇鐢ㄧ姸鎬丼D_CLIENT_SERVICE_RELEASED璋冪敤Sd_ClientServiceSetState()锛屽垯搴旂寮€姝ら樁娈碉紝骞朵笖鏈嶅姟瀹炰緥搴旇繘鍏own Phase銆侟/li>
    • If Sd_LocalIpAddrAssignmentChg() is called with a state other than 鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥 while being in Repetition Phase the Down Phase shall be entered.
      濡傛灉鍦ㄥ浜嶳epetition闃舵鏃朵娇鐢ㄢ€淭CPIP_IPADDR_STATE_ASSIGNED鈥濅互澶栫殑鐘舵€佽皟鐢⊿d_LocalIpAddrAssignmentChg()锛屽垯搴旇緭鍏own Phase銆侟/li>
    • If the TCP/IP connection has been lost (Socket connection is other than SOAD_SOCON_ONLINE), the Service Discovery Module shall leave the Repetition Phase, enter the Wait Phase, and stop the TTL timers of the associated Client Service Instances and EventGroups.
      濡傛灉TCP / IP杩炴帴涓㈠け锛堝鎺ュ瓧杩炴帴涓嶆槸SOAD_SOCON_ONLINE锛夛紝鏈嶅姟鍙戠幇妯″潡搴旂寮€Repetition闃舵锛岃繘鍏ait闃舵锛屽苟鍋滄鐩稿叧瀹㈡埛绔湇鍔″疄渚嬪拰浜嬩欢缁勭殑TTL瀹氭椂鍣ㄣ€侟/li>
    ]]>
    admin <![CDATA[SOME/IP-SD-Initial Wait Phase for Client Services]]> /some-ip-51-timings-and-repetitions-for-client-service-and-consumed-eventgroups-copy/ 2020-03-04T06:33:37Z 2020-03-04T06:28:03Z
    • If the following conditions apply, the Initial Wait Phase for this configured Client Service Instance shall be entered:
      濡傛灉婊¤冻浠ヤ笅鏉′欢锛屽垯搴旇繘鍏ユ宸查厤缃鎴风鏈嶅姟瀹炰緥鐨処nitial Wait Phase
      • Sd_Init() has been called.
        宸茶皟鐢⊿d_Init锛堬級
      • Sd_ClientServiceSetState() with SD_CLIENT_SERVICE_REQUESTED has been called OR SdClientServiceAutoRequired = TRUE.
        宸茶皟鐢ㄧ姸鎬佷负SD_CLIENT_SERVICE_REQUESTED鐨凷d_ClientServiceSetState锛堬級鎴朣dClientServiceAutoRequired = TRUE銆侟/li>
      • Sd_LocalIpAddrAssignmentChg() with state 鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥 has been called for the first IpAddrId associated with the SdInstanceTxPdu.
        宸蹭负涓嶴dInstanceTxPdu鍏宠仈鐨勭涓€涓狪pAddrId璋冪敤鐘舵€佷负鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥濈殑Sd_LocalIpAddrAssignmentChg锛堬級銆侟/li>
    • When the Initial Wait Phase is entered, the API SoAd_EnableSpecificRouting() shall be called with SdClientServiceActivationRef (see SdConsumedMethods) and the relevant Socket Connections for this Client Service Instance.
      杩涘叆Initial Wait Phase鍚庯紝搴斾娇鐢⊿dClientServiceActivationRef锛堣鍙傞槄SdConsumedMethods锛夊拰姝ゅ鎴风鏈嶅姟瀹炰緥鐨勭浉鍏冲鎺ュ瓧杩炴帴璋冪敤API SoAd_EnableSpecificRouting锛堬級銆
    • When a OfferService for a required Client Service is received and SoAd_OpenSoCon()was not called before, the API SoAd_OpenSoCon() shall be called for all Socket Connections associated with this Client Service Instance.
      褰撴敹鍒版墍闇€瀹㈡埛绔湇鍔$殑OfferService骞朵笖涔嬪墠鏈皟鐢⊿oAd_OpenSoCon锛堬級鏃讹紝API SoAd_OpenSoCon锛堬級搴旇璋冪敤锛屼互婊¤冻姝ゅ鎴风鏈嶅姟瀹炰緥鍏宠仈鐨勬墍鏈夊鎺ュ瓧杩炴帴鐨勯渶瑕併€侟/li>
    • This Client Service Instance shall stay in the Initial Wait Phase for a time within the configured range of SdClientTimerInitialFindDelayMin and SdClientTimerInitialFindDelayMax unless an OfferService entry for this Client Service Instance is received or this random timer expires.
      姝ゅ鎴风鏈嶅姟瀹炰緥搴斿湪SdClientTimerInitialFindDelayMin鍜孲dClientTimerInitialFindDelayMax鐨勯厤缃寖鍥村唴淇濇寔鍒濆绛夊緟闃舵涓€娈垫椂闂达紝闄ら潪鏀跺埌瀵规瀹㈡埛绔湇鍔″疄渚嬬殑OfferService entry鎴栨闅忔満璁℃椂鍣ㄥ埌鏈熴€侟/li>
    • If an OfferService Entry for this Client Service Instance is received within the Initial Wait Phase,
      濡傛灉鍦ㄥ垵濮嬬瓑寰呴樁娈靛唴鏀跺埌姝ゅ鎴锋湇鍔″疄渚嬬殑OfferService entry锛孅ul>
    • The calculated random timer, which has been started when entering the Initial Wait Phase, shall be canceled.
      璁$畻鐨勯殢鏈鸿鏃跺櫒锛堝湪杩涘叆鍒濆绛夊緟闃舵鏃跺凡鍚姩锛夊皢琚彇娑堛€侟/li>
    • If received TTL is not equal to the max value, set the TTL timer for this entry to the received TTL value.
      濡傛灉鏀跺埌鐨凾TL涓嶇瓑浜庢渶澶у€硷紝璇峰皢姝ゆ潯鐩殑TTL瀹氭椂鍣ㄨ缃负鎺ユ敹鐨凾TL鍊笺€侟/li>
    • Open TCP connection if SdClientServiceTcpRef is configured and was not opened before.
      濡傛灉閰嶇疆浜哠dClientServiceTcpRef涓斾箣鍓嶆湭鎵撳紑锛屽垯鎵撳紑TCP杩炴帴銆侟/li>
    • Leave the Initial Wait Phase Enter the Main Phase.
      绂诲紑鍒濆绛夊緟闃舵杩涘叆涓婚樁娈点€侟/li>
    • When the calculated random timer based on the parameters SdClientTimerInitialFindDelayMin and SdClientTimerInitialFindDelayMax expires (i.e. no OfferService has been received within this timespan), the following shall be done in the following order:
      褰撳熀浜庡弬鏁癝dClientTimerInitialFindDelayMin鍜孲dClientTimerInitialFindDelayMax鐨勮绠楅殢鏈鸿鏃跺櫒鍒版湡鏃讹紙鍗冲湪姝ゆ椂闂存鍐呮湭鏀跺埌OfferService锛夛紝搴旀寜浠ヤ笅椤哄簭杩涜浠ヤ笅鎿嶄綔锛欬ul>
    • FindService Entry shall be sent.
      搴斿彂閫丗indService Entry
    • If the SdClientTimerInitialFindRepetitionsMax>0, enter the Repetition Phase
      濡傛灉SdClientTimerInitialFindRepetitionsMax> 0锛屽垯杩涘叆閲嶅闃舵
    • If the SdClientTimerInitialFindRepetitionsMax=0, enter the Main Phase
      濡傛灉SdClientTimerInitialFindRepetitionsMax = 0锛屽垯杩涘叆涓婚樁娈袋/li>
    • If Sd_ClientServiceSetState() is called with state SD_CLIENT_SERVICE_RELEASED while being in Initial Wait Phase, this phase shall be left and the Service shall enter Down Phase.
      濡傛灉鍦ㄥ垵濮嬬瓑寰呴樁娈典娇鐢ㄧ姸鎬丼D_CLIENT_SERVICE_RELEASED璋冪敤Sd_ClientServiceSetState()锛屽垯鏈嶅姟搴旂寮€姝ら樁娈靛苟杩涘叆Down Phase銆侟/li>
    • If for any reasons the Initial Wait Phase is left, the calculated random timer (of the Initial Wait Phase) for this Service Instance shall be stopped.
      濡傛灉鍑轰簬浠讳綍鍘熷洜绂诲紑鍒濆绛夊緟闃舵锛屽垯搴斿仠姝负姝ゆ湇鍔″疄渚嬭绠楃殑锛堝垵濮嬬瓑寰呴樁娈电殑锛夐殢鏈哄畾鏃跺櫒銆侟/li>
    • If Sd_LocalIpAddrAssignmentChg() is called with a state other than 鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥 while being in Initial Wait Phase, the Down Phase shall be entered.
      濡傛灉鍦ㄥ垵濮嬬瓑寰呴樁娈典腑璋冪敤Sd_LocalIpAddrAssignmentChg()骞朵笖鐘舵€佷笉鏄€淭CPIP_IPADDR_STATE_ASSIGNED鈥濓紝鍒欏簲杩涘叆Down闃舵銆侟/li>
    • If the API Sd_Init() is called while being in Initial Wait Phase, the Down Phase shall be entered.
      濡傛灉鍦ㄥ垵濮嬬瓑寰呴樁娈佃皟鐢ˋPI Sd_Init()锛屽垯搴旇繘鍏own闃舵銆侟/li>

    ]]>
    admin <![CDATA[SOME/IP-SD-Timings and repetitions for Client Service and Consumed Eventgroups]]> /some-ip-50-status-copy/ 2020-03-04T06:22:08Z 2020-03-04T06:11:16Z Timings and repetitions for Client Service and Consumed Eventgroups

    • The Service Discovery phases allow minimizing the number of Service Discovery messages sent while allowing for very fast synchronization upon ECU start.
      Service Discovery鍚勯樁娈靛厑璁告渶灏忓寲鍙戦€佺殑Service Discovery娑堟伅鐨勬暟閲忥紝鍚屾椂鍏佽鍦‥CU鍚姩鏃惰繘琛岄潪甯稿揩閫熺殑鍚屾
    • This de-emphasis is realized by the following Phases:
      • Down
      • Requested
        • Initial Wait Phase
        • Repetition Phase
        • Main Phase

    Down Phase for Client Services

    • As long as a service is not requested by the BswM, the Service Discovery shall not send FindService Entry entries.
      鍙BswM娌℃湁璇锋眰鏈嶅姟锛 Service Discovery灏变笉搴斿彂閫丗indService Entry銆
    • If an OfferService Entry is received during Down Phase,
      濡傛灉鍦―own闃舵鏀跺埌OfferService entry锛孅ul>
    • The Service Discovery shall store the state of this Service instance.
      ServiceDiscovery搴斿瓨鍌ㄦService瀹炰緥鐨勭姸鎬併€侟/li>
    • A timer shall be set/reset to the TTL value of the received OfferService entry (TTL timer).
      璁℃椂鍣ㄥ簲璁剧疆/閲嶇疆涓烘敹鍒扮殑OfferService鏉$洰锛圱TL璁℃椂鍣級鐨凾TL鍊笺€侟/li>
    • Until the TTL Timer expires or a StopOfferService entry is received, the Service instance is considered Available.
      鍦═TL璁℃椂鍣ㄥ埌鏈熸垨鏀跺埌StopOfferService鏉$洰涔嬪墠锛屾湇鍔″疄渚嬭瑙嗕负鍙敤銆侟/li>
    • If Sd_ClientServiceSetState() is called with state SD_CLIENT_SERVICE_REQUESTED while being in Down Phase:
      濡傛灉鍦ㄥ浜嶥own Phase鐘舵€佹椂璋冪敤鐘舵€佷负SD_CLIENT_SERVICE_REQUESTED鐨凙PI Sd_ClientServiceSetState锛堬級锛欬ul>
    • If no OfferService entry was received before or its TTL timer expired already:
      濡傛灉涔嬪墠鏈敹鍒癘fferService鏉$洰鎴栧叾TTL璁℃椂鍣ㄥ凡鍒版湡锛欬ul>
    • The Initial Wait Phase shall be entered,
      搴旇繘鍏ュ垵濮嬬瓑寰呴樁娈碉紝
  • If an OfferService entry was received and its TTL timer did not expire yet:
    濡傛灉鏀跺埌OfferService鏉$洰涓斿叾TTL璁℃椂鍣ㄥ皻鏈埌鏈燂細
    • If SoAd_OpenSoCon() was not called before, the API SoAd_OpenSoCon() shall be called for all Socket Connections associated with this Client Service Instance.
      濡傛灉涔嬪墠鏈皟鐢⊿oAd_OpenSoCon锛堬級锛屽垯搴斾负涓庢瀹㈡埛绔湇鍔″疄渚嬪叧鑱旂殑鎵€鏈夊鎺ュ瓧杩炴帴璋冪敤API SoAd_OpenSoCon锛堬級銆侟/li>
    • The API SoAd_EnableSpecificRouting() shall be called with SdClientServiceActivationRef (see SdConsumedMethods) and the relevant Socket Connections for this Client Service Instance.
      搴斾娇鐢⊿dClientServiceActivationRef锛堣鍙傞槄SdConsumedMethods锛夊拰姝ゅ鎴风鏈嶅姟瀹炰緥鐨勭浉鍏冲鎺ュ瓧杩炴帴鏉ヨ皟鐢ˋPI SoAd_EnableSpecificRouting锛堬級銆侟/li>
    • Open TCP connection if SdClientServiceTcpRef is configured and was not opened before.
      濡傛灉閰嶇疆浜哠dClientServiceTcpRef骞朵笖涔嬪墠鏈墦寮€锛屽垯鎵撳紑TCP杩炴帴銆侟/li>
    • The Main Phase shall be entered.
      搴斿綋杩涘叆Main闃舵銆侟/li>
  • ]]>
    admin <![CDATA[SOME/IP-SD-status]]> /some-ip-49-eventgroup-received-copy/ 2020-03-04T06:05:48Z 2020-03-04T05:50:54Z Timings and repetitions for Server Service and Event Handlers

    status

    • When the Down Phase is entered (coming from states other than init), the API SoAd_CloseSoCon() shall be called for all Socket Connections associated with this Server Service Instance.
      褰撹繘鍏own Phase锛堟潵鑷猧nit浠ュ鐨勭姸鎬侊級鏃讹紝搴斾负涓庢Server Service Instance鐩稿叧鑱旂殑鎵€鏈塖ocket Connections璋冪敤API SoAd_CloseSoCon锛堬級銆侟/li>
    • When the calculated random timer expires and the parameter
      褰撹绠楃殑闅忔満璁℃椂鍣ㄥ埌鏈熷苟涓斿弬鏁?
      • SdServerTimerInitialOfferRepetitionsMaxdoes not equals 鈥?鈥? the Repetition Phase shall be entered.
        SdServerTimerInitialOfferRepetitionsMaxdoes涓嶇瓑浜庘€?鈥欙紝搴旇繘鍏epetition闃舵銆侟/li>
      • SdServerTimerInitialOfferRepetitionsMaxequal 鈥?鈥? the Main Phase shall be entered.
        SdServerTimerInitialOfferRepetitionsMaxequal鈥?鈥欙紝搴旇繘鍏ain闃舵銆侟/li>
    • If Sd_ServerServiceSetState() is called with a state other than SD_SERVER_SERVICE_AVAILABLE while being in Initial Wait Phase:
      濡傛灉鍦ㄥ浜庡垵濮嬬瓑寰呴樁娈垫椂浣跨敤SD_SERVER_SERVICE_AVAILABLE浠ュ鐨勭姸鎬佽皟鐢⊿d_ServerServiceSetState锛堬級锛欬ul>
    • Enter the Down Phase.
      杩涘叆Down闃舵銆侟/li>
    • Set all associated EventHandler to SD_EVENT_HANDLER_RELEASED and report it to the BswM by calling the API BswM_Sd_EventHandlerCurrentState.
      灏嗘墍鏈夊叧鑱旂殑EventHandler璁剧疆涓篠D_EVENT_HANDLER_RELEASED锛屽苟閫氳繃璋冪敤API BswM_Sd_EventHandlerCurrentState灏嗗叾鎶ュ憡缁橞swM銆侟/li>
    • Cancle all relevant timers for service instance.
      鍙栨秷鏈嶅姟瀹炰緥鐨勬墍鏈夌浉鍏宠鏃跺櫒銆侟/li>
    • If Sd_ServerServiceSetState() is called with a state other than SD_SERVER_SERVICE_AVAILABLE (i.e. SD_SERVER_SERVICE_DOWN ) while being in Repetition Phase.
      濡傛灉鍦ㄥ浜嶳epetition闃舵鏃朵娇鐢⊿D_SERVER_SERVICE_AVAILABLE锛堝嵆SD_SERVER_SERVICE_DOWN锛変互澶栫殑鐘舵€佽皟鐢⊿d_ServerServiceSetState锛堬級锛
      • Leave this phase and enter the Down Phase.
        绂诲紑姝ら樁娈靛苟杩涘叆Down Phase.
      • Send a StopOfferService.
        鍙戦€丼topOfferService銆侟/li>
      • All associated EventHandler which state is not SD_EVENT_HANDLER_RELEASED shall be changed to SD_EVENT_HANDLER_RELEASED and indicated to the BswM by calling the API BswM_Sd_EventHandlerCurrentState().
        鎵€鏈夌浉鍏崇殑EventHandler锛屽鏋滅姸鎬佷笉鏄疭D_EVENT_HANDLER_RELEASED閮藉簲鏇存敼涓篠D_EVENT_HANDLER_RELEASED锛屽苟閫氳繃璋冪敤API BswM_Sd_EventHandlerCurrentState锛堬級鎸囩ず缁橞swM銆侟/li>
    • If Sd_LocalIpAddrAssignmentChg() is called with a state other than 鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥 while being in Repetition Phase, this phase shall be left and the Down Phase shall be entered.
      濡傛灉鍦ㄥ浜嶳epetition闃舵鏃朵互鈥淭CPIP_IPADDR_STATE_ASSIGNED鈥濅互澶栫殑鐘舵€佽皟鐢⊿d_LocalIpAddrAssignmentChg锛堬級锛屽垯搴斾繚鐣欐闃舵骞惰繘鍏own闃舵銆
    • If the TCP/IP connection has been lost (Socket connection is other than SOAD_SOCON_ONLINE), the Service Discovery Module shall leave the Repetition Phase and enter the Wait Phase.
      濡傛灉TCP / IP杩炴帴涓㈠け锛堝鎺ュ瓧杩炴帴涓嶆槸SOAD_SOCON_ONLINE锛夛紝鍒欐湇鍔″彂鐜版ā鍧楀簲绂诲紑Repetition闃舵骞惰繘鍏ait闃舵銆侟/li>
    • The Service Discovery Module shall stay in the Main Phase for the configured Server Service as long as the following conditions apply:
      鍙婊¤冻浠ヤ笅鏉′欢锛屾湇鍔″彂鐜版ā鍧楀皢淇濈暀鍦ㄩ厤缃殑鏈嶅姟鍣ㄦ湇鍔$殑main闃舵锛欬ul>
    • Server Service is in state 鈥淎VAILABLE鈥 (i.e. Sd_ServerServiceSetState()has been called with State 鈥淪D_SERVER_SERVICE_AVAILABLE鈥?
      鏈嶅姟鍣ㄦ湇鍔″浜庘€淎VAILABLE鈥濈姸鎬侊紙鍗冲凡浣跨敤鐘舵€佲€淪D_SERVER_SERVICE_AVAILABLE鈥濊皟鐢⊿d_ServerServiceSetState锛堬級锛堻/li>
    • IP address is assigned and can be used (i.e. Sd_LocalIpAddrAssignmentChg has been called with status TCPIP_IPADDR_STATE_ASSIGNED)
      鍒嗛厤浜咺P鍦板潃骞跺彲浠ヤ娇鐢紙鍗冲凡璋冪敤Sd_LocalIpAddrAssignmentChg锛岀姸鎬佷负TCPIP_IPADDR_STATE_ASSIGNED锛堻/li>
  • If the API LocalIpAddrAssignmentChg has been called with a state other than TCPIP_IPADDR_STATE_ASSIGNED
    濡傛灉浣跨敤TCPIP_IPADDR_STATE_ASSIGNED浠ュ鐨勭姸鎬佽皟鐢ˋPI LocalIpAddrAssignmentChg
    • The Service Discovery Module shall leave the Main Phase and enter the DOWN Phase
      鏈嶅姟鍙戠幇妯″潡搴旂寮€Main闃舵骞惰繘鍏OWN闃舵
    • All EventHandler which are not in state SD_EVENT_HANDLER_RELEASED shall be set to SD_EVENT_HANDLER_RELEASED and be indicated to the BswM module by calling the API BswM_Sd_EventHandlerCurrentState 鈱?)
      鎵€鏈夋湭澶勪簬SD_EVENT_HANDLER_RELEASED鐘舵€佺殑EventHandler閮藉簲璁剧疆涓篠D_EVENT_HANDLER_RELEASED骞堕€氳繃璋冪敤API BswM_ Sd_EventHandlerCurrentState鎶ュ憡缁橞swM妯″潡
    • If the TCP/IP connection has been lost (Socket connection is other than SOAD_SOCON_ONLINE), the Service Discovery Module shall leave the Main Phase and enter the Wait Phase
      濡傛灉TCP / IP杩炴帴涓㈠け锛堝鎺ュ瓧杩炴帴涓嶆槸SOAD_SOCON_ONLINE锛夛紝鍒欐湇鍔″彂鐜版ā鍧楀簲绂诲紑Main闃舵骞惰繘鍏ait闃舵銆侟/li>
    • If the API Server Sd_ServerServiceSetState() is called with state 鈥淪D_SERVER_SERVICE_DOWN鈥 while the IP address is still assigned (i.e. Sd_LocalIpAddrAssignmentChg has been called with state TCPIP_IPADDR_STATE_ASSIGNED), the Service Discovery module shall.
      濡傛灉鍒嗛厤鐨処P鍦板潃鏈夋晥锛堝嵆宸蹭娇鐢ㄧ姸鎬乀CPIP_IPADDR_STATE_ASSIGNED璋冪敤Sd_LocalIpAddrAssignmentChg锛夛紝涓斾娇鐢ㄧ姸鎬佲€淪D_SERVER_SERVICE_DOWN鈥濊皟鐢ˋPISd_ServerServiceSetState锛堬級锛屽垯鏈嶅姟鍙戠幇妯″潡搴斻€侟ul>
    • send a StopOfferService
      鍙戦€丼topOfferService
    • enter the DOWN Phase
      杩涘叆DOWN闃舵
    • all subscriptions of the eventgroup(s) of this service instance shall be deleted and SD_EVENT_HANDLER_RELEASED and reported to BswM using the API BswM_Sd_EventHandlerCurrentState
      搴斿垹闄ゆ鏈嶅姟瀹炰緥鐨勪簨浠剁粍鐨勬墍鏈夎闃咃紝骞朵娇鐢ˋPI BswM_Sd_EventHandlerCurrentState灏哠D_EVENT_HANDLER_RELEASED鎶ュ憡缁橞swM

    ]]>
    admin <![CDATA[SOME/IP-SD-Eventgroup received]]> /some-ip-48-find-entry-received-copy/ 2020-03-03T07:52:46Z 2020-03-03T07:48:00Z Timings and repetitions for Server Service and Event Handlers

    Eventgroup received

    • If a SubscribeEventgroup Entry or StopSubscribeEventgroup Entry are received within the Initial Wait Phase (or other phases) for an Event Handler of this Server Service Instance, it shall only be processed within the Service Discovery. Please refer to the according sequence diagrams and section 7.6.4.
      濡傛灉鍦ㄦ鏈嶅姟鍣ㄦ湇鍔″疄渚嬬殑浜嬩欢澶勭悊绋嬪簭鐨処nitial Wait Phase 锛堟垨鍏朵粬闃舵锛夊唴鏀跺埌浜哠ubscribeEventgroup Entry鎴朣topSubscribeEventgroup Entry锛屽垯鍙兘鍦⊿ervice Discovery涓鐞嗗畠銆侟/li>

    鈥淪ubscribeEventgroup鈥 entry received:

    • Send a SubscribeEventgroupAck / Nack entry using Unicast considering the appropriate delay without changing the current counter value and without influencing the current running repetition timer/repetition phase or timer/main phase.
      鑰冭檻閫傚綋鐨勫欢杩? 浣跨敤Unicast鍙戦€丼ubscribeEventgroupAck / Nack entry, 涓斾笉鏀瑰彉褰撳墠Counter鍊硷紝涔熶笉褰卞搷褰撳墠杩愯鐨則imer銆侟/li>
    • Call the BswM with the API BswM_Sd_EventHandlerCurrentState() with state SD_EVENT_HANDLER_REQUESTED only if the state for this EventHandler changed (i.e. has not been SD_EVENT_HANDLER_REQUESTED) .
      浠呭綋姝ゆEventHandler鐨勭姸鎬佹敼鍙橈紙鍗冲皻涓嶆槸SD_EVENT_HANDLER_REQUESTED锛夋椂锛屽皢鐘舵€丼D_EVENT_HANDLER_REQUESTED璧嬪€肩粰API BswM_Sd_EventHandlerCurrentState() 骞堕€氱煡BswM銆侟/li>
    • Start the TTL timer according to the value received via the SubscribeEventgroup Entry.
      鎸夌収閫氳繃SubscribeEventgroup Entry鑾峰彇鐨勫€煎惎鍔═TL璁℃椂鍣ㄣ€侟/li>

    鈥淪ubscribeEventgroup鈥 entry received:

    • If the TTL of a received SubscribeEventgroup Entry expires, the following step shall be performed in the following order:
      濡傛灉鏀跺埌鐨凷ubscribeEventgroup Entry鐨凾TL鍒版湡锛屽垯鎸変互涓嬮『搴忔墽琛屼互涓嬫楠わ細
    • If this has been the last subscribed client, report 鈥淪D_EVENT_HANDLER_RELEASED鈥 to the BswM by calling the API BswM_Sd_EventHandlerCurrentState() and update the state within the Service Discovery Module.
      濡傛灉杩欐槸鏈€鍚庝竴涓闃呯殑瀹㈡埛绔紝鍒欓€氳繃璋冪敤API BswM_Sd_EventHandlerCurrentState()灏嗙姸鎬佹洿鏂颁负 鈥淪D_EVENT_HANDLER_RELEASED鈥濓紝骞舵姤鍛婄粰BswM鎶ュ憡銆侟/li>

    StopSubscribeEventgroup Entry:

    • Stop the TTL timer for this client
      鍋滄杩欎釜瀹㈡埛绔殑TTL璁℃椂鍣?/li>
    • Update State
      鏇存柊鐘舵€?/li>
    • If this has been the last subscribed client, report 鈥淪D_EVENT_HANDLER_RELEASED鈥 to the BswM by calling the API BswM_Sd_EventHandlerCurrentState()
      濡傛灉杩欐槸鏈€鍚庝竴涓闃呯殑瀹㈡埛绔紝鍒欓€氳繃璋冪敤API BswM_Sd_EventHandlerCurrentState()鏇存柊鐘舵€佷负鈥 SD_EVENT_HANDLER_RELEASED鈥濆苟鎶ュ憡缁橞swM

    ]]>
    admin <![CDATA[SOME/IP-SD-鈥淔ind鈥 entry received]]> /some-ip-47-communication-phases-server-copy/ 2020-03-03T07:45:52Z 2020-03-03T07:40:39Z Timings and repetitions for Server Service and Event Handlers

    鈥淈strong>Find鈥 entry received

    In repetition phase:

    Send an 鈥淥fferService Entry鈥 considering the appropriate delay without changing the current counter value and without influencing the current running repetition timer.
    鍦ㄤ笉鏀瑰彉褰撳墠counter鍊间笖涓嶅奖鍝嶅綋鍓嶈繍琛岀殑閲嶅璁℃椂鍣ㄧ殑鎯呭喌涓嬶紝鑰冭檻閫傚綋鐨勫欢杩? 鍙戦€佲€淥fferService Entry鈥濄€侟br>
    Note: Currently this specification does not allow sending 鈥淔indService Entries鈥 using unicast. For compatibility reasons receiving such entries shall be supported.

    In Main Phase:

    Send an 鈥淥fferService Entry鈥 considering the appropriate delay .
    鑰冭檻閫傚綋鐨勫欢杩燂紝鍙戦€佲€淥fferService Entry鈥 銆侟br>
    Note: Currently this specification does not allow sending 鈥淔indService Entries鈥 using unicast. For compatibility reasons receiving such entries shall be supported.

    ]]>
    admin <![CDATA[SOME/IP-SD-Communication phases Server]]> /some-ip-46-service-copy/ 2020-03-03T06:41:09Z 2020-03-03T06:38:22Z Timings and repetitions for Server Service and Event Handlers

    Communication phases Server

    • Especially after starting multiple ECUs, the multicast messages of the Service Discovery come with the risk of overflowing ECUs with too many messages. Therefore, the Service Discovery can be configured with a suitable message sending behavior.
      鐗瑰埆鏄湪鍚姩澶氫釜ECU涔嬪悗锛孲ervice Discovery鐨勫鎾秷鎭彲鑳戒細鍥犱负娑堟伅杩囧鑰屽鑷碋CU婧㈠嚭銆 鍥犳锛屽彲浠ヤ娇鐢ㄩ€傚綋鐨勬秷鎭彂閫佽涓洪厤缃甋ervice Discovery銆侟/li>
    • For every Server Service Instance different phases are defined as shown in following figure :
      瀵逛簬姣忎釜鏈嶅姟鍣ㄦ湇鍔″疄渚嬶紝瀹氫箟浜嗕笉鍚岀殑闃舵锛屽涓嬪浘鎵€绀裹ul>
    • Down
    • Available
      • Initial Wait Phase
      • Repetition Phase
      • Main Phase

    ]]>