This commit is contained in:
gobbyo 2021-01-20 20:16:57 +00:00
Родитель cbb4782d7b
Коммит 8e3b55e679
60 изменённых файлов: 2939 добавлений и 1263 удалений

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/.vs/DigitalTwins/v16/.suo Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ShowAllFiles>true</ShowAllFiles>
</PropertyGroup>
</Project>

Двоичные данные
DigitalTwinsCloudAdmin/bin/Debug/netcoreapp3.1/Azure.Core.dll Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/bin/Debug/netcoreapp3.1/Azure.Identity.dll Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,570 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v3.1": {
"DigitalTwins/1.0.0": {
"dependencies": {
"Azure.DigitalTwins.Core": "1.0.0-preview.3",
"Azure.Identity": "1.4.0-beta.1",
"Microsoft.Azure.DigitalTwins.Parser": "3.12.5"
},
"runtime": {
"DigitalTwins.dll": {}
}
},
"Azure.Core/1.5.1": {
"dependencies": {
"Microsoft.Bcl.AsyncInterfaces": "1.0.0",
"System.Buffers": "4.5.0",
"System.Diagnostics.DiagnosticSource": "4.6.0",
"System.Memory": "4.5.3",
"System.Numerics.Vectors": "4.5.0",
"System.Text.Json": "4.6.0",
"System.Threading.Tasks.Extensions": "4.5.2"
},
"runtime": {
"lib/netstandard2.0/Azure.Core.dll": {
"assemblyVersion": "1.5.1.0",
"fileVersion": "1.500.120.50102"
}
}
},
"Azure.DigitalTwins.Core/1.0.0-preview.3": {
"dependencies": {
"Azure.Core": "1.5.1",
"System.Text.Json": "4.6.0"
},
"runtime": {
"lib/netstandard2.0/Azure.DigitalTwins.Core.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.20.36303"
}
}
},
"Azure.Identity/1.4.0-beta.1": {
"dependencies": {
"Azure.Core": "1.5.1",
"Microsoft.Identity.Client": "4.21.0",
"Microsoft.Identity.Client.Extensions.Msal": "2.16.2",
"System.Memory": "4.5.3",
"System.Security.Cryptography.ProtectedData": "4.5.0",
"System.Text.Json": "4.6.0",
"System.Threading.Tasks.Extensions": "4.5.2"
},
"runtime": {
"lib/netstandard2.0/Azure.Identity.dll": {
"assemblyVersion": "1.4.0.0",
"fileVersion": "1.400.20.51503"
}
}
},
"Microsoft.Azure.DigitalTwins.Parser/3.12.5": {
"dependencies": {
"Microsoft.Build.Framework": "16.4.0",
"Microsoft.Build.Utilities.Core": "16.4.0",
"Newtonsoft.Json": "12.0.3"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Azure.DigitalTwins.Parser.dll": {
"assemblyVersion": "3.12.5.0",
"fileVersion": "3.12.5.0"
}
}
},
"Microsoft.Bcl.AsyncInterfaces/1.0.0": {
"runtime": {
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "4.700.19.46214"
}
}
},
"Microsoft.Build.Framework/16.4.0": {
"dependencies": {
"System.Runtime.Serialization.Primitives": "4.1.1",
"System.Threading.Thread": "4.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Build.Framework.dll": {
"assemblyVersion": "15.1.0.0",
"fileVersion": "16.4.0.56501"
}
}
},
"Microsoft.Build.Utilities.Core/16.4.0": {
"dependencies": {
"Microsoft.Build.Framework": "16.4.0",
"Microsoft.Win32.Registry": "4.3.0",
"System.Collections.Immutable": "1.5.0",
"System.Text.Encoding.CodePages": "4.0.1"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Build.Utilities.Core.dll": {
"assemblyVersion": "15.1.0.0",
"fileVersion": "16.4.0.56501"
}
}
},
"Microsoft.Identity.Client/4.21.0": {
"runtime": {
"lib/netcoreapp2.1/Microsoft.Identity.Client.dll": {
"assemblyVersion": "4.21.0.0",
"fileVersion": "4.21.0.0"
}
}
},
"Microsoft.Identity.Client.Extensions.Msal/2.16.2": {
"dependencies": {
"Microsoft.Identity.Client": "4.21.0",
"System.Security.Cryptography.ProtectedData": "4.5.0"
},
"runtime": {
"lib/netcoreapp2.1/Microsoft.Identity.Client.Extensions.Msal.dll": {
"assemblyVersion": "2.16.2.0",
"fileVersion": "2.16.2.0"
}
}
},
"Microsoft.NETCore.Platforms/1.1.0": {},
"Microsoft.NETCore.Targets/1.1.0": {},
"Microsoft.Win32.Registry/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"Newtonsoft.Json/12.0.3": {
"runtime": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {
"assemblyVersion": "12.0.0.0",
"fileVersion": "12.0.3.23909"
}
}
},
"System.Buffers/4.5.0": {},
"System.Collections/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Collections.Immutable/1.5.0": {},
"System.Diagnostics.DiagnosticSource/4.6.0": {},
"System.Globalization/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.IO/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Memory/4.5.3": {},
"System.Numerics.Vectors/4.5.0": {},
"System.Reflection/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Resources.ResourceManager/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"System.Runtime.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.Handles/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.InteropServices/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.Serialization.Primitives/4.1.1": {
"dependencies": {
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.Cryptography.ProtectedData/4.5.0": {
"runtime": {
"lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
"assemblyVersion": "4.0.3.0",
"fileVersion": "4.6.26515.6"
}
},
"runtimeTargets": {
"runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "4.0.3.0",
"fileVersion": "4.6.26515.6"
}
}
},
"System.Text.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Text.Encoding.CodePages/4.0.1": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.0.11"
}
},
"System.Text.Json/4.6.0": {},
"System.Threading/4.0.11": {
"dependencies": {
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Threading.Tasks/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Threading.Tasks.Extensions/4.5.2": {},
"System.Threading.Thread/4.0.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
}
}
},
"libraries": {
"DigitalTwins/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Azure.Core/1.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-b208x0N1Gk+cGSAu3suRwmC5UMIxIwGEmbkE6JsfQapOShxLXkhK2L5oVom3JU9LJtGa8TvYna5ndxTv9IG2EA==",
"path": "azure.core/1.5.1",
"hashPath": "azure.core.1.5.1.nupkg.sha512"
},
"Azure.DigitalTwins.Core/1.0.0-preview.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-EcLT/rb1XjkQ7tVLQ9yMV4O0Q+6yUh86ukHdVyNhtllwPssGgKsfneE21y483U0/eTyS9oFNeTWiUg+BSaNhFA==",
"path": "azure.digitaltwins.core/1.0.0-preview.3",
"hashPath": "azure.digitaltwins.core.1.0.0-preview.3.nupkg.sha512"
},
"Azure.Identity/1.4.0-beta.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-y0N862gWpuL5GgHFCUz02JNbOrP8lG/rYAmgN9OgUs4wwVZXIvvVa33xjNjYrkMqo63omisjIzQgj5ZBrTajRQ==",
"path": "azure.identity/1.4.0-beta.1",
"hashPath": "azure.identity.1.4.0-beta.1.nupkg.sha512"
},
"Microsoft.Azure.DigitalTwins.Parser/3.12.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oHXbN7RksNk8zhGUZjFeS5qH21w+tYCn9tqG6pvAJptNEex66ugcD5oQLmvAWa2vzPPqsTbpA3KPDqrgw/5ADA==",
"path": "microsoft.azure.digitaltwins.parser/3.12.5",
"hashPath": "microsoft.azure.digitaltwins.parser.3.12.5.nupkg.sha512"
},
"Microsoft.Bcl.AsyncInterfaces/1.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-K63Y4hORbBcKLWH5wnKgzyn7TOfYzevIEwIedQHBIkmkEBA9SCqgvom+XTuE+fAFGvINGkhFItaZ2dvMGdT5iw==",
"path": "microsoft.bcl.asyncinterfaces/1.0.0",
"hashPath": "microsoft.bcl.asyncinterfaces.1.0.0.nupkg.sha512"
},
"Microsoft.Build.Framework/16.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9y1/PKvZNt+YnF2lHpk10W0SnWe9jKSM0daf7lTkYOaSs/6isMfU+Pmbt01Af6os3X3FwAQ2nOPuwoAOu0u0KA==",
"path": "microsoft.build.framework/16.4.0",
"hashPath": "microsoft.build.framework.16.4.0.nupkg.sha512"
},
"Microsoft.Build.Utilities.Core/16.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FGQo1P4nKuGvMP1QIxXIPRfT0m4AfKbXmDzxSK2LbMV1f6XTiCaE+BvyiWauKSJWDLW/S4OmZ02f3tJkSXNxkA==",
"path": "microsoft.build.utilities.core/16.4.0",
"hashPath": "microsoft.build.utilities.core.16.4.0.nupkg.sha512"
},
"Microsoft.Identity.Client/4.21.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qVoSUGfIynHWF7Lk9dRJN04AOE8pHabRja6OsiILyirTHxhKLrZ6Ixcbuge0z080kKch3vgy1QpQ53wVNbkBYw==",
"path": "microsoft.identity.client/4.21.0",
"hashPath": "microsoft.identity.client.4.21.0.nupkg.sha512"
},
"Microsoft.Identity.Client.Extensions.Msal/2.16.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1xIcnfuFkLXP0oeh0VeH06Cs8hl57ZtCQQGPdr/i0jMwiiTgmW0deHh/4E0rop0ZrowapmO5My367cR+bwaDOQ==",
"path": "microsoft.identity.client.extensions.msal/2.16.2",
"hashPath": "microsoft.identity.client.extensions.msal.2.16.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/1.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
"path": "microsoft.netcore.platforms/1.1.0",
"hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
},
"Microsoft.NETCore.Targets/1.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
"path": "microsoft.netcore.targets/1.1.0",
"hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
},
"Microsoft.Win32.Registry/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Lw1/VwLH1yxz6SfFEjVRCN0pnflLEsWgnV4qsdJ512/HhTwnKXUG+zDQ4yTO3K/EJQemGoNaBHX5InISNKTzUQ==",
"path": "microsoft.win32.registry/4.3.0",
"hashPath": "microsoft.win32.registry.4.3.0.nupkg.sha512"
},
"Newtonsoft.Json/12.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==",
"path": "newtonsoft.json/12.0.3",
"hashPath": "newtonsoft.json.12.0.3.nupkg.sha512"
},
"System.Buffers/4.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==",
"path": "system.buffers/4.5.0",
"hashPath": "system.buffers.4.5.0.nupkg.sha512"
},
"System.Collections/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
"path": "system.collections/4.3.0",
"hashPath": "system.collections.4.3.0.nupkg.sha512"
},
"System.Collections.Immutable/1.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==",
"path": "system.collections.immutable/1.5.0",
"hashPath": "system.collections.immutable.1.5.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mbBgoR0rRfl2uimsZ2avZY8g7Xnh1Mza0rJZLPcxqiMWlkGukjmRkuMJ/er+AhQuiRIh80CR/Hpeztr80seV5g==",
"path": "system.diagnostics.diagnosticsource/4.6.0",
"hashPath": "system.diagnostics.diagnosticsource.4.6.0.nupkg.sha512"
},
"System.Globalization/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
"path": "system.globalization/4.3.0",
"hashPath": "system.globalization.4.3.0.nupkg.sha512"
},
"System.IO/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"path": "system.io/4.3.0",
"hashPath": "system.io.4.3.0.nupkg.sha512"
},
"System.Memory/4.5.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
"path": "system.memory/4.5.3",
"hashPath": "system.memory.4.5.3.nupkg.sha512"
},
"System.Numerics.Vectors/4.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==",
"path": "system.numerics.vectors/4.5.0",
"hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
},
"System.Reflection/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"path": "system.reflection/4.3.0",
"hashPath": "system.reflection.4.3.0.nupkg.sha512"
},
"System.Reflection.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"path": "system.reflection.primitives/4.3.0",
"hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
},
"System.Resources.ResourceManager/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
"path": "system.resources.resourcemanager/4.3.0",
"hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
},
"System.Runtime/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
"path": "system.runtime/4.3.0",
"hashPath": "system.runtime.4.3.0.nupkg.sha512"
},
"System.Runtime.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
"path": "system.runtime.extensions/4.3.0",
"hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
},
"System.Runtime.Handles/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"path": "system.runtime.handles/4.3.0",
"hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
},
"System.Runtime.InteropServices/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"path": "system.runtime.interopservices/4.3.0",
"hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
},
"System.Runtime.Serialization.Primitives/4.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
"path": "system.runtime.serialization.primitives/4.1.1",
"hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
},
"System.Security.Cryptography.ProtectedData/4.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==",
"path": "system.security.cryptography.protecteddata/4.5.0",
"hashPath": "system.security.cryptography.protecteddata.4.5.0.nupkg.sha512"
},
"System.Text.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"path": "system.text.encoding/4.3.0",
"hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
},
"System.Text.Encoding.CodePages/4.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-h4z6rrA/hxWf4655D18IIZ0eaLRa3tQC/j+e26W+VinIHY0l07iEXaAvO0YSYq3MvCjMYy8Zs5AdC1sxNQOB7Q==",
"path": "system.text.encoding.codepages/4.0.1",
"hashPath": "system.text.encoding.codepages.4.0.1.nupkg.sha512"
},
"System.Text.Json/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4F8Xe+JIkVoDJ8hDAZ7HqLkjctN/6WItJIzQaifBwClC7wmoLSda/Sv2i6i1kycqDb3hWF4JCVbpAweyOKHEUA==",
"path": "system.text.json/4.6.0",
"hashPath": "system.text.json.4.6.0.nupkg.sha512"
},
"System.Threading/4.0.11": {
"type": "package",
"serviceable": true,
"sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
"path": "system.threading/4.0.11",
"hashPath": "system.threading.4.0.11.nupkg.sha512"
},
"System.Threading.Tasks/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"path": "system.threading.tasks/4.3.0",
"hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.5.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BG/TNxDFv0svAzx8OiMXDlsHfGw623BZ8tCXw4YLhDFDvDhNUEV58jKYMGRnkbJNm7c3JNNJDiN7JBMzxRBR2w==",
"path": "system.threading.tasks.extensions/4.5.2",
"hashPath": "system.threading.tasks.extensions.4.5.2.nupkg.sha512"
},
"System.Threading.Thread/4.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==",
"path": "system.threading.thread/4.0.0",
"hashPath": "system.threading.thread.4.0.0.nupkg.sha512"
}
}
}

Двоичные данные
DigitalTwinsCloudAdmin/bin/Debug/netcoreapp3.1/DigitalTwins.dll Normal file

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/bin/Debug/netcoreapp3.1/DigitalTwins.exe Normal file

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/bin/Debug/netcoreapp3.1/DigitalTwins.pdb Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,8 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\jbeman\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\jbeman\\.nuget\\packages"
]
}
}

Просмотреть файл

@ -0,0 +1,9 @@
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
}
}
}

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]

Просмотреть файл

@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("DigitalTwins")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("DigitalTwins")]
[assembly: System.Reflection.AssemblyTitleAttribute("DigitalTwins")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

Просмотреть файл

@ -0,0 +1 @@
b18f5bc3ef95e258a1313d6a45e1f19adf670ecc

Двоичный файл не отображается.

Просмотреть файл

Просмотреть файл

@ -0,0 +1 @@
b736aea8cf2f2a10b542c5578bb77bff458287d0

Просмотреть файл

@ -0,0 +1,26 @@
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\DigitalTwins.exe
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\DigitalTwins.deps.json
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\DigitalTwins.runtimeconfig.json
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\DigitalTwins.runtimeconfig.dev.json
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\DigitalTwins.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\DigitalTwins.pdb
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Azure.Core.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Azure.DigitalTwins.Core.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Azure.Identity.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Microsoft.Azure.DigitalTwins.Parser.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Microsoft.Bcl.AsyncInterfaces.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Microsoft.Build.Framework.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Microsoft.Build.Utilities.Core.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Microsoft.Identity.Client.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Microsoft.Identity.Client.Extensions.Msal.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\Newtonsoft.Json.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\System.Security.Cryptography.ProtectedData.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\bin\Debug\netcoreapp3.1\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.csprojAssemblyReference.cache
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.AssemblyInfoInputs.cache
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.AssemblyInfo.cs
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.csproj.CoreCompileInputs.cache
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.csproj.CopyComplete
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.dll
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.pdb
C:\azure-iot-mobility-digitaltwin\DigitalTwinsCloudAdmin\obj\Debug\netcoreapp3.1\DigitalTwins.genruntimeconfig.cache

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/obj/Debug/netcoreapp3.1/DigitalTwins.dll Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
83966c1311d26184e8785b9529882cc1f942120e

Двоичные данные
DigitalTwinsCloudAdmin/obj/Debug/netcoreapp3.1/DigitalTwins.pdb Normal file

Двоичный файл не отображается.

Двоичные данные
DigitalTwinsCloudAdmin/obj/Debug/netcoreapp3.1/apphost.exe Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,76 @@
{
"format": 1,
"restore": {
"C:\\azure-iot-mobility-digitaltwin\\DigitalTwinsCloudAdmin\\DigitalTwins.csproj": {}
},
"projects": {
"C:\\azure-iot-mobility-digitaltwin\\DigitalTwinsCloudAdmin\\DigitalTwins.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\azure-iot-mobility-digitaltwin\\DigitalTwinsCloudAdmin\\DigitalTwins.csproj",
"projectName": "DigitalTwins",
"projectPath": "C:\\azure-iot-mobility-digitaltwin\\DigitalTwinsCloudAdmin\\DigitalTwins.csproj",
"packagesPath": "C:\\Users\\jbeman\\.nuget\\packages\\",
"outputPath": "C:\\azure-iot-mobility-digitaltwin\\DigitalTwinsCloudAdmin\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\jbeman\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netcoreapp3.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
"dependencies": {
"Azure.DigitalTwins.Core": {
"target": "Package",
"version": "[1.0.0-preview.3, )"
},
"Azure.Identity": {
"target": "Package",
"version": "[1.4.0-beta.1, )"
},
"Microsoft.Azure.DigitalTwins.Parser": {
"target": "Package",
"version": "[3.12.5, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.100\\RuntimeIdentifierGraph.json"
}
}
}
}
}

Просмотреть файл

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\jbeman\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
</ItemGroup>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
</Project>

Просмотреть файл

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
</Project>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,46 @@
{
"version": 2,
"dgSpecHash": "BYfajfNctqXBL1+fyQ2RMIAQe0/BbHLHR7mmlT2+kkmPXDEb6iGhix0rEEUjh/+zS0/mHfCeQyXHn7fIsYUIog==",
"success": true,
"projectFilePath": "C:\\azure-iot-mobility-digitaltwin\\DigitalTwinsCloudAdmin\\DigitalTwins.csproj",
"expectedPackageFiles": [
"C:\\Users\\jbeman\\.nuget\\packages\\azure.core\\1.5.1\\azure.core.1.5.1.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\azure.digitaltwins.core\\1.0.0-preview.3\\azure.digitaltwins.core.1.0.0-preview.3.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\azure.identity\\1.4.0-beta.1\\azure.identity.1.4.0-beta.1.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.azure.digitaltwins.parser\\3.12.5\\microsoft.azure.digitaltwins.parser.3.12.5.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.0.0\\microsoft.bcl.asyncinterfaces.1.0.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.build.framework\\16.4.0\\microsoft.build.framework.16.4.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.build.utilities.core\\16.4.0\\microsoft.build.utilities.core.16.4.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.identity.client\\4.21.0\\microsoft.identity.client.4.21.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.identity.client.extensions.msal\\2.16.2\\microsoft.identity.client.extensions.msal.2.16.2.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\microsoft.win32.registry\\4.3.0\\microsoft.win32.registry.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\newtonsoft.json\\12.0.3\\newtonsoft.json.12.0.3.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.buffers\\4.5.0\\system.buffers.4.5.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.collections.immutable\\1.5.0\\system.collections.immutable.1.5.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.diagnostics.diagnosticsource\\4.6.0\\system.diagnostics.diagnosticsource.4.6.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.runtime.serialization.primitives\\4.1.1\\system.runtime.serialization.primitives.4.1.1.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.security.cryptography.protecteddata\\4.5.0\\system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.text.encoding.codepages\\4.0.1\\system.text.encoding.codepages.4.0.1.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.text.json\\4.6.0\\system.text.json.4.6.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.threading\\4.0.11\\system.threading.4.0.11.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.2\\system.threading.tasks.extensions.4.5.2.nupkg.sha512",
"C:\\Users\\jbeman\\.nuget\\packages\\system.threading.thread\\4.0.0\\system.threading.thread.4.0.0.nupkg.sha512"
],
"logs": []
}

Просмотреть файл

@ -1,3 +0,0 @@
#!/bin/bash
apt-get install -y git cmake make g++ lcov clang-format-9 ccache

Просмотреть файл

@ -1,7 +0,0 @@
cmake_minimum_required(VERSION 3.10)
project(src VERSION 1.0)
add_subdirectory(vspec-definition)
add_subdirectory(dtdl-definition)
add_subdirectory(vspec-to-dtdl)

5
tools/src/dtdl-definition/.gitignore поставляемый
Просмотреть файл

@ -1,5 +0,0 @@
CMakeCache.txt
CMakeFiles
cmake_install.cmake
libdtdl-definition.a
Makefile

Просмотреть файл

@ -1,11 +0,0 @@
cmake_minimum_required(VERSION 3.10)
project(dtdl-definition)
add_compile_options(-std=c++11)
include_directories(../../third-party/jsoncpp/src)
file(GLOB SOURCES "*.cpp")
add_library(dtdl-definition STATIC ${SOURCES})

Просмотреть файл

@ -1,78 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#include <iostream>
#include "dtdl-composer.h"
using namespace microsoft::automotive::data;
void DtdlComposer::Compose(const dtdl::Definition& definition)
{
// std::list<std::shared_ptr<Json::Value>>& dtdl);
std::list<std::shared_ptr<Json::Value>> dtdlAsJson;
ConvertDtdlComponentToJson(definition.Root, dtdlAsJson);
std::cout << "[" << std::endl;
for (auto it = dtdlAsJson.begin(); it != dtdlAsJson.end(); it++)
{
if (it != dtdlAsJson.begin())
{
std::cout << "," << std::endl;
}
std::cout << **it;
}
std::cout << std::endl;
std::cout << "]" << std::endl;
}
void DtdlComposer::ConvertDtdlComponentToJson(const dtdl::Component& component, std::list<std::shared_ptr<Json::Value>>& dtdlAsJson)
{
std::shared_ptr<Json::Value> interfaceValue(new Json::Value());
dtdlAsJson.push_back(interfaceValue);
(*interfaceValue)["@type"] = "Interface";
(*interfaceValue)["displayName"] = component.Name.c_str();
(*interfaceValue)["@context"] = "dtmi:dtdl:context;2";
// const Json::Value& contents = (*interfaceValue)["contents"]; // array of contents
int i = 0;
for (auto it = component.Telemetries.begin(); it != component.Telemetries.end(); it++)
{
(*interfaceValue)["contents"][i]["@type"] = "Telemetry";
(*interfaceValue)["contents"][i]["name"] = (*it)->Name.c_str();
(*interfaceValue)["contents"][i]["schena"] = (*it)->Schema.c_str();
if (!(*it)->Unit.empty())
{
(*interfaceValue)["contents"][i]["unit"] = (*it)->Unit.c_str();
}
i++;
}
for (auto it = component.Properties.begin(); it != component.Properties.end(); it++)
{
(*interfaceValue)["contents"][i]["@type"] = "Property";
(*interfaceValue)["contents"][i]["name"] = (*it)->Name.c_str();
(*interfaceValue)["contents"][i]["schena"] = (*it)->Schema.c_str();
(*interfaceValue)["contents"][i]["writable"] = (*it)->Writable;
if (!(*it)->Unit.empty())
{
(*interfaceValue)["contents"][i]["unit"] = (*it)->Unit.c_str();
}
i++;
}
for (auto it = component.Components.begin(); it != component.Components.end(); it++)
{
ConvertDtdlComponentToJson(*(it->get()), dtdlAsJson);
(*interfaceValue)["contents"][i]["@type"] = "Component";
(*interfaceValue)["contents"][i]["name"] = (*it)->Name.c_str();
i++;
}
}

Просмотреть файл

@ -1,26 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#ifndef DTDL_COMPOSER_H
#define DTDL_COMPOSER_H
#include <jsoncpp/include/json/json.h>
#include "dtdl-definition.h"
namespace microsoft::automotive::data
{
class DtdlComposer
{
public:
void Compose(const dtdl::Definition& definition);
protected:
void ConvertDtdlComponentToJson(const dtdl::Component& component, std::list<std::shared_ptr<Json::Value>>& dtdlAsJson);
};
} //namespace microsoft::automotive::data
#endif // DTDL_COMPOSER_H

Просмотреть файл

@ -1,6 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------

Просмотреть файл

@ -1,99 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#ifndef DTDL_DEFINITION_H
#define DTDL_DEFINITION_H
#include <list>
#include <memory>
#include <jsoncpp/include/json/json.h>
namespace microsoft::automotive::data::dtdl
{
class Telemetry
{
public:
std::string Name;
std::string Schema;
std::string Id;
std::string Comment;
std::string Description;
std::string DisplayName;
std::string Unit;
};
class Property
{
public:
std::string Name;
std::string Schema;
std::string Id;
std::string Comment;
std::string Description;
std::string DisplayName;
std::string Unit;
bool Writable;
};
class CommandPayload
{
public:
std::string Name;
std::string Schema;
std::string Id;
std::string Comment;
std::string Description;
std::string DisplayName;
};
class Command
{
public:
std::string Name;
std::string Id;
std::string Comment;
std::string Description;
std::string DisplayName;
std::string CommandType;
CommandPayload Request;
CommandPayload Response;
};
class Component
{
public:
std::string Name;
std::string Schema;
std::string Id;
std::string Comment;
std::string Description;
std::string DisplayName;
// content
std::list<std::shared_ptr<Telemetry>> Telemetries;
std::list<std::shared_ptr<Property>> Properties;
std::list<std::shared_ptr<Command>> Commands;
std::list<std::shared_ptr<Component>> Components;
void GenerateDTDL(std::list<std::shared_ptr<Json::Value>>& dtdl);
};
// https://en.wikibooks.org/wiki/JsonCpp
// sudo apt install install libjsoncpp-dev
// sudo apt install libyaml-cpp-dev
// sudo apt install libyaml-cpp0.5v5
class Definition
{
public:
Component Root;
void GenerateDTDL(std::list<std::shared_ptr<Json::Value>>& dtdl);
};
} // namespace microsoft::automotive::data::dtdl
#endif // DTDL_DEFINITION_H

5
tools/src/vspec-definition/.gitignore поставляемый
Просмотреть файл

@ -1,5 +0,0 @@
CMakeCache.txt
CMakeFiles
cmake_install.cmake
libvspec-definition.a
Makefile

Просмотреть файл

@ -1,11 +0,0 @@
cmake_minimum_required(VERSION 3.10)
project(vspec-definition)
add_compile_options(-std=c++11)
include_directories(../../third-party/yanml-cpp/src/yaml-cpp/include)
file(GLOB SOURCES "*.cpp")
add_library(vspec-definition STATIC ${SOURCES})

Просмотреть файл

@ -1,6 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------

Просмотреть файл

@ -1,61 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#ifndef VSPEC_DEFINITION_H
#define VSPEC_DEFINITION_H
#include <list>
#include <memory>
namespace microsoft::automotive::data::vspec
{
class Series
{
};
class Enumeration : public Series
{
public:
std::list<std::string> Items;
};
class Range : public Series
{
public:
std::string Name;
int Begin;
int End;
};
class Node
{
public:
std::string Name;
std::string Type;
std::string Description;
std::string Datatype;
std::string Unit;
std::string Min;
std::string Max;
std::string Default;
std::string Value;
Enumeration Enum;
std::string Aggregate;
std::list<Series> Instances;
// if it is a branch
std::list<std::shared_ptr<Node>> Children;
};
class Definition
{
public:
Node Root;
};
} // namespace microsoft::automotive::data::vspec
#endif // VSPEC_DEFINITION_H

Просмотреть файл

@ -1,342 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#include <fstream>
#include <iostream>
#include <regex>
#include <stack>
#include <stdexcept>
#include "vspec-parser.h"
using namespace microsoft::automotive::data;
void VspecParser::ExtractPath(std::string fullPath, std::string& path)
{
size_t pathEndIndex = fullPath.rfind("/");
if (pathEndIndex != std::string::npos)
{
path = fullPath.substr(0, pathEndIndex);
}
else
{
path = "";
}
}
void VspecParser::Preprocess(const std::string& vspecFilePath, std::ostream& os, std::string namePrefix)
{
std::ifstream filein(vspecFilePath);
std::string path;
ExtractPath(vspecFilePath, path);
std::regex includePattern("^#include ([^ ]+) ([^ ]+)$");
std::regex namePattern("^- ([^ ]+):$");
for (std::string line; std::getline(filein, line); )
{
std::smatch matches;
if (std::regex_match(line, matches, includePattern))
{
if (matches.size() == 3)
{
std::ssub_match filePathSubmatch = matches[1];
std::ssub_match branchSubmatch = matches[2];
std::string newfullpath(path.c_str());
newfullpath.append("/");
newfullpath.append(filePathSubmatch.str());
std::string newNamePrefix;
if (namePrefix.size() != 0)
{
newNamePrefix.append(namePrefix);
newNamePrefix.append(".");
}
newNamePrefix.append(branchSubmatch.str());
Preprocess(newfullpath, os, newNamePrefix);
}
}
else if (std::regex_match(line, matches, namePattern))
{
if (matches.size() == 2)
{
std::ssub_match nameSubmatch = matches[1];
std::string name = nameSubmatch.str();
if (namePrefix.size() == 0)
{
os << line << std::endl;
}
else
{
os << "- " << namePrefix << "." << name << ":" << std::endl;
}
}
}
else
{
os << line << std::endl;
}
}
}
bool VspecParser::ParseRange(const std::string& str, vspec::Range& range)
{
std::regex rangePattern("^([A-Za-z0-9]+)\\[([0-9]+),([0-9]+)\\]$");
std::smatch matches;
if (std::regex_match(str, matches, rangePattern))
{
if (matches.size() == 4)
{
std::ssub_match nameSubmatch = matches[1];
range.Name = nameSubmatch.str();
std::ssub_match beginSubmatch = matches[2];
range.Begin = std::atoi(beginSubmatch.str().c_str());
std::ssub_match endSubmatch = matches[3];
range.End = std::atoi(endSubmatch.str().c_str());
}
else
{
return false;
}
}
else
{
return false;
}
return true;
}
void VspecParser::ParseNode(vspec::Node& vspecNode, const YAML::Node& node)
{
for (YAML::const_iterator it = node.begin(); it != node.end(); ++it)
{
const std::string& key = it->first.as<std::string>();
if (it->second.IsScalar())
{
// std::cout << it->second.as<std::string>() << "\n";
const std::string& value = it->second.as<std::string>();
if (key.compare("name") == 0)
{
vspecNode.Name = value;
}
else if (key.compare("type") == 0)
{
vspecNode.Type = value;
}
else if (key.compare("description") == 0)
{
vspecNode.Description = value;
}
else if (key.compare("datatype") == 0)
{
vspecNode.Datatype = value;
}
else if (key.compare("unit") == 0)
{
vspecNode.Unit = value;
}
else if (key.compare("min") == 0)
{
vspecNode.Min = value;
}
else if (key.compare("max") == 0)
{
vspecNode.Max = value;
}
else if (key.compare("default") == 0)
{
vspecNode.Default = value;
}
else if (key.compare("value") == 0)
{
vspecNode.Value = value;
}
else if (key.compare("aggregate") == 0)
{
vspecNode.Aggregate = value;
}
else if (key.compare("instances") == 0)
{
vspec::Range range;
if (ParseRange(value, range))
{
vspecNode.Instances.push_back(range);
}
else
{
throw VspecParserException("Range expected '" + value + "'");
}
}
else
{
throw VspecParserException("Unexpected key value '" + key + "'");
}
}
else if (it->second.IsNull())
{
vspecNode.Name = key;
}
else if (it->second.IsSequence())
{
if (key.compare("enum") == 0)
{
for (YAML::const_iterator seqIt = it->second.begin(); seqIt != it->second.end(); seqIt++)
{
if (!seqIt->IsScalar())
{
throw VspecParserException("enum: scalar expected");
}
vspecNode.Enum.Items.push_back(seqIt->as<std::string>());
}
}
else if (key.compare("instances") == 0)
{
vspec::Enumeration outerEnumeration;
for (YAML::const_iterator seqIt = it->second.begin(); seqIt != it->second.end(); seqIt++)
{
if (seqIt->IsScalar())
{
vspec::Range range;
if (ParseRange(seqIt->as<std::string>(), range))
{
vspecNode.Instances.push_back(range);
}
else
{
outerEnumeration.Items.push_back(seqIt->as<std::string>());
}
}
else if (seqIt->IsSequence())
{
vspec::Enumeration innerEnumeration;
for (YAML::const_iterator enumSeqIt = seqIt->begin(); enumSeqIt != seqIt->end(); enumSeqIt++)
{
if (enumSeqIt->IsScalar())
{
innerEnumeration.Items.push_back(enumSeqIt->as<std::string>());
}
else
{
throw VspecParserException("instances: scalar expected");
}
}
vspecNode.Instances.push_back(innerEnumeration);
}
else
{
throw VspecParserException("instances: scalar or sequence expected");
}
}
if (outerEnumeration.Items.size() != 0)
{
vspecNode.Instances.push_back(outerEnumeration);
}
}
else
{
throw VspecParserException("Unexpected key value '" + key + "'");
}
}
else
{
throw VspecParserException("not sure what the second value is");
}
}
}
void VspecParser::TraverseConfig(const YAML::Node& config, vspec::Node& rootVspecNode)
{
if (!config.IsSequence())
{
throw VspecParserException("sequence expected");
}
std::stack<vspec::Node*> branchStack;
YAML::const_iterator it = config.begin();
if (it != config.end())
{
if (!it->IsMap())
{
throw new VspecParserException("map expected");
}
ParseNode(rootVspecNode, *it);
if (rootVspecNode.Type.compare("branch") != 0)
{
throw VspecParserException("root must be of type branch");
}
branchStack.push(&rootVspecNode);
it++;
}
// No previous branch namespace
std::string topBranchSuffix = "";
std::string newBranchSuffix = "";
for ( ; it != config.end(); it++)
{
if (!it->IsMap())
{
throw new VspecParserException("map expected");
}
std::shared_ptr<vspec::Node> vspecNode(new vspec::Node());
ParseNode(*vspecNode, *it);
size_t newBranchLastDotPos = vspecNode->Name.find_last_of(".");
if (newBranchLastDotPos == std::string::npos)
{
newBranchSuffix = "";
}
else
{
newBranchSuffix = vspecNode->Name.substr(0, newBranchLastDotPos);
}
while (!branchStack.empty())
{
topBranchSuffix = branchStack.top()->Name;
if (topBranchSuffix.compare(0, newBranchSuffix.length(), newBranchSuffix) == 0 && newBranchSuffix.compare(topBranchSuffix) != 0 && topBranchSuffix.compare("Vehicle") != 0)
{
branchStack.pop();
}
else
{
// std::cout << "BREAK top:'" << topBranchSuffix << "' new:'" << newBranchSuffix << "'" << std::endl;
break;
}
}
branchStack.top()->Children.push_back(vspecNode);
if (vspecNode->Type.compare("branch") == 0)
{
branchStack.push(vspecNode.get());
}
}
}
void VspecParser::Parse(const std::string& vspecFilePath, vspec::Definition& definition)
{
std::stringstream strstream;
Preprocess(vspecFilePath, strstream);
// std::cout << strstream.str() << std::endl;
TraverseConfig(YAML::Load(strstream), definition.Root);
}

Просмотреть файл

@ -1,49 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#ifndef VSPEC_PARSER_H
#define VSPEC_PARSER_H
#include <exception>
#include <yaml-cpp/yaml.h>
#include "vspec-definition.h"
namespace microsoft::automotive::data
{
class VspecParserException : public std::exception
{
public:
VspecParserException(const std::string& message)
{
this->message = message;
}
virtual const char* what() const throw()
{
return message.c_str();
}
protected:
std::string message;
};
class VspecParser
{
public:
void Parse(const std::string& vspecFilePath, vspec::Definition& definition);
protected:
void ExtractPath(std::string fullPath, std::string& path);
void Preprocess(const std::string& vspecFilePath, std::ostream& os, std::string namePrefix = "");
bool ParseRange(const std::string& str, vspec::Range& range);
void ParseNode(vspec::Node& vspecNode, const YAML::Node& node);
void TraverseConfig(const YAML::Node& config, vspec::Node& rootVspecNode);
};
} // microsoft::automotive::data
#endif // VSPEC_PARSER_H

5
tools/src/vspec-to-dtdl/.gitignore поставляемый
Просмотреть файл

@ -1,5 +0,0 @@
CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
vspec-to-dtdl

Просмотреть файл

@ -1,29 +0,0 @@
cmake_minimum_required(VERSION 3.10)
project(vspec-to-dtdl)
add_compile_options(-std=c++11)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost COMPONENTS program_options)
include_directories(
../../third-party/jsoncpp/src
../../third-party/yanml-cpp/src/yaml-cpp/include
../vspec-definition
../dtdl-definition
../../third-party/boost/include)
link_directories(
../vspec-definition
../dtdl-definition
../../third-party/yanml-cpp/src/yaml-cpp-build
../../third-party/jsoncpp/src/jsoncpp-build/lib
../../third-party/boost/lib)
file(GLOB SOURCES "*.cpp")
add_executable(vspec-to-dtdl ${SOURCES})
target_link_libraries(vspec-to-dtdl vspec-definition dtdl-definition yaml-cpp jsoncpp boost_program_options ${Boost_LIBRARIES})

Просмотреть файл

@ -1,88 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
//
// To use:
// ./vspec-to-dtdl /home/ashbeitz/repos/Vehicle-DataModel-Tools/third-party/vehicle_signal_specification/src/vehicle_signal_specification/spec/VehicleSignalSpecification.vspec
//
#include <iostream>
#include <string>
#include <vector>
#include <boost/program_options.hpp>
#include "vspec-definition.h"
#include "vspec-parser.h"
#include "dtdl-definition.h"
#include "dtdl-composer.h"
#include "vspec-to-dtdl-converter.h"
using namespace boost;
using namespace microsoft::automotive::data;
int main(int argc, char *argv[])
{
try
{
program_options::options_description options("Allowed options");
options.add_options()
("help", "produce help message")
("vspec-file", program_options::value<std::string>(), "location of the root vspec file")
;
program_options::positional_options_description positions;
positions.add("vspec-file", -1);
program_options::variables_map vm;
program_options::store(program_options::command_line_parser(argc, argv).options(options).positional(positions).run(), vm);
program_options::notify(vm);
if (vm.count("help"))
{
std::cout << options << "\n";
return 0;
}
std::string vspecFilePath;
if (vm.count("vspec-file"))
{
vspecFilePath = vm["vspec-file"].as<std::string>();
std::cout << "vspec-file was set to " << vspecFilePath << "\n";
}
else
{
std::cout << "vspec-file was not set.\n";
}
vspec::Definition vspecDefinition;
VspecParser vspecParser;
vspecParser.Parse(vspecFilePath, vspecDefinition);
dtdl::Definition dtdlDefinition;
VspecToDtdlConverter vspecToDtdlConverter;
vspecToDtdlConverter.Convert(vspecDefinition, dtdlDefinition);
DtdlComposer dtdlComposer;
dtdlComposer.Compose(dtdlDefinition);
}
catch (const VspecParserException& pe)
{
std::cerr << pe.what() << '\n';
return 1;
}
catch (std::exception& e)
{
std::cerr << "error: " << e.what() << "\n";
return 1;
}
catch (...)
{
std::cerr << "Exception of unknown type!\n";
return 1;
}
return 0;
}

Просмотреть файл

@ -1,3 +0,0 @@
#!/bin/bash
./vspec-to-dtdl ../../third-party/vehicle_signal_specification/src/vehicle_signal_specification/spec/VehicleSignalSpecification.vspec

Просмотреть файл

@ -1,289 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#include <algorithm>
#include <cctype>
#include <iostream>
#include "vspec-to-dtdl-converter.h"
using namespace microsoft::automotive::data;
void VspecToDtdlConverter::Convert(const vspec::Definition& vspecDefinition, dtdl::Definition& dtdlDefinition)
{
TraverseBranch(vspecDefinition.Root, dtdlDefinition.Root);
}
// TODO: Place in shared library
void VspecToDtdlConverter::ToLower(std::string& str)
{
std::transform(str.begin(), str.end(), str.begin(),
[](unsigned char c) { return std::tolower(c); }
);
}
bool VspecToDtdlConverter::ConvertDatatypeToSchema(const std::string& datatype, std::string& schema)
{
std::string lowercaseDatatype = datatype;
ToLower(lowercaseDatatype);
if (lowercaseDatatype.compare("int32") == 0)
{
schema = "integer";
}
else if (lowercaseDatatype.compare("uint32") == 0) // TODO: fix this
{
schema = "integer";
}
else if (lowercaseDatatype.compare("int8") == 0) // TODO: fix this
{
schema = "integer";
}
else if (lowercaseDatatype.compare("uint8") == 0) // TODO: fix this
{
schema = "integer";
}
else if (lowercaseDatatype.compare("int16") == 0) // TODO: fix this
{
schema = "integer";
}
else if (lowercaseDatatype.compare("uint16") == 0) // TODO: fix this
{
schema = "integer";
}
else if (lowercaseDatatype.compare("float") == 0)
{
schema = "float";
}
else if (lowercaseDatatype.compare("double") == 0)
{
schema = "double";
}
else if (lowercaseDatatype.compare("boolean") == 0)
{
schema = "boolean";
}
else if (lowercaseDatatype.compare("string") == 0)
{
schema = "string";
}
else
{
return false;
}
return true;
}
bool VspecToDtdlConverter::ConverVspecUnitToDtdlUnit(const std::string& vspecUnit, std::string& dtdlUnit)
{
std::string lowercaseVspecUnit = vspecUnit;
ToLower(lowercaseVspecUnit);
if (vspecUnit.empty())
{
dtdlUnit.clear();
}
else if (lowercaseVspecUnit.compare("s") == 0)
{
dtdlUnit = "second";
}
else if (lowercaseVspecUnit.compare("km/h") == 0)
{
dtdlUnit = "kilometrePerHour";
}
else if (lowercaseVspecUnit.compare("km") == 0)
{
dtdlUnit = "kilometre";
}
else if (lowercaseVspecUnit.compare("celsius") == 0)
{
dtdlUnit = "degreeCelsius";
}
else if (lowercaseVspecUnit.compare("m/s2") == 0)
{
dtdlUnit = "metrePerSecondSquared";
}
else if (lowercaseVspecUnit.compare("degrees/s") == 0)
{
dtdlUnit = "degreePerSecond";
}
else if (lowercaseVspecUnit.compare("kg") == 0)
{
dtdlUnit = "kilogram";
}
else if (lowercaseVspecUnit.compare("l") == 0)
{
dtdlUnit = "litre";
}
else if (lowercaseVspecUnit.compare("g/km") == 0)
{
dtdlUnit = "gramPerKiloemtre"; // TODO: Add this to DTDL (it's a unit of measurement for CO2 Emissions)
}
else if (lowercaseVspecUnit.compare("cm3") == 0)
{
dtdlUnit = "cubicCentimetre";
}
else if (lowercaseVspecUnit.compare("kw") == 0)
{
dtdlUnit = "kilowatt";
}
else if (lowercaseVspecUnit.compare("n.m") == 0) // N.m (when in mixed case)
{
dtdlUnit = "newtonMetre"; // TODO: Add this to DTDL (it's the unit for Torque)
}
else if (lowercaseVspecUnit.compare("rpm") == 0)
{
dtdlUnit = "revolutionPerMinute";
}
else if (lowercaseVspecUnit.compare("kpa") == 0)
{
dtdlUnit = "kilopascal";
}
else if (lowercaseVspecUnit.compare("g/s") == 0)
{
dtdlUnit = "gramPerSecond";
}
else if (lowercaseVspecUnit.compare("percent") == 0)
{
dtdlUnit = "percent";
}
else if (lowercaseVspecUnit.compare("m") == 0)
{
dtdlUnit = "metre";
}
else if (lowercaseVspecUnit.compare("l/100km") == 0)
{
dtdlUnit = "litrePer100Kilometre"; // TODO: Add this to DTDL (it's the unit for Consumption)
}
else if (lowercaseVspecUnit.compare("degrees") == 0)
{
dtdlUnit = "degreeOfArc";
}
else if (lowercaseVspecUnit.compare("mm") == 0)
{
dtdlUnit = "millimetre";
}
else if (lowercaseVspecUnit.compare("inch") == 0)
{
dtdlUnit = "inch";
}
else if (lowercaseVspecUnit.compare("v") == 0) // V
{
dtdlUnit = "volt";
}
else if (lowercaseVspecUnit.compare("a") == 0) // A
{
dtdlUnit = "ampere";
}
else if (lowercaseVspecUnit.compare("pa") == 0)
{
dtdlUnit = "pascal";
}
else if (lowercaseVspecUnit.compare("ratio") == 0)
{
dtdlUnit = "ratio"; // TODO: Add this to DTDL
}
else if (lowercaseVspecUnit.compare("min") == 0)
{
dtdlUnit = "minute";
}
else if (lowercaseVspecUnit.compare("l/h") == 0)
{
dtdlUnit = "litrePerHour";
}
else if (lowercaseVspecUnit.compare("kwh") ==0) // kWh
{
dtdlUnit = "kilowattHour";
}
else
{
return false;
}
return true;
}
void VspecToDtdlConverter::TraverseAttribute(const vspec::Node& attribute, dtdl::Property& property)
{
property.Name = attribute.Name;
property.Writable = false;
if (!ConvertDatatypeToSchema(attribute.Datatype, property.Schema))
{
throw ConversionException("No schema equivalent for datatype '" + attribute.Datatype + "'");
}
if (!ConverVspecUnitToDtdlUnit(attribute.Unit, property.Unit))
{
throw ConversionException("No schema equivalent for unit '" + attribute.Unit + "'");
}
}
void VspecToDtdlConverter::TraverseActuator(const vspec::Node& actuator, dtdl::Property& property)
{
property.Name = actuator.Name;
property.Writable = true;
if (!ConvertDatatypeToSchema(actuator.Datatype, property.Schema))
{
throw ConversionException("No schema equivalent for datatype '" + actuator.Datatype + "'");
}
if (!ConverVspecUnitToDtdlUnit(actuator.Unit, property.Unit))
{
throw ConversionException("No schema equivalent for unit '" + actuator.Unit + "'");
}
}
void VspecToDtdlConverter::TraverseSensor(const vspec::Node& sensor, dtdl::Telemetry& telemetry)
{
telemetry.Name = sensor.Name;
if (!ConvertDatatypeToSchema(sensor.Datatype, telemetry.Schema))
{
throw ConversionException("No schema equivalent for datatype '" + sensor.Datatype + "'");
}
if (!ConverVspecUnitToDtdlUnit(sensor.Unit, telemetry.Unit))
{
throw ConversionException("No schema equivalent for unit '" + sensor.Unit + "'");
}
}
void VspecToDtdlConverter::TraverseBranch(const vspec::Node& branch, dtdl::Component& component)
{
// std::cout << branch.Name << std::endl;
component.Name = branch.Name;
for (auto it = branch.Children.begin(); it != branch.Children.end(); it++ )
{
if ((*it)->Type.compare("branch") == 0)
{
// PrintBranch(**it, level+1);
std::shared_ptr<dtdl::Component> subComponent(new dtdl::Component());
component.Components.push_back(subComponent);
TraverseBranch(*(it->get()), *(subComponent.get()));
}
else if ((*it)->Type.compare("sensor") == 0)
{
std::shared_ptr<dtdl::Telemetry> telemetry(new dtdl::Telemetry());
component.Telemetries.push_back(telemetry);
TraverseSensor(*(it->get()), *(telemetry.get()));
}
else if ((*it)->Type.compare("attribute") == 0)
{
std::shared_ptr<dtdl::Property> property(new dtdl::Property());
component.Properties.push_back(property);
TraverseAttribute(*(it->get()), *(property.get()));
}
else if ((*it)->Type.compare("actuator") == 0)
{
std::shared_ptr<dtdl::Property> property(new dtdl::Property());
component.Properties.push_back(property);
TraverseActuator(*(it->get()), *(property.get()));
}
else
{
// error - unexpected type
}
}
}

Просмотреть файл

@ -1,59 +0,0 @@
// ---------------------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// ---------------------------------------------------------------------------------
#ifndef VSPEC_TO_DTDL_CONVERTER_H
#define VSPEC_TO_DTDL_CONVERTER_H
#include "vspec-definition.h"
#include "dtdl-definition.h"
/*
vspec has a type field that maps to DTDLs @type field. Here are my thoughts on the mappings of VSS types to DTDL types:
branch => Component
attribute => Property that is not writable
sensor => Telemetry
actuator => Property that is writable (note: not sure if a Property would be considered non-static; if not, then perhaps a Command plus an associated Telemetry value would be needed)
stream (note: no direct equivalent)
*/
namespace microsoft::automotive::data
{
class ConversionException : public std::exception
{
public:
ConversionException(const std::string& message)
{
this->message = message;
}
virtual const char* what() const throw()
{
return message.c_str();
}
protected:
std::string message;
};
class VspecToDtdlConverter
{
public:
static void Convert(const vspec::Definition& vspecDefinition, dtdl::Definition& dtdlDefinition);
protected:
static void ToLower(std::string& str);
static bool ConvertDatatypeToSchema(const std::string& datatype, std::string& schema);
static bool ConverVspecUnitToDtdlUnit(const std::string& vspecUnit, std::string& dtdlUnit);
static void TraverseAttribute(const vspec::Node& attribute, dtdl::Property& property);
static void TraverseActuator(const vspec::Node& actuator, dtdl::Property& property);
static void TraverseSensor(const vspec::Node& sensor, dtdl::Telemetry& telemetry);
static void TraverseBranch(const vspec::Node& branch, dtdl::Component& component);
};
} // namespace microsoft::automotive::data
#endif // VSPEC_TO_DTDL_CONVERTER_H

8
tools/third-party/.gitignore поставляемый
Просмотреть файл

@ -1,8 +0,0 @@
boost
CMakeCache.txt
CMakeFiles
cmake_install.cmake
jsoncpp
Makefile
vehicle_signal_specification
yanml-cpp

73
tools/third-party/CMakeLists.txt поставляемый
Просмотреть файл

@ -1,73 +0,0 @@
cmake_minimum_required(VERSION 3.10)
project(third-party VERSION 1.0)
include(ExternalProject)
# Vehicle Signal Specification
set(VSS_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/vehicle_signal_specification)
ExternalProject_Add (vehicle_signal_specification
GIT_REPOSITORY https://github.com/GENIVI/vehicle_signal_specification
GIT_TAG master
PREFIX ${VSS_INSTALL_LOCATION}
# Disable all other steps
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
# BOOST program_options
set( boost_URL "http://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.bz2" )
set( boost_SHA1 "6d6ed02b29c860fd21b274fc4e1f820855e765e9" )
set( boost_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/boost )
set( boost_INCLUDE_DIR ${boost_INSTALL}/include )
set( boost_LIB_DIR ${boost_INSTALL}/lib )
ExternalProject_Add( external_boost
PREFIX boost
URL ${boost_URL}
URL_HASH SHA1=${boost_SHA1}
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ./bootstrap.sh --with-libraries=program_options --prefix=${boost_INSTALL}
BUILD_COMMAND ./b2 install link=static variant=release threading=multi runtime-link=static
INSTALL_COMMAND ""
INSTALL_DIR ${boost_INSTALL} )
set( boost_LIBRARY_SUFFIX .a )
add_library( boost::program_options STATIC IMPORTED )
set_property( TARGET boost::program_options PROPERTY IMPORTED_LOCATION ${boost_LIB_DIR}/libboost_program_options${boost_LIBRARY_SUFFIX} )
set_property( TARGET boost::program_options PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${boost_INCLUDE_DIR} )
add_dependencies( boost::program_options external_boost )
# yaml-cpp
set(YAML_CPP_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/yanml-cpp)
ExternalProject_Add (yaml-cpp
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp
GIT_TAG master
PREFIX ${YAML_CPP_INSTALL_LOCATION}
# Disable all other steps
INSTALL_COMMAND ""
)
# jsoncpp
set(JSONCPP_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/jsoncpp)
ExternalProject_Add (jsoncpp
GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp
GIT_TAG master
PREFIX ${JSONCPP_INSTALL_LOCATION}
# Disable all other steps
INSTALL_COMMAND ""
)