3306 lines
122 KiB
C#
3306 lines
122 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Text;
|
|||
|
|
using DTS.Common.Utilities;
|
|||
|
|
using System.Net.NetworkInformation;
|
|||
|
|
using DTS.Common.ICommunication;
|
|||
|
|
using DTS.Common.Enums.DASFactory;
|
|||
|
|
using DTS.Common.Utilities.Logging;
|
|||
|
|
using DTS.Common.Interface.DASFactory;
|
|||
|
|
|
|||
|
|
namespace DTS.DASLib.Command.SLICE
|
|||
|
|
{
|
|||
|
|
public class Switches
|
|||
|
|
{
|
|||
|
|
public enum BaseSwitches : byte
|
|||
|
|
{
|
|||
|
|
PowerLedBlue = 0x01, // 1
|
|||
|
|
PowerLedGreen, // 2
|
|||
|
|
PowerLedRed, // 3
|
|||
|
|
PowerLedBlink, // 4
|
|||
|
|
StatusLedBlue, // 5
|
|||
|
|
StatusLedGreen, // 6
|
|||
|
|
StatusLedRed, // 7
|
|||
|
|
StatusLedBlink, // 8
|
|||
|
|
SLICEBusPower, // 9
|
|||
|
|
TriggerOut, // 10
|
|||
|
|
StartRecordOut, // 11
|
|||
|
|
SDPowerEnable, // 12 : Now mapped to NAND device.
|
|||
|
|
ForceStatus, // 13
|
|||
|
|
StatusMonitor, // 14
|
|||
|
|
ChargePower, // 15
|
|||
|
|
BackupPower, // 16 obsolete for SLICE 2.0. Connection being repurposed for I2C smart battery.
|
|||
|
|
ChargeStatus, // 17
|
|||
|
|
OnOverride, // 18
|
|||
|
|
PowerLedAll, // 19
|
|||
|
|
StatusLedAll, // 20
|
|||
|
|
SquibCh1Green, // 21
|
|||
|
|
SquibCh1Yellow, // 22
|
|||
|
|
SquibCh1Red, // 23
|
|||
|
|
SquibCh2Green, // 24
|
|||
|
|
SquibCh2Yellow, // 25
|
|||
|
|
SquibCh2Red, // 26
|
|||
|
|
SquibCh3Green, // 27
|
|||
|
|
SquibCh3Yellow, // 28
|
|||
|
|
SquibCh3Red, // 29
|
|||
|
|
SquibCh4Green, // 30
|
|||
|
|
SquibCh4Yellow, // 31
|
|||
|
|
SquibCh4Red, // 32
|
|||
|
|
SquibKillPower, // 33
|
|||
|
|
SquibSelect_1, // 34 belong to squib PE address 0x27
|
|||
|
|
SquibSelect_2, // 35
|
|||
|
|
SquibSelect_3, // 36
|
|||
|
|
SquibSelect_4, // 37
|
|||
|
|
SquibSensorID_Mux0, // 38
|
|||
|
|
SquibSensorID_Mux1, // 39
|
|||
|
|
SquibAlarmEnable, // 40
|
|||
|
|
SquibSafeArmSwitch, // 41 RO status from arm switch
|
|||
|
|
|
|||
|
|
//39259 "Quick" software trigger doesn't work with TSR AIR
|
|||
|
|
TSRAIR_TriggerOut = 0xFD // 253 TSR AIR value for "quick" Trigger Check
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
public enum S6Switches : byte
|
|||
|
|
{
|
|||
|
|
PowerLedBlue = 0x01, // 1
|
|||
|
|
PowerLedGreen, // 2
|
|||
|
|
PowerLedRed, // 3
|
|||
|
|
PowerLedBlink, // 4
|
|||
|
|
StatusLedBlue, // 5
|
|||
|
|
StatusLedGreen, // 6
|
|||
|
|
StatusLedRed, // 7
|
|||
|
|
StatusLedBlink, // 8
|
|||
|
|
SLICEBusPower, // 9
|
|||
|
|
TriggerOut, // 10
|
|||
|
|
StartRecordOut, // 11
|
|||
|
|
SDPowerEnable, // 12 : Now mapped to NAND device.
|
|||
|
|
ForceStatus, // 13
|
|||
|
|
StatusMonitor, // 14
|
|||
|
|
ChargePower, // 15
|
|||
|
|
BackupPower, // 16 obsolete for SLICE 2.0. Connection being repurposed for I2C smart battery.
|
|||
|
|
ChargeStatus, // 17
|
|||
|
|
OnOverride, // 18
|
|||
|
|
PowerLedAll, // 19
|
|||
|
|
StatusLedAll, // 20
|
|||
|
|
SquibCh1Green, // 21
|
|||
|
|
SquibCh1Yellow, // 22
|
|||
|
|
SquibCh1Red, // 23
|
|||
|
|
SquibCh2Green, // 24
|
|||
|
|
SquibCh2Yellow, // 25
|
|||
|
|
SquibCh2Red, // 26
|
|||
|
|
SquibCh3Green, // 27
|
|||
|
|
SquibCh3Yellow, // 28
|
|||
|
|
SquibCh3Red, // 29
|
|||
|
|
SquibCh4Green, // 30
|
|||
|
|
SquibCh4Yellow, // 31
|
|||
|
|
SquibCh4Red, // 32
|
|||
|
|
SquibKillPower, // 33
|
|||
|
|
SquibSelect_1, // 34 belong to squib PE address 0x27
|
|||
|
|
SquibSelect_2, // 35
|
|||
|
|
SquibSelect_3, // 36
|
|||
|
|
SquibSelect_4, // 37
|
|||
|
|
SquibSensorID_Mux0, // 38
|
|||
|
|
SquibSensorID_Mux1, // 39
|
|||
|
|
SquibAlarmEnable, // 40
|
|||
|
|
SquibSafeArmSwitch // 41 RO status from arm switch
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
public enum S6DBSwitches : byte
|
|||
|
|
{
|
|||
|
|
PowerLedBlue = 0x01, // 1
|
|||
|
|
PowerLedGreen = 2, // 2
|
|||
|
|
PowerLedRed = 3, // 3
|
|||
|
|
PowerLedBlink = 4, // 4
|
|||
|
|
StatusLedBlue = 5, // 5
|
|||
|
|
StatusLedGreen = 6, // 6
|
|||
|
|
StatusLedRed = 7, // 7
|
|||
|
|
StatusLedBlink = 8, // 8
|
|||
|
|
AllPortPower = 9, // 9 = enable/disable all ports.
|
|||
|
|
TriggerOut = 10, // 10 = event out
|
|||
|
|
StartRecordOut = 11, // 11 = start out
|
|||
|
|
SDPowerEnable = 12, // 12 xxxxxxxxxxxxxxx N/A
|
|||
|
|
ForceStatus = 13, // 13 Force Ports Status
|
|||
|
|
StatusMonitor = 14, // 14 led_up_status
|
|||
|
|
ChargePower = 15, // 15 charger enable
|
|||
|
|
BackupPower = 16, // 16 xxxxxxxxxxxxxxx N/A
|
|||
|
|
ChargeStatus = 17, // 17 charger status
|
|||
|
|
OnOverride = 18, // 18 /ON override
|
|||
|
|
PowerLedAll = 19, // 19
|
|||
|
|
StatusLedAll = 20, // 20
|
|||
|
|
/* SquibCh1Green = 21, // 21 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh1Yellow = 22, // 22 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh1Red = 23, // 23 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh2Green = 24, // 24 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh2Yellow = 25, // 25 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh2Red = 26, // 26 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh3Green = 27, // 27 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh3Yellow = 28, // 28 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh3Red = 29, // 29 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh4Green = 30, // 30 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh4Yellow = 31, // 31 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibCh4Red = 32, // 32 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibKillPower = 33, // 33 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSelect_1 = 35, // 34 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSelect_2 = 35, // 35 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSelect_3 = 36, // 36 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSelect_4 = 37, // 37 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSensorID_Mux0 = 38, // 38 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSensorID_Mux1 = 39, // 39 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibAlarmEnable = 40, // 40 xxxxxxxxxxxxxxx N/A
|
|||
|
|
SquibSafeArmSwitch = 41, // 41 xxxxxxxxxxxxxxx N/A
|
|||
|
|
*/
|
|||
|
|
Port1_nON_Enable = 42, // 42 S6DB downport 1 /ON enabe.
|
|||
|
|
Port2_nON_Enable = 43, // 43 S6DB downport 1 /ON enabe.
|
|||
|
|
Port3_nON_Enable = 44, // 44 S6DB downport 1 /ON enabe.
|
|||
|
|
Port4_nON_Enable = 45, // 45 S6DB downport 1 /ON enabe.
|
|||
|
|
Port1_Status_Line = 46, // 46 S6DB port 1 status line
|
|||
|
|
Port2_Status_Line = 47, // 47 S6DB port 2 status line
|
|||
|
|
Port3_Status_Line = 48, // 48 S6DB port 3 status line
|
|||
|
|
Port4_Status_Line = 49, // 49 S6DB port 4 status line
|
|||
|
|
Power_Hub_Status_Line = 50, // 50 S6DB HUB status line
|
|||
|
|
Up_Event_Line = 51, // 51 S6DB HUB status line
|
|||
|
|
Up_Start_Line = 52, // 52 S6DB HUB status line
|
|||
|
|
Up_Status_Line = 53, // 53 S6DB HUB status line
|
|||
|
|
Port1_PowerGood = 54, // S6DB
|
|||
|
|
Port1_PowerEnable = 55, // S6DB
|
|||
|
|
Port2_PowerGood = 56, // S6DB
|
|||
|
|
Port2_PowerEnable = 57, // S6DB
|
|||
|
|
Port3_PowerGood = 58, // S6DB
|
|||
|
|
Port3_PowerEnable = 59, // S6DB
|
|||
|
|
Port4_PowerGood = 60, // S6DB
|
|||
|
|
Port4_PowerEnable = 61, // S6DB
|
|||
|
|
Battery1_Enable = 62, // S6DB
|
|||
|
|
Battery2_Enable = 63, // S6DB
|
|||
|
|
Default_DasChain_Status = 64, // S6DB
|
|||
|
|
Battery_Detect = 65, // S6DB
|
|||
|
|
Event_Self = 66, // S6DB
|
|||
|
|
ON_Hold = 67, // S6DB
|
|||
|
|
Eth_Event_En = 68, // S6DB
|
|||
|
|
Eth_Event_En_Sw = 69, // S6DB
|
|||
|
|
Default_Hub_Status_Enable = 70, // S6DB revB only.
|
|||
|
|
DAS_1_Trigger_Status = 71, // S6DB revB only.
|
|||
|
|
DAS_2_Trigger_Status = 72, // S6DB revB only.
|
|||
|
|
DAS_3_Trigger_Status = 73, // S6DB revB only.
|
|||
|
|
DAS_4_Trigger_Status = 74, // S6DB revB only.
|
|||
|
|
PE5_DAS_Trigger2MCU = 75, // S6DB revB only.
|
|||
|
|
PE6_DAS_Trigger_UpStream = 76, // S6DB revB only.
|
|||
|
|
PE7_EXT_Trigger_Polarity = 77, // S6DB revB only.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
public enum PowerProSwitches : byte
|
|||
|
|
{
|
|||
|
|
PowerLedBlue = 1,
|
|||
|
|
PowerLedGreen = 2,
|
|||
|
|
PowerLedRed = 3,
|
|||
|
|
PowerLedBlink = 4,
|
|||
|
|
|
|||
|
|
StatusLedBlue = 5,
|
|||
|
|
StatusLedGreen = 6,
|
|||
|
|
StatusLedRed = 7,
|
|||
|
|
StatusLedBlink = 8,
|
|||
|
|
|
|||
|
|
//add back slice6 switch.
|
|||
|
|
SLICEBusPower = 0x09, // 9
|
|||
|
|
MCUSelfTrigger = 10, // 10
|
|||
|
|
SelfStartRecord = 11, // 11
|
|||
|
|
SDPower = 12, // 12 : Now mapped to NAND device.
|
|||
|
|
ForceStatus = 13, // 13
|
|||
|
|
StatusMonitor = 14, // 14
|
|||
|
|
ChargePower = 15, // 15
|
|||
|
|
BackupPower = 16, // 16 // obsolete for SLICE 2.0. Connection being repurposed for I2C smart battery.
|
|||
|
|
ChargeStatus = 17, // 17
|
|||
|
|
OnOverride = 18, // 18
|
|||
|
|
PowerLedAll = 19, // 19
|
|||
|
|
StatusLedAll = 20, // 20
|
|||
|
|
|
|||
|
|
//Power switch
|
|||
|
|
AmpLedBlue = 21,//9,
|
|||
|
|
AmpLedGreen = 22,//10,
|
|||
|
|
AmpLedRed = 23,//11,
|
|||
|
|
AmpLedBlink = 24,//12,
|
|||
|
|
|
|||
|
|
LemoLedBlue = 25,//13,
|
|||
|
|
LemoLedGreen = 26,//14,
|
|||
|
|
LemoLedRed = 27,//15,
|
|||
|
|
LemoLedBlink = 28,//16,
|
|||
|
|
|
|||
|
|
WetLedBlue = 29,//17,
|
|||
|
|
WetLedGreen = 30,//18,
|
|||
|
|
WetLedRed = 31,//19,
|
|||
|
|
WetLedBlink = 32,//20,
|
|||
|
|
|
|||
|
|
AmpLedAll = 33,//23,
|
|||
|
|
LemoLedAll = 34,//24,
|
|||
|
|
WetLedAll = 35,//25,
|
|||
|
|
|
|||
|
|
AmpInProt = 36,//26,
|
|||
|
|
AmpInPS = 37,//27,
|
|||
|
|
AmpOutDSBL = 38,//28,
|
|||
|
|
|
|||
|
|
AmpInFault = 39,//29,
|
|||
|
|
AmpGoodPower = 40,//30,
|
|||
|
|
AmpOutFault = 41,//31,
|
|||
|
|
|
|||
|
|
LemoInProt = 42,//32,
|
|||
|
|
LemoInPS = 43,//33,
|
|||
|
|
LemoOutDSBL = 44,//34,
|
|||
|
|
|
|||
|
|
LemoInFault = 45,//35,
|
|||
|
|
LemoGoodPower = 46,//36,
|
|||
|
|
LemoOutFault = 47,//37,
|
|||
|
|
|
|||
|
|
WetInProt = 48,//38,
|
|||
|
|
WetInPS = 49,//39,
|
|||
|
|
WetOutDSBL = 50,//40,
|
|||
|
|
|
|||
|
|
ChargerInFault = 51,//41,
|
|||
|
|
ChargerGoodPower = 52,//42,
|
|||
|
|
WetOutFault = 53,//43,
|
|||
|
|
|
|||
|
|
BatteryInProt = 54,//44,
|
|||
|
|
BatteryInPS = 55,//45,
|
|||
|
|
BatteryOutDSBL = 56,//46,
|
|||
|
|
|
|||
|
|
Battery_Enable = 57,//47,
|
|||
|
|
Battery_Detect = 58,//48,
|
|||
|
|
BatteryOutFault = 59,//49,
|
|||
|
|
StartRecordOut = 63,//53,
|
|||
|
|
TriggerOut = 64,//54,
|
|||
|
|
|
|||
|
|
OnMonitor = 65,//55,
|
|||
|
|
StartMonitor = 67,//57,
|
|||
|
|
EventMonitor = 68,//58,
|
|||
|
|
|
|||
|
|
Eth_Event_En = 69,//59,
|
|||
|
|
Eth_Event_En_Sw = 70,//60,
|
|||
|
|
|
|||
|
|
Button_Enable = 71,//61,
|
|||
|
|
nRST_PE = 72,//62,
|
|||
|
|
|
|||
|
|
nWR_EEPROM = 73,//63,
|
|||
|
|
|
|||
|
|
PG_3V3 = 74,//64,
|
|||
|
|
PG_5V = 75,//65,
|
|||
|
|
IN_PS_PRES = 76,//66,
|
|||
|
|
|
|||
|
|
nINT_FROM_PE = 77,//67,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
public enum BridgeSwitches : byte
|
|||
|
|
{
|
|||
|
|
EnableEmulation = 0,
|
|||
|
|
EmulationA,
|
|||
|
|
EmulationB,
|
|||
|
|
EmulationC,
|
|||
|
|
EnableExcitation,
|
|||
|
|
EnableAnalogPowerSupply,
|
|||
|
|
EnableAmps,
|
|||
|
|
EnableHalfBridgeCompletionA,
|
|||
|
|
EnableHalfBridgeCompletionB,
|
|||
|
|
EnableHalfBridgeCompletionC,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
public enum BridgeSwitchesSlice6 : byte
|
|||
|
|
{
|
|||
|
|
S6A_A2_GSWC____S6_G_SW_A = 0, // bit 0
|
|||
|
|
S6A_EN_AC_C____S6_G_SW_D = 1, // bit 1
|
|||
|
|
S6A_EnDAC_N_C__S6_IA_EN = 2, // bit 2
|
|||
|
|
S6A_EnDAC_P_C__S6_EXCITE_EN = 3, // bit 3
|
|||
|
|
S6A_EN_HALF_C__S6_ANALOG_EN = 4, // bit 4
|
|||
|
|
S6A_EN_IEPE_C__S6_SW_MUX_2 = 5, // bit 5
|
|||
|
|
S6A_A1_GSWB____S6_SW_MUX_1 = 6, // bit 6
|
|||
|
|
S6A_EN_AC_B____S6_SW_MUX_0 = 7, // bit 7
|
|||
|
|
|
|||
|
|
S6A_nCS_IA_A___S6_G_SW_E = 8, // bit 0/1
|
|||
|
|
S6A_nCS_IA_B___S6_A2_G_SW_C = 9, // bit 1/1
|
|||
|
|
S6A_nCS_IA_C___S6_A1_G_SW_F = 10, // bit 2/1
|
|||
|
|
S6A_nCS_IA_D___S6_A0_G_SW_B = 11, // bit 3/1
|
|||
|
|
S6A_nCS_IA_E___S6_nCS_IA_D = 12, // bit 4/1
|
|||
|
|
S6A_nCS_IA_F___S6_nCS_IA_A = 13, // bit 5/1
|
|||
|
|
S6A_EN_IEPE_A__S6_nCS_IA_E = 14, // bit 6/1
|
|||
|
|
S6A_EN_HALF_A__S6_nCS_IA_C = 15, // bit 7/1
|
|||
|
|
|
|||
|
|
S6A_EnDAC_P_A__S6_nCS_IA_F = 16, // bit 0/1
|
|||
|
|
S6A_EnDAC_N_A__S6_nCS_IA_B = 17, // bit 1/1
|
|||
|
|
S6A_EN_AC_A____S6_HALF_BRIDGE_B = 18, // bit 2/1
|
|||
|
|
S6A_A0_GSWA____S6_HALF_BRIDGE_F = 19, // bit 3/1
|
|||
|
|
S6A_EN_IEPE_B__S6_HALF_BRIDGE_C = 20, // bit 4/1
|
|||
|
|
S6A_EN_HALF_B__S6_HALF_BRIDGE_E = 21, // bit 5/1
|
|||
|
|
S6A_EnDAC_P_B__S6_HALF_BRIDGE_A = 22, // bit 6/1
|
|||
|
|
S6A_EnDAC_N_B__S6_HALF_BRIDGE_D = 23, // bit 7/1
|
|||
|
|
// 2nd PE switches
|
|||
|
|
S6A_PE2_TP504 = 0 + 24, // bit 0
|
|||
|
|
S6A_PE2_EN_EXCITATION = 1 + 24, // bit 1
|
|||
|
|
S6A_PE2_nSHDN_AD8231 = 2 + 24, // bit 2
|
|||
|
|
S6A_PE2_MUX_A = 3 + 24, // bit 3
|
|||
|
|
|
|||
|
|
S6A_PE2_MUX_B = 4 + 24, // bit 4
|
|||
|
|
S6A_PE2_MUX_C = 5 + 24, // bit 5
|
|||
|
|
S6A_PE2_GSWF = 6 + 24, // bit 6
|
|||
|
|
S6A_PE2_EN_AC_F = 7 + 24, // bit 7
|
|||
|
|
|
|||
|
|
S6A_PE2_EN_IEPE_D = 8 + 24, // bit 0/1
|
|||
|
|
S6A_PE2_EN_HALF_D = 9 + 24, // bit 1/1
|
|||
|
|
S6A_PE2_EnDAC_P_D = 10 + 24, // bit 2/1
|
|||
|
|
S6A_PE2_EnDAC_N_D = 11 + 24, // bit 3/1
|
|||
|
|
S6A_PE2_EN_AC_D = 12 + 24, // bit 4/1
|
|||
|
|
S6A_PE2_GSWD = 13 + 24, // bit 5/1
|
|||
|
|
S6A_PE2_EN_IEPE_E = 14 + 24, // bit 6/1
|
|||
|
|
S6A_PE2_EN_HALF_E = 15 + 24, // bit 7/1
|
|||
|
|
|
|||
|
|
S6A_PE2_EnDAC_P_E = 16 + 24, // bit 0/1
|
|||
|
|
S6A_PE2_EnDAC_N_E = 17 + 24, // bit 1/1
|
|||
|
|
S6A_PE2_EN_AC_E = 18 + 24, // bit 2/1
|
|||
|
|
S6A_PE2_GSWE = 19 + 24, // bit 3/1
|
|||
|
|
S6A_PE2_EN_IEPE_F = 20 + 24, // bit 4/1
|
|||
|
|
S6A_PE2_EN_HALF_F = 21 + 24, // bit 5/1
|
|||
|
|
S6A_PE2_EnDAC_P_F = 22 + 24, // bit 6/1
|
|||
|
|
S6A_PE2_EnDAC_N_F = 23 + 24, // bit 7/1
|
|||
|
|
|
|||
|
|
// Base 368 switches.
|
|||
|
|
S6A_BASE_UART_TX_EN = 0 + 48, // bit 0
|
|||
|
|
S6A_BASE_UART_RX_nEN = 1 + 48, // bit 1
|
|||
|
|
S6A_BASE_IRIG_B_EN = 9 + 48, // bit 9
|
|||
|
|
S6A_BASE_nRST_ETH = 10 + 48, // bit 10
|
|||
|
|
S6A_BASE_nRST_FPGA = 11 + 48, // bit 11
|
|||
|
|
S6A_BASE_EN_24P5VA = 12 + 48, // bit 12
|
|||
|
|
S6A_BASE_EN_AN_PWR = 13 + 48, // bit 13
|
|||
|
|
S6A_BASE_FILT_SHDN = 14 + 48, // bit 14
|
|||
|
|
S6A_BASE_EN_AN = 15 + 48, // bit 15 analog 5.1V and 3.3V on analog board.
|
|||
|
|
S6A_BASE_EN_CLASS1 = 16 + 48, // bit 16
|
|||
|
|
S6A_BASE_nEN_MUX = 17 + 48, // bit 17
|
|||
|
|
/*
|
|||
|
|
S6_P0_G_SW_A = 0, // SW_MUX_0 GPIO0 mux address 0
|
|||
|
|
S6_P1_G_SW_D = 1, // SW_MUX_1 GPIO1 mux address 1
|
|||
|
|
S6_P2_IA_EN = 2, // SW_MUX_2 2 mux address 1
|
|||
|
|
S6_P3_EXCITE_EN = 3, // 3 ANALOG_EN enable excitation.
|
|||
|
|
S6_P4_ANALOG_EN = 4, // 4 EXCITE_EN enable analog on bridges.
|
|||
|
|
S6_P5_SW_MUX_2 = 5, // 5 IA_EN enable the amplifier AD8231ACPZ
|
|||
|
|
S6_P6_SW_MUX_1 = 6, // 6 G_SW_F gain switch for channel F
|
|||
|
|
S6_P7_SW_MUX_0 = 7, // 7 G_SW_E gain switch for channel E
|
|||
|
|
S6_P8_G_SW_E = 8, // 8 gain switch for channel D
|
|||
|
|
S6_P9_A2_G_SW_C = 9, // 9 gain switch for channel C and A2 multiplex
|
|||
|
|
S6_P10_A1_G_SW_F = 10, // 10 gain switch for channel B and A1 multiplex
|
|||
|
|
S6_P11_A0_G_SW_B = 11, // 11 gain switch for channel A and A0 multiplex
|
|||
|
|
S6_P12_nCS_IA_D = 12, // 12 cs to program gain for channel F
|
|||
|
|
S6_P13_nCS_IA_A = 13, // 13 cs to program gain for channel E
|
|||
|
|
S6_P14_nCS_IA_E = 14, // 14 cs to program gain for channel D
|
|||
|
|
S6_P15_nCS_IA_C = 15, // 15 cs to program gain for channel C
|
|||
|
|
S6_P16_nCS_IA_F = 16, // 16 cs to program gain for channel B
|
|||
|
|
S6_P17_nCS_IA_B = 17, // 17 cs to program gain for channel A
|
|||
|
|
// Continue from analog switches.
|
|||
|
|
S6_S1_HALF_BRIDGE_B = 18, // 0
|
|||
|
|
S6_S2_HALF_BRIDGE_F = 19, // 1
|
|||
|
|
S6_S3_HALF_BRIDGE_C = 20, // 2
|
|||
|
|
S6_S4_HALF_BRIDGE_E = 21, // 3
|
|||
|
|
S6_S5_HALF_BRIDGE_A = 22, // 4
|
|||
|
|
S6_S6_HALF_BRIDGE_D = 23, // 5
|
|||
|
|
*/
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
public enum BridgeSwitches_SLICE2 : byte
|
|||
|
|
{
|
|||
|
|
swEnableEmulation = 0, // 0 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swEmulationA, // 1 : Low active. 0 = enabled. 1 = disabled.
|
|||
|
|
swEmulationB, // 2 : Low active. 0 = enabled. 1 = disabled.
|
|||
|
|
swEmulationC, // 3 : Low active. 0 = enabled. 1 = disabled.
|
|||
|
|
swExcitation, // 4 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swAnalogPowerSupply_MSP, // 5 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swEnIAA, // 6 : High active. 1 = enabled IEPE type. 0 = disabled.
|
|||
|
|
swEnHalfA, // 7 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swEnHalfB, // 8 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swEnHalfC, // 9 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swFilterSelHBW_MSP, // 10 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swFilterSelLBW_MSP, // 11 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swEnIAB, // 12 : High active. 1 = enabled IEPE type. 0 = disabled == BRIDGE.
|
|||
|
|
swEnClass, // 13 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swEnIAC, // 14 : High active. 1 = enabled IEPE type. 0 = disabled.
|
|||
|
|
// these belongs to PE1
|
|||
|
|
swVoltageInsertionA, // 15 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swVoltageInsertionB, // 16 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swVoltageInsertionC, // 17 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swVoltageInsertionMode, // 18 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swVoltageInsertionAmp, // 19 : Low active. 0 = enabled. 1 = disabled.
|
|||
|
|
|
|||
|
|
// IEPE switches
|
|||
|
|
swIS_CalibrationA, // 20 : High active. 1 = enabled. 0 = disabled. EN_CALA,
|
|||
|
|
swIS_CalibrationB, // 21 : High active. 1 = enabled. 0 = disabled. EN_CALB,
|
|||
|
|
swIS_CalibrationC, // 22 : High active. 1 = enabled. 0 = disabled. EN_CALC,
|
|||
|
|
swIS_EnableAnalogPowerSupply_MSP, // 23 : High active. 1 = enabled. 0 = disabled.EN_ANALOG_PWR
|
|||
|
|
swIS_Enable24Volt, // 24 : High active. 1 = enabled. 0 = disabled.EN_24V
|
|||
|
|
swIS_EnableACcouplerA, // 25 : High active. 1 = enabled. 0 = disabled.BS_EnableHalfBridgeA,
|
|||
|
|
swIS_EnableACcouplerB, // 26 : High active. 1 = enabled. 0 = disabled.BS_EnableHalfBridgeB,
|
|||
|
|
swIS_EnableACcouplerC, // 27 : High active. 1 = enabled. 0 = disabled.BS_EnableHalfBridgeC
|
|||
|
|
|
|||
|
|
// IEPE: Mapping VInsert in same order with bridge.
|
|||
|
|
swIS_EnGainAmpAll, // 28 N/A 2nd stage gain amplifier.
|
|||
|
|
swIS_EnIAA, // 29 : Low active. 0 = enabled. 1 = disabled. input A buffer enabled.
|
|||
|
|
swIS_FilterSelHBW_MSP, // 30 : High active. 1 = enabled. 0 = disabled.(not used in IEPE, but for debug purpose.)
|
|||
|
|
swIS_FilterSelLBW_MSP, // 31 : High active. 1 = enabled. 0 = disabled.new in v2.0
|
|||
|
|
swIS_EnIAB, // 32 : Low active. 0 = enabled. 1 = disabled. input B buffer enabled.
|
|||
|
|
swIS_EnClass, // 33 : High active. 1 = enabled. 0 = disabled.Class Enable (for TEDS ID detect)
|
|||
|
|
swIS_EnIAC, // 34 : Low active. 0 = enabled. 1 = disabled. input C buffer enabled.
|
|||
|
|
|
|||
|
|
// these belongs to PE1
|
|||
|
|
swIS_VoltageInsertionA, // 35 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swIS_VoltageInsertionB, // 36 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swIS_VoltageInsertionC, // 37 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swIS_VoltageInsertionMode, // 38 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
swIS_VoltageInsertionAmp, // 39 : Low active. 0 = enabled. 1 = disabled
|
|||
|
|
|
|||
|
|
// added to support IEPE/
|
|||
|
|
swIS_EnGainIAmp_A, // 40 : High active. 1 = enabled IEPE Input. 0 = disabled.
|
|||
|
|
swIS_EnGainIAmp_B, // 41 : High active. 1 = enabled IEPE Input. 0 = disabled.
|
|||
|
|
swIS_EnGainIAmp_C, // 42 : High active. 1 = enabled IEPE Input. 0 = disabled.
|
|||
|
|
|
|||
|
|
// add for RevC bridge type.
|
|||
|
|
swEnPosExcite_A, // 43 only for 2V and 5V
|
|||
|
|
swEnPosExcite_B, // 44
|
|||
|
|
swEnPosExcite_C, // 45
|
|||
|
|
swEnQB_A, // 46
|
|||
|
|
swEnQB_B, // 47
|
|||
|
|
swEnQB_C, // 48
|
|||
|
|
swAll_SignalsShorted, // 49 common to both IEPE/Bridge
|
|||
|
|
swAll_ReferenceShorted, // 50 connect signal to reference 2.5V.
|
|||
|
|
|
|||
|
|
swEn10VoltExcite_A, // 51 separate 10V excitation because it needs
|
|||
|
|
swEn10VoltExcite_B, // 52 to follow a strict timing sequence to turn on
|
|||
|
|
swEn10VoltExcite_C, // 53 EX+ and EX-
|
|||
|
|
PE0_P00, // 0- 15
|
|||
|
|
PE0_P01, // 1- 16
|
|||
|
|
PE0_P02, // 2- 17
|
|||
|
|
PE0_P03, // 3- 18
|
|||
|
|
PE0_P04, // 4- 19
|
|||
|
|
PE0_P05, // 5- 20
|
|||
|
|
PE0_P06, // 6- 21
|
|||
|
|
PE0_P07, // 7- 22
|
|||
|
|
PE0_P10, // 8- 23
|
|||
|
|
PE0_P11, // 9- 24
|
|||
|
|
PE0_P12, // 10- 25
|
|||
|
|
PE0_P13, // 11- 26
|
|||
|
|
PE0_P14, // 12- 27
|
|||
|
|
PE0_P15, // 13- 28
|
|||
|
|
PE0_P16, // 14- 29
|
|||
|
|
PE0_P17, // 15- 30
|
|||
|
|
PE0_P20, // 16- 31
|
|||
|
|
PE0_P21, // 17- 32
|
|||
|
|
PE0_P22, // 18- 33
|
|||
|
|
PE0_P23, // 19- 34
|
|||
|
|
PE0_P24, // 20- 35
|
|||
|
|
PE0_P25, // 21- 36
|
|||
|
|
PE0_P26, // 22- 37
|
|||
|
|
PE0_P27, // 23- 38
|
|||
|
|
PE1_P00, // 0- 39
|
|||
|
|
PE1_P01, // 1- 40
|
|||
|
|
PE1_P02, // 2- 41
|
|||
|
|
PE1_P03, // 3- 42
|
|||
|
|
PE1_P04, // 4- 43
|
|||
|
|
PE1_P05, // 5- 44
|
|||
|
|
PE1_P06, // 6- 45
|
|||
|
|
PE1_P07, // 7- 46
|
|||
|
|
PE1_P10, // 8- 47
|
|||
|
|
PE1_P11, // 9- 48
|
|||
|
|
PE1_P12, // 10- 49
|
|||
|
|
PE1_P13, // 11- 50
|
|||
|
|
PE1_P14, // 12- 51
|
|||
|
|
PE1_P15, // 13- 52
|
|||
|
|
PE1_P16, // 14- 53
|
|||
|
|
PE1_P17, // 15- 54
|
|||
|
|
PE1_P20, // 16- 55 =>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|||
|
|
PE1_P21, // 17- 56 =>> Only available in RevC
|
|||
|
|
PE1_P22, // 18- 57 =>> Only available in RevC
|
|||
|
|
PE1_P23, // 19- 58 =>> Only available in RevC
|
|||
|
|
PE1_P24, // 20- 59 =>> Only available in RevC
|
|||
|
|
PE1_P25, // 21- 60 =>> Only available in RevC
|
|||
|
|
PE1_P26, // 22- 61 =>> Only available in RevC
|
|||
|
|
PE1_P27, // 23- 62 =>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|||
|
|
DBG_swMax
|
|||
|
|
};
|
|||
|
|
public enum BridgeSwitchesSlice6ABR : byte
|
|||
|
|
{
|
|||
|
|
S6BR_SIGN_ALL = 0, // bit 0
|
|||
|
|
S6BR_GAINF = 1, // bit 1
|
|||
|
|
S6BR_SIGPF_DAC = 2, // bit 2
|
|||
|
|
S6BR_GAINE = 3, // bit 3
|
|||
|
|
S6BR_SIGPE_DAC = 4, // bit 4
|
|||
|
|
S6BR_GAIND = 5, // bit 5
|
|||
|
|
S6BR_SIGPD_DAC = 6, // bit 6
|
|||
|
|
S6BR_GAINC = 7, // bit 7
|
|||
|
|
|
|||
|
|
S6BR_EN_EX = 8, // bit 0/1
|
|||
|
|
S6BR_A0_GC = 9, // bit 1/1
|
|||
|
|
S6BR_A1_GC = 10, // bit 2/1
|
|||
|
|
S6BR_A2_GC = 11, // bit 3/1
|
|||
|
|
S6BR_nCS_IA_A = 12, // bit 4/1
|
|||
|
|
S6BR_nCS_IA_B = 13, // bit 5/1
|
|||
|
|
S6BR_nCS_IA_C = 14, // bit 6/1
|
|||
|
|
S6BR_nCS_IA_D = 15, // bit 7/1
|
|||
|
|
S6BR_nCS_IA_E = 16, // bit 0/1
|
|||
|
|
S6BR_nCS_IA_F = 17, // bit 1/1
|
|||
|
|
|
|||
|
|
S6BR_nSHDN = 18, // bit 2/1
|
|||
|
|
S6BR_SIGPA_DAC = 19, // bit 3/1
|
|||
|
|
S6BR_GAINA = 20, // bit 4/1
|
|||
|
|
S6BR_SIGPB_DAC = 21, // bit 5/1
|
|||
|
|
S6BR_GAINB = 22, // bit 6/1
|
|||
|
|
S6BR_SIGPC_DAC = 23, // bit 7/1
|
|||
|
|
};
|
|||
|
|
public enum BridgeSwitches_TOM : byte
|
|||
|
|
{
|
|||
|
|
DS_Squib_Arm1 = 0, // 0 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_Squib_Arm2, // 1 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_Squib_Arm3, // 2 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_Squib_Arm4, // 3 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_Squib1_ConstCur, // 4 : 1 = select constant current mode. 0 = cap discharge.
|
|||
|
|
DS_Squib2_ConstCur, // 5 : 1 = select constant current mode. 0 = cap discharge.
|
|||
|
|
DS_Squib3_ConstCur, // 6 : 1 = select constant current mode. 0 = cap discharge.
|
|||
|
|
DS_Squib4_ConstCur, // 7 : 1 = select constant current mode. 0 = cap discharge.
|
|||
|
|
DS_RecordFire1, // 8 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_RecordFire2, // 9 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_RecordFire3, // 10 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_RecordFire4, // 11 : High active. 1 = enabled. 0 = disabled.
|
|||
|
|
DS_EnableHwFilter, // 12 : High active. 1 = enabled UseSCF. 0 = disable.
|
|||
|
|
// ===============================================
|
|||
|
|
// from second PE addr 0x21: 5 reserve [10.11.12.13.14]
|
|||
|
|
DS_D1_OCPU_Mode, // 13 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D2_OCPU_Mode, // 14 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D3_OCPU_Mode, // 15 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D4_OCPU_Mode, // 16 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D5_OCPU_Mode, // 17 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D6_OCPU_Mode, // 18 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D7_OCPU_Mode, // 19 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
DS_D8_OCPU_Mode, // 20 : 1 = Contact closure. 0=Logic 5V/0V digital output 1
|
|||
|
|
|
|||
|
|
DS_Digital_PwrEn1234, // 21
|
|||
|
|
DS_Digital_PwrEn5678, // 22
|
|||
|
|
DS_SquibCharge_17p_Enable, // 23
|
|||
|
|
|
|||
|
|
// here is the add-on to switch the port extender pin.
|
|||
|
|
PE0_P00, // 0- 24
|
|||
|
|
PE0_P01, // 1- 25
|
|||
|
|
PE0_P02, // 2- 26
|
|||
|
|
PE0_P03, // 3- 27
|
|||
|
|
PE0_P04, // 4- 28
|
|||
|
|
PE0_P05, // 5- 29
|
|||
|
|
PE0_P06, // 6- 30
|
|||
|
|
PE0_P07, // 7- 31
|
|||
|
|
PE0_P10, // 8- 32
|
|||
|
|
PE0_P11, // 9- 33
|
|||
|
|
PE0_P12, // 10- 34
|
|||
|
|
PE0_P13, // 11- 35
|
|||
|
|
PE0_P14, // 12- 36
|
|||
|
|
PE0_P15, // 13- 37
|
|||
|
|
PE0_P16, // 14- 38
|
|||
|
|
PE0_P17, // 15- 39
|
|||
|
|
PE1_P00, // 0- 40
|
|||
|
|
PE1_P01, // 1- 41
|
|||
|
|
PE1_P02, // 2- 42
|
|||
|
|
PE1_P03, // 3- 43
|
|||
|
|
PE1_P04, // 4- 44
|
|||
|
|
PE1_P05, // 5- 45
|
|||
|
|
PE1_P06, // 6- 46
|
|||
|
|
PE1_P07, // 7- 47
|
|||
|
|
PE1_P10, // 8- 48
|
|||
|
|
PE1_P11, // 9- 49
|
|||
|
|
PE1_P12, // 10- 50
|
|||
|
|
PE1_P13, // 11- 51
|
|||
|
|
PE1_P14, // 12- 52
|
|||
|
|
PE1_P15, // 13- 53
|
|||
|
|
PE1_P16, // 14- 54
|
|||
|
|
PE1_P17, // 15- 55
|
|||
|
|
DBG_swMax
|
|||
|
|
};
|
|||
|
|
public enum EIPESwitches : byte
|
|||
|
|
{
|
|||
|
|
IS_CalibrationA = 0, // EN_CALA,
|
|||
|
|
IS_CalibrationB, // EN_CALB,
|
|||
|
|
IS_CalibrationC, // EN_CALC,
|
|||
|
|
IS_EnableAnalogPowerSupply, // EN_ANALOG_PWR
|
|||
|
|
IS_Enable24Volt, // EN_24V
|
|||
|
|
IS_EnableACcouplerA, // BS_EnableHalfBridgeA,
|
|||
|
|
IS_EnableACcouplerB, // BS_EnableHalfBridgeB,
|
|||
|
|
IS_EnableACcouplerC // BS_EnableHalfBridgeC
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public enum EIPEDACs : byte
|
|||
|
|
{
|
|||
|
|
IS_DACOffsetA = 0,
|
|||
|
|
IS_DACOffsetB,
|
|||
|
|
IS_DACOffsetC,
|
|||
|
|
IS_DACCalibrationCoarse
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public enum SystemSwitches_425B //TSR AIR
|
|||
|
|
{
|
|||
|
|
GPIO__3P3VD_ENABLE,
|
|||
|
|
GPIO__50_MHZ_OSC_ENABLE,
|
|||
|
|
GPIO__FPGA_POWER,
|
|||
|
|
GPIO__FPGA_RESET,
|
|||
|
|
GPIO__GPS_POWER,
|
|||
|
|
GPIO__MCU_EVENT, //For doing Quick Trigger
|
|||
|
|
GPIO__MCU_START,
|
|||
|
|
GPIO__MCU_STATUS,
|
|||
|
|
GPIO__MEM_POWER,
|
|||
|
|
GPIO__PE_RESET,
|
|||
|
|
GPIO__SENSOR_POWER,
|
|||
|
|
GPIO__KILL_POWER,
|
|||
|
|
GPIO__TP400,
|
|||
|
|
PE_8__PWR_LED_BLUE,
|
|||
|
|
PE_8__PWR_LED_GREEN,
|
|||
|
|
PE_8__PWR_LED_RED,
|
|||
|
|
PE_8__STS_LED_BLUE,
|
|||
|
|
PE_8__STS_LED_GREEN,
|
|||
|
|
PE_8__STS_LED_RED,
|
|||
|
|
PE_8__ETH_RESET,
|
|||
|
|
PE_8__HEATER_POWER,
|
|||
|
|
FPGA_PPS_DIR,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public class DACs
|
|||
|
|
{
|
|||
|
|
public enum BridgeDACs : byte
|
|||
|
|
{
|
|||
|
|
OffsetA = 0x00,
|
|||
|
|
OffsetB = 0x01,
|
|||
|
|
OffsetC = 0x02,
|
|||
|
|
CoarseShunt = 0x03,
|
|||
|
|
FineShunt = 0x04,
|
|||
|
|
NotUseDAC = 5,
|
|||
|
|
VInsertA = 6, // for slice6A
|
|||
|
|
VInsertB = 7,
|
|||
|
|
VInsertC = 8,
|
|||
|
|
VInsertD = 9,
|
|||
|
|
VInsertE = 10,
|
|||
|
|
VInsertF = 11,
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public enum IEPEDACs : byte
|
|||
|
|
{
|
|||
|
|
OffsetA = 0x00,
|
|||
|
|
OffsetB = 0x01,
|
|||
|
|
OffsetC = 0x02,
|
|||
|
|
CoarseShunt = 0x03
|
|||
|
|
}
|
|||
|
|
public enum BridgeDACS_SLICE2 : byte
|
|||
|
|
{
|
|||
|
|
OffsetA = 0x00,
|
|||
|
|
OffsetB = 0x01,
|
|||
|
|
OffsetC = 0x02,
|
|||
|
|
CoarseShunt = 0x03,
|
|||
|
|
FineShunt = 0x04,
|
|||
|
|
ExcitationA = 0x05,
|
|||
|
|
ExcitationB = 0x06,
|
|||
|
|
ExcitationC = 0x07,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public abstract class QAandUtilityCommands : CommandBase
|
|||
|
|
{
|
|||
|
|
protected enum Commands
|
|||
|
|
{
|
|||
|
|
Reserved = 0x00,
|
|||
|
|
QuerySwitchImmediate = 0x01,
|
|||
|
|
SetSwitchImmediate = 0x02,
|
|||
|
|
QueryDACImmediate = 0x03,
|
|||
|
|
SetDACImmediate = 0x04,
|
|||
|
|
QueryGainImmediate = 0x05,
|
|||
|
|
SetGainImmediate = 0x06,
|
|||
|
|
QueryAAFilterImmediate = 0x07,
|
|||
|
|
SetAAFilterImmediate = 0x08,
|
|||
|
|
ReadArbitraryFlash = 0x09,
|
|||
|
|
WriteArbitraryFlash = 0x0A,
|
|||
|
|
SelfTestFlash = 0x0B,
|
|||
|
|
QueryTime = 0x0C,
|
|||
|
|
SetTime = 0x0D,
|
|||
|
|
RestartSDCard = 0x0E,
|
|||
|
|
QueryEventPhysicalStartAddress = 0x0F,
|
|||
|
|
SetEventPhysicalStartAddress = 0x10,
|
|||
|
|
TestCommunication = 0x11,
|
|||
|
|
QueryLastError = 0x12,
|
|||
|
|
SetSmartBatteryConfig = 0x13,
|
|||
|
|
QuerySmartBatteryConfig = 0x14,
|
|||
|
|
SetStackLowPowerMode = 0x15,
|
|||
|
|
SetTiltSensorRange = 0x16,
|
|||
|
|
QueryTiltSensorRange = 0x17,
|
|||
|
|
QueryTiltSensorData = 0x18,
|
|||
|
|
QueryTiltSensorSensitivity = 0x19,
|
|||
|
|
QueryEthernetMacTable = 0x1A,
|
|||
|
|
TestEthernetCable = 0x1B,
|
|||
|
|
MeasureEventDelay = 0x1C,
|
|||
|
|
MeasureStartDelay = 0x1D,
|
|||
|
|
SetSwitchTestMode = 0x1E,
|
|||
|
|
QuerySwitchTestMode = 0x1F,
|
|||
|
|
QueryMacIpTable = 0x20,
|
|||
|
|
TiltSensorSet = 0x21,
|
|||
|
|
TiltSensorGet = 0x22,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
protected abstract Commands _Command { get; }
|
|||
|
|
|
|||
|
|
protected QAandUtilityCommands(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Type = CommandPacket.CommandType.QAandUtility;
|
|||
|
|
command.SetCommand((byte)_Command, _Command.ToString());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected QAandUtilityCommands(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Type = CommandPacket.CommandType.QAandUtility;
|
|||
|
|
command.SetCommand((byte)_Command, _Command.ToString());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QuerySwitchImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QuerySwitchImmediate;
|
|||
|
|
|
|||
|
|
private byte _setting = 0;
|
|||
|
|
private byte _Switch = 0;
|
|||
|
|
|
|||
|
|
public byte Switch
|
|||
|
|
{
|
|||
|
|
get => _Switch;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_Switch = value;
|
|||
|
|
command.SetParameter(0, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public byte Setting => _setting;
|
|||
|
|
|
|||
|
|
public string SwitchText { private get; set; }
|
|||
|
|
|
|||
|
|
public QuerySwitchImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QuerySwitchImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _setting);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_setting = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Switch: {_Switch}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
string s = SwitchText;
|
|||
|
|
if (string.IsNullOrWhiteSpace(s))
|
|||
|
|
{
|
|||
|
|
s = _Switch.ToString();
|
|||
|
|
}
|
|||
|
|
lines.Add(new List<string>() { $"DeviceID: {DeviceID}, Switch{s}, Setting: {Setting}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetSwitchImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetSwitchImmediate;
|
|||
|
|
private byte _Switch;
|
|||
|
|
private byte _Setting;
|
|||
|
|
private byte _Port;
|
|||
|
|
private byte _Pin;
|
|||
|
|
|
|||
|
|
public byte Switch
|
|||
|
|
{
|
|||
|
|
get => _Switch;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_Switch = value;
|
|||
|
|
command.SetParameter(0, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string SwitchText { private get; set; }
|
|||
|
|
|
|||
|
|
public byte Setting { set { _Setting = value; command.SetParameter(1, value); } }
|
|||
|
|
|
|||
|
|
public byte Port
|
|||
|
|
{
|
|||
|
|
get => _Port;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_Port = value;
|
|||
|
|
command.SetParameter(2, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public byte Pin
|
|||
|
|
{
|
|||
|
|
get => _Pin;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_Pin = value;
|
|||
|
|
command.SetParameter(3, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetSwitchImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[4];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetSwitchImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[4];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
var s = SwitchText;
|
|||
|
|
if (string.IsNullOrWhiteSpace(s))
|
|||
|
|
{
|
|||
|
|
s = _Switch.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
lines.Add(new List<string>() { $"DeviceID: {DeviceID}, Switch: {s}, Setting: {_Setting}, Port: {_Port}, Pin: {_Pin}" });
|
|||
|
|
}
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryDACImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryDACImmediate;
|
|||
|
|
|
|||
|
|
const int DACPosition = 0;
|
|||
|
|
const int ValuePosition = 1;
|
|||
|
|
const int CommandParameterLength = 1;
|
|||
|
|
|
|||
|
|
private byte _dac = 0;
|
|||
|
|
private ushort _value = 0;
|
|||
|
|
|
|||
|
|
public byte DAC
|
|||
|
|
{
|
|||
|
|
get => _dac;
|
|||
|
|
set { _dac = value; command.SetParameter(DACPosition, _dac); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Value => _value;
|
|||
|
|
|
|||
|
|
public QueryDACImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryDACImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(ValuePosition, out _value);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_value = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Address: {DeviceID}, DAC: {DAC}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Value: {Value}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetDACImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetDACImmediate;
|
|||
|
|
|
|||
|
|
const int DACPosition = 0;
|
|||
|
|
const int ValuePosition = 1;
|
|||
|
|
const int CommandParameterLength = 3;
|
|||
|
|
|
|||
|
|
private byte _dac = 0;
|
|||
|
|
private ushort _value = 0;
|
|||
|
|
|
|||
|
|
public byte DAC
|
|||
|
|
{
|
|||
|
|
get => _dac;
|
|||
|
|
set { _dac = value; command.SetParameter(DACPosition, _dac); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Value
|
|||
|
|
{
|
|||
|
|
get => _value;
|
|||
|
|
set { _value = value; command.SetParameter(ValuePosition, _value); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetDACImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetDACImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Address: {DeviceID}, DAC: {DAC}, Value: {Value}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryGainImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryGainImmediate;
|
|||
|
|
private byte _channel;
|
|||
|
|
private byte _gainstep;
|
|||
|
|
|
|||
|
|
public byte Channel
|
|||
|
|
{
|
|||
|
|
get => _channel;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_channel = value;
|
|||
|
|
command.SetParameter(0, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public byte GainStep { get { return _gainstep; } }
|
|||
|
|
|
|||
|
|
public QueryGainImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryGainImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _gainstep);
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Address: {DeviceID}, Channel: {Channel}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"GainStep: {GainStep}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetGainImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetGainImmediate;
|
|||
|
|
private byte _Channel;
|
|||
|
|
private byte _GainStep;
|
|||
|
|
|
|||
|
|
public byte Channel { set { _Channel = value; command.SetParameter(0, value); } }
|
|||
|
|
|
|||
|
|
public byte GainStep { set { _GainStep = value; command.SetParameter(1, value); } }
|
|||
|
|
|
|||
|
|
public SetGainImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[2];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetGainImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[2];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Address: {DeviceID}, Channel: {_Channel}, GainStep: {_GainStep}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryAAFilterImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryAAFilterImmediate;
|
|||
|
|
private float _frequency;
|
|||
|
|
|
|||
|
|
public float FrequencyHz => _frequency;
|
|||
|
|
|
|||
|
|
public QueryAAFilterImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryAAFilterImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _frequency);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_frequency = 0.0f;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Cutoff Frequency Hz: {FrequencyHz}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetAAFilterImmediate : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetAAFilterImmediate;
|
|||
|
|
private float _frequency;
|
|||
|
|
|
|||
|
|
public float FrequencyHz
|
|||
|
|
{
|
|||
|
|
get => _frequency;
|
|||
|
|
set { _frequency = value; command.SetParameter(0, _frequency); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetAAFilterImmediate(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[sizeof(float)];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetAAFilterImmediate(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[sizeof(float)];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _frequency);
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Cutoff Frequency Hz: {FrequencyHz}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Cutoff Frequency Hz: {ResponseStatus}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class ReadArbitraryFlash : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.ReadArbitraryFlash;
|
|||
|
|
const int WhichCardPosition = 0;
|
|||
|
|
const int AddressPosition = 1;
|
|||
|
|
const int LengthPosition = 9;
|
|||
|
|
const int CommandParameterLength = 13;
|
|||
|
|
private byte _whichCard;
|
|||
|
|
|
|||
|
|
public byte[] Data { get; private set; }
|
|||
|
|
|
|||
|
|
public bool CardA
|
|||
|
|
{
|
|||
|
|
get => _whichCard == 0;
|
|||
|
|
set { _whichCard = value ? (byte)0 : (byte)1; command.SetParameter(WhichCardPosition, _whichCard); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public uint Length
|
|||
|
|
{
|
|||
|
|
get { if (null == Data) return 0; return (uint)Data.Length; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
Data = new byte[value];
|
|||
|
|
command.SetParameter(LengthPosition, Data.Length);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ulong _address;
|
|||
|
|
|
|||
|
|
public ulong Address
|
|||
|
|
{
|
|||
|
|
get { return _address; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_address = value;
|
|||
|
|
command.SetParameter(AddressPosition, _address);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ReadArbitraryFlash(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
Data = null;
|
|||
|
|
Address = 0;
|
|||
|
|
CardA = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ReadArbitraryFlash(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
Data = null;
|
|||
|
|
Address = 0;
|
|||
|
|
CardA = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(LengthPosition, out uint resultLength);
|
|||
|
|
var resultData = new byte[resultLength];
|
|||
|
|
for (var i = 0; i < resultLength; i++)
|
|||
|
|
{
|
|||
|
|
resultData[i] = response.Parameter[CommandParameterLength + i];
|
|||
|
|
}
|
|||
|
|
Length = resultLength;
|
|||
|
|
Data = resultData;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Address: {Address}, Length: {Length}, Card: {(CardA ? "A" : "B")}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Length: {Length}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class WriteArbitraryFlash : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.WriteArbitraryFlash;
|
|||
|
|
private byte[] _data;
|
|||
|
|
|
|||
|
|
public byte[] Data
|
|||
|
|
{
|
|||
|
|
get => _data;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
byte[] newParameter = null == value ? (new byte[12]) : (new byte[value.Length + 12]);
|
|||
|
|
command.Parameter.CopyTo(newParameter, 0);
|
|||
|
|
command.Parameter = newParameter;
|
|||
|
|
_data = value;
|
|||
|
|
if (null != _data)
|
|||
|
|
{
|
|||
|
|
command.SetParameter(8, _data.Length);
|
|||
|
|
command.SetParameter(12, _data);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public uint Length => null == _data ? 0 : (uint)_data.Length;
|
|||
|
|
|
|||
|
|
private ulong _address;
|
|||
|
|
|
|||
|
|
public ulong Address
|
|||
|
|
{
|
|||
|
|
get => _address;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_address = value;
|
|||
|
|
command.SetParameter(0, _address);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public WriteArbitraryFlash(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
Data = null;
|
|||
|
|
Address = 0;
|
|||
|
|
command.Parameter = new byte[12];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public WriteArbitraryFlash(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
Data = null;
|
|||
|
|
Address = 0;
|
|||
|
|
command.Parameter = new byte[12];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Address: {Address}, Length: {Length}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SelfTestFlash : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SelfTestFlash;
|
|||
|
|
const uint DefaultBlocksToTest = 20000u;
|
|||
|
|
const byte DefaultTestType = 0;
|
|||
|
|
const uint DefaultBlocksPerMBW = 1024u;
|
|||
|
|
//=====================================
|
|||
|
|
const uint DefaultPreErase = 81920;
|
|||
|
|
const ushort DefaultAU_WriteSize = 8192;
|
|||
|
|
const ushort DefaultAU_PreErase = 8192;
|
|||
|
|
const ushort DefaultMagicBlocks = 8192;
|
|||
|
|
const ushort DefaultEventSkipBlocks = 1024;
|
|||
|
|
const uint DefaultLongDelay = 100000;
|
|||
|
|
//=====================================
|
|||
|
|
const byte DefaultFirstDualErase = 1;
|
|||
|
|
const byte DefaultDualPreEraseGarbageWrite = 1;
|
|||
|
|
const byte DefaultSecondDualErase = 1;
|
|||
|
|
const byte DefaultPreEraseGarbageWriteA = 1;
|
|||
|
|
const byte DefaultPreEraseGarbageWriteB = 0;
|
|||
|
|
const byte DefaultPreWritePreErase = 1;
|
|||
|
|
const byte DefaultDoFlashClear = 1;
|
|||
|
|
const byte DefaultWriteTillDelay = 0;
|
|||
|
|
|
|||
|
|
private byte _testtype;
|
|||
|
|
public byte TestType
|
|||
|
|
{
|
|||
|
|
get => _testtype;
|
|||
|
|
set { _testtype = value; command.SetParameter(0, _testtype); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private uint _blocks;
|
|||
|
|
public uint BlocksToTest
|
|||
|
|
{
|
|||
|
|
get => _blocks;
|
|||
|
|
set { _blocks = value; command.SetParameter(1, _blocks); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private uint _blocksPerMBW;
|
|||
|
|
public uint BlocksPerMBW
|
|||
|
|
{
|
|||
|
|
get => _blocksPerMBW;
|
|||
|
|
set { _blocksPerMBW = value; command.SetParameter(5, _blocksPerMBW); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//=========================================================================
|
|||
|
|
private uint _preErase;
|
|||
|
|
public uint PreErase
|
|||
|
|
{
|
|||
|
|
get => _preErase;
|
|||
|
|
set { _preErase = value; command.SetParameter(9, _preErase); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ushort _auWriteSize;
|
|||
|
|
public ushort AU_WriteSize
|
|||
|
|
{
|
|||
|
|
get => _auWriteSize;
|
|||
|
|
set { _auWriteSize = value; command.SetParameter(13, _auWriteSize); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ushort _auPreErase;
|
|||
|
|
public ushort AU_PreErase
|
|||
|
|
{
|
|||
|
|
get => _auPreErase;
|
|||
|
|
set { _auPreErase = value; command.SetParameter(15, _auPreErase); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ushort _magicBlocks;
|
|||
|
|
public ushort MagicBlocks
|
|||
|
|
{
|
|||
|
|
get => _magicBlocks;
|
|||
|
|
set { _magicBlocks = value; command.SetParameter(17, _magicBlocks); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ushort _eventSkipBlocks;
|
|||
|
|
public ushort EventSkipBlocks
|
|||
|
|
{
|
|||
|
|
get => _eventSkipBlocks;
|
|||
|
|
set { _eventSkipBlocks = value; command.SetParameter(19, _eventSkipBlocks); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private uint _longDelay;
|
|||
|
|
public uint LongDelay
|
|||
|
|
{
|
|||
|
|
get => _longDelay;
|
|||
|
|
set { _longDelay = value; command.SetParameter(21, _longDelay); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//=========================================================================
|
|||
|
|
|
|||
|
|
private byte _firstDualErase;
|
|||
|
|
public byte FirstDualErase
|
|||
|
|
{
|
|||
|
|
get => _firstDualErase;
|
|||
|
|
set { _firstDualErase = value; command.SetParameter(25, _firstDualErase); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _dualPreEraseGarbageWrite;
|
|||
|
|
public byte DualPreEraseGarbageWrite
|
|||
|
|
{
|
|||
|
|
get => _dualPreEraseGarbageWrite;
|
|||
|
|
set { _dualPreEraseGarbageWrite = value; command.SetParameter(26, _dualPreEraseGarbageWrite); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _secondDualErase;
|
|||
|
|
public byte SecondDualErase
|
|||
|
|
{
|
|||
|
|
get => _secondDualErase;
|
|||
|
|
set { _secondDualErase = value; command.SetParameter(27, _secondDualErase); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _preEraseGarbageWriteA;
|
|||
|
|
public byte PreEraseGarbageWriteA
|
|||
|
|
{
|
|||
|
|
get => _preEraseGarbageWriteA;
|
|||
|
|
set { _preEraseGarbageWriteA = value; command.SetParameter(28, _preEraseGarbageWriteA); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _preEraseGarbageWriteB;
|
|||
|
|
public byte PreEraseGarbageWriteB
|
|||
|
|
{
|
|||
|
|
get => _preEraseGarbageWriteB;
|
|||
|
|
set { _preEraseGarbageWriteB = value; command.SetParameter(29, _preEraseGarbageWriteB); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _preWritePreErase;
|
|||
|
|
public byte PreWritePreErase
|
|||
|
|
{
|
|||
|
|
get => _preWritePreErase;
|
|||
|
|
set { _preWritePreErase = value; command.SetParameter(30, _preWritePreErase); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _doFlashClear;
|
|||
|
|
public byte DoFlashClear
|
|||
|
|
{
|
|||
|
|
get => _doFlashClear;
|
|||
|
|
set { _doFlashClear = value; command.SetParameter(31, _doFlashClear); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private byte _writeTillDelay;
|
|||
|
|
public byte WriteTillDelay
|
|||
|
|
{
|
|||
|
|
get => _writeTillDelay;
|
|||
|
|
set { _writeTillDelay = value; command.SetParameter(32, _writeTillDelay); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SelfTestFlash(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[33];
|
|||
|
|
BlocksToTest = DefaultBlocksToTest;
|
|||
|
|
TestType = DefaultTestType;
|
|||
|
|
BlocksPerMBW = DefaultBlocksPerMBW;
|
|||
|
|
//=====================================
|
|||
|
|
PreErase = DefaultPreErase;
|
|||
|
|
AU_WriteSize = DefaultAU_WriteSize;
|
|||
|
|
AU_PreErase = DefaultAU_PreErase;
|
|||
|
|
MagicBlocks = DefaultMagicBlocks;
|
|||
|
|
EventSkipBlocks = DefaultEventSkipBlocks;
|
|||
|
|
LongDelay = DefaultLongDelay;
|
|||
|
|
//=====================================
|
|||
|
|
FirstDualErase = DefaultFirstDualErase;
|
|||
|
|
DualPreEraseGarbageWrite = DefaultDualPreEraseGarbageWrite;
|
|||
|
|
SecondDualErase = DefaultSecondDualErase;
|
|||
|
|
PreEraseGarbageWriteA = DefaultPreEraseGarbageWriteA;
|
|||
|
|
PreEraseGarbageWriteB = DefaultPreEraseGarbageWriteB;
|
|||
|
|
PreWritePreErase = DefaultPreWritePreErase;
|
|||
|
|
DoFlashClear = DefaultDoFlashClear;
|
|||
|
|
WriteTillDelay = DefaultWriteTillDelay;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SelfTestFlash(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[33];
|
|||
|
|
BlocksToTest = DefaultBlocksToTest;
|
|||
|
|
TestType = DefaultTestType;
|
|||
|
|
BlocksPerMBW = DefaultBlocksPerMBW;
|
|||
|
|
//=====================================
|
|||
|
|
PreErase = DefaultPreErase;
|
|||
|
|
AU_WriteSize = DefaultAU_WriteSize;
|
|||
|
|
AU_PreErase = DefaultAU_PreErase;
|
|||
|
|
MagicBlocks = DefaultMagicBlocks;
|
|||
|
|
EventSkipBlocks = DefaultEventSkipBlocks;
|
|||
|
|
LongDelay = DefaultLongDelay;
|
|||
|
|
//=====================================
|
|||
|
|
FirstDualErase = DefaultFirstDualErase;
|
|||
|
|
DualPreEraseGarbageWrite = DefaultDualPreEraseGarbageWrite;
|
|||
|
|
SecondDualErase = DefaultSecondDualErase;
|
|||
|
|
PreEraseGarbageWriteA = DefaultPreEraseGarbageWriteA;
|
|||
|
|
PreEraseGarbageWriteB = DefaultPreEraseGarbageWriteB;
|
|||
|
|
PreWritePreErase = DefaultPreWritePreErase;
|
|||
|
|
DoFlashClear = DefaultDoFlashClear;
|
|||
|
|
WriteTillDelay = DefaultWriteTillDelay;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"-> SelfTestFlash [{command.SequenceNumber.ToString("00000000")}]" });
|
|||
|
|
lines.Add(new List<string>() { $" Blocks to test: {BlocksToTest}, test type: {TestType}, blocks per mbw: {BlocksPerMBW}" });
|
|||
|
|
lines.Add(new List<string>() { $" SD Total Blocks: {PreErase}, AU Write Size: {AU_WriteSize}, AU_PreErase: {AU_PreErase}, Magic Blocks: {MagicBlocks}, EventSkipBlocks: {EventSkipBlocks}" });
|
|||
|
|
lines.Add(new List<string>() { $" FirstDualErase: {FirstDualErase}, DualPreEraseGarbageWrite: {DualPreEraseGarbageWrite}, SecondDualErase: {SecondDualErase}" });
|
|||
|
|
lines.Add(new List<string>() { $" PreEraseGarbageWriteA: {PreEraseGarbageWriteA}, PreEraseGarbageWriteB: {PreEraseGarbageWriteB}, PreWritePreErase: {PreWritePreErase}" });
|
|||
|
|
lines.Add(new List<string>() { $" LongDelay: {LongDelay}, WriteTillDelay: {WriteTillDelay}" });
|
|||
|
|
}
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"-> SelfTestFlash [{command.SequenceNumber.ToString("00000000")}]" });
|
|||
|
|
lines.Add(new List<string>() { $" Blocks to test: {BlocksToTest}, test type: {TestType}, blocks per mbw: {BlocksPerMBW}" });
|
|||
|
|
lines.Add(new List<string>() { $" SD Total Blocks: {PreErase}, AU Write Size: {AU_WriteSize}, AU_PreErase: {AU_PreErase}, Magic Blocks: {MagicBlocks}, EventSkipBlocks: {EventSkipBlocks}" });
|
|||
|
|
lines.Add(new List<string>() { $" FirstDualErase: {FirstDualErase}, DualPreEraseGarbageWrite: {DualPreEraseGarbageWrite}, SecondDualErase: {SecondDualErase}" });
|
|||
|
|
lines.Add(new List<string>() { $" PreEraseGarbageWriteA: {PreEraseGarbageWriteA}, PreEraseGarbageWriteB: {PreEraseGarbageWriteB}, PreWritePreErase: {PreWritePreErase}" });
|
|||
|
|
lines.Add(new List<string>() { $" LongDelay: {LongDelay}, WriteTillDelay: {WriteTillDelay}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryTime : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryTime;
|
|||
|
|
|
|||
|
|
public DateTime Value { get; private set; }
|
|||
|
|
|
|||
|
|
public QueryTime(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryTime(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out ulong tenms);
|
|||
|
|
// Each tick = 100 ns, so each tenms = 10 ticks
|
|||
|
|
Value = new DateTime(0).AddTicks((long)(10000 * tenms));
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Value: {Value.ToString("o")}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class RestartSDCard : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.RestartSDCard;
|
|||
|
|
|
|||
|
|
public RestartSDCard(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public RestartSDCard(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryEventPhysicalStartAddress : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
protected override Commands _Command => Commands.QueryEventPhysicalStartAddress;
|
|||
|
|
|
|||
|
|
const int EventNumberPosition = 0;
|
|||
|
|
const int StartAddressPosition = 2;
|
|||
|
|
const int CommandLength = 2;
|
|||
|
|
|
|||
|
|
private ushort _eventnumber = 0;
|
|||
|
|
|
|||
|
|
public ushort EventNumber
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_eventnumber = value;
|
|||
|
|
command.SetParameter(EventNumberPosition, value);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
get => _eventnumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ulong StartAddress { get; set; }
|
|||
|
|
|
|||
|
|
public QueryEventPhysicalStartAddress(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandLength];
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.PhysicalStartAddress);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryEventPhysicalStartAddress(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandLength];
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.PhysicalStartAddress);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(StartAddressPosition, out ulong newStartAddress);
|
|||
|
|
StartAddress = newStartAddress;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"EventNumber: {EventNumber}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines[0].Add($"Physical Address: 0x{StartAddress.ToString("XXXXXXXXXXXXXXXX")}");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetEventPhysicalStartAddress : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetEventPhysicalStartAddress;
|
|||
|
|
|
|||
|
|
const int EventNumberPosition = 0;
|
|||
|
|
const int StartAddressPosition = 2;
|
|||
|
|
const int CommandLength = 10;
|
|||
|
|
|
|||
|
|
private ushort _eventnumber = 0;
|
|||
|
|
|
|||
|
|
public ushort EventNumber
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_eventnumber = value;
|
|||
|
|
command.SetParameter(EventNumberPosition, value);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
get => _eventnumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ulong _startaddress = 0L;
|
|||
|
|
|
|||
|
|
public ulong StartAddress
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_startaddress = value;
|
|||
|
|
command.SetParameter(StartAddressPosition, value);
|
|||
|
|
}
|
|||
|
|
get => _startaddress;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetEventPhysicalStartAddress(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandLength];
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.PhysicalStartAddress);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetEventPhysicalStartAddress(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandLength];
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.PhysicalStartAddress);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
ulong newStartAddress;
|
|||
|
|
response.GetParameter(StartAddressPosition, out newStartAddress);
|
|||
|
|
StartAddress = newStartAddress;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"EventNumber: {EventNumber}, Physical Address: 0x{StartAddress.ToString("XXXXXXXXXXXXXXXX")}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"EventNumber: {EventNumber}, Physical Address: 0x{StartAddress.ToString("XXXXXXXXXXXXXXXX")}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class TestCommunication : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.TestCommunication;
|
|||
|
|
|
|||
|
|
const int LengthPosition = 0;
|
|||
|
|
|
|||
|
|
private ushort _responselength = 0;
|
|||
|
|
public ushort ResponseLength
|
|||
|
|
{
|
|||
|
|
get => _responselength;
|
|||
|
|
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
command.SetParameter(LengthPosition, value);
|
|||
|
|
_responselength = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort ActualLength { get; private set; } = 0;
|
|||
|
|
|
|||
|
|
public TestCommunication(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[2];
|
|||
|
|
command.SetParameter(LengthPosition, (ushort)0);
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.TestCommunication);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TestCommunication(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[2];
|
|||
|
|
command.SetParameter(LengthPosition, (ushort)0);
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.TestCommunication);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
ActualLength = response.ParameterLength;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Requested Response Length: {ResponseLength}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines[0].Add($"Actual Response Length: {ActualLength}");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetStackLowPowerMode : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetStackLowPowerMode;
|
|||
|
|
|
|||
|
|
const int LengthPosition = 0;
|
|||
|
|
|
|||
|
|
private ushort _responselength = 0;
|
|||
|
|
public ushort ResponseLength
|
|||
|
|
{
|
|||
|
|
get => _responselength;
|
|||
|
|
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
command.SetParameter(LengthPosition, value);
|
|||
|
|
_responselength = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort ActualLength { get; private set; } = 0;
|
|||
|
|
|
|||
|
|
public SetStackLowPowerMode(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[2];
|
|||
|
|
command.SetParameter(LengthPosition, (ushort)0);
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.StackLowPowerMode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetStackLowPowerMode(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[2];
|
|||
|
|
command.SetParameter(LengthPosition, (ushort)0);
|
|||
|
|
MinimumProtocolVersion = sock.GetMinProto(DFConstantsAndEnums.ProtocolLimitedCommands.StackLowPowerMode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
ActualLength = response.ParameterLength;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Requested Response Length: {ResponseLength}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines[0].Add($"Actual Response Length: {ActualLength}");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetTiltSensorRange : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetTiltSensorRange;
|
|||
|
|
|
|||
|
|
const int Channel1RangePosition = 0;
|
|||
|
|
const int Channel2RangePosition = 2;
|
|||
|
|
const int Channel3RangePosition = 4;
|
|||
|
|
const int CommandParameterLength = 6;
|
|||
|
|
|
|||
|
|
private ushort _channel_1_range;
|
|||
|
|
private ushort _channel_2_range;
|
|||
|
|
private ushort _channel_3_range;
|
|||
|
|
|
|||
|
|
public ushort Channel1RangeG
|
|||
|
|
{
|
|||
|
|
get => _channel_1_range;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_channel_1_range = value;
|
|||
|
|
command.SetParameter(Channel1RangePosition, _channel_1_range);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Channel2RangeG
|
|||
|
|
{
|
|||
|
|
get => _channel_2_range;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_channel_2_range = value;
|
|||
|
|
command.SetParameter(Channel2RangePosition, _channel_2_range);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Channel3RangeG
|
|||
|
|
{
|
|||
|
|
get => _channel_3_range;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_channel_3_range = value;
|
|||
|
|
command.SetParameter(Channel3RangePosition, _channel_3_range);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetTiltSensorRange(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetTiltSensorRange(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Channel 1 range: {_channel_1_range}G Channel 2 range: {_channel_2_range}G Channel 3 range: {_channel_3_range}G"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryTiltSensorRange : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryTiltSensorRange;
|
|||
|
|
|
|||
|
|
private ushort _channel_1_range;
|
|||
|
|
private ushort _channel_2_range;
|
|||
|
|
private ushort _channel_3_range;
|
|||
|
|
|
|||
|
|
public ushort Channel1RangeG => _channel_1_range;
|
|||
|
|
public ushort Channel2RangeG => _channel_2_range;
|
|||
|
|
public ushort Channel3RangeG => _channel_3_range;
|
|||
|
|
|
|||
|
|
public QueryTiltSensorRange(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryTiltSensorRange(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _channel_1_range);
|
|||
|
|
response.GetParameter(2, out _channel_2_range);
|
|||
|
|
response.GetParameter(4, out _channel_3_range);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_channel_1_range = 0;
|
|||
|
|
_channel_2_range = 0;
|
|||
|
|
_channel_3_range = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Channel 1 range: {_channel_1_range}G Channel 2 range: {_channel_2_range}G Channel 3 range: {_channel_3_range}G"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryTiltSensorData : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryTiltSensorData;
|
|||
|
|
|
|||
|
|
private short _channel_1_adc;
|
|||
|
|
private short _channel_2_adc;
|
|||
|
|
private short _channel_3_adc;
|
|||
|
|
|
|||
|
|
public short Channel1ValueAdc => _channel_1_adc;
|
|||
|
|
public short Channel2ValueAdc => _channel_2_adc;
|
|||
|
|
public short Channel3ValueAdc => _channel_3_adc;
|
|||
|
|
|
|||
|
|
public QueryTiltSensorData(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryTiltSensorData(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _channel_1_adc);
|
|||
|
|
response.GetParameter(2, out _channel_2_adc);
|
|||
|
|
response.GetParameter(4, out _channel_3_adc);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_channel_1_adc = 0;
|
|||
|
|
_channel_2_adc = 0;
|
|||
|
|
_channel_3_adc = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Channel 1 ADC: {_channel_1_adc} Channel 2 ADC: {_channel_2_adc} Channel 3 ADC: {_channel_3_adc}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryTiltSensorSensitivity : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QueryTiltSensorSensitivity;
|
|||
|
|
|
|||
|
|
private float _sensitivity_1;
|
|||
|
|
private float _sensitivity_2;
|
|||
|
|
private float _sensitivity_3;
|
|||
|
|
|
|||
|
|
public float Channel1Sensitivity => _sensitivity_1;
|
|||
|
|
public float Channel2Sensitivity => _sensitivity_2;
|
|||
|
|
public float Channel3Sensitivity => _sensitivity_3;
|
|||
|
|
|
|||
|
|
public QueryTiltSensorSensitivity(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryTiltSensorSensitivity(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _sensitivity_1);
|
|||
|
|
response.GetParameter(4, out _sensitivity_2);
|
|||
|
|
response.GetParameter(8, out _sensitivity_3);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_sensitivity_1 = 0;
|
|||
|
|
_sensitivity_2 = 0;
|
|||
|
|
_sensitivity_3 = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Channel 1 sensitivity: {_sensitivity_1} Channel 2 sensitivity: {_sensitivity_2} Channel 3 sensitivity: {_sensitivity_3}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class EthernetMacTableEntry
|
|||
|
|
{
|
|||
|
|
public EthernetMacTableEntry(ushort age, ushort port, ushort filter, byte[] address)
|
|||
|
|
{
|
|||
|
|
Age = age;
|
|||
|
|
Port = port;
|
|||
|
|
Filter = filter;
|
|||
|
|
Mac = new PhysicalAddress(address);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Age { get; private set; }
|
|||
|
|
public ushort Port { get; private set; }
|
|||
|
|
public ushort Filter { get; private set; }
|
|||
|
|
public PhysicalAddress Mac { get; private set; }
|
|||
|
|
public string Name { get; set; }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QueryEthernetMacTable : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
const int FilterPosition = 0;
|
|||
|
|
const int CommandParameterLength = 6;
|
|||
|
|
|
|||
|
|
protected override Commands _Command => Commands.QueryEthernetMacTable;
|
|||
|
|
|
|||
|
|
private string _filterString;
|
|||
|
|
|
|||
|
|
public List<EthernetMacTableEntry> MacTable { get; }
|
|||
|
|
|
|||
|
|
public string Filter
|
|||
|
|
{
|
|||
|
|
get => _filterString;
|
|||
|
|
set => SetFilter(value);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void SetFilter(string filter)
|
|||
|
|
{
|
|||
|
|
_filterString = filter;
|
|||
|
|
|
|||
|
|
//Encoding.ASCII.GetBytes(filter);
|
|||
|
|
var array = HexEncoding.GetBytes(filter, out int discarded);
|
|||
|
|
|
|||
|
|
if (!string.IsNullOrEmpty(filter) && (null != array))
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
command.SetParameter(FilterPosition, array);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryEthernetMacTable(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
MacTable = new List<EthernetMacTableEntry>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryEthernetMacTable(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
MacTable = new List<EthernetMacTableEntry>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
ushort offset = 0;
|
|||
|
|
|
|||
|
|
response.GetParameter(offset, out ushort entries);
|
|||
|
|
offset += 2;
|
|||
|
|
|
|||
|
|
for (ushort i = 0; i < entries; i++)
|
|||
|
|
{
|
|||
|
|
var address = new byte[6];
|
|||
|
|
|
|||
|
|
response.GetParameter(offset, out ushort age);
|
|||
|
|
offset += 2;
|
|||
|
|
response.GetParameter(offset, out ushort port);
|
|||
|
|
offset += 2;
|
|||
|
|
response.GetParameter(offset, out ushort filter);
|
|||
|
|
offset += 2;
|
|||
|
|
Buffer.BlockCopy(response.Parameter, offset, address, 0, 6);
|
|||
|
|
offset += 6;
|
|||
|
|
|
|||
|
|
var entry = new EthernetMacTableEntry(age, port, filter, address);
|
|||
|
|
MacTable.Add(entry);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Filter: {Filter}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Mac Table Entries: {MacTable.Count}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public class EthernetMacIpTableEntry
|
|||
|
|
{
|
|||
|
|
public EthernetMacIpTableEntry(ushort setport, ushort setdown, byte[] address, byte[] ip, byte[] sn, byte[] location, byte[] version)
|
|||
|
|
{
|
|||
|
|
Port = setport;
|
|||
|
|
Down = setdown;
|
|||
|
|
Mac = address;
|
|||
|
|
Ip = ip;
|
|||
|
|
Sn = sn;
|
|||
|
|
Location = location;
|
|||
|
|
Version = version;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Port { get; private set; }
|
|||
|
|
public ushort Down { get; private set; }
|
|||
|
|
public byte[] Mac { get; private set; }
|
|||
|
|
public byte[] Ip { get; private set; }
|
|||
|
|
public byte[] Sn { get; private set; }
|
|||
|
|
public byte[] Location { get; private set; }
|
|||
|
|
public byte[] Version { get; private set; }
|
|||
|
|
public byte[] Swapped { get; private set; }
|
|||
|
|
|
|||
|
|
public string Name { get; set; }
|
|||
|
|
}
|
|||
|
|
public class QueryEthernetMacIpTable : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
const int COMMAND_PAYLOAD_SIZE = 1;
|
|||
|
|
const int FilterPosition = 0;
|
|||
|
|
const int CommandParameterLength = 6;
|
|||
|
|
private byte _updatebuffer = 0;
|
|||
|
|
protected override Commands _Command => Commands.QueryMacIpTable;
|
|||
|
|
|
|||
|
|
public List<EthernetMacIpTableEntry> MacIpTable { get; }
|
|||
|
|
|
|||
|
|
public bool UpdateBuffer
|
|||
|
|
{
|
|||
|
|
set { _updatebuffer = Convert.ToByte(value); command.SetParameter(0, _updatebuffer); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public QueryEthernetMacIpTable(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
MacIpTable = new List<EthernetMacIpTableEntry>();
|
|||
|
|
command.Parameter = new byte[COMMAND_PAYLOAD_SIZE];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QueryEthernetMacIpTable(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
MacIpTable = new List<EthernetMacIpTableEntry>();
|
|||
|
|
command.Parameter = new byte[COMMAND_PAYLOAD_SIZE];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
ushort offset = 0;
|
|||
|
|
|
|||
|
|
response.GetParameter(offset, out ushort entries);
|
|||
|
|
offset += 2;
|
|||
|
|
|
|||
|
|
for (ushort i = 0; i < entries; i++)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
byte[] address = new byte[18];
|
|||
|
|
byte[] ip = new byte[16];
|
|||
|
|
byte[] sn = new byte[10];
|
|||
|
|
byte[] location = new byte[10];
|
|||
|
|
byte[] version = new byte[6];
|
|||
|
|
|
|||
|
|
|
|||
|
|
response.GetParameter(offset, out ushort setport);
|
|||
|
|
offset += 2;
|
|||
|
|
|
|||
|
|
response.GetParameter(offset, out ushort setdown);
|
|||
|
|
offset += 2;
|
|||
|
|
|
|||
|
|
Buffer.BlockCopy(response.Parameter, offset, address, 0, 18);
|
|||
|
|
offset += 18;
|
|||
|
|
|
|||
|
|
Buffer.BlockCopy(response.Parameter, offset, ip, 0, 16);
|
|||
|
|
offset += 16;
|
|||
|
|
|
|||
|
|
Buffer.BlockCopy(response.Parameter, offset, sn, 0, 10);
|
|||
|
|
offset += 10;
|
|||
|
|
|
|||
|
|
Buffer.BlockCopy(response.Parameter, offset, location, 0, 10);
|
|||
|
|
offset += 10;
|
|||
|
|
|
|||
|
|
Buffer.BlockCopy(response.Parameter, offset, version, 0, 6);
|
|||
|
|
offset += 6;
|
|||
|
|
|
|||
|
|
var entry = new EthernetMacIpTableEntry(setport, setdown, address, ip, sn, location, version);
|
|||
|
|
MacIpTable.Add(entry);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log($"Failure in QueryEthernetMacIpTable - {ex.Message}");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Update Buffer {_updatebuffer}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Mac Table Entries: {MacIpTable.Count}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class TestEthernetCable : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
private const int PortPosition = 0;
|
|||
|
|
private const int PairPosition = 2;
|
|||
|
|
private const int ResultPosition = 0;
|
|||
|
|
private const int CommandParameterLength = 4;
|
|||
|
|
|
|||
|
|
protected override Commands _Command
|
|||
|
|
{
|
|||
|
|
get { return Commands.TestEthernetCable; }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ushort _port;
|
|||
|
|
private ushort _pair;
|
|||
|
|
private ushort _result;
|
|||
|
|
private float _length;
|
|||
|
|
|
|||
|
|
public ushort Port
|
|||
|
|
{
|
|||
|
|
get => _port;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_port = value;
|
|||
|
|
command.SetParameter(PortPosition, _port);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Pair
|
|||
|
|
{
|
|||
|
|
get => _pair;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_pair = value;
|
|||
|
|
command.SetParameter(PairPosition, _pair);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Result => _result;
|
|||
|
|
public float Length => _length;
|
|||
|
|
|
|||
|
|
public TestEthernetCable(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TestEthernetCable(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _result);
|
|||
|
|
response.GetParameter(2, out _length);
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Port: {_port} Pair: {_pair}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Result: {_result} Length: {_length}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class MeasureEventDelay : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
const int COMMAND_PAYLOAD_SIZE = 1;
|
|||
|
|
|
|||
|
|
protected override Commands _Command => Commands.MeasureEventDelay;
|
|||
|
|
|
|||
|
|
private byte _saveAtribute = 0;
|
|||
|
|
private uint _delay;
|
|||
|
|
|
|||
|
|
public bool SaveAttribute
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_saveAtribute = Convert.ToByte(value);
|
|||
|
|
command.SetParameter(0, _saveAtribute);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public uint DelayNs => _delay;
|
|||
|
|
|
|||
|
|
public MeasureEventDelay(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[COMMAND_PAYLOAD_SIZE];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public MeasureEventDelay(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[COMMAND_PAYLOAD_SIZE];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _delay);
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Save Attribute {_saveAtribute}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Delay: {_delay}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class MeasureStartDelay : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
const int COMMAND_PAYLOAD_SIZE = 1;
|
|||
|
|
|
|||
|
|
protected override Commands _Command => Commands.MeasureStartDelay;
|
|||
|
|
|
|||
|
|
private byte _saveAtribute = 0;
|
|||
|
|
private uint _delay;
|
|||
|
|
|
|||
|
|
public bool SaveAttribute
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_saveAtribute = Convert.ToByte(value);
|
|||
|
|
command.SetParameter(0, _saveAtribute);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public uint DelayNs => _delay;
|
|||
|
|
|
|||
|
|
public MeasureStartDelay(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[COMMAND_PAYLOAD_SIZE];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public MeasureStartDelay(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[COMMAND_PAYLOAD_SIZE];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _delay);
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Save Attribute {_saveAtribute}" });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Delay: {_delay}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class SetSwitchTestMode : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.SetSwitchTestMode;
|
|||
|
|
|
|||
|
|
private byte _enabled;
|
|||
|
|
|
|||
|
|
public bool Enabled
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_enabled = Convert.ToByte(value);
|
|||
|
|
command.SetParameter(0, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetSwitchTestMode(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public SetSwitchTestMode(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
if (0 == DeviceID)
|
|||
|
|
{
|
|||
|
|
lines.Add(new List<string>() { $"Enabled: {_enabled}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class QuerySwitchTestMode : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.QuerySwitchTestMode;
|
|||
|
|
|
|||
|
|
private byte _enabled = 0;
|
|||
|
|
|
|||
|
|
public bool Enabled => Convert.ToBoolean(_enabled);
|
|||
|
|
|
|||
|
|
public QuerySwitchTestMode(DTS.Common.Interface.DASFactory.ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public QuerySwitchTestMode(DTS.Common.Interface.DASFactory.ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _enabled);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_enabled = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
lines.Add(new List<string>() { $"Enabled: {_enabled}" });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
public enum TiltSensorMif : ushort
|
|||
|
|
{
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.UInt32)]
|
|||
|
|
MifVersion = 1,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Unicode)]
|
|||
|
|
SerialNumber = 2,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.UInt16)]
|
|||
|
|
HardwareConfiguration = 3,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32)]
|
|||
|
|
TemperatureCF = 4,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Int16)]
|
|||
|
|
TemperatureOffset = 5,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32Star)]
|
|||
|
|
TiltSensorCF = 6,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Int16Star)]
|
|||
|
|
TiltSensorOffset = 7,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32Star)]
|
|||
|
|
TiltSensorRange = 8,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32Star)]
|
|||
|
|
TiltSensorCal = 9,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Int16)]
|
|||
|
|
TiltSensorEEPROM = 10,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32)]
|
|||
|
|
TiltSensorMultipleMIF = 11,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32)]
|
|||
|
|
TiltSensorData = 12,
|
|||
|
|
[AttributeTypes.AttributeDataTypesAttribute(AttributeTypes.AttributeDataTypes.Float32)]
|
|||
|
|
TiltSenosrList = 13,
|
|||
|
|
[AttributeTypes.AttributeDataTypes(AttributeTypes.AttributeDataTypes.Int16)]
|
|||
|
|
RtcRam = 14,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class TiltSensorGet : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.TiltSensorGet;
|
|||
|
|
|
|||
|
|
private byte _tilt_id = 0;
|
|||
|
|
private TiltSensorMif _sub_cmd = 0;
|
|||
|
|
private byte _data_sub_cmd = 0;
|
|||
|
|
private byte _data_type = 0;
|
|||
|
|
private ushort _data_length = 0;
|
|||
|
|
private ushort _data_offset = 0;
|
|||
|
|
private readonly byte _data_cmd = 4;
|
|||
|
|
private byte[] _data;
|
|||
|
|
protected const int MAX_DATA_LENGTH = 2000;
|
|||
|
|
|
|||
|
|
public byte Tilt_id
|
|||
|
|
{
|
|||
|
|
get => _tilt_id;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tilt_id = value;
|
|||
|
|
command.SetParameter(0, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TiltSensorMif Sub_cmd
|
|||
|
|
{
|
|||
|
|
get => _sub_cmd;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_sub_cmd = value;
|
|||
|
|
command.SetParameter(1, (byte)value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Data_Offset
|
|||
|
|
{
|
|||
|
|
get => _data_offset;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_data_offset = value;
|
|||
|
|
command.SetParameter(2, _data_offset);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort Data_Length
|
|||
|
|
{
|
|||
|
|
get => _data_length;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_data_length = value;
|
|||
|
|
command.SetParameter(4, _data_length);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public byte[] Data
|
|||
|
|
{
|
|||
|
|
get => _data;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (null == value)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (MAX_DATA_LENGTH < value.Length)
|
|||
|
|
{
|
|||
|
|
throw new NotImplementedException();
|
|||
|
|
}
|
|||
|
|
_data = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private uint _mifversion;
|
|||
|
|
public uint MIFversion => _mifversion;
|
|||
|
|
|
|||
|
|
private string _serialnumber;
|
|||
|
|
public string Serialnumber => _serialnumber;
|
|||
|
|
|
|||
|
|
private ushort _hardwardconfig;
|
|||
|
|
public ushort HardwareConfig => _hardwardconfig;
|
|||
|
|
|
|||
|
|
private float _temperaturecf;
|
|||
|
|
public float TemperaturCF => _temperaturecf;
|
|||
|
|
|
|||
|
|
private short _temperatureoffset;
|
|||
|
|
public short TemperatureOffset => _temperatureoffset;
|
|||
|
|
|
|||
|
|
private float _tiltsensorcfx;
|
|||
|
|
public float TiltSensorCFx => _tiltsensorcfx;
|
|||
|
|
|
|||
|
|
private float _tiltsensorcfy;
|
|||
|
|
public float TiltSensorCFy => _tiltsensorcfy;
|
|||
|
|
|
|||
|
|
private float _tiltsensorcfz;
|
|||
|
|
public float TiltSensorCFz => _tiltsensorcfz;
|
|||
|
|
|
|||
|
|
private short _tiltsensoroffsetx;
|
|||
|
|
public short TiltSensorOffsetx => _tiltsensoroffsetx;
|
|||
|
|
private short _tiltsensoroffsety;
|
|||
|
|
public short TiltSensorOffsety => _tiltsensoroffsety;
|
|||
|
|
private short _tiltsensoroffsetz;
|
|||
|
|
public short TiltSensorOffsetz => _tiltsensoroffsetz;
|
|||
|
|
|
|||
|
|
private float _tiltsensorrangex;
|
|||
|
|
public float TiltSensorRangex => _tiltsensorrangex;
|
|||
|
|
|
|||
|
|
private float _tiltsensorrangey;
|
|||
|
|
public float TiltSensorRangey => _tiltsensorrangey;
|
|||
|
|
|
|||
|
|
private float _tiltsensorrangez;
|
|||
|
|
public float TiltSensorRangez => _tiltsensorrangez;
|
|||
|
|
|
|||
|
|
private float[] _tiltsensorcalcf = new float[18];
|
|||
|
|
public float[] TiltSensorCal_CF => _tiltsensorcalcf;
|
|||
|
|
|
|||
|
|
private short _channel_1_adc;
|
|||
|
|
public short Channel1ValueAdc => _channel_1_adc;
|
|||
|
|
|
|||
|
|
private short _channel_2_adc;
|
|||
|
|
public short Channel2ValueAdc => _channel_2_adc;
|
|||
|
|
|
|||
|
|
private short _channel_3_adc;
|
|||
|
|
public short Channel3ValueAdc => _channel_3_adc;
|
|||
|
|
|
|||
|
|
private ushort _numberoftilt;
|
|||
|
|
public ushort NumberOfTilt => _numberoftilt;
|
|||
|
|
|
|||
|
|
private byte[] _tiltaddress = new byte[8];
|
|||
|
|
public byte[] Tilt_Address => _tiltaddress;
|
|||
|
|
|
|||
|
|
public ushort RTCSerialNumber { get; private set; }
|
|||
|
|
public ushort RTCProductionDaysSince1970 { get; private set; }
|
|||
|
|
public ushort RTCBatteryInstallationDaysSince1970 { get; private set; }
|
|||
|
|
private void ParseData(TiltSensorMif cmd, int offset)
|
|||
|
|
{
|
|||
|
|
if (cmd == TiltSensorMif.MifVersion)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _mifversion);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.SerialNumber)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _serialnumber);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.HardwareConfiguration)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _hardwardconfig);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TemperatureCF)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _temperaturecf);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TemperatureOffset)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _temperatureoffset);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorCF)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _tiltsensorcfx);
|
|||
|
|
response.GetParameter(offset + 4, out _tiltsensorcfy);
|
|||
|
|
response.GetParameter(offset + 8, out _tiltsensorcfz);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorOffset)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _tiltsensoroffsetx);
|
|||
|
|
response.GetParameter(offset + 2, out _tiltsensoroffsety);
|
|||
|
|
response.GetParameter(offset + 4, out _tiltsensoroffsetz);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorRange)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _tiltsensorrangex);
|
|||
|
|
response.GetParameter(offset + 4, out _tiltsensorrangey);
|
|||
|
|
response.GetParameter(offset + 8, out _tiltsensorrangez);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorData)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset, out _channel_1_adc);
|
|||
|
|
response.GetParameter(offset + 2, out _channel_2_adc);
|
|||
|
|
response.GetParameter(offset + 4, out _channel_3_adc);
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorCal)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < 18; i++)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(offset + i * 4, out _tiltsensorcalcf[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (cmd == TiltSensorMif.TiltSenosrList)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(2, out _numberoftilt);
|
|||
|
|
|
|||
|
|
for (int i = 0; i < _numberoftilt; i++)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(4 + i, out _tiltaddress[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TiltSensorGet(ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[6];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TiltSensorGet(ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[6];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override CommandReceiveAction WholePackage()
|
|||
|
|
{
|
|||
|
|
if (response.Status == DFConstantsAndEnums.CommandStatus.StatusNoError)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _data_sub_cmd);
|
|||
|
|
|
|||
|
|
if (_data_sub_cmd == (byte)TiltSensorMif.TiltSensorMultipleMIF)
|
|||
|
|
{
|
|||
|
|
int nextcmd = 1;
|
|||
|
|
for (int i = 0; i < 9; i++)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(nextcmd + 0, out _data_sub_cmd);
|
|||
|
|
response.GetParameter(nextcmd + 1, out _data_type);
|
|||
|
|
response.GetParameter(nextcmd + 2, out _data_length);
|
|||
|
|
ParseData((TiltSensorMif)_data_sub_cmd, nextcmd + _data_cmd);
|
|||
|
|
|
|||
|
|
nextcmd = nextcmd + _data_cmd + _data_length;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (_data_sub_cmd == (byte)TiltSensorMif.TiltSensorEEPROM
|
|||
|
|
|| _data_sub_cmd == (byte)TiltSensorMif.RtcRam)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _data_sub_cmd);
|
|||
|
|
response.GetParameter(1, out _data_offset);
|
|||
|
|
response.GetParameter(3, out _data_length);
|
|||
|
|
_data = new byte[_data_length];
|
|||
|
|
|
|||
|
|
for (int i = 0; i < _data_length; i++)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(5 + i, out _data[i]);
|
|||
|
|
}
|
|||
|
|
if (_data_sub_cmd == (byte)TiltSensorMif.RtcRam)
|
|||
|
|
{
|
|||
|
|
ParseRTC();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (_data_sub_cmd == (byte)TiltSensorMif.RtcRam)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(0, out _data_sub_cmd);
|
|||
|
|
response.GetParameter(1, out _data_offset);
|
|||
|
|
response.GetParameter(3, out _data_length);
|
|||
|
|
_data = new byte[_data_length];
|
|||
|
|
|
|||
|
|
for (int i = 0; i < _data_length; i++)
|
|||
|
|
{
|
|||
|
|
response.GetParameter(5 + i, out _data[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
response.GetParameter(1, out _data_type);
|
|||
|
|
response.GetParameter(2, out _data_length);
|
|||
|
|
_data_offset = 4;
|
|||
|
|
ParseData((TiltSensorMif)_data_sub_cmd, _data_offset);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_channel_1_adc = 0;
|
|||
|
|
_channel_2_adc = 0;
|
|||
|
|
_channel_3_adc = 0;
|
|||
|
|
}
|
|||
|
|
return CommandReceiveAction.StopReceiving;
|
|||
|
|
}
|
|||
|
|
private void ParseRTC()
|
|||
|
|
{
|
|||
|
|
if (_data.Length >= 2)
|
|||
|
|
{
|
|||
|
|
RTCSerialNumber = BitConverter.ToUInt16(_data, 0);
|
|||
|
|
}
|
|||
|
|
if (_data.Length >= 4)
|
|||
|
|
{
|
|||
|
|
RTCProductionDaysSince1970 = BitConverter.ToUInt16(_data, 2);
|
|||
|
|
}
|
|||
|
|
if (_data.Length >= 6)
|
|||
|
|
{
|
|||
|
|
RTCBatteryInstallationDaysSince1970 = BitConverter.ToUInt16(_data, 4);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.ResponseToString(ref lines);
|
|||
|
|
switch (_sub_cmd)
|
|||
|
|
{
|
|||
|
|
case TiltSensorMif.RtcRam: RTCRamResponseToString(ref lines); break;
|
|||
|
|
default: DefaultResponseToString(ref lines); break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
private void RTCRamResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Tilt Get: Sub_cmd: {_sub_cmd}, Tilt ID: {_tilt_id}, Data Type: {_data_type}, Data length: {_data_length}, RTC SerialNumber: {RTCSerialNumber}, RTC Production_Days; {RTCProductionDaysSince1970}, RTC_Install_Days: {RTCBatteryInstallationDaysSince1970}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
private void DefaultResponseToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Tilt Get: Sub_cmd: {_sub_cmd} Tilt ID: {_tilt_id} Data Type: {_data_type} Data length: {_data_length}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class TiltSensorSet : QAandUtilityCommands
|
|||
|
|
{
|
|||
|
|
protected override Commands _Command => Commands.TiltSensorSet;
|
|||
|
|
private TiltSensorMif _sub_cmd = 0;
|
|||
|
|
private byte _tilt_id = 0;
|
|||
|
|
private byte _data_type = 0;
|
|||
|
|
private ushort _data_length = 0;
|
|||
|
|
|
|||
|
|
private const int CommandParameterLength = 20;
|
|||
|
|
private uint _mifversion;
|
|||
|
|
private string _serialnumber;
|
|||
|
|
private ushort _hardwareconfiguration;
|
|||
|
|
private float _temperaturecf; // correction factor for temperature
|
|||
|
|
private short _temperatureoffset; //offset temperature
|
|||
|
|
private float[] _tiltsensorCF = new float[3]; // correction factor for tilt sensors
|
|||
|
|
private short[] _tiltsensorOffset = new short[3]; //offset for tilt sensors
|
|||
|
|
private float[] _tiltsensorRange = new float[3]; //range for tilt sensors
|
|||
|
|
private float[] _tiltsensorCalCF = new float[18]; // tilt sensors 4*18 reserves bytes
|
|||
|
|
//private Int16 _reserved; //offset reserved
|
|||
|
|
private ushort _data_offset;
|
|||
|
|
//private UInt16 _data_lenght;
|
|||
|
|
private byte[] _data;
|
|||
|
|
|
|||
|
|
public ushort Data_Offset
|
|||
|
|
{
|
|||
|
|
get { return _data_offset; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_data_offset = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public byte[] Data
|
|||
|
|
{
|
|||
|
|
get { return _data; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_data = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public byte Tilt_id
|
|||
|
|
{
|
|||
|
|
get => _tilt_id;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tilt_id = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TiltSensorMif Sub_cmd
|
|||
|
|
{
|
|||
|
|
get => _sub_cmd;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_sub_cmd = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public byte DataType
|
|||
|
|
{
|
|||
|
|
get => _data_type;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_data_type = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public ushort DataLength
|
|||
|
|
{
|
|||
|
|
get => _data_length;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_data_length = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public uint MIFVersion
|
|||
|
|
{
|
|||
|
|
get => _mifversion;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_mifversion = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string SerialNumber
|
|||
|
|
{
|
|||
|
|
get => _serialnumber;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_serialnumber = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ushort HWConfig
|
|||
|
|
{
|
|||
|
|
get => _hardwareconfiguration;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_hardwareconfiguration = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public float TemperatureCF
|
|||
|
|
{
|
|||
|
|
get => _temperaturecf;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_temperaturecf = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public short TemperatureOffset
|
|||
|
|
{
|
|||
|
|
get => _temperatureoffset;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_temperatureoffset = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public float TilteSensorCFx
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorCF[0] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public float TilteSensorCFy
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorCF[1] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public float TilteSensorCFz
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorCF[2] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public short TilteSensorOffsetx
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorOffset[0] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public short TilteSensorOffsety
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorOffset[1] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public short TilteSensorOffsetz
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorOffset[2] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public float TilteSensorRangex
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorRange[0] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public float TilteSensorRangey
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorRange[1] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public float TilteSensorRangez
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorRange[2] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public float[] TiltSensorCalCF
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_tiltsensorCalCF = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void SetSingle(byte id, TiltSensorMif cmd, object value)
|
|||
|
|
{
|
|||
|
|
_tilt_id = id;
|
|||
|
|
command.SetParameter(0, _tilt_id);
|
|||
|
|
_sub_cmd = cmd;
|
|||
|
|
command.SetParameter(1, (byte)_sub_cmd);
|
|||
|
|
|
|||
|
|
if (cmd == TiltSensorMif.MifVersion)
|
|||
|
|
{
|
|||
|
|
_mifversion = (uint)value;
|
|||
|
|
command.SetParameter(5, _mifversion);
|
|||
|
|
_data_length = sizeof(uint);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.UInt32;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.SerialNumber)
|
|||
|
|
{
|
|||
|
|
_serialnumber = (string)value;
|
|||
|
|
command.SetParameter(5, _serialnumber);
|
|||
|
|
_data_length = (ushort)_serialnumber.Length;
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Ascii;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.HardwareConfiguration)
|
|||
|
|
{
|
|||
|
|
_hardwareconfiguration = (ushort)value;
|
|||
|
|
command.SetParameter(5, _hardwareconfiguration);
|
|||
|
|
_data_length = sizeof(ushort);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.UInt16;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TemperatureCF)
|
|||
|
|
{
|
|||
|
|
_temperaturecf = (float)value;
|
|||
|
|
command.SetParameter(5, _temperaturecf);
|
|||
|
|
_data_length = sizeof(float);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TemperatureOffset)
|
|||
|
|
{
|
|||
|
|
_temperatureoffset = (short)value;
|
|||
|
|
command.SetParameter(5, _temperatureoffset);
|
|||
|
|
_data_length = sizeof(short);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.UInt16;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorCF)
|
|||
|
|
{
|
|||
|
|
_tiltsensorCF = (float[])value;
|
|||
|
|
command.SetParameter(5, _tiltsensorCF[0]);
|
|||
|
|
command.SetParameter(9, _tiltsensorCF[1]);
|
|||
|
|
command.SetParameter(13, _tiltsensorCF[2]);
|
|||
|
|
_data_length = sizeof(float) * 3;
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32Star;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorOffset)
|
|||
|
|
{
|
|||
|
|
_tiltsensorOffset = (short[])value;
|
|||
|
|
command.SetParameter(5, _tiltsensorOffset[0]);
|
|||
|
|
command.SetParameter(7, _tiltsensorOffset[1]);
|
|||
|
|
command.SetParameter(9, _tiltsensorOffset[2]);
|
|||
|
|
_data_length = sizeof(ushort) * 3;
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Int16Star;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorRange)
|
|||
|
|
{
|
|||
|
|
_tiltsensorRange = (float[])value;
|
|||
|
|
command.SetParameter(5, _tiltsensorRange[0]);
|
|||
|
|
command.SetParameter(9, _tiltsensorRange[1]);
|
|||
|
|
command.SetParameter(13, _tiltsensorRange[2]);
|
|||
|
|
_data_length = sizeof(float) * 3;
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32Star;
|
|||
|
|
}
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorCal)
|
|||
|
|
{
|
|||
|
|
_tiltsensorCalCF = (float[])value;
|
|||
|
|
for (int i = 0; i < 18; i++)
|
|||
|
|
{
|
|||
|
|
command.SetParameter(5 + i * 4, _tiltsensorCalCF[i]);
|
|||
|
|
}
|
|||
|
|
_data_length = sizeof(float) * 18;
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.UInt32Star;
|
|||
|
|
}
|
|||
|
|
command.SetParameter(2, _data_type);
|
|||
|
|
command.SetParameter(3, _data_length);
|
|||
|
|
}
|
|||
|
|
public void SetEEPROM(byte id, ushort dataOffset, object value)
|
|||
|
|
{
|
|||
|
|
_sub_cmd = TiltSensorMif.TiltSensorEEPROM;
|
|||
|
|
_tilt_id = id;
|
|||
|
|
_data = (byte[])value;
|
|||
|
|
_data_length = (ushort)_data.Length;
|
|||
|
|
_data_offset = dataOffset;
|
|||
|
|
|
|||
|
|
command.Parameter = new byte[6 + _data_length];
|
|||
|
|
for (int i = 0; i < _data_length; i++)
|
|||
|
|
{
|
|||
|
|
command.SetParameter(6 + i, _data[i]);
|
|||
|
|
}
|
|||
|
|
command.SetParameter(0, _tilt_id);
|
|||
|
|
command.SetParameter(1, (byte)_sub_cmd);
|
|||
|
|
command.SetParameter(2, _data_offset);
|
|||
|
|
command.SetParameter(4, _data_length);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void SetMultiple(byte id, TiltSensorMif cmd)
|
|||
|
|
{
|
|||
|
|
if (cmd == TiltSensorMif.TiltSensorMultipleMIF)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[250];
|
|||
|
|
int offset = 0;
|
|||
|
|
command.SetParameter(0, _tilt_id);
|
|||
|
|
command.SetParameter(1, (byte)cmd);
|
|||
|
|
|
|||
|
|
offset = 2;
|
|||
|
|
_sub_cmd = TiltSensorMif.MifVersion;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.UInt32;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(uint);
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _mifversion);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.HardwareConfiguration;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.UInt16;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(ushort);
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _hardwareconfiguration);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.TemperatureCF;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(float);
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _temperaturecf);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.TemperatureOffset;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Int16;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(short);
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _temperatureoffset);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.TiltSensorCF;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32Star;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(float) * 3;
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _tiltsensorCF[0]);
|
|||
|
|
command.SetParameter(offset + 8, _tiltsensorCF[1]);
|
|||
|
|
command.SetParameter(offset + 12, _tiltsensorCF[2]);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.TiltSensorOffset;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Int16Star;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(short) * 3;
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _tiltsensorOffset[0]);
|
|||
|
|
command.SetParameter(offset + 6, _tiltsensorOffset[1]);
|
|||
|
|
command.SetParameter(offset + 8, _tiltsensorOffset[2]);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.TiltSensorRange;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32Star;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(float) * 3;
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _tiltsensorRange[0]);
|
|||
|
|
command.SetParameter(offset + 8, _tiltsensorRange[1]);
|
|||
|
|
command.SetParameter(offset + 12, _tiltsensorRange[2]);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.TiltSensorCal;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Float32Star;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = sizeof(float) * 18;
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
for (int i = 0; i < 18; i++)
|
|||
|
|
{
|
|||
|
|
command.SetParameter(offset + 4 + i * 4, _tiltsensorCalCF[i]);
|
|||
|
|
}
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
//_sub_cmd = TiltSensorMif.TiltSensorEEPROM;
|
|||
|
|
//command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
//_data_type = (byte)AttributeDataTypes.Int16;
|
|||
|
|
//command.SetParameter(offset + 1, _data_type);
|
|||
|
|
//_data_length = sizeof(short);
|
|||
|
|
//command.SetParameter(offset + 2, _data_length);
|
|||
|
|
//command.SetParameter(offset + 4, _reserved);
|
|||
|
|
//offset = offset + 4 + _data_length;
|
|||
|
|
|
|||
|
|
_sub_cmd = TiltSensorMif.SerialNumber;
|
|||
|
|
command.SetParameter(offset + 0, (byte)_sub_cmd);
|
|||
|
|
_data_type = (byte)AttributeTypes.AttributeDataTypes.Ascii;
|
|||
|
|
command.SetParameter(offset + 1, _data_type);
|
|||
|
|
_data_length = (ushort)_serialnumber.Length;
|
|||
|
|
command.SetParameter(offset + 2, _data_length);
|
|||
|
|
command.SetParameter(offset + 4, _serialnumber);
|
|||
|
|
offset = offset + 4 + _data_length;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public TiltSensorSet(ICommunication sock)
|
|||
|
|
: base(sock)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public TiltSensorSet(ICommunication sock, int TimeoutMillisec)
|
|||
|
|
: base(sock, TimeoutMillisec)
|
|||
|
|
{
|
|||
|
|
command.Parameter = new byte[CommandParameterLength];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void CommandToString(ref List<List<string>> lines)
|
|||
|
|
{
|
|||
|
|
base.CommandToString(ref lines);
|
|||
|
|
lines.Add(new List<string>()
|
|||
|
|
{
|
|||
|
|
$"Tilt Set: Sub_cmd: {_sub_cmd} Tilt ID: {_tilt_id} Data Type: {_data_type} Data length: {_data_length}"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|