├── .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 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 1602791407564 24 | 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 --------------------------------------------------------------------------------