diff --git a/CANape/CANape.ini b/CANape/CANape.ini index 081c788..e58b638 100644 --- a/CANape/CANape.ini +++ b/CANape/CANape.ini @@ -6,7 +6,7 @@ ;------------------------------------------------------------------------------- [!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] -GUID={3E32ADB4-C84B-4412-BCFC-7390AA77D052} +GUID={6A00AF01-208D-4111-9320-BADA8CEFEBBF} [FILE_INFO] Identification=CANape-Project-File @@ -22,8 +22,8 @@ CreationTime=22:29 CreationDate=09/06/2020 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 -ModificationTime=14:38 -ModificationDate=07/29/2024 ; Month/Day/Year +ModificationTime=12:44 +ModificationDate=07/31/2024 ; Month/Day/Year [CANAPE] @@ -1091,20 +1091,20 @@ SHOWGRID=0 RIGHTPANE2HEIGHT=-2 TREEX=530 TREEY=1709 -ACTIVEPANE=0 -SELECTED_TREENODE=Geräte/xcp_lite_Device +ACTIVEPANE=1 +SELECTED_TREENODE=Geräte/xcp_lite_Device/Protokoll FIRSTVISIBLE_TREENODE=Geräte -TREEEXPAND_COUNT=6 +TREEEXPAND_COUNT=7 TREEEXPAND_0=Geräte -TREEEXPAND_1=Geräte/xcp_lite_Device/Protokoll -TREEEXPAND_2=Netzwerke +TREEEXPAND_1=Geräte/xcp_lite_Device +TREEEXPAND_2=Geräte/xcp_lite_Device/Protokoll LAST_FOCUSED_LISTCOLUMN=0 LAST_FOCUSED_LISTINDEX=0 LAST_TOP_LISTINDEX=0 -TREEEXPAND_3=Netzwerke/ETH_1_Network -TREEEXPAND_4=Netzwerke/ETH_1_Network/xcp_lite_Device -TREEEXPAND_5=Netzwerke/ETH_1_Network/xcp_lite_Device/Protokoll -TREEEXPAND_6=Netzwerke/ETH_1_Network/xcp_lite_Device +TREEEXPAND_3=Netzwerke +TREEEXPAND_4=Netzwerke/ETH_1_Network +TREEEXPAND_5=Netzwerke/ETH_1_Network/xcp_lite_Device +TREEEXPAND_6=Netzwerke/ETH_1_Network/xcp_lite_Device/Protokoll ScreenDPIinSection=192 POSX_dpi96=463 POSY_dpi96=88 @@ -1140,13 +1140,13 @@ ColWidthDisplay=384 ShowMore=0 MoreHeight=588 ScreenDPIinSection=192 -WindowLeft=2328 -WindowTop=1334 +WindowLeft=2157 +WindowTop=834 WindowWidth=1248 WindowHeight=260 MoreHeight_dpi96=294 -WindowLeft_dpi96=1164 -WindowTop_dpi96=667 +WindowLeft_dpi96=1079 +WindowTop_dpi96=417 MoreHeight=441 ScreenDPIinSection=144 @@ -1626,8 +1626,8 @@ FIELD_DISPLAY_CSUS_HEIGHT_dpi96=0 FIELD_DISPLAY_REMARK_HEIGHT_dpi96=0 FIELD_DISPLAY_DATE_HEIGHT_dpi96=0 FIELD_DISPLAY_SD_FIELDS_HEIGHT_dpi96=0 -PREDEFINED_ENTRY_00=---2024-07-29T14:25:59 -PREDEFINED_ENTRY_01=changed2024-07-29T14:25:59 +PREDEFINED_ENTRY_00=---2024-07-31T12:25:48 +PREDEFINED_ENTRY_01=changed2024-07-31T12:25:48 [RIBBON] ISMINIMIZED=0 @@ -2981,7 +2981,7 @@ OVERRUN_HANDLING=0 -EVENT_COUNT=13 +EVENT_COUNT=14 EVENT_CHANNEL_0=0x0000 EVENT_CHANNEL_1=0x0001 @@ -3040,15 +3040,15 @@ EVENT_MAX_DAQ_LIST_8=255 EVENT_MAX_DAQ_LIST_9=255 EVENT_NAME_0=mainloop -EVENT_NAME_1=task1 -EVENT_NAME_2=task1_points -EVENT_NAME_3=task2_inst_1 -EVENT_NAME_4=task2_inst_2 -EVENT_NAME_5=task2_inst_3 -EVENT_NAME_6=task2_inst_4 -EVENT_NAME_7=task2_inst_5 -EVENT_NAME_8=task2_inst_6 -EVENT_NAME_9=task2_inst_7 +EVENT_NAME_1=mainloop_counter2 +EVENT_NAME_2=task1 +EVENT_NAME_3=task1_points +EVENT_NAME_4=task2_inst_1 +EVENT_NAME_5=task2_inst_2 +EVENT_NAME_6=task2_inst_3 +EVENT_NAME_7=task2_inst_4 +EVENT_NAME_8=task2_inst_5 +EVENT_NAME_9=task2_inst_6 EVENT_MULTISAMPLES_0=0 EVENT_MULTISAMPLES_1=0 @@ -3266,7 +3266,7 @@ PACKET_CTR=0 -HOST=192.168.0.83 +HOST=172.19.11.24 PORT=5555 LOCAL_PORT=9999 TRANSPORT_LAYER_PROTOCOL=1 @@ -3379,7 +3379,7 @@ EVENT_SAMPLE_UNIT_10=3 EVENT_MODE_10=4 EVENT_PRIO_10=0 EVENT_MAX_DAQ_LIST_10=255 -EVENT_NAME_10=task2_inst_8 +EVENT_NAME_10=task2_inst_7 EVENT_MULTISAMPLES_10=0 EVENT_MIN_CYCLE_TIME_CYCLE_10=0 EVENT_MIN_CYCLE_TIME_UNIT_10=9 @@ -3390,7 +3390,7 @@ EVENT_SAMPLE_UNIT_11=3 EVENT_MODE_11=4 EVENT_PRIO_11=0 EVENT_MAX_DAQ_LIST_11=255 -EVENT_NAME_11=task2_inst_9 +EVENT_NAME_11=task2_inst_8 EVENT_MULTISAMPLES_11=0 EVENT_MIN_CYCLE_TIME_CYCLE_11=0 EVENT_MIN_CYCLE_TIME_UNIT_11=9 @@ -3407,18 +3407,18 @@ EVENT_SAMPLE_UNIT_12=3 EVENT_MODE_12=4 EVENT_PRIO_12=0 EVENT_MAX_DAQ_LIST_12=255 -EVENT_NAME_12=task2_static +EVENT_NAME_12=task2_inst_9 EVENT_MULTISAMPLES_12=0 EVENT_MIN_CYCLE_TIME_CYCLE_12=0 EVENT_MIN_CYCLE_TIME_UNIT_12=9 EVENT_DPM_SUPPORTED_12=0 -EVENT_CHANNEL_13=0x000A -EVENT_CYCLE_13=15 +EVENT_CHANNEL_13=0x000D +EVENT_CYCLE_13=0 EVENT_SAMPLE_UNIT_13=3 EVENT_MODE_13=4 EVENT_PRIO_13=0 EVENT_MAX_DAQ_LIST_13=255 -EVENT_NAME_13=mainloop_10 +EVENT_NAME_13=task2_static EVENT_MULTISAMPLES_13=0 EVENT_MIN_CYCLE_TIME_CYCLE_13=0 EVENT_MIN_CYCLE_TIME_UNIT_13=9 @@ -5007,10 +5007,10 @@ COUNT=5 [DlgCommentWrapper] ScreenDPIinSection=192 -WindowLeft=2277 -WindowLeft_dpi96=1139 -WindowTop=1241 -WindowTop_dpi96=621 +WindowLeft=2106 +WindowLeft_dpi96=1053 +WindowTop=691 +WindowTop_dpi96=346 WindowWidth=1350 WindowWidth_dpi96=675 WindowHeight=923 @@ -5130,10 +5130,10 @@ HEIGHT=1 [DlgMdfComment] ScreenDPIinSection=192 -WindowLeft=2290 -WindowLeft_dpi96=1145 -WindowTop=1299 -WindowTop_dpi96=650 +WindowLeft=2119 +WindowLeft_dpi96=1060 +WindowTop=749 +WindowTop_dpi96=375 WindowWidth=1324 WindowWidth_dpi96=662 WindowHeight=786 @@ -5278,203 +5278,6 @@ SortUpward=1 [xcp_lite_ECDMVariants] ECDM_DEVICE=0 -[MEASUREMENT_DISPLAY_SELECT] -ScreenDPIinSection=192 -POSX=574 -POSX_dpi96=287 -POSY=524 -POSY_dpi96=262 -SIZEX=1874 -SIZEX_dpi96=937 -SIZEY=1554 -SIZEY_dpi96=777 -SHOWTOOLBAR=1 -SHOWSTATUSBAR=1 -SHOWGRID=0 -RIGHTPANE2HEIGHT=2 -RIGHTPANE2HEIGHT_dpi96=1 -TREEX=380 -TREEX_dpi96=190 -TREEY=1363 -TREEY_dpi96=682 -ACTIVEPANE=0 -SELECTED_TREENODE=Messsignale -FIRSTVISIBLE_TREENODE=Messoptionen -TREEEXPAND_COUNT=1 -TREEEXPAND_0=Messsignale -LAST_FOCUSED_LISTCOLUMN=0 -LAST_FOCUSED_LISTINDEX=10 -LAST_TOP_LISTINDEX=0 -DAQLISTS=2 -STATUSBAR_BYTES=1 -DIALOGFILEEXTEXPORT=vsf -LABELLISTMEAMODE=0 -LABELLISTBUSSIGNALMODE=0 -TEXT_SEARCH=counter -VXIIColumnsAdded=0 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_CUSTOM] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_KEY] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=196608 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM_DEVICE] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 -VERSION=100 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_NORMAL] -ScreenDPIinSection=192 -ColumnCount=7 -Column_0=65542, 66 -Column_0_dpi96=65542, 33 -Column_1=34, 124 -Column_1_dpi96=34, 62 -Column_2=31, 306 -Column_2_dpi96=31, 153 -Column_3=65540, 298 -Column_3_dpi96=65540, 149 -Column_4=65541, 140 -Column_4_dpi96=65541, 70 -Column_5=1, 180 -Column_5_dpi96=1, 90 -Column_6=98305, 160 -Column_6_dpi96=98305, 80 -ColumnIdSort=65540 -SortUpward=1 -VERSION=100 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 -VERSION=100 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER_BUSLOGGING] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDERS] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_SOUNDS] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ACTIVE_SIGNALS] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ALL_SIGNALS] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_VIO] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY_SELECT_DYNAMIC_COLUMNS] -Count=0 - -[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] -ScreenDPIinSection=192 -ColumnCount=4 -Column_0=0, 306 -Column_0_dpi96=0, 153 -Column_1=1245185, 132 -Column_1_dpi96=1245185, 66 -Column_2=1245186, 66 -Column_2_dpi96=1245186, 33 -Column_3=1245187, 106 -Column_3_dpi96=1245187, 53 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_DEVICES] -ScreenDPIinSection=192 -ColumnCount=10 -Column_0=34, 64 -Column_0_dpi96=34, 32 -Column_1=0, 172 -Column_1_dpi96=0, 86 -Column_2=131078, 104 -Column_2_dpi96=131078, 52 -Column_3=131103, 98 -Column_3_dpi96=131103, 49 -Column_4=131079, 178 -Column_4_dpi96=131079, 89 -Column_5=262145, 298 -Column_5_dpi96=262145, 149 -Column_6=131085, 248 -Column_6_dpi96=131085, 124 -Column_7=131080, 160 -Column_7_dpi96=131080, 80 -Column_8=131081, 180 -Column_8_dpi96=131081, 90 -Column_9=196609, 192 -Column_9_dpi96=196609, 96 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] -ScreenDPIinSection=192 -ColumnCount=6 -Column_0=34, 64 -Column_0_dpi96=34, 32 -Column_1=0, 304 -Column_1_dpi96=0, 152 -Column_2=983041, 192 -Column_2_dpi96=983041, 96 -Column_3=983042, 530 -Column_3_dpi96=983042, 265 -Column_4=983043, 252 -Column_4_dpi96=983043, 126 -Column_5=983044, 300 -Column_5_dpi96=983044, 150 -ColumnIdSort=-1 -SortUpward=1 - [test_ECDMVariants] ECDM_DEVICE=0 @@ -5630,6 +5433,64 @@ MODE=12 VALUE_COUNT=0 HISTORY_COUNT=0 +[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] +ScreenDPIinSection=192 +ColumnCount=4 +Column_0=0, 306 +Column_0_dpi96=0, 153 +Column_1=1245185, 132 +Column_1_dpi96=1245185, 66 +Column_2=1245186, 66 +Column_2_dpi96=1245186, 33 +Column_3=1245187, 106 +Column_3_dpi96=1245187, 53 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +ScreenDPIinSection=192 +ColumnCount=10 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 172 +Column_1_dpi96=0, 86 +Column_2=131078, 104 +Column_2_dpi96=131078, 52 +Column_3=131103, 98 +Column_3_dpi96=131103, 49 +Column_4=131079, 178 +Column_4_dpi96=131079, 89 +Column_5=262145, 298 +Column_5_dpi96=262145, 149 +Column_6=131085, 248 +Column_6_dpi96=131085, 124 +Column_7=131080, 160 +Column_7_dpi96=131080, 80 +Column_8=131081, 180 +Column_8_dpi96=131081, 90 +Column_9=196609, 192 +Column_9_dpi96=196609, 96 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 304 +Column_1_dpi96=0, 152 +Column_2=983041, 192 +Column_2_dpi96=983041, 96 +Column_3=983042, 530 +Column_3_dpi96=983042, 265 +Column_4=983043, 252 +Column_4_dpi96=983043, 126 +Column_5=983044, 300 +Column_5_dpi96=983044, 150 +ColumnIdSort=-1 +SortUpward=1 + [MEASUREMENT_DISPLAY] ScreenDPIinSection=192 POSX=112 @@ -5659,7 +5520,7 @@ TREEEXPAND_2=Rekorderliste TREEEXPAND_3=Ereignisliste TREEEXPAND_4=Tara LAST_FOCUSED_LISTCOLUMN=0 -LAST_FOCUSED_LISTINDEX=16 +LAST_FOCUSED_LISTINDEX=1 LAST_TOP_LISTINDEX=0 DAQLISTS=2 STATUSBAR_BYTES=1 @@ -5822,6 +5683,145 @@ SortUpward=1 [MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] Count=0 +[MEASUREMENT_DISPLAY_SELECT] +ScreenDPIinSection=192 +POSX=574 +POSX_dpi96=287 +POSY=524 +POSY_dpi96=262 +SIZEX=1874 +SIZEX_dpi96=937 +SIZEY=1554 +SIZEY_dpi96=777 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=2 +RIGHTPANE2HEIGHT_dpi96=1 +TREEX=380 +TREEX_dpi96=190 +TREEY=1363 +TREEY_dpi96=682 +ACTIVEPANE=1 +SELECTED_TREENODE=Messsignale +FIRSTVISIBLE_TREENODE=Messoptionen +TREEEXPAND_COUNT=1 +TREEEXPAND_0=Messsignale +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=1 +LAST_TOP_LISTINDEX=0 +DAQLISTS=2 +STATUSBAR_BYTES=1 +DIALOGFILEEXTEXPORT=vsf +LABELLISTMEAMODE=0 +LABELLISTBUSSIGNALMODE=0 +TEXT_SEARCH=counter +VXIIColumnsAdded=0 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_CUSTOM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_KEY] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=196608 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_NORMAL] +ScreenDPIinSection=192 +ColumnCount=7 +Column_0=65542, 66 +Column_0_dpi96=65542, 33 +Column_1=34, 124 +Column_1_dpi96=34, 62 +Column_2=31, 306 +Column_2_dpi96=31, 153 +Column_3=65540, 298 +Column_3_dpi96=65540, 149 +Column_4=65541, 140 +Column_4_dpi96=65541, 70 +Column_5=1, 180 +Column_5_dpi96=1, 90 +Column_6=98305, 160 +Column_6_dpi96=98305, 80 +ColumnIdSort=65540 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER_BUSLOGGING] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDERS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_SOUNDS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ACTIVE_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ALL_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_VIO] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_DYNAMIC_COLUMNS] +Count=0 + [POSTPROCESS_OPTIONS] POSTPROC_MODE=0 @@ -5829,5 +5829,5 @@ POSTPROC_MODE=0 Count=0 [~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] -GUID={3E32ADB4-C84B-4412-BCFC-7390AA77D052} +GUID={6A00AF01-208D-4111-9320-BADA8CEFEBBF} diff --git a/CANape/XCPlite.cna b/CANape/XCPlite.cna index 5220c59..ba36270 100644 --- a/CANape/XCPlite.cna +++ b/CANape/XCPlite.cna @@ -10,8 +10,8 @@ PrgDate=08.07.2024 Description= CreationTime=23:25 CreationDate=04/18/2021 ; Month/Day/Year -ModificationTime=14:38 -ModificationDate=07/29/2024 ; Month/Day/Year +ModificationTime=12:39 +ModificationDate=07/31/2024 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -261,7 +261,7 @@ OptionCSVListSeparator=0 OptionCSVExport=0 OptionMARMFExport=0 OptionMARMFExtended=0 -OptionSuppressCASLRuntimeErrors=0 +OptionSuppressCASLRuntimeErrors=1 FromTime=-1 FromActive=0 FromTimePartActive=0 @@ -333,7 +333,7 @@ COUNT=5 5=} [FUNCTION_OBJECT_1] -Number=16 +Number=17 Unit= Components=0 TimeSeriesSaveMode=0 @@ -362,7 +362,7 @@ DisplayCount=2 [FUNCTION_OBJECT_1_DISPLAY_1] Window=8 -Index=7 +Index=8 Color=65535 ApplyColorToBackground=0 ColorFunction=0 @@ -386,7 +386,7 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=1 +StoredFocused=0 SublMask=1 MeaSublMask=0 LockScaling=0 @@ -465,7 +465,7 @@ IsParameterFunctionResult=0 Module=xcp_lite [FUNCTION_OBJECT_2] -Number=17 +Number=18 Unit= Components=0 TimeSeriesSaveMode=0 @@ -540,7 +540,7 @@ GUID=DISPLAY_d65eb017-2a7e-497a-8a3d-06ecb8376e2b [FUNCTION_OBJECT_2_DISPLAY_2] Window=8 -Index=6 +Index=7 Color=255 ApplyColorToBackground=0 ColorFunction=0 @@ -597,7 +597,7 @@ IsParameterFunctionResult=0 Module=xcp_lite [FUNCTION_OBJECT_3] -Number=18 +Number=19 Unit= Components=0 TimeSeriesSaveMode=0 @@ -672,7 +672,7 @@ GUID=DISPLAY_3e67d534-875c-447a-afa4-04fbf002c84b [FUNCTION_OBJECT_3_DISPLAY_2] Window=8 -Index=8 +Index=9 Color=16711935 ApplyColorToBackground=0 ColorFunction=0 @@ -751,7 +751,7 @@ SubConfigsCount=0 Count=0 [MEASUREMENT_LIST] -Count=17 +Count=18 OfflineFileCount=0 MeaCfgLabellistName= @@ -771,7 +771,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_10] Module=xcp_lite -Name=channel_3 +Name=channel_2 Disabled=0 Mode=2147483653 Rate=0 @@ -785,6 +785,66 @@ DisplayCount=1 [MEASUREMENT_OBJECT_10_DISPLAY_1] Window=3 +Index=7 +Color=21930 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-200 +YMaxHome=200 +YMin=-200 +YMax=200 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=2 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=2 +AxisTemplate= +GUID=DISPLAY_6bfc8c70-8ddc-4676-a754-45ecb1957527 + +[MEASUREMENT_OBJECT_11] +Module=xcp_lite +Name=channel_3 +Disabled=0 +Mode=2147483654 +Rate=0 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Rekorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_11_DISPLAY_1] +Window=3 Index=6 Color=11184895 ApplyColorToBackground=0 @@ -829,11 +889,11 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_af726eb9-3178-4dfe-afce-87f52937a058 -[MEASUREMENT_OBJECT_11] +[MEASUREMENT_OBJECT_12] Module=xcp_lite Name=channel_4 Disabled=0 -Mode=2147483654 +Mode=2147483655 Rate=0 Row=0 Column=0 @@ -843,7 +903,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_11_DISPLAY_1] +[MEASUREMENT_OBJECT_12_DISPLAY_1] Window=3 Index=5 Color=43520 @@ -889,11 +949,11 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_f8838ae2-d42d-4254-b1ef-0e4d00235ec5 -[MEASUREMENT_OBJECT_12] +[MEASUREMENT_OBJECT_13] Module=xcp_lite Name=channel_5 Disabled=0 -Mode=2147483655 +Mode=2147483656 Rate=0 Row=0 Column=0 @@ -903,7 +963,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_12_DISPLAY_1] +[MEASUREMENT_OBJECT_13_DISPLAY_1] Window=3 Index=4 Color=43690 @@ -949,11 +1009,11 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_5316f15e-cd29-4a81-8d23-b63301664eab -[MEASUREMENT_OBJECT_13] +[MEASUREMENT_OBJECT_14] Module=xcp_lite Name=channel_6 Disabled=0 -Mode=2147483656 +Mode=2147483657 Rate=0 Row=0 Column=0 @@ -963,7 +1023,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_13_DISPLAY_1] +[MEASUREMENT_OBJECT_14_DISPLAY_1] Window=3 Index=3 Color=33023 @@ -1009,11 +1069,11 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_b5933642-3201-41ea-8349-98fce39bdcf3 -[MEASUREMENT_OBJECT_14] +[MEASUREMENT_OBJECT_15] Module=xcp_lite Name=channel_7 Disabled=0 -Mode=2147483657 +Mode=2147483658 Rate=0 Row=0 Column=0 @@ -1023,7 +1083,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_14_DISPLAY_1] +[MEASUREMENT_OBJECT_15_DISPLAY_1] Window=3 Index=2 Color=65450 @@ -1069,11 +1129,11 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_f9d8418b-5fe5-4380-8f3e-f194517da47f -[MEASUREMENT_OBJECT_15] +[MEASUREMENT_OBJECT_16] Module=xcp_lite Name=channel_8 Disabled=0 -Mode=2147483658 +Mode=2147483659 Rate=0 Row=0 Column=0 @@ -1083,7 +1143,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_15_DISPLAY_1] +[MEASUREMENT_OBJECT_16_DISPLAY_1] Window=3 Index=1 Color=16776960 @@ -1129,11 +1189,11 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_a264452d-a480-42f5-8b83-1b20a7180a17 -[MEASUREMENT_OBJECT_16] +[MEASUREMENT_OBJECT_17] Module=xcp_lite Name=channel_9 Disabled=0 -Mode=2147483659 +Mode=2147483660 Rate=0 Row=0 Column=0 @@ -1143,7 +1203,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_16_DISPLAY_1] +[MEASUREMENT_OBJECT_17_DISPLAY_1] Window=3 Index=0 Color=11162965 @@ -1189,12 +1249,12 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_38e26b38-ea9f-464e-95df-39d45a9aef6d -[MEASUREMENT_OBJECT_17] +[MEASUREMENT_OBJECT_18] Components=0 Module=xcp_lite Name=$point_cloud$ Disabled=1 -Mode=2147483650 +Mode=2147483651 Rate=0 Row=0 Column=0 @@ -1206,7 +1266,7 @@ DisplayCount=0 [MEASUREMENT_OBJECT_1_DISPLAY_1] Window=8 -Index=5 +Index=1 Color=33023 ApplyColorToBackground=0 ColorFunction=0 @@ -1252,7 +1312,7 @@ GUID=DISPLAY_a4718064-71a8-43ab-a26d-7b0b56d07687 [MEASUREMENT_OBJECT_2] Module=xcp_lite -Name=counter +Name=mainloop_counter2 Disabled=0 Mode=2147483649 Rate=0 @@ -1262,11 +1322,71 @@ MeaReferenced=1 ArchivBy_1=Rekorder IsFallback=0 HasManagedDisplay=0 -DisplayCount=2 +DisplayCount=1 [MEASUREMENT_OBJECT_2_DISPLAY_1] Window=8 -Index=4 +Index=0 +Color=16744576 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_63b3c865-c9d8-4f5f-ad70-00899dc935c0 + +[MEASUREMENT_OBJECT_3] +Module=xcp_lite +Name=counter +Disabled=0 +Mode=2147483650 +Rate=0 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Rekorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_3_DISPLAY_1] +Window=8 +Index=6 Color=16744448 ApplyColorToBackground=0 ColorFunction=0 @@ -1310,7 +1430,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_3816e7cb-d393-4245-8621-60d726ebcfe4 -[MEASUREMENT_OBJECT_2_DISPLAY_2] +[MEASUREMENT_OBJECT_3_DISPLAY_2] Window=3 Index=9 Color=16744448 @@ -1356,11 +1476,11 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_2561bed0-8ac6-4731-a9eb-c3f475b324d8 -[MEASUREMENT_OBJECT_3] +[MEASUREMENT_OBJECT_4] Module=xcp_lite Name=counter_u64 Disabled=0 -Mode=2147483649 +Mode=2147483650 Rate=0 Row=0 Column=0 @@ -1370,9 +1490,9 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_3_DISPLAY_1] +[MEASUREMENT_OBJECT_4_DISPLAY_1] Window=8 -Index=3 +Index=5 Color=65280 ApplyColorToBackground=0 ColorFunction=0 @@ -1416,11 +1536,11 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_7691d3bd-bcba-416d-8b8d-dd26b2a5fc34 -[MEASUREMENT_OBJECT_4] +[MEASUREMENT_OBJECT_5] Module=xcp_lite Name=counter_u32 Disabled=0 -Mode=2147483649 +Mode=2147483650 Rate=0 Row=0 Column=0 @@ -1430,9 +1550,9 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_4_DISPLAY_1] +[MEASUREMENT_OBJECT_5_DISPLAY_1] Window=8 -Index=2 +Index=4 Color=255 ApplyColorToBackground=0 ColorFunction=0 @@ -1476,11 +1596,11 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_ed075cff-161d-441e-ab13-ef70dd70101d -[MEASUREMENT_OBJECT_5] +[MEASUREMENT_OBJECT_6] Module=xcp_lite Name=counter_u16 Disabled=0 -Mode=2147483649 +Mode=2147483650 Rate=0 Row=0 Column=0 @@ -1490,9 +1610,9 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_5_DISPLAY_1] +[MEASUREMENT_OBJECT_6_DISPLAY_1] Window=8 -Index=1 +Index=3 Color=16776960 ApplyColorToBackground=0 ColorFunction=0 @@ -1536,11 +1656,11 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_661e9d67-6e45-4854-9267-1189c1069d03 -[MEASUREMENT_OBJECT_6] +[MEASUREMENT_OBJECT_7] Module=xcp_lite Name=counter_u8 Disabled=0 -Mode=2147483649 +Mode=2147483650 Rate=0 Row=0 Column=0 @@ -1550,9 +1670,9 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_6_DISPLAY_1] +[MEASUREMENT_OBJECT_7_DISPLAY_1] Window=8 -Index=0 +Index=2 Color=16711935 ApplyColorToBackground=0 ColorFunction=0 @@ -1576,7 +1696,7 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=0 +StoredFocused=1 SublMask=1 MeaSublMask=0 LockScaling=0 @@ -1596,11 +1716,11 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_8ec39fbe-4cfc-405b-84f1-1beb1b99ea53 -[MEASUREMENT_OBJECT_7] +[MEASUREMENT_OBJECT_8] Module=xcp_lite Name=array1 Disabled=1 -Mode=2147483649 +Mode=2147483650 Rate=0 Row=0 Column=0 @@ -1616,11 +1736,11 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=0 -[MEASUREMENT_OBJECT_8] +[MEASUREMENT_OBJECT_9] Module=xcp_lite Name=channel_1 Disabled=0 -Mode=2147483651 +Mode=2147483652 Rate=0 Row=0 Column=0 @@ -1630,7 +1750,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_8_DISPLAY_1] +[MEASUREMENT_OBJECT_9_DISPLAY_1] Window=3 Index=8 Color=255 @@ -1676,66 +1796,6 @@ YAxis_ID=2 AxisTemplate= GUID=DISPLAY_b65281b1-6d89-431f-848c-ff4f029b7ddf -[MEASUREMENT_OBJECT_9] -Module=xcp_lite -Name=channel_2 -Disabled=0 -Mode=2147483652 -Rate=0 -Row=0 -Column=0 -MeaReferenced=1 -ArchivBy_1=Rekorder -IsFallback=0 -HasManagedDisplay=0 -DisplayCount=1 - -[MEASUREMENT_OBJECT_9_DISPLAY_1] -Window=3 -Index=7 -Color=21930 -ApplyColorToBackground=0 -ColorFunction=0 -ColorFunctionScope=1 -LineTyp=2 -YMinHome=-200 -YMaxHome=200 -YMin=-200 -YMax=200 -XOffsetNS=0 -XOffset=0 -ValueFormat=3 -BitMask=1 -ShowYAxis=1 -Width=10 -LineStyle=1 -MarkerType=1 -SRMainValue=0 -InvalidValueDrawMode=3 -LineWidth=2 -Precision=-2 -Digits=6 -Enabled=1 -StoredFocused=0 -SublMask=1 -MeaSublMask=3 -LockScaling=0 -RightAxis=0 -MapMode=2 -OverlayGridColor=0 -ShadingMode=3 -EditOffset=1 -EditFactor=2 -WAxisLabel= -XAxisLabel= -YAxisLabel= -AxisCaption= -Row=0 -Col=0 -YAxis_ID=2 -AxisTemplate= -GUID=DISPLAY_6bfc8c70-8ddc-4676-a754-45ecb1957527 - [MEASUREMENT_OPTIONS] RemainingRecordingTime=5000 StopMeasurementOnRecorderStopped=0 @@ -1814,7 +1874,7 @@ GlobalCursorTimeNs=0 GlobalTimeAxis=1 GlobalTimeAxisStartTime=0 GlobalTimeAxisEndTime=34366622088 -MainWindowPos=1, 1030, 18, 3502, 2069 ;cmd, x, y, w, h +MainWindowPos=1, 1030, 68, 3502, 2069 ;cmd, x, y, w, h [PAR_COMMENT] 1="Name","" @@ -4287,7 +4347,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9ceb89e6-e86a-43ef-8365-42987ca2f460 +GUID=DISPLAY_3a251c06-01c7-4146-a312-cfe3c7327f36 [WINDOW_5_OBJECT_10] Type=2 @@ -4336,7 +4396,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_322e6750-5a76-4eb3-a41b-92b7acdcca1c +GUID=DISPLAY_4ebb170f-8cab-4cd9-8f43-4233f4d1bbe2 [WINDOW_5_OBJECT_11] Type=2 @@ -4385,7 +4445,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_eaf178de-7f13-4eb0-b006-74babc8847f8 +GUID=DISPLAY_25e07f2e-457c-43e7-995e-15f7009b527b [WINDOW_5_OBJECT_12] Type=2 @@ -4434,7 +4494,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_aecad35c-fe76-40e0-b61d-31bfdd877156 +GUID=DISPLAY_b911ea2b-9e19-433c-99ce-6847b77d72e0 [WINDOW_5_OBJECT_13] Type=2 @@ -4483,7 +4543,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c4f47b5c-928e-42fa-8aaa-28580475dca4 +GUID=DISPLAY_956ac468-e774-4159-8398-581dac4dcb25 [WINDOW_5_OBJECT_14] Type=2 @@ -4532,7 +4592,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fbdadd16-72db-4391-b7d6-2d648d500f4d +GUID=DISPLAY_97c96f7a-9e7c-4c69-a433-26f9738dfb96 [WINDOW_5_OBJECT_15] Type=2 @@ -4581,7 +4641,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5cbd1eaf-51e7-498a-a192-dfd661b60b44 +GUID=DISPLAY_80d70cc9-6963-4213-ab03-53131095e8fe [WINDOW_5_OBJECT_16] Type=2 @@ -4630,7 +4690,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8ef081e5-30ed-43ef-8e64-3339d1f45e05 +GUID=DISPLAY_4c3f63b1-54f4-45e0-9d2f-ed038c0cee44 [WINDOW_5_OBJECT_2] Type=2 @@ -4679,7 +4739,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6339cbb5-14f2-42e1-a2bd-4f8d3f73b959 +GUID=DISPLAY_68707be8-01e2-48e6-ac73-179618a5018a [WINDOW_5_OBJECT_3] Type=2 @@ -4728,7 +4788,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fb9388f3-836b-41e4-b803-a0b7ee4d7f4f +GUID=DISPLAY_979bbde8-663e-43e1-b9ea-dafcf81ae21d [WINDOW_5_OBJECT_4] Type=2 @@ -4777,7 +4837,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b5b671ed-0021-418c-8488-2254fe2bc44f +GUID=DISPLAY_1c0c1cb1-a571-4e9c-a01b-f8017e6d613b [WINDOW_5_OBJECT_5] Type=2 @@ -4826,7 +4886,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_acde4758-3a4c-4333-8acb-88365bafbe4b +GUID=DISPLAY_54abeccf-c19d-4337-abfa-4e4897a23dfa [WINDOW_5_OBJECT_6] Type=2 @@ -4875,7 +4935,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ec6419a5-5cf6-4fa3-a386-990f00076bd7 +GUID=DISPLAY_85f4276e-6b94-4f5a-83ab-609aa2d593cd [WINDOW_5_OBJECT_7] Type=2 @@ -4924,7 +4984,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_197c8deb-a846-492f-bc8f-46e92fc1cd6d +GUID=DISPLAY_e970e771-6c1c-491d-a8b2-1e3cf32fa9fa [WINDOW_5_OBJECT_8] Type=2 @@ -4973,7 +5033,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6190ec4d-fd59-4a06-981a-4cb40f9dbe70 +GUID=DISPLAY_289beb2a-15e2-4c7c-825f-9039d42842a7 [WINDOW_5_OBJECT_9] Type=2 @@ -5022,7 +5082,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0d151f66-5599-4ccb-bae6-4417b5599474 +GUID=DISPLAY_e0b7e0d3-0060-47e4-a692-b01ec4e28b11 [WINDOW_6] ProgID=CNPTRACE.TraceCtrl.1 diff --git a/CANape/XCPlite.cnaxml b/CANape/XCPlite.cnaxml index af3367f..cbd3455 100644 --- a/CANape/XCPlite.cnaxml +++ b/CANape/XCPlite.cnaxml @@ -201,7 +201,7 @@ false false false - 516,179.5 + 516,204.5 \ No newline at end of file diff --git a/CANape/xcp_lite_autodetect.a2l b/CANape/xcp_lite_autodetect.a2l index ccc0cdf..5499a63 100644 --- a/CANape/xcp_lite_autodetect.a2l +++ b/CANape/xcp_lite_autodetect.a2l @@ -130,28 +130,29 @@ OPTIONAL_LEVEL1_CMD GET_VERSION /end PROTOCOL_LAYER /begin DAQ - DYNAMIC 0 13 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID + DYNAMIC 0 14 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID /begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED /begin EVENT "mainloop" "mainloop" 0 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task1" "task1" 1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task1_points" "task1_po" 2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_1" "task2_in" 3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_2" "task2_in" 4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_3" "task2_in" 5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_4" "task2_in" 6 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_5" "task2_in" 7 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_6" "task2_in" 8 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_7" "task2_in" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_8" "task2_in" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_9" "task2_in" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_static" "task2_st" 12 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "mainloop_counter2" "mainloop" 1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task1" "task1" 2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task1_points" "task1_po" 3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_1" "task2_in" 4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_2" "task2_in" 5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_3" "task2_in" 6 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_4" "task2_in" 7 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_5" "task2_in" 8 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_6" "task2_in" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_7" "task2_in" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_8" "task2_in" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_9" "task2_in" 12 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_static" "task2_st" 13 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /end DAQ -/begin XCP_ON_UDP_IP 0x104 5555 ADDRESS "192.168.0.83" /end XCP_ON_UDP_IP +/begin XCP_ON_UDP_IP 0x104 5555 ADDRESS "172.19.11.24" /end XCP_ON_UDP_IP /end IF_DATA @@ -202,35 +203,35 @@ CalPage2.ampl CalPage2.period /end REF_CHARACTERISTIC /end GROUP -/begin MEASUREMENT array1 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1000000000000 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x1F7F4 ECU_ADDRESS_EXTENSION 2 MATRIX_DIM 256 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT array1 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1000000000000 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x2F7F4 ECU_ADDRESS_EXTENSION 2 MATRIX_DIM 256 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel "sine: f64" FLOAT64_IEEE channel.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xC0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel "sine: f64" FLOAT64_IEEE channel.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xD0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 13 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_1.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_1 "sine: f64" FLOAT64_IEEE channel_1.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x30000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_1 "sine: f64" FLOAT64_IEEE channel_1.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x40000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 4 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_2.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_2 "sine: f64" FLOAT64_IEEE channel_2.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x40000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 4 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_2 "sine: f64" FLOAT64_IEEE channel_2.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x50000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 5 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_3.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_3 "sine: f64" FLOAT64_IEEE channel_3.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x50000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 5 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_3 "sine: f64" FLOAT64_IEEE channel_3.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x60000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 6 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_4.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_4 "sine: f64" FLOAT64_IEEE channel_4.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x60000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 6 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_4 "sine: f64" FLOAT64_IEEE channel_4.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x70000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_5.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_5 "sine: f64" FLOAT64_IEEE channel_5.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x70000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_5 "sine: f64" FLOAT64_IEEE channel_5.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x80000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_6.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_6 "sine: f64" FLOAT64_IEEE channel_6.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x80000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_6 "sine: f64" FLOAT64_IEEE channel_6.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x90000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_7.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_7 "sine: f64" FLOAT64_IEEE channel_7.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x90000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_7 "sine: f64" FLOAT64_IEEE channel_7.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xA0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_8.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_8 "sine: f64" FLOAT64_IEEE channel_8.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xA0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_8 "sine: f64" FLOAT64_IEEE channel_8.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xB0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_9.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_9 "sine: f64" FLOAT64_IEEE channel_9.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xB0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x1F7E0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u16 "wrapping counter: u16" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x1F7E6 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u32 "wrapping counter: u32" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x1F7E8 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u64 "wrapping counter: u64" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x1F7EC ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u8 "wrapping counter: u8" UBYTE NO_COMPU_METHOD 0 0 0 255 PHYS_UNIT "" ECU_ADDRESS 0x1F7E5 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_9 "sine: f64" FLOAT64_IEEE channel_9.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xC0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x2F7E0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u16 "wrapping counter: u16" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x2F7E6 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u32 "wrapping counter: u32" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x2F7E8 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u64 "wrapping counter: u64" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x2F7EC ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u8 "wrapping counter: u8" UBYTE NO_COMPU_METHOD 0 0 0 255 PHYS_UNIT "" ECU_ADDRESS 0x2F7E5 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin MEASUREMENT mainloop_counter "counter on stack" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0xFFF0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT mainloop_counter2 "counter on heap" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin CHARACTERISTIC point_cloud "struct serializer demo" ASCII 0x20000 U8 0 NO_COMPU_METHOD 0 255 READ_ONLY NUMBER 64 ECU_ADDRESS_EXTENSION 2 +/begin MEASUREMENT mainloop_counter2 "counter on heap" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x10000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin CHARACTERISTIC point_cloud "struct serializer demo" ASCII 0x30000 U8 0 NO_COMPU_METHOD 0 255 READ_ONLY NUMBER 64 ECU_ADDRESS_EXTENSION 2 /begin ANNOTATION ANNOTATION_LABEL "ObjectDescription" ANNOTATION_ORIGIN "application/dds" /begin ANNOTATION_TEXT " " "Vector::PointCloud" @@ -247,9 +248,11 @@ CalPage2.period /end ANNOTATION_TEXT /end ANNOTATION /begin ANNOTATION ANNOTATION_LABEL "IsVlsd" ANNOTATION_ORIGIN "" /begin ANNOTATION_TEXT "true" /end ANNOTATION_TEXT /end ANNOTATION /begin ANNOTATION ANNOTATION_LABEL "MaxBufferNeeded" ANNOTATION_ORIGIN "" /begin ANNOTATION_TEXT "64" /end ANNOTATION_TEXT /end ANNOTATION - /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end CHARACTERISTIC + /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end CHARACTERISTIC /begin GROUP mainloop "" /begin REF_MEASUREMENT mainloop_counter +/end REF_MEASUREMENT /end GROUP +/begin GROUP mainloop_counter2 "" /begin REF_MEASUREMENT mainloop_counter2 /end REF_MEASUREMENT /end GROUP /begin GROUP task1 "" /begin REF_MEASUREMENT @@ -263,31 +266,15 @@ counter_u8 /begin GROUP task1_points "" /begin REF_MEASUREMENT point_cloud /end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_1 "" /begin REF_MEASUREMENT +/begin GROUP task2_inst "" /begin REF_MEASUREMENT channel_1 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_2 "" /begin REF_MEASUREMENT channel_2 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_3 "" /begin REF_MEASUREMENT channel_3 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_4 "" /begin REF_MEASUREMENT channel_4 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_5 "" /begin REF_MEASUREMENT channel_5 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_6 "" /begin REF_MEASUREMENT channel_6 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_7 "" /begin REF_MEASUREMENT channel_7 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_8 "" /begin REF_MEASUREMENT channel_8 -/end REF_MEASUREMENT /end GROUP -/begin GROUP task2_inst_9 "" /begin REF_MEASUREMENT channel_9 /end REF_MEASUREMENT /end GROUP /begin GROUP task2_static "" /begin REF_MEASUREMENT diff --git a/build.rs b/build.rs index e0fa5a4..f33a2ce 100644 --- a/build.rs +++ b/build.rs @@ -15,6 +15,7 @@ fn main() { // // // .blocklist_type("T_CLOCK_INFO") // .allowlist_function("XcpInit") + // .allowlist_function("XcpEvent") // .allowlist_function("XcpEventExt") // .allowlist_function("XcpPrint") // .allowlist_function("XcpEthServerInit") @@ -22,6 +23,7 @@ fn main() { // .allowlist_function("XcpEthServerStatus") // .allowlist_function("ApplXcpSetLogLevel") // .allowlist_function("ApplXcpSetA2lName") + // .allowlist_function("ApplXcpGetAddr") // .allowlist_function("ApplXcpRegisterCallbacks") // // // .generate() diff --git a/examples/rayon_demo/CANape/.gitignore b/examples/rayon_demo/CANape/.gitignore index 471c630..5bc665f 100644 --- a/examples/rayon_demo/CANape/.gitignore +++ b/examples/rayon_demo/CANape/.gitignore @@ -1 +1,2 @@ /tokio_demo.HEX +/FLASH_tokio_demo.HEX diff --git a/examples/rayon_demo/CANape/CANape.ini b/examples/rayon_demo/CANape/CANape.ini index 0c47dd4..ac86d54 100644 --- a/examples/rayon_demo/CANape/CANape.ini +++ b/examples/rayon_demo/CANape/CANape.ini @@ -6,7 +6,7 @@ ;------------------------------------------------------------------------------- [!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] -GUID={E1E212EB-5105-46F9-B787-4FED32FFE2D6} +GUID={71300A12-E465-4BC5-8B0B-2029B8486CC6} [FILE_INFO] Identification=CANape-Project-File @@ -20,8 +20,8 @@ PrgDate=08.07.2024 Description= CreationTime=19:37 CreationDate=06/23/2024 ; Month/Day/Year -ModificationTime=22:10 -ModificationDate=07/30/2024 ; Month/Day/Year +ModificationTime=14:42 +ModificationDate=08/01/2024 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -379,6 +379,10 @@ SHOW_MIGRATION_DIALOG_PARAMETER_WINDOW=1 IMAGE_ANONYMIZATION=0 TID=1 MDF_WRITE_INVAL_BITS=1 +AlgorithmConfiguratioDialog_PortColumn_Configuration= +AlgorithmConfiguratioDialog_PortColumn_Configuration_dpi96= +REOPEN_FUNCTIONS_BROWSER=0 +SHOW_MESSAGE_BEFORE_CLOSE_FB_AT_MEASUREMENT=1 [WRITEWINDOW] @@ -394,7 +398,7 @@ MDF_WRITE_INVAL_BITS=1 ; 0x20 Show command messages (with a hand symbol) ; 0x1000 Suppress CASL runtime errors (ATTENTION: When true CASL runtime errors are suppressed, so that the errors are displayed with the default flags to not change the behaviour of existing projects.) ; As default all messages are shown -SHOW_MESSAGES=255 +SHOW_MESSAGES=4351 LOG=0 LOGFILE=WriteWindow_log.TXT LOG_OVERWRITE=0 @@ -1023,25 +1027,25 @@ ConfigurationJson={"RemoteServiceDataList":[{"DisplayName":"CANape Master","Ip": [DlgCommentWrapper] ScreenDPIinSection=192 -WindowLeft=1060 -WindowLeft_dpi96=530 -WindowTop=621 -WindowTop_dpi96=311 +WindowLeft=909 +WindowLeft_dpi96=455 +WindowTop=542 +WindowTop_dpi96=271 WindowWidth=1350 WindowWidth_dpi96=675 -WindowHeight=893 -WindowHeight_dpi96=447 +WindowHeight=923 +WindowHeight_dpi96=462 [DlgMdfComment] ScreenDPIinSection=192 -WindowLeft=1073 -WindowLeft_dpi96=537 -WindowTop=679 -WindowTop_dpi96=340 +WindowLeft=922 +WindowLeft_dpi96=461 +WindowTop=600 +WindowTop_dpi96=300 WindowWidth=1324 WindowWidth_dpi96=662 -WindowHeight=756 -WindowHeight_dpi96=378 +WindowHeight=786 +WindowHeight_dpi96=393 [DlgSaveConfigs] ScreenDPIinSection=192 @@ -1168,17 +1172,19 @@ HEIGHT=-24 COUNT=0 [FUNCTIONS] -COUNT=0 +COUNT=1 [MDF_FILE_COLLECTIONS] COUNT=0 +1="FILE1", "mandelbrot.mf4", "d29ea1e7-6f9c-43ea-b533-2791f7caf298" [MDF_FILES] COUNT=0 +1="FILE1", "mandelbrot.mf4" [MEASUREMENT_0] FileId=Measurement1 -MeasurementId=e42c9f6a-e752-471c-8c0e-09652e92ff93 +MeasurementId=8cde6f50-8fa6-404e-86d0-fd27248bdd45 MeasurementMapped=0 [MEASUREMENTS] @@ -1390,7 +1396,7 @@ BEG_CAL_SERVICE=0x0 END_CAL_SERVICE=0x0 TEST_CONNECTION_PERIOD=0 OVERRUN_HANDLING=0 -EVENT_COUNT=12 +EVENT_COUNT=13 EVENT_CHANNEL_0=0x0000 EVENT_CHANNEL_1=0x0001 EVENT_CHANNEL_2=0x0002 @@ -1488,7 +1494,7 @@ PSEUDO_CAN_ID_START=2415919104 DSP_MODE=0 DAQ_LIST_AUTODETECT=1 DAQ_COUNT=0 -DAQ_CONFIG_ID=3150 +DAQ_CONFIG_ID=3194 DAQ_START_STOP_ALL_DISABLED=0 INIT_CAL_PAGE_SEGMENTWISE=0 CALRAM_CHECK_INITIAL_PAGE=1 @@ -1601,7 +1607,7 @@ CHECKSUM_ENABLED=1 CHECKSUM_DLL_NAME= CHECKSUM_MAX_BLOCKSIZE=65535 ENABLE_CHECKSUM_OUTPUT=0 -CHECKSUM_TYPE_MAPPING_2=3 +CHECKSUM_TYPE_MAPPING_2=2 SELECT_CAL_PAGE=1 INIT_CAL_PAGE=0 RAM_PAGE_ID=0x0 @@ -1717,7 +1723,7 @@ EVENT_DPM_SUPPORTED_9=0 EVENT_DPM_SUPPORTED_10=0 MEMORY_SEGMENT_NAME_2=mandelbrot MEMORY_SEGMENT_TYPE_2=FLASH,DATA,INTERN -MEMORY_SEGMENT_SIZE_2=0x00000020 +MEMORY_SEGMENT_SIZE_2=0x00000018 MEMORY_SEGMENT_ADDR_2=0x80010000 MEMORY_SEGMENT_ADDR_EXT_2=0x00 MEMORY_SEGMENT_ATTRIBUTE_2=0x00000000 @@ -1725,7 +1731,7 @@ MEMORY_SEGMENT_FLASH_OFFSET_2=0x00000000 MEMORY_SEGMENT_ADDRESS_MAPPING_2= CALRAM_SECTOR_NAME_2=mandelbrot CALRAM_SECTOR_TYPE_2=FLASH,DATA,INTERN -CALRAM_SECTOR_SIZE_2=0x00000020 +CALRAM_SECTOR_SIZE_2=0x00000018 CALRAM_SECTOR_ADDR_2=0x80010000 CALRAM_SECTOR_ADDR_EXT_2=0x00 CALRAM_SECTOR_ATTRIBUTE_2=0x00000000 @@ -1742,6 +1748,28 @@ EVENT_MULTISAMPLES_11=0 EVENT_MIN_CYCLE_TIME_CYCLE_11=0 EVENT_MIN_CYCLE_TIME_UNIT_11=9 EVENT_DPM_SUPPORTED_11=0 +EVENT_CHANNEL_12=0x000C +EVENT_CYCLE_12=0 +EVENT_SAMPLE_UNIT_12=3 +EVENT_MODE_12=4 +EVENT_PRIO_12=0 +EVENT_MAX_DAQ_LIST_12=255 +EVENT_NAME_12=update +EVENT_MULTISAMPLES_12=0 +EVENT_MIN_CYCLE_TIME_CYCLE_12=0 +EVENT_MIN_CYCLE_TIME_UNIT_12=9 +EVENT_DPM_SUPPORTED_12=0 +EVENT_CHANNEL_13=0x000D +EVENT_CYCLE_13=0 +EVENT_SAMPLE_UNIT_13=3 +EVENT_MODE_13=4 +EVENT_PRIO_13=0 +EVENT_MAX_DAQ_LIST_13=255 +EVENT_NAME_13=update +EVENT_MULTISAMPLES_13=0 +EVENT_MIN_CYCLE_TIME_CYCLE_13=0 +EVENT_MIN_CYCLE_TIME_UNIT_13=9 +EVENT_DPM_SUPPORTED_13=0 [MODULES] CREATE_SYSTEM_DEVICE=1 @@ -1949,8 +1977,8 @@ COPY_COMPLETED_AS_READ_ONLY=0 COPY_QUALITY_DATA=0 CHANGED_FROM_LAST=0 SD_FIELD_ORDER=0 -PREDEFINED_ENTRY_00=---2024-07-30T22:02:41 -PREDEFINED_ENTRY_01=changed2024-07-30T22:02:41 +PREDEFINED_ENTRY_00=---2024-08-01T09:33:18 +PREDEFINED_ENTRY_01=changed2024-08-01T09:33:18 PREDEFINED_ENTRY_COUNT=2 SD_FIELD_ENTRY_1= SD_FIELD_ENTRY_2= @@ -2048,7 +2076,7 @@ PdhObjectList=0 Smart_UPS_Configuration= [TASKLIST] -COUNT=0 +COUNT=1 [TimeManagement] MasterClock=0 @@ -2078,6 +2106,12 @@ COLUMNS_TYP1_CONTEXT1_ScreenDPI=192 COLUMNS_TYP1_CONTEXT4= COLUMNS_TYP1_CONTEXT4_dpi96= COLUMNS_TYP1_CONTEXT4_ScreenDPI=192 +COLUMNS_TYP2097152_CONTEXT1= +COLUMNS_TYP2097152_CONTEXT1_dpi96= +COLUMNS_TYP2097152_CONTEXT1_ScreenDPI=192 +COLUMNS_TYP2097152_CONTEXT4= +COLUMNS_TYP2097152_CONTEXT4_dpi96= +COLUMNS_TYP2097152_CONTEXT4_ScreenDPI=192 [VIEW_ITEM_DIALOG] ScreenDPIinSection=192 @@ -2145,10 +2179,10 @@ ColWidthDisplay=462 ShowMore=0 MoreHeight=566 MoreHeight_dpi96=283 -WindowLeft=1114 -WindowLeft_dpi96=557 -WindowTop=748 -WindowTop_dpi96=374 +WindowLeft=963 +WindowLeft_dpi96=482 +WindowTop=684 +WindowTop_dpi96=342 WindowWidth=1242 WindowWidth_dpi96=621 WindowHeight=260 @@ -2167,7 +2201,7 @@ SIZEY_dpi96=700 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 -RIGHTPANE2HEIGHT=-1 +RIGHTPANE2HEIGHT=-2 RIGHTPANE2HEIGHT_dpi96=-1 TREEX=450 TREEX_dpi96=225 @@ -2516,10 +2550,12 @@ SELECT_SORT_COLUMN_ID=31 SELECT_SORT_UPWARD=1 LAST_PAGE_NAME_DLG_FILTER= LAST_PAGE_ID_DLG_FILTER=1504 -OBJECT_DIALOG_WITH=1189 +OBJECT_DIALOG_WITH=1190 OBJECT_DIALOG_WITH_dpi96=595 -OBJECT_DIALOG_HEIGHT=613 +OBJECT_DIALOG_HEIGHT=614 OBJECT_DIALOG_HEIGHT_dpi96=307 +LAST_PAGE_NAME_DLG_VARIABLE= +LAST_PAGE_ID_DLG_VARIABLE=21296 [DB_EXPLORER_SEARCH_FILTER] SEARCH_CASE_SENSITIVE=0 @@ -2543,71 +2579,57 @@ SEARCH_COMMENT= SEARCH_NAME=* PARENT= -[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] -ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +[Dialog_MdiCfgDlg_Typ2097152] +LastOpenedDlgType=1 +TreeWidth=240 +TreeWidth_dpi96=120 ScreenDPIinSection=192 -ColumnCount=10 -Column_0=34, 96 -Column_0_dpi96=34, 48 -Column_1=0, 460 -Column_1_dpi96=0, 230 -Column_2=131078, 160 -Column_2_dpi96=131078, 80 -Column_3=131103, 100 -Column_3_dpi96=131103, 50 -Column_4=131079, 100 -Column_4_dpi96=131079, 50 -Column_5=262145, 240 -Column_5_dpi96=262145, 120 -Column_6=131085, 200 -Column_6_dpi96=131085, 100 -Column_7=131080, 240 -Column_7_dpi96=131080, 120 -Column_8=131081, 160 -Column_8_dpi96=131081, 80 -Column_9=196609, 100 -Column_9_dpi96=196609, 50 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +WindowLeft=233 +WindowLeft_dpi96=117 +WindowTop=1495 +WindowTop_dpi96=748 +WindowWidth=2188 +WindowWidth_dpi96=1094 +WindowHeight=616 +WindowHeight_dpi96=308 + +[InsertArrayRowColDialog] ScreenDPIinSection=192 -ColumnCount=0 -ColumnIdSort=-1 -SortUpward=1 - -[MEASUREMENT_DISPLAY] +WindowLeft=1337 +WindowLeft_dpi96=669 +WindowTop=953 +WindowTop_dpi96=477 +WindowWidth=797 +WindowWidth_dpi96=399 +WindowHeight=427 +WindowHeight_dpi96=214 + +[MEASUREMENT_DISPLAY_SELECT_REDUCED] ScreenDPIinSection=192 POSX=0 POSX_dpi96=0 POSY=0 POSY_dpi96=0 -SIZEX=2180 -SIZEX_dpi96=1090 +SIZEX=1620 +SIZEX_dpi96=810 SIZEY=1200 SIZEY_dpi96=600 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 -RIGHTPANE2HEIGHT=304 -RIGHTPANE2HEIGHT_dpi96=152 +RIGHTPANE2HEIGHT=-1 +RIGHTPANE2HEIGHT_dpi96=-1 TREEX=450 TREEX_dpi96=225 -TREEY=1009 -TREEY_dpi96=505 +TREEY=1048 +TREEY_dpi96=524 ACTIVEPANE=0 -SELECTED_TREENODE=Messsignale/tokio_demo -FIRSTVISIBLE_TREENODE=Messoptionen -TREEEXPAND_COUNT=2 +SELECTED_TREENODE=Messsignale +FIRSTVISIBLE_TREENODE=Messsignale +TREEEXPAND_COUNT=1 TREEEXPAND_0=Messsignale -TREEEXPAND_1=Rekorderliste LAST_FOCUSED_LISTCOLUMN=0 -LAST_FOCUSED_LISTINDEX=10 +LAST_FOCUSED_LISTINDEX=13 LAST_TOP_LISTINDEX=0 DAQLISTS=2 STATUSBAR_BYTES=1 @@ -2616,46 +2638,45 @@ LABELLISTMEAMODE=0 LABELLISTBUSSIGNALMODE=0 TEXT_SEARCH= VXIIColumnsAdded=0 -SHOWONLYACTIVE=0 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_CUSTOM] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_CUSTOM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_KEY] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_KEY] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_SYSTEM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=196608 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_SYSTEM_DEVICE] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_COLUMNLIST_NORMAL] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_NORMAL] ScreenDPIinSection=192 ColumnCount=8 Column_0=65542, 100 @@ -2674,67 +2695,70 @@ Column_6=65597, 200 Column_6_dpi96=65597, 100 Column_7=98305, 160 Column_7_dpi96=98305, 80 -ColumnIdSort=65542 +ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDER] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER_BUSLOGGING] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDER_BUSLOGGING] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDERS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDERS] ScreenDPIinSection=192 -ColumnCount=6 -Column_0=327711, 400 -Column_0_dpi96=327711, 200 -Column_1=327684, 120 -Column_1_dpi96=327684, 60 -Column_2=327709, 300 -Column_2_dpi96=327709, 150 -Column_3=327695, 130 -Column_3_dpi96=327695, 65 -Column_4=327681, 400 -Column_4_dpi96=327681, 200 -Column_5=327683, 400 -Column_5_dpi96=327683, 200 +ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_SOUNDS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_SOUNDS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ACTIVE_SIGNALS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_TARA_ACTIVE_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ALL_SIGNALS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_TARA_ALL_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_VIO] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_VIO] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] -Count=0 +[DLG_DISPLAY_PAGE] +LAST_PAGE=Anzeigeseite + +[DlgDisplayElements] +ScreenDPIinSection=192 +ColWidthType=134 +ColWidthType_dpi96=67 +ColWidthInfo=382 +ColWidthInfo_dpi96=191 +ColWidthActive=120 +ColWidthActive_dpi96=60 +ColWidthAutoSize=120 +ColWidthAutoSize_dpi96=60 +ColWidthBorder=120 +ColWidthBorder_dpi96=60 +ColWidthTransparent=154 +ColWidthTransparent_dpi96=77 [COLOR_SCHEME_LIST] COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED @@ -2873,9 +2897,510 @@ MODE=12 VALUE_COUNT=0 HISTORY_COUNT=0 +[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] +ScreenDPIinSection=192 +ColumnCount=4 +Column_0=0, 306 +Column_0_dpi96=0, 153 +Column_1=1245185, 132 +Column_1_dpi96=1245185, 66 +Column_2=1245186, 66 +Column_2_dpi96=1245186, 33 +Column_3=1245187, 106 +Column_3_dpi96=1245187, 53 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +ScreenDPIinSection=192 +ColumnCount=10 +Column_0=34, 96 +Column_0_dpi96=34, 48 +Column_1=0, 460 +Column_1_dpi96=0, 230 +Column_2=131078, 160 +Column_2_dpi96=131078, 80 +Column_3=131103, 100 +Column_3_dpi96=131103, 50 +Column_4=131079, 100 +Column_4_dpi96=131079, 50 +Column_5=262145, 240 +Column_5_dpi96=262145, 120 +Column_6=131085, 200 +Column_6_dpi96=131085, 100 +Column_7=131080, 240 +Column_7_dpi96=131080, 120 +Column_8=131081, 160 +Column_8_dpi96=131081, 80 +Column_9=196609, 100 +Column_9_dpi96=196609, 50 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 304 +Column_1_dpi96=0, 152 +Column_2=983041, 192 +Column_2_dpi96=983041, 96 +Column_3=983042, 530 +Column_3_dpi96=983042, 265 +Column_4=983043, 252 +Column_4_dpi96=983043, 126 +Column_5=983044, 300 +Column_5_dpi96=983044, 150 +ColumnIdSort=-1 +SortUpward=1 + +[DlgAlgorithmConfiguration] +TreeWidth=339 +TreeWidth_dpi96=170 +ScreenDPIinSection=192 +WindowLeft=967 +WindowLeft_dpi96=484 +WindowTop=798 +WindowTop_dpi96=399 +WindowWidth=1561 +WindowWidth_dpi96=781 +WindowHeight=986 +WindowHeight_dpi96=493 + +[FUNCTION_1] +NAME=UpdateHTMPWinodows +COMMENT= +COUNT=7 +1=function UpdateHTMPWinodows () +2={ +3= CallScript("UpdateHTMLWindows.cns"); +4= +5= +6= return ; +7=} + +[FunctionsBrowser] +ShowWhiteSpace=0 +TabSize=2 +AutoIndent=1 +SmartIndent=1 +KeepTabs=0 +DontShowSyntxErrOnExit=1 +CompileScriptsOnStart=1 +ShowSuggestionBox=1 +Enable0LevelSuggestion=1 +AutoParameterInfo=1 +LoadDotNetScripts=1 +DisplayLineNumbers=1 +ScreenDPIinSection=192 +frm_x=376 +frm_x_dpi96=188 +frm_y=230 +frm_y_dpi96=115 +frm_x1=2460 +frm_x1_dpi96=1230 +frm_y2=1230 +frm_y2_dpi96=615 +frm_show=1 +SplitterPercent1=80 +SplitterPercent2=37.8758797185 +SplitterPercent3=33 +showToolTips=1 +showToolbar=1 +showStatusBar=1 +showTreeView=1 +showTabTablView=1 +NameColSize=80 +CmntColSize=250 +tabSel=0 +TabTabl0ColSize=400 120 260 200 300 700 +TabTabl0ColSize_dpi96=200 60 130 100 150 350 +TabTabl1ColSize=400 700 0 0 0 0 +TabTabl1ColSize_dpi96=200 350 0 0 0 0 +TabTabl2ColSize=400 700 0 0 0 0 +TabTabl2ColSize_dpi96=200 350 0 0 0 0 +TabTabl3ColSize=400 700 0 0 0 0 +TabTabl3ColSize_dpi96=200 350 0 0 0 0 +TreeExpStatus=6 +DisplayIntValuesAsHex=0 +DisplayCharArrayAsString=1 +LAST_SESSION_SRC_TYPE=1 +LAST_SESSION_SRC_NAME=UpdateHTMPWinodows +LAST_SESSION_CARRET_LINE=2 +LAST_SESSION_CARRET_COL=35 +LAST_SESSION_TOP_LINE=0 + +[FunctionsBrowserSingleMode] +ScreenDPIinSection=192 +frm_x=20 +frm_x_dpi96=10 +frm_y=20 +frm_y_dpi96=10 +frm_x1=1620 +frm_x1_dpi96=810 +frm_y2=1020 +frm_y2_dpi96=510 +frm_show=1 +SplitterPercent1=80 +SplitterPercent2=25 +SplitterPercent3=33 +showToolTips=1 +showToolbar=1 +showStatusBar=1 +showTreeView=1 +showTabTablView=1 +NameColSize=80 +CmntColSize=250 +tabSel=0 +TabTabl0ColSize=400 120 260 200 300 700 +TabTabl0ColSize_dpi96=200 60 130 100 150 350 +TabTabl1ColSize=400 700 0 0 0 0 +TabTabl1ColSize_dpi96=200 350 0 0 0 0 +TabTabl2ColSize=400 700 0 0 0 0 +TabTabl2ColSize_dpi96=200 350 0 0 0 0 +TabTabl3ColSize=400 700 0 0 0 0 +TabTabl3ColSize_dpi96=200 350 0 0 0 0 +TreeExpStatus=0 +DisplayIntValuesAsHex=0 +DisplayCharArrayAsString=1 + +[Funktionsauswahl] +WindowState=0 +X=87.5 +Y=533.5 + +[MEASUREMENT_DISPLAY] +ScreenDPIinSection=192 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=2192 +SIZEX_dpi96=1096 +SIZEY=1322 +SIZEY_dpi96=661 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=434 +RIGHTPANE2HEIGHT_dpi96=217 +TREEX=450 +TREEX_dpi96=225 +TREEY=1131 +TREEY_dpi96=566 +ACTIVEPANE=1 +SELECTED_TREENODE=Messsignale/tokio_demo +FIRSTVISIBLE_TREENODE=Messoptionen +TREEEXPAND_COUNT=3 +TREEEXPAND_0=Messsignale +TREEEXPAND_1=Messsignale/tokio_demo +TREEEXPAND_2=Rekorderliste +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=12 +LAST_TOP_LISTINDEX=0 +DAQLISTS=2 +STATUSBAR_BYTES=1 +DIALOGFILEEXTEXPORT=vsf +LABELLISTMEAMODE=0 +LABELLISTBUSSIGNALMODE=0 +TEXT_SEARCH= +VXIIColumnsAdded=0 +SHOWONLYACTIVE=0 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_CUSTOM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_KEY] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=196608 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_COLUMNLIST_NORMAL] +ScreenDPIinSection=192 +ColumnCount=8 +Column_0=65542, 100 +Column_0_dpi96=65542, 50 +Column_1=29, 88 +Column_1_dpi96=29, 44 +Column_2=34, 96 +Column_2_dpi96=34, 48 +Column_3=31, 324 +Column_3_dpi96=31, 162 +Column_4=65540, 408 +Column_4_dpi96=65540, 204 +Column_5=65541, 120 +Column_5_dpi96=65541, 60 +Column_6=65597, 200 +Column_6_dpi96=65597, 100 +Column_7=98305, 160 +Column_7_dpi96=98305, 80 +ColumnIdSort=65542 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER_BUSLOGGING] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDERS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=327711, 400 +Column_0_dpi96=327711, 200 +Column_1=327684, 120 +Column_1_dpi96=327684, 60 +Column_2=327709, 300 +Column_2_dpi96=327709, 150 +Column_3=327695, 130 +Column_3_dpi96=327695, 65 +Column_4=327681, 400 +Column_4_dpi96=327681, 200 +Column_5=327683, 400 +Column_5_dpi96=327683, 200 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_SOUNDS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ACTIVE_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ALL_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_VIO] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] +Count=0 + +[MEASUREMENT_DISPLAY_SELECT] +ScreenDPIinSection=192 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=1620 +SIZEX_dpi96=810 +SIZEY=1200 +SIZEY_dpi96=600 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=304 +RIGHTPANE2HEIGHT_dpi96=152 +TREEX=450 +TREEX_dpi96=225 +TREEY=1009 +TREEY_dpi96=505 +ACTIVEPANE=0 +SELECTED_TREENODE=Messsignale +FIRSTVISIBLE_TREENODE=Messoptionen +TREEEXPAND_COUNT=1 +TREEEXPAND_0=Messsignale +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=15 +LAST_TOP_LISTINDEX=0 +DAQLISTS=2 +STATUSBAR_BYTES=1 +DIALOGFILEEXTEXPORT=vsf +LABELLISTMEAMODE=0 +LABELLISTBUSSIGNALMODE=0 +TEXT_SEARCH= +VXIIColumnsAdded=0 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_CUSTOM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_KEY] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=196608 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_NORMAL] +ScreenDPIinSection=192 +ColumnCount=8 +Column_0=65542, 100 +Column_0_dpi96=65542, 50 +Column_1=29, 88 +Column_1_dpi96=29, 44 +Column_2=34, 96 +Column_2_dpi96=34, 48 +Column_3=31, 460 +Column_3_dpi96=31, 230 +Column_4=65540, 160 +Column_4_dpi96=65540, 80 +Column_5=65541, 120 +Column_5_dpi96=65541, 60 +Column_6=65597, 200 +Column_6_dpi96=65597, 100 +Column_7=98305, 160 +Column_7_dpi96=98305, 80 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER_BUSLOGGING] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDERS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_SOUNDS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ACTIVE_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ALL_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_VIO] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_DYNAMIC_COLUMNS] +Count=0 + +[Module_FILE1] +DefaultReplaceFile=0 +Converter=Converter_ID + +[PARASETEXPLORER] +LAST_SELECTED_SAVEDIALOG_FILETYPE_FILTER=PAR-Dateien(*.par)|*.par| +LASTFILTER=AllFiles + +[SELECT_SCRIPT_DIALOG] +ScreenDPIinSection=192 +WindowLeft=1284 +WindowLeft_dpi96=642 +WindowTop=768 +WindowTop_dpi96=384 +WindowWidth=638 +WindowWidth_dpi96=319 +WindowHeight=462 +WindowHeight_dpi96=231 + [SIGNSELWND_DYNAMIC_COLUMNS] Count=0 +[TASK_1] +PATH=UpdateHTMLWindows.cns +STARTUP=0 +CURRENT_DEVICE= + +[TASKMAN] +ScreenDPIinSection=192 +POSITION=895 1021 2869 1835 +POSITION_dpi96=448 511 1435 918 +COLUMNS=282 112 184 382 282 156 98 +COLUMNS_dpi96=141 56 92 191 141 78 49 + [~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] -GUID={E1E212EB-5105-46F9-B787-4FED32FFE2D6} +GUID={71300A12-E465-4BC5-8B0B-2029B8486CC6} diff --git a/examples/rayon_demo/CANape/UpdateHTMLWindows.cns b/examples/rayon_demo/CANape/UpdateHTMLWindows.cns new file mode 100644 index 0000000..abc2728 --- /dev/null +++ b/examples/rayon_demo/CANape/UpdateHTMLWindows.cns @@ -0,0 +1 @@ +UpdateHTMLWindows(); diff --git a/examples/rayon_demo/CANape/mandelbrot.par b/examples/rayon_demo/CANape/mandelbrot.par index 4219765..9a364e2 100644 --- a/examples/rayon_demo/CANape/mandelbrot.par +++ b/examples/rayon_demo/CANape/mandelbrot.par @@ -1,11 +1,9 @@ CANape PAR V3.1: tokio_demo_autodetect.a2l 1 0 tokio_demo -; visza -; RDM ; ; ; -Mandelbrot.x_pixels [UINT(64)] 3000 ; 3000 -Mandelbrot.y_pixels [UINT(64)] 2000 ; 2000 -Mandelbrot.x [DOUBLE] -0.94999999999999995559 ; -0.95 -Mandelbrot.y [DOUBLE] 0.26100000000000000977 ; 0.261 -Mandelbrot.width [DOUBLE] 2.1999999999999998723e-2 ; 0.022 +; +; +Mandelbrot.x [DOUBLE] -1.3999999999999999112 ; -1.4 +Mandelbrot.y [DOUBLE] 0 ; 0 +Mandelbrot.width [DOUBLE] 0.10000000000000000555 ; 0.1 diff --git a/examples/rayon_demo/CANape/rayon_demo.cna b/examples/rayon_demo/CANape/rayon_demo.cna index 44f289d..cfb7b9f 100644 --- a/examples/rayon_demo/CANape/rayon_demo.cna +++ b/examples/rayon_demo/CANape/rayon_demo.cna @@ -10,8 +10,8 @@ PrgDate=08.07.2024 Description= CreationTime=20:42 CreationDate=06/23/2024 ; Month/Day/Year -ModificationTime=22:10 -ModificationDate=07/30/2024 ; Month/Day/Year +ModificationTime=14:42 +ModificationDate=08/01/2024 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -22,10 +22,10 @@ Count=1 Count=0 [CALIBRATION_LIST] -Count=5 +Count=3 [CALIBRATION_OBJECT_1] -EditOffset=1 +EditOffset=0.001 EditFactor=2 EditFormat=2 ShowWorkingPoint=0 @@ -36,7 +36,7 @@ StimMode=0 IsFallback=0 [CALIBRATION_OBJECT_2] -EditOffset=0.01 +EditOffset=0.001 EditFactor=2 EditFormat=2 ShowWorkingPoint=0 @@ -47,18 +47,7 @@ StimMode=0 IsFallback=0 [CALIBRATION_OBJECT_3] -EditOffset=1 -EditFactor=2 -EditFormat=2 -ShowWorkingPoint=0 -FollowWorkingPoint=0 -Module=tokio_demo -Name=Mandelbrot.x_pixels -StimMode=0 -IsFallback=0 - -[CALIBRATION_OBJECT_4] -EditOffset=1 +EditOffset=0.1 EditFactor=2 EditFormat=2 ShowWorkingPoint=0 @@ -68,17 +57,6 @@ Name=Mandelbrot.y StimMode=0 IsFallback=0 -[CALIBRATION_OBJECT_5] -EditOffset=1 -EditFactor=2 -EditFormat=2 -ShowWorkingPoint=0 -FollowWorkingPoint=0 -Module=tokio_demo -Name=Mandelbrot.y_pixels -StimMode=0 -IsFallback=0 - [CANAPE_ENVIRONMENT] OBJECT_COUNT=0 @@ -122,7 +100,7 @@ Count=0 Name= Comment= Maximized=0 -ActiveWindow=5 +ActiveWindow=3 IsReportPage=0 TimeAxisSynchronized=0 PrintLayout=Default @@ -131,8 +109,21 @@ GUID=DISPLAY_PAGE_f96953f1-fdfe-47a7-811e-e2231d8a8a62 [DISPLAY_PAGE_1_DisplayElements] Count=0 +[DISPLAY_PAGE_2] +Name=Trace +Comment= +Maximized=0 +ActiveWindow=8 +IsReportPage=0 +TimeAxisSynchronized=0 +PrintLayout=Default +GUID=DISPLAY_PAGE_9f535a7c-e6c1-46eb-890b-c585d19950eb + +[DISPLAY_PAGE_2_DisplayElements] +Count=0 + [DISPLAY_PAGES] -Count=1 +Count=2 Active=0 [DYNAMIC_COLUMNS] @@ -149,11 +140,53 @@ Count=0 5="Comment","" Count=5 +[FUNCTION_1] +NAME=UpdateHTMPWinodows +COMMENT= +COUNT=7 +1=function UpdateHTMPWinodows () +2={ +3= CallScript("UpdateHTMLWindows.cns"); +4= +5= +6= return ; +7=} + +[FUNCTION_OBJECT_1] +Number=14 +Unit= +Components=0 +TimeSeriesSaveMode=0 +StimMode=0 +Name=UpdateWindow +ObjectType=1 +TextFormula=UpdateHTMPWinodows +Disabled=0 +FromLibrary=0 +BurstSensitivity=10 +LPcount=0 +Formula=0 +Precision=-1 +HasInitialValue=0 +InitialValue=0 +NumberOfInputSignals=0 +Module=Functions +Mode=5 +Rate=0 +ModeModule=tokio_demo +ModeName=1,"update" "tokio_demo" +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Rekorder +IsFallback=0 +DisplayCount=0 + [FUNCTION_OBJECT_LIST] -count=0 +count=1 [FUNCTIONS] -COUNT=0 +COUNT=1 COUNT_LIBRARY=0 [GFX_VISUALIZATION] @@ -172,7 +205,7 @@ SubConfigsCount=0 Count=0 [MEASUREMENT_LIST] -Count=12 +Count=14 OfflineFileName=mandelbrot.mf4 OfflineFileCount=1 MeaCfgLabellistName= @@ -213,10 +246,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-2155.24367816 -YMaxHome=20725.2643678 -YMin=-2155.24367816 -YMax=20725.2643678 +YMinHome=-137.830508475 +YMaxHome=1336.95762712 +YMin=-137.830508475 +YMax=1336.95762712 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -273,10 +306,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-50.5494252874 -YMaxHome=22829.9586207 -YMin=-50.5494252874 -YMax=22829.9586207 +YMinHome=-2.87288135593 +YMaxHome=1471.91525424 +YMin=-2.87288135593 +YMax=1471.91525424 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -315,7 +348,7 @@ GUID=DISPLAY_31bc9642-afff-456b-96ff-ceb4219ceb6c Module=tokio_demo Name=elapsed_time Disabled=0 -Mode=2147483648 +Mode=2147483660 Rate=0 Row=0 Column=0 @@ -327,7 +360,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_12_DISPLAY_1] Window=5 -Index=0 +Index=2 Color=65280 ApplyColorToBackground=0 ColorFunction=0 @@ -371,6 +404,126 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_098ce908-57d2-472f-9b84-272ba87e43e3 +[MEASUREMENT_OBJECT_13] +Module=tokio_demo +Name=update_counter +Disabled=0 +Mode=2147483660 +Rate=0 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Rekorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_13_DISPLAY_1] +Window=5 +Index=1 +Color=255 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_60c6bd93-6fd4-4a6a-90ea-2bc4863ee909 + +[MEASUREMENT_OBJECT_14] +Module=tokio_demo +Name=mainloop_counter +Disabled=0 +Mode=2147483648 +Rate=0 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Rekorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_14_DISPLAY_1] +Window=5 +Index=0 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_440cf5e5-8349-4780-9501-1809843bb6aa + [MEASUREMENT_OBJECT_1_DISPLAY_1] Window=2 Index=10 @@ -379,10 +532,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-20856.2333333 -YMaxHome=2024.27471264 -YMin=-20856.2333333 -YMax=2024.27471264 +YMinHome=-1345.45762712 +YMaxHome=129.330508475 +YMin=-1345.45762712 +YMax=129.330508475 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -439,10 +592,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-18779.1114943 -YMaxHome=4101.39655172 -YMin=-18779.1114943 -YMax=4101.39655172 +YMinHome=-1210.5 +YMaxHome=264.5 +YMin=-1210.5 +YMax=264.5 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -499,10 +652,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-16701.9896552 -YMaxHome=6180.81609195 -YMin=-16701.9896552 -YMax=6180.81609195 +YMinHome=-1068.23389831 +YMaxHome=394.755932203 +YMin=-1068.23389831 +YMax=394.755932203 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -559,10 +712,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-14615.2551724 -YMaxHome=8253.80689655 -YMin=-14615.2551724 -YMax=8253.80689655 +YMinHome=-960.033898305 +YMaxHome=538.350847458 +YMin=-960.033898305 +YMax=538.350847458 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -619,10 +772,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-12545.4482759 -YMaxHome=10335.0597701 -YMin=-12545.4482759 -YMax=10335.0597701 +YMinHome=-807.957627119 +YMaxHome=666.830508475 +YMin=-807.957627119 +YMax=666.830508475 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -679,10 +832,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-10468.3264368 -YMaxHome=12414.4793103 -YMin=-10468.3264368 -YMax=12414.4793103 +YMinHome=-662.493220339 +YMaxHome=788.698305085 +YMin=-662.493220339 +YMax=788.698305085 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -739,10 +892,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-8388.90689655 -YMaxHome=14491.6011494 -YMin=-8388.90689655 -YMax=14491.6011494 +YMinHome=-540.372881356 +YMaxHome=934.415254237 +YMin=-540.372881356 +YMax=934.415254237 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -799,10 +952,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-6305.47011494 -YMaxHome=16552.145977 -YMin=-6305.47011494 -YMax=16552.145977 +YMinHome=-401.155932203 +YMaxHome=1061.83389831 +YMin=-401.155932203 +YMax=1061.83389831 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -859,10 +1012,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=3 -YMinHome=-4232.54482759 -YMaxHome=18638.8137931 -YMin=-4232.54482759 -YMax=18638.8137931 +YMinHome=-270.8 +YMaxHome=1192.4 +YMin=-270.8 +YMax=1192.4 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -968,7 +1121,7 @@ WindowSymbols=1 GlobalCursor=0 GlobalCursorTime=0 GlobalCursorTimeNs=0 -MainWindowPos=1, 190, 87, 3091, 1960 ;cmd, x, y, w, h +MainWindowPos=1, 28, 23, 3112, 1960 ;cmd, x, y, w, h [PAR_COMMENT] 1="Name","" @@ -1126,14 +1279,15 @@ TreeExpand_4=Alle\Messliste\Alle Signale TreeExpand_5=Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l\mandelbrot TreeExpand_6=Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l\task TreeExpand_7=Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l\mainloop -TreeExpand_8=$Alle\Geräte -TreeExpand_9=#Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l -TreeExpand_10=@Alle\Geräte\tokio_demo -TreeExpand_11=$Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l -TreeExpand_12=#Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l\mainloop\elapsed_time -TreeExpand_13=@Alle\Messliste -TreeExpand_14=$Alle\Messliste\Alle Signale -TreeExpand_15=#Alle\Messliste\Alle Signale\line_1 +TreeExpand_8=Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l\pixels +TreeExpand_9=$Alle\Geräte +TreeExpand_10=#Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l +TreeExpand_11=@Alle\Geräte\tokio_demo +TreeExpand_12=$Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l +TreeExpand_13=#Alle\Geräte\tokio_demo\tokio_demo_autodetect.a2l\task\line_7 +TreeExpand_14=@Alle\Messliste +TreeExpand_15=$Alle\Messliste\Alle Signale +TreeExpand_16=#Alle\Messliste\Alle Signale\line_1 TextSearchCaseSensitive=0 TextSearchUseMode=1 TextSearchSearchFullText=1 @@ -1160,11 +1314,11 @@ ShowSignalComments=1 DisplayMask=1 ; pages 1 [WINDOW_2] -XLen=7760 -XMin=6566 -XMinNs=6566080772 -XMax=6692 -XMaxNs=6692686076 +XLen=10354 +XMin=0 +XMinNs=0 +XMax=417522 +XMaxNs=417522248824 Grid=1 Mark=1 YValue=0 @@ -1180,14 +1334,14 @@ Average=0 ShowMinMax=1 XYModeIndexP1=-1 DisplayModeAuto=0 -XStart=0 +XStart=286679 AbsoluteTimeMode=0 YAxisWidth=188 YAxisWidth_dpi96=94 RightYAxisWidth=0 RightYAxisWidth_dpi96=0 ObjectMode=0 -DisplayMode=2 +DisplayMode=1 ShowSignalMode=0 AxisScrollPos2=0 LegendScrollPos=0 @@ -1198,7 +1352,7 @@ YAxisDynScaleEnabled=0 YAxisDynScaleEnlarge=25 TimeStickToZero=0 XYModeRedrawEnabled=0 -MARKER_TIME_1=14991366819 +MARKER_TIME_1=2188298710 MARKER_TIME_2=2700953089 OscilloscopeEnabled=0 OsciEventCount=0 @@ -1235,14 +1389,12 @@ COL_1_dpi96=1048578, 56 [WINDOW_3] ProgID= PROPERTIES_COUNT=1 -PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":311,"NumericGraphicCompositeHeight":132,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":309,"NumericHeight":107,"NumericLayoutGroupSizeWidth":309,"NumericLayoutGroupSizeHeight":107,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.x\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.x_pixels\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":1.8446744073709552E+19,"CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.y_pixels\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":1.8446744073709552E+19,"CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.x\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1000000000000,"ValueAxisMax":1000000000000,"CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.y\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1000000000000,"ValueAxisMax":1000000000000,"CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.width\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1000000000000,"ValueAxisMax":1000000000000,"CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":false,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":127,"ValueColumnWidthDouble":127,"ParameterGroup":"mandelbrot","ModuleName":"tokio_demo","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":162}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} -OBJECTS_COUNT=5 -OBJECT_1=DEVICE:"tokio_demo":"Mandelbrot.x_pixels":P -OBJECT_2=DEVICE:"tokio_demo":"Mandelbrot.y_pixels":P -OBJECT_3=DEVICE:"tokio_demo":"Mandelbrot.x":P -OBJECT_4=DEVICE:"tokio_demo":"Mandelbrot.y":P -OBJECT_5=DEVICE:"tokio_demo":"Mandelbrot.width":P -ObjectCount=5 +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":311,"NumericGraphicCompositeHeight":132,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":309,"NumericHeight":107,"NumericLayoutGroupSizeWidth":309,"NumericLayoutGroupSizeHeight":107,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.x\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.x\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1000000000000,"ValueAxisMax":1000000000000,"CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.y\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1000000000000,"ValueAxisMax":1000000000000,"CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"tokio_demo\":\"Mandelbrot.width\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1000000000000,"ValueAxisMax":1000000000000,"CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":false,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":127,"ValueColumnWidthDouble":127,"ParameterGroup":"mandelbrot","ModuleName":"tokio_demo","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":162}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +OBJECTS_COUNT=3 +OBJECT_1=DEVICE:"tokio_demo":"Mandelbrot.x":P +OBJECT_2=DEVICE:"tokio_demo":"Mandelbrot.y":P +OBJECT_3=DEVICE:"tokio_demo":"Mandelbrot.width":P +ObjectCount=3 HiddenDisplayCount=0 Title=mandelbrot Type=137438953472 @@ -1250,10 +1402,10 @@ Comment=mandelbrot Number=3 GUID=WINDOW_b3f3f886-c975-469c-a3ac-b76ff137e36c ScreenDPIinSection=192 -Position=0, 1264, 36, 628, 304 ;cmd, x, y, w, h -Position_dpi96=0, 632, 18, 314, 152 ;cmd, x, y, w, h -Position_Page01=0, 1264, 36, 628, 304 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 632, 18, 314, 152 ;cmd, x, y, w, h +Position=0, 1964, 19, 628, 304 ;cmd, x, y, w, h +Position_dpi96=0, 982, 10, 314, 152 ;cmd, x, y, w, h +Position_Page01=0, 1964, 19, 628, 304 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 982, 10, 314, 152 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=1 ; pages 1 @@ -1261,107 +1413,9 @@ DisplayMask=1 ; pages 1 [WINDOW_3_OBJECT_1] Type=2 Module=tokio_demo -Name=Mandelbrot.x_pixels -Window=3 -Index=0 -Color=0 -ApplyColorToBackground=0 -ColorFunction=0 -ColorFunctionScope=1 -LineTyp=2 -YMinHome=0 -YMaxHome=4294967295 -YMin=0 -YMax=1.84467440737e+19 -XOffsetNS=0 -XOffset=0 -ValueFormat=3 -BitMask=1 -ShowYAxis=1 -Width=10 -LineStyle=1 -MarkerType=1 -SRMainValue=0 -InvalidValueDrawMode=3 -LineWidth=1 -Precision=-2 -Digits=6 -Enabled=1 -StoredFocused=0 -SublMask=0 -MeaSublMask=0 -LockScaling=0 -RightAxis=0 -MapMode=2 -OverlayGridColor=0 -ShadingMode=3 -EditOffset=1 -EditFactor=2 -WAxisLabel= -XAxisLabel= -YAxisLabel= -AxisCaption= -Row=0 -Col=0 -YAxis_ID=0 -AxisTemplate= -GUID=DISPLAY_1ff5dd47-44f5-42db-89e8-08a22f4d39e8 - -[WINDOW_3_OBJECT_2] -Type=2 -Module=tokio_demo -Name=Mandelbrot.y_pixels -Window=3 -Index=1 -Color=0 -ApplyColorToBackground=0 -ColorFunction=0 -ColorFunctionScope=1 -LineTyp=2 -YMinHome=0 -YMaxHome=4294967295 -YMin=0 -YMax=1.84467440737e+19 -XOffsetNS=0 -XOffset=0 -ValueFormat=3 -BitMask=1 -ShowYAxis=1 -Width=10 -LineStyle=1 -MarkerType=1 -SRMainValue=0 -InvalidValueDrawMode=3 -LineWidth=1 -Precision=-2 -Digits=6 -Enabled=1 -StoredFocused=0 -SublMask=0 -MeaSublMask=0 -LockScaling=0 -RightAxis=0 -MapMode=2 -OverlayGridColor=0 -ShadingMode=3 -EditOffset=1 -EditFactor=2 -WAxisLabel= -XAxisLabel= -YAxisLabel= -AxisCaption= -Row=0 -Col=0 -YAxis_ID=0 -AxisTemplate= -GUID=DISPLAY_f97c041e-46e8-4a63-a811-555e1c226012 - -[WINDOW_3_OBJECT_3] -Type=2 -Module=tokio_demo Name=Mandelbrot.x Window=3 -Index=2 +Index=0 Color=0 ApplyColorToBackground=0 ColorFunction=0 @@ -1403,14 +1457,14 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0454d49b-3b88-48b1-8f0f-797104d95cf6 +GUID=DISPLAY_f0c254f4-6ecb-4793-814b-018e5a67225c -[WINDOW_3_OBJECT_4] +[WINDOW_3_OBJECT_2] Type=2 Module=tokio_demo Name=Mandelbrot.y Window=3 -Index=3 +Index=1 Color=0 ApplyColorToBackground=0 ColorFunction=0 @@ -1452,14 +1506,14 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6dcc5454-2a28-43d6-a041-aebca1cc61e5 +GUID=DISPLAY_4ac79c47-494e-4c31-acf5-dfec15177ff5 -[WINDOW_3_OBJECT_5] +[WINDOW_3_OBJECT_3] Type=2 Module=tokio_demo Name=Mandelbrot.width Window=3 -Index=4 +Index=2 Color=0 ApplyColorToBackground=0 ColorFunction=0 @@ -1501,7 +1555,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c0dbee64-d9c2-45b2-9278-c41d41e158f9 +GUID=DISPLAY_3a81943a-9799-4e84-8735-5dbbcec9dfc1 [WINDOW_4] ProgID= @@ -1516,10 +1570,10 @@ Comment=Browser Number=4 GUID=WINDOW_4186de4f-2e06-4d6f-ae00-3fc65e1d27ac ScreenDPIinSection=192 -Position=0, 8, 0, 1206, 834 ;cmd, x, y, w, h -Position_dpi96=0, 4, 0, 603, 417 ;cmd, x, y, w, h -Position_Page01=0, 8, 0, 1206, 834 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 4, 0, 603, 417 ;cmd, x, y, w, h +Position=0, 18, 19, 1934, 1428 ;cmd, x, y, w, h +Position_dpi96=0, 9, 10, 967, 714 ;cmd, x, y, w, h +Position_Page01=0, 18, 19, 1934, 1428 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 9, 10, 967, 714 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=1 ; pages 1 @@ -1528,8 +1582,8 @@ DisplayMask=1 ; pages 1 ScaleFont=1 ShowLegend=1 ShowLegendHeader=0 -LegendPixWidth=224 -LegendPixWidth_dpi96=112 +LegendPixWidth=256 +LegendPixWidth_dpi96=128 GridStyle=0 DisplayColors=1 LegendFont=0 @@ -1539,7 +1593,7 @@ ShowActivity=0 ExceedLimitWarning=0 OnlyHighlightOnViolation=0 LegendScrollPos=0 -DotLinePos=199 +DotLinePos=106 ObjectCount=0 Title=Numerisch {DISPLAYED_FILENAME} Type=4 @@ -1547,10 +1601,10 @@ Comment=Ziffernfenster Number=5 GUID=WINDOW_6760c75f-8b7e-4372-a9eb-e5c31d03826a ScreenDPIinSection=192 -Position=0, 1264, 498, 906, 178 ;cmd, x, y, w, h -Position_dpi96=0, 632, 249, 453, 89 ;cmd, x, y, w, h -Position_Page01=0, 1264, 498, 906, 178 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 632, 249, 453, 89 ;cmd, x, y, w, h +Position=0, 1964, 336, 628, 196 ;cmd, x, y, w, h +Position_dpi96=0, 982, 168, 314, 98 ;cmd, x, y, w, h +Position_Page01=0, 1964, 336, 628, 196 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 982, 168, 314, 98 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 LEGEND_HSCROLL_POS=0 @@ -1560,11 +1614,105 @@ DisplayMask=1 ; pages 1 [WINDOW_5_LEG_COLUMNS] ScreenDPIinSection=192 COUNT=1 -COL_0=31, 224 -COL_0_dpi96=31, 112 +COL_0=31, 256 +COL_0_dpi96=31, 128 + +[WINDOW_6] +ProgID=CNPTRACE.TraceCtrl.1 +PROPERTIES_COUNT=22 +PROPERTY_1=DeviceItems={"CaptureEvents":"1","ShowEvents":"0","NodeCount":"1","Node0":{"DeviceName":"tokio_demo","CaptureEvents":"1","ShowEvents":"1","NodeCount":"3","Node0":{"Channel":"2","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"},"Node1":{"Channel":"3","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"},"Node2":{"Channel":"4","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"}}} +PROPERTY_2=NetworkItems={"Items":"0"} +PROPERTY_3=ColumnConfigs={"ConfigCount":"1","Config0":{"Layout":"1","Name":"Initial","Column0":{"Width":"210","Position":"0","Name":"Time","IsDefaultName":"1"},"Column1":{"Width":"237","Position":"1","Name":"Channel","IsDefaultName":"1"},"Column2":{"Width":"60","Position":"2","Name":"ID","IsDefaultName":"1"},"Column3":{"Width":"90","Position":"3","Name":"Name","IsDefaultName":"1"},"Column5":{"Width":"60","Position":"5","Name":"Dir","IsDefaultName":"1"},"Column6":{"Width":"100","Position":"6","Name":"Length","IsDefaultName":"1"},"Column7":{"Width":"817","Position":"7","Name":"Data","IsDefaultName":"1"},"Column16":{"Width":"150","Position":"4","Name":"Type","IsDefaultName":"1"},"Column52":{"Width":"300","Position":"8","Name":"Protocol Interpretation","IsDefaultName":"1"}},"Active":"0","ActiveLayout":"1"} +PROPERTY_4=PinningEvents={"EventCount":"0"} +PROPERTY_5=ExpandedEvents={"EventCount":"0"} +PROPERTY_6=AnalysisGroups={"GroupCount":"1","Group0":{"Enabled":"1","Expanded":"1","Name":"Filtergruppe 0","FilterCount":"2","Filter0":{"Stop":"1","Enabled":"1","ConditionCount":"0"},"Filter1":{"Stop":"0","Enabled":"0","ConditionCount":"0"}}} +PROPERTY_7=AnalysisDataChangeFilter=0 +PROPERTY_8=SequenceFilters={"IsEnabled":"1","FilterCount":"0"} +PROPERTY_9=SearchPatterns={"EventCount":"0"} +PROPERTY_10=ExplorerConfig={"VSplitPos":"300","VSplitExpanded":"true","HSplitPos":"580","HSplitExpanded":"false","ActiveExplorerView":"1","ActiveSearchType":"0"} +PROPERTY_11=ContinuousMode=1 +PROPERTY_12=AbsoluteTimeMode=1 +PROPERTY_13=HighPrioritySBClient=0 +PROPERTY_14=EventFading=0 +PROPERTY_15=ByteFading=0 +PROPERTY_16=BufferEntries=10000 +PROPERTY_17=ClearStart=true +PROPERTY_18=OnlyMeasurement=false +PROPERTY_19=CopyColumnTitles=true +PROPERTY_20=LoggingEnabled=false +PROPERTY_21=LoggingFilePath= +PROPERTY_22=LoggingOverwriteOnConfigLoad=false +OBJECTS_COUNT=0 +ObjectCount=0 +HiddenDisplayCount=0 +TraceChannelCount=2 +ColumnCount=9 +Column_0=0, 210 +Column_1=256, 237 +Column_2=257, 60 +Column_3=4, 90 +Column_4=1281, 150 +Column_5=1, 60 +Column_6=2, 100 +Column_7=3, 817 +Column_8=513, 300 +DeltaTimeEnabled=0 +Title=Trace-Fenster {DISPLAYED_FILENAME} +Type=16384 +Comment=ActiveX-Fenster +Number=6 +GUID=WINDOW_4026211d-ce3d-4659-a53a-05e21b1750c4 +ScreenDPIinSection=192 +Position=0, 78, 228, 2478, 1240 ;cmd, x, y, w, h +Position_dpi96=0, 39, 114, 1239, 620 ;cmd, x, y, w, h +Position_Page02=0, 78, 228, 2478, 1240 ;cmd, x, y, w, h +Position_Page02_dpi96=0, 39, 114, 1239, 620 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=2 ; pages 2 + +[WINDOW_6_CHANNEL_1] +Module=tokio_demo +Channel=0 +CustomColorFlag=0 +Color=0 + +[WINDOW_6_CHANNEL_2] +Module=tokio_demo +Channel=1 +CustomColorFlag=0 +Color=0 + +[WINDOW_7] +ShowTime=1 +TimeWidth=180 +CopyColumnTitles=1 +ClearStart=1 +AbsoluteTimeEnabled=0 +ShowGridLines=0 +ColumnCount=3 +Column_0=21, 80 +Column_0_dpi96=21, 40 +Column_1=22, 180 +Column_1_dpi96=22, 90 +Column_2=23, 1640 +Column_2_dpi96=23, 820 +Title=Write +Type=128 +Comment=Write-Fenster +Number=7 +GUID=WINDOW_55f635e5-5e82-4bde-b67a-f2f0fdf04317 +ScreenDPIinSection=192 +Position=0, 50, 50, 2372, 594 ;cmd, x, y, w, h +Position_dpi96=0, 25, 25, 1186, 297 ;cmd, x, y, w, h +Position_Page02=0, 50, 50, 2372, 594 ;cmd, x, y, w, h +Position_Page02_dpi96=0, 25, 25, 1186, 297 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=2 ; pages 2 [WINDOWS] -Count=5 +Count=7 [Y_COMMON_AXIS_LIST] Count=0 diff --git a/examples/rayon_demo/CANape/rayon_demo.cnaxml b/examples/rayon_demo/CANape/rayon_demo.cnaxml index c0e3381..94c2a1a 100644 --- a/examples/rayon_demo/CANape/rayon_demo.cnaxml +++ b/examples/rayon_demo/CANape/rayon_demo.cnaxml @@ -200,7 +200,7 @@ false false false - 96,189 + 15,157 \ No newline at end of file diff --git a/examples/rayon_demo/CANape/tokio_demo.HEX b/examples/rayon_demo/CANape/tokio_demo.HEX index 588fb82..305e17f 100644 --- a/examples/rayon_demo/CANape/tokio_demo.HEX +++ b/examples/rayon_demo/CANape/tokio_demo.HEX @@ -1,6 +1,7 @@ :020000020000FC :020000040000FA +:0200000480007A +:0300000045504B1D :02000004800179 -:2000000052B81E85EB51F0BFF2D24D621058D13FBA490C022B87963FB80B0000D00700002B +:18000000666666666666F6BF0000000000000000B81E85EB51B88E3FB3 :00000001FF - \ No newline at end of file diff --git a/examples/rayon_demo/mandelbrot.a2l b/examples/rayon_demo/mandelbrot.a2l index abe32b4..bddd7fb 100644 --- a/examples/rayon_demo/mandelbrot.a2l +++ b/examples/rayon_demo/mandelbrot.a2l @@ -66,7 +66,7 @@ /end MEMORY_SEGMENT /begin MEMORY_SEGMENT - mandelbrot "" DATA FLASH INTERN 0x80010000 32 -1 -1 -1 -1 -1 + mandelbrot "" DATA FLASH INTERN 0x80010000 24 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT /* index: */ 1 /* pages: */ 2 /* ext: */ 0 0 0 /begin CHECKSUM XCP_ADD_44 MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -110,7 +110,7 @@ OPTIONAL_LEVEL1_CMD GET_VERSION /end PROTOCOL_LAYER /begin DAQ - DYNAMIC 0 12 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID + DYNAMIC 0 13 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID /begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED @@ -127,6 +127,7 @@ /begin EVENT "task_9" "task_9" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /begin EVENT "task_10" "task_10" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /begin EVENT "task_11" "task_11" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "update" "update" 12 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /end DAQ @@ -136,19 +137,15 @@ /begin CHARACTERISTIC Mandelbrot.width "" VALUE 0x80010010 F64 0 NO_COMPU_METHOD -1000000000000 1000000000000 /end CHARACTERISTIC /begin CHARACTERISTIC Mandelbrot.x "" VALUE 0x80010000 F64 0 NO_COMPU_METHOD -1000000000000 1000000000000 /end CHARACTERISTIC -/begin CHARACTERISTIC Mandelbrot.x_pixels "" VALUE 0x80010018 U32 0 NO_COMPU_METHOD 0 4294967295 /end CHARACTERISTIC /begin CHARACTERISTIC Mandelbrot.y "" VALUE 0x80010008 F64 0 NO_COMPU_METHOD -1000000000000 1000000000000 /end CHARACTERISTIC -/begin CHARACTERISTIC Mandelbrot.y_pixels "" VALUE 0x8001001C U32 0 NO_COMPU_METHOD 0 4294967295 /end CHARACTERISTIC /begin GROUP mandelbrot "" /begin REF_CHARACTERISTIC Mandelbrot.width Mandelbrot.x -Mandelbrot.x_pixels Mandelbrot.y -Mandelbrot.y_pixels /end REF_CHARACTERISTIC /end GROUP /begin COMPU_METHOD elapsed_time.Conv "" LINEAR "%6.3" "s" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT elapsed_time "duration of image calculation" FLOAT64_IEEE elapsed_time.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "s" ECU_ADDRESS 0x4 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT elapsed_time "calculation duration" FLOAT64_IEEE elapsed_time.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "s" ECU_ADDRESS 0xC0004 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin MEASUREMENT line_1 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x1011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin MEASUREMENT line_10 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xA011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin MEASUREMENT line_11 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xB011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT @@ -160,10 +157,10 @@ Mandelbrot.y_pixels /begin MEASUREMENT line_7 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x7011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin MEASUREMENT line_8 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x8011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin MEASUREMENT line_9 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x9011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT wait_counter "loop counter" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x10 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT mainloop_counter "mainloop counter" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x1C ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT update_counter "update counter" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0xC0010 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin GROUP mainloop "" /begin REF_MEASUREMENT -elapsed_time -wait_counter +mainloop_counter /end REF_MEASUREMENT /end GROUP /begin GROUP task "" /begin REF_MEASUREMENT line_1 @@ -177,6 +174,10 @@ line_6 line_7 line_8 line_9 +/end REF_MEASUREMENT /end GROUP +/begin GROUP update "" /begin REF_MEASUREMENT +elapsed_time +update_counter /end REF_MEASUREMENT /end GROUP /end MODULE diff --git a/examples/rayon_demo/mandelbrot.png b/examples/rayon_demo/mandelbrot.png index 529ed9a..dd55e49 100644 Binary files a/examples/rayon_demo/mandelbrot.png and b/examples/rayon_demo/mandelbrot.png differ diff --git a/examples/rayon_demo/src/main.rs b/examples/rayon_demo/src/main.rs index b16c45a..34ef13d 100644 --- a/examples/rayon_demo/src/main.rs +++ b/examples/rayon_demo/src/main.rs @@ -8,30 +8,42 @@ use log::{debug, error, info, trace, warn}; use image::{ImageBuffer, Rgb}; use num::Complex; use rayon::prelude::*; -//use std::usize; use std::{thread, time::Duration}; use serde::{Deserialize, Serialize}; use xcp::*; use xcp_type_description_derive::XcpTypeDescription; -/// Write the buffer `pixels`, whose dimensions are given by `bounds`, to the -/// file named `filename`. -fn write_image( - filename: &str, - pixels: &[u8], - mandelbrot: CalSeg, -) -> Result<(), std::io::Error> { - // Black and white - // let output = File::create(filename)?; - // let encoder = PNGEncoder::new(output); - // encoder.encode( - // &pixels, - // mandelbrot.x_pixels as u32, - // mandelbrot.y_pixels as u32, - // ColorType::Gray(8), - // )?; +// Arrays measured may not exxed 2^15 +const X_RES: usize = 1024 * 2; +const Y_RES: usize = 768 * 2; +#[derive(Debug, Copy, Clone, Serialize, Deserialize, XcpTypeDescription)] +struct Mandelbrot { + x: f64, + y: f64, + width: f64, +} + +// Complete set +// const MANDELBROT: Mandelbrot = Mandelbrot { +// x: -0.5, +// y: 0.0, +// width: 3.0, +// }; + +const MANDELBROT: Mandelbrot = Mandelbrot { + x: -1.4, + y: 0.0, + width: 0.015, +}; + +//--------------------------------------------------------------------------------------- +// Image rendering + +// Write the buffer `pixels` to the file named `filename`. +fn write_image(filename: &str, pixels: &[u8]) -> Result<(), std::io::Error> { + // Rainbox color map (credits to CoPilot) let mut color_map = Vec::with_capacity(256); for i in 0..256 { let (r, g, b) = match i { @@ -48,11 +60,10 @@ fn write_image( color_map.push(rgb); } - // Color - let mut imgbuf = ImageBuffer::new(mandelbrot.x_pixels as u32, mandelbrot.y_pixels as u32); + // Create rgb image buffer and write to file + let mut imgbuf = ImageBuffer::new(X_RES as u32, Y_RES as u32); for (x, y, rgb_pixel) in imgbuf.enumerate_pixels_mut() { - *rgb_pixel = - color_map[pixels[y as usize * mandelbrot.x_pixels as usize + x as usize] as usize]; + *rgb_pixel = color_map[pixels[y as usize * X_RES as usize + x as usize] as usize]; } imgbuf.save(filename).unwrap(); @@ -62,23 +73,6 @@ fn write_image( //--------------------------------------------------------------------------------------- // Mandelbrot set -#[derive(Debug, Copy, Clone, Serialize, Deserialize, XcpTypeDescription)] -struct Mandelbrot { - x_pixels: u32, - y_pixels: u32, - x: f64, - y: f64, - width: f64, -} - -const MANDELBROT: Mandelbrot = Mandelbrot { - x_pixels: 3000, - y_pixels: 2000, - x: -1.06, - y: 0.271, - width: 0.022, -}; - /// Try to determine if `c` is in the Mandelbrot set, using at most `limit` /// iterations to decide. /// @@ -107,7 +101,6 @@ fn escape_time(c: Complex, limit: usize) -> Option { /// The `upper_left` and `lower_right` parameters are points on the complex /// plane designating the area our image covers. fn pixel_to_point( - bounds: (usize, usize), pixel: (usize, usize), upper_left: Complex, lower_right: Complex, @@ -117,9 +110,8 @@ fn pixel_to_point( upper_left.im - lower_right.im, ); Complex { - re: upper_left.re + pixel.0 as f64 * width / bounds.0 as f64, - im: upper_left.im - pixel.1 as f64 * height / bounds.1 as f64, // Why subtraction here? pixel.1 increases as we go down, - // but the imaginary component increases as we go up. + re: upper_left.re + pixel.0 as f64 * width / X_RES as f64, + im: upper_left.im - pixel.1 as f64 * height / Y_RES as f64, } } @@ -140,7 +132,7 @@ fn render( // Render line for column in 0..length { - let point = pixel_to_point((length, 1), (column, row), upper_left, lower_right); + let point = pixel_to_point((column, row), upper_left, lower_right); pixels[column] = match escape_time(point, 255) { None => 0, Some(count) => 255 - count as u8, @@ -158,77 +150,82 @@ fn main() { println!("xcp_lite rayon mandelbrot demo"); env_logger::Builder::new() - .filter_level(log::LevelFilter::Info) + .filter_level(log::LevelFilter::Debug) .init(); - const BIND_ADDR: [u8; 4] = [192, 168, 0, 83]; // [127, 0, 0, 1] + const BIND_ADDR: [u8; 4] = [192, 168, 0, 83]; // [172, 19, 11, 24]; // [192, 168, 0, 83]; // [127, 0, 0, 1]; XcpBuilder::new("mandelbrot") - .set_log_level(XcpLogLevel::Info) + .set_log_level(XcpLogLevel::Debug) .enable_a2l(true) .set_epk("EPK") - .start_server(XcpTransportLayer::Udp, BIND_ADDR, 5555, 1464) + .start_server(XcpTransportLayer::Udp, BIND_ADDR, 5555, 8000 - 20 - 8) .unwrap(); let mandelbrot = Xcp::create_calseg("mandelbrot", &MANDELBROT, true); + // The pixel array on heap + let mut pixels = vec![0; X_RES * Y_RES]; + // Create event for this worker thread and register variable index, which is the upper left corner of the rectangle - let event = daq_create_event!("mainloop"); + let event_mainloop = daq_create_event!("mainloop"); + let event_update = daq_create_event!("update"); let mut elapsed_time: f64 = 0.0; - let mut wait_counter: u32 = 0; - daq_register!(elapsed_time, event, "duration of image calculation", "s"); - daq_register!(wait_counter, event, "loop counter", ""); - + let mut mainloop_counter: u32 = 0; + let mut update_counter: u32 = 0; + daq_register!(elapsed_time, event_update, "calculation duration", "s"); + daq_register!(mainloop_counter, event_mainloop, "mainloop counter", ""); + daq_register!(update_counter, event_update, "update counter", ""); + + // Recalculate image in a loop with 10 ms pause + let mut first = true; loop { - thread::sleep(Duration::from_micros(1000)); - let start_time = std::time::Instant::now(); - - let x_pixels: usize = mandelbrot.x_pixels as usize; - let y_pixels: usize = mandelbrot.y_pixels as usize; - let lower_right = Complex { - re: mandelbrot.x - mandelbrot.width / 2.0, - im: mandelbrot.y - mandelbrot.width / 2.0 * y_pixels as f64 / x_pixels as f64, - }; - let upper_left = Complex { - re: mandelbrot.x + mandelbrot.width / 2.0, - im: mandelbrot.y + mandelbrot.width / 2.0 * y_pixels as f64 / x_pixels as f64, - }; - - // Calculate image by lines in parallel - let mut pixels = vec![0; x_pixels * y_pixels]; - let lines: Vec<(usize, &mut [u8])> = pixels.chunks_mut(x_pixels).enumerate().collect(); - lines.into_par_iter().for_each(|(y, band)| { - let band_upper_left = - pixel_to_point((x_pixels, y_pixels), (0, y), upper_left, lower_right); - let band_lower_right = pixel_to_point( - (x_pixels, y_pixels), - (x_pixels, y + 1), - upper_left, - lower_right, + thread::sleep(Duration::from_micros(1000)); // 1ms + mainloop_counter += 1; + event_mainloop.trigger(); + + // On first iteration or after parameter changes: render image and write to file + if first || mandelbrot.sync() { + { + let start_time = std::time::Instant::now(); + + // Calculate image lines in parallel + let lower_right = Complex { + re: mandelbrot.x + mandelbrot.width / 2.0, + im: mandelbrot.y - mandelbrot.width / 2.0 * Y_RES as f64 / X_RES as f64, + }; + let upper_left = Complex { + re: mandelbrot.x - mandelbrot.width / 2.0, + im: mandelbrot.y + mandelbrot.width / 2.0 * Y_RES as f64 / X_RES as f64, + }; + let lines: Vec<(usize, &mut [u8])> = pixels.chunks_mut(X_RES).enumerate().collect(); + lines.into_par_iter().for_each(|(y, band)| { + let band_upper_left = pixel_to_point((0, y), upper_left, lower_right); + let band_lower_right = pixel_to_point((X_RES, y + 1), upper_left, lower_right); + render(band, y, X_RES, band_upper_left, band_lower_right); + }); + + elapsed_time = start_time.elapsed().as_secs_f64(); + + // Measure the pixel array from heap, with an individual event + // daq_event_for_ref!( + // pixels, + // RegistryDataType::Ubyte, + // X_RES as u16, + // Y_RES as u16, + // "pixel array" + // ); + } + + // Write image to file + write_image("mandelbrot.png", &pixels).expect("error writing PNG file"); + println!( + "Image written to mandelbrot.png, frame {} {:.4}s", + mainloop_counter, elapsed_time ); - render(band, y, x_pixels, band_upper_left, band_lower_right); - }); - - // Measure runtime - elapsed_time = start_time.elapsed().as_secs_f64(); - event.trigger(); - println!("Image rendered, duration = {:.3} s", elapsed_time); - - // Render image to png - let m = mandelbrot.clone(); - write_image("mandelbrot.png", &pixels, m).expect("error writing PNG file"); - println!("Image written to mandelbrot.png"); - - // Write A2L file - Xcp::get().write_a2l(); - - // Wait until parameter change and recalculate image - while !mandelbrot.sync() { - thread::sleep(Duration::from_millis(100)); - wait_counter += 1; - event.trigger(); + update_counter += 1; + event_update.trigger(); } - } - //Xcp::get().write_a2l(); - //Xcp::stop_server(); + first = false; + } } diff --git a/examples/tokio_demo/tokio_demo_autodetect.a2l b/examples/tokio_demo/tokio_demo_autodetect.a2l index abe32b4..34fab4a 100644 --- a/examples/tokio_demo/tokio_demo_autodetect.a2l +++ b/examples/tokio_demo/tokio_demo_autodetect.a2l @@ -66,7 +66,7 @@ /end MEMORY_SEGMENT /begin MEMORY_SEGMENT - mandelbrot "" DATA FLASH INTERN 0x80010000 32 -1 -1 -1 -1 -1 + mandelbrot "" DATA FLASH INTERN 0x80010000 24 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT /* index: */ 1 /* pages: */ 2 /* ext: */ 0 0 0 /begin CHECKSUM XCP_ADD_44 MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -110,23 +110,24 @@ OPTIONAL_LEVEL1_CMD GET_VERSION /end PROTOCOL_LAYER /begin DAQ - DYNAMIC 0 12 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID + DYNAMIC 0 13 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID /begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED /begin EVENT "mainloop" "mainloop" 0 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_1" "task_1" 1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_2" "task_2" 2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_3" "task_3" 3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_4" "task_4" 4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_5" "task_5" 5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_6" "task_6" 6 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_7" "task_7" 7 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_8" "task_8" 8 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_9" "task_9" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_10" "task_10" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task_11" "task_11" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "pixels" "pixels" 1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_1" "task_1" 2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_2" "task_2" 3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_3" "task_3" 4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_4" "task_4" 5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_5" "task_5" 6 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_6" "task_6" 7 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_7" "task_7" 8 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_8" "task_8" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_9" "task_9" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_10" "task_10" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task_11" "task_11" 12 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /end DAQ @@ -136,34 +137,34 @@ /begin CHARACTERISTIC Mandelbrot.width "" VALUE 0x80010010 F64 0 NO_COMPU_METHOD -1000000000000 1000000000000 /end CHARACTERISTIC /begin CHARACTERISTIC Mandelbrot.x "" VALUE 0x80010000 F64 0 NO_COMPU_METHOD -1000000000000 1000000000000 /end CHARACTERISTIC -/begin CHARACTERISTIC Mandelbrot.x_pixels "" VALUE 0x80010018 U32 0 NO_COMPU_METHOD 0 4294967295 /end CHARACTERISTIC /begin CHARACTERISTIC Mandelbrot.y "" VALUE 0x80010008 F64 0 NO_COMPU_METHOD -1000000000000 1000000000000 /end CHARACTERISTIC -/begin CHARACTERISTIC Mandelbrot.y_pixels "" VALUE 0x8001001C U32 0 NO_COMPU_METHOD 0 4294967295 /end CHARACTERISTIC /begin GROUP mandelbrot "" /begin REF_CHARACTERISTIC Mandelbrot.width Mandelbrot.x -Mandelbrot.x_pixels Mandelbrot.y -Mandelbrot.y_pixels /end REF_CHARACTERISTIC /end GROUP /begin COMPU_METHOD elapsed_time.Conv "" LINEAR "%6.3" "s" COEFFS_LINEAR 1 0 /end COMPU_METHOD /begin MEASUREMENT elapsed_time "duration of image calculation" FLOAT64_IEEE elapsed_time.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "s" ECU_ADDRESS 0x4 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_1 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x1011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_10 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xA011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_11 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xB011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_2 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x2011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_3 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x3011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_4 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x4011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 4 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_5 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x5011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 5 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_6 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x6011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 6 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_7 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x7011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_8 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x8011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT line_9 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x9011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT wait_counter "loop counter" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x10 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT frame_counter "frame counter" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x10 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_1 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x2011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_10 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xB011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_11 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xC011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_2 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x3011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_3 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x4011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 4 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_4 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x5011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 5 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_5 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x6011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 6 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_6 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x7011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_7 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x8011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_8 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x9011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT line_9 "" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0xA011E ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT pixels "pixel array" UBYTE NO_COMPU_METHOD 0 0 0 255 PHYS_UNIT "" ECU_ADDRESS 0x10000 ECU_ADDRESS_EXTENSION 2 MATRIX_DIM 256 128 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin GROUP mainloop "" /begin REF_MEASUREMENT elapsed_time -wait_counter +frame_counter +/end REF_MEASUREMENT /end GROUP +/begin GROUP pixels "" /begin REF_MEASUREMENT +pixels /end REF_MEASUREMENT /end GROUP /begin GROUP task "" /begin REF_MEASUREMENT line_1 diff --git a/src/cal.rs b/src/cal.rs index b2540c4..d4d16a3 100644 --- a/src/cal.rs +++ b/src/cal.rs @@ -216,7 +216,7 @@ impl CalSegList { // Address is index<<16, addr_ext is 0 { for (i, d) in self.0.iter().enumerate() { - trace!("register CalSeg {}, size={}", d.get_name(), d.get_size()); + trace!("Register CalSeg {}, size={}", d.get_name(), d.get_size()); assert!(i == d.calseg.lock().unwrap().get_index()); Xcp::get().get_registry().lock().unwrap().add_cal_seg( d.get_name(), diff --git a/src/cal/cal_seg.rs b/src/cal/cal_seg.rs index d8d4d0c..b249a66 100644 --- a/src/cal/cal_seg.rs +++ b/src/cal/cal_seg.rs @@ -150,7 +150,7 @@ where } } } - return false; + false } } diff --git a/src/daq/daq_event.rs b/src/daq/daq_event.rs index ad2a1ac..cf462c9 100644 --- a/src/daq/daq_event.rs +++ b/src/daq/daq_event.rs @@ -6,6 +6,59 @@ use log::{debug, error, info, trace, warn}; use crate::{reg::RegistryMeasurement, xcp::*, RegistryDataType}; +//---------------------------------------------------------------------------------------------- +// XcpEvent + +impl Xcp { + // Create a measurement event and a measurement variable directly associated to the event with memory offset 0 + pub fn create_measurement_object( + &self, + name: &'static str, + data_type: RegistryDataType, + x_dim: u16, + y_dim: u16, + comment: &'static str, + ) -> XcpEvent { + let event = self.create_event(name, false); + self.get_registry() + .lock() + .unwrap() + .add_measurement(RegistryMeasurement::new( + name.to_string(), + data_type, + x_dim, + y_dim, + event, + 0, // byte_offset + 0, + 1.0, // factor + 0.0, // offset + comment, + "", // unit + )); + event + } +} + +/// Create a single instance XCP event and register the given variable once, trigger the event +#[allow(unused_macros)] +#[macro_export] +macro_rules! daq_event_ref { + + ( $id:expr, $data_type: expr, $x_dim: expr, $comment:expr ) => {{ + lazy_static::lazy_static! { + static ref XCP_EVENT__: XcpEvent = Xcp::get().create_measurement_object(stringify!($id), $data_type, $x_dim, 1, $comment); + } + XCP_EVENT__.trigger(&(*$id) as *const _ as *const u8, 0 ); + }}; + ( $id:expr, $data_type: expr, $x_dim: expr, $y_dim: expr, $comment:expr ) => {{ + lazy_static::lazy_static! { + static ref XCP_EVENT__: XcpEvent = Xcp::get().create_measurement_object(stringify!($id), $data_type, $x_dim, $y_dim, $comment); + } + XCP_EVENT__.trigger(&(*$id) as *const _ as *const u8, 0); + }}; +} + //---------------------------------------------------------------------------------------------- // DaqEvent @@ -56,12 +109,17 @@ impl DaqEvent { self.buffer[offset as usize..offset as usize + data.len()].copy_from_slice(data); } - /// Trigger this event + /// Trigger for stack or capture buffer measurement with base pointer relative addressing pub fn trigger(&self) { let base: *const u8 = &self.buffer as *const u8; self.event.trigger(base, self.buffer_len as u32); } + /// Trigger for stack measurement with absolute addressing + pub fn trigger_abs(&self) { + self.event.trigger_abs(); + } + /// Associate a variable to this DaqEvent, allocate space in the capture buffer and register it #[allow(clippy::too_many_arguments)] pub fn add_capture( @@ -69,7 +127,8 @@ impl DaqEvent { name: &'static str, size: usize, datatype: RegistryDataType, - dim: usize, + x_dim: u16, + y_dim: u16, factor: f64, offset: f64, unit: &'static str, @@ -90,9 +149,11 @@ impl DaqEvent { .add_measurement(RegistryMeasurement::new( name.to_string(), datatype, - dim, + x_dim, + y_dim, event, event_offset, + 0u64, factor, offset, comment, @@ -108,7 +169,8 @@ impl DaqEvent { name: &'static str, ptr: *const u8, datatype: RegistryDataType, - dim: usize, + x_dim: u16, + y_dim: u16, factor: f64, offset: f64, unit: &'static str, @@ -116,7 +178,7 @@ impl DaqEvent { ) { let p = ptr as usize; // variable address let b = &self.buffer as *const _ as usize; // base address - trace!( + debug!( "add_stack: {} {:?} ptr={:p} base={:p}", name, datatype, @@ -136,15 +198,60 @@ impl DaqEvent { .add_measurement(RegistryMeasurement::new( name.to_string(), datatype, - dim, + x_dim, + y_dim, self.event, event_offset, + 0u64, + factor, + offset, + comment, + unit, + )); + } + + + /// Associate a variable on stack to this DaqEvent and register it + #[allow(clippy::too_many_arguments)] + pub fn add_heap( + &self, + name: &'static str, + ptr: *const u8, + datatype: RegistryDataType, + x_dim: u16, + y_dim: u16, + factor: f64, + offset: f64, + unit: &'static str, + comment: &'static str, + ) { + debug!( + "add_heap: {} {:?} ptr={:p} ", + name, + datatype, + ptr, + + ); + + Xcp::get() + .get_registry() + .lock() + .unwrap() + .add_measurement(RegistryMeasurement::new( + name.to_string(), + datatype, + x_dim, + y_dim, + self.event, + 0i16, + ptr as u64, factor, offset, comment, unit, )); } + } //----------------------------------------------------------------------------- @@ -159,6 +266,7 @@ impl DaqEvent { #[allow(unused_macros)] #[macro_export] macro_rules! daq_create_event { + // Without capture buffer ( $name:expr, $capacity: literal ) => {{ // Scope for lazy static XCP_EVENT__, create the XCP event only once lazy_static::lazy_static! { @@ -167,6 +275,7 @@ macro_rules! daq_create_event { // Create the DAQ event every time the thread is running through this code DaqEvent::<$capacity>::new_from(&XCP_EVENT__) }}; + // With capture buffer capacity ( $name:expr ) => {{ lazy_static::lazy_static! { static ref XCP_EVENT__: XcpEvent = Xcp::get().create_event($name, false); @@ -196,7 +305,8 @@ macro_rules! daq_capture { stringify!($id), std::mem::size_of_val(&$id), $id.get_type(), - 1, // dim + 1, // x_dim + 1, // y_dim $factor, $offset, $unit, @@ -226,7 +336,8 @@ macro_rules! daq_capture { stringify!($id), std::mem::size_of_val(&$id), $id.get_type(), - 1, // dim + 1, // x_dim + 1, // y_dim 1.0, 0.0, $unit, @@ -255,7 +366,8 @@ macro_rules! daq_capture { stringify!($id), std::mem::size_of_val(&$id), $id.get_type(), - 1, // dim + 1, // x_dim + 1, // y_dim 1.0, 0.0, "", @@ -291,7 +403,8 @@ macro_rules! daq_serialize { stringify!($id), std::mem::size_of_val(&$id), RegistryDataType::Blob, - $daq_event.buffer.len(), // dim + $daq_event.buffer.len() as u16, // x_dim + 1, // y_dim 1.0, 0.0, "", @@ -333,6 +446,7 @@ macro_rules! daq_register { &$id as *const _ as *const u8, $id.get_type(), 1, + 1, $factor, $offset, $unit, @@ -358,6 +472,7 @@ macro_rules! daq_register { &$id as *const _ as *const u8, $id.get_type(), 1, + 1, 1.0, 0.0, $unit, @@ -383,6 +498,41 @@ macro_rules! daq_register { &$id as *const _ as *const u8, $id.get_type(), 1, + 1, + 1.0, + 0.0, + "", + "", + ); + }; + }}; +} + +/// Register a local variable which is a reference to heap with basic type for the given daq event +/// Address will be absolute addressing mode +/// No capture buffer required +#[allow(unused_macros)] +#[macro_export] +macro_rules! daq_register_ref { + // name, event + ( $id:ident, $daq_event:expr ) => {{ + static DAQ_OFFSET__: std::sync::atomic::AtomicI16 = + std::sync::atomic::AtomicI16::new(-32768); + if DAQ_OFFSET__ + .compare_exchange( + -32768, + 0, + std::sync::atomic::Ordering::Relaxed, + std::sync::atomic::Ordering::Relaxed, + ) + .is_ok() + { + $daq_event.add_heap( + stringify!($id), + &(*$id) as *const _ as *const u8, + (*$id).get_type(), + 1, + 1, 1.0, 0.0, "", @@ -411,12 +561,13 @@ macro_rules! daq_register_array { ) .is_ok() { - let dim = std::mem::size_of_val(&$id) / std::mem::size_of_val(&$id[0]); + let dim = (std::mem::size_of_val(&$id) / std::mem::size_of_val(&$id[0])) as u16; $daq_event.add_stack( stringify!($id), &$id as *const _ as *const u8, ($id[0]).get_type(), dim, + 1, 1.0, 0.0, "", @@ -475,7 +626,8 @@ macro_rules! daq_capture_instance { stringify!($id), std::mem::size_of_val(&$id), $id.get_type(), - 1, + 1, // x_dim + 1, // y_dim $factor, $offset, $unit, @@ -497,7 +649,8 @@ macro_rules! daq_capture_instance { stringify!($id), std::mem::size_of_val(&$id), $id.get_type(), - 1, + 1, // x_dim + 1, // y_dim 1.0, 0.0, $unit, @@ -519,7 +672,8 @@ macro_rules! daq_capture_instance { stringify!($id), std::mem::size_of_val(&$id), $id.get_type(), - 1, + 1, // x_dim + 1, // y_dim 1.0, 0.0, "", @@ -549,6 +703,7 @@ macro_rules! daq_register_instance { &$id as *const _ as *const u8, $id.get_type(), 1, + 1, 1.0, 0.0, "", diff --git a/src/main.rs b/src/main.rs index a2c342a..b638340 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,8 +57,8 @@ struct Args { #[arg(short, long, default_value_t = 5555)] port: u16, - /// Segment size (UDP MTU) - #[arg(short, long, default_value_t = 7500)] + /// XCP segment size (jumbo frames supported with MTU up to 8000 bytes -> segment_size <= (OPTION_MTU-20-8), OPTION_MTU defined in main_cfg.h ) + #[arg(short, long, default_value_t = 8000-20-8)] segment_size: u16, /// Don't create A2L file @@ -330,7 +330,8 @@ fn main() { let xcp_builder = XcpBuilder::new("xcp_lite") .set_log_level(log_level) .enable_a2l(!args.no_a2l) - //.set_epk(build_info::format!("{}", $.timestamp)); + // .set_segment_size(1500-20-8) // no jumbo frames + // .set_epk(build_info::format!("{}", $.timestamp)); // EPK from build info .set_epk("EPK_"); let xcp = match xcp_builder.start_server( @@ -344,7 +345,7 @@ fn main() { args.segment_size, ) { Err(res) => { - error!("XCP initialization failed: {:?}", res); + error!("XCP server initialization failed: {:?}", res); return; } Ok(xcp) => xcp, @@ -387,26 +388,46 @@ fn main() { // Mainloop xcp_println!("Main task starts"); - let mut mainloop_counter: u64 = 0; - let mut mainloop_counter2 = Box::new(0u64); - let mut mainloop_event = daq_create_event!("mainloop", 8); - daq_register!(mainloop_counter, mainloop_event, "counter on stack", ""); + let mut mainloop_counter1: u64 = 0; + let mut mainloop_counter2 = Box::new(0u64); + let mut mainloop_counter3 = Box::new(0u64); + let mut mainloop_array = Box::new([[0u8; 16]; 16]); + let mut mainloop_event = daq_create_event!("mainloop", 8); // Capture buffer 8 bytes for mainloop_counter3 + daq_register!(mainloop_counter1, mainloop_event); + //daq_register_ref!(mainloop_counter2, mainloop_event); + loop { - // @@@@ Dev: Terminate after 3s to check shutdown and drop behaviour - // if START_TIME.elapsed().as_secs() > 3 { - // break; - // } // @@@@ Dev: Terminate mainloop for shutdown if calibration parameter run is false, for test automation if !calseg.run { break; } thread::sleep(Duration::from_millis(50)); - mainloop_counter += 1; - *mainloop_counter2 += 1; - daq_capture!(mainloop_counter2, mainloop_event, "counter on heap", ""); + mainloop_counter1 += 1; + *mainloop_counter2 += 2; + *mainloop_counter3 += 3; + mainloop_array[0][0] = mainloop_counter1 as u8; + + + // Capture variable from heap + daq_capture!(mainloop_counter3,mainloop_event); + + // Measure variable directly from heap with individual event "mainloop_array" + daq_event_ref!( + mainloop_array, + RegistryDataType::AUint64, + 16, + 16, + "array on heap" + ); + + // Measure directly from stack with event "mainloop" + mainloop_event.trigger(); + + // Sync + calseg.sync(); // Check if the XCP server is still alive // Optional @@ -415,15 +436,11 @@ fn main() { break; } - // Sync and trigger mainloop event - calseg.sync(); - mainloop_event.trigger(); - // @@@@ Dev: // Finalize A2l after 2s delay // This is just for testing, to force immediate creation of A2L file // Without this, the A2L file will be automatically written on XCP connect, to be available for download by CANape - if !args.no_a2l && mainloop_counter == 1 { + if !args.no_a2l && mainloop_counter1 == 1 { thread::sleep(Duration::from_secs(2)); xcp.write_a2l(); // Test A2L write // xcp.set_init_request(); // Test init request diff --git a/src/reg/registry.rs b/src/reg/registry.rs index b7a17bd..0a50ce1 100644 --- a/src/reg/registry.rs +++ b/src/reg/registry.rs @@ -325,9 +325,11 @@ impl RegistryEpk { pub struct RegistryMeasurement { name: String, datatype: RegistryDataType, // Basic types Ubyte, SByte, AUint64, Float64Ieee, ... or Blob - dim: usize, // 1 = basic type (A2L MEASUREMENT), >1 = array[dim] of basic type (A2L MEASUREMENT with MATRIX_DIM) + x_dim: u16, // 1 = basic type (A2L MEASUREMENT), >1 = array[dim] of basic type (A2L MEASUREMENT with MATRIX_DIM x (max u16)) + y_dim: u16, // 1 = basic type (A2L MEASUREMENT), >1 = array[x_dim,y_dim] of basic type (A2L MEASUREMENT with MATRIX_DIM x,y (max u16)) event: XcpEvent, - event_offset: i16, // Address offset (signed) relative to event memory context (XCP_ADDR_EXT_DYN) + addr_offset: i16, // Address offset (signed!) relative to event memory context (XCP_ADDR_EXT_DYN) + addr: u64, factor: f64, offset: f64, comment: &'static str, @@ -339,20 +341,25 @@ impl RegistryMeasurement { pub fn new( name: String, datatype: RegistryDataType, - dim: usize, + x_dim: u16, + y_dim: u16, event: XcpEvent, event_offset: i16, + addr: u64, factor: f64, offset: f64, comment: &'static str, unit: &'static str, ) -> Self { + assert!((x_dim as usize * y_dim as usize) * datatype.get_size() <= u16::MAX as usize / 2); RegistryMeasurement { name, datatype, - dim, + x_dim, + y_dim, event, - event_offset, + addr_offset: event_offset, + addr, factor, offset, comment, @@ -367,17 +374,26 @@ impl RegistryMeasurement { pub fn datatype(&self) -> RegistryDataType { self.datatype } - - pub fn dim(&self) -> usize { - self.dim + pub fn dim(&self) -> u16 { + self.x_dim * self.y_dim + } + pub fn x_dim(&self) -> u16 { + self.x_dim + } + pub fn y_dim(&self) -> u16 { + self.y_dim } pub fn event(&self) -> XcpEvent { self.event } - pub fn event_offset(&self) -> i16 { - self.event_offset + pub fn addr_offset(&self) -> i16 { + self.addr_offset + } + + pub fn addr(&self) -> u64 { + self.addr } pub fn factor(&self) -> f64 { @@ -668,23 +684,15 @@ impl Registry { /// # panics /// If a measurement with the same name already exists /// If the registry is closed - /// - /// - /// - /// - /// - /// - /// - /// - /// pub fn add_measurement(&mut self, mut m: RegistryMeasurement) { debug!( - "add_measurement: {} type={:?}[{}] event={}+({})", + "add_measurement: {} type={:?}[{},{}] event={}+({})", m.name, m.datatype, - m.dim, + m.x_dim, + m.y_dim, m.event.get_num(), - m.event_offset + m.addr_offset ); // Panic if registry is closed @@ -797,8 +805,10 @@ mod registry_tests { "signal1".to_string(), RegistryDataType::Float64Ieee, 1, + 1, event, 0, + 0, 1.0, 0.0, "unit", diff --git a/src/reg/registry/a2l_writer.rs b/src/reg/registry/a2l_writer.rs index 01c8b77..e1b18b5 100644 --- a/src/reg/registry/a2l_writer.rs +++ b/src/reg/registry/a2l_writer.rs @@ -125,16 +125,22 @@ impl GenerateA2l for RegistryCalSegList { impl GenerateA2l for RegistryMeasurement { fn to_a2l_string(&self) -> String { - let (ext, addr) = self.event.get_daq_ext_addr(self.event_offset); + + let (ext, addr) = if self.addr == 0 { + self.event.get_dyn_ext_addr(self.addr_offset) + } else { + self.event.get_abs_ext_addr(self.addr) + }; trace!( - "write measurement: {} {} {}:0x{:08X} event={},{}", + "write measurement: {} {} {}:0x{:08X} event={}+{}, addr=0x{:08X}", self.name, self.datatype.get_type_str(), ext, addr, self.event.get_num(), - self.event_offset + self.addr_offset, + self.addr ); let name = &self.name; @@ -144,13 +150,15 @@ impl GenerateA2l for RegistryMeasurement { let max = self.datatype.get_max(); let offset = self.offset; let type_str = self.datatype.get_type_str(); - let dim = self.dim; + let x_dim = self.x_dim; + let y_dim = self.y_dim; + let min = self.datatype.get_min(); let event = self.event.get_num(); // Dynamic object as CHARACTERISTIC ASCII string with IDL annotation if self.datatype == RegistryDataType::Blob { - let buffer_size = self.dim; + let buffer_size = self.x_dim * self.y_dim; let annotation = format!( r#" @@ -184,8 +192,12 @@ impl GenerateA2l for RegistryMeasurement { ) } else { // Measurement signals or array of signals - let matrix_dim = if dim > 1 { - format!("MATRIX_DIM {} ", dim) + let matrix_dim = if x_dim > 1 && y_dim > 1 { + format!("MATRIX_DIM {} {} ", x_dim, y_dim) + } else if x_dim > 1 { + format!("MATRIX_DIM {} ", x_dim) + } else if y_dim > 1 { + format!("MATRIX_DIM {} ", y_dim) } else { "".to_string() }; diff --git a/src/xcp.rs b/src/xcp.rs index 5812db8..4aa6f21 100644 --- a/src/xcp.rs +++ b/src/xcp.rs @@ -60,11 +60,11 @@ impl XcpLogLevel { // The remapping is done when the registry is finalized and the A2L is written // # Safety // Use of a mutable static is save, because mutation for remapping is done only once in a thread safe context -const XCP_MAX_EVENTS: usize = 256; -static mut XCP_EVENT_MAP: [u16; XCP_MAX_EVENTS] = [0; XCP_MAX_EVENTS]; +static mut XCP_EVENT_MAP: [u16; XcpEvent::XCP_MAX_EVENTS] = [0; XcpEvent::XCP_MAX_EVENTS]; /// Represents a measurement event /// Holds the u16 XCP event number used in the XCP protocol and A2L to identify an event +/// May have an index > 0 to identify multiple events with the same name in instanciated in different threads #[derive(Debug, Clone, Copy)] pub struct XcpEvent { num: u16, // Number used in A2L and XCP protocol @@ -72,6 +72,11 @@ pub struct XcpEvent { } impl XcpEvent { + + /// Maximum number of events + pub const XCP_MAX_EVENTS: usize = 256; + + // Uninitialized event pub const UNDEFINED: XcpEvent = XcpEvent { num: 0xFFFF, index: 0, @@ -79,6 +84,7 @@ impl XcpEvent { /// Create a new XCP event pub fn new(num: u16, index: u16) -> XcpEvent { + assert!((num as usize) < XcpEvent::XCP_MAX_EVENTS, "Maximum number of events exceeded"); unsafe { XCP_EVENT_MAP[num as usize] = num; } @@ -117,20 +123,39 @@ impl XcpEvent { self.index } - // Get address externsion and address for A2L generation - pub fn get_daq_ext_addr(self, offset: i16) -> (u8, u32) { + /// Get address extension and address for A2L generation for XCP_ADDR_EXT_DYN addressing mode + /// Used by A2L writer + pub fn get_dyn_ext_addr(self, offset: i16) -> (u8, u32) { let a2l_ext = Xcp::XCP_ADDR_EXT_DYN; let a2l_addr: u32 = (self.get_num() as u32) << 16 | (offset as u16 as u32); (a2l_ext, a2l_addr) } - /// Trigger a XCP event and provide a base pointer for relative addressing with address extension 0 + /// Get address extension and address for A2L generation for XCP_ADDR_EXT_ABS addressing mode + /// Used by A2L writer + pub fn get_abs_ext_addr(self, addr: u64) -> (u8, u32) { + let a2l_ext = Xcp::XCP_ADDR_EXT_ABS; + let a2l_addr = unsafe { xcplib::ApplXcpGetAddr(addr as *const u8) }; + (a2l_ext, a2l_addr) + } + + /// Trigger a XCP event and provide a base pointer for relative addressing mode (XCP_ADDR_EXT_DYN) + /// Address of the associated measurement variable must be relative to base + /// /// # Safety /// This is a C ffi call, which gets a pointer to a daq capture buffer /// The provenance of the pointer (len, lifetime) is is guaranteed , it refers to self /// The buffer must match its registry description, to avoid corrupt data given to the XCP tool #[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn trigger(self, base: *const u8, len: u32) -> u8 { + // trace!( + // "Trigger event {} num={}, index={}, base=0x{:X}, len={}", + // self.get_name(), + // self.get_num(), + // self.get_index(), + // base as u64, + // len + // ); // @@@@ unsafe - C library call // @@@@ unsafe - Transfering a pointer and its valid memory range to XCPlite FFI unsafe { @@ -138,6 +163,28 @@ impl XcpEvent { xcplib::XcpEventExt(self.get_num(), base, len) } } + + /// Trigger a XCP event for measurement objects in absolute addressing mode (XCP_ADDR_EXT_DYN) + /// Address of the associated measurement variable must be relative to module load addr + /// In 64 applications, this offset might overflow in the A2L description - this is checked wenn generating A2L + /// + /// # Safety + /// This is a C ffi call, which gets a pointer to a daq capture buffer + #[allow(clippy::not_unsafe_ptr_arg_deref)] + pub fn trigger_abs(self) { + // trace!( + // "Trigger event {} num={}, index={}, len={}", + // self.get_name(), + // self.get_num(), + // self.get_index(), + // len + // ); + // @@@@ unsafe - C library call + unsafe { + // Trigger event + xcplib::XcpEvent(self.get_num()); + } + } } impl PartialEq for XcpEvent { @@ -169,7 +216,7 @@ impl EventList { fn clear(&mut self) { unsafe { - XCP_EVENT_MAP = [0; XCP_MAX_EVENTS]; + XCP_EVENT_MAP = [0; XcpEvent::XCP_MAX_EVENTS]; } self.0.clear(); } @@ -212,6 +259,7 @@ impl EventList { XCP_EVENT_MAP[e.event.num as usize] = i as u16; // New external event number is index pointer to sorted list } } + trace!("Event map: {:?}", unsafe { XCP_EVENT_MAP }); // Register all events let r = Xcp::get().get_registry(); @@ -415,6 +463,19 @@ lazy_static::lazy_static! { } impl Xcp { + + + /// Absolute addressing mode of XCPlite + pub const XCP_ADDR_EXT_ABS: u8 = 1; // Used for DAQ objects on heap (addr is relative to module load address) + /// Relative addressing mode of XCPlite + pub const XCP_ADDR_EXT_DYN: u8 = 2; // Used for DAQ objects on stack and capture DAQ ( event in addr high word, low word relative to base given to XcpEventExt ) + /// Segment relative addressing mode of XCPlite handled by applications read/write callbacks + pub const XCP_ADDR_EXT_APP: u8 = 0; // Used for CAL objects (addr = index | 0x8000 in high word (CANape does not support addr_ext in memory segments)) + + /// Addr of the EPK + pub const XCP_EPK_ADDR: u32 = 0x80000000; + + // new fn new() -> Xcp { // @@@@ unsafe - C library call @@ -516,11 +577,6 @@ impl Xcp { m.get_name(index) } - pub const XCP_EPK_ADDR: u32 = 0x80000000; - // pub const XCP_ADDR_EXT_ABS: u8 = 1; // Not used (addr = relative to module load address) - pub const XCP_ADDR_EXT_DYN: u8 = 2; // Used for DAQ (addr = event in high word) - pub const XCP_ADDR_EXT_APP: u8 = 0; // Used for CAL (addr = index | 0x8000 in high word (CANape does not support addr_ext in memory segments)) - /// Get registry addr base for a CalSeg pub fn get_calseg_addr_base(calseg_index: usize) -> u32 { (((calseg_index as u32) + 1) | 0x8000) << 16 // Address format for calibration segment field is index | 0x8000 in high word, addr_ext is 0 (CANape does not support addr_ext in memory segments) diff --git a/src/xcplite.rs b/src/xcplite.rs index 5bc55e0..5b4148c 100644 --- a/src/xcplite.rs +++ b/src/xcplite.rs @@ -27,12 +27,18 @@ extern "C" { extern "C" { pub fn XcpInit(); } +extern "C" { + pub fn XcpEvent(event: u16); +} extern "C" { pub fn XcpEventExt(event: u16, base: *const u8, len: u32) -> u8; } extern "C" { pub fn XcpPrint(str_: *const ::std::os::raw::c_char); } +extern "C" { + pub fn ApplXcpGetAddr(p: *const u8) -> u32; +} extern "C" { pub fn XcpEthServerInit( addr: *const u8, diff --git a/tests/multi_task.rs b/tests/multi_task.rs deleted file mode 100644 index 5e7ffe5..0000000 --- a/tests/multi_task.rs +++ /dev/null @@ -1,132 +0,0 @@ -// multi_task -// Integration test for XCP in a application with dynamic tasks -// Uses the test XCP client in test_executor - -use xcp::*; -use xcp_type_description_derive::XcpTypeDescription; - -mod test_executor; -use test_executor::test_executor; - -#[allow(unused_imports)] -use log::{debug, error, info, trace, warn}; -use serde::{Deserialize, Serialize}; -use std::{fmt::Debug, thread}; -use tokio::time::Duration; - -//----------------------------------------------------------------------------- -// XCP - -const OPTION_SERVER_ADDR: [u8; 4] = [127, 0, 0, 1]; // Localhost -const OPTION_SERVER_PORT: u16 = 5555; -const OPTION_TRANSPORT_LAYER: XcpTransportLayer = XcpTransportLayer::Udp; // XcpTransportLayer::TcpIp or XcpTransportLayer::UdpIp -const OPTION_SEGMENT_SIZE: u16 = 1500 - 28; // UDP MTU -const OPTION_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Info; -const OPTION_XCP_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Warn; - -//----------------------------------------------------------------------------- -// Calibration Segment - -#[derive(Debug, Clone, Copy, Serialize, Deserialize, XcpTypeDescription)] -struct CalPage1 { - run: bool, - counter_max: u32, - cycle_time_us: u32, -} - -const CAL_PAR1: CalPage1 = CalPage1 { - run: true, - counter_max: 10, - cycle_time_us: 1000, -}; - -//----------------------------------------------------------------------------- - -fn task1(cal_seg: CalSeg) { - let mut event = daq_create_event!("task", 8); - - let mut counter: u32 = 0; - let mut counter_max: u32 = 0; - - loop { - thread::sleep(Duration::from_micros(cal_seg.cycle_time_us as u64)); - - daq_capture!(counter_max, event); - daq_capture!(counter, event); - event.trigger(); - - counter += 1; - counter_max = cal_seg.counter_max; - if counter > counter_max { - break; - } - } - - debug!("Task1 terminated"); -} - -// Test task will be instantiated multiple times -fn task0(cal_seg: CalSeg) { - loop { - thread::sleep(Duration::from_micros(100)); - - let c = cal_seg.clone(); - let t = thread::spawn(move || { - task1(c); - }); - t.join().unwrap(); - - cal_seg.sync(); - - // Check for termination - if !cal_seg.run { - break; - } - } - - info!("Task0 terminated"); -} - -//----------------------------------------------------------------------------- -// Integration test single threads calibration - -#[tokio::test] -async fn test_multi_task() { - env_logger::Builder::new() - .filter_level(OPTION_LOG_LEVEL.to_log_level_filter()) - .init(); - - // Initialize XCP driver singleton, the transport layer server and enable the A2L writer - match XcpBuilder::new("xcp_lite") - .set_log_level(OPTION_XCP_LOG_LEVEL) - .enable_a2l(true) - .set_epk("EPK_TEST") - .start_server( - OPTION_TRANSPORT_LAYER, - OPTION_SERVER_ADDR, - OPTION_SERVER_PORT, - OPTION_SEGMENT_SIZE, - ) { - Err(res) => { - error!("XCP initialization failed: {:?}", res); - return; - } - Ok(xcp) => xcp, - }; - - // Create a calibration segment - let cal_seg = Xcp::create_calseg("cal_seg", &CAL_PAR1, true); - - // Start the test task - let t0 = thread::spawn(move || { - task0(cal_seg); - }); - - // Execute the test - test_executor(false, false, OPTION_LOG_LEVEL).await; // Start the test executor XCP client - - t0.join().unwrap(); - - Xcp::stop_server(); - std::fs::remove_file("xcp_client.a2l").ok(); -} diff --git a/tests/multi_thread.rs b/tests/multi_thread.rs index 54d508e..8ed3c7c 100644 --- a/tests/multi_thread.rs +++ b/tests/multi_thread.rs @@ -22,7 +22,7 @@ const OPTION_SERVER_PORT: u16 = 5555; const OPTION_TRANSPORT_LAYER: XcpTransportLayer = XcpTransportLayer::Udp; // XcpTransportLayer::TcpIp or XcpTransportLayer::UdpIp const OPTION_SEGMENT_SIZE: u16 = 1500 - 28; // UDP MTU const OPTION_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Info; -const OPTION_XCP_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Warn; +const OPTION_XCP_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Info; //----------------------------------------------------------------------------- // Calibration Segment @@ -193,7 +193,7 @@ async fn test_multi_thread() { v.push(t); } - test_executor(false, true, OPTION_LOG_LEVEL).await; // Start the test executor XCP client + test_executor(false, true).await; // Start the test executor XCP client for t in v { t.join().ok(); diff --git a/tests/single_thread.rs b/tests/single_thread.rs index 581ad0e..842fca7 100644 --- a/tests/single_thread.rs +++ b/tests/single_thread.rs @@ -22,7 +22,7 @@ const OPTION_SERVER_PORT: u16 = 5555; const OPTION_TRANSPORT_LAYER: XcpTransportLayer = XcpTransportLayer::Udp; // XcpTransportLayer::TcpIp or XcpTransportLayer::UdpIp const OPTION_SEGMENT_SIZE: u16 = 1500 - 28; // UDP MTU const OPTION_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Info; -const OPTION_XCP_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Warn; +const OPTION_XCP_LOG_LEVEL: XcpLogLevel = XcpLogLevel::Info; //----------------------------------------------------------------------------- // static calibration parameters @@ -205,7 +205,7 @@ async fn test_single_thread() { task(cal_seg); }); - test_executor(true, false, OPTION_LOG_LEVEL).await; // Start the test executor XCP client + test_executor(true, false).await; // Start the test executor XCP client t1.join().ok(); Xcp::stop_server(); diff --git a/tests/test_executor/mod.rs b/tests/test_executor/mod.rs index 9188ec8..a11338a 100644 --- a/tests/test_executor/mod.rs +++ b/tests/test_executor/mod.rs @@ -192,7 +192,7 @@ impl XcpDaqDecoder for DaqDecoder { //----------------------------------------------------------------------- // Execute tests -pub async fn test_executor(single_thread: bool, multi_thread: bool, log_level: XcpLogLevel) { +pub async fn test_executor(single_thread: bool, multi_thread: bool) { tokio::time::sleep(Duration::from_millis(500)).await; info!("Start test executor"); @@ -291,10 +291,9 @@ pub async fn test_executor(single_thread: bool, multi_thread: bool, log_level: X //------------------------------------------------------------------------------------------------------------------------------------- // DAQ test single_thread or multi_thread if single_thread || multi_thread { - let log_level_daq_test = log_level; + tokio::time::sleep(Duration::from_micros(10000)).await; info!("Start data acquisition test"); - Xcp::set_server_log_level(log_level_daq_test); // Create a calibration object for CalPage1.counter_max // Set counter_max to 15 @@ -429,15 +428,7 @@ pub async fn test_executor(single_thread: bool, multi_thread: bool, log_level: X assert_eq!(d.odt_max, 0); } } - //------------------------------------------------------------------------------------------------------------------------------------- - // DAQ test multi_task - else { - xcp_client.create_measurement_object("counter_max").unwrap(); - xcp_client.create_measurement_object("counter").unwrap(); - xcp_client.start_measurement().await.unwrap(); - tokio::time::sleep(Duration::from_millis(1000)).await; - xcp_client.stop_measurement().await.unwrap(); - } + // Wait some time to be sure the queue is emptied // The XCP server should not respond to STOP while the queue is not empty diff --git a/xcp_client/src/a2l/a2l_reader.rs b/xcp_client/src/a2l/a2l_reader.rs index d946ed6..274fff6 100644 --- a/xcp_client/src/a2l/a2l_reader.rs +++ b/xcp_client/src/a2l/a2l_reader.rs @@ -234,7 +234,7 @@ pub fn a2l_find_measurement(a2l_file: &A2lFile, name: &str) -> Option<(A2lAddr, pub fn a2l_printf_info(a2l_file: &A2lFile) { // MOD_PAR info!("MOD_PAR:"); - for mod_par in &a2l_file.project.module[0].mod_par { + if let Some(mod_par) = &a2l_file.project.module[0].mod_par { if let Some(epk) = &mod_par.epk { info!(" epk={}", epk.identifier); } diff --git a/xcp_client/src/xcp_client.rs b/xcp_client/src/xcp_client.rs index 2ea9245..98d3f38 100644 --- a/xcp_client/src/xcp_client.rs +++ b/xcp_client/src/xcp_client.rs @@ -651,7 +651,9 @@ impl XcpClient { } } None => { - panic!("xcp_command: bug in receive_task, no data in channel") + // @@@@ Empty response, channel has been closed, return with XcpError Timeout + error!("xcp_command: receive_task channel closed"); + Err(Box::new(XcpError::new(ERROR_CMD_TIMEOUT)) as Box) } } } diff --git a/xcp_lite.a2l b/xcp_lite.a2l index cae52ba..43b7078 100644 --- a/xcp_lite.a2l +++ b/xcp_lite.a2l @@ -130,24 +130,25 @@ OPTIONAL_LEVEL1_CMD GET_VERSION /end PROTOCOL_LAYER /begin DAQ - DYNAMIC 0 13 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID + DYNAMIC 0 14 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID /begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED /begin EVENT "mainloop" "mainloop" 0 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task1" "task1" 1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task1_points" "task1_po" 2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_1" "task2_in" 3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_2" "task2_in" 4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_3" "task2_in" 5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_4" "task2_in" 6 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_5" "task2_in" 7 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_6" "task2_in" 8 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_7" "task2_in" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_8" "task2_in" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_inst_9" "task2_in" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "task2_static" "task2_st" 12 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "mainloop_array" "mainloop" 1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task1" "task1" 2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task1_points" "task1_po" 3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_1" "task2_in" 4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_2" "task2_in" 5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_3" "task2_in" 6 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_4" "task2_in" 7 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_5" "task2_in" 8 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_6" "task2_in" 9 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_7" "task2_in" 10 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_8" "task2_in" 11 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_inst_9" "task2_in" 12 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "task2_static" "task2_st" 13 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /end DAQ @@ -202,35 +203,36 @@ CalPage2.ampl CalPage2.period /end REF_CHARACTERISTIC /end GROUP -/begin MEASUREMENT array1 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1000000000000 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x1F7F4 ECU_ADDRESS_EXTENSION 2 MATRIX_DIM 256 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT array1 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1000000000000 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x2F71C ECU_ADDRESS_EXTENSION 2 MATRIX_DIM 256 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel "sine: f64" FLOAT64_IEEE channel.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xC0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel "sine: f64" FLOAT64_IEEE channel.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xD0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 13 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_1.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_1 "sine: f64" FLOAT64_IEEE channel_1.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x30000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_1 "sine: f64" FLOAT64_IEEE channel_1.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x40000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 4 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_2.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_2 "sine: f64" FLOAT64_IEEE channel_2.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x40000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 4 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_2 "sine: f64" FLOAT64_IEEE channel_2.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x50000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 5 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_3.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_3 "sine: f64" FLOAT64_IEEE channel_3.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x50000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 5 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_3 "sine: f64" FLOAT64_IEEE channel_3.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x60000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 6 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_4.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_4 "sine: f64" FLOAT64_IEEE channel_4.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x60000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 6 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_4 "sine: f64" FLOAT64_IEEE channel_4.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x70000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_5.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_5 "sine: f64" FLOAT64_IEEE channel_5.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x70000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 7 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_5 "sine: f64" FLOAT64_IEEE channel_5.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x80000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_6.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_6 "sine: f64" FLOAT64_IEEE channel_6.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x80000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 8 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_6 "sine: f64" FLOAT64_IEEE channel_6.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x90000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_7.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_7 "sine: f64" FLOAT64_IEEE channel_7.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0x90000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 9 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_7 "sine: f64" FLOAT64_IEEE channel_7.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xA0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_8.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_8 "sine: f64" FLOAT64_IEEE channel_8.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xA0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 10 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT channel_8 "sine: f64" FLOAT64_IEEE channel_8.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xB0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin COMPU_METHOD channel_9.Conv "" LINEAR "%6.3" "Volt" COEFFS_LINEAR 1 0 /end COMPU_METHOD -/begin MEASUREMENT channel_9 "sine: f64" FLOAT64_IEEE channel_9.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xB0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 11 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x1F7E0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u16 "wrapping counter: u16" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x1F7E6 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u32 "wrapping counter: u32" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x1F7E8 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u64 "wrapping counter: u64" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x1F7EC ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT counter_u8 "wrapping counter: u8" UBYTE NO_COMPU_METHOD 0 0 0 255 PHYS_UNIT "" ECU_ADDRESS 0x1F7E5 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT mainloop_counter "counter on stack" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0xFFF0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT mainloop_counter2 "counter on heap" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin CHARACTERISTIC point_cloud "struct serializer demo" ASCII 0x20000 U8 0 NO_COMPU_METHOD 0 255 READ_ONLY NUMBER 64 ECU_ADDRESS_EXTENSION 2 +/begin MEASUREMENT channel_9 "sine: f64" FLOAT64_IEEE channel_9.Conv 0 0 -1000000000000 1000000000000 PHYS_UNIT "Volt" ECU_ADDRESS 0xC0000 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 12 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x2000C ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u16 "wrapping counter: u16" UWORD NO_COMPU_METHOD 0 0 0 65535 PHYS_UNIT "" ECU_ADDRESS 0x20010 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u32 "wrapping counter: u32" ULONG NO_COMPU_METHOD 0 0 0 4294967295 PHYS_UNIT "" ECU_ADDRESS 0x20008 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u64 "wrapping counter: u64" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x2FFE4 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT counter_u8 "wrapping counter: u8" UBYTE NO_COMPU_METHOD 0 0 0 255 PHYS_UNIT "" ECU_ADDRESS 0x20013 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT mainloop_array "array on heap" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x10000 ECU_ADDRESS_EXTENSION 2 MATRIX_DIM 16 16 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT mainloop_counter1 "" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x18 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT mainloop_counter3 "" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 PHYS_UNIT "" ECU_ADDRESS 0x0 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin CHARACTERISTIC point_cloud "struct serializer demo" ASCII 0x30000 U8 0 NO_COMPU_METHOD 0 255 READ_ONLY NUMBER 64 ECU_ADDRESS_EXTENSION 2 /begin ANNOTATION ANNOTATION_LABEL "ObjectDescription" ANNOTATION_ORIGIN "application/dds" /begin ANNOTATION_TEXT " " "Vector::PointCloud" @@ -247,10 +249,13 @@ CalPage2.period /end ANNOTATION_TEXT /end ANNOTATION /begin ANNOTATION ANNOTATION_LABEL "IsVlsd" ANNOTATION_ORIGIN "" /begin ANNOTATION_TEXT "true" /end ANNOTATION_TEXT /end ANNOTATION /begin ANNOTATION ANNOTATION_LABEL "MaxBufferNeeded" ANNOTATION_ORIGIN "" /begin ANNOTATION_TEXT "64" /end ANNOTATION_TEXT /end ANNOTATION - /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end CHARACTERISTIC + /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end CHARACTERISTIC /begin GROUP mainloop "" /begin REF_MEASUREMENT -mainloop_counter -mainloop_counter2 +mainloop_counter1 +mainloop_counter3 +/end REF_MEASUREMENT /end GROUP +/begin GROUP mainloop_array "" /begin REF_MEASUREMENT +mainloop_array /end REF_MEASUREMENT /end GROUP /begin GROUP task1 "" /begin REF_MEASUREMENT array1 diff --git a/xcplib/src/xcpLite.c b/xcplib/src/xcpLite.c index 17d5121..cb16735 100644 --- a/xcplib/src/xcpLite.c +++ b/xcplib/src/xcpLite.c @@ -142,6 +142,7 @@ typedef struct { uint8_t mode; uint8_t state; uint8_t priority; + uint8_t addrExt; } tXcpDaqList; @@ -176,6 +177,7 @@ typedef struct { #define DaqListMode(i) gXcp.Daq.u.DaqList[i].mode #define DaqListState(i) gXcp.Daq.u.DaqList[i].state #define DaqListEventChannel(i) gXcp.Daq.u.DaqList[i].eventChannel +#define DaqListAddrExt(i) gXcp.Daq.u.DaqList[i].addrExt #define DaqListPriority(i) gXcp.Daq.u.DaqList[i].priority #ifdef XCP_ENABLE_PACKED_MODE #define DaqListSampleCount(i) gXcp.Daq.u.DaqList[i].sampleCount @@ -501,6 +503,7 @@ static uint8_t XcpAllocDaq( uint16_t daqCount ) { if (0!=(r = XcpAllocMemory())) return r; for (daq=0;daq XCP_MAX_ODT_ENTRY_SIZE) return CRC_OUT_OF_RANGE; if (0 == gXcp.Daq.DaqCount || 0 == gXcp.Daq.OdtCount || 0 == gXcp.Daq.OdtEntryCount) return CRC_DAQ_CONFIG; if (gXcp.WriteDaqOdtEntry-DaqListOdtFirstEntry(gXcp.WriteDaqOdt) >= DaqListOdtEntryCount(gXcp.WriteDaqOdt)) return CRC_OUT_OF_RANGE; + uint8_t daq_ext = DaqListAddrExt(gXcp.WriteDaqDaq); + if (daq_ext != XCP_ADDR_EXT_UNDEFINED && ext != daq_ext) return CRC_DAQ_CONFIG; // Error not unique address extension + DaqListAddrExt(gXcp.WriteDaqDaq) = ext; + #ifndef XCP_ENABLE_DYN_ADDRESSING if (ext != XCP_ADDR_EXT_ABS) return CRC_ACCESS_DENIED; // Illegal address extension for DAQ, DAQ can only handle absolute addressing #else @@ -622,6 +632,7 @@ static uint8_t XcpAddOdtEntry(uint32_t addr, uint8_t ext, uint8_t size) { } // Set DAQ list mode +// All DAQ lists associaded with an event, must have the same event channel and address extension static uint8_t XcpSetDaqListMode(uint16_t daq, uint16_t event, uint8_t mode, uint8_t prio ) { #ifdef XCP_ENABLE_DAQ_EVENT_LIST @@ -629,8 +640,21 @@ static uint8_t XcpSetDaqListMode(uint16_t daq, uint16_t event, uint8_t mode, uin if (e == NULL) return CRC_OUT_OF_RANGE; #endif #ifdef XCP_ENABLE_DYN_ADDRESSING - uint16_t e0 = DaqListEventChannel(daq); - if (e0 != XCP_UNDEFINED_EVENT && event != e0) return CRC_OUT_OF_RANGE; // Error event channel redefinition + + // Check if the DAQ list requires a specific event and it matches + uint16_t event0 = DaqListEventChannel(daq); + if (event0 != XCP_UNDEFINED_EVENT && event != event0) return CRC_DAQ_CONFIG; // Error event not unique + + // Check all DAQ lists with same event have the same address extension + uint8_t ext = DaqListAddrExt(daq); + for (uint16_t daq0=0;daq0= b); + assert(((uint64_t)p - (uint64_t)b) <= 0xffffffff); // be sure that XCP address range is sufficient + return (uint32_t)(p - b); } #endif @@ -257,7 +259,7 @@ uint8_t* ApplXcpGetBaseAddr() { if (!baseAddrValid) { //dump_so(); - baseAddr = (uint8_t*)_dyld_get_image_header(0); + baseAddr = (uint8_t*)_dyld_get_image_header(0); // Module addr assert(baseAddr != NULL); baseAddrValid = 1; DBG_PRINTF4("baseAddr = %llX\n", (uint64_t)baseAddr); @@ -268,8 +270,12 @@ uint8_t* ApplXcpGetBaseAddr() { uint32_t ApplXcpGetAddr(const uint8_t* p) { - ApplXcpGetBaseAddr(); - return (uint32_t)(p - baseAddr); + uint8_t* b = ApplXcpGetBaseAddr(); + if ( p < b || ((uint64_t)p - (uint64_t)b) > 0xffffffff) { // be sure that XCP address range is sufficient + DBG_PRINTF_ERROR("Address out of range! base = %llX, addr = %llX\n", (uint64_t)b, (uint64_t)p); + assert(0); + } + return (uint32_t)(p - b); } #endif diff --git a/xcplib/xcp_cfg.h b/xcplib/xcp_cfg.h index d96e7a6..d8482b1 100644 --- a/xcplib/xcp_cfg.h +++ b/xcplib/xcp_cfg.h @@ -21,7 +21,7 @@ #define XCP_PROTOCOL_LAYER_VERSION 0x0104 // PACKED_MODE, CC_START_STOP_SYNCH prepare /*----------------------------------------------------------------------------*/ -/* Driver features */ +/* Adress, address extension coding */ #define XCP_ADDR_EXT_ABS 0x01 // Absolute address format @@ -33,9 +33,12 @@ #define XCP_ENABLE_APP_ADDRESSING #define XCP_ADDR_EXT_APP 0x00 // Address format handled by application -// Use addr_ext XCP_ADDR_EXT_A2L to indicate A2L uopload memory space +// Use addr_ext XCP_ADDR_EXT_A2L to indicate A2L upload memory space #define XCP_ADDR_EXT_A2L 0xFF // Upload A2L address space +// Undefined +#define XCP_ADDR_EXT_UNDEFINED 0xFE // Undefined address extension + /*----------------------------------------------------------------------------*/ /* Protocol features */