├── .gitignore
├── .idea
├── PythonDemo.iml
├── misc.xml
├── modules.xml
├── vcs.xml
└── workspace.xml
├── AeroPy
├── DataManager.py
└── TrignoBase.py
├── DataCollector
├── CollectDataController.py
└── CollectDataWindow.py
├── DelsysAPI AeroPy Programmer's Guide.pdf
├── Images
└── delsys.png
├── Plotter
├── GenericPlot.py
└── PlotCanvas.py
├── Python_Demo_MultiThreaded.py
├── README.md
├── StartMenu
└── StartWindow.py
├── UIControls
└── FrameController.py
├── __pycache__
├── PythonDemo.cpython-37.pyc
├── StartMenu.cpython-37.pyc
└── main.cpython-37.pyc
├── requirements.txt
└── resources
├── BouncyCastle.Crypto.dll
├── CoreCompat.Portable.Licensing.dll
├── DelsysAPI.deps.json
├── DelsysAPI.dll
├── DelsysAPI.pdb
├── Mono.Android.dll
├── Newtonsoft.Json.dll
├── Plugin.BLE.Abstractions.dll
├── Plugin.BLE.UWP.dll
├── Plugin.BLE.UWP.pdb
├── Plugin.BLE.UWP.pri
├── Plugin.BLE.dll
├── Portable.Licensing.dll
├── Portable.Licensing.xml
├── ShpfWritingUtility.dll
├── SiUSBXp.dll
├── Stateless.dll
├── Stateless.xml
├── System.Runtime.InteropServices.RuntimeInformation.dll
├── Xamarin.Forms.Core.dll
├── Xamarin.Forms.Platform.dll
├── Xamarin.Forms.Xaml.dll
└── libSiUSBXp.so
/.gitignore:
--------------------------------------------------------------------------------
1 | venv/
2 | .idea/
3 | *.pyc
4 | *.xml
5 | */__pycache__/
--------------------------------------------------------------------------------
/.idea/PythonDemo.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 1602791407564
24 |
25 |
26 | 1602791407564
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/AeroPy/DataManager.py:
--------------------------------------------------------------------------------
1 | """
2 | This is the class that handles the data that is output from the Delsys Trigno Base
3 | Create an instance of this and pass it a reference to the Trigno base for initialization
4 | """
5 | import numpy as np
6 |
7 | class DataKernel():
8 | def __init__(self,trigno_base):
9 | self.TrigBase = trigno_base
10 | self.packetCount = 0
11 | self.sampleCount = 0
12 |
13 | def processData(self,data_queue):
14 | """Processes the data from the Trignobase and places it in data_queue variable"""
15 | outArr = self.GetData()
16 | if outArr is not None:
17 | for i in range(len(outArr[0])):
18 | data_queue.append(list(np.asarray(outArr)[:, i]))
19 | try:
20 | self.packetCount += len(outArr[0])
21 | self.sampleCount += len(outArr[0][0])
22 | except:
23 | pass
24 |
25 | def GetData(self):
26 | """Callback to get the data from the streaming sensors"""
27 | dataReady = self.TrigBase.CheckDataQueue()
28 | if dataReady:
29 | DataOut = self.TrigBase.PollData()
30 | if len(DataOut) > 0: # Check for lost Packets
31 | outArr = [[] for i in range(len(DataOut))]
32 | for j in range(len(DataOut)):
33 | for k in range(len(DataOut[j])):
34 | outBuf = DataOut[j][k]
35 | outArr[j].append(np.asarray(outBuf))
36 | return outArr
37 | else:
38 | return None
39 | else:
40 | return None
41 |
42 | # region Helpers
43 | def getPacketCount(self):
44 | return self.packetCount
45 |
46 | def resetPacketCount(self):
47 | self.packetCount = 0
48 | self.sampleCount = 0
49 |
50 | def getSampleCount(self):
51 | return self.sampleCount
52 | #endregion
--------------------------------------------------------------------------------
/AeroPy/TrignoBase.py:
--------------------------------------------------------------------------------
1 | """
2 | This class creates an instance of the Trigno base. Put in your key and license here
3 | """
4 | import clr
5 | clr.AddReference("/resources/DelsysAPI")
6 | clr.AddReference("System.Collections")
7 |
8 |
9 | from Aero import AeroPy
10 |
11 | key = ""
12 | license = ""
13 |
14 | class TrignoBase():
15 | def __init__(self):
16 | self.BaseInstance = AeroPy()
--------------------------------------------------------------------------------
/DataCollector/CollectDataController.py:
--------------------------------------------------------------------------------
1 | """
2 | Controller class for the Data Collector Gui
3 | This is the GUI that lets you connect to a base, scan via rf for sensors, and stream data from them in real time
4 | """
5 |
6 | from collections import deque
7 | import threading
8 | from Plotter.GenericPlot import *
9 | from AeroPy.TrignoBase import *
10 | from AeroPy.DataManager import *
11 |
12 | clr.AddReference("System.Collections")
13 | from System.Collections.Generic import List
14 | from System import Int32
15 |
16 | base = TrignoBase()
17 | TrigBase = base.BaseInstance
18 |
19 | app.use_app('PySide2')
20 |
21 | class PlottingManagement():
22 | def __init__(self,EMGplot):
23 | self.EMGplot = EMGplot
24 | self.packetCount = 0
25 | self.pauseFlag = False
26 | self.numSamples = 10000
27 | self.DataHandler = DataKernel(TrigBase)
28 |
29 | def streaming(self):
30 | """This is the data processing thread"""
31 | self.emg_queue = deque()
32 | while self.pauseFlag is False:
33 | self.DataHandler.processData(self.emg_plot)
34 | print(self.DataHandler.getPacketCount())
35 |
36 | def vispyPlot(self):
37 | """Plot Thread"""
38 | while self.pauseFlag is False:
39 | if len(self.emg_plot) >= 1:
40 | incData = self.emg_plot.popleft()
41 | outData = list(np.asarray(incData)[tuple([self.dataStreamIdx])])
42 | self.EMGplot.plot_new_data(outData)
43 |
44 | def threadManager(self):
45 | """Handles the threads for the DataCollector gui"""
46 | self.emg_plot = deque()
47 |
48 | t1 = threading.Thread(target=self.streaming)
49 | t2 = threading.Thread(target=self.vispyPlot)
50 |
51 | t1.start()
52 | t2.start()
53 |
54 | def Connect_Callback(self):
55 | """Callback to connect to the base"""
56 | TrigBase.ValidateBase(key, license, "RF")
57 |
58 | def Pair_Callback(self):
59 | """Callback to tell the base to enter pair mode for new sensors"""
60 | TrigBase.PairSensors()
61 |
62 | def Scan_Callback(self):
63 | """Callback to tell the base to scan for any available sensors"""
64 | f = TrigBase.ScanSensors().Result
65 | self.nameList = TrigBase.ListSensorNames()
66 | self.SensorsFound = len(self.nameList)
67 |
68 | TrigBase.ConnectSensors()
69 | return self.nameList
70 |
71 | def Start_Callback(self):
72 | """Callback to start the data stream from Sensors"""
73 |
74 | self.pauseFlag = False
75 | newTransform = TrigBase.CreateTransform("raw")
76 | index = List[Int32]()
77 |
78 | TrigBase.ClearSensorList()
79 |
80 | for i in range(self.SensorsFound):
81 | selectedSensor = TrigBase.GetSensorObject(i)
82 | TrigBase.AddSensortoList(selectedSensor)
83 | index.Add(i)
84 |
85 | self.sampleRates = [[] for i in range(self.SensorsFound)]
86 |
87 | TrigBase.StreamData(index, newTransform, 2)
88 |
89 | self.dataStreamIdx = []
90 | plotCount = 0
91 | idxVal = 0
92 | for i in range(self.SensorsFound):
93 | selectedSensor = TrigBase.GetSensorObject(i)
94 | for channel in range(len(selectedSensor.TrignoChannels)):
95 | self.sampleRates[i].append((selectedSensor.TrignoChannels[channel].SampleRate,
96 | selectedSensor.TrignoChannels[channel].Name))
97 | if "EMG" in selectedSensor.TrignoChannels[channel].Name:
98 | self.dataStreamIdx.append(idxVal)
99 | plotCount+=1
100 | idxVal += 1
101 |
102 | self.EMGplot.initiateCanvas(None,None,plotCount,1,self.numSamples)
103 |
104 | self.threadManager()
105 |
106 | def Stop_Callback(self):
107 | """Callback to stop the data stream"""
108 | TrigBase.StopData()
109 | self.pauseFlag = True
110 |
111 | # Helper Functions
112 | def getSampleModes(self,sensorIdx):
113 | """Gets the list of sample modes available for selected sensor"""
114 | sampleModes = TrigBase.ListSensorModes(sensorIdx)
115 | return sampleModes
116 |
117 | def getCurMode(self):
118 | """Gets the current mode of the sensors"""
119 | curMode = TrigBase.GetSampleMode()
120 | return curMode
121 |
122 | def setSampleMode(self,curSensor,setMode):
123 | """Sets the sample mode for the selected sensor"""
124 | TrigBase.SetSampleMode(curSensor,setMode)
--------------------------------------------------------------------------------
/DataCollector/CollectDataWindow.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from PySide2.QtCore import *
3 | from PySide2.QtGui import *
4 | from PySide2.QtWidgets import *
5 | from DataCollector.CollectDataController import *
6 | import tkinter as tk
7 | from tkinter import filedialog
8 | from Plotter import GenericPlot as gp
9 |
10 | class CollectDataWindow(QWidget):
11 | def __init__(self,controller):
12 | QWidget.__init__(self)
13 |
14 | self.controller = controller
15 | self.buttonPanel = self.ButtonPanel()
16 | self.plotPanel = self.Plotter()
17 | self.splitter = QSplitter(self)
18 | self.splitter.addWidget(self.buttonPanel)
19 | self.splitter.addWidget(self.plotPanel)
20 | layout = QHBoxLayout()
21 | self.setStyleSheet("background-color:#3d4c51;")
22 | layout.addWidget(self.splitter)
23 | self.setLayout(layout)
24 | self.setWindowTitle("Collect Data Gui")
25 |
26 | self.CallbackConnector = PlottingManagement(self.plotCanvas)
27 |
28 | # region Gui Components
29 |
30 | def ButtonPanel(self):
31 | buttonPanel = QWidget()
32 | buttonLayout = QVBoxLayout()
33 |
34 | self.connect_button = QPushButton('Connect', self)
35 | self.connect_button.setToolTip('Connect Base')
36 | self.connect_button.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding)
37 | self.connect_button.objectName = 'Connect'
38 | self.connect_button.clicked.connect(self.connect_callback)
39 | self.connect_button.setStyleSheet('QPushButton {color: white;}')
40 | buttonLayout.addWidget(self.connect_button)
41 |
42 | findSensor_layout = QHBoxLayout()
43 |
44 | self.pair_button = QPushButton('Pair', self)
45 | self.pair_button.setToolTip('Pair Sensors')
46 | self.pair_button.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding)
47 | self.pair_button.objectName = 'Pair'
48 | self.pair_button.clicked.connect(self.pair_callback)
49 | self.pair_button.setStyleSheet('QPushButton {color: white;}')
50 | self.pair_button.setEnabled(False)
51 | findSensor_layout.addWidget(self.pair_button)
52 |
53 | self.scan_button = QPushButton('Scan', self)
54 | self.scan_button.setToolTip('Scan for Sensors')
55 | self.scan_button.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding)
56 | self.scan_button.objectName = 'Scan'
57 | self.scan_button.clicked.connect(self.scan_callback)
58 | self.scan_button.setStyleSheet('QPushButton {color: white;}')
59 | self.scan_button.setEnabled(False)
60 | findSensor_layout.addWidget(self.scan_button)
61 |
62 | buttonLayout.addLayout(findSensor_layout)
63 |
64 | self.start_button = QPushButton('Start', self)
65 | self.start_button.setToolTip('Start Sensor Stream')
66 | self.start_button.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
67 | self.start_button.objectName = 'Start'
68 | self.start_button.clicked.connect(self.start_callback)
69 | self.start_button.setStyleSheet('QPushButton {color: white;}')
70 | self.start_button.setEnabled(False)
71 | buttonLayout.addWidget(self.start_button)
72 |
73 | self.stop_button = QPushButton('Stop', self)
74 | self.stop_button.setToolTip('Stop Sensor Stream')
75 | self.stop_button.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
76 | self.stop_button.objectName = 'Stop'
77 | self.stop_button.clicked.connect(self.stop_callback)
78 | self.stop_button.setStyleSheet('QPushButton {color: white;}')
79 | self.stop_button.setEnabled(False)
80 | buttonLayout.addWidget(self.stop_button)
81 |
82 | self.SensorModeList = QComboBox(self)
83 | self.SensorModeList.setToolTip('PlaceHolder 3')
84 | self.SensorModeList.objectName = 'PlaceHolder'
85 | self.SensorModeList.setStyleSheet('QComboBox {color: white;background: #848482}')
86 | self.SensorModeList.currentIndexChanged.connect(self.sensorModeList_callback)
87 | buttonLayout.addWidget(self.SensorModeList)
88 |
89 | self.SensorListBox = QListWidget(self)
90 | self.SensorListBox.setToolTip('PlaceHolder 4')
91 | self.SensorListBox.objectName = 'PlaceHolder'
92 | self.SensorListBox.setStyleSheet('QListWidget {color: white;background:#848482}')
93 | self.SensorListBox.clicked.connect(self.sensorList_callback)
94 | buttonLayout.addWidget(self.SensorListBox)
95 |
96 | button = QPushButton('Home', self)
97 | button.setToolTip('Return to Start Menu')
98 | button.objectName = 'Home'
99 | button.clicked.connect(self.home_callback)
100 | button.setStyleSheet('QPushButton {color: white;}')
101 | buttonLayout.addWidget(button)
102 |
103 | buttonPanel.setLayout(buttonLayout)
104 |
105 | return buttonPanel
106 |
107 | def Plotter(self):
108 | widget = QWidget()
109 | widget.setLayout(QVBoxLayout())
110 | plot_mode = 'windowed'
111 | pc = gp.GenericPlot(plot_mode)
112 | pc.native.objectName = 'vispyCanvas'
113 | pc.native.parent = self
114 | widget.layout().addWidget(pc.native)
115 | self.plotCanvas = pc
116 | return widget
117 |
118 | # endregion
119 |
120 | def connect_callback(self):
121 | self.CallbackConnector.Connect_Callback()
122 | self.connect_button.setEnabled(False)
123 |
124 | self.pair_button.setEnabled(True)
125 | self.scan_button.setEnabled(True)
126 |
127 | def pair_callback(self):
128 | self.CallbackConnector.Pair_Callback()
129 | self.scan_callback()
130 |
131 | def scan_callback(self):
132 | sensorList = self.CallbackConnector.Scan_Callback()
133 | self.SensorListBox.clear()
134 | self.SensorListBox.addItems(sensorList)
135 | self.SensorListBox.setCurrentRow(0)
136 |
137 | if len(sensorList)>0:
138 | self.start_button.setEnabled(True)
139 |
140 | def start_callback(self):
141 | self.CallbackConnector.Start_Callback()
142 | self.stop_button.setEnabled(True)
143 |
144 | def stop_callback(self):
145 | self.CallbackConnector.Stop_Callback()
146 |
147 | def home_callback(self):
148 | self.controller.showStartMenu()
149 |
150 | def sensorList_callback(self):
151 | curItem = self.SensorListBox.currentRow()
152 | modeList = self.CallbackConnector.getSampleModes(curItem)
153 | curMode = self.CallbackConnector.getCurMode()
154 |
155 | self.SensorModeList.clear()
156 | self.SensorModeList.addItems(modeList)
157 | self.SensorModeList.setCurrentText(curMode[0])
158 |
159 | def sensorModeList_callback(self):
160 | curItem = self.SensorListBox.currentRow()
161 | selMode = self.SensorModeList.currentText()
162 | self.CallbackConnector.setSampleMode(curItem,selMode)
163 |
164 |
165 | if __name__ == '__main__':
166 | app = QApplication(sys.argv)
167 | CollectDataWindow = CollectDataWindow()
168 | CollectDataWindow.show()
169 | sys.exit(app.exec_())
--------------------------------------------------------------------------------
/DelsysAPI AeroPy Programmer's Guide.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/DelsysAPI AeroPy Programmer's Guide.pdf
--------------------------------------------------------------------------------
/Images/delsys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/Images/delsys.png
--------------------------------------------------------------------------------
/Plotter/GenericPlot.py:
--------------------------------------------------------------------------------
1 | """
2 | Generic Plot class
3 |
4 | Creation of this gives a canvas widget that can be placed within a gui.
5 |
6 | Once you create the canvas you can instantiate it with the how many rows and columns desired in the plot as well as the
7 | number of samples that you want displayed at a time on screen per plot
8 |
9 | you can also set color and index of the data if desired. If not, set it to null
10 |
11 | update the plot with call to plot_new_data with new data incoming as an np array shaped to rows and columns
12 | For example: to update a 4x1 plot, data should be 4xn array where n is how many new data points are being plotted
13 |
14 | Use Example:
15 | plotCanvas = PlottingCanvas()
16 | plotCanvas.initiateCanvas(None,None,1, 1,numSamples)
17 | """
18 |
19 | from vispy import gloo
20 | from vispy import app
21 | import numpy as np
22 | import math
23 |
24 |
25 | class GenericPlot(app.Canvas):
26 | def __init__(self, plot_mode: str = 'windowed'):
27 | app.use_app('PySide2')
28 | app.Canvas.__init__(self, title='Use your wheel to zoom!',
29 | keys='interactive', app='PySide2')
30 | gloo.set_viewport(0, 0, *self.physical_size)
31 | gloo.set_state(clear_color='black', blend=True,
32 | blend_func=('src_alpha', 'one_minus_src_alpha'))
33 | self.plot_interact_flag = True
34 | self.is_initialized = False
35 | self.y = None
36 | self.plot_mode = plot_mode
37 | self.last_plotted_column = -1
38 |
39 | def initiateCanvas(self, color, index, nrows=1, ncols=1, plot_window_sample_count=10000):
40 | self.nrows = nrows
41 | self.ncols = ncols
42 | self.plot_window_sample_count = int(plot_window_sample_count)
43 |
44 | # Number of signals.
45 | self.m = self.nrows * self.ncols
46 |
47 | # Number of samples per signal.
48 | self.n = int(self.plot_window_sample_count)
49 |
50 | # Generate the signals as a (m, n) array.
51 | self._reset_data_plot_buffer()
52 |
53 | # Color of each vertex (TODO: make it more efficient by using a GLSL-based
54 | # color map and the index).
55 | if color is None:
56 | color = np.repeat(np.random.uniform(size=(self.m, 3), low=.5, high=.9), self.n, axis=0).astype(np.float32)
57 |
58 | if index is None:
59 | index = np.c_[np.repeat(np.repeat(np.arange(self.ncols), self.nrows), self.n),
60 | np.repeat(np.tile(np.arange(self.nrows), self.ncols), self.n),
61 | np.tile(np.arange(self.n), self.m)].astype(np.float32)
62 |
63 | # Signal 2D index of each vertex (row and col) and x-index (sample index
64 | # within each signal).
65 |
66 | # region init
67 | VERT_SHADER = """
68 | #version 120
69 | // y coordinate of the position.
70 | attribute float a_position;
71 | // row, col, and time index.
72 | attribute vec3 a_index;
73 | varying vec3 v_index;
74 | // 2D scaling factor (zooming).
75 | uniform vec2 u_scale;
76 | // Size of the table.
77 | uniform vec2 u_size;
78 | // Number of samples per signal.
79 | uniform float u_n;
80 | // Color.
81 | attribute vec3 a_color;
82 | varying vec4 v_color;
83 | // Varying variables used for clipping in the fragment shader.
84 | varying vec2 v_position;
85 | varying vec4 v_ab;
86 | void main() {
87 | float nrows = u_size.x;
88 | float ncols = u_size.y;
89 | // Compute the x coordinate from the time index.
90 | float x = -1 + 2*a_index.z / (u_n-1);
91 | vec2 position = vec2(x - (1 - 1 / u_scale.x), a_position);
92 | // Find the affine transformation for the subplots.
93 | vec2 a = vec2(1./ncols, 1./nrows)*1;
94 | vec2 b = vec2(-1 + 2*(a_index.x+.5) / ncols,
95 | -1 + 2*(a_index.y+.5) / nrows);
96 | // Apply the static subplot transformation + scaling.
97 | gl_Position = vec4(a*u_scale*position+b, 0.0, 1.0);
98 | v_color = vec4(a_color, 1.);
99 | v_index = a_index;
100 | // For clipping test in the fragment shader.
101 | v_position = gl_Position.xy;
102 | v_ab = vec4(a, b);
103 | }
104 | """
105 |
106 | FRAG_SHADER = """
107 | #version 120
108 | varying vec4 v_color;
109 | varying vec3 v_index;
110 | varying vec2 v_position;
111 | varying vec4 v_ab;
112 | void main() {
113 | gl_FragColor = v_color;
114 | // Discard the fragments between the signals (emulate glMultiDrawArrays).
115 | if ((fract(v_index.x) > 0.) || (fract(v_index.y) > 0.))
116 | discard;
117 | // Clipping test.
118 | vec2 test = abs((v_position.xy-v_ab.zw)/v_ab.xy);
119 | if ((test.x > 1) || (test.y > 1))
120 | discard;
121 | }
122 | """
123 | # endregion
124 |
125 | self.program = gloo.Program(VERT_SHADER, FRAG_SHADER)
126 | self.program['a_position'] = self.y.reshape(-1, 1)
127 | self.program['a_color'] = color
128 | self.program['a_index'] = index
129 | self.program['u_scale'] = (1., 1.)
130 | self.program['u_size'] = (nrows, ncols)
131 | self.program['u_n'] = self.n
132 |
133 | self.pause = False
134 | self.is_initialized = True
135 |
136 | # self.show()
137 |
138 | def on_resize(self, event):
139 | if self.plot_interact_flag:
140 | gloo.set_viewport(0, 0, event.physical_size[0], event.physical_size[1])
141 | self.update()
142 |
143 | def on_mouse_wheel(self, event):
144 | if self.plot_interact_flag:
145 | dx = np.sign(event.delta[1]) * .05
146 | scale_x, scale_y = self.program['u_scale']
147 | scale_x_new, scale_y_new = (scale_x * math.exp(0.0 * dx),
148 | scale_y * math.exp(2.5 * dx))
149 | self.program['u_scale'] = (max(1, scale_x_new), max(1, scale_y_new))
150 | self.update()
151 |
152 | def on_pause(self):
153 | if self.plot_interact_flag:
154 | if self.pause:
155 | self.pause = False
156 | else:
157 | self.pause = True
158 |
159 | def plot_new_data(self, data_frame):
160 | if self.plot_mode.lower() == 'scrolling':
161 | self.plot_scrolling_data(data_frame)
162 | elif self.plot_mode.lower() == 'windowed':
163 | self.plot_windowed_data(data_frame)
164 | else:
165 | raise Exception('Plot mode not defined')
166 |
167 | def plot_scrolling_data(self, data_frame):
168 | new = np.asarray(data_frame)
169 | sp = np.shape(new)
170 | self.y[:, :-sp[1]] = self.y[:, sp[1]:]
171 | self.y[:, -sp[1]:] = new
172 | self._update_data()
173 |
174 | def plot_windowed_data(self, data_frame):
175 | new_data = np.asarray(data_frame)
176 | new_data_count = np.size(new_data, 1)
177 | start_index = self.last_plotted_column + 1
178 | end_index = start_index + new_data_count
179 | is_data_continued_to_next_window = end_index >= self.plot_window_sample_count
180 | if not is_data_continued_to_next_window:
181 | plot_data_indexes = range(start_index, end_index)
182 | self.y[:, plot_data_indexes] = new_data
183 | self.last_plotted_column = plot_data_indexes[-1]
184 | self._update_data()
185 | else:
186 | plot_data_indexes = range(start_index, self.plot_window_sample_count)
187 | data_count_in_first_frame = len(plot_data_indexes)
188 | from_data_index = range(data_count_in_first_frame)
189 | self.y[:, plot_data_indexes] = new_data[:, from_data_index]
190 | self._update_data()
191 |
192 | self._reset_data_plot_buffer()
193 |
194 | from_data_index = range(data_count_in_first_frame, new_data_count)
195 | remaining_data_count = len(from_data_index)
196 | if remaining_data_count > 0:
197 | plot_data_indexes = range(0, remaining_data_count)
198 | self.y[:, plot_data_indexes] = new_data[:, from_data_index]
199 | self.last_plotted_column = plot_data_indexes[-1]
200 | self._update_data()
201 |
202 | def _reset_data_plot_buffer(self):
203 | self.y = np.NaN * np.zeros((self.m, self.n)).astype(np.float32)
204 | self.last_plotted_column = -1
205 |
206 | def _update_data(self):
207 | if not self.pause:
208 | self.program['a_position'].set_data(self.y.ravel().astype(np.float32))
209 | self.update()
210 |
211 | def on_draw(self, event):
212 | if self.is_initialized:
213 | gloo.clear()
214 | self.program.draw('line_strip')
215 |
216 | def set_scaling(self, x_int, y_int):
217 | if self.is_initialized:
218 | self.program['u_scale'] = (float(x_int), float(y_int))
219 |
220 | def set_interactive(self, flag):
221 | self.plot_interact_flag = flag
222 |
--------------------------------------------------------------------------------
/Plotter/PlotCanvas.py:
--------------------------------------------------------------------------------
1 | """
2 | This is the constructor for users to create their own custom plot canvases
3 |
4 | They can add axis, titles, grids, etc to their plot objects here
5 |
6 | Should return a widget that they can just add into their gui by default
7 |
8 | For now, just one plot per plot object
9 | """
10 | from PySide2.QtCore import *
11 | from PySide2.QtGui import *
12 | from PySide2.QtWidgets import *
13 | from PySide2.QtCharts import *
14 | import Plotter.GenericPlot as gp
15 | import sys
16 |
17 | class PlotCanvas(QWidget):
18 | def __init__(self,plot_widget=None):
19 | QWidget.__init__(self)
20 |
21 | if plot_widget is None:
22 | plot = gp.GenericPlot()
23 | # #This should be passed in as a plot widget they created or automated
24 | plot_widget = QWidget()
25 | plot_widget.setLayout(QVBoxLayout())
26 | plot_widget.layout().addWidget(plot.native)
27 |
28 | self.plot_widget = plot_widget
29 |
30 | self.title = QLabel(self)
31 | self.title.setAlignment(Qt.AlignCenter)
32 |
33 | self.y_axis_label = QLabel(self)
34 | self.y_axis_label.setAlignment(Qt.AlignCenter)
35 |
36 | self.x_axis_label = QLabel(self)
37 | self.x_axis_label.setAlignment(Qt.AlignCenter)
38 |
39 | # Axis Labels
40 | self.y_axis = QLabel(self)
41 | self.y_axis.setAlignment(Qt.AlignCenter)
42 |
43 | self.x_axis = QLabel(self)
44 | self.x_axis.setAlignment(Qt.AlignCenter)
45 |
46 | #Create the vertical component
47 | self.VComp = QWidget(self)
48 | self.VGrid = QGridLayout()
49 | self.VGrid.setSpacing(0)
50 | self.VGrid.setMargin(0)
51 |
52 | self.VGrid.addWidget(self.title)
53 | self.VGrid.addWidget(self.plot_widget)
54 | # self.VSplitter.addWidget(self.x_axis) #Commenting this out for now until axis question can be solved
55 | # self.VGrid.addWidget(self.x_axis_label)
56 | self.VComp.setLayout(self.VGrid)
57 |
58 | #Add in the horizontal components
59 | self.HComp = QWidget(self)
60 | self.HGrid = QGridLayout()
61 | self.HGrid.setSpacing(0)
62 | self.HGrid.setMargin(0)
63 | # self.HGrid.addWidget(self.y_axis_label)
64 | # self.HSplitter.addWidget(self.y_axis) #Commenting this out for now until axis question can be solved
65 | self.HGrid.addWidget(self.VComp)
66 | self.HComp.setLayout(self.HGrid)
67 |
68 |
69 |
70 | layout = QHBoxLayout()
71 | layout.setSpacing(0)
72 | layout.setMargin(0)
73 | layout.addWidget(self.HComp)
74 | self.setLayout(layout)
75 |
76 | def set_title(self,title_string):
77 | self.title.setText(title_string)
78 |
79 | def set_y_label(self,title_string):
80 | self.y_axis_label.setText(title_string)
81 |
82 | def set_x_label(self,title_string):
83 | self.x_axis_label.setText(title_string)
84 |
85 | ## FIX THIS
86 | # class Vertical_Label(QWidget):
87 | # def __init__(self,parent, text=None):
88 | # QWidget.__init__(self,parent=parent)
89 | # self.text = text
90 | #
91 | # def paintEvent(self, event):
92 | # painter = QPainter(self)
93 | # painter.setPen(Qt.black)
94 | # painter.translate(20,100)
95 | # painter.rotate(-90)
96 | # if self.text:
97 | # painter.drawText(0, 0, self.text)
98 | # painter.end()
99 | #
100 | # def setText(self,text):
101 | # self.text = text
102 |
103 | if __name__ == '__main__':
104 | app = QApplication(sys.argv)
105 | PlotCanvas = PlotCanvas()
106 | PlotCanvas.set_title("Test Title")
107 | PlotCanvas.set_x_label("Test x Title")
108 | # PlotCanvas.set_y_label("Test y Title")
109 | PlotCanvas.show()
110 | sys.exit(app.exec_())
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/Python_Demo_MultiThreaded.py:
--------------------------------------------------------------------------------
1 | from UIControls.FrameController import *
2 |
3 | def main():
4 | app = QApplication(sys.argv)
5 | controller = FrameController()
6 | sys.exit(app.exec_())
7 |
8 | if __name__ == '__main__':
9 | main()
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ** This Repository is Outdated ** Visit [Delsys Example Applications](https://github.com/delsys-inc/Example-Applications) Repository for up-to-date examples
2 |
3 | --------------------------------------------------------------------------------------------------------------------------------------------------------------
4 |
5 |
6 | This is a Python example gui that utilizes the Delsys API in order to demonstrate functionality that users can
7 | implement in their own code. This example allows a user to connect to the base, scan for sensors, pair new sensors,
8 | and then stream data from them to a plot.
9 |
10 | 32 bit version
11 |
12 | ***
13 |
14 | To Run:
15 | Windows:
16 |
17 | Install python3 (32bit) - tested with Python 3.8.6rc1
18 | https://www.python.org/downloads/
19 |
20 | Install package dependencies for use:
21 | python -m pip install -r requirements.txt
22 |
23 | Go to /AeroPy/TrignoBase.py and copy paste key/license (be sure to wrap in quatations)
24 |
25 | Make sure base station is plugged in and has power.
26 |
27 | run Python_Demo_MultiThreaded.py
--------------------------------------------------------------------------------
/StartMenu/StartWindow.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from PySide2.QtCore import *
3 | from PySide2.QtGui import *
4 | from PySide2.QtWidgets import *
5 |
6 | class StartWindow(QWidget):
7 | def __init__(self,controller):
8 | QWidget.__init__(self)
9 | self.controller = controller
10 | grid = QGridLayout()
11 | self.setStyleSheet("background-color:#3d4c51;")
12 | self.setWindowTitle("Start Menu")
13 |
14 | imageBox = QHBoxLayout()
15 | self.im = QPixmap("./Images/delsys.png")
16 | self.label = QLabel()
17 | self.label.setPixmap(self.im)
18 | imageBox.addWidget(self.label)
19 | imageBox.setAlignment(Qt.AlignVCenter)
20 | grid.addLayout(imageBox,0,0)
21 |
22 | buttonBox=QHBoxLayout()
23 | buttonBox.setSpacing(0)
24 |
25 | button = QPushButton('Collect Data', self)
26 | button.setToolTip('Collect Data')
27 | button.objectName = 'Collect'
28 | button.clicked.connect(self.Collect_Data_Callback)
29 | button.setFixedSize(200,100)
30 | button.setStyleSheet('QPushButton {color: white;}')
31 | buttonBox.addWidget(button)
32 |
33 | grid.addLayout(buttonBox,1,0)
34 |
35 | self.setLayout(grid)
36 | self.setFixedSize(self.width(),self.height())
37 |
38 | def Collect_Data_Callback(self):
39 | """Shows the data collector gui frame"""
40 | self.controller.showCollectData()
41 |
42 |
43 |
44 | if __name__ == '__main__':
45 | app = QApplication(sys.argv)
46 | StartWindow = StartWindow()
47 | StartWindow.show()
48 | sys.exit(app.exec_())
49 |
--------------------------------------------------------------------------------
/UIControls/FrameController.py:
--------------------------------------------------------------------------------
1 | from DataCollector.CollectDataWindow import CollectDataWindow
2 | from StartMenu.StartWindow import StartWindow
3 | import sys
4 | from PySide2.QtWidgets import *
5 |
6 | class FrameController():
7 | def __init__(self):
8 | self.startWindow = StartWindow(self)
9 | self.collectWindow = CollectDataWindow(self)
10 |
11 | self.startWindow.show()
12 |
13 | self.curHeight = 650
14 | self.curWidth = 1115
15 |
16 | def showStartMenu(self):
17 | self.collectWindow.close()
18 | self.loadDataWindow.close()
19 | self.startWindow.show()
20 |
21 | def showCollectData(self):
22 | self.startWindow.close()
23 | self.collectWindow.show()
24 |
25 |
26 |
27 | def main():
28 | app = QApplication(sys.argv)
29 | controller = FrameController()
30 | sys.exit(app.exec_())
31 |
32 | if __name__ == '__main__':
33 | main()
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/__pycache__/PythonDemo.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/__pycache__/PythonDemo.cpython-37.pyc
--------------------------------------------------------------------------------
/__pycache__/StartMenu.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/__pycache__/StartMenu.cpython-37.pyc
--------------------------------------------------------------------------------
/__pycache__/main.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/__pycache__/main.cpython-37.pyc
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | Pyside2
2 | Vispy
3 | Scipy
4 | pythonnet
5 | numpy
--------------------------------------------------------------------------------
/resources/BouncyCastle.Crypto.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/BouncyCastle.Crypto.dll
--------------------------------------------------------------------------------
/resources/CoreCompat.Portable.Licensing.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/CoreCompat.Portable.Licensing.dll
--------------------------------------------------------------------------------
/resources/DelsysAPI.deps.json:
--------------------------------------------------------------------------------
1 | {
2 | "runtimeTarget": {
3 | "name": ".NETStandard,Version=v2.0/",
4 | "signature": "30876a4f452be4bc96a650d35b48bc108709e0dc"
5 | },
6 | "compilationOptions": {},
7 | "targets": {
8 | ".NETStandard,Version=v2.0": {},
9 | ".NETStandard,Version=v2.0/": {
10 | "DelsysAPI/1.0.0": {
11 | "dependencies": {
12 | "MathNet.Numerics": "4.8.0",
13 | "NETStandard.Library": "2.0.3",
14 | "Newtonsoft.Json": "12.0.3-beta1",
15 | "Stateless": "4.2.1",
16 | "System.Collections": "4.3.0",
17 | "System.Collections.Concurrent": "4.3.0",
18 | "System.Diagnostics.Debug": "4.3.0",
19 | "System.Diagnostics.Tools": "4.3.0",
20 | "System.Diagnostics.Tracing": "4.3.0",
21 | "System.Globalization": "4.3.0",
22 | "System.IO": "4.3.0",
23 | "System.IO.Compression": "4.3.0",
24 | "System.Linq": "4.3.0",
25 | "System.Linq.Expressions": "4.3.0",
26 | "System.Net.Http": "4.3.4",
27 | "System.Net.Primitives": "4.3.1",
28 | "System.ObjectModel": "4.3.0",
29 | "System.Reflection": "4.3.0",
30 | "System.Reflection.Extensions": "4.3.0",
31 | "System.Reflection.Primitives": "4.3.0",
32 | "System.Resources.ResourceManager": "4.3.0",
33 | "System.Runtime": "4.3.1",
34 | "System.Runtime.Extensions": "4.3.1",
35 | "System.Runtime.InteropServices": "4.3.0",
36 | "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
37 | "System.Runtime.Numerics": "4.3.0",
38 | "System.Text.Encoding": "4.3.0",
39 | "System.Text.Encoding.Extensions": "4.3.0",
40 | "System.Text.RegularExpressions": "4.3.1",
41 | "System.Threading": "4.3.0",
42 | "System.Threading.Tasks": "4.3.0",
43 | "System.Xml.ReaderWriter": "4.3.1",
44 | "System.Xml.XDocument": "4.3.0",
45 | "docfx.console": "2.42.4",
46 | "runtime.native.System": "4.3.1",
47 | "Plugin.BLE.Abstractions": "1.1.0.0",
48 | "Plugin.BLE": "1.1.0.0"
49 | },
50 | "runtime": {
51 | "DelsysAPI.dll": {}
52 | }
53 | },
54 | "docfx.console/2.42.4": {},
55 | "MathNet.Numerics/4.8.0": {
56 | "runtime": {
57 | "lib/netstandard2.0/MathNet.Numerics.dll": {
58 | "assemblyVersion": "4.8.0.0",
59 | "fileVersion": "4.8.0.0"
60 | }
61 | }
62 | },
63 | "Microsoft.NETCore.Platforms/1.1.1": {},
64 | "Microsoft.NETCore.Targets/1.1.3": {},
65 | "NETStandard.Library/2.0.3": {
66 | "dependencies": {
67 | "Microsoft.NETCore.Platforms": "1.1.1"
68 | }
69 | },
70 | "Newtonsoft.Json/12.0.3-beta1": {
71 | "runtime": {
72 | "lib/netstandard2.0/Newtonsoft.Json.dll": {
73 | "assemblyVersion": "12.0.0.0",
74 | "fileVersion": "12.0.3.23619"
75 | }
76 | }
77 | },
78 | "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
79 | "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
80 | "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
81 | "runtime.native.System/4.3.1": {
82 | "dependencies": {
83 | "Microsoft.NETCore.Platforms": "1.1.1",
84 | "Microsoft.NETCore.Targets": "1.1.3"
85 | }
86 | },
87 | "runtime.native.System.IO.Compression/4.3.0": {
88 | "dependencies": {
89 | "Microsoft.NETCore.Platforms": "1.1.1",
90 | "Microsoft.NETCore.Targets": "1.1.3"
91 | }
92 | },
93 | "runtime.native.System.Net.Http/4.3.0": {
94 | "dependencies": {
95 | "Microsoft.NETCore.Platforms": "1.1.1",
96 | "Microsoft.NETCore.Targets": "1.1.3"
97 | }
98 | },
99 | "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
100 | "dependencies": {
101 | "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
102 | }
103 | },
104 | "runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
105 | "dependencies": {
106 | "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
107 | "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
108 | "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
109 | "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
110 | "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
111 | "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
112 | "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
113 | "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
114 | "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
115 | "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
116 | }
117 | },
118 | "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
119 | "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
120 | "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
121 | "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
122 | "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
123 | "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
124 | "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
125 | "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
126 | "Stateless/4.2.1": {
127 | "dependencies": {
128 | "NETStandard.Library": "2.0.3"
129 | },
130 | "runtime": {
131 | "lib/netstandard1.0/Stateless.dll": {
132 | "assemblyVersion": "4.0.0.0",
133 | "fileVersion": "4.2.1.0"
134 | }
135 | }
136 | },
137 | "System.Buffers/4.3.0": {
138 | "dependencies": {
139 | "System.Diagnostics.Debug": "4.3.0",
140 | "System.Diagnostics.Tracing": "4.3.0",
141 | "System.Resources.ResourceManager": "4.3.0",
142 | "System.Runtime": "4.3.1",
143 | "System.Threading": "4.3.0"
144 | },
145 | "runtime": {
146 | "lib/netstandard1.1/System.Buffers.dll": {
147 | "assemblyVersion": "4.0.1.0",
148 | "fileVersion": "4.6.24705.1"
149 | }
150 | }
151 | },
152 | "System.Collections/4.3.0": {
153 | "dependencies": {
154 | "Microsoft.NETCore.Platforms": "1.1.1",
155 | "Microsoft.NETCore.Targets": "1.1.3",
156 | "System.Runtime": "4.3.1"
157 | }
158 | },
159 | "System.Collections.Concurrent/4.3.0": {
160 | "dependencies": {
161 | "System.Collections": "4.3.0",
162 | "System.Diagnostics.Debug": "4.3.0",
163 | "System.Diagnostics.Tracing": "4.3.0",
164 | "System.Globalization": "4.3.0",
165 | "System.Reflection": "4.3.0",
166 | "System.Resources.ResourceManager": "4.3.0",
167 | "System.Runtime": "4.3.1",
168 | "System.Runtime.Extensions": "4.3.1",
169 | "System.Threading": "4.3.0",
170 | "System.Threading.Tasks": "4.3.0"
171 | },
172 | "runtime": {
173 | "lib/netstandard1.3/System.Collections.Concurrent.dll": {
174 | "assemblyVersion": "4.0.13.0",
175 | "fileVersion": "4.6.24705.1"
176 | }
177 | }
178 | },
179 | "System.Diagnostics.Debug/4.3.0": {
180 | "dependencies": {
181 | "Microsoft.NETCore.Platforms": "1.1.1",
182 | "Microsoft.NETCore.Targets": "1.1.3",
183 | "System.Runtime": "4.3.1"
184 | }
185 | },
186 | "System.Diagnostics.DiagnosticSource/4.3.0": {
187 | "dependencies": {
188 | "System.Collections": "4.3.0",
189 | "System.Diagnostics.Tracing": "4.3.0",
190 | "System.Reflection": "4.3.0",
191 | "System.Runtime": "4.3.1",
192 | "System.Threading": "4.3.0"
193 | },
194 | "runtime": {
195 | "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {
196 | "assemblyVersion": "4.0.1.0",
197 | "fileVersion": "4.6.24705.1"
198 | }
199 | }
200 | },
201 | "System.Diagnostics.Tools/4.3.0": {
202 | "dependencies": {
203 | "Microsoft.NETCore.Platforms": "1.1.1",
204 | "Microsoft.NETCore.Targets": "1.1.3",
205 | "System.Runtime": "4.3.1"
206 | }
207 | },
208 | "System.Diagnostics.Tracing/4.3.0": {
209 | "dependencies": {
210 | "Microsoft.NETCore.Platforms": "1.1.1",
211 | "Microsoft.NETCore.Targets": "1.1.3",
212 | "System.Runtime": "4.3.1"
213 | }
214 | },
215 | "System.Globalization/4.3.0": {
216 | "dependencies": {
217 | "Microsoft.NETCore.Platforms": "1.1.1",
218 | "Microsoft.NETCore.Targets": "1.1.3",
219 | "System.Runtime": "4.3.1"
220 | }
221 | },
222 | "System.Globalization.Calendars/4.3.0": {
223 | "dependencies": {
224 | "Microsoft.NETCore.Platforms": "1.1.1",
225 | "Microsoft.NETCore.Targets": "1.1.3",
226 | "System.Globalization": "4.3.0",
227 | "System.Runtime": "4.3.1"
228 | }
229 | },
230 | "System.Globalization.Extensions/4.3.0": {
231 | "dependencies": {
232 | "Microsoft.NETCore.Platforms": "1.1.1",
233 | "System.Globalization": "4.3.0",
234 | "System.Resources.ResourceManager": "4.3.0",
235 | "System.Runtime": "4.3.1",
236 | "System.Runtime.Extensions": "4.3.1",
237 | "System.Runtime.InteropServices": "4.3.0"
238 | }
239 | },
240 | "System.IO/4.3.0": {
241 | "dependencies": {
242 | "Microsoft.NETCore.Platforms": "1.1.1",
243 | "Microsoft.NETCore.Targets": "1.1.3",
244 | "System.Runtime": "4.3.1",
245 | "System.Text.Encoding": "4.3.0",
246 | "System.Threading.Tasks": "4.3.0"
247 | }
248 | },
249 | "System.IO.Compression/4.3.0": {
250 | "dependencies": {
251 | "Microsoft.NETCore.Platforms": "1.1.1",
252 | "System.Buffers": "4.3.0",
253 | "System.Collections": "4.3.0",
254 | "System.Diagnostics.Debug": "4.3.0",
255 | "System.IO": "4.3.0",
256 | "System.Resources.ResourceManager": "4.3.0",
257 | "System.Runtime": "4.3.1",
258 | "System.Runtime.Extensions": "4.3.1",
259 | "System.Runtime.Handles": "4.3.0",
260 | "System.Runtime.InteropServices": "4.3.0",
261 | "System.Text.Encoding": "4.3.0",
262 | "System.Threading": "4.3.0",
263 | "System.Threading.Tasks": "4.3.0",
264 | "runtime.native.System": "4.3.1",
265 | "runtime.native.System.IO.Compression": "4.3.0"
266 | }
267 | },
268 | "System.IO.FileSystem/4.3.0": {
269 | "dependencies": {
270 | "Microsoft.NETCore.Platforms": "1.1.1",
271 | "Microsoft.NETCore.Targets": "1.1.3",
272 | "System.IO": "4.3.0",
273 | "System.IO.FileSystem.Primitives": "4.3.0",
274 | "System.Runtime": "4.3.1",
275 | "System.Runtime.Handles": "4.3.0",
276 | "System.Text.Encoding": "4.3.0",
277 | "System.Threading.Tasks": "4.3.0"
278 | }
279 | },
280 | "System.IO.FileSystem.Primitives/4.3.0": {
281 | "dependencies": {
282 | "System.Runtime": "4.3.1"
283 | },
284 | "runtime": {
285 | "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {
286 | "assemblyVersion": "4.0.2.0",
287 | "fileVersion": "4.6.24705.1"
288 | }
289 | }
290 | },
291 | "System.Linq/4.3.0": {
292 | "dependencies": {
293 | "System.Collections": "4.3.0",
294 | "System.Diagnostics.Debug": "4.3.0",
295 | "System.Resources.ResourceManager": "4.3.0",
296 | "System.Runtime": "4.3.1",
297 | "System.Runtime.Extensions": "4.3.1"
298 | },
299 | "runtime": {
300 | "lib/netstandard1.6/System.Linq.dll": {
301 | "assemblyVersion": "4.1.1.0",
302 | "fileVersion": "4.6.24705.1"
303 | }
304 | }
305 | },
306 | "System.Linq.Expressions/4.3.0": {
307 | "dependencies": {
308 | "System.Collections": "4.3.0",
309 | "System.Diagnostics.Debug": "4.3.0",
310 | "System.Globalization": "4.3.0",
311 | "System.IO": "4.3.0",
312 | "System.Linq": "4.3.0",
313 | "System.ObjectModel": "4.3.0",
314 | "System.Reflection": "4.3.0",
315 | "System.Reflection.Emit": "4.3.0",
316 | "System.Reflection.Emit.ILGeneration": "4.3.0",
317 | "System.Reflection.Emit.Lightweight": "4.3.0",
318 | "System.Reflection.Extensions": "4.3.0",
319 | "System.Reflection.Primitives": "4.3.0",
320 | "System.Reflection.TypeExtensions": "4.3.0",
321 | "System.Resources.ResourceManager": "4.3.0",
322 | "System.Runtime": "4.3.1",
323 | "System.Runtime.Extensions": "4.3.1",
324 | "System.Threading": "4.3.0"
325 | },
326 | "runtime": {
327 | "lib/netstandard1.6/System.Linq.Expressions.dll": {
328 | "assemblyVersion": "4.1.1.0",
329 | "fileVersion": "4.6.24705.1"
330 | }
331 | }
332 | },
333 | "System.Net.Http/4.3.4": {
334 | "dependencies": {
335 | "Microsoft.NETCore.Platforms": "1.1.1",
336 | "System.Collections": "4.3.0",
337 | "System.Diagnostics.Debug": "4.3.0",
338 | "System.Diagnostics.DiagnosticSource": "4.3.0",
339 | "System.Diagnostics.Tracing": "4.3.0",
340 | "System.Globalization": "4.3.0",
341 | "System.Globalization.Extensions": "4.3.0",
342 | "System.IO": "4.3.0",
343 | "System.IO.FileSystem": "4.3.0",
344 | "System.Net.Primitives": "4.3.1",
345 | "System.Resources.ResourceManager": "4.3.0",
346 | "System.Runtime": "4.3.1",
347 | "System.Runtime.Extensions": "4.3.1",
348 | "System.Runtime.Handles": "4.3.0",
349 | "System.Runtime.InteropServices": "4.3.0",
350 | "System.Security.Cryptography.Algorithms": "4.3.0",
351 | "System.Security.Cryptography.Encoding": "4.3.0",
352 | "System.Security.Cryptography.OpenSsl": "4.3.0",
353 | "System.Security.Cryptography.Primitives": "4.3.0",
354 | "System.Security.Cryptography.X509Certificates": "4.3.0",
355 | "System.Text.Encoding": "4.3.0",
356 | "System.Threading": "4.3.0",
357 | "System.Threading.Tasks": "4.3.0",
358 | "runtime.native.System": "4.3.1",
359 | "runtime.native.System.Net.Http": "4.3.0",
360 | "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
361 | }
362 | },
363 | "System.Net.Primitives/4.3.1": {
364 | "dependencies": {
365 | "Microsoft.NETCore.Platforms": "1.1.1",
366 | "Microsoft.NETCore.Targets": "1.1.3",
367 | "System.Runtime": "4.3.1",
368 | "System.Runtime.Handles": "4.3.0"
369 | }
370 | },
371 | "System.ObjectModel/4.3.0": {
372 | "dependencies": {
373 | "System.Collections": "4.3.0",
374 | "System.Diagnostics.Debug": "4.3.0",
375 | "System.Resources.ResourceManager": "4.3.0",
376 | "System.Runtime": "4.3.1",
377 | "System.Threading": "4.3.0"
378 | },
379 | "runtime": {
380 | "lib/netstandard1.3/System.ObjectModel.dll": {
381 | "assemblyVersion": "4.0.13.0",
382 | "fileVersion": "4.6.24705.1"
383 | }
384 | }
385 | },
386 | "System.Reflection/4.3.0": {
387 | "dependencies": {
388 | "Microsoft.NETCore.Platforms": "1.1.1",
389 | "Microsoft.NETCore.Targets": "1.1.3",
390 | "System.IO": "4.3.0",
391 | "System.Reflection.Primitives": "4.3.0",
392 | "System.Runtime": "4.3.1"
393 | }
394 | },
395 | "System.Reflection.Emit/4.3.0": {
396 | "dependencies": {
397 | "System.IO": "4.3.0",
398 | "System.Reflection": "4.3.0",
399 | "System.Reflection.Emit.ILGeneration": "4.3.0",
400 | "System.Reflection.Primitives": "4.3.0",
401 | "System.Runtime": "4.3.1"
402 | },
403 | "runtime": {
404 | "lib/netstandard1.3/System.Reflection.Emit.dll": {
405 | "assemblyVersion": "4.0.2.0",
406 | "fileVersion": "4.6.24705.1"
407 | }
408 | }
409 | },
410 | "System.Reflection.Emit.ILGeneration/4.3.0": {
411 | "dependencies": {
412 | "System.Reflection": "4.3.0",
413 | "System.Reflection.Primitives": "4.3.0",
414 | "System.Runtime": "4.3.1"
415 | },
416 | "runtime": {
417 | "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {
418 | "assemblyVersion": "4.0.2.0",
419 | "fileVersion": "4.6.24705.1"
420 | }
421 | }
422 | },
423 | "System.Reflection.Emit.Lightweight/4.3.0": {
424 | "dependencies": {
425 | "System.Reflection": "4.3.0",
426 | "System.Reflection.Emit.ILGeneration": "4.3.0",
427 | "System.Reflection.Primitives": "4.3.0",
428 | "System.Runtime": "4.3.1"
429 | },
430 | "runtime": {
431 | "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {
432 | "assemblyVersion": "4.0.2.0",
433 | "fileVersion": "4.6.24705.1"
434 | }
435 | }
436 | },
437 | "System.Reflection.Extensions/4.3.0": {
438 | "dependencies": {
439 | "Microsoft.NETCore.Platforms": "1.1.1",
440 | "Microsoft.NETCore.Targets": "1.1.3",
441 | "System.Reflection": "4.3.0",
442 | "System.Runtime": "4.3.1"
443 | }
444 | },
445 | "System.Reflection.Primitives/4.3.0": {
446 | "dependencies": {
447 | "Microsoft.NETCore.Platforms": "1.1.1",
448 | "Microsoft.NETCore.Targets": "1.1.3",
449 | "System.Runtime": "4.3.1"
450 | }
451 | },
452 | "System.Reflection.TypeExtensions/4.3.0": {
453 | "dependencies": {
454 | "System.Reflection": "4.3.0",
455 | "System.Runtime": "4.3.1"
456 | },
457 | "runtime": {
458 | "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {
459 | "assemblyVersion": "4.1.1.0",
460 | "fileVersion": "4.6.24705.1"
461 | }
462 | }
463 | },
464 | "System.Resources.ResourceManager/4.3.0": {
465 | "dependencies": {
466 | "Microsoft.NETCore.Platforms": "1.1.1",
467 | "Microsoft.NETCore.Targets": "1.1.3",
468 | "System.Globalization": "4.3.0",
469 | "System.Reflection": "4.3.0",
470 | "System.Runtime": "4.3.1"
471 | }
472 | },
473 | "System.Runtime/4.3.1": {
474 | "dependencies": {
475 | "Microsoft.NETCore.Platforms": "1.1.1",
476 | "Microsoft.NETCore.Targets": "1.1.3"
477 | }
478 | },
479 | "System.Runtime.Extensions/4.3.1": {
480 | "dependencies": {
481 | "Microsoft.NETCore.Platforms": "1.1.1",
482 | "Microsoft.NETCore.Targets": "1.1.3",
483 | "System.Runtime": "4.3.1"
484 | }
485 | },
486 | "System.Runtime.Handles/4.3.0": {
487 | "dependencies": {
488 | "Microsoft.NETCore.Platforms": "1.1.1",
489 | "Microsoft.NETCore.Targets": "1.1.3",
490 | "System.Runtime": "4.3.1"
491 | }
492 | },
493 | "System.Runtime.InteropServices/4.3.0": {
494 | "dependencies": {
495 | "Microsoft.NETCore.Platforms": "1.1.1",
496 | "Microsoft.NETCore.Targets": "1.1.3",
497 | "System.Reflection": "4.3.0",
498 | "System.Reflection.Primitives": "4.3.0",
499 | "System.Runtime": "4.3.1",
500 | "System.Runtime.Handles": "4.3.0"
501 | }
502 | },
503 | "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
504 | "dependencies": {
505 | "System.Reflection": "4.3.0",
506 | "System.Reflection.Extensions": "4.3.0",
507 | "System.Resources.ResourceManager": "4.3.0",
508 | "System.Runtime": "4.3.1",
509 | "System.Runtime.InteropServices": "4.3.0",
510 | "System.Threading": "4.3.0",
511 | "runtime.native.System": "4.3.1"
512 | },
513 | "runtime": {
514 | "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {
515 | "assemblyVersion": "4.0.1.0",
516 | "fileVersion": "4.6.24705.1"
517 | }
518 | }
519 | },
520 | "System.Runtime.Numerics/4.3.0": {
521 | "dependencies": {
522 | "System.Globalization": "4.3.0",
523 | "System.Resources.ResourceManager": "4.3.0",
524 | "System.Runtime": "4.3.1",
525 | "System.Runtime.Extensions": "4.3.1"
526 | },
527 | "runtime": {
528 | "lib/netstandard1.3/System.Runtime.Numerics.dll": {
529 | "assemblyVersion": "4.0.2.0",
530 | "fileVersion": "4.6.24705.1"
531 | }
532 | }
533 | },
534 | "System.Security.Cryptography.Algorithms/4.3.0": {
535 | "dependencies": {
536 | "Microsoft.NETCore.Platforms": "1.1.1",
537 | "System.Collections": "4.3.0",
538 | "System.IO": "4.3.0",
539 | "System.Resources.ResourceManager": "4.3.0",
540 | "System.Runtime": "4.3.1",
541 | "System.Runtime.Extensions": "4.3.1",
542 | "System.Runtime.Handles": "4.3.0",
543 | "System.Runtime.InteropServices": "4.3.0",
544 | "System.Runtime.Numerics": "4.3.0",
545 | "System.Security.Cryptography.Encoding": "4.3.0",
546 | "System.Security.Cryptography.Primitives": "4.3.0",
547 | "System.Text.Encoding": "4.3.0",
548 | "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
549 | "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
550 | }
551 | },
552 | "System.Security.Cryptography.Cng/4.3.0": {
553 | "dependencies": {
554 | "Microsoft.NETCore.Platforms": "1.1.1",
555 | "System.IO": "4.3.0",
556 | "System.Resources.ResourceManager": "4.3.0",
557 | "System.Runtime": "4.3.1",
558 | "System.Runtime.Extensions": "4.3.1",
559 | "System.Runtime.Handles": "4.3.0",
560 | "System.Runtime.InteropServices": "4.3.0",
561 | "System.Security.Cryptography.Algorithms": "4.3.0",
562 | "System.Security.Cryptography.Encoding": "4.3.0",
563 | "System.Security.Cryptography.Primitives": "4.3.0",
564 | "System.Text.Encoding": "4.3.0"
565 | }
566 | },
567 | "System.Security.Cryptography.Csp/4.3.0": {
568 | "dependencies": {
569 | "Microsoft.NETCore.Platforms": "1.1.1",
570 | "System.IO": "4.3.0",
571 | "System.Reflection": "4.3.0",
572 | "System.Resources.ResourceManager": "4.3.0",
573 | "System.Runtime": "4.3.1",
574 | "System.Runtime.Extensions": "4.3.1",
575 | "System.Runtime.Handles": "4.3.0",
576 | "System.Runtime.InteropServices": "4.3.0",
577 | "System.Security.Cryptography.Algorithms": "4.3.0",
578 | "System.Security.Cryptography.Encoding": "4.3.0",
579 | "System.Security.Cryptography.Primitives": "4.3.0",
580 | "System.Text.Encoding": "4.3.0",
581 | "System.Threading": "4.3.0"
582 | }
583 | },
584 | "System.Security.Cryptography.Encoding/4.3.0": {
585 | "dependencies": {
586 | "Microsoft.NETCore.Platforms": "1.1.1",
587 | "System.Collections": "4.3.0",
588 | "System.Collections.Concurrent": "4.3.0",
589 | "System.Linq": "4.3.0",
590 | "System.Resources.ResourceManager": "4.3.0",
591 | "System.Runtime": "4.3.1",
592 | "System.Runtime.Extensions": "4.3.1",
593 | "System.Runtime.Handles": "4.3.0",
594 | "System.Runtime.InteropServices": "4.3.0",
595 | "System.Security.Cryptography.Primitives": "4.3.0",
596 | "System.Text.Encoding": "4.3.0",
597 | "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
598 | }
599 | },
600 | "System.Security.Cryptography.OpenSsl/4.3.0": {
601 | "dependencies": {
602 | "System.Collections": "4.3.0",
603 | "System.IO": "4.3.0",
604 | "System.Resources.ResourceManager": "4.3.0",
605 | "System.Runtime": "4.3.1",
606 | "System.Runtime.Extensions": "4.3.1",
607 | "System.Runtime.Handles": "4.3.0",
608 | "System.Runtime.InteropServices": "4.3.0",
609 | "System.Runtime.Numerics": "4.3.0",
610 | "System.Security.Cryptography.Algorithms": "4.3.0",
611 | "System.Security.Cryptography.Encoding": "4.3.0",
612 | "System.Security.Cryptography.Primitives": "4.3.0",
613 | "System.Text.Encoding": "4.3.0",
614 | "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
615 | },
616 | "runtime": {
617 | "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {
618 | "assemblyVersion": "4.0.0.0",
619 | "fileVersion": "1.0.24212.1"
620 | }
621 | }
622 | },
623 | "System.Security.Cryptography.Primitives/4.3.0": {
624 | "dependencies": {
625 | "System.Diagnostics.Debug": "4.3.0",
626 | "System.Globalization": "4.3.0",
627 | "System.IO": "4.3.0",
628 | "System.Resources.ResourceManager": "4.3.0",
629 | "System.Runtime": "4.3.1",
630 | "System.Threading": "4.3.0",
631 | "System.Threading.Tasks": "4.3.0"
632 | },
633 | "runtime": {
634 | "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {
635 | "assemblyVersion": "4.0.1.0",
636 | "fileVersion": "4.6.24705.1"
637 | }
638 | }
639 | },
640 | "System.Security.Cryptography.X509Certificates/4.3.0": {
641 | "dependencies": {
642 | "Microsoft.NETCore.Platforms": "1.1.1",
643 | "System.Collections": "4.3.0",
644 | "System.Diagnostics.Debug": "4.3.0",
645 | "System.Globalization": "4.3.0",
646 | "System.Globalization.Calendars": "4.3.0",
647 | "System.IO": "4.3.0",
648 | "System.IO.FileSystem": "4.3.0",
649 | "System.IO.FileSystem.Primitives": "4.3.0",
650 | "System.Resources.ResourceManager": "4.3.0",
651 | "System.Runtime": "4.3.1",
652 | "System.Runtime.Extensions": "4.3.1",
653 | "System.Runtime.Handles": "4.3.0",
654 | "System.Runtime.InteropServices": "4.3.0",
655 | "System.Runtime.Numerics": "4.3.0",
656 | "System.Security.Cryptography.Algorithms": "4.3.0",
657 | "System.Security.Cryptography.Cng": "4.3.0",
658 | "System.Security.Cryptography.Csp": "4.3.0",
659 | "System.Security.Cryptography.Encoding": "4.3.0",
660 | "System.Security.Cryptography.OpenSsl": "4.3.0",
661 | "System.Security.Cryptography.Primitives": "4.3.0",
662 | "System.Text.Encoding": "4.3.0",
663 | "System.Threading": "4.3.0",
664 | "runtime.native.System": "4.3.1",
665 | "runtime.native.System.Net.Http": "4.3.0",
666 | "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
667 | }
668 | },
669 | "System.Text.Encoding/4.3.0": {
670 | "dependencies": {
671 | "Microsoft.NETCore.Platforms": "1.1.1",
672 | "Microsoft.NETCore.Targets": "1.1.3",
673 | "System.Runtime": "4.3.1"
674 | }
675 | },
676 | "System.Text.Encoding.Extensions/4.3.0": {
677 | "dependencies": {
678 | "Microsoft.NETCore.Platforms": "1.1.1",
679 | "Microsoft.NETCore.Targets": "1.1.3",
680 | "System.Runtime": "4.3.1",
681 | "System.Text.Encoding": "4.3.0"
682 | }
683 | },
684 | "System.Text.RegularExpressions/4.3.1": {
685 | "dependencies": {
686 | "System.Collections": "4.3.0",
687 | "System.Globalization": "4.3.0",
688 | "System.Resources.ResourceManager": "4.3.0",
689 | "System.Runtime": "4.3.1",
690 | "System.Runtime.Extensions": "4.3.1",
691 | "System.Threading": "4.3.0"
692 | },
693 | "runtime": {
694 | "lib/netstandard1.6/System.Text.RegularExpressions.dll": {
695 | "assemblyVersion": "4.1.1.1",
696 | "fileVersion": "4.6.27618.1"
697 | }
698 | }
699 | },
700 | "System.Threading/4.3.0": {
701 | "dependencies": {
702 | "System.Runtime": "4.3.1",
703 | "System.Threading.Tasks": "4.3.0"
704 | },
705 | "runtime": {
706 | "lib/netstandard1.3/System.Threading.dll": {
707 | "assemblyVersion": "4.0.12.0",
708 | "fileVersion": "4.6.24705.1"
709 | }
710 | }
711 | },
712 | "System.Threading.Tasks/4.3.0": {
713 | "dependencies": {
714 | "Microsoft.NETCore.Platforms": "1.1.1",
715 | "Microsoft.NETCore.Targets": "1.1.3",
716 | "System.Runtime": "4.3.1"
717 | }
718 | },
719 | "System.Threading.Tasks.Extensions/4.3.0": {
720 | "dependencies": {
721 | "System.Collections": "4.3.0",
722 | "System.Runtime": "4.3.1",
723 | "System.Threading.Tasks": "4.3.0"
724 | },
725 | "runtime": {
726 | "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {
727 | "assemblyVersion": "4.1.0.0",
728 | "fileVersion": "4.6.24705.1"
729 | }
730 | }
731 | },
732 | "System.Xml.ReaderWriter/4.3.1": {
733 | "dependencies": {
734 | "System.Collections": "4.3.0",
735 | "System.Diagnostics.Debug": "4.3.0",
736 | "System.Globalization": "4.3.0",
737 | "System.IO": "4.3.0",
738 | "System.IO.FileSystem": "4.3.0",
739 | "System.IO.FileSystem.Primitives": "4.3.0",
740 | "System.Resources.ResourceManager": "4.3.0",
741 | "System.Runtime": "4.3.1",
742 | "System.Runtime.Extensions": "4.3.1",
743 | "System.Runtime.InteropServices": "4.3.0",
744 | "System.Text.Encoding": "4.3.0",
745 | "System.Text.Encoding.Extensions": "4.3.0",
746 | "System.Text.RegularExpressions": "4.3.1",
747 | "System.Threading.Tasks": "4.3.0",
748 | "System.Threading.Tasks.Extensions": "4.3.0"
749 | },
750 | "runtime": {
751 | "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {
752 | "assemblyVersion": "4.1.0.0",
753 | "fileVersion": "4.6.26011.1"
754 | }
755 | }
756 | },
757 | "System.Xml.XDocument/4.3.0": {
758 | "dependencies": {
759 | "System.Collections": "4.3.0",
760 | "System.Diagnostics.Debug": "4.3.0",
761 | "System.Diagnostics.Tools": "4.3.0",
762 | "System.Globalization": "4.3.0",
763 | "System.IO": "4.3.0",
764 | "System.Reflection": "4.3.0",
765 | "System.Resources.ResourceManager": "4.3.0",
766 | "System.Runtime": "4.3.1",
767 | "System.Runtime.Extensions": "4.3.1",
768 | "System.Text.Encoding": "4.3.0",
769 | "System.Threading": "4.3.0",
770 | "System.Xml.ReaderWriter": "4.3.1"
771 | },
772 | "runtime": {
773 | "lib/netstandard1.3/System.Xml.XDocument.dll": {
774 | "assemblyVersion": "4.0.12.0",
775 | "fileVersion": "4.6.24705.1"
776 | }
777 | }
778 | },
779 | "Plugin.BLE.Abstractions/1.1.0.0": {
780 | "runtime": {
781 | "Plugin.BLE.Abstractions.dll": {
782 | "assemblyVersion": "1.1.0.0",
783 | "fileVersion": "1.1.0.0"
784 | }
785 | }
786 | },
787 | "Plugin.BLE/1.1.0.0": {
788 | "runtime": {
789 | "Plugin.BLE.dll": {
790 | "assemblyVersion": "1.1.0.0",
791 | "fileVersion": "1.1.0.0"
792 | }
793 | }
794 | }
795 | }
796 | },
797 | "libraries": {
798 | "DelsysAPI/1.0.0": {
799 | "type": "project",
800 | "serviceable": false,
801 | "sha512": ""
802 | },
803 | "docfx.console/2.42.4": {
804 | "type": "package",
805 | "serviceable": true,
806 | "sha512": "sha512-xIp+uRcbjC/+a74vjWosu9xohHQ7WaB4fdWaCCX9A+B8wyhupCRwPJL7rfV3lVfIAQy7ba1YkFl7Ubl+cIqSPw==",
807 | "path": "docfx.console/2.42.4",
808 | "hashPath": "docfx.console.2.42.4.nupkg.sha512"
809 | },
810 | "MathNet.Numerics/4.8.0": {
811 | "type": "package",
812 | "serviceable": true,
813 | "sha512": "sha512-haZ6IgPU51AKnI2PGjdbx+h2y41PV0fTPciZ0y2E8Crm6bI6VNGym5d+NmiT7MCxVWVV207rzYlfE+DuelaQEQ==",
814 | "path": "mathnet.numerics/4.8.0",
815 | "hashPath": "mathnet.numerics.4.8.0.nupkg.sha512"
816 | },
817 | "Microsoft.NETCore.Platforms/1.1.1": {
818 | "type": "package",
819 | "serviceable": true,
820 | "sha512": "sha512-TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ==",
821 | "path": "microsoft.netcore.platforms/1.1.1",
822 | "hashPath": "microsoft.netcore.platforms.1.1.1.nupkg.sha512"
823 | },
824 | "Microsoft.NETCore.Targets/1.1.3": {
825 | "type": "package",
826 | "serviceable": true,
827 | "sha512": "sha512-3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==",
828 | "path": "microsoft.netcore.targets/1.1.3",
829 | "hashPath": "microsoft.netcore.targets.1.1.3.nupkg.sha512"
830 | },
831 | "NETStandard.Library/2.0.3": {
832 | "type": "package",
833 | "serviceable": true,
834 | "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
835 | "path": "netstandard.library/2.0.3",
836 | "hashPath": "netstandard.library.2.0.3.nupkg.sha512"
837 | },
838 | "Newtonsoft.Json/12.0.3-beta1": {
839 | "type": "package",
840 | "serviceable": true,
841 | "sha512": "sha512-dvGx3CT9tEs9LbgyIw9MZl+sLCFa6yx1NXLKaldRk+N9BgToJpCK2PUv8z2aNbLq6ljtLS93X5gamWxs8DhdRA==",
842 | "path": "newtonsoft.json/12.0.3-beta1",
843 | "hashPath": "newtonsoft.json.12.0.3-beta1.nupkg.sha512"
844 | },
845 | "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
846 | "type": "package",
847 | "serviceable": true,
848 | "sha512": "sha512-7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==",
849 | "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
850 | "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
851 | },
852 | "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
853 | "type": "package",
854 | "serviceable": true,
855 | "sha512": "sha512-0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==",
856 | "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
857 | "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
858 | },
859 | "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
860 | "type": "package",
861 | "serviceable": true,
862 | "sha512": "sha512-G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==",
863 | "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
864 | "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
865 | },
866 | "runtime.native.System/4.3.1": {
867 | "type": "package",
868 | "serviceable": true,
869 | "sha512": "sha512-K4T2HBcp48al2HPSQI07m4uBaFoiRqYeGKouynd7VnOdqQJUPVPMiqeXCgJqlCTiszxLmOlDEnKewdr2JOMTMA==",
870 | "path": "runtime.native.system/4.3.1",
871 | "hashPath": "runtime.native.system.4.3.1.nupkg.sha512"
872 | },
873 | "runtime.native.System.IO.Compression/4.3.0": {
874 | "type": "package",
875 | "serviceable": true,
876 | "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
877 | "path": "runtime.native.system.io.compression/4.3.0",
878 | "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512"
879 | },
880 | "runtime.native.System.Net.Http/4.3.0": {
881 | "type": "package",
882 | "serviceable": true,
883 | "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
884 | "path": "runtime.native.system.net.http/4.3.0",
885 | "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
886 | },
887 | "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
888 | "type": "package",
889 | "serviceable": true,
890 | "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
891 | "path": "runtime.native.system.security.cryptography.apple/4.3.0",
892 | "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
893 | },
894 | "runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
895 | "type": "package",
896 | "serviceable": true,
897 | "sha512": "sha512-QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
898 | "path": "runtime.native.system.security.cryptography.openssl/4.3.2",
899 | "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
900 | },
901 | "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
902 | "type": "package",
903 | "serviceable": true,
904 | "sha512": "sha512-I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==",
905 | "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
906 | "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
907 | },
908 | "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
909 | "type": "package",
910 | "serviceable": true,
911 | "sha512": "sha512-1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==",
912 | "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
913 | "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
914 | },
915 | "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
916 | "type": "package",
917 | "serviceable": true,
918 | "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
919 | "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
920 | "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
921 | },
922 | "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
923 | "type": "package",
924 | "serviceable": true,
925 | "sha512": "sha512-6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==",
926 | "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
927 | "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
928 | },
929 | "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
930 | "type": "package",
931 | "serviceable": true,
932 | "sha512": "sha512-vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==",
933 | "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
934 | "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
935 | },
936 | "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
937 | "type": "package",
938 | "serviceable": true,
939 | "sha512": "sha512-7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==",
940 | "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
941 | "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
942 | },
943 | "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
944 | "type": "package",
945 | "serviceable": true,
946 | "sha512": "sha512-xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==",
947 | "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
948 | "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
949 | },
950 | "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
951 | "type": "package",
952 | "serviceable": true,
953 | "sha512": "sha512-leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==",
954 | "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
955 | "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
956 | },
957 | "Stateless/4.2.1": {
958 | "type": "package",
959 | "serviceable": true,
960 | "sha512": "sha512-Eu6YOVCKmXWL34UJ3Z51Jlc4MUmqBx7csCiIdyARVooTPHZYf8ktVc+F2j7yQSV8u3eEQUuQvxzu+1ZVSKZ0bA==",
961 | "path": "stateless/4.2.1",
962 | "hashPath": "stateless.4.2.1.nupkg.sha512"
963 | },
964 | "System.Buffers/4.3.0": {
965 | "type": "package",
966 | "serviceable": true,
967 | "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
968 | "path": "system.buffers/4.3.0",
969 | "hashPath": "system.buffers.4.3.0.nupkg.sha512"
970 | },
971 | "System.Collections/4.3.0": {
972 | "type": "package",
973 | "serviceable": true,
974 | "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
975 | "path": "system.collections/4.3.0",
976 | "hashPath": "system.collections.4.3.0.nupkg.sha512"
977 | },
978 | "System.Collections.Concurrent/4.3.0": {
979 | "type": "package",
980 | "serviceable": true,
981 | "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
982 | "path": "system.collections.concurrent/4.3.0",
983 | "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
984 | },
985 | "System.Diagnostics.Debug/4.3.0": {
986 | "type": "package",
987 | "serviceable": true,
988 | "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
989 | "path": "system.diagnostics.debug/4.3.0",
990 | "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
991 | },
992 | "System.Diagnostics.DiagnosticSource/4.3.0": {
993 | "type": "package",
994 | "serviceable": true,
995 | "sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
996 | "path": "system.diagnostics.diagnosticsource/4.3.0",
997 | "hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
998 | },
999 | "System.Diagnostics.Tools/4.3.0": {
1000 | "type": "package",
1001 | "serviceable": true,
1002 | "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
1003 | "path": "system.diagnostics.tools/4.3.0",
1004 | "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512"
1005 | },
1006 | "System.Diagnostics.Tracing/4.3.0": {
1007 | "type": "package",
1008 | "serviceable": true,
1009 | "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
1010 | "path": "system.diagnostics.tracing/4.3.0",
1011 | "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
1012 | },
1013 | "System.Globalization/4.3.0": {
1014 | "type": "package",
1015 | "serviceable": true,
1016 | "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
1017 | "path": "system.globalization/4.3.0",
1018 | "hashPath": "system.globalization.4.3.0.nupkg.sha512"
1019 | },
1020 | "System.Globalization.Calendars/4.3.0": {
1021 | "type": "package",
1022 | "serviceable": true,
1023 | "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
1024 | "path": "system.globalization.calendars/4.3.0",
1025 | "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
1026 | },
1027 | "System.Globalization.Extensions/4.3.0": {
1028 | "type": "package",
1029 | "serviceable": true,
1030 | "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
1031 | "path": "system.globalization.extensions/4.3.0",
1032 | "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
1033 | },
1034 | "System.IO/4.3.0": {
1035 | "type": "package",
1036 | "serviceable": true,
1037 | "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
1038 | "path": "system.io/4.3.0",
1039 | "hashPath": "system.io.4.3.0.nupkg.sha512"
1040 | },
1041 | "System.IO.Compression/4.3.0": {
1042 | "type": "package",
1043 | "serviceable": true,
1044 | "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
1045 | "path": "system.io.compression/4.3.0",
1046 | "hashPath": "system.io.compression.4.3.0.nupkg.sha512"
1047 | },
1048 | "System.IO.FileSystem/4.3.0": {
1049 | "type": "package",
1050 | "serviceable": true,
1051 | "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
1052 | "path": "system.io.filesystem/4.3.0",
1053 | "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
1054 | },
1055 | "System.IO.FileSystem.Primitives/4.3.0": {
1056 | "type": "package",
1057 | "serviceable": true,
1058 | "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
1059 | "path": "system.io.filesystem.primitives/4.3.0",
1060 | "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
1061 | },
1062 | "System.Linq/4.3.0": {
1063 | "type": "package",
1064 | "serviceable": true,
1065 | "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
1066 | "path": "system.linq/4.3.0",
1067 | "hashPath": "system.linq.4.3.0.nupkg.sha512"
1068 | },
1069 | "System.Linq.Expressions/4.3.0": {
1070 | "type": "package",
1071 | "serviceable": true,
1072 | "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
1073 | "path": "system.linq.expressions/4.3.0",
1074 | "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512"
1075 | },
1076 | "System.Net.Http/4.3.4": {
1077 | "type": "package",
1078 | "serviceable": true,
1079 | "sha512": "sha512-aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==",
1080 | "path": "system.net.http/4.3.4",
1081 | "hashPath": "system.net.http.4.3.4.nupkg.sha512"
1082 | },
1083 | "System.Net.Primitives/4.3.1": {
1084 | "type": "package",
1085 | "serviceable": true,
1086 | "sha512": "sha512-OHzPhSme78BbmLe9UBxHM69ZYjClS5URuhce6Ta4ikiLgaUGiG/X84fZpI6zy7CsUH5R9cYzI2tv9dWPqdTkUg==",
1087 | "path": "system.net.primitives/4.3.1",
1088 | "hashPath": "system.net.primitives.4.3.1.nupkg.sha512"
1089 | },
1090 | "System.ObjectModel/4.3.0": {
1091 | "type": "package",
1092 | "serviceable": true,
1093 | "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
1094 | "path": "system.objectmodel/4.3.0",
1095 | "hashPath": "system.objectmodel.4.3.0.nupkg.sha512"
1096 | },
1097 | "System.Reflection/4.3.0": {
1098 | "type": "package",
1099 | "serviceable": true,
1100 | "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
1101 | "path": "system.reflection/4.3.0",
1102 | "hashPath": "system.reflection.4.3.0.nupkg.sha512"
1103 | },
1104 | "System.Reflection.Emit/4.3.0": {
1105 | "type": "package",
1106 | "serviceable": true,
1107 | "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
1108 | "path": "system.reflection.emit/4.3.0",
1109 | "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512"
1110 | },
1111 | "System.Reflection.Emit.ILGeneration/4.3.0": {
1112 | "type": "package",
1113 | "serviceable": true,
1114 | "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
1115 | "path": "system.reflection.emit.ilgeneration/4.3.0",
1116 | "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512"
1117 | },
1118 | "System.Reflection.Emit.Lightweight/4.3.0": {
1119 | "type": "package",
1120 | "serviceable": true,
1121 | "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
1122 | "path": "system.reflection.emit.lightweight/4.3.0",
1123 | "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512"
1124 | },
1125 | "System.Reflection.Extensions/4.3.0": {
1126 | "type": "package",
1127 | "serviceable": true,
1128 | "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
1129 | "path": "system.reflection.extensions/4.3.0",
1130 | "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512"
1131 | },
1132 | "System.Reflection.Primitives/4.3.0": {
1133 | "type": "package",
1134 | "serviceable": true,
1135 | "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
1136 | "path": "system.reflection.primitives/4.3.0",
1137 | "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
1138 | },
1139 | "System.Reflection.TypeExtensions/4.3.0": {
1140 | "type": "package",
1141 | "serviceable": true,
1142 | "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
1143 | "path": "system.reflection.typeextensions/4.3.0",
1144 | "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512"
1145 | },
1146 | "System.Resources.ResourceManager/4.3.0": {
1147 | "type": "package",
1148 | "serviceable": true,
1149 | "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
1150 | "path": "system.resources.resourcemanager/4.3.0",
1151 | "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
1152 | },
1153 | "System.Runtime/4.3.1": {
1154 | "type": "package",
1155 | "serviceable": true,
1156 | "sha512": "sha512-abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
1157 | "path": "system.runtime/4.3.1",
1158 | "hashPath": "system.runtime.4.3.1.nupkg.sha512"
1159 | },
1160 | "System.Runtime.Extensions/4.3.1": {
1161 | "type": "package",
1162 | "serviceable": true,
1163 | "sha512": "sha512-qAtKMcHOAq9/zKkl0dwvF0T0pmgCQxX1rC49rJXoU8jq+lw6MC3uXy7nLFmjEI20T3Aq069eWz4LcYR64vEmJw==",
1164 | "path": "system.runtime.extensions/4.3.1",
1165 | "hashPath": "system.runtime.extensions.4.3.1.nupkg.sha512"
1166 | },
1167 | "System.Runtime.Handles/4.3.0": {
1168 | "type": "package",
1169 | "serviceable": true,
1170 | "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
1171 | "path": "system.runtime.handles/4.3.0",
1172 | "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
1173 | },
1174 | "System.Runtime.InteropServices/4.3.0": {
1175 | "type": "package",
1176 | "serviceable": true,
1177 | "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
1178 | "path": "system.runtime.interopservices/4.3.0",
1179 | "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
1180 | },
1181 | "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
1182 | "type": "package",
1183 | "serviceable": true,
1184 | "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
1185 | "path": "system.runtime.interopservices.runtimeinformation/4.3.0",
1186 | "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512"
1187 | },
1188 | "System.Runtime.Numerics/4.3.0": {
1189 | "type": "package",
1190 | "serviceable": true,
1191 | "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
1192 | "path": "system.runtime.numerics/4.3.0",
1193 | "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
1194 | },
1195 | "System.Security.Cryptography.Algorithms/4.3.0": {
1196 | "type": "package",
1197 | "serviceable": true,
1198 | "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
1199 | "path": "system.security.cryptography.algorithms/4.3.0",
1200 | "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
1201 | },
1202 | "System.Security.Cryptography.Cng/4.3.0": {
1203 | "type": "package",
1204 | "serviceable": true,
1205 | "sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
1206 | "path": "system.security.cryptography.cng/4.3.0",
1207 | "hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
1208 | },
1209 | "System.Security.Cryptography.Csp/4.3.0": {
1210 | "type": "package",
1211 | "serviceable": true,
1212 | "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
1213 | "path": "system.security.cryptography.csp/4.3.0",
1214 | "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
1215 | },
1216 | "System.Security.Cryptography.Encoding/4.3.0": {
1217 | "type": "package",
1218 | "serviceable": true,
1219 | "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
1220 | "path": "system.security.cryptography.encoding/4.3.0",
1221 | "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
1222 | },
1223 | "System.Security.Cryptography.OpenSsl/4.3.0": {
1224 | "type": "package",
1225 | "serviceable": true,
1226 | "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
1227 | "path": "system.security.cryptography.openssl/4.3.0",
1228 | "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
1229 | },
1230 | "System.Security.Cryptography.Primitives/4.3.0": {
1231 | "type": "package",
1232 | "serviceable": true,
1233 | "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
1234 | "path": "system.security.cryptography.primitives/4.3.0",
1235 | "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
1236 | },
1237 | "System.Security.Cryptography.X509Certificates/4.3.0": {
1238 | "type": "package",
1239 | "serviceable": true,
1240 | "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
1241 | "path": "system.security.cryptography.x509certificates/4.3.0",
1242 | "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
1243 | },
1244 | "System.Text.Encoding/4.3.0": {
1245 | "type": "package",
1246 | "serviceable": true,
1247 | "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
1248 | "path": "system.text.encoding/4.3.0",
1249 | "hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
1250 | },
1251 | "System.Text.Encoding.Extensions/4.3.0": {
1252 | "type": "package",
1253 | "serviceable": true,
1254 | "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
1255 | "path": "system.text.encoding.extensions/4.3.0",
1256 | "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512"
1257 | },
1258 | "System.Text.RegularExpressions/4.3.1": {
1259 | "type": "package",
1260 | "serviceable": true,
1261 | "sha512": "sha512-N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==",
1262 | "path": "system.text.regularexpressions/4.3.1",
1263 | "hashPath": "system.text.regularexpressions.4.3.1.nupkg.sha512"
1264 | },
1265 | "System.Threading/4.3.0": {
1266 | "type": "package",
1267 | "serviceable": true,
1268 | "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
1269 | "path": "system.threading/4.3.0",
1270 | "hashPath": "system.threading.4.3.0.nupkg.sha512"
1271 | },
1272 | "System.Threading.Tasks/4.3.0": {
1273 | "type": "package",
1274 | "serviceable": true,
1275 | "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
1276 | "path": "system.threading.tasks/4.3.0",
1277 | "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
1278 | },
1279 | "System.Threading.Tasks.Extensions/4.3.0": {
1280 | "type": "package",
1281 | "serviceable": true,
1282 | "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
1283 | "path": "system.threading.tasks.extensions/4.3.0",
1284 | "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512"
1285 | },
1286 | "System.Xml.ReaderWriter/4.3.1": {
1287 | "type": "package",
1288 | "serviceable": true,
1289 | "sha512": "sha512-fVU1Xp9TEOHv1neQDtcJ4hNfYJ1pjfXzKY3VFeiRZK6HTV4Af2Ihyvq1FkPLrL1hzZhXv7NTmowQnL5DgTzIKA==",
1290 | "path": "system.xml.readerwriter/4.3.1",
1291 | "hashPath": "system.xml.readerwriter.4.3.1.nupkg.sha512"
1292 | },
1293 | "System.Xml.XDocument/4.3.0": {
1294 | "type": "package",
1295 | "serviceable": true,
1296 | "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
1297 | "path": "system.xml.xdocument/4.3.0",
1298 | "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512"
1299 | },
1300 | "Plugin.BLE.Abstractions/1.1.0.0": {
1301 | "type": "reference",
1302 | "serviceable": false,
1303 | "sha512": ""
1304 | },
1305 | "Plugin.BLE/1.1.0.0": {
1306 | "type": "reference",
1307 | "serviceable": false,
1308 | "sha512": ""
1309 | }
1310 | }
1311 | }
--------------------------------------------------------------------------------
/resources/DelsysAPI.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/DelsysAPI.dll
--------------------------------------------------------------------------------
/resources/DelsysAPI.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/DelsysAPI.pdb
--------------------------------------------------------------------------------
/resources/Mono.Android.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Mono.Android.dll
--------------------------------------------------------------------------------
/resources/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/resources/Plugin.BLE.Abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Plugin.BLE.Abstractions.dll
--------------------------------------------------------------------------------
/resources/Plugin.BLE.UWP.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Plugin.BLE.UWP.dll
--------------------------------------------------------------------------------
/resources/Plugin.BLE.UWP.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Plugin.BLE.UWP.pdb
--------------------------------------------------------------------------------
/resources/Plugin.BLE.UWP.pri:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Plugin.BLE.UWP.pri
--------------------------------------------------------------------------------
/resources/Plugin.BLE.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Plugin.BLE.dll
--------------------------------------------------------------------------------
/resources/Portable.Licensing.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Portable.Licensing.dll
--------------------------------------------------------------------------------
/resources/Portable.Licensing.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Portable.Licensing
5 |
6 |
7 |
8 |
9 | Defines assembly build date information for an assembly manifest.
10 |
11 |
12 |
13 |
14 | Initializes a new instance of the class
15 | with the specified build date.
16 |
17 | The build date of the assembly.
18 |
19 |
20 |
21 | Initializes a new instance of the class
22 | with the specified build date string.
23 |
24 | The build date of the assembly.
25 |
26 |
27 |
28 | Gets the assembly build date.
29 |
30 |
31 |
32 |
33 | The customer of a .
34 |
35 |
36 |
37 |
38 | Represents a dictionary of license attributes.
39 |
40 |
41 |
42 |
43 | Initializes a new instance of the class.
44 |
45 |
46 |
47 |
48 | Adds a new element with the specified key and value
49 | to the collection.
50 |
51 | The key of the element.
52 | The value of the element.
53 |
54 |
55 |
56 | Adds all new element into the collection.
57 |
58 | The dictionary of elements.
59 |
60 |
61 |
62 | Removes a element with the specified key
63 | from the collection.
64 |
65 | The key of the element.
66 |
67 |
68 |
69 | Removes all elements from the collection.
70 |
71 |
72 |
73 |
74 | Gets the value of a element with the
75 | specified key.
76 |
77 | The key of the element.
78 | The value of the element if available; otherwise null.
79 |
80 |
81 |
82 | Gets all elements.
83 |
84 | A dictionary of all elements in this collection.
85 |
86 |
87 |
88 | Determines whether the specified element is in
89 | this collection.
90 |
91 | The key of the element.
92 | true if the collection contains this element; otherwise false.
93 |
94 |
95 |
96 | Determines whether all specified elements are in
97 | this collection.
98 |
99 | The list of keys of the elements.
100 | true if the collection contains all specified elements; otherwise false.
101 |
102 |
103 |
104 | Gets or sets the Name of this .
105 |
106 |
107 |
108 |
109 | Gets or sets the Company of this .
110 |
111 |
112 |
113 |
114 | Gets or sets the Email of this .
115 |
116 |
117 |
118 |
119 | Interface that is used to build fluent interfaces and hides methods declared by from IntelliSense.
120 |
121 |
122 | Code that consumes implementations of this interface should expect one of two things:
123 |
124 | - When referencing the interface from within the same solution (project reference), you will still see the methods this interface is meant to hide.
125 | - When referencing the interface through the compiled output assembly (external reference), the standard Object methods will be hidden as intended.
126 |
127 | See http://bit.ly/ifluentinterface for more information.
128 |
129 |
130 |
131 |
132 | Redeclaration that hides the method from IntelliSense.
133 |
134 |
135 |
136 |
137 | Redeclaration that hides the method from IntelliSense.
138 |
139 |
140 |
141 |
142 | Redeclaration that hides the method from IntelliSense.
143 |
144 |
145 |
146 |
147 | Redeclaration that hides the method from IntelliSense.
148 |
149 |
150 |
151 |
152 | Fluent api to create and sign a new .
153 |
154 |
155 |
156 |
157 | Sets the unique identifier of the .
158 |
159 | The unique identifier of the .
160 | The .
161 |
162 |
163 |
164 | Sets the of the .
165 |
166 | The of the .
167 | The .
168 |
169 |
170 |
171 | Sets the expiration date of the .
172 |
173 | The expiration date of the .
174 | The .
175 |
176 |
177 |
178 | Sets the maximum utilization of the .
179 | This can be the quantity of developers for a "per-developer-license".
180 |
181 | The maximum utilization of the .
182 | The .
183 |
184 |
185 |
186 | Sets the license holder of the .
187 |
188 | The name of the license holder.
189 | The email of the license holder.
190 | The .
191 |
192 |
193 |
194 | Sets the license holder of the .
195 |
196 | The name of the license holder.
197 | The email of the license holder.
198 | A delegate to configure the license holder.
199 | The .
200 |
201 |
202 |
203 | Sets the license holder of the .
204 |
205 | A delegate to configure the license holder.
206 | The .
207 |
208 |
209 |
210 | Sets the licensed product features of the .
211 |
212 | The licensed product features of the .
213 | The .
214 |
215 |
216 |
217 | Sets the licensed product features of the .
218 |
219 | A delegate to configure the product features.
220 | The .
221 |
222 |
223 |
224 | Sets the licensed additional attributes of the .
225 |
226 | The additional attributes of the .
227 | The .
228 |
229 |
230 |
231 | Sets the licensed additional attributes of the .
232 |
233 | A delegate to configure the additional attributes.
234 | The .
235 |
236 |
237 |
238 | Create and sign a new with the specified
239 | private encryption key.
240 |
241 | The private encryption key for the signature.
242 | The pass phrase to decrypt the private key.
243 | The signed .
244 |
245 |
246 |
247 | A software license
248 |
249 |
250 |
251 |
252 | Initializes a new instance of the class.
253 |
254 |
255 |
256 |
257 | Initializes a new instance of the class
258 | with the specified content.
259 |
260 | This constructor is only used for loading from XML.
261 | The initial content of this .
262 |
263 |
264 |
265 | Compute a signature and sign this with the provided key.
266 |
267 | The private key in xml string format to compute the signature.
268 | The pass phrase to decrypt the private key.
269 |
270 |
271 |
272 | Determines whether the property verifies for the specified key.
273 |
274 | The public key in xml string format to verify the .
275 | true if the verifies; otherwise false.
276 |
277 |
278 |
279 | Create a new using the
280 | fluent api.
281 |
282 | An instance of the class.
283 |
284 |
285 |
286 | Loads a from a string that contains XML.
287 |
288 | A that contains XML.
289 | A populated from the that contains XML.
290 |
291 |
292 |
293 | Loads a by using the specified
294 | that contains the XML.
295 |
296 | A that contains the XML.
297 | A populated from the that contains XML.
298 |
299 |
300 |
301 | Loads a by using the specified
302 | that contains the XML.
303 |
304 | A that contains the XML.
305 | A populated from the that contains XML.
306 |
307 |
308 |
309 | Loads a by using the specified
310 | that contains the XML.
311 |
312 | A that contains the XML.
313 | A populated from the that contains XML.
314 |
315 |
316 |
317 | Serialize this to a .
318 |
319 | A that the
320 | will be written to.
321 |
322 |
323 |
324 | Serialize this to a .
325 |
326 | A that the
327 | will be written to.
328 |
329 |
330 |
331 | Serialize this to a .
332 |
333 | A that the
334 | will be written to.
335 |
336 |
337 |
338 | Returns the indented XML for this .
339 |
340 | A string containing the indented XML.
341 |
342 |
343 |
344 | Gets or sets the unique identifier of this .
345 |
346 |
347 |
348 |
349 | Gets or set the or this .
350 |
351 |
352 |
353 |
354 | Get or sets the quantity of this license.
355 | E.g. the count of per-developer-licenses.
356 |
357 |
358 |
359 |
360 | Gets or sets the product features of this .
361 |
362 |
363 |
364 |
365 | Gets or sets the of this .
366 |
367 |
368 |
369 |
370 | Gets or sets the additional attributes of this .
371 |
372 |
373 |
374 |
375 |
376 | Gets the digital signature of this license.
377 |
378 | Use the method to compute a signature.
379 |
380 |
381 |
382 | Gets a value indicating whether this is already signed.
383 |
384 |
385 |
386 |
387 | Implementation of the , a fluent api
388 | to create new licenses.
389 |
390 |
391 |
392 |
393 | Initializes a new instance of the class.
394 |
395 |
396 |
397 |
398 | Sets the unique identifier of the .
399 |
400 | The unique identifier of the .
401 | The .
402 |
403 |
404 |
405 | Sets the of the .
406 |
407 | The of the .
408 | The .
409 |
410 |
411 |
412 | Sets the expiration date of the .
413 |
414 | The expiration date of the .
415 | The .
416 |
417 |
418 |
419 | Sets the maximum utilization of the .
420 | This can be the quantity of developers for a "per-developer-license".
421 |
422 | The maximum utilization of the .
423 | The .
424 |
425 |
426 |
427 | Sets the license holder of the .
428 |
429 | The name of the license holder.
430 | The email of the license holder.
431 | The .
432 |
433 |
434 |
435 | Sets the license holder of the .
436 |
437 | The name of the license holder.
438 | The email of the license holder.
439 | A delegate to configure the license holder.
440 | The .
441 |
442 |
443 |
444 | Sets the license holder of the .
445 |
446 | A delegate to configure the license holder.
447 | The .
448 |
449 |
450 |
451 | Sets the licensed product features of the .
452 |
453 | The licensed product features of the .
454 | The .
455 |
456 |
457 |
458 | Sets the licensed product features of the .
459 |
460 | A delegate to configure the product features.
461 | The .
462 |
463 |
464 |
465 | Sets the licensed additional attributes of the .
466 |
467 | The additional attributes of the .
468 | The .
469 |
470 |
471 |
472 | Sets the licensed additional attributes of the .
473 |
474 | A delegate to configure the additional attributes.
475 | The .
476 |
477 |
478 |
479 | Create and sign a new with the specified
480 | private encryption key.
481 |
482 | The private encryption key for the signature.
483 | The pass phrase to decrypt the private key.
484 | The signed .
485 |
486 |
487 |
488 | Defines the type of a
489 |
490 |
491 |
492 |
493 | For trial or demo use
494 |
495 |
496 |
497 |
498 | Standard license
499 |
500 |
501 |
502 |
503 | Encrypts and encodes the private key.
504 |
505 | The private key.
506 | The pass phrase to encrypt the private key.
507 | The encrypted private key.
508 |
509 |
510 |
511 | Decrypts the provided private key.
512 |
513 | The encrypted private key.
514 | The pass phrase to decrypt the private key.
515 | The private key.
516 |
517 |
518 |
519 | Encodes the public key into DER encoding.
520 |
521 | The public key.
522 | The encoded public key.
523 |
524 |
525 |
526 | Decoded the public key from DER encoding.
527 |
528 | The encoded public key.
529 | The public key.
530 |
531 |
532 |
533 | Represents a generator for signature keys of .
534 |
535 |
536 |
537 |
538 | Initializes a new instance of the class
539 | with a key size of 256 bits.
540 |
541 |
542 |
543 |
544 | Initializes a new instance of the class
545 | with the specified key size.
546 |
547 | Following key sizes are supported:
548 | - 192
549 | - 224
550 | - 239
551 | - 256 (default)
552 | - 384
553 | - 521
554 | The key size.
555 |
556 |
557 |
558 | Initializes a new instance of the class
559 | with the specified key size and seed.
560 |
561 | Following key sizes are supported:
562 | - 192
563 | - 224
564 | - 239
565 | - 256 (default)
566 | - 384
567 | - 521
568 | The key size.
569 | The seed.
570 |
571 |
572 |
573 | Creates a new instance of the class.
574 |
575 |
576 |
577 |
578 | Generates a private/public key pair for license signing.
579 |
580 | An containing the keys.
581 |
582 |
583 |
584 | Represents a private/public encryption key pair.
585 |
586 |
587 |
588 |
589 | Initializes a new instance of the class
590 | with the provided asymmetric key pair.
591 |
592 |
593 |
594 |
595 |
596 | Gets the encrypted and DER encoded private key.
597 |
598 | The pass phrase to encrypt the private key.
599 | The encrypted private key.
600 |
601 |
602 |
603 | Gets the DER encoded public key.
604 |
605 | The public key.
606 |
607 |
608 |
609 | Represents a general validation failure.
610 |
611 |
612 |
613 |
614 | Represents a failure of a .
615 |
616 |
617 |
618 |
619 | Gets or sets a message that describes the validation failure.
620 |
621 |
622 |
623 |
624 | Gets or sets a message that describes how to recover from the validation failure.
625 |
626 |
627 |
628 |
629 | Gets or sets a message that describes the validation failure.
630 |
631 |
632 |
633 |
634 | Gets or sets a message that describes how to recover from the validation failure.
635 |
636 |
637 |
638 |
639 | Interface for the fluent validation syntax.
640 |
641 |
642 |
643 |
644 | Adds an additional validation chain.
645 |
646 | An instance of .
647 |
648 |
649 |
650 | Interface for the fluent validation syntax.
651 |
652 |
653 |
654 |
655 | Invokes the license assertion.
656 |
657 | An array is when the validation fails.
658 |
659 |
660 |
661 | Interface for the fluent validation syntax.
662 | This interface is used to complete a validation chain.
663 |
664 |
665 |
666 |
667 | Represents a validator.
668 |
669 |
670 |
671 |
672 | Gets or sets the predicate to determine if the
673 | is valid.
674 |
675 |
676 |
677 |
678 | Gets or sets the predicate to determine if the
679 | should be executed.
680 |
681 |
682 |
683 |
684 | Gets or sets the result. The
685 | will be returned to the application when the fails.
686 |
687 |
688 |
689 |
690 | Represents a failure when the is invalid.
691 |
692 |
693 |
694 |
695 | Gets or sets a message that describes the validation failure.
696 |
697 |
698 |
699 |
700 | Gets or sets a message that describes how to recover from the validation failure.
701 |
702 |
703 |
704 |
705 | Interface for the fluent validation syntax.
706 | Validators should use this interface to start a new validation chain.
707 |
708 |
709 |
710 |
711 | Interface for the fluent validation syntax.
712 | This interface is used to add a condition or to complete a validation chain.
713 |
714 |
715 |
716 |
717 | Interface for the fluent validation syntax.
718 |
719 |
720 |
721 |
722 | Adds a when predicate to the current validator.
723 |
724 | The predicate that defines the conditions.
725 | An instance of .
726 |
727 |
728 |
729 | Represents a expired failure of a .
730 |
731 |
732 |
733 |
734 | Gets or sets a message that describes the validation failure.
735 |
736 |
737 |
738 |
739 | Gets or sets a message that describes how to recover from the validation failure.
740 |
741 |
742 |
743 |
744 | Extension methods for validation.
745 |
746 |
747 |
748 |
749 | Starts the validation chain of the .
750 |
751 | The to validate.
752 | An instance of .
753 |
754 |
755 |
756 | Validates if the license has been expired.
757 |
758 | The current .
759 | An instance of .
760 |
761 |
762 |
763 | Check whether the product build date of the provided assemblies
764 | exceeded the date.
765 |
766 | The current .
767 | The list of assemblies to check.
768 | An instance of .
769 |
770 |
771 |
772 | Allows you to specify a custom assertion that validates the .
773 |
774 | The current .
775 | The predicate to determine of the is valid.
776 | The will be returned to the application when the fails.
777 | An instance of .
778 |
779 |
780 |
781 | Validates the .
782 |
783 | The current .
784 | The public product key to validate the signature..
785 | An instance of .
786 |
787 |
788 |
789 | Represents a validator.
790 |
791 |
792 |
793 |
794 | Gets or sets the predicate to determine if the
795 | is valid.
796 |
797 |
798 |
799 |
800 | Gets or sets the predicate to determine if the
801 | should be executed.
802 |
803 |
804 |
805 |
806 | Gets or sets the result. The
807 | will be returned to the application when the fails.
808 |
809 |
810 |
811 |
812 |
--------------------------------------------------------------------------------
/resources/ShpfWritingUtility.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/ShpfWritingUtility.dll
--------------------------------------------------------------------------------
/resources/SiUSBXp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/SiUSBXp.dll
--------------------------------------------------------------------------------
/resources/Stateless.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Stateless.dll
--------------------------------------------------------------------------------
/resources/System.Runtime.InteropServices.RuntimeInformation.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/System.Runtime.InteropServices.RuntimeInformation.dll
--------------------------------------------------------------------------------
/resources/Xamarin.Forms.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Xamarin.Forms.Core.dll
--------------------------------------------------------------------------------
/resources/Xamarin.Forms.Platform.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Xamarin.Forms.Platform.dll
--------------------------------------------------------------------------------
/resources/Xamarin.Forms.Xaml.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/Xamarin.Forms.Xaml.dll
--------------------------------------------------------------------------------
/resources/libSiUSBXp.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delsys-inc/Delsys-Python-Demo/22a45e6ab9847c9e16f2ab5da1168b8d9b617405/resources/libSiUSBXp.so
--------------------------------------------------------------------------------