This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1 @@
12

View File

@@ -0,0 +1 @@
12

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{49C60032-9C8A-4EA5-9E26-2F1663555759}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DASFactoryDb</RootNamespace>
<AssemblyName>DASFactoryDb</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARM\ARM.cs" />
<Compile Include="Config\Config.cs" />
<Compile Include="DAS\DAS.cs" />
<Compile Include="DbWrapper.cs" />
<Compile Include="Diagnostics\Diagnostics.cs" />
<Compile Include="Download\Download.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Common\DTS.Common\DTS.Common.csproj">
<Project>{f7a0804f-61a4-40ae-83d0-f1137622b592}</Project>
<Name>DTS.Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,89 @@
using System.Data;
using System.Data.SqlClient;
namespace DASFactoryDb.ARM
{
public static class ARM
{
public static void SetArmStatus(int iDASRecordId,
bool isArmed,
bool isTriggered,
bool isTriggerShorted,
bool isStartShorted,
bool isRecording,
bool isFaulted,
bool isInRealtime,
bool isInFlashWrite,
bool isUndefined,
bool isInPostTestDiagnostics,
double timeRemainingSeconds,
double percentComplete,
ulong totalSamples,
ulong currentSample,
uint sampleRate,
double? inputMilliVolts,
double? batteryMilliVolts,
int? eventNumber,
int recordingMode,
string faultMessage,
bool isRearming,
bool hasBeenRecording,
double? timeLeftInArm
)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_ArmStatusSet";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@IsArmed", SqlDbType.Bit) { Value = isArmed });
cmd.Parameters.Add(new SqlParameter("@IsTriggered", SqlDbType.Bit) { Value = isTriggered });
cmd.Parameters.Add(new SqlParameter("@IsTriggerShorted", SqlDbType.Bit) { Value = isTriggerShorted });
cmd.Parameters.Add(new SqlParameter("@IsStartShorted", SqlDbType.Bit) { Value = isStartShorted });
cmd.Parameters.Add(new SqlParameter("@IsRecording", SqlDbType.Bit) { Value = isRecording });
cmd.Parameters.Add(new SqlParameter("@IsFaulted", SqlDbType.Bit) { Value = isFaulted });
cmd.Parameters.Add(new SqlParameter("@IsInRealtime", SqlDbType.Bit) { Value = isInRealtime });
cmd.Parameters.Add(new SqlParameter("@IsInFlashWrite", SqlDbType.Bit) { Value = isInFlashWrite });
cmd.Parameters.Add(new SqlParameter("@IsUndefined", SqlDbType.Bit) { Value = isUndefined });
cmd.Parameters.Add(new SqlParameter("@IsInPostTestDiagnostics", SqlDbType.Bit) { Value = isInPostTestDiagnostics });
cmd.Parameters.Add(new SqlParameter("@TimeRemainingSeconds", SqlDbType.Decimal) { Value = timeRemainingSeconds });
cmd.Parameters.Add(new SqlParameter("@PercentComplete", SqlDbType.Decimal) { Value = percentComplete });
cmd.Parameters.Add(new SqlParameter("@TotalSamples", SqlDbType.Int) { Value = totalSamples });
cmd.Parameters.Add(new SqlParameter("@CurrentSample", SqlDbType.Int) { Value = currentSample });
cmd.Parameters.Add(new SqlParameter("@SampleRate", SqlDbType.Int) { Value = sampleRate });
cmd.Parameters.Add(new SqlParameter("@InputMillivolts", SqlDbType.Decimal) { Value = inputMilliVolts ?? 0 });
cmd.Parameters.Add(new SqlParameter("@BatteryMilliVolts", SqlDbType.Decimal) { Value = batteryMilliVolts ?? 0 });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber.HasValue ? eventNumber.Value : 0 });
cmd.Parameters.Add(new SqlParameter("@RecordingMode", SqlDbType.Int) { Value = recordingMode });
cmd.Parameters.Add(new SqlParameter("@FaultMessage", SqlDbType.NVarChar) { Value = faultMessage ?? "" });
cmd.Parameters.Add(new SqlParameter("@IsRearming", SqlDbType.Bit) { Value = isRearming });
cmd.Parameters.Add(new SqlParameter("@HasBeenRecording", SqlDbType.Bit) { Value = hasBeenRecording });
cmd.Parameters.Add(new SqlParameter("@TimeLeftInArm", SqlDbType.Decimal) { Value = timeLeftInArm ?? 0 });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DASFactoryDb")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DASFactoryDb")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("49c60032-9c8a-4ea5-9e26-2f1663555759")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,134 @@
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Text;
namespace DASFactoryDb.Config
{
public static class Config
{
public static int DASInfoInsert(int iDASRecordId, string macAddress, int owningDASId,
uint maxNumberOfModules, ulong? maxEventStorageSpaceInBytes, ulong? numberOfBytesPerSampleClock,
string batteryId, DateTime? calibrationDate)
{
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DASInfoInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@MACAddress", SqlDbType.NVarChar, 50) { Value = macAddress ?? string.Empty });
cmd.Parameters.Add(new SqlParameter("@OwningDAS", SqlDbType.Int) { Value = owningDASId });
cmd.Parameters.Add(new SqlParameter("@MaxNumberOfModules", SqlDbType.Int)
{ Value = maxNumberOfModules });
cmd.Parameters.Add(new SqlParameter("@MaxEventStorageSpaceInBytes", SqlDbType.Int) { Value = maxEventStorageSpaceInBytes ?? 0 });
cmd.Parameters.Add(new SqlParameter("@NumberOfBytesPerSampleClock", SqlDbType.Int)
{ Value = numberOfBytesPerSampleClock ?? 0 });
cmd.Parameters.Add(new SqlParameter("@BatteryID", SqlDbType.NVarChar) { Value = batteryId });
var date = calibrationDate ?? DateTime.MinValue;
if (date < ((DateTime)SqlDateTime.MinValue))
{
date = (DateTime)SqlDateTime.MinValue;
}
cmd.Parameters.Add(new SqlParameter("@CalibrationDate", SqlDbType.DateTime)
{ Value = date });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
return Convert.ToInt32(newId.Value);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void DASInfoClear(int iDASRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DASInfoClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void SetConfiguration(int iDASRecordId,
string xml,
int fileStore
)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_ConfigDataSet";
cmd.Parameters.Add(new SqlParameter("@IDASRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@ConfigurationData", SqlDbType.VarBinary)
{ Value = Encoding.UTF8.GetBytes(xml) });
cmd.Parameters.Add(new SqlParameter("@ConfigStore", SqlDbType.Int)
{ Value = fileStore });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}

View File

@@ -0,0 +1,579 @@
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
using System.Text;
using System.Xml;
namespace DASFactoryDb.Download
{
public static class Download
{
/// <summary>
/// clears all existing download status for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingEventDownloadStatus(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventDownloadStatusClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears all arm attempts for a given data recorder
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingEventArmAttempts(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventArmAttemptsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing event fault flags for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingFaultFlags(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventFaultFlagsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing event info for a given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingDownloadReports(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DownloadReportClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing event guids for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingEventGuids(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventGuidsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing download requests in the db for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingDownloadRequests(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DownloadRequestsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventFaultFlags(int iDASRecordId, ushort faultFlag)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventFaultFlagsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@FaultFlag", SqlDbType.SmallInt)
{ Value = faultFlag });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_Id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventArmAttempts(int iDASRecordId, int armAttempts)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventArmAttemptsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@ArmAttempts", SqlDbType.SmallInt)
{ Value = armAttempts });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventInfo(int iDASRecordId,
int eventNumber,
Guid testGUID,
ushort faultFlags,
int armAttempts,
DateTime testTime,
string testID,
string description,
bool hasBeenDownloaded,
bool wasTriggered,
string xml)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventInfoInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
cmd.Parameters.Add(new SqlParameter("@TestGuid", SqlDbType.NVarChar, 50)
{ Value = testGUID.ToString().ToUpper() });
cmd.Parameters.Add(new SqlParameter("@FaultFlags", SqlDbType.SmallInt)
{ Value = faultFlags });
cmd.Parameters.Add(new SqlParameter("@ArmAttempts", SqlDbType.Int)
{ Value = armAttempts });
if (DateTime.MinValue.Equals(testTime))
{
testTime = (DateTime)SqlDateTime.MinValue;
}
cmd.Parameters.Add(new SqlParameter("@TestTime", SqlDbType.DateTime)
{ Value = testTime });
cmd.Parameters.Add(new SqlParameter("@TestId", SqlDbType.NVarChar)
{ Value = testID });
cmd.Parameters.Add(new SqlParameter("@Description", SqlDbType.NVarChar)
{ Value = description });
cmd.Parameters.Add(new SqlParameter("@HasBeenDownloaded", SqlDbType.Bit)
{ Value = hasBeenDownloaded });
cmd.Parameters.Add(new SqlParameter("WasTriggered", SqlDbType.Bit)
{ Value = wasTriggered });
cmd.Parameters.Add(new SqlParameter("@Modules", SqlDbType.VarBinary)
{
Value = Encoding.UTF8.GetBytes(xml)
});
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventDownloadStatus(int iDASRecordId, bool downloadStatus)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventDownloadStatusInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@Downloaded", SqlDbType.Bit)
{ Value = downloadStatus });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void DownloadRequestInsert(int iDASRecordId,
ushort eventNumber,
int dasChannelNumber,
ulong startSample,
ulong endSample,
ulong samplesToSkip,
double startRecordTimeStampSec,
double triggerTimeStampSec,
double startRecordTimeStampNanoSec,
double triggerTimestampNanoSec,
bool PTPMasterSync)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DownloadRequestsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.SmallInt)
{ Value = eventNumber });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int)
{ Value = dasChannelNumber });
cmd.Parameters.Add(new SqlParameter("@StartSample", SqlDbType.Int)
{ Value = startSample });
cmd.Parameters.Add(new SqlParameter("@EndSample", SqlDbType.Int)
{ Value = endSample });
cmd.Parameters.Add(new SqlParameter("@SamplesToSkip", SqlDbType.Int)
{ Value = samplesToSkip });
cmd.Parameters.Add(
new SqlParameter("@StartRecordTimeStampSec", SqlDbType.Decimal)
{ Value = startRecordTimeStampSec });
cmd.Parameters.Add(new SqlParameter("@TriggerTimestampSec", SqlDbType.Decimal)
{ Value = triggerTimeStampSec });
cmd.Parameters.Add(
new SqlParameter("@StartRecordTimestampNanoSec", SqlDbType.Decimal)
{ Value = startRecordTimeStampSec });
cmd.Parameters.Add(
new SqlParameter("@TriggerTimestampNanoSec", SqlDbType.Decimal)
{ Value = triggerTimestampNanoSec });
cmd.Parameters.Add(new SqlParameter("@PTPMasterSync", SqlDbType.Bit)
{ Value = PTPMasterSync });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void UARTDownloadRequestInsert(
int iDASRecordId,
ushort eventNumber,
ulong totalByteCount,
ulong triggerByteCount,
ulong faultByteCount,
ulong startTimestamp,
ulong endTimestamp,
int baudRate)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_UARTDownloadRequestsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.SmallInt)
{ Value = eventNumber });
cmd.Parameters.Add(
new SqlParameter("@TotalByteCount", SqlDbType.Decimal)
{ Value = totalByteCount });
cmd.Parameters.Add(new SqlParameter("@TriggerByteCount", SqlDbType.Decimal)
{ Value = triggerByteCount });
cmd.Parameters.Add(new SqlParameter("@FaultByteCount", SqlDbType.Decimal)
{ Value = faultByteCount });
cmd.Parameters.Add(
new SqlParameter("@StartTimestamp", SqlDbType.Decimal)
{ Value = startTimestamp });
cmd.Parameters.Add(
new SqlParameter("@EndTimestamp", SqlDbType.Decimal) { Value = endTimestamp });
cmd.Parameters.Add(new SqlParameter("@BaudRate", SqlDbType.Int) { Value = baudRate });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing download requests in the db for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingUARTDownloadRequests(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_UARTDownloadRequestsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void EventGuidInsert(int iDASRecordId, Guid guid)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventGuidsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@Guid", SqlDbType.NVarChar, 50)
{ Value = guid.ToString().ToUpper() });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_Id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}

View File

@@ -0,0 +1,349 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace DASFactoryDb.Diagnostics
{
public static class Diagnostics
{
/// <summary>
/// clears all diagnostic actions for all channels for a given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearDiagnosticActionsAllChannels(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DiagnosticActionsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int)
{ Value = null });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertDiagnosticAction(int dasRecordId,
int dasChannelNumber,
bool measureExcitation,
bool measureOffset,
bool checkDigitalState,
bool measureInternalOffset,
bool removeOffset,
bool measureNoise,
bool performShuntCheck,
bool squibFireCheck,
bool performVoltageInsertCheck,
bool performCalSignalCheck,
bool measureBridgeResistance
)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DiagnosticsActionsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = dasRecordId });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
cmd.Parameters.Add(
new SqlParameter("@MeasureExcitation", SqlDbType.Bit) { Value = measureExcitation });
cmd.Parameters.Add(new SqlParameter("@MeasureOffset", SqlDbType.Bit) { Value = measureOffset });
cmd.Parameters.Add(
new SqlParameter("@CheckDigitalState", SqlDbType.Bit) { Value = checkDigitalState });
cmd.Parameters.Add(new SqlParameter("@MeasureInternalOffset", SqlDbType.Bit)
{ Value = measureInternalOffset });
cmd.Parameters.Add(new SqlParameter("@RemoveOffset", SqlDbType.Bit) { Value = removeOffset });
cmd.Parameters.Add(new SqlParameter("@MeasureNoise", SqlDbType.Bit) { Value = measureNoise });
cmd.Parameters.Add(
new SqlParameter("@PerformShuntCheck", SqlDbType.Bit) { Value = performShuntCheck });
cmd.Parameters.Add(new SqlParameter("@SquibFireCheck", SqlDbType.Bit) { Value = squibFireCheck });
cmd.Parameters.Add(new SqlParameter("@PerformVoltageInsertCheck", SqlDbType.Bit)
{ Value = performVoltageInsertCheck });
cmd.Parameters.Add(new SqlParameter("@PerformCalSignalCheck", SqlDbType.Bit)
{ Value = performCalSignalCheck });
cmd.Parameters.Add(new SqlParameter("@MeasureBridgeResistance", SqlDbType.Bit)
{ Value = measureBridgeResistance });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// Clears all diagnostics/events results for all channels for a das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingDiagnosticsAllChannels(int idasRecordId = -1)
{
if (!DbWrapper.Connected)
{
return;
}
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DiagnosticsResultsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int)
{ Value = null });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = null });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertAnalogDiagnosticResult(int iDASRecordId,
int dasChannelNumber,
int eventNumber,
double scalefactorMilliVoltsPerADC,
double expectedExcitationMilliVolts,
double? measuredExcitationMilliVolts,
bool negativeExcitation,
double? measuredOffsetMilliVolts,
double? measuredInternalOffsetMilliVolts,
double? autoZeroPercentDeviation,
short? finalOffsetADC,
int? removedOffsetADC,
int? removedInternalOffsetADC,
double? noisePercentFullScale,
bool shuntDeflectionFailed,
bool calSignalCheckFailed,
double? measuredShuntDeflectionMv,
double? measuredCalSignalMv,
double? targetCalSignalMv,
double? targetGain,
double? measuredGain,
double? queriedGain,
double? targetShuntDeflectionMv,
double? bridgeResistance,
double zeroMVInADC,
double windowAverageADC)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DiagnosticsResultsAnalogInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
cmd.Parameters.Add(new SqlParameter("@ScalefactorMilliVoltsPerADC", SqlDbType.Decimal) { Value = scalefactorMilliVoltsPerADC });
cmd.Parameters.Add(new SqlParameter("@ExpectedExcitationMilliVolts", SqlDbType.Decimal) { Value = expectedExcitationMilliVolts });
cmd.Parameters.Add(new SqlParameter("@MeasuredExcitationMilliVolts", SqlDbType.Decimal) { Value = measuredExcitationMilliVolts });
cmd.Parameters.Add(new SqlParameter("@NegativeExcitation", SqlDbType.Bit) { Value = negativeExcitation });
cmd.Parameters.Add(new SqlParameter("@MeasuredOffsetMilliVolts", SqlDbType.Decimal) { Value = measuredOffsetMilliVolts });
cmd.Parameters.Add(new SqlParameter("@MeasuredInternalOffsetMilliVolts", SqlDbType.Decimal) { Value = measuredInternalOffsetMilliVolts });
cmd.Parameters.Add(new SqlParameter("@AutoZeroPercentDeviation ", SqlDbType.Decimal) { Value = autoZeroPercentDeviation });
cmd.Parameters.Add(new SqlParameter("@FinalOffsetADC", SqlDbType.SmallInt) { Value = finalOffsetADC });
cmd.Parameters.Add(new SqlParameter("@RemovedOffsetADC", SqlDbType.Int) { Value = removedOffsetADC });
cmd.Parameters.Add(new SqlParameter("@RemovedInternalOffsetADC", SqlDbType.Int) { Value = removedInternalOffsetADC });
cmd.Parameters.Add(new SqlParameter("@NoisePercentFullScale", SqlDbType.Decimal) { Value = noisePercentFullScale });
cmd.Parameters.Add(new SqlParameter("@ShuntDeflectionFailed", SqlDbType.Bit) { Value = shuntDeflectionFailed });
cmd.Parameters.Add(new SqlParameter("@CalSignalCheckFailed", SqlDbType.Bit) { Value = calSignalCheckFailed });
cmd.Parameters.Add(new SqlParameter("@MeasuredShuntDeflectionMv", SqlDbType.Decimal) { Value = measuredShuntDeflectionMv });
cmd.Parameters.Add(new SqlParameter("@MeasuredCalSignalMv", SqlDbType.Decimal) { Value = measuredCalSignalMv });
cmd.Parameters.Add(new SqlParameter("@TargetCalSignalMv", SqlDbType.Decimal) { Value = targetCalSignalMv });
cmd.Parameters.Add(new SqlParameter("@TargetGain", SqlDbType.Decimal) { Value = targetGain });
cmd.Parameters.Add(new SqlParameter("@MeasuredGain", SqlDbType.Decimal) { Value = measuredGain });
cmd.Parameters.Add(new SqlParameter("@QueriedGain", SqlDbType.Decimal) { Value = queriedGain });
cmd.Parameters.Add(new SqlParameter("@TargetShuntDeflectionMv", SqlDbType.Decimal) { Value = targetShuntDeflectionMv });
cmd.Parameters.Add(new SqlParameter("@BridgeResistance", SqlDbType.Decimal) { Value = bridgeResistance });
cmd.Parameters.Add(new SqlParameter("@ZeroMVInADC", SqlDbType.Decimal) { Value = zeroMVInADC });
cmd.Parameters.Add(new SqlParameter("@WINDOWAverageADC", SqlDbType.Decimal) { Value = windowAverageADC });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertSquibDiagnosticResult(int iDASRecordId,
int dasChannelNumber,
int eventNumber,
double[] squibFireCurrentData,
double[] squibFireVoltageData,
double[] squibFireTimeAxis,
double? measuredDurationMS,
double? measuredDelayMS,
bool? squibFirePassed,
bool? squibDurationPassed,
bool? squibDelayPassed,
double squibThreshold,
double squibVoltageScaler,
double squibCurrentScaler)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
//this was firing annoying exceptions when squibFireCurrent was null ...
if (null == squibFireCurrentData) { return; }
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DiagnosticsResultsSquibInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
var currentData = new List<byte>(8 * squibFireCurrentData.Length);
var voltageData = new List<byte>(8 * squibFireVoltageData.Length);
var timeAxis = new List<byte>(8 * squibFireTimeAxis.Length);
foreach (var d in squibFireCurrentData)
{
currentData.AddRange(BitConverter.GetBytes(d));
}
foreach (var d in squibFireVoltageData)
{
voltageData.AddRange(BitConverter.GetBytes(d));
}
foreach (var d in squibFireTimeAxis)
{
timeAxis.AddRange(BitConverter.GetBytes(d));
}
cmd.Parameters.Add(new SqlParameter("@MeasuredDurationMS", SqlDbType.Decimal) { Value = measuredDurationMS });
cmd.Parameters.Add(new SqlParameter("@MeasuredDelayMS", SqlDbType.Decimal) { Value = measuredDelayMS });
cmd.Parameters.Add(new SqlParameter("@SquibFirePassed", SqlDbType.Bit) { Value = squibFirePassed });
cmd.Parameters.Add(new SqlParameter("@SquibDurationPassed", SqlDbType.Bit) { Value = squibDurationPassed });
cmd.Parameters.Add(new SqlParameter("@SquibDelayPassed", SqlDbType.Bit) { Value = squibDelayPassed });
cmd.Parameters.Add(new SqlParameter("@SquibFireCurrentData", SqlDbType.VarBinary) { Value = currentData.ToArray() });
cmd.Parameters.Add(new SqlParameter("@SquibFireVoltageData", SqlDbType.VarBinary) { Value = voltageData.ToArray() });
cmd.Parameters.Add(new SqlParameter("@SquibFireTimeAxis", SqlDbType.VarBinary) { Value = timeAxis.ToArray() });
cmd.Parameters.Add(new SqlParameter("@SquibThreshold", SqlDbType.Decimal) { Value = squibThreshold });
cmd.Parameters.Add(new SqlParameter("@SquibVoltageScaler", SqlDbType.Decimal) { Value = squibVoltageScaler });
cmd.Parameters.Add(new SqlParameter("@SquibCurrentScaler", SqlDbType.Decimal) { Value = squibCurrentScaler });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertDigitalDiagnosticResult(int iDASRecordId,
int dasChannelNumber,
int eventNumber,
bool digitalInputActiveState)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DiagnosticsResultsDigitalInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
cmd.Parameters.Add(new SqlParameter("@DigitalInputActiveState", SqlDbType.Bit)
{ Value = digitalInputActiveState });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}

View File

@@ -0,0 +1,150 @@
using System;
using System.Data;
using System.Data.SqlClient;
namespace DASFactoryDb
{
public partial class DbWrapper
{
/// <summary>
/// For now DASFactory is always local db, but this lets us change it in the future
/// </summary>
public static bool _usingCentralizedDB = false;
/// <summary>
/// for now since DASFactor is always local db, this is true, but this lets us change it in the future
/// </summary>
public static bool _usingNTLMAuthentication = true;
/// <summary>
/// used to passively indicate connection status, does not perform any connection checking
/// </summary>
public static bool Connected
{
get => false;
set {; }
}
/// <summary>
/// returns a DbCommand interface to the DASFactory db
/// </summary>
/// <returns></returns>
internal static IDbCommand GetDASFactoryCommand()
{
var cmd = new SqlCommand();
cmd.Connection = new SqlConnection(Connection.GetLocalDASFactoryConnectionString());
cmd.Connection.Open();
return cmd;
}
//public static IDbCommand GetDASFactoryCommand()
//{
// return GetDASFactoryCommand
// (new SqlCommand(), new SqlConnection(Connection.GetLocalDASFactoryConnectionString()));
//}
//public static IDbCommand GetDASFactoryCommand(IDbCommand dbCmd, IDbConnection dbConnection)
//{
// dbCmd.Connection = dbConnection;
// dbCmd.Connection.Open();
// return dbCmd;
//}
public static DbWrapper Connection
{
get
{
lock (dbLock)
{
if (null == _dbOperations) { _dbOperations = new DbWrapper(); }
}
return _dbOperations;
}
}
private string _localDASFactoryConnection = null;
public void ResetLocalDASFactoryConnection()
{
_localDASFactoryConnection = null;
_usingNTLMAuthentication = true;
}
public string GetLocalDASFactoryConnectionString()
{
lock (dbLock)
{
if (null != _localDASFactoryConnection) return _localDASFactoryConnection;
if (string.IsNullOrWhiteSpace(Server))
{
throw new Exception("Empty Server");
}
_localDASFactoryConnection = _usingNTLMAuthentication
? $"Server={Server};Database=DASFactory;Trusted_Connection=TRUE;"
: $"Server={Server};Database=DASFactory;User Id={Username};Password={Password};";
}
return _localDASFactoryConnection;
}
public string Server { get; set; } = null;
public string DBName { get; set; } = null;
public string Username { get; set; } = "";
public string Password { get; set; }
private static DbWrapper _dbOperations = null;
private static readonly object dbLock = new object();
protected DbWrapper()
{
}
/// <summary>
/// returns device id if in db
/// </summary>
/// <param name="serialNumber"></param>
/// <returns></returns>
public static int GetDeviceId(string serialNumber)
{
if (!Connected)
{
throw new Exception("Not connected");
}
using (var cmd = GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_IDASCommunicationTableGetRecordId";
cmd.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar, 50)
{
Value = serialNumber
});
var reader = cmd.ExecuteReader();
if (reader.Read())
{
var id = Convert.ToInt32(reader["RecordId"]);
return id;
}
return -1;
}
finally
{
cmd.Connection.Dispose();
}
}
}
internal static void ProcessReturn(SqlParameter errorNumber, SqlParameter errorMessage)
{
if (null != errorNumber)
{
if (0 != Convert.ToInt32(errorNumber.Value))
{
throw new Exception($"{errorNumber.Value}{(string)errorMessage.Value}");
}
}
}
}
}

View File

@@ -0,0 +1,48 @@
using System;
using System.Data;
using System.Data.SqlClient;
namespace DASFactoryDb.DAS
{
public static class DAS
{
public static int InsertDASSimple(string serialNumber,
string firmwareVersion,
string connectString)
{
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_IDASCommunicationTableSimpleInsert";
cmd.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar, 50)
{ Value = serialNumber });
cmd.Parameters.Add(new SqlParameter("@FirmwareVersion", SqlDbType.NVarChar, 50)
{ Value = firmwareVersion });
cmd.Parameters.Add(new SqlParameter("ConnectString", SqlDbType.NVarChar, 255)
{ Value = connectString });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
return Convert.ToInt32(newId.Value);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}

Binary file not shown.

View File