someip-py 1.0.0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. someip_py/__init__.py +5 -0
  2. someip_py/client.py +475 -0
  3. someip_py/codec.py +1243 -0
  4. someip_py/config.py +353 -0
  5. someip_py/constants.py +60 -0
  6. someip_py/frame.py +1003 -0
  7. someip_py/interface.py +975 -0
  8. someip_py/scapy_extention.py +557 -0
  9. someip_py/secure_upload.py +66 -0
  10. someip_py/server.py +699 -0
  11. someip_py/service_interface/V2x/ADAVPOperService/ADAVPOper.py +62 -0
  12. someip_py/service_interface/V2x/ADAVPOperService/__init__.py +0 -0
  13. someip_py/service_interface/V2x/ADCU_HmiService/ADParkingInfoPB.py +53 -0
  14. someip_py/service_interface/V2x/ADCU_HmiService/AVP3DMapInf.py +291 -0
  15. someip_py/service_interface/V2x/ADCU_HmiService/AVPCollectedDestinationCmdInf.py +23 -0
  16. someip_py/service_interface/V2x/ADCU_HmiService/AVPMapButtonCmdInf.py +19 -0
  17. someip_py/service_interface/V2x/ADCU_HmiService/AVPMapGenerateStatusInf.py +39 -0
  18. someip_py/service_interface/V2x/ADCU_HmiService/AVPMapInf.py +265 -0
  19. someip_py/service_interface/V2x/ADCU_HmiService/AVPMapListInfoInf.py +136 -0
  20. someip_py/service_interface/V2x/ADCU_HmiService/AVPMapManageCmdInf.py +149 -0
  21. someip_py/service_interface/V2x/ADCU_HmiService/AVPPopupInf.py +10 -0
  22. someip_py/service_interface/V2x/ADCU_HmiService/AbsoluteLocalizationInf.py +63 -0
  23. someip_py/service_interface/V2x/ADCU_HmiService/ActionableAreaInf.py +41 -0
  24. someip_py/service_interface/V2x/ADCU_HmiService/AdasMileageInf.py +10 -0
  25. someip_py/service_interface/V2x/ADCU_HmiService/AlarmInfoInf.py +63 -0
  26. someip_py/service_interface/V2x/ADCU_HmiService/AlignedSpeedSettingInf.py +10 -0
  27. someip_py/service_interface/V2x/ADCU_HmiService/ApaParkingStatusInf.py +23 -0
  28. someip_py/service_interface/V2x/ADCU_HmiService/ApaSlelectedSlotParkingmodeInf.py +10 -0
  29. someip_py/service_interface/V2x/ADCU_HmiService/AutoNaviSearchInf.py +72 -0
  30. someip_py/service_interface/V2x/ADCU_HmiService/AvoidJamAreaInf.py +86 -0
  31. someip_py/service_interface/V2x/ADCU_HmiService/AvpEgoPositionInMapInf.py +55 -0
  32. someip_py/service_interface/V2x/ADCU_HmiService/AvpTfRelToMapInf.py +43 -0
  33. someip_py/service_interface/V2x/ADCU_HmiService/CalibSensorGroupStateInf.py +27 -0
  34. someip_py/service_interface/V2x/ADCU_HmiService/CalibStateAckInf.py +39 -0
  35. someip_py/service_interface/V2x/ADCU_HmiService/CancelSaveInf.py +19 -0
  36. someip_py/service_interface/V2x/ADCU_HmiService/ClearFaultInf.py +10 -0
  37. someip_py/service_interface/V2x/ADCU_HmiService/CommutingRouteSelectionReqInf.py +52 -0
  38. someip_py/service_interface/V2x/ADCU_HmiService/CommutingRouteSelectionRspInf.py +43 -0
  39. someip_py/service_interface/V2x/ADCU_HmiService/CommutingRoutesInfoInf.py +135 -0
  40. someip_py/service_interface/V2x/ADCU_HmiService/CurrentRoadSpeedInf.py +19 -0
  41. someip_py/service_interface/V2x/ADCU_HmiService/CustomParkingInf.py +54 -0
  42. someip_py/service_interface/V2x/ADCU_HmiService/CustomerInf.py +66 -0
  43. someip_py/service_interface/V2x/ADCU_HmiService/D2DRouteEndSwitchInf.py +19 -0
  44. someip_py/service_interface/V2x/ADCU_HmiService/DHUInquireIssueLogInf.py +32 -0
  45. someip_py/service_interface/V2x/ADCU_HmiService/DLPSceneInf.py +31 -0
  46. someip_py/service_interface/V2x/ADCU_HmiService/EgoCarPositionCityInf.py +19 -0
  47. someip_py/service_interface/V2x/ADCU_HmiService/EstablishSomeIPConnectionInf.py +19 -0
  48. someip_py/service_interface/V2x/ADCU_HmiService/FaultListInfoInf.py +23 -0
  49. someip_py/service_interface/V2x/ADCU_HmiService/FavoriteRouteInfoUpdateInf.py +44 -0
  50. someip_py/service_interface/V2x/ADCU_HmiService/FeatureStateInf.py +383 -0
  51. someip_py/service_interface/V2x/ADCU_HmiService/FeatureStateInf2.py +23 -0
  52. someip_py/service_interface/V2x/ADCU_HmiService/GNSSMsgInf.py +71 -0
  53. someip_py/service_interface/V2x/ADCU_HmiService/GuidanceStatusUpdateInf.py +60 -0
  54. someip_py/service_interface/V2x/ADCU_HmiService/HighDefinitionMapInf.py +179 -0
  55. someip_py/service_interface/V2x/ADCU_HmiService/IntegAdpuConfigInf.py +10 -0
  56. someip_py/service_interface/V2x/ADCU_HmiService/LaneFunction.py +52 -0
  57. someip_py/service_interface/V2x/ADCU_HmiService/LineInfoInf.py +82 -0
  58. someip_py/service_interface/V2x/ADCU_HmiService/MemoryRouteControlInf.py +27 -0
  59. someip_py/service_interface/V2x/ADCU_HmiService/MemoryRouteStatusInf.py +43 -0
  60. someip_py/service_interface/V2x/ADCU_HmiService/MrNaviRouteInf.py +82 -0
  61. someip_py/service_interface/V2x/ADCU_HmiService/NavExitTriggerInf.py +19 -0
  62. someip_py/service_interface/V2x/ADCU_HmiService/NaviGreenWaveCarSpeedInf.py +44 -0
  63. someip_py/service_interface/V2x/ADCU_HmiService/NavigationDistreqInf.py +57 -0
  64. someip_py/service_interface/V2x/ADCU_HmiService/NavigationInfoInf.py +260 -0
  65. someip_py/service_interface/V2x/ADCU_HmiService/NavigationLineInf.py +45 -0
  66. someip_py/service_interface/V2x/ADCU_HmiService/NavigationRouteInf.py +389 -0
  67. someip_py/service_interface/V2x/ADCU_HmiService/NavigationStsInf.py +19 -0
  68. someip_py/service_interface/V2x/ADCU_HmiService/NavigationTargetInf.py +57 -0
  69. someip_py/service_interface/V2x/ADCU_HmiService/NavilntervalCameraDynamicInf.py +45 -0
  70. someip_py/service_interface/V2x/ADCU_HmiService/NzpStateTriggerInf.py +19 -0
  71. someip_py/service_interface/V2x/ADCU_HmiService/OnlineCalibTriggerInf.py +32 -0
  72. someip_py/service_interface/V2x/ADCU_HmiService/PDCWarningInfoInf.py +97 -0
  73. someip_py/service_interface/V2x/ADCU_HmiService/ParkingAPAInf.py +28 -0
  74. someip_py/service_interface/V2x/ADCU_HmiService/ParkingInteractiveInf.py +27 -0
  75. someip_py/service_interface/V2x/ADCU_HmiService/ParkingInteractiveStatusInf.py +36 -0
  76. someip_py/service_interface/V2x/ADCU_HmiService/PathDirectionArrowInf.py +36 -0
  77. someip_py/service_interface/V2x/ADCU_HmiService/PebSwitchSettingInf.py +10 -0
  78. someip_py/service_interface/V2x/ADCU_HmiService/PercepFusionObjsInf.py +79 -0
  79. someip_py/service_interface/V2x/ADCU_HmiService/PercepTrafficLightsInf.py +73 -0
  80. someip_py/service_interface/V2x/ADCU_HmiService/PerceptionAPASlotsInf.py +73 -0
  81. someip_py/service_interface/V2x/ADCU_HmiService/PlanningTrajectoryInf.py +53 -0
  82. someip_py/service_interface/V2x/ADCU_HmiService/PoiInfoInf.py +122 -0
  83. someip_py/service_interface/V2x/ADCU_HmiService/RelativeLocalizationInf.py +51 -0
  84. someip_py/service_interface/V2x/ADCU_HmiService/SDMapElectronicEyeInf.py +141 -0
  85. someip_py/service_interface/V2x/ADCU_HmiService/SDMapLinkRoadInfo.py +36 -0
  86. someip_py/service_interface/V2x/ADCU_HmiService/SelectedSlotIdInf.py +27 -0
  87. someip_py/service_interface/V2x/ADCU_HmiService/SettingACPEInfoInf.py +10 -0
  88. someip_py/service_interface/V2x/ADCU_HmiService/SettingADASInfoInf.py +23 -0
  89. someip_py/service_interface/V2x/ADCU_HmiService/SettingAEBInfoInf.py +35 -0
  90. someip_py/service_interface/V2x/ADCU_HmiService/SettingAESInfoInf.py +10 -0
  91. someip_py/service_interface/V2x/ADCU_HmiService/SettingAPAInfoInf.py +35 -0
  92. someip_py/service_interface/V2x/ADCU_HmiService/SettingAWWInfoInf.py +10 -0
  93. someip_py/service_interface/V2x/ADCU_HmiService/SettingBSDInfoInf.py +27 -0
  94. someip_py/service_interface/V2x/ADCU_HmiService/SettingCMSRInfoInf.py +10 -0
  95. someip_py/service_interface/V2x/ADCU_HmiService/SettingCheckInf.py +277 -0
  96. someip_py/service_interface/V2x/ADCU_HmiService/SettingCheckReq.py +23 -0
  97. someip_py/service_interface/V2x/ADCU_HmiService/SettingDOWInfoInf.py +10 -0
  98. someip_py/service_interface/V2x/ADCU_HmiService/SettingDrivingInfoInf.py +79 -0
  99. someip_py/service_interface/V2x/ADCU_HmiService/SettingEMAInfoInf.py +10 -0
  100. someip_py/service_interface/V2x/ADCU_HmiService/SettingFCTAInfoInf.py +23 -0
  101. someip_py/service_interface/V2x/ADCU_HmiService/SettingFVSWInfoInf.py +10 -0
  102. someip_py/service_interface/V2x/ADCU_HmiService/SettingInitializationInf.py +300 -0
  103. someip_py/service_interface/V2x/ADCU_HmiService/SettingLKAInfoInf.py +39 -0
  104. someip_py/service_interface/V2x/ADCU_HmiService/SettingLPInfoInf.py +10 -0
  105. someip_py/service_interface/V2x/ADCU_HmiService/SettingRCTAInfoInf.py +10 -0
  106. someip_py/service_interface/V2x/ADCU_HmiService/SettingRMFInfoInf.py +10 -0
  107. someip_py/service_interface/V2x/ADCU_HmiService/SettingRPAInfoInf.py +23 -0
  108. someip_py/service_interface/V2x/ADCU_HmiService/SettingSGWInfoInf.py +10 -0
  109. someip_py/service_interface/V2x/ADCU_HmiService/SettingSRVInfoInf.py +10 -0
  110. someip_py/service_interface/V2x/ADCU_HmiService/SettingTLAInfoInf.py +23 -0
  111. someip_py/service_interface/V2x/ADCU_HmiService/SettingTSIInfoInf.py +39 -0
  112. someip_py/service_interface/V2x/ADCU_HmiService/SettingVoiceWarningInfoInf.py +10 -0
  113. someip_py/service_interface/V2x/ADCU_HmiService/SpeedLimitTriggerInf.py +19 -0
  114. someip_py/service_interface/V2x/ADCU_HmiService/TLAMainActionInf.py +102 -0
  115. someip_py/service_interface/V2x/ADCU_HmiService/TrafficLightStatusInf.py +66 -0
  116. someip_py/service_interface/V2x/ADCU_HmiService/TrafficRedWarningInf.py +36 -0
  117. someip_py/service_interface/V2x/ADCU_HmiService/VehicleRegionInf.py +10 -0
  118. someip_py/service_interface/V2x/ADCU_HmiService/VoiceCommandsInf.py +32 -0
  119. someip_py/service_interface/V2x/ADCU_HmiService/__init__.py +0 -0
  120. someip_py/service_interface/V2x/ADCU_HmiService/base.py +10 -0
  121. someip_py/service_interface/V2x/ADDrivingService/ADConfirmAndResume.py +19 -0
  122. someip_py/service_interface/V2x/ADDrivingService/ADFunctionReq.py +19 -0
  123. someip_py/service_interface/V2x/ADDrivingService/ADSetSpeed.py +36 -0
  124. someip_py/service_interface/V2x/ADDrivingService/ADTiGapAdj.py +36 -0
  125. someip_py/service_interface/V2x/ADDrivingService/AsyALatIndcr.py +10 -0
  126. someip_py/service_interface/V2x/ADDrivingService/AsyALgtIndcr.py +10 -0
  127. someip_py/service_interface/V2x/ADDrivingService/__init__.py +0 -0
  128. someip_py/service_interface/V2x/ADHighDefinitionMapService/ADHDMapSts.py +53 -0
  129. someip_py/service_interface/V2x/ADHighDefinitionMapService/__init__.py +0 -0
  130. someip_py/service_interface/V2x/ADLocationService/ADLocationSts.py +53 -0
  131. someip_py/service_interface/V2x/ADLocationService/__init__.py +0 -0
  132. someip_py/service_interface/V2x/ADNZPUbStsService/ADNZPUbSts.py +53 -0
  133. someip_py/service_interface/V2x/ADNZPUbStsService/__init__.py +0 -0
  134. someip_py/service_interface/V2x/ADPerceptionService/ADPerceptionSts.py +53 -0
  135. someip_py/service_interface/V2x/ADPerceptionService/__init__.py +0 -0
  136. someip_py/service_interface/V2x/ADPlanningService/ADPlanningInf.py +53 -0
  137. someip_py/service_interface/V2x/ADPlanningService/__init__.py +0 -0
  138. someip_py/service_interface/V2x/ADStateService/DrivingFeatureState.py +53 -0
  139. someip_py/service_interface/V2x/ADStateService/__init__.py +0 -0
  140. someip_py/service_interface/V2x/CamIntrinsicsService/CameraIntInf.py +62 -0
  141. someip_py/service_interface/V2x/CamIntrinsicsService/__init__.py +0 -0
  142. someip_py/service_interface/V2x/DMSInfoService/DMSInfo.py +53 -0
  143. someip_py/service_interface/V2x/DMSInfoService/__init__.py +0 -0
  144. someip_py/service_interface/V2x/ZID_Model_Service/ZidForbidInf.py +33 -0
  145. someip_py/service_interface/V2x/ZID_Model_Service/__init__.py +0 -0
  146. someip_py/service_interface/V2x/__init__.py +0 -0
  147. someip_py/service_interface/V30/ADASMapService/HznData.py +69 -0
  148. someip_py/service_interface/V30/ADASMapService/HznEdge.py +85 -0
  149. someip_py/service_interface/V30/ADASMapService/HznPosn.py +61 -0
  150. someip_py/service_interface/V30/ADASMapService/HznPosnLR.py +61 -0
  151. someip_py/service_interface/V30/ADASMapService/HznProfLong.py +53 -0
  152. someip_py/service_interface/V30/ADASMapService/HznProfLongLR.py +53 -0
  153. someip_py/service_interface/V30/ADASMapService/HznProfSho.py +65 -0
  154. someip_py/service_interface/V30/ADASMapService/HznSeg.py +93 -0
  155. someip_py/service_interface/V30/ADASMapService/HznSts.py +10 -0
  156. someip_py/service_interface/V30/ADASMapService/__init__.py +0 -0
  157. someip_py/service_interface/V30/ADAVPOperService/ADAVPOper.py +65 -0
  158. someip_py/service_interface/V30/ADAVPOperService/__init__.py +0 -0
  159. someip_py/service_interface/V30/ADAVPStsService/ADAVPSts.py +56 -0
  160. someip_py/service_interface/V30/ADAVPStsService/__init__.py +0 -0
  161. someip_py/service_interface/V30/ADAlertService/ADAlertAlarmInfoInfSts.py +40 -0
  162. someip_py/service_interface/V30/ADAlertService/ADAlertFaultListInfoSts.py +25 -0
  163. someip_py/service_interface/V30/ADAlertService/ClearFaultInf.py +10 -0
  164. someip_py/service_interface/V30/ADAlertService/__init__.py +0 -0
  165. someip_py/service_interface/V30/ADHighDefinitionMapService/ADHDMapSts.py +56 -0
  166. someip_py/service_interface/V30/ADHighDefinitionMapService/__init__.py +0 -0
  167. someip_py/service_interface/V30/ADLocationService/ADLocationSts.py +56 -0
  168. someip_py/service_interface/V30/ADLocationService/__init__.py +0 -0
  169. someip_py/service_interface/V30/ADNZPUbOperService/ADNZPUbOper.py +65 -0
  170. someip_py/service_interface/V30/ADNZPUbOperService/__init__.py +0 -0
  171. someip_py/service_interface/V30/ADNZPUbStsService/ADNZPUbSts.py +56 -0
  172. someip_py/service_interface/V30/ADNZPUbStsService/__init__.py +0 -0
  173. someip_py/service_interface/V30/ADPerceptionService/ADPerceptionSts.py +56 -0
  174. someip_py/service_interface/V30/ADPerceptionService/__init__.py +0 -0
  175. someip_py/service_interface/V30/ADPlanningService/ADPlanningInf.py +56 -0
  176. someip_py/service_interface/V30/ADPlanningService/__init__.py +0 -0
  177. someip_py/service_interface/V30/ADSDMapNavigationService/ADSDMapNavigationSts.py +56 -0
  178. someip_py/service_interface/V30/ADSDMapNavigationService/__init__.py +0 -0
  179. someip_py/service_interface/V30/ADScenePerceiveService/ScenePerceiveNotify.py +39 -0
  180. someip_py/service_interface/V30/ADScenePerceiveService/__init__.py +0 -0
  181. someip_py/service_interface/V30/ADStateService/ADSTSCalibSensorGroupState.py +56 -0
  182. someip_py/service_interface/V30/ADStateService/ADSTSCalibStateAckInf.py +56 -0
  183. someip_py/service_interface/V30/ADStateService/ADSTSFeatureStatus.py +56 -0
  184. someip_py/service_interface/V30/ADStateService/ADSTSIntegAdpuConfig.py +56 -0
  185. someip_py/service_interface/V30/ADStateService/ADSTSOnlineCalibInf.py +56 -0
  186. someip_py/service_interface/V30/ADStateService/CalibSensorGroupState.py +29 -0
  187. someip_py/service_interface/V30/ADStateService/__init__.py +0 -0
  188. someip_py/service_interface/V30/ADUserOperationService/ADUOCollectAndUpload.py +34 -0
  189. someip_py/service_interface/V30/ADUserOperationService/ADUOCustomParkingInf.py +57 -0
  190. someip_py/service_interface/V30/ADUserOperationService/ADUOOnlineCalibTriggerInf.py +34 -0
  191. someip_py/service_interface/V30/ADUserOperationService/ADUOSelectedSlotIdInf.py +19 -0
  192. someip_py/service_interface/V30/ADUserOperationService/ADUOSlelectedSlotParkingmodeInf.py +19 -0
  193. someip_py/service_interface/V30/ADUserOperationService/__init__.py +0 -0
  194. someip_py/service_interface/V30/ADUserSettingService/ADUserSettingSts.py +25 -0
  195. someip_py/service_interface/V30/ADUserSettingService/GetAllParameters.py +25 -0
  196. someip_py/service_interface/V30/ADUserSettingService/GetIntParameters.py +34 -0
  197. someip_py/service_interface/V30/ADUserSettingService/__init__.py +0 -0
  198. someip_py/service_interface/V30/CarConfigurationManagerService/CarConfigurationChangeEvent.py +25 -0
  199. someip_py/service_interface/V30/CarConfigurationManagerService/InstallCarconfig.py +10 -0
  200. someip_py/service_interface/V30/CarConfigurationManagerService/PrecheckCarconfig.py +10 -0
  201. someip_py/service_interface/V30/CarConfigurationManagerService/RollbackCarconfig.py +10 -0
  202. someip_py/service_interface/V30/CarConfigurationManagerService/SwitchCarconfig.py +10 -0
  203. someip_py/service_interface/V30/CarConfigurationManagerService/getAllParameters.py +25 -0
  204. someip_py/service_interface/V30/CarConfigurationManagerService/getAllofNodes.py +25 -0
  205. someip_py/service_interface/V30/CarConfigurationManagerService/getIntParameter.py +19 -0
  206. someip_py/service_interface/V30/CarConfigurationManagerService/getIntParameters.py +34 -0
  207. someip_py/service_interface/V30/CarConfigurationManagerService/getListofNodes.py +34 -0
  208. someip_py/service_interface/V30/CarConfigurationManagerService/getOneofNode.py +19 -0
  209. someip_py/service_interface/V30/CarConfigurationManagerService/getPartNumber.py +12 -0
  210. someip_py/service_interface/V30/CarConfigurationManagerService/getVin.py +10 -0
  211. someip_py/service_interface/V30/CarConfigurationManagerService/setIntParameter.py +19 -0
  212. someip_py/service_interface/V30/CarConfigurationManagerService/setIntParameters.py +34 -0
  213. someip_py/service_interface/V30/CarConfigurationManagerService/updateCarconfig.py +10 -0
  214. someip_py/service_interface/V30/ConnectedService/CurrentWeatherInfo.py +53 -0
  215. someip_py/service_interface/V30/ConnectedService/RequiredWeatherInfo.py +68 -0
  216. someip_py/service_interface/V30/ConnectedService/WeatherInforQueryReq.py +38 -0
  217. someip_py/service_interface/V30/DistributeFotaService/AbortDownload.py +43 -0
  218. someip_py/service_interface/V30/DistributeFotaService/AbortInstallation.py +43 -0
  219. someip_py/service_interface/V30/DistributeFotaService/GetAssignmentStatus.py +80 -0
  220. someip_py/service_interface/V30/DistributeFotaService/PauseDownload.py +34 -0
  221. someip_py/service_interface/V30/DistributeFotaService/PrecheckSwitch.py +34 -0
  222. someip_py/service_interface/V30/DistributeFotaService/ResumeDownload.py +34 -0
  223. someip_py/service_interface/V30/DistributeFotaService/Rollback.py +34 -0
  224. someip_py/service_interface/V30/DistributeFotaService/StartDecryption.py +34 -0
  225. someip_py/service_interface/V30/DistributeFotaService/StartDownload.py +34 -0
  226. someip_py/service_interface/V30/DistributeFotaService/StartInstallation.py +34 -0
  227. someip_py/service_interface/V30/DistributeFotaService/StartSensibleInstallation.py +34 -0
  228. someip_py/service_interface/V30/DistributeFotaService/StartSwitch.py +34 -0
  229. someip_py/service_interface/V30/DistributeFotaService/TransferAssignmentInfo.py +112 -0
  230. someip_py/service_interface/V30/DriverMonitorService/CamFltsStsToADCU.py +10 -0
  231. someip_py/service_interface/V30/DriverMonitorService/DrvrDistSwitchSts.py +10 -0
  232. someip_py/service_interface/V30/DriverMonitorService/DrvrDistSwitchsetting.py +19 -0
  233. someip_py/service_interface/V30/DriverMonitorService/DrvrFatiLvl.py +10 -0
  234. someip_py/service_interface/V30/DriverMonitorService/DrvrMonrAlarmSts.py +10 -0
  235. someip_py/service_interface/V30/DriverMonitorService/DrvrPerformanceAlarmSts.py +10 -0
  236. someip_py/service_interface/V30/DriverMonitorService/DrvrPfmncSwitchSts.py +10 -0
  237. someip_py/service_interface/V30/DriverMonitorService/DrvrPfmncSwitchsetting.py +19 -0
  238. someip_py/service_interface/V30/DriverMonitorService/EyeGazeRegion.py +25 -0
  239. someip_py/service_interface/V30/DriverMonitorService/EyeOnRoad.py +10 -0
  240. someip_py/service_interface/V30/DriverMonitorService/EyeOpenSts.py +25 -0
  241. someip_py/service_interface/V30/DriverMonitorService/EyePosnValidSig.py +29 -0
  242. someip_py/service_interface/V30/DriverMonitorService/SnsrDrvrPerformanceSts.py +10 -0
  243. someip_py/service_interface/V30/ESIMConnectionStatus/AutoCardSwitchSts.py +10 -0
  244. someip_py/service_interface/V30/ESIMConnectionStatus/CardSwitchStsCode.py +10 -0
  245. someip_py/service_interface/V30/ESIMConnectionStatus/ConnectionStatus.py +25 -0
  246. someip_py/service_interface/V30/ESIMConnectionStatus/DataConnectionStatus.py +25 -0
  247. someip_py/service_interface/V30/ESIMConnectionStatus/HiSpeedFun.py +25 -0
  248. someip_py/service_interface/V30/ESIMConnectionStatus/ICCIDInfo.py +25 -0
  249. someip_py/service_interface/V30/ESIMConnectionStatus/IMEIInfo.py +25 -0
  250. someip_py/service_interface/V30/ESIMConnectionStatus/IMSIInfo.py +25 -0
  251. someip_py/service_interface/V30/ESIMConnectionStatus/IPAddress.py +25 -0
  252. someip_py/service_interface/V30/ESIMConnectionStatus/MSISDNInfo.py +25 -0
  253. someip_py/service_interface/V30/ESIMConnectionStatus/MainCardSts.py +25 -0
  254. someip_py/service_interface/V30/ESIMConnectionStatus/MainCardSwitchReq.py +19 -0
  255. someip_py/service_interface/V30/ESIMConnectionStatus/NetworkAvailable.py +25 -0
  256. someip_py/service_interface/V30/ESIMConnectionStatus/OperatorStatus.py +25 -0
  257. someip_py/service_interface/V30/ESIMConnectionStatus/SignalLevel.py +25 -0
  258. someip_py/service_interface/V30/ESIMConnectionStatus/SignalLevelEvent.py +25 -0
  259. someip_py/service_interface/V30/ESIMConnectionStatus/SignalStrength.py +25 -0
  260. someip_py/service_interface/V30/ESIMConnectionStatus/SimCardSts.py +10 -0
  261. someip_py/service_interface/V30/ESIMConnectionStatus/SimCardStsEvent.py +10 -0
  262. someip_py/service_interface/V30/ESIMConnectionStatus/TrafficData.py +29 -0
  263. someip_py/service_interface/V30/IDPSProcessLocalService/CfigRuleLocalUpdate.py +19 -0
  264. someip_py/service_interface/V30/IDPSProcessLocalService/DeviceRegisterLocal.py +55 -0
  265. someip_py/service_interface/V30/IDPSProcessLocalService/FlowLocalUpload.py +19 -0
  266. someip_py/service_interface/V30/IDPSProcessLocalService/FwRuleLocalUpdate.py +19 -0
  267. someip_py/service_interface/V30/IDPSProcessLocalService/HealthLocalUpload.py +19 -0
  268. someip_py/service_interface/V30/IDPSProcessLocalService/QSEvLocalUpLoad.py +19 -0
  269. someip_py/service_interface/V30/IDPSProcessLocalService/RuleLocalUpdate.py +19 -0
  270. someip_py/service_interface/V30/IDPSProcessLocalService/VerifyIdentity.py +38 -0
  271. someip_py/service_interface/V30/IDPSVehicleRegisterLocalService/IDPSVehicleRegisterLocalSts.py +10 -0
  272. someip_py/service_interface/V30/NavigationService/ChrgStationPwr.py +10 -0
  273. someip_py/service_interface/V30/NavigationService/DistanceToDestination.py +10 -0
  274. someip_py/service_interface/V30/NavigationService/EstimdLeftSOCToDestination.py +10 -0
  275. someip_py/service_interface/V30/NavigationService/NaviActiveSts.py +10 -0
  276. someip_py/service_interface/V30/NavigationService/PositionOfDestinationInfo.py +29 -0
  277. someip_py/service_interface/V30/NavigationService/TLAMainActionInf.py +33 -0
  278. someip_py/service_interface/V30/NavigationService/TimeToDestination.py +29 -0
  279. someip_py/service_interface/V30/NavigationService/TotalRoadGroupInfo.py +37 -0
  280. someip_py/service_interface/V30/NavigationService/TrafficLightStatus.py +33 -0
  281. someip_py/service_interface/V30/NavigationService/TypeToDestination.py +10 -0
  282. someip_py/service_interface/V30/NavigationService/VehicleRegion.py +10 -0
  283. someip_py/service_interface/V30/NightVisionModeUXCService/NightVisionSnsrSts.py +10 -0
  284. someip_py/service_interface/V30/PerceptionObjectService/CameraSts.py +10 -0
  285. someip_py/service_interface/V30/PerceptionObjectService/HostVehInLitArea.py +10 -0
  286. someip_py/service_interface/V30/PerceptionObjectService/NearestVehObj.py +61 -0
  287. someip_py/service_interface/V30/PerceptionObjectService/TooManyCars.py +10 -0
  288. someip_py/service_interface/V30/PerceptionObjectService/TrafficSign1.py +49 -0
  289. someip_py/service_interface/V30/PerceptionObjectService/TrafficSign2.py +49 -0
  290. someip_py/service_interface/V30/PerceptionObjectService/VRUObj1.py +45 -0
  291. someip_py/service_interface/V30/PerceptionObjectService/VRUObj2.py +45 -0
  292. someip_py/service_interface/V30/PerceptionObjectService/VRUObj3.py +45 -0
  293. someip_py/service_interface/V30/PerceptionObjectService/VRUObj4.py +45 -0
  294. someip_py/service_interface/V30/PerceptionObjectService/VRUObj5.py +45 -0
  295. someip_py/service_interface/V30/PerceptionObjectService/VRUObj6.py +45 -0
  296. someip_py/service_interface/V30/PerceptionObjectService/VRUObj7.py +45 -0
  297. someip_py/service_interface/V30/PerceptionObjectService/VRUObj8.py +45 -0
  298. someip_py/service_interface/V30/PerceptionObjectService/VehObj1.py +61 -0
  299. someip_py/service_interface/V30/PerceptionObjectService/VehObj2.py +61 -0
  300. someip_py/service_interface/V30/PerceptionObjectService/VehObj3.py +61 -0
  301. someip_py/service_interface/V30/PerceptionObjectService/VehObj4.py +61 -0
  302. someip_py/service_interface/V30/PerceptionObjectService/VehObj5.py +61 -0
  303. someip_py/service_interface/V30/PerceptionObjectService/VehObj6.py +61 -0
  304. someip_py/service_interface/V30/PerceptionObjectService/VehObj7.py +61 -0
  305. someip_py/service_interface/V30/PerceptionObjectService/VehObj8.py +61 -0
  306. someip_py/service_interface/V30/VehicleModeManagementService/CarModeState.py +10 -0
  307. someip_py/service_interface/V30/VehicleModeManagementService/CarModeSubtype.py +10 -0
  308. someip_py/service_interface/V30/VehicleModeManagementService/EnergyLevelElectric.py +25 -0
  309. someip_py/service_interface/V30/VehicleModeManagementService/PowerLevelElectric.py +25 -0
  310. someip_py/service_interface/V30/VehicleModeManagementService/PowerModeState.py +10 -0
  311. someip_py/service_interface/V30/WIFIAvailabilityService/AvailabilityStatus.py +10 -0
  312. someip_py/service_interface/V30/__init__.py +0 -0
  313. someip_py/service_interface/__init__.py +0 -0
  314. someip_py/service_interface/config.json +3412 -0
  315. someip_py/service_interface/fields.json +70 -0
  316. someip_py/service_interface/pb/Adcu/ADAVPOperService_pb2.py +59 -0
  317. someip_py/service_interface/pb/Adcu/ADAVPStsService_pb2.py +109 -0
  318. someip_py/service_interface/pb/Adcu/ADHighDefinitionMapService_pb2.py +45 -0
  319. someip_py/service_interface/pb/Adcu/ADLocationService_pb2.py +47 -0
  320. someip_py/service_interface/pb/Adcu/ADNZPUbOperService_pb2.py +101 -0
  321. someip_py/service_interface/pb/Adcu/ADNZPUbStsService_pb2.py +85 -0
  322. someip_py/service_interface/pb/Adcu/ADPerceptionService_pb2.py +61 -0
  323. someip_py/service_interface/pb/Adcu/ADPlanningInfoService_pb2.py +41 -0
  324. someip_py/service_interface/pb/Adcu/ADSDMapNavigationService_pb2.py +115 -0
  325. someip_py/service_interface/pb/Adcu/ADStateService_pb2.py +79 -0
  326. someip_py/service_interface/pb/Adcu/DMSInfoService_pb2.py +41 -0
  327. someip_py/service_interface/protoc/linux/bin/protoc +0 -0
  328. someip_py/service_interface/protoc/linux/include/google/protobuf/any.proto +158 -0
  329. someip_py/service_interface/protoc/linux/include/google/protobuf/api.proto +208 -0
  330. someip_py/service_interface/protoc/linux/include/google/protobuf/compiler/plugin.proto +183 -0
  331. someip_py/service_interface/protoc/linux/include/google/protobuf/descriptor.proto +911 -0
  332. someip_py/service_interface/protoc/linux/include/google/protobuf/duration.proto +116 -0
  333. someip_py/service_interface/protoc/linux/include/google/protobuf/empty.proto +52 -0
  334. someip_py/service_interface/protoc/linux/include/google/protobuf/field_mask.proto +245 -0
  335. someip_py/service_interface/protoc/linux/include/google/protobuf/source_context.proto +48 -0
  336. someip_py/service_interface/protoc/linux/include/google/protobuf/struct.proto +95 -0
  337. someip_py/service_interface/protoc/linux/include/google/protobuf/timestamp.proto +147 -0
  338. someip_py/service_interface/protoc/linux/include/google/protobuf/type.proto +187 -0
  339. someip_py/service_interface/protoc/linux/include/google/protobuf/wrappers.proto +123 -0
  340. someip_py/service_interface/protoc/windows/bin/protoc.exe +0 -0
  341. someip_py/service_interface/protoc/windows/include/google/protobuf/any.proto +161 -0
  342. someip_py/service_interface/protoc/windows/include/google/protobuf/api.proto +207 -0
  343. someip_py/service_interface/protoc/windows/include/google/protobuf/compiler/plugin.proto +180 -0
  344. someip_py/service_interface/protoc/windows/include/google/protobuf/descriptor.proto +1028 -0
  345. someip_py/service_interface/protoc/windows/include/google/protobuf/duration.proto +115 -0
  346. someip_py/service_interface/protoc/windows/include/google/protobuf/empty.proto +51 -0
  347. someip_py/service_interface/protoc/windows/include/google/protobuf/field_mask.proto +245 -0
  348. someip_py/service_interface/protoc/windows/include/google/protobuf/source_context.proto +48 -0
  349. someip_py/service_interface/protoc/windows/include/google/protobuf/struct.proto +95 -0
  350. someip_py/service_interface/protoc/windows/include/google/protobuf/timestamp.proto +144 -0
  351. someip_py/service_interface/protoc/windows/include/google/protobuf/type.proto +193 -0
  352. someip_py/service_interface/protoc/windows/include/google/protobuf/wrappers.proto +123 -0
  353. someip_py/utils.py +155 -0
  354. someip_py-1.0.0.dist-info/METADATA +38 -0
  355. someip_py-1.0.0.dist-info/RECORD +358 -0
  356. someip_py-1.0.0.dist-info/WHEEL +6 -0
  357. someip_py-1.0.0.dist-info/entry_points.txt +2 -0
  358. someip_py-1.0.0.dist-info/top_level.txt +1 -0
someip_py/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ from someip_py.interface import SOMEIPService
2
+
3
+ __version__ = "1.0.0"
4
+
5
+ __all__ = ["SOMEIPService"]
someip_py/client.py ADDED
@@ -0,0 +1,475 @@
1
+ import copy
2
+ import ipaddress
3
+ import select
4
+ import socket
5
+ import struct
6
+ import threading
7
+ import time
8
+ from enum import IntEnum
9
+ from logging import getLogger
10
+ from typing import Optional
11
+
12
+ from .config import Eventgroup, SDService
13
+ from .constants import A_PROCESSING_TIME, FIND_TTL, MULTICAST_ADDRESS, MULTICAST_PORT
14
+ from .frame import SOMEIPFrame, SOMEIPMessageType, SOMEIPReturnCode, SOMEIPSDFrame
15
+
16
+ logger = getLogger(name="someip.client")
17
+
18
+
19
+ class SOMEIPClient:
20
+ """SOME/IP client."""
21
+
22
+ class TransportType(IntEnum):
23
+ TCP = socket.IPPROTO_TCP
24
+ UDP = socket.IPPROTO_UDP
25
+
26
+ def __init__(
27
+ self,
28
+ target_address: str = "198.99.36.3",
29
+ target_port: Optional[int] = None,
30
+ local_bind_address: str = "",
31
+ mcast_address: str = MULTICAST_ADDRESS,
32
+ mcast_port: int = MULTICAST_PORT,
33
+ transport_type: TransportType = TransportType.TCP,
34
+ ):
35
+ """Init SOME/IP client.
36
+
37
+ Args:
38
+ target_address (str): remote SOME/IP service address.
39
+ target_port (int): remote SOME/IP service port.
40
+ local_bind_address (str): local address that communicate to SOME/IP service.
41
+ mcast_address (str): multicast dst ip address.
42
+ mcast_port (int): multicast port.
43
+ transport_type (SOMEIPClient.TransportType): Transport protocol.
44
+ """
45
+ self._target_address = target_address
46
+ self._target_port = target_port
47
+ self._local_bind_address = local_bind_address
48
+ self._mcast_address = mcast_address
49
+ self._mcast_port = mcast_port
50
+ self._address_family = socket.AF_INET
51
+ if self._target_address and isinstance(
52
+ ipaddress.ip_address(self._target_address), ipaddress.IPv6Address
53
+ ):
54
+ self._address_family = socket.AF_INET6
55
+
56
+ self._transport_type = transport_type
57
+ self._mcast_udp_sock = None
58
+ self._unicast_udp_sock = self._create_unicast_udp_sock(
59
+ bind_port=self._mcast_port
60
+ )
61
+ self._sock = None
62
+ self._session_counter = 0x0001
63
+ self._subscribe_receiver = {}
64
+ self._connect()
65
+
66
+ def _connect(self):
67
+ """start to establish socket communication"""
68
+ if self._transport_type == SOMEIPClient.TransportType.TCP:
69
+ self._sock = self._create_tcp_sock()
70
+ elif self._transport_type == SOMEIPClient.TransportType.UDP:
71
+ self._sock = self._create_unicast_udp_sock()
72
+
73
+ def _create_tcp_sock(self):
74
+ sock = socket.socket(self._address_family, socket.SOCK_STREAM)
75
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
76
+ sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
77
+ sock.settimeout(A_PROCESSING_TIME)
78
+ try:
79
+ sock.connect((self._target_address, self._target_port))
80
+ except socket.timeout as e:
81
+ sock.close()
82
+ sock = None
83
+ raise socket.timeout(e)
84
+ return sock
85
+
86
+ def _create_unicast_udp_sock(self, bind_port=0):
87
+ sock = socket.socket(self._address_family, socket.SOCK_DGRAM)
88
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
89
+ sock.settimeout(A_PROCESSING_TIME)
90
+ sock.bind((self._local_bind_address, bind_port))
91
+ return sock
92
+
93
+ def _create_multicast_udp_sock(self):
94
+ self._mcast_udp_sock = socket.socket(self._address_family, socket.SOCK_DGRAM)
95
+ self._mcast_udp_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
96
+ self._mcast_udp_sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
97
+ self._mcast_udp_sock.settimeout(A_PROCESSING_TIME)
98
+ self._mcast_udp_sock.bind((self._mcast_address, self._mcast_port))
99
+ mreq = struct.pack(
100
+ "4s4s",
101
+ socket.inet_aton(self._mcast_address),
102
+ socket.inet_aton(self._local_bind_address),
103
+ )
104
+ self._mcast_udp_sock.setsockopt(
105
+ socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq
106
+ )
107
+
108
+ def find_service(
109
+ self,
110
+ service_id,
111
+ instance_id,
112
+ major_version=1,
113
+ minor_version=0,
114
+ ttl=FIND_TTL,
115
+ timeout=1.0,
116
+ ) -> SOMEIPSDFrame:
117
+ """Create a SD FindService entry for this service.
118
+
119
+ Args:
120
+ service_id (int): service id of the entry.
121
+ instance_id (int): instance id of the entry, If it is set to 0xFFFF,
122
+ it means all service instances of a service.
123
+ major_version (int): The major version of the service instance this event group belongs to.
124
+ minor_version (int): The mino version of the service instance this event group belongs to.
125
+ ttl (int): describe the life cycle of this Entry in seconds.
126
+ timeout (float): socket receive timeout.
127
+ """
128
+ self._create_multicast_udp_sock()
129
+ frame = SOMEIPSDFrame(
130
+ session_id=self._session_counter,
131
+ entries=[
132
+ SDService(
133
+ service_id,
134
+ instance_id=instance_id,
135
+ major_version=major_version,
136
+ minor_version=minor_version,
137
+ ).create_find_entry(ttl=ttl)
138
+ ],
139
+ )
140
+ self._send(
141
+ frame.encode(),
142
+ sock=self._unicast_udp_sock,
143
+ addr=(self._mcast_address, self._mcast_port),
144
+ )
145
+ start = time.time()
146
+ while time.time() - start < timeout:
147
+ try:
148
+ offer_frame = SOMEIPSDFrame.decode(
149
+ self._recv(timeout=timeout, sock=self._mcast_udp_sock)
150
+ )
151
+ offer_sd_frame, _ = offer_frame.decode_sd(offer_frame.payload)
152
+ except (TypeError, TimeoutError):
153
+ continue
154
+
155
+ if (
156
+ offer_sd_frame.entries[0].service_id == service_id
157
+ and offer_sd_frame.entries[0].instance_id == instance_id
158
+ ):
159
+ return offer_frame
160
+
161
+ return None
162
+
163
+ def subscribe(
164
+ self,
165
+ service_id,
166
+ method_id,
167
+ instance_id,
168
+ eventgroup_id,
169
+ major_version=1,
170
+ ttl=3,
171
+ timeout=3.0,
172
+ callback=None,
173
+ ):
174
+ """
175
+ subcribe a eventgroup.
176
+
177
+ Args:
178
+ service_id (int): service id of the entry.
179
+ method_id (int): notify id of the interface.
180
+ instance_id (int): instance id of the entry, If it is set to 0xFFFF,
181
+ it means all service instances of a service.
182
+ eventgroup_id (int): event group id.
183
+ major_version (int): The major version of the service instance this event group belongs to.
184
+ ttl (int): describe the life cycle of this Entry in seconds.
185
+ timeout (float): socket receive timeout.
186
+ callback (funcion): callback funtion when receive server notification.
187
+
188
+ Returns:
189
+ int: the session id of the subcriber.
190
+ """
191
+ if self._session_counter > 0xFFFF:
192
+ self._session_counter = 0x0001
193
+
194
+ session_id = self._session_counter
195
+
196
+ if self._transport_type == SOMEIPClient.TransportType.TCP:
197
+ recv_sock = self._create_tcp_sock()
198
+ elif self._transport_type == SOMEIPClient.TransportType.UDP:
199
+ recv_sock = self._create_unicast_udp_sock()
200
+
201
+ eventgroup = Eventgroup(
202
+ service_id=service_id,
203
+ instance_id=instance_id,
204
+ eventgroup_id=eventgroup_id,
205
+ major_version=major_version,
206
+ sockname=recv_sock.getsockname(),
207
+ protocol=self._transport_type,
208
+ )
209
+
210
+ frame = SOMEIPSDFrame(
211
+ session_id=session_id,
212
+ entries=(eventgroup.create_subscribe_entry(ttl=ttl),),
213
+ )
214
+ self._send(
215
+ frame.encode(),
216
+ sock=self._unicast_udp_sock,
217
+ addr=(self._target_address, self._mcast_port),
218
+ )
219
+ subscribe_ack_frame = SOMEIPFrame.decode(
220
+ self._recv(timeout=timeout, sock=self._unicast_udp_sock)
221
+ )
222
+ SOMEIPSDFrame.check_ack(subscribe_ack_frame.payload)
223
+
224
+ loop = None
225
+
226
+ self._subscribe_receiver[session_id] = {
227
+ "socket": recv_sock,
228
+ "eventgroup": eventgroup,
229
+ "thread": loop,
230
+ "running": True,
231
+ }
232
+ self._session_counter += 1
233
+ if callback:
234
+
235
+ def _loop():
236
+ while self._subscribe_receiver[session_id]["running"]:
237
+ try:
238
+ response = self._recv(sock=recv_sock)
239
+ notify = SOMEIPFrame.decode(response)
240
+ except Exception:
241
+ pass
242
+ else:
243
+ if (
244
+ notify.service_id == service_id
245
+ and notify.method_id == method_id
246
+ ):
247
+ success_received = callback(notify)
248
+ if success_received:
249
+ break
250
+
251
+ loop = threading.Thread(
252
+ target=_loop,
253
+ name=f"subscribe_{service_id}_{self._session_counter}",
254
+ )
255
+ loop.daemon = True
256
+ loop.start()
257
+ self._subscribe_receiver[session_id]["thread"] = loop
258
+ return self._session_counter - 1
259
+ else:
260
+ start = time.time()
261
+ while time.time() - start <= timeout:
262
+ try:
263
+ response = self._recv(sock=recv_sock)
264
+ notify = SOMEIPFrame.decode(response)
265
+ except Exception:
266
+ pass
267
+ else:
268
+ if (
269
+ notify.service_id == service_id
270
+ and notify.method_id == method_id
271
+ ):
272
+ return notify
273
+
274
+ def stop_subscribe(
275
+ self,
276
+ counter,
277
+ ttl=0,
278
+ ):
279
+ """
280
+ stop to subscribe eventgroup.
281
+
282
+ Args:
283
+ counter (int): session id of the subsciber.
284
+ ttl (int): describe the life cycle of this Entry in seconds.
285
+ """
286
+ frame = SOMEIPSDFrame(
287
+ session_id=self._session_counter,
288
+ entries=(
289
+ self._subscribe_receiver[counter]["eventgroup"].create_subscribe_entry(
290
+ ttl=ttl
291
+ ),
292
+ ),
293
+ )
294
+ self._send(
295
+ frame.encode(),
296
+ sock=self._unicast_udp_sock,
297
+ addr=(self._target_address, self._mcast_port),
298
+ )
299
+ self._session_counter += 1
300
+ self._subscribe_receiver[counter]["running"] = False
301
+ if (
302
+ self._subscribe_receiver[counter]["thread"]
303
+ and self._subscribe_receiver[counter]["thread"].is_alive()
304
+ ):
305
+ self._subscribe_receiver[counter]["thread"].join(A_PROCESSING_TIME + 1.0)
306
+
307
+ self._subscribe_receiver[counter]["socket"].close()
308
+ self._subscribe_receiver.pop(counter, None)
309
+
310
+ def rr_method(
311
+ self,
312
+ service_id,
313
+ method_id,
314
+ client_id=1,
315
+ session_id=1,
316
+ protocol_version=1,
317
+ interface_version=1,
318
+ message_type=SOMEIPMessageType.REQUEST,
319
+ return_code=SOMEIPReturnCode.E_OK,
320
+ payload=bytes(),
321
+ timeout=5.0,
322
+ ):
323
+ """
324
+ Request/Response - R&R mode.
325
+ """
326
+ frame = SOMEIPFrame(
327
+ service_id=service_id,
328
+ method_id=method_id,
329
+ client_id=client_id,
330
+ session_id=session_id,
331
+ protocol_version=protocol_version,
332
+ interface_version=interface_version,
333
+ message_type=message_type,
334
+ return_code=return_code,
335
+ payload=payload,
336
+ )
337
+ self._send(frame.encode())
338
+ return SOMEIPFrame.decode(self._recv(timeout=timeout))
339
+
340
+ def ff_method(
341
+ self,
342
+ service_id,
343
+ method_id,
344
+ client_id=1,
345
+ session_id=1,
346
+ protocol_version=1,
347
+ interface_version=1,
348
+ message_type=SOMEIPMessageType.REQUEST_NO_RETURN,
349
+ return_code=SOMEIPReturnCode.E_OK,
350
+ payload=bytes(),
351
+ ):
352
+ """
353
+ Fire & Forget request, no reply, F&F mode.
354
+ """
355
+ frame = SOMEIPFrame(
356
+ service_id=service_id,
357
+ method_id=method_id,
358
+ client_id=client_id,
359
+ session_id=session_id,
360
+ protocol_version=protocol_version,
361
+ interface_version=interface_version,
362
+ message_type=message_type,
363
+ return_code=return_code,
364
+ payload=payload,
365
+ )
366
+ self._send(frame.encode())
367
+
368
+ def field_getter(
369
+ self,
370
+ service_id,
371
+ method_id,
372
+ client_id=1,
373
+ session_id=1,
374
+ protocol_version=1,
375
+ interface_version=1,
376
+ message_type=SOMEIPMessageType.REQUEST,
377
+ return_code=SOMEIPReturnCode.E_OK,
378
+ payload=bytes(),
379
+ timeout=5.0,
380
+ ):
381
+ """
382
+ The getter of a field shall be a request/response call that has an empty payload in the request message
383
+ and the value of the field in the payload of the response message.
384
+ """
385
+ return self.rr_method(
386
+ service_id,
387
+ method_id,
388
+ client_id=client_id,
389
+ session_id=session_id,
390
+ protocol_version=protocol_version,
391
+ interface_version=interface_version,
392
+ message_type=message_type,
393
+ return_code=return_code,
394
+ payload=payload,
395
+ timeout=timeout,
396
+ )
397
+
398
+ def field_setter(
399
+ self,
400
+ service_id,
401
+ method_id,
402
+ client_id=1,
403
+ session_id=1,
404
+ protocol_version=1,
405
+ interface_version=1,
406
+ message_type=SOMEIPMessageType.REQUEST,
407
+ return_code=SOMEIPReturnCode.E_OK,
408
+ payload=bytes(),
409
+ timeout=5.0,
410
+ ):
411
+ """
412
+ The setter of a field shall be a request/response call that has the desired value of the field in the
413
+ payload of the request message and the value that was set to the field in the payload of the response message.
414
+ """
415
+ return self.rr_method(
416
+ service_id,
417
+ method_id,
418
+ client_id=client_id,
419
+ session_id=session_id,
420
+ protocol_version=protocol_version,
421
+ interface_version=interface_version,
422
+ message_type=message_type,
423
+ return_code=return_code,
424
+ payload=payload,
425
+ timeout=timeout,
426
+ )
427
+
428
+ def _send(self, frame, sock=None, addr=None):
429
+ sock = sock or self._sock
430
+ addr = addr or (self._target_address, self._target_port)
431
+ remaining = len(frame)
432
+ while remaining > 0:
433
+ if sock.type == socket.SocketKind.SOCK_STREAM:
434
+ remaining -= sock.send(frame[-remaining:])
435
+ else:
436
+ remaining -= sock.sendto(frame[-remaining:], addr)
437
+
438
+ def _recv(self, timeout=A_PROCESSING_TIME, sock=None):
439
+ sock = sock or self._sock
440
+ data = bytes()
441
+
442
+ r, _, _ = select.select([sock], [], [], timeout)
443
+
444
+ if r:
445
+ data = sock.recv(1024)
446
+ else:
447
+ logger.debug("error recv data, ---->socket timeout")
448
+
449
+ if data:
450
+ return data
451
+
452
+ raise TimeoutError("SOME/IP server failed to respond in time")
453
+
454
+ def close(self):
455
+ """close socket"""
456
+ receivers = copy.deepcopy(list(self._subscribe_receiver.keys()))
457
+ for k in receivers:
458
+ self.stop_subscribe(k)
459
+ del receivers
460
+ if self._sock:
461
+ self._sock.close()
462
+ self._sock = None
463
+ if self._mcast_udp_sock:
464
+ self._mcast_udp_sock.close()
465
+ self._mcast_udp_sock = None
466
+ if self._unicast_udp_sock:
467
+ self._unicast_udp_sock.close()
468
+ self._unicast_udp_sock = None
469
+ self._session_counter = 0x0001
470
+
471
+ def __enter__(self):
472
+ return self
473
+
474
+ def __exit__(self, type, value, traceback):
475
+ self.close()