Finished parsing, multi-threading, and file write.
Message and Object write string creation added but need to be checked.
This commit is contained in:
parent
602902ab6f
commit
b87eb06a11
19 changed files with 4892 additions and 48 deletions
258
CCO2Family.xml
Normal file
258
CCO2Family.xml
Normal file
|
@ -0,0 +1,258 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<FAMILY name="FmCO2">
|
||||
<!--====================================-->
|
||||
<!--Species Key Reference -->
|
||||
<!-- ====================================-->
|
||||
<SPECIES_KEY>
|
||||
<GENUS name="GnDATA">
|
||||
<SPECIES name="SpDATA" defaultvalue="0"/>
|
||||
</GENUS>
|
||||
<GENUS name="GnCONFIG">
|
||||
<SPECIES name="SpCALIBRATION" defaultvalue="0"/>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="1"/>
|
||||
</GENUS>
|
||||
<GENUS name="GnPARAMETER">
|
||||
<SPECIES name="SpMSG_ARGUMENTS" defaultvalue="0" />
|
||||
</GENUS>
|
||||
</SPECIES_KEY>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--====================================-->
|
||||
<DEFINITION class="CCO2DData" abrv="CCO2DDTA" version="205" family="FmCO2" genus="GnDATA" species="SpDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="Status" minversion="200" maxversion="CURRENT_VERSION" comment="Overall Status of the object"/>
|
||||
<MEMBER type="uint32" name="ExtStatus" minversion="200" maxversion="CURRENT_VERSION" comment="Bitwise value of the Extended Status of the object" format="BITMASK"/>
|
||||
<MEMBER type="uint16" name="Source" minversion="200" maxversion="CURRENT_VERSION" comment="Source of data. Sensor Specified."/>
|
||||
<MEMBER type="uint8" name="Mode" minversion="200" maxversion="CURRENT_VERSION" comment="Mode of operation"/>
|
||||
<MEMBER type="uint8" name="Method" minversion="200" maxversion="CURRENT_VERSION" comment="Method used"/>
|
||||
<MEMBER type="OBJECT" name="EtCO2" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="End Tidal CO2. In mmHg. 100 for overrange. In case of extended CO2 range configuration, 151 for overrange."/>
|
||||
<MEMBER type="OBJECT" name="FiCO2" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="Fraction of inspired CO2. In mmHg. 100 for overrange. In case of extended CO2 range configuration, 151 for overrange."/>
|
||||
<MEMBER type="OBJECT" name="RR" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="Respiration Rate per minute"/>
|
||||
<MEMBER type="OBJECT" name="IPI" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="Integrated pulmonary index. Valid range: 0-10"/>
|
||||
<MEMBER type="OBJECT" name="S_EtCO2" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Spontaneous End Tidal CO2. Valid range: 0-10"/>
|
||||
<MEMBER type="OBJECT" name="S_FiCO2" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Spontaneous Fraction of inspired CO2"/>
|
||||
<MEMBER type="OBJECT" name="ContCO2" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Continuous CO2. "/>
|
||||
<MEMBER type="OBJECT" name="S_Density_5" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Continuous CO2 Spontaneous breath density (%) over the last 5 minutes"/>
|
||||
<MEMBER type="OBJECT" name="S_Density_10" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Continuous CO2 Spontaneous breath density (%) over the last 10 minutes "/>
|
||||
<MEMBER type="OBJECT" name="S_Density_30" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Continuous CO2 Spontaneous breath density (%) over the last 30 minutes"/>
|
||||
<MEMBER type="OBJECT" name="ApneaIndex_Total" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Apnea index total"/>
|
||||
<MEMBER type="OBJECT" name="ApneaIndex_10_19" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Apnea index of 10-19 seconds"/>
|
||||
<MEMBER type="OBJECT" name="ApneaIndex_20_29" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Apnea index of 20-29 seconds"/>
|
||||
<MEMBER type="OBJECT" name="ApneaIndex_30" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Apnea index of greater than or equal to 30 seconds"/>
|
||||
<MEMBER type="OBJECT" name="DesatCount" class="CNumDStd" minversion="201" maxversion="CURRENT_VERSION" comment="Desaturation count"/>
|
||||
<MEMBER type="TIME" name="STime" minversion="205" maxversion="CURRENT_VERSION" comment="Time reading was taken. Host specified. Not Sensor."/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Status">
|
||||
<!-- ====== -->
|
||||
<!-- Status -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Status codes -->
|
||||
<ENUM name="DATA_NOT_AVAIL" defaultvalue="0"/>
|
||||
<ENUM name="DATA_COMPLETE"/>
|
||||
<ENUM name="DATA_FAILURE"/>
|
||||
<ENUM name="DATA_EXCEPTION"/>
|
||||
<ENUM name="DATA_PROCESSING"/>
|
||||
<!-- No Class Status codes -->
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ExtStatus">
|
||||
<!-- =============== -->
|
||||
<!-- Extended Status -->
|
||||
<!-- =============== -->
|
||||
<!--Data failures: Bitwise value-->
|
||||
<ENUM name="INITIALIZATION" defaultvalue="0" comment="Initialization"/>
|
||||
<ENUM name="SFM_REQUIRED" defaultvalue="1" comment="Self Maitenance(SFM)is required"/>
|
||||
<ENUM name="SFM_IN_PROGRESS" defaultvalue="2" comment="Self Maintenance is in progress"/>
|
||||
<ENUM name="PURGING_IN_PROGRESS" defaultvalue="3" comment="Purging in progress"/>
|
||||
<ENUM name="FILTER_LINE_NO_CONNECT" defaultvalue="4" comment="FilterLine not connected"/>
|
||||
<ENUM name="CHECK_CALIBRATION" defaultvalue="5" comment="Check calibration."/>
|
||||
<ENUM name="CHECK_FLOW" defaultvalue="6" comment="Check flow."/>
|
||||
<ENUM name="OCCLUSION_IN_GAS_LINE" defaultvalue="7" comment="Occlusion in the gas input line"/>
|
||||
<ENUM name="TEMPERATURE_OUT_OF_RANGE" defaultvalue="8" comment="Temperature out of range"/>
|
||||
<ENUM name="PUMP_OFF" defaultvalue="9" comment="Pump off"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Source">
|
||||
<!-- ====== -->
|
||||
<!-- Source -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Source codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="BREATH_DETECTED" comment="Breath detected"/>
|
||||
<ENUM name="INTERVAL" comment="Breath interval attained"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Method">
|
||||
<!-- ====== -->
|
||||
<!-- Method -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Method codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="MANUAL"/>
|
||||
<ENUM name="DEVICE"/>
|
||||
<ENUM name="REMOTE"/>
|
||||
<!-- Class Method codes begin at 10 -->
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Mode">
|
||||
<!-- ==== -->
|
||||
<!-- Mode -->
|
||||
<!-- ==== -->
|
||||
<!-- Generic Mode codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Mode codes begin at 10 -->
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATA" defaultvalue="1" comment="Default species."/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnPARAMETER-->
|
||||
<!--====================================-->
|
||||
<DEFINITION class="CCO2PMsgArg" abrv="CCO2PMSA" version="204" family="FmCO2" genus="GnPARAMETER" species="SpMSG_ARGUMENTS">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="IOParameterA" minversion="200" maxversion="CURRENT_VERSION" comment="Generic parameter used for configuration selector (CONFIG_ITEM) to retrieve a configuration module."/>
|
||||
<MEMBER type="uint16" name="IOParameterB" minversion="200" maxversion="CURRENT_VERSION" comment="Generic parameter to contain an enumerated value or numeric value based on configuration module in IOParameterA"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="BTPS">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="NO_BTPS" defaultvalue="1" comment="No BTPS"/>
|
||||
<ENUM name="BTPS" defaultvalue="2" comment="BTPS"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="PICK_MODE">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="BREATH_TO_BREATH" defaultvalue="1" comment="Breath to breath"/>
|
||||
<ENUM name="TEN_SECONDS" defaultvalue="2" comment="10 Seconds"/>
|
||||
<ENUM name="TWENTY_SECONDS" defaultvalue="3" comment="20 Seconds"/>
|
||||
<ENUM name="THIRTY_SECONDS" defaultvalue="4" comment="30 Seconds"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="PUMP_CONTROL">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="DISABLED" defaultvalue="1" comment="Pump Disabled"/>
|
||||
<ENUM name="ENABLED" defaultvalue="2" comment="Pump enabled"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="PATIENT_MODE">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="ADULT" defaultvalue="1" comment="Adult"/>
|
||||
<ENUM name="NEONATE" defaultvalue="2" comment="Neonate"/>
|
||||
<ENUM name="PEDIATRIC_1" defaultvalue="3" comment="Pediatric 1-3 years"/>
|
||||
<ENUM name="PEDIATRIC_2" defaultvalue="4" comment="Pediatric 3-6 years"/>
|
||||
<ENUM name="PEDIATRIC_3" defaultvalue="5" comment="Pediatric 6-12 years"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="CO2_RANGE">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="NINETY_NINE_MAX" defaultvalue="1" comment="0-99 mmHg"/>
|
||||
<ENUM name="ONE_HUNDRED_FIFTY_MAX" defaultvalue="2" comment="0-150 mmHg"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="MEASUREMENT_MODE">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="EtCO2" defaultvalue="1" comment="End Tidal CO2"/>
|
||||
<ENUM name="CONTCO2" defaultvalue="2" comment="Continuous CO2"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="CONFIG_ITEM">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None specified"/>
|
||||
<ENUM name="BTPS" defaultvalue="1" comment="Configuration for the BTPS setting. The BTPS enumeration is used in the IOParameterB member."/>
|
||||
<ENUM name="PICK_MODE" defaultvalue="2" comment="Configuration for the Pick Mode."/>
|
||||
<ENUM name="STANDBY" defaultvalue="7" comment="Configuration for the standby mode."/>
|
||||
<ENUM name="PATIENT_MODE" defaultvalue="8" comment="Configuration for the patient mode. The PATIENT_MODE enumeration is used in the IOParameterB member."/>
|
||||
<ENUM name="CO2_RANGE" defaultvalue="9" comment="Configuration for the CO2 range. The CO2_RANGE enumeration is used in the IOParameterB member."/>
|
||||
<ENUM name="RESET_PARAMETER" defaultvalue="10" comment="Configuration for the Reseting AI and ODI, ContCO2 Breath Density. IOParameterB member contains a bitwise value (xxxx xxxd - reset AI and ODI, xxxx xdxx reset ContCO2 Breath Density)."/>
|
||||
<ENUM name="MEASUREMENT_MODE" defaultvalue="11" comment="Configuration for the CO2 measurement mode. The MEASUREMENT_MODE enumeration is used in the IOParameterB member."/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpMSG_ARGUMENTS" defaultvalue="1" comment="Default species. Generic Message Argument"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--====================================-->
|
||||
<DEFINITION class="CCO2CCal" abrv="CCO2CCAL" version="201" family="FmCO2" genus="GnCONFIG" species="SpCALIBRATION">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="Status" minversion="200" maxversion="CURRENT_VERSION" comment="Bitwise value to indicate the calibration status." format="BITMASK"/>
|
||||
<MEMBER type="uint8" name="Method" minversion="200" maxversion="CURRENT_VERSION" comment="Enumerated value to indicate the calibration method"/>
|
||||
<MEMBER type="uint8" name="GasConcentration" minversion="200" maxversion="CURRENT_VERSION" comment="In 0.1% units (This value should be set to 50 decimal (=32h) for 5 Vol% gas. Valid range is 40 to 60"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Method">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="None Specified"/>
|
||||
<ENUM name="REGULAR_CALIBRATION" defaultvalue="1" comment="Regular Calibration"/>
|
||||
<ENUM name="SPECIAL_FACTORY_CALIBRATION" defaultvalue="2" comment="Special Factory Calibration"/>
|
||||
<ENUM name="CALIBRATION_CHECK" defaultvalue="3" comment="Calibration check"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Status">
|
||||
<ENUM name="IN_PROGRESS" defaultvalue="0" comment="Calibration in progress"/>
|
||||
<ENUM name="NOT_READY" defaultvalue="1" comment="Module not ready for Calibration"/>
|
||||
<ENUM name="CALCULATING" defaultvalue="2" comment="Calculating - calibration gas can be removed"/>
|
||||
<ENUM name="COMPLETE_ERROR" defaultvalue="3" comment="Calibration complete with error"/>
|
||||
<ENUM name="COMPLETE_SUCCESS" defaultvalue="4" comment="Calibration complete successfully"/>
|
||||
<ENUM name="USER_ABORT" defaultvalue="5" comment="Calibration aborted by user"/>
|
||||
|
||||
<!--Errors-->
|
||||
<ENUM name="MEASUREMENT_ERROR" defaultvalue="6" comment="Measurement error (Purging, FilterLine) - Check wave message"/>
|
||||
<ENUM name="AZ_FAIL" defaultvalue="7" comment="AZ Fail"/>
|
||||
<ENUM name="GAS_CONCENTRATION_CHECK" defaultvalue="8" comment="No gas or wrong gas concentration"/>
|
||||
<ENUM name="GAS_FLOW_UNSTABLE" defaultvalue="9" comment="No stable gas flow"/>
|
||||
<ENUM name="CALIBRATION_FAILURE" defaultvalue="10" comment="Calibration Failure"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpCALIBRATION" defaultvalue="11" comment="Default Species."/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CCO2CStd" abrv="CCO2CSTD" version="100" family="FmCO2" genus="GnCONFIG" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="DisplayUnits" minversion="100" maxversion="CURRENT_VERSION" comment="Display units for CO2 (EtCO2 and FiCO2)"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="DisplayUnits">
|
||||
<ENUM name="UNITS_MMHG" comment="units in mmHG" defaultvalue="0"/>
|
||||
<ENUM name="UNITS_KPA" comment="units in kpa"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<MESSAGES>
|
||||
<!--Adresses section 14.5.4 and 14.6.3-->
|
||||
<MSG type="Request" name="GET_BREATH" comment="A request to get the breath measurement. No object required in payload"/>
|
||||
<MSG type="Response" name="PUT_BREATH" comment="A response to the GET_BREATH message. Returns the breath measurement. Requires a CCO2DData object."/>
|
||||
|
||||
<MSG type="Stream" name="STREAM_CO2" comment="A periodic message that contains the CO2 measurment. Requires a CCO2DData object."/>
|
||||
|
||||
<MSG type="Command" name="RESTART_BREATH_ALG" comment="Sent when the host determines that there is a 'no breath detected' condition in order to ensure correct EtCO2, FiCO2, and RR calculations upon resumption of breathing."/>
|
||||
|
||||
<MSG type="Request" name="GET_AMBIENT_PRESSURE" comment="A request to get the ambient pressure. No object required in the payload."/>
|
||||
<MSG type="Response" name="PUT_AMBIENT_PRESSURE" comment="A response to the GET_AMBIENT_PRESSURE message. Requires a CCO2PMsgArg object."/>
|
||||
|
||||
<MSG type="Request" name="GET_MODULE_CONFIG" comment="A request to get a module configuration. Requires a CCO2PMsgArg object with IOParameterA set to CONFIG_ITEM to return"/>
|
||||
<MSG type="Response" name="PUT_MODULE_CONFIG" comment="A response to the GET_MODULE_CONFIG message. Requires a CCO2PMsgArg object with IOParameterA set to the CONFIG_ITEM and IOParameterB set to the CONFIG_ITEM value."/>
|
||||
|
||||
<MSG type="Command" name="START_CALIBRATION" comment="A message to start the calibration. Requires a CCO2Cal object."/>
|
||||
<MSG type="Command" name="STOP_CALIBRATION" comment="A message to stop the calibration. No object required in payload."/>
|
||||
|
||||
<MSG type="Request" name="GET_CALIBRATION" comment="A message to request the calibration status. No object required in payload."/>
|
||||
<MSG type="Response" name="PUT_CALIBRATION" comment="A response to the PUT_CALIBRATION message. Requires a CCO2CCal"/>
|
||||
|
||||
<MSG type="Request" name="GET_SERVICE_TIME" comment="A message to request the remaining hours for calibration. No object required in payload."/>
|
||||
<MSG type="Response" name="PUT_SERVICE_TIME" comment="A response to the GET_SERVICE_TIME message. Requires a CCO2PMsgArg object. IOParameterA contains the service time."/>
|
||||
|
||||
|
||||
<MSG type="Command" name="FORCE_SFM" comment="A command to force SFM (self maintenance). No object required in payload"/>
|
||||
<MSG type="Command" name="PUMP_CONTROL" comment="A command to enable or disable the pump. Requires a CCO2PMsgArg object"/>
|
||||
<MSG type="Command" name="START_SFM" comment="A command to start SFM (self maintenance). This is only sent when a request to begin SFM. No object required in payload"/>
|
||||
|
||||
<MSG type="Command" name="SET_MODULE_CONFIG" comment="Set the module configuration. Requires a CCO2PMsgArg object with IOParameterA set to the CONFIG_ITEM and IOParameterB set to the CONFIG_ITEM value."/>
|
||||
|
||||
<MSG type="Request" name="GET_CAL_TIME" comment="A message to request the remaining hours for calibration. No object required in payload."/>
|
||||
<MSG type="Response" name="PUT_CAL_TIME" comment="A response to the GET_CAL_TIME message. Requires a CCO2PMsgArg object. IOParameterA contains the remaining hours to calibration."/>
|
||||
|
||||
<MSG type="Command" name="START_ACQUIRE" comment="Command to start sending CO2 periodic readings."/>
|
||||
<MSG type="Command" name="STOP_ACQUIRE" comment="Command to stop sending CO2 periodic readings."/>
|
||||
|
||||
<MSG type="Request" name="GET_CONFIG" comment="Requests the CO2 confguration."/>
|
||||
<MSG type="Response" name="PUT_CONFIG" comment="Returns the CO2 confguration. Requires a CCO2CStd object."/>
|
||||
<MSG type="Command" name="WRITE_CONFIG" comment="Command to write the CO2 configuration. Requires a CCO2CStd object."/>
|
||||
|
||||
</MESSAGES>
|
||||
</FAMILY>
|
583
CECGFamily.xml
Normal file
583
CECGFamily.xml
Normal file
|
@ -0,0 +1,583 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<FAMILY name="FmECG">
|
||||
<!--====================================-->
|
||||
<!--Species Key Reference -->
|
||||
<!-- ====================================-->
|
||||
<SPECIES_KEY>
|
||||
<GENUS name="GnDATA">
|
||||
<SPECIES name="SpPACER" defaultvalue="0"/>
|
||||
<SPECIES name="SpGLOBALMEASURE" defaultvalue="1"/>
|
||||
<SPECIES name="SpLEADMEASURE" defaultvalue="2"/>
|
||||
<SPECIES name="SpSTATUS" defaultvalue="3"/>
|
||||
</GENUS>
|
||||
<GENUS name="GnCONFIG">
|
||||
<SPECIES name="SpRHYTHMREPORT" defaultvalue="32"/>
|
||||
<SPECIES name="SpAUTOREPORT" defaultvalue="33"/>
|
||||
<SPECIES name="SpMISCELLANEOUS" defaultvalue="34"/>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="35"/>
|
||||
<SPECIES name="SpSETTINGS" defaultvalue="36"/>
|
||||
</GENUS>
|
||||
<GENUS name="GnPARAMETER">
|
||||
<SPECIES name="SpSELECTOR" defaultvalue="0"/>
|
||||
</GENUS>
|
||||
</SPECIES_KEY>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGCStd" abrv="CECGCSTD" version="100" family="FmECG" genus="GnDATA" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint8" name="PatientMode" minversion="100" maxversion="CURRENT_VERSION" comment="Patient Age Adult,Ped,Neonate" />
|
||||
<MEMBER type="boolean" name="TraceRestore" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="PatientMode">
|
||||
<ENUM name="ADULT" defaultvalue="0" comment="Patient mode is Adult" />
|
||||
<ENUM name="PED" comment="Patient mode is Ped" />
|
||||
<ENUM name="NEONATE" comment="Patient mode is neonate" />
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="35"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGDPacer" abrv="CECGDPAC" version="100" family="FmECG" genus="GnDATA" species="SpPACER">
|
||||
<MEMBERS>
|
||||
<MEMBER type="OBJECT" class="CWaveSampleCRPDetect" name="CWaveSamplePacer" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="OBJECT" class="CWaveDStd" name="CWaveDPacer" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="OBJECT" class="CWaveCStd" name="CWaveCPacer" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpPACER" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGDGlobalMeas" abrv="CECGDGMS" version="100" family="FmECG" genus="GnDATA" species="SpGLOBALMEASURE">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="PDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="PQDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QRSDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QTDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QTcDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QTdDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="PAxis" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QRSAxis" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="TAxis" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="HeartRate" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="POnset" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="POffset" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QRSOnset" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="QRSOffset" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint32" name="TOffset" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpGLOBALMEASURE" defaultvalue="1"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGDLeadMeas" abrv="CECGDLMS" version="200" family="FmECG" genus="GnDATA" species="SpLEADMEASURE">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="LeadIdentifier" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="PposAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="PnegAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="QDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="QAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="RDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="RAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="SDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="SAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="RAccDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="RAccAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="SAccDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="SAccAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="IDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="ST0" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="ST20" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="ST40" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="ST60" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="ST80" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="TposAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="TnegAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="R2AccDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="R2AccAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="S2AccDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="S2AccAmp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="KDuration" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="int32" name="EndT" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="widechar" name="QrsType" size="UNBOUNDED" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="LeadIdentifier">
|
||||
<ENUM name="I" defaultvalue="0"/>
|
||||
<ENUM name="II"/>
|
||||
<ENUM name="III"/>
|
||||
<ENUM name="AVR"/>
|
||||
<ENUM name="AVL"/>
|
||||
<ENUM name="AVF"/>
|
||||
<ENUM name="V1"/>
|
||||
<ENUM name="V2"/>
|
||||
<ENUM name="V3"/>
|
||||
<ENUM name="V4"/>
|
||||
<ENUM name="V5"/>
|
||||
<ENUM name="V6"/>
|
||||
<ENUM name="V7"/>
|
||||
<ENUM name="V3R"/>
|
||||
<ENUM name="V5R"/>
|
||||
<ENUM name="X"/>
|
||||
<ENUM name="Y"/>
|
||||
<ENUM name="Z"/>
|
||||
<ENUM name="V4R"/>
|
||||
<ENUM name="V6R"/>
|
||||
<ENUM name="V8"/>
|
||||
<ENUM name="V9"/>
|
||||
<ENUM name="NONE"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpLEADMEASURE" defaultvalue="2"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGCRhythmReport" abrv="CECGCRPT" version="102" family="FmECG" genus="GnCONFIG" species="SpRHYTHMREPORT">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="LeadArrangement" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="DefSpeedSetting" minversion="101" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint8" name="StdLeadOrder" size="12" minversion="102" maxversion="CURRENT_VERSION" comment="Standard Lead Order: Each value within the array holds an enum from RhythmLd"/>
|
||||
<MEMBER type="uint8" name="AugLeadOrder" size="12" minversion="102" maxversion="CURRENT_VERSION" comment="Augmented Lead Order: Each value within the array holds an enum from RhythmLd"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="LeadArrangement">
|
||||
<ENUM name="3LEAD"/>
|
||||
<ENUM name="6LEAD"/>
|
||||
<ENUM name="12LEAD"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="DefSpeedSetting">
|
||||
<ENUM name="10mm_s"/>
|
||||
<ENUM name="25mm_s"/>
|
||||
<ENUM name="50mm_s"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="RhythLd">
|
||||
<ENUM name="I"/>
|
||||
<ENUM name="II"/>
|
||||
<ENUM name="III"/>
|
||||
<ENUM name="AVR"/>
|
||||
<ENUM name="AVL"/>
|
||||
<ENUM name="AVF"/>
|
||||
<ENUM name="V1"/>
|
||||
<ENUM name="V2"/>
|
||||
<ENUM name="V3"/>
|
||||
<ENUM name="V4"/>
|
||||
<ENUM name="V5"/>
|
||||
<ENUM name="V6"/>
|
||||
<ENUM name="OFF"/>
|
||||
<ENUM name="V7"/>
|
||||
<ENUM name="V3R"/>
|
||||
<ENUM name="V5R"/>
|
||||
<ENUM name="X"/>
|
||||
<ENUM name="Y"/>
|
||||
<ENUM name="Z"/>
|
||||
<ENUM name="V4R"/>
|
||||
<ENUM name="V6R"/>
|
||||
<ENUM name="V8"/>
|
||||
<ENUM name="V9"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpRHYTHMREPORT" defaultvalue="32"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGCAutoReport" abrv="CECGCATR" version="205" family="FmECG" genus="GnCONFIG" species="SpAUTOREPORT">
|
||||
<MEMBERS>
|
||||
<MEMBER type="boolean" name="ExtMeasurements" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Interp" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="CopiesWithInt" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="UnconfReport" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="AbnormalEcg" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="FName" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="SLName" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="MI" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Wt" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Ht" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Gender" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Race" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Med" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="ClinicalHist" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="BP" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Comments" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="CustDef1" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="CustDef2" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="ReasonStatementsEnabled" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="AgeFormat" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="LeadArrangement" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="RhythLd1" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="RhythLd2" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="RhythLd3" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="AvgCycle" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="Copies" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="widechar" name="CustDef1Lbl" size="UNBOUNDED" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="widechar" name="CustDef2Lbl" size="UNBOUNDED" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<!--Added in version 205-->
|
||||
<MEMBER type="boolean" name="Physician" maxversion="CURRENT_VERSION" minversion="205" comment="Enable/Disable PhysicianID field."/>
|
||||
<MEMBER type="boolean" name="Technician" maxversion="CURRENT_VERSION" minversion="205" comment="Enable/Disable TechnicianID field."/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="AgeFormat">
|
||||
<ENUM name="DOB"/>
|
||||
<ENUM name="AGE"/>
|
||||
<ENUM name="OFF"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="LeadArrangement">
|
||||
<ENUM name="3X4" comment="25mm, 2.5 seconds of data"/>
|
||||
<ENUM name="3X4_1R" comment="25mm, 2.5 seconds of data, 1 rhythm lead"/>
|
||||
<ENUM name="3X4_3R" comment="25mm, 2.5 seconds of data, 3 rhythm lead"/>
|
||||
<ENUM name="6X2" comment="25mm, 5 seconds of data"/>
|
||||
<ENUM name="12X1" comment="25mm, 10 seconds of data"/>
|
||||
<ENUM name="6X2_50mm" comment="25mm, 10 seconds of data"/>
|
||||
<ENUM name="6X2_ext" comment="25mm, 10 seconds of data"/>
|
||||
<!-- Added in version 101 -->
|
||||
<ENUM name="2X6_1R" comment="25mm, 1 rhythm lead"/>
|
||||
<ENUM name="NOPRINT"/>
|
||||
<!-- Added in version 102 -->
|
||||
<ENUM name="6X2_1R" comment="25mm, 5 seconds of data, 1 rhythm lead"/>
|
||||
<!--Added in version 202-->
|
||||
<ENUM name="2X6" comment="25mm"/>
|
||||
<!--Added in version 203-->
|
||||
<ENUM name="3x4_25mm_5sec" comment="25mm, 5 seconds of data"/>
|
||||
<ENUM name="3x4_50mm" comment="50mm, 2.5 seconds of data"/>
|
||||
<ENUM name="3x4_50mm_5sec" comment="50mm, 5 seconds of data"/>
|
||||
<!--Added in version 204-->
|
||||
<ENUM name="6x2_25mm" comment="25mm, 2.5 seconds of data"/>
|
||||
<ENUM name="6x2_50mm_5sec" comment="50mm, 5 seconds of data"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="RhythLd1">
|
||||
<ENUM name="I"/>
|
||||
<ENUM name="II"/>
|
||||
<ENUM name="III"/>
|
||||
<ENUM name="AVR"/>
|
||||
<ENUM name="AVL"/>
|
||||
<ENUM name="AVF"/>
|
||||
<ENUM name="V1"/>
|
||||
<ENUM name="V2"/>
|
||||
<ENUM name="V3"/>
|
||||
<ENUM name="V4"/>
|
||||
<ENUM name="V5"/>
|
||||
<ENUM name="V6"/>
|
||||
<ENUM name="OFF"/>
|
||||
<!-- Added in version 101 -->
|
||||
<ENUM name="V7"/>
|
||||
<ENUM name="V3R"/>
|
||||
<ENUM name="V5R"/>
|
||||
<ENUM name="X"/>
|
||||
<ENUM name="Y"/>
|
||||
<ENUM name="Z"/>
|
||||
<!-- Added in version 200 -->
|
||||
<ENUM name="V4R"/>
|
||||
<ENUM name="V6R"/>
|
||||
<ENUM name="V8"/>
|
||||
<ENUM name="V9"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="RhythLd2">
|
||||
<ENUM name="I"/>
|
||||
<ENUM name="II"/>
|
||||
<ENUM name="III"/>
|
||||
<ENUM name="AVR"/>
|
||||
<ENUM name="AVL"/>
|
||||
<ENUM name="AVF"/>
|
||||
<ENUM name="V1"/>
|
||||
<ENUM name="V2"/>
|
||||
<ENUM name="V3"/>
|
||||
<ENUM name="V4"/>
|
||||
<ENUM name="V5"/>
|
||||
<ENUM name="V6"/>
|
||||
<ENUM name="OFF"/>
|
||||
<!-- Added in version 101 -->
|
||||
<ENUM name="V7"/>
|
||||
<ENUM name="V3R"/>
|
||||
<ENUM name="V5R"/>
|
||||
<ENUM name="X"/>
|
||||
<ENUM name="Y"/>
|
||||
<ENUM name="Z"/>
|
||||
<!-- Added in version 103 -->
|
||||
<ENUM name="V4R"/>
|
||||
<ENUM name="V6R"/>
|
||||
<ENUM name="V8"/>
|
||||
<ENUM name="V9"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="RhythLd3">
|
||||
<ENUM name="I"/>
|
||||
<ENUM name="II"/>
|
||||
<ENUM name="III"/>
|
||||
<ENUM name="AVR"/>
|
||||
<ENUM name="AVL"/>
|
||||
<ENUM name="AVF"/>
|
||||
<ENUM name="V1"/>
|
||||
<ENUM name="V2"/>
|
||||
<ENUM name="V3"/>
|
||||
<ENUM name="V4"/>
|
||||
<ENUM name="V5"/>
|
||||
<ENUM name="V6"/>
|
||||
<ENUM name="OFF"/>
|
||||
<!-- Added in version 101 -->
|
||||
<ENUM name="V7"/>
|
||||
<ENUM name="V3R"/>
|
||||
<ENUM name="V5R"/>
|
||||
<ENUM name="X"/>
|
||||
<ENUM name="Y"/>
|
||||
<ENUM name="Z"/>
|
||||
<!-- Added in version 103 -->
|
||||
<ENUM name="V4R"/>
|
||||
<ENUM name="V6R"/>
|
||||
<ENUM name="V8"/>
|
||||
<ENUM name="V9"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="AvgCycle">
|
||||
<ENUM name="3x4_3R"/>
|
||||
<ENUM name="6x2_6R"/>
|
||||
<ENUM name="NOPRINT"/>
|
||||
<!-- Added in version 201 -->
|
||||
<ENUM name="3x4_2R_25mm"/>
|
||||
<ENUM name="3x4_2R"/>
|
||||
<ENUM name="3x4_3R_25mm"/>
|
||||
<ENUM name="2x6_1R_25mm"/>
|
||||
<ENUM name="2x6_1R"/>
|
||||
<ENUM name="6x2_2R"/>
|
||||
<!-- Added in version 204 -->
|
||||
<ENUM name="6x2_1R_25mm"/>
|
||||
<ENUM name="6x2_1R"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpAUTOREPORT" defaultvalue="33"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGCMiscellaneous" abrv="CECGCMSC" version="203" family="FmECG" genus="GnCONFIG" species="SpMISCELLANEOUS">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="LeadConfig" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="Mains" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="AutoExport" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="ElectrodeLbl" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="LeadTiming" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="DefGainSetting" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="DefMuscleFilter" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="DefBaselineFilter" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="BaselineCenter" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="Autosave" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="AutoReport2" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="PrintArtifactReport" minversion="101" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="ElectrodePlacement" minversion="102" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="QTcMethod" minversion="103" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="boolean" name="SaveReminder" minversion="105" maxversion="CURRENT_VERSION" comment="Only applies if AutoSave is False. True indicates that user will be prompted to save the ECG test. False indicates that the user will not be prompted" />
|
||||
<MEMBER type="boolean" name="DisableMains" minversion="106" maxversion="CURRENT_VERSION" comment="True indicates Mains can be set to OFF. False indicates that Mains can not be set to OFF." />
|
||||
<MEMBER type="boolean" name="ECGAutoPrint" minversion="107" maxversion="CURRENT_VERSION" comment="True indicates print report for auto ECG. False indicates do not print report for auto ECG." />
|
||||
<MEMBER type="boolean" name="ECGSetPatientDemographic" minversion="108" maxversion="CURRENT_VERSION" comment="True indicates user can assign the patient demographic, post ECG." />
|
||||
<MEMBER type="widechar" name="RemoteFolderPath" size="UNBOUNDED" minversion="200" maxversion="CURRENT_VERSION" comment="This is the remote folder path, its format is '\\Machine Name\[Folder Name]'"/>
|
||||
<MEMBER type="uint16" name="QRSTone" minversion="200" maxversion="CURRENT_VERSION" comment="This is the tone configuration for the QRS beep"/>
|
||||
<MEMBER type="uint16" name="PrintLabel" minversion="200" maxversion="CURRENT_VERSION" comment="This is the print label setting. Enumerations are none, PR, and PQ"/>
|
||||
<MEMBER type="uint16" name="PacerLead" minversion="202" maxversion="CURRENT_VERSION" comment="Selected lead to use for pacer detection"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="LeadConfig">
|
||||
<ENUM name="STANDARD"/>
|
||||
<ENUM name="CABRERA"/>
|
||||
<ENUM name="NEHB"/>
|
||||
<ENUM name="FRANK"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ElectrodeLbl">
|
||||
<ENUM name="AHA"/>
|
||||
<ENUM name="IEC"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="LeadTiming">
|
||||
<ENUM name="SIMOULTANEOUS"/>
|
||||
<ENUM name="SEQUENTIAL"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="DefGainSetting">
|
||||
<ENUM name="5mm_mv"/>
|
||||
<ENUM name="10mm_mv"/>
|
||||
<ENUM name="20mm_mv"/>
|
||||
<ENUM name="AUTO"/>
|
||||
<ENUM name="2mm5_mv" comment="2.5mm per mv"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Mains">
|
||||
<ENUM name="OFF"/>
|
||||
<ENUM name="50HZ"/>
|
||||
<ENUM name="60HZ"/>
|
||||
<ENUM name="AUTO"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="AutoExport">
|
||||
<ENUM name="OFF"/>
|
||||
<ENUM name="MEDIACARD"/>
|
||||
<ENUM name="FAA"/>
|
||||
<ENUM name="FAX"/>
|
||||
<ENUM name="WORKSTATION"/>
|
||||
<!-- Added in version 203 -->
|
||||
<ENUM name="REMOTE"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ElectrodePlacement">
|
||||
<ENUM name="STANDARD"/>
|
||||
<ENUM name="ALTERNATE"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="QTcMethod">
|
||||
<ENUM name="BAZETT" defaultvalue="0"/>
|
||||
<ENUM name="HODGES" defaultvalue="1"/>
|
||||
<ENUM name="FRIDERICIA" defaultvalue="2"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="QRSTone">
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="FREQ_1KHZ" defaultvalue="1"/>
|
||||
<ENUM name="FREQ_2KHZ" defaultvalue="2"/>
|
||||
<ENUM name="FREQ_2K67HZ" defaultvalue="3"/>
|
||||
<ENUM name="FREQ_3K2HZ" defaultvalue="4"/>
|
||||
<ENUM name="FREQ_4KHZ" defaultvalue="5"/>
|
||||
<ENUM name="FREQ_5K3HZ" defaultvalue="6"/>
|
||||
<ENUM name="FREQ_6K4HZ" defaultvalue="7"/>
|
||||
<ENUM name="FREQ_8KHZ" defaultvalue="8"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="PrintLabel">
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="PR" defaultvalue="1"/>
|
||||
<ENUM name="PQ" defaultvalue="2"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="PacerLead">
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="I" defaultvalue="1"/>
|
||||
<ENUM name="II" defaultvalue="2" comment="Default"/>
|
||||
<ENUM name="V1" defaultvalue="3"/>
|
||||
<ENUM name="V2" defaultvalue="4"/>
|
||||
<ENUM name="V3" defaultvalue="5"/>
|
||||
<ENUM name="V4" defaultvalue="6"/>
|
||||
<ENUM name="V5" defaultvalue="7"/>
|
||||
<ENUM name="V6" defaultvalue="8"/>
|
||||
<ENUM name="V7" defaultvalue="9"/>
|
||||
<ENUM name="V8" defaultvalue="10"/>
|
||||
<ENUM name="V9" defaultvalue="11"/>
|
||||
<ENUM name="V3R" defaultvalue="12"/>
|
||||
<ENUM name="V4R" defaultvalue="13"/>
|
||||
<ENUM name="V5R" defaultvalue="14"/>
|
||||
<ENUM name="V6R" defaultvalue="15"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpMISCELLANEOUS" defaultvalue="34"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnPARAMETER-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CECGPSelector" abrv="CECGPSEL" version="100" family="FmECG" genus="GnPARAMETER" species="SpSELECTOR">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="SpeciesSelector" minversion="100" maxversion="CURRENT_VERSION" comment="Species ID of the record."/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSELECTOR" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--====================================-->
|
||||
<DEFINITION class="CECGCSettings" abrv="CECGCSTG" version="102" family="FmECG" genus="GnCONFIG" species="SpSETTINGS">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="ActiveLeads" minversion="100" maxversion="CURRENT_VERSION" format="BITMASK" comment="Bitmask, set to 1 if active lead"/>
|
||||
<MEMBER type="uint8" name="MainsFilter" minversion="100" maxversion="CURRENT_VERSION" comment="Filtering done by module"/>
|
||||
<MEMBER type="boolean" name="PacerEnabled" minversion="100" maxversion="CURRENT_VERSION" comment="Determines whether or not pacer data will be sent by module"/>
|
||||
<MEMBER type="uint8" name="LeadMode" minversion="101" maxversion="CURRENT_VERSION" comment="Identifies the lead configuration"/>
|
||||
<MEMBER type="uint8" name="VTachThreshold" minversion="101" maxversion="CURRENT_VERSION" comment="Beats per minute threshold for ventricular tachycardia alarm to be set" />
|
||||
<MEMBER type="boolean" name="ImpedanceRespiration" minversion="102" maxversion="CURRENT_VERSION" comment="Impedance respiration enabled or disabled." />
|
||||
<MEMBER type="uint16" name="AsystoleThreshold" minversion="102" maxversion="CURRENT_VERSION" comment="Threshold in milliseconds before the asystole alarm can be set." />
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="MainsFilter">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="OFF" defaultvalue="1" comment="Mains filter is off" />
|
||||
<ENUM name="50HZ" defaultvalue="2" comment="Mains filter set to 50Hz" />
|
||||
<ENUM name="60HZ" defaultvalue="3" comment="Mains filter set to 60Hz" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="LeadMode">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="UNKNOWN" defaultvalue="1" />
|
||||
<ENUM name="3_LEAD" defaultvalue="2" comment="The device is in 3 lead configuration" />
|
||||
<ENUM name="5_LEAD" defaultvalue="3" comment="The device is in 5 lead configuration" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ActiveLeads">
|
||||
<ENUM name="ECG_I" defaultvalue="0"/>
|
||||
<ENUM name="ECG_II" defaultvalue="1"/>
|
||||
<ENUM name="ECG_III" defaultvalue="2"/>
|
||||
<ENUM name="ECG_aVR" defaultvalue="3"/>
|
||||
<ENUM name="ECG_aVL" defaultvalue="4"/>
|
||||
<ENUM name="ECG_aVF" defaultvalue="5"/>
|
||||
<ENUM name="ECG_V" defaultvalue="6"/>
|
||||
<ENUM name="ECG_V1" defaultvalue="7"/>
|
||||
<ENUM name="ECG_V2" defaultvalue="8"/>
|
||||
<ENUM name="ECG_V3" defaultvalue="9"/>
|
||||
<ENUM name="ECG_V4" defaultvalue="10"/>
|
||||
<ENUM name="ECG_V5" defaultvalue="11"/>
|
||||
<ENUM name="ECG_V6" defaultvalue="12"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSETTINGS" defaultvalue="36"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--====================================-->
|
||||
<DEFINITION class="CECGDStatus" abrv="CECGDSTS" version="102" family="FmECG" genus="GnDATA" species="SpSTATUS">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="ElectrodeOffStatus" minversion="100" maxversion="CURRENT_VERSION" format="BITMASK" comment="Bitmask, set to 1 if Electrode is OFF. Cleared to 0 if Electrode is properly connected" />
|
||||
<MEMBER type="byte" name="ArrhythmiaStatus" size="UNBOUNDED" minversion="100" maxversion="CURRENT_VERSION" comment="Byte array of active arrhythmias. The arrhythmias are defined by the IDS"/>
|
||||
<MEMBER type="uint32" name="ActiveLeads" minversion="100" maxversion="CURRENT_VERSION" format="BITMASK" comment="Bitmask, set to 1 if active lead"/>
|
||||
<MEMBER type="OBJECT" name="Container" class="ANY_CLASS" size="UNBOUNDED" minversion="100" maxversion="CURRENT_VERSION" comment="Contains an array of objects"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="ElectrodeOffStatus">
|
||||
<ENUM name="ELECTRODE_RL" defaultvalue="0" comment="ECG Electrode RL" />
|
||||
<ENUM name="ELECTRODE_LL" defaultvalue="1" comment="ECG Electrode LL" />
|
||||
<ENUM name="ELECTRODE_RA" defaultvalue="2" comment="ECG Electrode RA" />
|
||||
<ENUM name="ELECTRODE_LA" defaultvalue="3" comment="ECG Electrode LA" />
|
||||
<ENUM name="ELECTRODE_V" defaultvalue="4" comment="ECG Electrode V. Used for generic placement of V electrode." />
|
||||
<ENUM name="ELECTRODE_V1" defaultvalue="5" comment="ECG Electrode V1" />
|
||||
<ENUM name="ELECTRODE_V2" defaultvalue="6" comment="ECG Electrode V2" />
|
||||
<ENUM name="ELECTRODE_V3" defaultvalue="7" comment="ECG Electrode V3" />
|
||||
<ENUM name="ELECTRODE_V4" defaultvalue="8" comment="ECG Electrode V4" />
|
||||
<ENUM name="ELECTRODE_V5" defaultvalue="9" comment="ECG Electrode V5" />
|
||||
<ENUM name="ELECTRODE_V6" defaultvalue="10" comment="ECG Electrode V6" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ActiveLeads">
|
||||
<ENUM name="ECG_I" defaultvalue="0"/>
|
||||
<ENUM name="ECG_II" defaultvalue="1"/>
|
||||
<ENUM name="ECG_III" defaultvalue="2"/>
|
||||
<ENUM name="ECG_aVR" defaultvalue="3"/>
|
||||
<ENUM name="ECG_aVL" defaultvalue="4"/>
|
||||
<ENUM name="ECG_aVF" defaultvalue="5"/>
|
||||
<ENUM name="ECG_V" defaultvalue="6"/>
|
||||
<ENUM name="ECG_V1" defaultvalue="7"/>
|
||||
<ENUM name="ECG_V2" defaultvalue="8"/>
|
||||
<ENUM name="ECG_V3" defaultvalue="9"/>
|
||||
<ENUM name="ECG_V4" defaultvalue="10"/>
|
||||
<ENUM name="ECG_V5" defaultvalue="11"/>
|
||||
<ENUM name="ECG_V6" defaultvalue="12"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTATUS" defaultvalue="3"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--Messages -->
|
||||
<!-- ====================================-->
|
||||
<MESSAGES>
|
||||
<MSG type="Request" name="GET_CONFIG"/>
|
||||
<MSG type="Response" name="PUT_CONFIG"/>
|
||||
<MSG type="Command" name="WRITE_CONFIG"/>
|
||||
<MSG type="Request" name="GET_LEADMEASUREMENT"/>
|
||||
<MSG type="Response" name="PUT_LEADMEASUREMENT"/>
|
||||
<MSG type="Request" name="GET_MEASURMENTS"/>
|
||||
<MSG type="Response" name="PUT_MEASUREMENTS"/>
|
||||
<MSG type="Request" name="GET_LEADIMPEDANCE"/>
|
||||
<MSG type="Response" name="PUT_LEADIMPEDANCE"/>
|
||||
<MSG type="Request" name="GET_QRSCOMPLEX"/>
|
||||
<MSG type="Response" name="PUT_QRSCOMPLEX"/>
|
||||
<MSG type="Command" name="START_TEST"/>
|
||||
<MSG type="Command" name="STOP_TEST"/>
|
||||
<MSG type="Command" name="ECG_MODE"/>
|
||||
</MESSAGES>
|
||||
</FAMILY>
|
641
CNIBPFamily.xml
Normal file
641
CNIBPFamily.xml
Normal file
|
@ -0,0 +1,641 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<FAMILY name="FmNIBP">
|
||||
<!--====================================-->
|
||||
<!--Species Key Reference -->
|
||||
<!-- ====================================-->
|
||||
<SPECIES_KEY>
|
||||
<GENUS name="GnDATA">
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
<SPECIES name="SpENGCHUNK" defaultvalue="2"/>
|
||||
<SPECIES name="SpEVENTCHUNK" defaultvalue="3"/>
|
||||
<SPECIES name="SpHARDWARESTATE" defaultvalue="4"/>
|
||||
<SPECIES name="SpLOCK" defaultvalue="5"/>
|
||||
<SPECIES name="SpRAWDATA" defaultvalue="6"/>
|
||||
<SPECIES name="SpPRESSUREDATA" defaultvalue="7"/>
|
||||
<SPECIES name="SpSTATUS" defaultvalue="8"/>
|
||||
<SPECIES name="SpDATAMODIFIED" defaultvalue="9" />
|
||||
</GENUS>
|
||||
<GENUS name="GnCONFIG">
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
<SPECIES name="SpCALIBRATION" defaultvalue="2"/>
|
||||
</GENUS>
|
||||
<GENUS name="GnPARAMETER">
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
<SPECIES name="SpSELECTOR" defaultvalue="2" comment="Used to indicate that the Value is a selector"/>
|
||||
<SPECIES name="SpCHUNK_SELECTOR" defaultvalue="3" comment="Used to indicate that the Value is a chunk selector"/>
|
||||
</GENUS>
|
||||
|
||||
<GENUS name="GnDATAEXT">
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</GENUS>
|
||||
</SPECIES_KEY>
|
||||
|
||||
<!--Platform BP Objects-->
|
||||
<!--BP Status-->
|
||||
<DEFINITION class="CNIBPDStatus" abrv="CNBPDST" version="200" family="FmNIBP" genus="GnDATA" species="SpSTATUS">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="moduleState" minversion="100" maxversion="CURRENT_VERSION" comment="Value describing the current state of the module"/>
|
||||
<MEMBER type="uint16" name="error" minversion="100" maxversion="CURRENT_VERSION" comment="Error state of the module 0 = no error, anything else the module is in error. Request CErrEStd for the Platform error object."/>
|
||||
<MEMBER type="uint16" name="hardwareStates" minversion="100" maxversion="CURRENT_VERSION" comment="Hardware states {0 - FALSE, 1 - TRUE}"/>
|
||||
<MEMBER type="uint16" name="safetyStates" minversion="100" maxversion="CURRENT_VERSION" comment="Safety states"/>
|
||||
<MEMBER type="int16" name="cuffPressure" minversion="100" maxversion="CURRENT_VERSION" comment="Scale/Units: 0.01 mmHg"/>
|
||||
<MEMBER type="int16" name="batVoltage" minversion="100" maxversion="CURRENT_VERSION" comment="Scale/Units: 0.001 volts"/>
|
||||
<MEMBER type="int16" name="ambTemp" minversion="100" maxversion="CURRENT_VERSION" comment="Scale/Units: 0.1 degrees C"/>
|
||||
<MEMBER type="int16" name="statusType" minversion="200" maxversion="CURRENT_VERSION" comment="The status type"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="moduleState">
|
||||
<ENUM name="IDLE" defaultvalue="0" comment="Device idle, cuff-deflating, no cycles active"/>
|
||||
<ENUM name="AUTOZERO" defaultvalue="1" comment="Auto-zeroing the transducers"/>
|
||||
<ENUM name="INFLATING" defaultvalue="2" comment="Inflating the BP cuff"/>
|
||||
<ENUM name="STABILIZING" defaultvalue="3" comment="Waiting for the pressure to stabilize"/>
|
||||
<ENUM name="BLEEDING" defaultvalue="4" comment="Controlled deflations"/>
|
||||
<ENUM name="DUMPING" defaultvalue="5" comment="Fast deflating getting below residual pressure limit"/>
|
||||
<ENUM name="REPUMP" defaultvalue="6" comment="Re-inflating the cuff"/>
|
||||
<ENUM name="ERROR" defaultvalue="7" comment="There is a POST or safety error"/>
|
||||
<ENUM name="BOOT" defaultvalue="8" comment="Boot-loader is active"/>
|
||||
<ENUM name="POST" defaultvalue="9" comment="In POST"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="hardwareState">
|
||||
<ENUM name="valveClosed" defaultvalue="32768" comment="bit 15 - valve state"/>
|
||||
<ENUM name="pumpOn" defaultvalue="16384" comment="bit 14 - pump state"/>
|
||||
<ENUM name="ECGPulseReceived" defaultvalue="8192" comment="bit 13 - ECG synchronization pulse received"/>
|
||||
<ENUM name="savingCal" defaultvalue="4096" comment="bit 12 - Saving the cal record to nonvolatile memory"/>
|
||||
<ENUM name="savingSettings" defaultvalue="2048" comment="bit 11 - Saving the settings record to nonvolatile memory"/>
|
||||
<ENUM name="SingleLHoseConnect" defaultvalue="1024" comment="bit 10 - Single Lumen Hose Connected"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="safetyStates">
|
||||
<ENUM name="belowResidual" defaultvalue="32768" comment="bit 15 - is pressure below residual"/>
|
||||
<ENUM name="longAutoTimerClear" defaultvalue="16384" comment="bit 14 - has enough time passed since last cycle"/>
|
||||
<ENUM name="statAutoTimerClear" defaultvalue="8192" comment="bit 13 - has enough time passed since last cycle"/>
|
||||
<ENUM name="failsafeFault" defaultvalue="4096" comment="bit 12 - has enough time passed since last cycle"/>
|
||||
<ENUM name="autoZeroFault" defaultvalue="2048" comment="bit 11 - has enough time passed since last cycle"/>
|
||||
<ENUM name="transducerFault" defaultvalue="1024" comment="bit 10 - has enough time passed since last cycle"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="statusType">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="Not specified"/>
|
||||
<ENUM name="PRIMARY" defaultvalue="1" comment="Primary processor status"/>
|
||||
<ENUM name="SECONDARY" defaultvalue="2" comment="Secondary processor status"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTATUS" defaultvalue="8"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--BP Calibration-->
|
||||
<DEFINITION class="CNIBPCCal" abrv="CNBPCCL" version="100" family="FmNIBP" genus="GnCONFIG" species="SpCALIBRATION">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint8" name="calType" minversion="100" maxversion="CURRENT_VERSION" comment="The calibration type."/>
|
||||
<MEMBER type="int32" name="calSignature" minversion="100" maxversion="CURRENT_VERSION" comment="The calibration signature"/>
|
||||
<MEMBER type="TIME" name="calDateTime" minversion="100" maxversion="CURRENT_VERSION" comment="The calibration date and time"/>
|
||||
<MEMBER type="int16" name="modConfig" minversion="100" maxversion="CURRENT_VERSION" comment="The module configuration bits"/>
|
||||
<MEMBER type="int16" name="spanCorr" minversion="100" maxversion="CURRENT_VERSION" comment="The transducer span correction factor"/>
|
||||
<MEMBER type="int16" name="zeroCorr" minversion="100" maxversion="CURRENT_VERSION" comment="The transducer zero correction factor"/>
|
||||
<MEMBER type="int16" name="battCal" minversion="100" maxversion="CURRENT_VERSION" comment="The battery calibration signature"/>
|
||||
<MEMBER type="int16" name="tempCal" minversion="100" maxversion="CURRENT_VERSION" comment="The temperature calibration value"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="calType">
|
||||
<ENUM name="NONE" defaultvalue="0" comment="Not specified"/>
|
||||
<ENUM name="PRIMARY" defaultvalue="1" comment="Primary calibration"/>
|
||||
<ENUM name="SECONDARY" defaultvalue="2" comment="Secondary calibration"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpCALIBRATION" defaultvalue="2"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--Engineering Chunk Data/Event log-->
|
||||
<DEFINITION class="CNIBPDChunk" abrv="CNBPDCHK" version="100" family="FmNIBP" genus="GnDATA" species="SpENGCHUNK">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int8" name="tag" size="4" minversion="100" maxversion="CURRENT_VERSION" comment="The 4 character tag code"/>
|
||||
<MEMBER type="uint16" name="chunkId" minversion="100" maxversion="CURRENT_VERSION" comment="The identifier for the chunk we want"/>
|
||||
<MEMBER type="uint16" name="chunkIndex" minversion="100" maxversion="CURRENT_VERSION" comment="The index of chunks for this device"/>
|
||||
<MEMBER type="uint8" name="chunkData" size="100" minversion="100" maxversion="CURRENT_VERSION" comment="The actual chunk data"/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpENGCHUNK" defaultvalue="2"/>
|
||||
<SPECIES name="SpEVENTCHUNK" defaultvalue="3"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--Hardware State-->
|
||||
<DEFINITION class="CNIBPDHState" abrv="CNBPDHST" version="100" family="FmNIBP" genus="GnDATA" species="SpHARDWARESTATE">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int16" name="hardware" minversion="100" maxversion="CURRENT_VERSION" comment="The index of the hardware to get/set the state of"/>
|
||||
<MEMBER type="int16" name="state" minversion="100" maxversion="CURRENT_VERSION" comment="The state of the hardware"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="hardware">
|
||||
<ENUM name="PRIM_VALVE" defaultvalue="0" comment="The primary valve"/>
|
||||
<ENUM name="SEC_VALVE" comment="The secondary valve"/>
|
||||
<ENUM name="PUMP" comment="The pump"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpHARDWARESTATE" defaultvalue="4"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--Device Test Locks-->
|
||||
<DEFINITION class="CNIBPDLock" abrv="CNBPDLCK" version="100" family="FmNIBP" genus="GnDATA" species="SpLOCK">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int16" name="lock" minversion="100" maxversion="CURRENT_VERSION" comment="The lock to get/set"/>
|
||||
<MEMBER type="int8" name="state" minversion="100" maxversion="CURRENT_VERSION" comment="state The state of the lock"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="lock">
|
||||
<ENUM name="AMB_TEMP_CHECK" defaultvalue="0" comment="Locks the ambient temperature check"/>
|
||||
<ENUM name="PRIM_SAFETY_CHECK" comment="Locks the primary processors safety checks"/>
|
||||
<ENUM name="SAFE_SAFETY_CHECK" comment="Locks the safety processors safety checks"/>
|
||||
<ENUM name="SINGLE_LUMEN_CHECK" comment="Locks the single lumen detection test"/>
|
||||
<ENUM name="AD_CHANNEL" comment="Locks the AD channel"/>
|
||||
<ENUM name="FAILSAFE_TEST_MODE" comment="Locks the failsafe test mode"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpLOCK" defaultvalue="5"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--AD Raw Data-->
|
||||
<DEFINITION class="CNIBPDRData" abrv="CNIBPDRDT" version="100" family="FmNIBP" genus="GnDATA" species="SpRAWDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="raw5V" minversion="100" maxversion="CURRENT_VERSION" comment="The raw counts of the 5V/2 rail"/>
|
||||
<MEMBER type="uint32" name="raw1V" minversion="100" maxversion="CURRENT_VERSION" comment="The raw counts for the 1V rail"/>
|
||||
<MEMBER type="uint32" name="raw2V" minversion="100" maxversion="CURRENT_VERSION" comment="The raw counts for the 2V rail"/>
|
||||
<MEMBER type="uint32" name="raw4V" minversion="100" maxversion="CURRENT_VERSION" comment="The raw counts for the 4V rail"/>
|
||||
<MEMBER type="int16" name="rawBat" minversion="100" maxversion="CURRENT_VERSION" comment="The raw battery counts"/>
|
||||
<MEMBER type="uint32" name="rawAmbTemp" minversion="100" maxversion="CURRENT_VERSION" comment="The raw ambient temperature counts"/>
|
||||
<MEMBER type="uint32" name="rawPrimTrans" minversion="100" maxversion="CURRENT_VERSION" comment="The raw primary transducer counts"/>
|
||||
<MEMBER type="int16" name="rawSecTrans" minversion="100" maxversion="CURRENT_VERSION" comment="The raw secondary transducer counts"/>
|
||||
<MEMBER type="int16" name="rawSecBat" minversion="100" maxversion="CURRENT_VERSION" comment="The raw secondary battery counts"/>
|
||||
<MEMBER type="int16" name="rawSecCorr" minversion="100" maxversion="CURRENT_VERSION" comment="The raw secondary correction factor counts"/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpRAWDATA" defaultvalue="6"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--Pressure Data-->
|
||||
<DEFINITION class="CNIBPDPData" abrv="CNIBPDPDT" version="100" family="FmNIBP" genus="GnDATA" species="SpPRESSUREDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int16" name="primPress" minversion="100" maxversion="CURRENT_VERSION" comment="The primary pressure transducer pressure"/>
|
||||
<MEMBER type="int16" name="primPressNoise" minversion="100" maxversion="CURRENT_VERSION" comment="The primary pressure transducer noise value"/>
|
||||
<MEMBER type="int16" name="primAzeroOffset" minversion="100" maxversion="CURRENT_VERSION" comment="The primary pressure transducer autozero offset"/>
|
||||
<MEMBER type="int16" name="secPress" minversion="100" maxversion="CURRENT_VERSION" comment="The secondary pressure transducer pressure"/>
|
||||
<MEMBER type="int16" name="secPressNoise" minversion="100" maxversion="CURRENT_VERSION" comment="The secondary pressure transducer noise value"/>
|
||||
<MEMBER type="int16" name="secAzeroOffset" minversion="100" maxversion="CURRENT_VERSION" comment="The secondary pressure transducer autozero offset"/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpPRESSUREDATA" defaultvalue="7"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<!--Formerly CNIBPPConfigStart - BP parameter-->
|
||||
<DEFINITION class="CNIBPPData" abrv="CNBPPDTA" version="200" family="FmNIBP" genus="GnPARAMETER" species="SpDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int16" name="targPress" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default adult target pressure (0 equals default)"/>
|
||||
<!-- Adult Range: 80 mmHg to 280 mmHg
|
||||
Ped Range: 80 mmHg to 20 mmHg less than ped Max Press Limit
|
||||
Neo Range; 50 mmHg to 130 mmHg
|
||||
-->
|
||||
<MEMBER type="int8" name="patientMode" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default patient mode for the sensor"/>
|
||||
<MEMBER type="int8" name="cycleMode" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="Specifies the type of cycle to perform"/>
|
||||
<MEMBER type="int8" name="algorithm" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The algorithm to use"/>
|
||||
<MEMBER type="int8" name="disableNeoCheck" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="This value specifies whether the neonate protection check is enabled in adult mode"/>
|
||||
<MEMBER type="boolean" name="firstReading" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="Indicates if this is the first reading of the sequence."/>
|
||||
</MEMBERS>
|
||||
|
||||
<ENUMERATION name="patientMode">
|
||||
<ENUM name="DEFAULT" defaultvalue="0" comment="Use the default option"/>
|
||||
<ENUM name="ADULT" comment="The adult patient mode (greater than 29 days)"/>
|
||||
<ENUM name="PEDIATRIC" comment="The pediatric patient mode (age TBD (subset of adult)))"/>
|
||||
<ENUM name="NEONATE" comment="The neonate patient mode (less than 29 days)"/>
|
||||
</ENUMERATION>
|
||||
|
||||
<ENUMERATION name="cycleMode">
|
||||
<ENUM name="MANUAL" defaultvalue="0" comment="Manual reading (user initiated)"/>
|
||||
<ENUM name="LONG_AUTO" comment="Long term automatic mode cycle"/>
|
||||
<ENUM name="STAT" comment="Short term automatic mode"/>
|
||||
</ENUMERATION>
|
||||
|
||||
<ENUMERATION name="algorithm">
|
||||
<ENUM name="DEFAULT" defaultvalue="0" comment="Use the default option"/>
|
||||
<ENUM name="FAST_BP" comment="The fast BP algorithm valid for adults and peds"/>
|
||||
<ENUM name="STEP_BP" comment="The step BP algorithm valid for adults and peds)"/>
|
||||
<ENUM name="NEO_BP" comment="The neonate BP algorithm valid for neonates"/>
|
||||
</ENUMERATION>
|
||||
|
||||
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
</SPECIES_TABLE>
|
||||
|
||||
</DEFINITION>
|
||||
<!--Formerly CNIBPCSettings - BP Settings-->
|
||||
<DEFINITION class="CNIBPCData" abrv="CNBPCDTA" version="200" family="FmNIBP" genus="GnCONFIG" species="SpDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int16" name="dfltAdultTargPress" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default adult target pressure, Range: 80 mmHg to 280 mmHg"/>
|
||||
<MEMBER type="int16" name="dfltPedTargPress" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default pediatric target pressure, Range: 80 mmHg to 20 mmHg less than ped Max pressure limit"/>
|
||||
<MEMBER type="int16" name="dfltNeoTargPress" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default neonate target pressure, Range: 50 mmHg to 130 mmHg"/>
|
||||
<MEMBER type="int16" name="pedMaxPressLimit" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The pediatric maximum pressure limit, Range: 100 mmHg to 300 mmHg"/>
|
||||
<MEMBER type="int16" name="residualMaxPressLimit" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The pediatric residual pressure limit, Range: 90 seconds to 150 seconds"/>
|
||||
<MEMBER type="int8" name="dfltPatientMode" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default patient mode for the sensor"/>
|
||||
<MEMBER type="int8" name="dfltAdultAlg" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default adult algorithm, use dfltAlg"/>
|
||||
<MEMBER type="int8" name="dfltPedAlg" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default pediatric algorithm, use dfltAlg"/>
|
||||
<MEMBER type="int8" name="dfltNeoAlg" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The default neonate algorithm, use dfltAlg"/>
|
||||
<MEMBER type="boolean" name="SAOEnabled" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="True indicates SAO algorithms are enabled"/>
|
||||
</MEMBERS>
|
||||
|
||||
<ENUMERATION name="dfltPatientMode">
|
||||
<ENUM name="ADULT" defaultvalue="0" comment="The adult patient mode (greater than 29 days)"/>
|
||||
<ENUM name="PEDIATRIC" comment="The pediatric patient mode (age TBD (subset of adult)))"/>
|
||||
<ENUM name="NEONATE" comment="The neonate patient mode (less than 29 days)"/>
|
||||
</ENUMERATION>
|
||||
|
||||
<ENUMERATION name="dfltAlg">
|
||||
<ENUM name="FAST_BP" defaultvalue="0" comment="The fast BP algorithm valid for adults and peds"/>
|
||||
<ENUM name="STEP_BP" comment="The step BP algorithm valid for adults and peds"/>
|
||||
<ENUM name="NEO_BP" comment="The neonate BP algorithm valid for neonates"/>
|
||||
</ENUMERATION>
|
||||
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
</SPECIES_TABLE>
|
||||
|
||||
</DEFINITION>
|
||||
<!--BP Reading -->
|
||||
<DEFINITION class="CNIBPDData" abrv="CNBPDDTA" version="201" family="FmNIBP" genus="GnDATA" species="SpDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int16" name="Status" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="The status for the entire reading"/>
|
||||
<MEMBER type="OBJECT" class="CNumDStd" name="Systolic" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="Systolic BP {in 0.01 mmHg units}"/>
|
||||
<MEMBER type="OBJECT" class="CNumDStd" name="Diastolic" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="Diastolic BP {in 0.01 mmHg units}"/>
|
||||
<MEMBER type="OBJECT" class="CNumDStd" name="MAP" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="Mean Art. Pressure {in 0.01 mmHg units}"/>
|
||||
<MEMBER type="OBJECT" class="CNumDStd" name="PR" minversion="200" maxversion="CURRENT_VERSION"
|
||||
comment="NIBP Pulse Rate (in Beats/Minute units}"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Status">
|
||||
<ENUM name="RD_OK" defaultvalue="0" comment="Reading is okay"/>
|
||||
<ENUM name="RD_ABORT" comment="Reading aborted"/>
|
||||
<ENUM name="RD_NOT_AVAIL" comment="Reading is not yet available"/>
|
||||
<ENUM name="RD_SPLAT" comment="Reading splat"/>
|
||||
<ENUM name="RD_ARTIFACT" comment="Too much artifact to calculate a reading"/>
|
||||
<ENUM name="RD_LOW_INFLAT" comment="Reading couldn't be obtained because a high enough inflation couldn't be reached"/>
|
||||
<ENUM name="RD_KINKED_TUBE" comment="Inflation was too quick check for a kinked hose"/>
|
||||
<ENUM name="RD_EARLY_DUMP" comment="Reading couldn't be obtained because the system dumped too soon"/>
|
||||
<ENUM name="RD_NOT_ENOUGH_DATA" comment="Not enough data could be obtained"/>
|
||||
<ENUM name="RD_PATIENT_INVALID" comment="The patient is outside of the modules capability to measure"/>
|
||||
<ENUM name="RD_REINF_TOO_LATE" comment="The device needed to re-inflate after it was safe"/>
|
||||
<ENUM name="RD_REINF_LIMIT" comment="Too many re-inflates requested"/>
|
||||
<ENUM name="RD_BLEED" comment="Pressure could not be bleed below SVRP"/>
|
||||
<ENUM name="RD_LEAK" comment="An air leak has been detected"/>
|
||||
<ENUM name="RD_SAFETY_FAULT" comment="An air leak has been detected"/>
|
||||
<ENUM name="RD_ZERO_FAULT" comment="Transducers could not be zeroed" /> <!-- Added version 201 of object -->
|
||||
</ENUMERATION>
|
||||
|
||||
<!-- ======= -->
|
||||
<!-- Species -->
|
||||
<!-- ======= -->
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<DEFINITION class="CNIBPDDataModified" abrv="CNBPDDTAM" version="202" family="FmNIBP" genus="GnDATA" species="SpDATAMODIFIED">
|
||||
<MEMBERS>
|
||||
<MEMBER type="OBJECT" name="NIBPData" class="CNIBPDData" minversion="100" maxversion="CURRENT_VERSION" />
|
||||
<MEMBER type="uint16" name="Status" minversion="100" maxversion="CURRENT_VERSION" comment="DATA_NOT_AVAIL, DATA_COMPLETE, etc" />
|
||||
<MEMBER type="TIME" name="STime" minversion="100" maxversion="CURRENT_VERSION" comment="Time reading was taken. Host specified. Not Sensor." />
|
||||
<MEMBER type="uint8" name="Mode" minversion="100" maxversion="CURRENT_VERSION" comment="Mode of operation"/>
|
||||
<MEMBER type="uint16" name="PatientPosition" minversion="100" maxversion="CURRENT_VERSION" comment="Describes the patient's position during reading, Sitting, Standing, etc." />
|
||||
<MEMBER type="uint16" name="CuffSize" minversion="100" maxversion="CURRENT_VERSION" comment="Describes what size cuff was on the patient during the reading." />
|
||||
<MEMBER type="uint16" name="CuffLocation" minversion="100" maxversion="CURRENT_VERSION" comment="Describes where on the patient the cuff was located during the reading." />
|
||||
<MEMBER type="uint16" name="Source" minversion="201" maxversion="CURRENT_VERSION" comment="Source of data"/>
|
||||
<MEMBER type="uint8" name="Method" minversion="201" maxversion="CURRENT_VERSION" comment="Method used"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Status">
|
||||
<!-- ====== -->
|
||||
<!-- Status -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Status codes -->
|
||||
<ENUM name="DATA_NOT_AVAIL" defaultvalue="0" />
|
||||
<ENUM name="DATA_COMPLETE" />
|
||||
<ENUM name="DATA_FAILURE" />
|
||||
<ENUM name="DATA_EXCEPTION" />
|
||||
<ENUM name="DATA_PROCESSING" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Mode">
|
||||
<!-- ===== -->
|
||||
<!-- Mode -->
|
||||
<!-- ===== -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="ADULT" defaultvalue="10"/>
|
||||
<ENUM name="NEONATAL"/>
|
||||
<ENUM name="PEDIATRIC"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="PatientPosition">
|
||||
<!-- =========== -->
|
||||
<!-- PatientPosition -->
|
||||
<!-- =========== -->
|
||||
<!-- Generic PatientPosition codes -->
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="UNKNOWN" />
|
||||
<ENUM name="LYING" />
|
||||
<ENUM name="SITTING" />
|
||||
<ENUM name="STANDING" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="CuffSize">
|
||||
<!-- ====== -->
|
||||
<!-- CuffSize -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic CuffSize codes -->
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="UNKNOWN" />
|
||||
<ENUM name="NEONATAL_1" />
|
||||
<ENUM name="NEONATAL_2" />
|
||||
<ENUM name="NEONATAL_3" />
|
||||
<ENUM name="NEONATAL_4" />
|
||||
<ENUM name="NEONATAL_5" />
|
||||
<ENUM name="SMALL_INFANT" />
|
||||
<ENUM name="INFANT" />
|
||||
<ENUM name="SMALL_CHILD" />
|
||||
<ENUM name="CHILD" />
|
||||
<ENUM name="SMALL_ADULT" />
|
||||
<ENUM name="ADULT" />
|
||||
<ENUM name="ADULT_LONG" />
|
||||
<ENUM name="LARGE_ADULT" />
|
||||
<ENUM name="LARGE_ADULT_LONG" />
|
||||
<ENUM name="THIGH" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="CuffLocation">
|
||||
<!-- ========= -->
|
||||
<!-- CuffLocation -->
|
||||
<!-- ========= -->
|
||||
<!-- Generic CuffLocation codes -->
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="UNKNOWN" />
|
||||
<ENUM name="LEFT_ARM" />
|
||||
<ENUM name="RIGHT_ARM" />
|
||||
<ENUM name="LEFT_LEG" />
|
||||
<ENUM name="RIGHT_LEG" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Source">
|
||||
<!-- Extended Status codes when Status is Data Failure or Data Exception -->
|
||||
|
||||
<!-- ====== -->
|
||||
<!-- Source -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Source codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Source codes begin at 10 -->
|
||||
<ENUM name="CVSM" defaultvalue="10"/>
|
||||
<ENUM name="MODB"/>
|
||||
<ENUM name="MODF"/>
|
||||
<ENUM name="POEM"/>
|
||||
<ENUM name="MODG"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Method">
|
||||
<!-- ====== -->
|
||||
<!-- Method -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Method codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="MANUAL"/>
|
||||
<ENUM name="DEVICE"/>
|
||||
<ENUM name="REMOTE"/>
|
||||
<!-- Class Method codes begin at 10 -->
|
||||
<ENUM name="FAST_BP" defaultvalue="10"/>
|
||||
<ENUM name="STEP_BP"/>
|
||||
<ENUM name="NEONATAL_STEP_BP"/>
|
||||
<ENUM name="LINEAR_DEFLATION_BP"/>
|
||||
<!--Added v202-->
|
||||
<ENUM name="AVERAGE_BP"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATAMODIFIED" defaultvalue="9" />
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<DEFINITION class="CNIBPPChunkSelector" abrv="CNBPPCHK" version="200" family="FmNIBP" genus="GnPARAMETER" species="SpCHUNK_SELECTOR">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="chunk" minversion="200" maxversion="CURRENT_VERSION" comment="Value is used to specify Max Chunk ID when used with SpRESULT "/>
|
||||
<MEMBER type="uint32" name="index" minversion="200" maxversion="CURRENT_VERSION" comment="Value is used to specify the index of the chunk we want to recieve"/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpCHUNK_SELECTOR" defaultvalue="3" comment="Used to indicate that the Value is a chunk selector"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<DEFINITION class="CNIBPPSelector" abrv="CNBPPSEL" version="200" family="FmNIBP" genus="GnPARAMETER" species="SpSELECTOR">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="Value" minversion="200" maxversion="CURRENT_VERSION" comment="Value is used to specify the desired option when needed."/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSELECTOR" defaultvalue="2" comment="Used to indicate that the Value is a selector"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CNIBPDStd" abrv="CNBPDSTD" version="106" family="FmNIBP" genus="GnDATA" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<!-- Version 001 -->
|
||||
<MEMBER type="TIME" name="STime" minversion="100" maxversion="CURRENT_VERSION" comment="Time reading was taken"/>
|
||||
<MEMBER type="uint16" name="Status" minversion="100" maxversion="CURRENT_VERSION" comment="DATA_NOT_AVAIL, DATA_AVAIL, etc"/>
|
||||
<MEMBER type="int16" name="Systolic" minversion="100" maxversion="CURRENT_VERSION" comment="Systolic BP {in 0.01 mmHg units}"/>
|
||||
<MEMBER type="int16" name="Diastolic" minversion="100" maxversion="CURRENT_VERSION" comment="Diastolic BP {in 0.01 mmHg units}"/>
|
||||
<MEMBER type="int16" name="MAP" minversion="100" maxversion="CURRENT_VERSION" comment="Mean Arterial Pressre {in 0.01 mmHg units}"/>
|
||||
<MEMBER type="uint16" name="HR" minversion="100" maxversion="CURRENT_VERSION" comment="NIBP Heart Rate (in BPM (Beats/Minute) units}"/>
|
||||
<!-- Version 002 -->
|
||||
<MEMBER type="uint16" name="ExtStatus" minversion="100" maxversion="CURRENT_VERSION" comment="Extended status/error code"/>
|
||||
<MEMBER type="uint16" name="Source" minversion="100" maxversion="CURRENT_VERSION" comment="Source of data"/>
|
||||
<MEMBER type="uint8" name="Mode" minversion="100" maxversion="CURRENT_VERSION" comment="Mode of operation"/>
|
||||
<MEMBER type="uint8" name="Method" minversion="100" maxversion="CURRENT_VERSION" comment="Method used"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Status">
|
||||
<!-- ====== -->
|
||||
<!-- Status -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Status codes -->
|
||||
<ENUM name="DATA_NOT_AVAIL" defaultvalue="0"/>
|
||||
<ENUM name="DATA_COMPLETE"/>
|
||||
<ENUM name="DATA_FAILURE"/>
|
||||
<ENUM name="DATA_EXCEPTION"/>
|
||||
<ENUM name="DATA_PROCESSING"/>
|
||||
<!-- No Class Status codes -->
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ExtStatus">
|
||||
<!-- =============== -->
|
||||
<!-- Extended Status -->
|
||||
<!-- =============== -->
|
||||
<!-- One Generic Extended Status codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Source">
|
||||
<!-- Extended Status codes when Status is Data Failure or Data Exception -->
|
||||
|
||||
<!-- ====== -->
|
||||
<!-- Source -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Source codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Source codes begin at 10 -->
|
||||
<ENUM name="CVSM" defaultvalue="10"/>
|
||||
<ENUM name="MODB"/>
|
||||
<ENUM name="MODF"/>
|
||||
<ENUM name="POEM"/>
|
||||
<ENUM name="MODG"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Mode">
|
||||
<!-- ==== -->
|
||||
<!-- Mode -->
|
||||
<!-- ==== -->
|
||||
<!-- Generic Mode codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Mode codes begin at 10 -->
|
||||
<ENUM name="ADULT" defaultvalue="10"/>
|
||||
<ENUM name="NEONATAL"/>
|
||||
<ENUM name="PEDIATRIC"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Method">
|
||||
<!-- ====== -->
|
||||
<!-- Method -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Method codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="MANUAL"/>
|
||||
<ENUM name="DEVICE"/>
|
||||
<ENUM name="REMOTE"/>
|
||||
<!-- Class Method codes begin at 10 -->
|
||||
<ENUM name="FAST_BP" defaultvalue="10"/>
|
||||
<ENUM name="STEP_BP"/>
|
||||
<ENUM name="NEONATAL_STEP_BP"/>
|
||||
<ENUM name="LINEAR_DEFLATION_BP"/>
|
||||
<!--Added v106-->
|
||||
<ENUM name="AVERAGE_BP"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CNIBPCStd" abrv="CNBPCSTD" version="102" family="FmNIBP" genus="GnCONFIG" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint16" name="DisplayUnits" minversion="100" maxversion="CURRENT_VERSION" comment="Display units for BP and MAP"/>
|
||||
<MEMBER type="boolean" name="MAPDisplay" minversion="100" maxversion="CURRENT_VERSION" comment="MAP Display enabled/disabled"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="DisplayUnits">
|
||||
<ENUM name="NIBP_MMHG" defaultvalue="0"/>
|
||||
<ENUM name="NIBP_KPA"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="MAPDisplay">
|
||||
<ENUM name="DISABLE" defaultvalue="0"/>
|
||||
<ENUM name="ENABLE"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
|
||||
<!--====================================-->
|
||||
<!--GnDATAEXT-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CNIBPDExtStd" abrv="CNBPDXTSTD" version="201" family="FmNIBP" genus="GnDATAEXT" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<MEMBER type="OBJECT" class="ANY_CLASS" name="Container" size="UNBOUNDED" minversion="200" maxversion="CURRENT_VERSION" comment="Contains a list of NIBP objects" />
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--Messages -->
|
||||
<!-- ====================================-->
|
||||
<MESSAGES>
|
||||
<MSG type="Request" name="GET_BP"/>
|
||||
<MSG type="Request" name="GET_CONFIG"/>
|
||||
<MSG type="Response" name="PUT_BP" comment="Requires a CNIBPDData object"/>
|
||||
<MSG type="Response" name="PUT_CONFIG"/>
|
||||
<MSG type="Command" name="START_NIBP" comment="Requires a CNIBPPData"/>
|
||||
<MSG type="Command" name="STOP_NIBP"/>
|
||||
<MSG type="Command" name="WRITE_CONFIG"/>
|
||||
<MSG type="Status" name="REPORT_BP"/>
|
||||
|
||||
<!--New BP Messages -->
|
||||
<MSG type="Command" name="ZERO_NIBP"/>
|
||||
<MSG type="Command" name="MSG_PUSH_ENABLE" comment="Requires a CNIBPPSelector"/>
|
||||
<MSG type="Stream" name="REPORT_BP" comment="Requires a CNIBPDData object"/>
|
||||
|
||||
|
||||
<!--Platform BP Messages-->
|
||||
<!--BP Status-->
|
||||
<MSG type="Request" name="GET_STATUS" comment="Requires CNIBPPSelector object to indicate which processors status to retrieve."/>
|
||||
<MSG type="Response" name="PUT_STATUS" comment="Requires a CNIBPDStatus"/>
|
||||
<MSG type="Stream" name="REPORT_STATUS" comment="Requires a CNIBPDStatus, only primary processor status will be reported."/>
|
||||
<MSG type="Command" name="CLEAR_SAFTEY_STATUS"/>
|
||||
<MSG type="Command" name="CLEAR_POST_STATUS"/>
|
||||
<MSG type="Command" name="RESET_DEVICE"/>
|
||||
|
||||
<!--BP Calibration-->
|
||||
<MSG type="Request" name="GET_CALIBRATION" comment="Requires CNIBPPSelector to specify primary or secondary processor cal"/>
|
||||
<MSG type="Response" name="PUT_CALIBRATION" comment="Requires CNIBPCCal."/>
|
||||
<MSG type="Command" name="SET_CALIBRATION" comment="Requires CNIBPCCal."/>
|
||||
<MSG type="Command" name="SAVE_CALIBRATION" comment="Requires CNIBPPSelector to specify primary or secondary processor cal"/>
|
||||
<MSG type="Command" name="LOAD_CALIBRATION" comment="Requires CNIBPPSelector to specify primary or secondary processor cal"/>
|
||||
<MSG type="Command" name="RESTORE_DFLT_CALIBRATION" comment="Requires CNIBPPSelector to specify primary or secondary processor cal"/>
|
||||
|
||||
<!--BP Settings-->
|
||||
<MSG type="Request" name="GET_BP_SETTINGS"/>
|
||||
<MSG type="Response" name="PUT_BP_SETTINGS" comment="Requires CNIBPCData"/>
|
||||
<MSG type="Command" name="SET_BP_SETTINGS" comment="Requires CNIBPCData"/>
|
||||
<MSG type="Command" name="SAVE_BP_SETTINGS" />
|
||||
<MSG type="Command" name="LOAD_BP_SETTINGS"/>
|
||||
<MSG type="Command" name="RESTORE_DFLT_SETTINGS"/>
|
||||
|
||||
<!--Chunk Data Engineering/Event LOG-->
|
||||
<MSG type="Request" name="GET_CHUNK" comment="Requires a CNIBPPChunkSelector object to indicate the type of chunk to retrieve."/>
|
||||
<MSG type="Response" name="PUT_CHUNK" comment="Requires a CNIBPDChunk"/>
|
||||
<MSG type="Request" name="GET_CHUNK_SIZE" comment="Requires a CNIBPPSelector object to indicate what chunk size to retrieve. "/>
|
||||
<MSG type="Response" name="PUT_CHUNK_SIZE" comment="Requires a CNIBPPSelector object"/>
|
||||
<MSG type="Request" name="GET_MAX_CHUNK_ID" />
|
||||
<MSG type="Response" name="PUT_MAX_CHUNK_ID" comment="Requires a CNIBPPSelector object"/>
|
||||
|
||||
<!--Hardware State-->
|
||||
<MSG type="Request" name="GET_HARDWARE_STATE" comment="Requires a CNIBPPSelector to specify the hardware"/>
|
||||
<MSG type="Response" name="PUT_HARDWARE_STATE" comment="Requires a CNIBPDHState"/>
|
||||
<MSG type="Command" name="SET_HARDWARE_STATE" comment="Requires a CNIBPDHState"/>
|
||||
<MSG type="Command" name="PULSE_STEP_VALVE" comment="Requires a CNIBPPSelector to specify time in units 0.0001 seconds"/>
|
||||
|
||||
<!--Device Test Locks-->
|
||||
<MSG type="Request" name="GET_TEST_LOCK" comment="Requires a CNIBPPSelector to specify the lock"/>
|
||||
<MSG type="Response" name="PUT_TEST_LOCK" comment="Requires a CNIBPDLock"/>
|
||||
<MSG type="Command" name="SET_TEST_LOCK" comment="Requires a CNIBPDLock"/>
|
||||
|
||||
<!--AD Raw Data-->
|
||||
<MSG type="Request" name="GET_RAW_DATA"/>
|
||||
<MSG type="Response" name="PUT_RAW_DATA" comment="Requires a CNIBPDRData"/>
|
||||
|
||||
<!--Pressure Data-->
|
||||
<MSG type="Request" name="GET_PRESSURE_DATA"/>
|
||||
<MSG type="Response" name="PUT_PRESSURE_DATA" comment="Requires a CNIBPDPData"/>
|
||||
</MESSAGES>
|
||||
</FAMILY>
|
355
CSPO2Family.xml
Normal file
355
CSPO2Family.xml
Normal file
|
@ -0,0 +1,355 @@
|
|||
<FAMILY name="FmSPO2">
|
||||
<!--====================================-->
|
||||
<!--Species Key Reference -->
|
||||
|
||||
<!-- ====================================-->
|
||||
<SPECIES_KEY>
|
||||
<GENUS name="GnDATA">
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
<SPECIES name="SpDATAMODIFIED" defaultvalue="2" />
|
||||
</GENUS>
|
||||
<GENUS name="GnCONFIG">
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
</GENUS>
|
||||
<GENUS name="GnPARAMETER">
|
||||
<SPECIES name="SpSELECTOR" defaultvalue="2"/>
|
||||
</GENUS>
|
||||
</SPECIES_KEY>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CSpO2DData" abrv="CSP2DDTA" version="213" family="FmSPO2" genus="GnDATA" species="SpDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="TIME" name="STime" minversion="100" maxversion="CURRENT_VERSION" comment="Time reading was taken. Host specified. Not Sensor."/>
|
||||
<MEMBER type="uint16" name="ExtStatus" minversion="100" maxversion="CURRENT_VERSION" comment="Sensor Specified."/>
|
||||
<MEMBER type="uint16" name="Source" minversion="100" maxversion="CURRENT_VERSION" comment="Source of data. Sensor Specified."/>
|
||||
<MEMBER type="OBJECT" name="Sat" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="O2 Saturation {in % units}"/>
|
||||
<MEMBER type="OBJECT" name="HR" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="SpO2 Heart Rate {in BPM (Beats/Minute) units}"/>
|
||||
<MEMBER type="OBJECT" name="PI" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="SpO2 Perfusion Index {in % units}"/>
|
||||
<MEMBER type="uint16" name="Status" minversion="202" maxversion="CURRENT_VERSION" comment="DATA_NOT_AVAIL, DATA_COMPLETE, etc."/>
|
||||
<MEMBER type="OBJECT" name="ElapsedSatSeconds" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="Elapsed SatSeconds (Nellcor Only)"/>
|
||||
<MEMBER type="OBJECT" name="TotalSatSeconds" class="CNumDStd" minversion="200" maxversion="CURRENT_VERSION" comment="Total SatSeconds Configured, 0 = SatSeconds disabled (Nellcor Only)"/>
|
||||
<MEMBER type="OBJECT" name="SatConfidence" class="CNumDStd" minversion="208" maxversion="CURRENT_VERSION" comment="O2 Confidence {in % units}"/>
|
||||
<MEMBER type="OBJECT" name="HRConfidence" class="CNumDStd" minversion="208" maxversion="CURRENT_VERSION" comment="HR Confidence {in % units}"/>
|
||||
<MEMBER type="OBJECT" name="PIConfidence" class="CNumDStd" minversion="208" maxversion="CURRENT_VERSION" comment="PI Confidence {in % units}"/>
|
||||
<MEMBER type="OBJECT" name="PVIConfidence" class="CNumDStd" minversion="208" maxversion="CURRENT_VERSION" comment="PVI Confidence {in % units}"/>
|
||||
<MEMBER type="OBJECT" name="PVI" class="CNumDStd" minversion="208" maxversion="CURRENT_VERSION" comment="PVI (0 to 100%}"/>
|
||||
<MEMBER type="uint8" name="Mode" minversion="211" maxversion="CURRENT_VERSION" comment="Mode of operation" />
|
||||
<MEMBER type="uint8" name="Method" minversion="211" maxversion="CURRENT_VERSION" comment="Method used" />
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Source">
|
||||
<!-- ====== -->
|
||||
<!-- Source -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Source codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Source codes begin at 10 -->
|
||||
<ENUM name="NONIN" defaultvalue="10"/>
|
||||
<ENUM name="NELLCOR_MP205"/>
|
||||
<ENUM name="NELLCOR_MP506"/>
|
||||
<ENUM name="MASIMO_MS11"/>
|
||||
<ENUM name="NELLCOR_NELL3"/>
|
||||
<ENUM name="NELLCOR_NELL1"/>
|
||||
<ENUM name="MASIMO_MS2011"/>
|
||||
<ENUM name="MASIMO_MX"/>
|
||||
<ENUM name="NELLCOR"/>
|
||||
<!-- Added in version 213 -->
|
||||
<ENUM name="NELLCOR_PMB05N"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ExtStatus">
|
||||
<ENUM name="PULSE_FOUND" comment="Pulse detected" defaultvalue="0"/>
|
||||
<ENUM name="SEARCHING_FOR_BOARD" comment="Identifying SpO2 board"/>
|
||||
<ENUM name="NO_PROBE" comment="Sensor is not attached"/>
|
||||
<ENUM name="INCORRECT_PROBE" comment="Incorrect sensor is attached"/>
|
||||
<ENUM name="SEARCHING_FOR_PULSE" comment="Searching for pulse"/>
|
||||
<ENUM name="BAD_PROBE" comment="Bad sensor is attached"/>
|
||||
<ENUM name="PROBE_EXPIRED" comment="Probe is expired"/>
|
||||
<ENUM name="NO_CABLE" comment="Cable is not attached"/>
|
||||
<ENUM name="INCORRECT_CABLE" comment="Incorrect cable is attached"/>
|
||||
<ENUM name="BAD_CABLE" comment="Bad cable is attached"/>
|
||||
<ENUM name="CABLE_EXPIRED" comment="Cable is expired"/>
|
||||
<ENUM name="VALUE_NOT_ACQUIRED" comment="A value could not be acquired."/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Status">
|
||||
<!-- ====== -->
|
||||
<!-- Status -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Status codes -->
|
||||
<ENUM name="DATA_NOT_AVAIL" defaultvalue="0"/>
|
||||
<ENUM name="DATA_COMPLETE"/>
|
||||
<ENUM name="DATA_FAILURE"/>
|
||||
<ENUM name="DATA_EXCEPTION"/>
|
||||
<ENUM name="DATA_PROCESSING"/>
|
||||
<!-- No Class Status codes -->
|
||||
</ENUMERATION>
|
||||
|
||||
<ENUMERATION name="Mode">
|
||||
<!-- ==== -->
|
||||
<!-- Mode -->
|
||||
<!-- ==== -->
|
||||
<!-- Generic Mode codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Mode codes begin at 10 -->
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Method">
|
||||
<!-- ====== -->
|
||||
<!-- Method -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Method codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="MANUAL"/>
|
||||
<ENUM name="DEVICE"/>
|
||||
<ENUM name="REMOTE"/>
|
||||
<!-- Class Method codes begin at 10 -->
|
||||
</ENUMERATION>
|
||||
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CSpO2CData" abrv="CSP2CDTA" version="205" family="FmSPO2" genus="GnCONFIG" species="SpDATA">
|
||||
<MEMBERS>
|
||||
<MEMBER type="int8" name="SatExponent" minversion="200" maxversion="CURRENT_VERSION" comment="Exponent value that indicates the place value for the Sat member within CSpO2DData"/>
|
||||
<MEMBER type="int8" name="PIExponent" minversion="200" maxversion="CURRENT_VERSION" comment="Exponent value that indicates the place value for the PI member within CSpO2DData"/>
|
||||
<MEMBER type="OBJECT" name="SatAlarms" class="CNumCStd" minversion="201" maxversion="CURRENT_VERSION" comment="O2 Saturation Alarms {in % units}"/>
|
||||
<MEMBER type="OBJECT" name="HRAlarms" class="CNumCStd" minversion="201" maxversion="CURRENT_VERSION" comment="SpO2 Heart Rate Alarms {in BPM (Beats/Minute) units}"/>
|
||||
<MEMBER type="uint8" name="FastSat" minversion="201" maxversion="CURRENT_VERSION" comment="Saturation averaging time is long and short respectively for OFF (default) and ON"/>
|
||||
<MEMBER type="uint8" name="Sensitivity" minversion="201" maxversion="CURRENT_VERSION" comment="(Masimo only) Algorithm mode NORMAL (default) or MAXIMUM"/>
|
||||
<MEMBER type="uint8" name="AveragingTime" minversion="201" maxversion="CURRENT_VERSION" comment="(Masimo only) Averaging time of the saturation measurement. Default is 8_SEC"/>
|
||||
<MEMBER type="uint8" name="SatSecondsLimit" minversion="201" maxversion="CURRENT_VERSION" comment="(Nellcor only) SatSeconds(TM) limit. Default DISABLED"/>
|
||||
<MEMBER type="uint8" name="SmartTone" minversion="202" maxversion="CURRENT_VERSION" comment="SmartTone for Signal IQ and Beep. Default is OFF"/>
|
||||
<MEMBER type="int8" name="PVIExponent" minversion="203" maxversion="CURRENT_VERSION" comment="Exponent value that indicates the place value for the PVI member (read only)"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="FastSat">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="OFF" defaultvalue="1" />
|
||||
<ENUM name="ON" defaultvalue="2" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Sensitivity">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="NORMAL" defaultvalue="1" />
|
||||
<ENUM name="MAXIMUM" defaultvalue="2" />
|
||||
<ENUM name="APOD" defaultvalue="3" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="AveragingTime">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="2_TO_4_SEC" defaultvalue="1" />
|
||||
<ENUM name="4_TO_6_SEC" defaultvalue="2" />
|
||||
<ENUM name="8_SEC" defaultvalue="3" />
|
||||
<ENUM name="10_SEC" defaultvalue="4" />
|
||||
<ENUM name="12_SEC" defaultvalue="5" />
|
||||
<ENUM name="14_SEC" defaultvalue="6" />
|
||||
<ENUM name="16_SEC" defaultvalue="7" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="SatSecondsLimit">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="DISABLED" defaultvalue="1" />
|
||||
<ENUM name="10_SEC" defaultvalue="2" />
|
||||
<ENUM name="25_SEC" defaultvalue="3" />
|
||||
<ENUM name="50_SEC" defaultvalue="4" />
|
||||
<ENUM name="100_SEC" defaultvalue="5" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="SmartTone">
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="OFF" defaultvalue="1" />
|
||||
<ENUM name="ON" defaultvalue="2" />
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATA" defaultvalue="1"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CSpO2DDataModified" abrv="CSP2DDTAM" version="201" family="FmSPO2" genus="GnDATA" species="SpDATAMODIFIED">
|
||||
<MEMBERS>
|
||||
<MEMBER type="OBJECT" name="SpO2Data" class="CSpO2DData" minversion="100" maxversion="CURRENT_VERSION" />
|
||||
<MEMBER type="uint8" name="O2FlowRate" minversion="100" maxversion="CURRENT_VERSION" comment="User Inputs numeric (1 - 20 liters increment of 1)" />
|
||||
<MEMBER type="uint8" name="O2Concentration" minversion="100" maxversion="CURRENT_VERSION" comment="User Inputs numeric (21 - 100% increment of 1)" />
|
||||
<MEMBER type="uint8" name="O2Method" minversion="100" maxversion="CURRENT_VERSION" comment="Selection" />
|
||||
<MEMBER type="uint8" name="Location" minversion="100" maxversion="CURRENT_VERSION" comment="Where the SpO2 sensor is attached to the patient." />
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="O2Method">
|
||||
<!-- ====== -->
|
||||
<!-- Method -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic O2Method codes -->
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="UNKNOWN" />
|
||||
<ENUM name="AEROSOL_HUMIDIFIED_MASK" />
|
||||
<ENUM name="FACE_TENT" />
|
||||
<ENUM name="MASK" />
|
||||
<ENUM name="NASAL_CANNULA" />
|
||||
<ENUM name="NON_REBREATHER" />
|
||||
<ENUM name="PARTIAL_REBREATHER" />
|
||||
<ENUM name="T_PIECE" />
|
||||
<!--v201: Fixed spelling from TRACHEOTOMY to TRACHEOSTOMY -->
|
||||
<ENUM name="TRACHEOSTOMY_COLLAR" />
|
||||
<ENUM name="VENTILATOR" />
|
||||
<ENUM name="VENTURI_MASK" />
|
||||
<ENUM name="ROOM_AIR" />
|
||||
<ENUM name="OXYMIZER" />
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Location">
|
||||
<!-- ====== -->
|
||||
<!-- Location -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Location codes -->
|
||||
<ENUM name="NONE" defaultvalue="0" />
|
||||
<ENUM name="UNKNOWN" />
|
||||
<ENUM name="EAR" />
|
||||
<ENUM name="FINGER" />
|
||||
<ENUM name="TOE" />
|
||||
<ENUM name="FOREHEAD" />
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpDATAMODIFIED" defaultvalue="2" />
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnDATA-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CSpO2DStd" abrv="CSP2DSTD" version="102" family="FmSPO2" genus="GnDATA" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<MEMBER type="TIME" name="STime" minversion="100" maxversion="CURRENT_VERSION" comment="Time reading was taken"/>
|
||||
<MEMBER type="uint16" name="Status" minversion="100" maxversion="CURRENT_VERSION" comment="DATA_NOT_AVAIL, DATA_COMPLETE, etc"/>
|
||||
<MEMBER type="uint16" name="Sat" minversion="100" maxversion="CURRENT_VERSION" comment="O2 Saturation {in % units}"/>
|
||||
<MEMBER type="uint16" name="HR" minversion="100" maxversion="CURRENT_VERSION" comment="SpO2 Heart Rate (in BPM (Beats/Minute) units}"/>
|
||||
<MEMBER type="uint16" name="ExtStatus" minversion="100" maxversion="CURRENT_VERSION" comment="Extended status/error code"/>
|
||||
<MEMBER type="uint16" name="Source" minversion="100" maxversion="CURRENT_VERSION" comment="Source of data "/>
|
||||
<MEMBER type="uint8" name="Mode" minversion="100" maxversion="CURRENT_VERSION" comment="Mode of operation"/>
|
||||
<MEMBER type="uint8" name="Method" minversion="100" maxversion="CURRENT_VERSION" comment="Method used"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="Status">
|
||||
<!-- ====== -->
|
||||
<!-- Status -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Status codes -->
|
||||
<ENUM name="DATA_NOT_AVAIL" defaultvalue="0"/>
|
||||
<ENUM name="DATA_COMPLETE"/>
|
||||
<ENUM name="DATA_FAILURE"/>
|
||||
<ENUM name="DATA_EXCEPTION"/>
|
||||
<ENUM name="DATA_PROCESSING"/>
|
||||
<!-- No Class Status codes -->
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="ExtStatus">
|
||||
<!-- =============== -->
|
||||
<!-- Extended Status -->
|
||||
<!-- =============== -->
|
||||
<!-- One Generic Extended Status codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<!-- Extended Status codes when Status is Data Processing Error -->
|
||||
<ENUM name="SPO2_NOPROBE"/>
|
||||
<ENUM name="SPO2_NOTAVAIL"/>
|
||||
<ENUM name="SPO2_OUT_OF_TRACK"/>
|
||||
<ENUM name="SPO2_BAD"/>
|
||||
<ENUM name="SPO2_WAIT"/>
|
||||
<ENUM name="SPO2_SENSOR_BAD"/>
|
||||
<ENUM name="SPO2_FROZEN"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Source">
|
||||
<!-- ====== -->
|
||||
<!-- Source -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Source codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Source codes begin at 10 -->
|
||||
<ENUM name="NONIN" defaultvalue="10"/>
|
||||
<ENUM name="NELLCOR_MP205"/>
|
||||
<ENUM name="NELLCOR_MP506"/>
|
||||
<ENUM name="MASIMO_MS11"/>
|
||||
<ENUM name="NELLCOR_NELL3"/>
|
||||
<ENUM name="NELLCOR_NELL1"/>
|
||||
<ENUM name="MASIMO_MS2011"/>
|
||||
<ENUM name="MASIMO_MX"/>
|
||||
<ENUM name="NELLCOR"/>
|
||||
<!-- Added in version 102 -->
|
||||
<ENUM name="NELLCOR_PMB05N"/>
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Mode">
|
||||
<!-- ==== -->
|
||||
<!-- Mode -->
|
||||
<!-- ==== -->
|
||||
<!-- Generic Mode codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<!-- Class Mode codes begin at 10 -->
|
||||
</ENUMERATION>
|
||||
<ENUMERATION name="Method">
|
||||
<!-- ====== -->
|
||||
<!-- Method -->
|
||||
<!-- ====== -->
|
||||
<!-- Generic Method codes -->
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="MANUAL"/>
|
||||
<ENUM name="DEVICE"/>
|
||||
<ENUM name="REMOTE"/>
|
||||
<!-- Class Method codes begin at 10 -->
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnCONFIG-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CSpO2CStd" abrv="CSP2CSTD" version="102" family="FmSPO2" genus="GnCONFIG" species="SpSTANDARD">
|
||||
<MEMBERS>
|
||||
<MEMBER type="boolean" name="Enabled" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
<MEMBER type="uint16" name="InstalledModule" minversion="100" maxversion="CURRENT_VERSION"/>
|
||||
</MEMBERS>
|
||||
<ENUMERATION name="InstalledModule">
|
||||
<ENUM name="NONE" defaultvalue="0"/>
|
||||
<ENUM name="UNKNOWN"/>
|
||||
<ENUM name="NONIN" defaultvalue="10"/>
|
||||
<ENUM name="NELLCOR_MP205"/>
|
||||
<ENUM name="NELLCOR_MP506"/>
|
||||
<ENUM name="MASIMO_MS11"/>
|
||||
<ENUM name="NELLCOR_NELL3"/>
|
||||
<ENUM name="NELLCOR_NELL1"/>
|
||||
<ENUM name="MASIMO_MS2011"/>
|
||||
<ENUM name="MASIMO_MX"/>
|
||||
<ENUM name="NELLCOR"/>
|
||||
<!-- Added in version 102 -->
|
||||
<ENUM name="NELLCOR_PMB05N"/>
|
||||
</ENUMERATION>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSTANDARD" defaultvalue="0"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--GnPARAMETER-->
|
||||
<!--==================================== -->
|
||||
<DEFINITION class="CSpO2PSelector" abrv="CSP2PSEL" version="200" family="FmSPO2" genus="GnPARAMETER" species="SpSELECTOR">
|
||||
<MEMBERS>
|
||||
<MEMBER type="uint32" name="Value" minversion="200" maxversion="CURRENT_VERSION" comment="Value is used to specify the desired option when needed."/>
|
||||
</MEMBERS>
|
||||
<SPECIES_TABLE>
|
||||
<SPECIES name="SpSELECTOR" defaultvalue="2" comment="Used to indicate that the Value is a selector"/>
|
||||
</SPECIES_TABLE>
|
||||
</DEFINITION>
|
||||
<!--====================================-->
|
||||
<!--Messages -->
|
||||
<!-- ====================================-->
|
||||
<MESSAGES>
|
||||
<MSG type="Request" name="GET_SPO2" comment="Requests the last SpO2 reading."/>
|
||||
<MSG type="Request" name="GET_CONFIG" comment="Requests the SpO2 confguration."/>
|
||||
<MSG type="Response" name="PUT_SPO2" comment="Returns the last SpO2 reading. Requires a CSpO2DData object."/>
|
||||
<MSG type="Response" name="PUT_CONFIG" comment="Returns the SpO2 confguration. Requires a CSpO2CData object."/>
|
||||
<MSG type="Command" name="WRITE_CONFIG" comment="Command to write the SpO2 configuration. Requires a CSpO2CData object."/>
|
||||
<MSG type="Status" name="REPORT_SPO2" comment="Returns the last SpO2 reading. Requires a CSpO2DData object."/>
|
||||
<MSG type="Command" name="START_ACQUIRE" comment="Command to start sending SpO2 reading."/>
|
||||
<MSG type="Command" name="STOP_ACQUIRE" comment="Command to stop sending SpO2 reading."/>
|
||||
<MSG type="Stream" name="STREAM_SPO2" comment="Returns the last SpO2 reading. Requires a CSpO2DData object."/>
|
||||
</MESSAGES>
|
||||
</FAMILY>
|
95
Cargo.lock
generated
95
Cargo.lock
generated
|
@ -7,6 +7,7 @@ name = "RustXMLParseTest"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"crossbeam",
|
||||
"enum_index",
|
||||
"enum_index_derive",
|
||||
"lazy_static",
|
||||
|
@ -64,6 +65,12 @@ dependencies = [
|
|||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.3.3"
|
||||
|
@ -79,6 +86,12 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.3.19"
|
||||
|
@ -126,6 +139,73 @@ version = "1.0.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-channel",
|
||||
"crossbeam-deque",
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-queue",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.5.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-deque"
|
||||
version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"memoffset",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-queue"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "enum_index"
|
||||
version = "0.2.0"
|
||||
|
@ -204,6 +284,15 @@ version = "0.4.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.18.0"
|
||||
|
@ -313,6 +402,12 @@ dependencies = [
|
|||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||
|
||||
[[package]]
|
||||
name = "siphasher"
|
||||
version = "0.3.10"
|
||||
|
|
|
@ -13,3 +13,4 @@ enum_index_derive = "0.2.0"
|
|||
phf = { version = "0.11.2", features = ["macros"] }
|
||||
lazy_static = "1.4.0"
|
||||
clap = { version = "4.3.19", features = ["derive"] }
|
||||
crossbeam = "0.8.2"
|
||||
|
|
31
FmCO2_members.rs
Normal file
31
FmCO2_members.rs
Normal file
|
@ -0,0 +1,31 @@
|
|||
use super::MessageSpecies;
|
||||
|
||||
pub enum FmCO2Message{
|
||||
GET_BREATH, //Request 0
|
||||
GET_AMBIENT_PRESSURE, //Request 1
|
||||
GET_MODULE_CONFIG, //Request 2
|
||||
GET_CALIBRATION, //Request 3
|
||||
GET_SERVICE_TIME, //Request 4
|
||||
GET_CAL_TIME, //Request 5
|
||||
GET_CONFIG, //Request 6
|
||||
PUT_BREATH, //Response 0
|
||||
PUT_AMBIENT_PRESSURE, //Response 1
|
||||
PUT_MODULE_CONFIG, //Response 2
|
||||
PUT_CALIBRATION, //Response 3
|
||||
PUT_SERVICE_TIME, //Response 4
|
||||
PUT_CAL_TIME, //Response 5
|
||||
PUT_CONFIG, //Response 6
|
||||
RESTART_BREATH_ALG, //Command 0
|
||||
START_CALIBRATION, //Command 1
|
||||
STOP_CALIBRATION, //Command 2
|
||||
FORCE_SFM, //Command 3
|
||||
PUMP_CONTROL, //Command 4
|
||||
START_SFM, //Command 5
|
||||
SET_MODULE_CONFIG, //Command 6
|
||||
START_ACQUIRE, //Command 7
|
||||
STOP_ACQUIRE, //Command 8
|
||||
WRITE_CONFIG, //Command 9
|
||||
STREAM_CO2, //Stream 0
|
||||
}
|
||||
|
||||
impl MessageSpecies for FmCO2Message{}
|
168
FmCO2_objects.rs
Normal file
168
FmCO2_objects.rs
Normal file
|
@ -0,0 +1,168 @@
|
|||
use crate::datatypes;
|
||||
use super::{Object, ObjectSpecies, RawObject};
|
||||
use derive_getters::Getters;
|
||||
use derive_builder::Builder;
|
||||
|
||||
#[derive(Clone,Debug)]
|
||||
pub enum FmCO2Species{
|
||||
SpDATA
|
||||
SpCALIBRATION
|
||||
SpSTANDARD
|
||||
SpMSG_ARGUMENTS
|
||||
}
|
||||
impl ObjectSpecies for FmCO2Species{}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CCO2DData{
|
||||
Status:uint16,
|
||||
ExtStatus:uint32,
|
||||
Source:uint16,
|
||||
Mode:uint8,
|
||||
Method:uint8,
|
||||
EtCO2:OBJECT,
|
||||
FiCO2:OBJECT,
|
||||
RR:OBJECT,
|
||||
IPI:OBJECT,
|
||||
S_EtCO2:OBJECT,
|
||||
S_FiCO2:OBJECT,
|
||||
ContCO2:OBJECT,
|
||||
S_Density_5:OBJECT,
|
||||
S_Density_10:OBJECT,
|
||||
S_Density_30:OBJECT,
|
||||
ApneaIndex_Total:OBJECT,
|
||||
ApneaIndex_10_19:OBJECT,
|
||||
ApneaIndex_20_29:OBJECT,
|
||||
ApneaIndex_30:OBJECT,
|
||||
DesatCount:OBJECT,
|
||||
STime:TIME,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ExtStatus{
|
||||
#[default]
|
||||
INITIALIZATION,
|
||||
SFM_REQUIRED,
|
||||
SFM_IN_PROGRESS,
|
||||
PURGING_IN_PROGRESS,
|
||||
FILTER_LINE_NO_CONNECT,
|
||||
CHECK_CALIBRATION,
|
||||
CHECK_FLOW,
|
||||
OCCLUSION_IN_GAS_LINE,
|
||||
TEMPERATURE_OUT_OF_RANGE,
|
||||
PUMP_OFF,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
BREATH_DETECTED,
|
||||
INTERVAL,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
}
|
||||
|
||||
impl Object for CCO2DData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species:CCO2DData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CCO2CCal{
|
||||
Status:uint32,
|
||||
Method:uint8,
|
||||
GasConcentration:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
IN_PROGRESS,
|
||||
NOT_READY,
|
||||
CALCULATING,
|
||||
COMPLETE_ERROR,
|
||||
COMPLETE_SUCCESS,
|
||||
USER_ABORT,
|
||||
MEASUREMENT_ERROR,
|
||||
AZ_FAIL,
|
||||
GAS_CONCENTRATION_CHECK,
|
||||
GAS_FLOW_UNSTABLE,
|
||||
CALIBRATION_FAILURE,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
REGULAR_CALIBRATION,
|
||||
SPECIAL_FACTORY_CALIBRATION,
|
||||
CALIBRATION_CHECK,
|
||||
}
|
||||
|
||||
impl Object for CCO2CCal{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species:CCO2CCal) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CCO2CStd{
|
||||
DisplayUnits:uint16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum DisplayUnits{
|
||||
#[default]
|
||||
UNITS_MMHG,
|
||||
UNITS_KPA,
|
||||
}
|
||||
|
||||
impl Object for CCO2CStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species:CCO2CStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CCO2PMsgArg{
|
||||
IOParameterA:uint16,
|
||||
IOParameterB:uint16,
|
||||
}
|
||||
|
||||
impl Object for CCO2PMsgArg{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species:CCO2PMsgArg) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
20
FmECG_members.rs
Normal file
20
FmECG_members.rs
Normal file
|
@ -0,0 +1,20 @@
|
|||
use super::MessageSpecies;
|
||||
|
||||
pub enum FmECGMessage{
|
||||
GET_CONFIG, //Request 0
|
||||
GET_LEADMEASUREMENT, //Request 1
|
||||
GET_MEASURMENTS, //Request 2
|
||||
GET_LEADIMPEDANCE, //Request 3
|
||||
GET_QRSCOMPLEX, //Request 4
|
||||
PUT_CONFIG, //Response 0
|
||||
PUT_LEADMEASUREMENT, //Response 1
|
||||
PUT_MEASUREMENTS, //Response 2
|
||||
PUT_LEADIMPEDANCE, //Response 3
|
||||
PUT_QRSCOMPLEX, //Response 4
|
||||
WRITE_CONFIG, //Command 0
|
||||
START_TEST, //Command 1
|
||||
STOP_TEST, //Command 2
|
||||
ECG_MODE, //Command 3
|
||||
}
|
||||
|
||||
impl MessageSpecies for FmECGMessage{}
|
587
FmECG_objects.rs
Normal file
587
FmECG_objects.rs
Normal file
|
@ -0,0 +1,587 @@
|
|||
use crate::datatypes;
|
||||
use super::{Object, ObjectSpecies, RawObject};
|
||||
use derive_getters::Getters;
|
||||
use derive_builder::Builder;
|
||||
|
||||
#[derive(Clone,Debug)]
|
||||
pub enum FmECGSpecies{
|
||||
SpPACER
|
||||
SpGLOBALMEASURE
|
||||
SpLEADMEASURE
|
||||
SpSTATUS
|
||||
SpRHYTHMREPORT
|
||||
SpAUTOREPORT
|
||||
SpMISCELLANEOUS
|
||||
SpSTANDARD
|
||||
SpSETTINGS
|
||||
SpSELECTOR
|
||||
}
|
||||
impl ObjectSpecies for FmECGSpecies{}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGDPacer{
|
||||
CWaveSamplePacer:OBJECT,
|
||||
CWaveDPacer:OBJECT,
|
||||
CWaveCPacer:OBJECT,
|
||||
}
|
||||
|
||||
impl Object for CECGDPacer{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGDPacer) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGDGlobalMeas{
|
||||
PDuration:uint32,
|
||||
PQDuration:uint32,
|
||||
QRSDuration:uint32,
|
||||
QTDuration:uint32,
|
||||
QTcDuration:uint32,
|
||||
QTdDuration:uint32,
|
||||
PAxis:uint32,
|
||||
QRSAxis:uint32,
|
||||
TAxis:uint32,
|
||||
HeartRate:uint32,
|
||||
POnset:uint32,
|
||||
POffset:uint32,
|
||||
QRSOnset:uint32,
|
||||
QRSOffset:uint32,
|
||||
TOffset:uint32,
|
||||
}
|
||||
|
||||
impl Object for CECGDGlobalMeas{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGDGlobalMeas) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGDLeadMeas{
|
||||
LeadIdentifier:uint16,
|
||||
PposAmp:int32,
|
||||
PnegAmp:int32,
|
||||
QDuration:int32,
|
||||
QAmp:int32,
|
||||
RDuration:int32,
|
||||
RAmp:int32,
|
||||
SDuration:int32,
|
||||
SAmp:int32,
|
||||
RAccDuration:int32,
|
||||
RAccAmp:int32,
|
||||
SAccDuration:int32,
|
||||
SAccAmp:int32,
|
||||
IDuration:int32,
|
||||
ST0:int32,
|
||||
ST20:int32,
|
||||
ST40:int32,
|
||||
ST60:int32,
|
||||
ST80:int32,
|
||||
TposAmp:int32,
|
||||
TnegAmp:int32,
|
||||
R2AccDuration:int32,
|
||||
R2AccAmp:int32,
|
||||
S2AccDuration:int32,
|
||||
S2AccAmp:int32,
|
||||
KDuration:int32,
|
||||
EndT:int32,
|
||||
QrsType:widechar,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum LeadIdentifier{
|
||||
#[default]
|
||||
I,
|
||||
II,
|
||||
III,
|
||||
AVR,
|
||||
AVL,
|
||||
AVF,
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5,
|
||||
V6,
|
||||
V7,
|
||||
V3R,
|
||||
V5R,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
V4R,
|
||||
V6R,
|
||||
V8,
|
||||
V9,
|
||||
NONE,
|
||||
}
|
||||
|
||||
impl Object for CECGDLeadMeas{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGDLeadMeas) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGDStatus{
|
||||
ElectrodeOffStatus:uint32,
|
||||
ArrhythmiaStatus:byte,
|
||||
ActiveLeads:uint32,
|
||||
Container:OBJECT,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ElectrodeOffStatus{
|
||||
#[default]
|
||||
ELECTRODE_RL,
|
||||
ELECTRODE_LL,
|
||||
ELECTRODE_RA,
|
||||
ELECTRODE_LA,
|
||||
ELECTRODE_V,
|
||||
ELECTRODE_V1,
|
||||
ELECTRODE_V2,
|
||||
ELECTRODE_V3,
|
||||
ELECTRODE_V4,
|
||||
ELECTRODE_V5,
|
||||
ELECTRODE_V6,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ActiveLeads{
|
||||
#[default]
|
||||
ECG_I,
|
||||
ECG_II,
|
||||
ECG_III,
|
||||
ECG_aVR,
|
||||
ECG_aVL,
|
||||
ECG_aVF,
|
||||
ECG_V,
|
||||
ECG_V1,
|
||||
ECG_V2,
|
||||
ECG_V3,
|
||||
ECG_V4,
|
||||
ECG_V5,
|
||||
ECG_V6,
|
||||
}
|
||||
|
||||
impl Object for CECGDStatus{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGDStatus) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGCRhythmReport{
|
||||
LeadArrangement:uint16,
|
||||
DefSpeedSetting:uint16,
|
||||
StdLeadOrder:uint8,
|
||||
AugLeadOrder:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum LeadArrangement{
|
||||
#[default]
|
||||
3LEAD,
|
||||
6LEAD,
|
||||
12LEAD,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum DefSpeedSetting{
|
||||
#[default]
|
||||
10mm_s,
|
||||
25mm_s,
|
||||
50mm_s,
|
||||
}
|
||||
|
||||
impl Object for CECGCRhythmReport{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGCRhythmReport) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGCAutoReport{
|
||||
ExtMeasurements:boolean,
|
||||
Interp:boolean,
|
||||
CopiesWithInt:boolean,
|
||||
UnconfReport:boolean,
|
||||
AbnormalEcg:boolean,
|
||||
FName:boolean,
|
||||
SLName:boolean,
|
||||
MI:boolean,
|
||||
Wt:boolean,
|
||||
Ht:boolean,
|
||||
Gender:boolean,
|
||||
Race:boolean,
|
||||
Med:boolean,
|
||||
ClinicalHist:boolean,
|
||||
BP:boolean,
|
||||
Comments:boolean,
|
||||
CustDef1:boolean,
|
||||
CustDef2:boolean,
|
||||
ReasonStatementsEnabled:boolean,
|
||||
AgeFormat:uint16,
|
||||
LeadArrangement:uint16,
|
||||
RhythLd1:uint16,
|
||||
RhythLd2:uint16,
|
||||
RhythLd3:uint16,
|
||||
AvgCycle:uint16,
|
||||
Copies:uint16,
|
||||
CustDef1Lbl:widechar,
|
||||
CustDef2Lbl:widechar,
|
||||
Physician:boolean,
|
||||
Technician:boolean,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum AgeFormat{
|
||||
#[default]
|
||||
DOB,
|
||||
AGE,
|
||||
OFF,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum LeadArrangement{
|
||||
#[default]
|
||||
3X4,
|
||||
3X4_1R,
|
||||
3X4_3R,
|
||||
6X2,
|
||||
12X1,
|
||||
6X2_50mm,
|
||||
6X2_ext,
|
||||
2X6_1R,
|
||||
NOPRINT,
|
||||
6X2_1R,
|
||||
2X6,
|
||||
3x4_25mm_5sec,
|
||||
3x4_50mm,
|
||||
3x4_50mm_5sec,
|
||||
6x2_25mm,
|
||||
6x2_50mm_5sec,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum RhythLd1{
|
||||
#[default]
|
||||
I,
|
||||
II,
|
||||
III,
|
||||
AVR,
|
||||
AVL,
|
||||
AVF,
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5,
|
||||
V6,
|
||||
OFF,
|
||||
V7,
|
||||
V3R,
|
||||
V5R,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
V4R,
|
||||
V6R,
|
||||
V8,
|
||||
V9,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum RhythLd2{
|
||||
#[default]
|
||||
I,
|
||||
II,
|
||||
III,
|
||||
AVR,
|
||||
AVL,
|
||||
AVF,
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5,
|
||||
V6,
|
||||
OFF,
|
||||
V7,
|
||||
V3R,
|
||||
V5R,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
V4R,
|
||||
V6R,
|
||||
V8,
|
||||
V9,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum RhythLd3{
|
||||
#[default]
|
||||
I,
|
||||
II,
|
||||
III,
|
||||
AVR,
|
||||
AVL,
|
||||
AVF,
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5,
|
||||
V6,
|
||||
OFF,
|
||||
V7,
|
||||
V3R,
|
||||
V5R,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
V4R,
|
||||
V6R,
|
||||
V8,
|
||||
V9,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum AvgCycle{
|
||||
#[default]
|
||||
3x4_3R,
|
||||
6x2_6R,
|
||||
NOPRINT,
|
||||
3x4_2R_25mm,
|
||||
3x4_2R,
|
||||
3x4_3R_25mm,
|
||||
2x6_1R_25mm,
|
||||
2x6_1R,
|
||||
6x2_2R,
|
||||
6x2_1R_25mm,
|
||||
6x2_1R,
|
||||
}
|
||||
|
||||
impl Object for CECGCAutoReport{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGCAutoReport) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGCMiscellaneous{
|
||||
LeadConfig:uint16,
|
||||
Mains:uint16,
|
||||
AutoExport:uint16,
|
||||
ElectrodeLbl:uint16,
|
||||
LeadTiming:uint16,
|
||||
DefGainSetting:uint16,
|
||||
DefMuscleFilter:boolean,
|
||||
DefBaselineFilter:boolean,
|
||||
BaselineCenter:boolean,
|
||||
Autosave:boolean,
|
||||
AutoReport2:boolean,
|
||||
PrintArtifactReport:boolean,
|
||||
ElectrodePlacement:uint16,
|
||||
QTcMethod:uint16,
|
||||
SaveReminder:boolean,
|
||||
DisableMains:boolean,
|
||||
ECGAutoPrint:boolean,
|
||||
ECGSetPatientDemographic:boolean,
|
||||
RemoteFolderPath:widechar,
|
||||
QRSTone:uint16,
|
||||
PrintLabel:uint16,
|
||||
PacerLead:uint16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum LeadConfig{
|
||||
#[default]
|
||||
STANDARD,
|
||||
CABRERA,
|
||||
NEHB,
|
||||
FRANK,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mains{
|
||||
#[default]
|
||||
OFF,
|
||||
50HZ,
|
||||
60HZ,
|
||||
AUTO,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum AutoExport{
|
||||
#[default]
|
||||
OFF,
|
||||
MEDIACARD,
|
||||
FAA,
|
||||
FAX,
|
||||
WORKSTATION,
|
||||
REMOTE,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ElectrodeLbl{
|
||||
#[default]
|
||||
AHA,
|
||||
IEC,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum LeadTiming{
|
||||
#[default]
|
||||
SIMOULTANEOUS,
|
||||
SEQUENTIAL,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum DefGainSetting{
|
||||
#[default]
|
||||
5mm_mv,
|
||||
10mm_mv,
|
||||
20mm_mv,
|
||||
AUTO,
|
||||
2mm5_mv,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ElectrodePlacement{
|
||||
#[default]
|
||||
STANDARD,
|
||||
ALTERNATE,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum QTcMethod{
|
||||
#[default]
|
||||
BAZETT,
|
||||
HODGES,
|
||||
FRIDERICIA,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum QRSTone{
|
||||
#[default]
|
||||
NONE,
|
||||
FREQ_1KHZ,
|
||||
FREQ_2KHZ,
|
||||
FREQ_2K67HZ,
|
||||
FREQ_3K2HZ,
|
||||
FREQ_4KHZ,
|
||||
FREQ_5K3HZ,
|
||||
FREQ_6K4HZ,
|
||||
FREQ_8KHZ,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum PrintLabel{
|
||||
#[default]
|
||||
NONE,
|
||||
PR,
|
||||
PQ,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum PacerLead{
|
||||
#[default]
|
||||
NONE,
|
||||
I,
|
||||
II,
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5,
|
||||
V6,
|
||||
V7,
|
||||
V8,
|
||||
V9,
|
||||
V3R,
|
||||
V4R,
|
||||
V5R,
|
||||
V6R,
|
||||
}
|
||||
|
||||
impl Object for CECGCMiscellaneous{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGCMiscellaneous) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGCSettings{
|
||||
ActiveLeads:uint32,
|
||||
MainsFilter:uint8,
|
||||
PacerEnabled:boolean,
|
||||
LeadMode:uint8,
|
||||
VTachThreshold:uint8,
|
||||
ImpedanceRespiration:boolean,
|
||||
AsystoleThreshold:uint16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ActiveLeads{
|
||||
#[default]
|
||||
ECG_I,
|
||||
ECG_II,
|
||||
ECG_III,
|
||||
ECG_aVR,
|
||||
ECG_aVL,
|
||||
ECG_aVF,
|
||||
ECG_V,
|
||||
ECG_V1,
|
||||
ECG_V2,
|
||||
ECG_V3,
|
||||
ECG_V4,
|
||||
ECG_V5,
|
||||
ECG_V6,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum MainsFilter{
|
||||
#[default]
|
||||
NONE,
|
||||
OFF,
|
||||
50HZ,
|
||||
60HZ,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum LeadMode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
3_LEAD,
|
||||
5_LEAD,
|
||||
}
|
||||
|
||||
impl Object for CECGCSettings{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGCSettings) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CECGPSelector{
|
||||
SpeciesSelector:uint32,
|
||||
}
|
||||
|
||||
impl Object for CECGPSelector{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies:CECGPSelector) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
52
FmNIBP_members.rs
Normal file
52
FmNIBP_members.rs
Normal file
|
@ -0,0 +1,52 @@
|
|||
use super::MessageSpecies;
|
||||
|
||||
pub enum FmNIBPMessage{
|
||||
GET_BP, //Request 0
|
||||
GET_CONFIG, //Request 1
|
||||
GET_STATUS, //Request 2
|
||||
GET_CALIBRATION, //Request 3
|
||||
GET_BP_SETTINGS, //Request 4
|
||||
GET_CHUNK, //Request 5
|
||||
GET_CHUNK_SIZE, //Request 6
|
||||
GET_MAX_CHUNK_ID, //Request 7
|
||||
GET_HARDWARE_STATE, //Request 8
|
||||
GET_TEST_LOCK, //Request 9
|
||||
GET_RAW_DATA, //Request 10
|
||||
GET_PRESSURE_DATA, //Request 11
|
||||
PUT_BP, //Response 0
|
||||
PUT_CONFIG, //Response 1
|
||||
PUT_STATUS, //Response 2
|
||||
PUT_CALIBRATION, //Response 3
|
||||
PUT_BP_SETTINGS, //Response 4
|
||||
PUT_CHUNK, //Response 5
|
||||
PUT_CHUNK_SIZE, //Response 6
|
||||
PUT_MAX_CHUNK_ID, //Response 7
|
||||
PUT_HARDWARE_STATE, //Response 8
|
||||
PUT_TEST_LOCK, //Response 9
|
||||
PUT_RAW_DATA, //Response 10
|
||||
PUT_PRESSURE_DATA, //Response 11
|
||||
START_NIBP, //Command 0
|
||||
STOP_NIBP, //Command 1
|
||||
WRITE_CONFIG, //Command 2
|
||||
ZERO_NIBP, //Command 3
|
||||
MSG_PUSH_ENABLE, //Command 4
|
||||
CLEAR_SAFTEY_STATUS, //Command 5
|
||||
CLEAR_POST_STATUS, //Command 6
|
||||
RESET_DEVICE, //Command 7
|
||||
SET_CALIBRATION, //Command 8
|
||||
SAVE_CALIBRATION, //Command 9
|
||||
LOAD_CALIBRATION, //Command 10
|
||||
RESTORE_DFLT_CALIBRATION, //Command 11
|
||||
SET_BP_SETTINGS, //Command 12
|
||||
SAVE_BP_SETTINGS, //Command 13
|
||||
LOAD_BP_SETTINGS, //Command 14
|
||||
RESTORE_DFLT_SETTINGS, //Command 15
|
||||
SET_HARDWARE_STATE, //Command 16
|
||||
PULSE_STEP_VALVE, //Command 17
|
||||
SET_TEST_LOCK, //Command 18
|
||||
REPORT_BP, //Status 0
|
||||
REPORT_BP, //Stream 0
|
||||
REPORT_STATUS, //Stream 1
|
||||
}
|
||||
|
||||
impl MessageSpecies for FmNIBPMessage{}
|
608
FmNIBP_objects.rs
Normal file
608
FmNIBP_objects.rs
Normal file
|
@ -0,0 +1,608 @@
|
|||
use crate::datatypes;
|
||||
use super::{Object, ObjectSpecies, RawObject};
|
||||
use derive_getters::Getters;
|
||||
use derive_builder::Builder;
|
||||
|
||||
#[derive(Clone,Debug)]
|
||||
pub enum FmNIBPSpecies{
|
||||
SpSTANDARD,
|
||||
SpDATA,
|
||||
SpENGCHUNK,
|
||||
SpEVENTCHUNK,
|
||||
SpHARDWARESTATE,
|
||||
SpLOCK,
|
||||
SpRAWDATA,
|
||||
SpPRESSUREDATA,
|
||||
SpSTATUS,
|
||||
SpDATAMODIFIED,
|
||||
SpCALIBRATION,
|
||||
SpSELECTOR,
|
||||
SpCHUNK_SELECTOR,
|
||||
}
|
||||
impl ObjectSpecies for FmNIBPSpecies{}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDStd{
|
||||
STime:TIME,
|
||||
Status:uint16,
|
||||
Systolic:int16,
|
||||
Diastolic:int16,
|
||||
MAP:int16,
|
||||
HR:uint16,
|
||||
ExtStatus:uint16,
|
||||
Source:uint16,
|
||||
Mode:uint8,
|
||||
Method:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ExtStatus{
|
||||
#[default]
|
||||
NONE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
CVSM,
|
||||
MODB,
|
||||
MODF,
|
||||
POEM,
|
||||
MODG,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
ADULT,
|
||||
NEONATAL,
|
||||
PEDIATRIC,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
FAST_BP,
|
||||
STEP_BP,
|
||||
NEONATAL_STEP_BP,
|
||||
LINEAR_DEFLATION_BP,
|
||||
AVERAGE_BP,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDData{
|
||||
Status:int16,
|
||||
Systolic:OBJECT::CNumDStd,
|
||||
Diastolic:OBJECT::CNumDStd,
|
||||
MAP:OBJECT::CNumDStd,
|
||||
PR:OBJECT::CNumDStd,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
RD_OK,
|
||||
RD_ABORT,
|
||||
RD_NOT_AVAIL,
|
||||
RD_SPLAT,
|
||||
RD_ARTIFACT,
|
||||
RD_LOW_INFLAT,
|
||||
RD_KINKED_TUBE,
|
||||
RD_EARLY_DUMP,
|
||||
RD_NOT_ENOUGH_DATA,
|
||||
RD_PATIENT_INVALID,
|
||||
RD_REINF_TOO_LATE,
|
||||
RD_REINF_LIMIT,
|
||||
RD_BLEED,
|
||||
RD_LEAK,
|
||||
RD_SAFETY_FAULT,
|
||||
RD_ZERO_FAULT,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDChunk{
|
||||
tag:int8,
|
||||
chunkId:uint16,
|
||||
chunkIndex:uint16,
|
||||
chunkData:uint8,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDChunk{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDChunk) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDHState{
|
||||
hardware:int16,
|
||||
state:int16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum hardware{
|
||||
#[default]
|
||||
PRIM_VALVE,
|
||||
SEC_VALVE,
|
||||
PUMP,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDHState{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDHState) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDLock{
|
||||
lock:int16,
|
||||
state:int8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum lock{
|
||||
#[default]
|
||||
AMB_TEMP_CHECK,
|
||||
PRIM_SAFETY_CHECK,
|
||||
SAFE_SAFETY_CHECK,
|
||||
SINGLE_LUMEN_CHECK,
|
||||
AD_CHANNEL,
|
||||
FAILSAFE_TEST_MODE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDLock{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDLock) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDRData{
|
||||
raw5V:uint32,
|
||||
raw1V:uint32,
|
||||
raw2V:uint32,
|
||||
raw4V:uint32,
|
||||
rawBat:int16,
|
||||
rawAmbTemp:uint32,
|
||||
rawPrimTrans:uint32,
|
||||
rawSecTrans:int16,
|
||||
rawSecBat:int16,
|
||||
rawSecCorr:int16,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDRData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDRData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDPData{
|
||||
primPress:int16,
|
||||
primPressNoise:int16,
|
||||
primAzeroOffset:int16,
|
||||
secPress:int16,
|
||||
secPressNoise:int16,
|
||||
secAzeroOffset:int16,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDPData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDPData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDStatus{
|
||||
moduleState:uint16,
|
||||
error:uint16,
|
||||
hardwareStates:uint16,
|
||||
safetyStates:uint16,
|
||||
cuffPressure:int16,
|
||||
batVoltage:int16,
|
||||
ambTemp:int16,
|
||||
statusType:int16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum moduleState{
|
||||
#[default]
|
||||
IDLE,
|
||||
AUTOZERO,
|
||||
INFLATING,
|
||||
STABILIZING,
|
||||
BLEEDING,
|
||||
DUMPING,
|
||||
REPUMP,
|
||||
ERROR,
|
||||
BOOT,
|
||||
POST,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum safetyStates{
|
||||
#[default]
|
||||
belowResidual,
|
||||
longAutoTimerClear,
|
||||
statAutoTimerClear,
|
||||
failsafeFault,
|
||||
autoZeroFault,
|
||||
transducerFault,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum statusType{
|
||||
#[default]
|
||||
NONE,
|
||||
PRIMARY,
|
||||
SECONDARY,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDStatus{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDStatus) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDDataModified{
|
||||
NIBPData:OBJECT::CNIBPDData,
|
||||
Status:uint16,
|
||||
STime:TIME,
|
||||
Mode:uint8,
|
||||
PatientPosition:uint16,
|
||||
CuffSize:uint16,
|
||||
CuffLocation:uint16,
|
||||
Source:uint16,
|
||||
Method:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
ADULT,
|
||||
NEONATAL,
|
||||
PEDIATRIC,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum PatientPosition{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
LYING,
|
||||
SITTING,
|
||||
STANDING,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum CuffSize{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
NEONATAL_1,
|
||||
NEONATAL_2,
|
||||
NEONATAL_3,
|
||||
NEONATAL_4,
|
||||
NEONATAL_5,
|
||||
SMALL_INFANT,
|
||||
INFANT,
|
||||
SMALL_CHILD,
|
||||
CHILD,
|
||||
SMALL_ADULT,
|
||||
ADULT,
|
||||
ADULT_LONG,
|
||||
LARGE_ADULT,
|
||||
LARGE_ADULT_LONG,
|
||||
THIGH,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum CuffLocation{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
LEFT_ARM,
|
||||
RIGHT_ARM,
|
||||
LEFT_LEG,
|
||||
RIGHT_LEG,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
CVSM,
|
||||
MODB,
|
||||
MODF,
|
||||
POEM,
|
||||
MODG,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
FAST_BP,
|
||||
STEP_BP,
|
||||
NEONATAL_STEP_BP,
|
||||
LINEAR_DEFLATION_BP,
|
||||
AVERAGE_BP,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDDataModified{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDDataModified) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPCStd{
|
||||
DisplayUnits:uint16,
|
||||
MAPDisplay:boolean,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum DisplayUnits{
|
||||
#[default]
|
||||
NIBP_MMHG,
|
||||
NIBP_KPA,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum MAPDisplay{
|
||||
#[default]
|
||||
DISABLE,
|
||||
ENABLE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPCStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPCStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPCData{
|
||||
dfltAdultTargPress:int16,
|
||||
dfltPedTargPress:int16,
|
||||
dfltNeoTargPress:int16,
|
||||
pedMaxPressLimit:int16,
|
||||
residualMaxPressLimit:int16,
|
||||
dfltPatientMode:int8,
|
||||
dfltAdultAlg:int8,
|
||||
dfltPedAlg:int8,
|
||||
dfltNeoAlg:int8,
|
||||
SAOEnabled:boolean,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum dfltPatientMode{
|
||||
#[default]
|
||||
ADULT,
|
||||
PEDIATRIC,
|
||||
NEONATE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPCData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPCData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPCCal{
|
||||
calType:uint8,
|
||||
calSignature:int32,
|
||||
calDateTime:TIME,
|
||||
modConfig:int16,
|
||||
spanCorr:int16,
|
||||
zeroCorr:int16,
|
||||
battCal:int16,
|
||||
tempCal:int16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum calType{
|
||||
#[default]
|
||||
NONE,
|
||||
PRIMARY,
|
||||
SECONDARY,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPCCal{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPCCal) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPPData{
|
||||
targPress:int16,
|
||||
patientMode:int8,
|
||||
cycleMode:int8,
|
||||
algorithm:int8,
|
||||
disableNeoCheck:int8,
|
||||
firstReading:boolean,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum patientMode{
|
||||
#[default]
|
||||
DEFAULT,
|
||||
ADULT,
|
||||
PEDIATRIC,
|
||||
NEONATE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum cycleMode{
|
||||
#[default]
|
||||
MANUAL,
|
||||
LONG_AUTO,
|
||||
STAT,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum algorithm{
|
||||
#[default]
|
||||
DEFAULT,
|
||||
FAST_BP,
|
||||
STEP_BP,
|
||||
NEO_BP,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CNIBPPData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPPData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPPSelector{
|
||||
Value:uint32,
|
||||
}
|
||||
|
||||
impl Object for CNIBPPSelector{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPPSelector) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPPChunkSelector{
|
||||
chunk:uint32,
|
||||
index:uint32,
|
||||
}
|
||||
|
||||
impl Object for CNIBPPChunkSelector{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPPChunkSelector) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CNIBPDExtStd{
|
||||
Container:OBJECT::ANY_CLASS,
|
||||
}
|
||||
|
||||
impl Object for CNIBPDExtStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmNIBP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATAEXT }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmNIBPSpecies:CNIBPDExtStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
15
FmSPO2_members.rs
Normal file
15
FmSPO2_members.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
use super::MessageSpecies;
|
||||
|
||||
pub enum FmSPO2Message{
|
||||
GET_SPO2, //Request 0
|
||||
GET_CONFIG, //Request 1
|
||||
PUT_SPO2, //Response 0
|
||||
PUT_CONFIG, //Response 1
|
||||
WRITE_CONFIG, //Command 0
|
||||
START_ACQUIRE, //Command 1
|
||||
STOP_ACQUIRE, //Command 2
|
||||
REPORT_SPO2, //Status 0
|
||||
STREAM_SPO2, //Stream 0
|
||||
}
|
||||
|
||||
impl MessageSpecies for FmSPO2Message{}
|
336
FmSPO2_objects.rs
Normal file
336
FmSPO2_objects.rs
Normal file
|
@ -0,0 +1,336 @@
|
|||
use crate::datatypes;
|
||||
use super::{Object, ObjectSpecies, RawObject};
|
||||
use derive_getters::Getters;
|
||||
use derive_builder::Builder;
|
||||
|
||||
#[derive(Clone,Debug)]
|
||||
pub enum FmSPO2Species{
|
||||
SpSTANDARD
|
||||
SpDATA
|
||||
SpDATAMODIFIED
|
||||
SpSELECTOR
|
||||
}
|
||||
impl ObjectSpecies for FmSPO2Species{}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSpO2DStd{
|
||||
STime:TIME,
|
||||
Status:uint16,
|
||||
Sat:uint16,
|
||||
HR:uint16,
|
||||
ExtStatus:uint16,
|
||||
Source:uint16,
|
||||
Mode:uint8,
|
||||
Method:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ExtStatus{
|
||||
#[default]
|
||||
NONE,
|
||||
SPO2_NOPROBE,
|
||||
SPO2_NOTAVAIL,
|
||||
SPO2_OUT_OF_TRACK,
|
||||
SPO2_BAD,
|
||||
SPO2_WAIT,
|
||||
SPO2_SENSOR_BAD,
|
||||
SPO2_FROZEN,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
NONIN,
|
||||
NELLCOR_MP205,
|
||||
NELLCOR_MP506,
|
||||
MASIMO_MS11,
|
||||
NELLCOR_NELL3,
|
||||
NELLCOR_NELL1,
|
||||
MASIMO_MS2011,
|
||||
MASIMO_MX,
|
||||
NELLCOR,
|
||||
NELLCOR_PMB05N,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
}
|
||||
|
||||
impl Object for CSpO2DStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species:CSpO2DStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSpO2DData{
|
||||
STime:TIME,
|
||||
ExtStatus:uint16,
|
||||
Source:uint16,
|
||||
Sat:OBJECT,
|
||||
HR:OBJECT,
|
||||
PI:OBJECT,
|
||||
Status:uint16,
|
||||
ElapsedSatSeconds:OBJECT,
|
||||
TotalSatSeconds:OBJECT,
|
||||
SatConfidence:OBJECT,
|
||||
HRConfidence:OBJECT,
|
||||
PIConfidence:OBJECT,
|
||||
PVIConfidence:OBJECT,
|
||||
PVI:OBJECT,
|
||||
Mode:uint8,
|
||||
Method:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ExtStatus{
|
||||
#[default]
|
||||
PULSE_FOUND,
|
||||
SEARCHING_FOR_BOARD,
|
||||
NO_PROBE,
|
||||
INCORRECT_PROBE,
|
||||
SEARCHING_FOR_PULSE,
|
||||
BAD_PROBE,
|
||||
PROBE_EXPIRED,
|
||||
NO_CABLE,
|
||||
INCORRECT_CABLE,
|
||||
BAD_CABLE,
|
||||
CABLE_EXPIRED,
|
||||
VALUE_NOT_ACQUIRED,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
NONIN,
|
||||
NELLCOR_MP205,
|
||||
NELLCOR_MP506,
|
||||
MASIMO_MS11,
|
||||
NELLCOR_NELL3,
|
||||
NELLCOR_NELL1,
|
||||
MASIMO_MS2011,
|
||||
MASIMO_MX,
|
||||
NELLCOR,
|
||||
NELLCOR_PMB05N,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
}
|
||||
|
||||
impl Object for CSpO2DData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species:CSpO2DData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSpO2DDataModified{
|
||||
SpO2Data:OBJECT,
|
||||
O2FlowRate:uint8,
|
||||
O2Concentration:uint8,
|
||||
O2Method:uint8,
|
||||
Location:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum O2Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
AEROSOL_HUMIDIFIED_MASK,
|
||||
FACE_TENT,
|
||||
MASK,
|
||||
NASAL_CANNULA,
|
||||
NON_REBREATHER,
|
||||
PARTIAL_REBREATHER,
|
||||
T_PIECE,
|
||||
TRACHEOSTOMY_COLLAR,
|
||||
VENTILATOR,
|
||||
VENTURI_MASK,
|
||||
ROOM_AIR,
|
||||
OXYMIZER,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Location{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
EAR,
|
||||
FINGER,
|
||||
TOE,
|
||||
FOREHEAD,
|
||||
}
|
||||
|
||||
impl Object for CSpO2DDataModified{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species:CSpO2DDataModified) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSpO2CStd{
|
||||
Enabled:boolean,
|
||||
InstalledModule:uint16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum InstalledModule{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
NONIN,
|
||||
NELLCOR_MP205,
|
||||
NELLCOR_MP506,
|
||||
MASIMO_MS11,
|
||||
NELLCOR_NELL3,
|
||||
NELLCOR_NELL1,
|
||||
MASIMO_MS2011,
|
||||
MASIMO_MX,
|
||||
NELLCOR,
|
||||
NELLCOR_PMB05N,
|
||||
}
|
||||
|
||||
impl Object for CSpO2CStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species:CSpO2CStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSpO2CData{
|
||||
SatExponent:int8,
|
||||
PIExponent:int8,
|
||||
SatAlarms:OBJECT,
|
||||
HRAlarms:OBJECT,
|
||||
FastSat:uint8,
|
||||
Sensitivity:uint8,
|
||||
AveragingTime:uint8,
|
||||
SatSecondsLimit:uint8,
|
||||
SmartTone:uint8,
|
||||
PVIExponent:int8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum FastSat{
|
||||
#[default]
|
||||
NONE,
|
||||
OFF,
|
||||
ON,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Sensitivity{
|
||||
#[default]
|
||||
NONE,
|
||||
NORMAL,
|
||||
MAXIMUM,
|
||||
APOD,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum AveragingTime{
|
||||
#[default]
|
||||
NONE,
|
||||
2_TO_4_SEC,
|
||||
4_TO_6_SEC,
|
||||
8_SEC,
|
||||
10_SEC,
|
||||
12_SEC,
|
||||
14_SEC,
|
||||
16_SEC,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum SatSecondsLimit{
|
||||
#[default]
|
||||
NONE,
|
||||
DISABLED,
|
||||
10_SEC,
|
||||
25_SEC,
|
||||
50_SEC,
|
||||
100_SEC,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum SmartTone{
|
||||
#[default]
|
||||
NONE,
|
||||
OFF,
|
||||
ON,
|
||||
}
|
||||
|
||||
impl Object for CSpO2CData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species:CSpO2CData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSpO2PSelector{
|
||||
Value:uint32,
|
||||
}
|
||||
|
||||
impl Object for CSpO2PSelector{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species:CSpO2PSelector) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
1
FmTEMP_family.rs
Normal file
1
FmTEMP_family.rs
Normal file
File diff suppressed because one or more lines are too long
59
FmTEMP_members.rs
Normal file
59
FmTEMP_members.rs
Normal file
|
@ -0,0 +1,59 @@
|
|||
use super::MessageSpecies;
|
||||
|
||||
pub enum FmTEMPMessage{
|
||||
GET_TEMP, //Request 0
|
||||
GET_CONFIG, //Request 1
|
||||
GET_ENG_STATUS, //Request 2
|
||||
STATUS, //Request 3
|
||||
GET_PROBE_INFO, //Request 4
|
||||
GET_CALIBRATION, //Request 5
|
||||
GET_SETTINGS, //Request 6
|
||||
GET_HARDWARE_STATE, //Request 7
|
||||
GET_TEST_LOCK, //Request 8
|
||||
GET_RAW_DATA, //Request 9
|
||||
GET_SAMPLE, //Request 10
|
||||
GET_TOUCH, //Request 11
|
||||
GET_THERM, //Request 12
|
||||
GET_THERMOMETER_SETTINGS, //Request 13
|
||||
PUT_TEMP, //Response 0
|
||||
PUT_CONFIG, //Response 1
|
||||
PUT_ENG_STATUS, //Response 2
|
||||
PUT_STATUS, //Response 3
|
||||
PUT_PROBE_INFO, //Response 4
|
||||
PUT_CALIBRATION, //Response 5
|
||||
PUT_SETTINGS, //Response 6
|
||||
PUT_HARDWARE_STATE, //Response 7
|
||||
PUT_TEST_LOCK, //Response 8
|
||||
PUT_RAW_DATA, //Response 9
|
||||
PUT_SAMPLE, //Response 10
|
||||
PUT_TOUCH, //Response 11
|
||||
PUT_THERM, //Response 12
|
||||
PUT_THERMOMETER_SETTINGS, //Response 13
|
||||
WRITE_CONFIG, //Command 0
|
||||
MSG_PUSH_ENABLE, //Command 1
|
||||
MSG_SET_ALG, //Command 2
|
||||
MSG_SET_MODE, //Command 3
|
||||
RESET_DEVICE, //Command 4
|
||||
SET_CALIBRATION, //Command 5
|
||||
SAVE_CALIBRATION, //Command 6
|
||||
LOAD_CALIBRATION, //Command 7
|
||||
RESTORE_DFLT_CALIBRATION, //Command 8
|
||||
SET_SETTINGS, //Command 9
|
||||
SAVE_SETTINGS, //Command 10
|
||||
LOAD_SETTINGS, //Command 11
|
||||
RESTORE_DFLT_SETTINGS, //Command 12
|
||||
SET_HARDWARE_STATE, //Command 13
|
||||
SET_TEST_LOCK, //Command 14
|
||||
SET_THERM, //Command 15
|
||||
START_ACQUIRE, //Command 16
|
||||
STOP_ACQUIRE, //Command 17
|
||||
WRITE_THERMOMETER_SETTINGS, //Command 18
|
||||
REPORT_TEMPERATURE, //Status 0
|
||||
REPORT_ENG_STATUS, //Stream 0
|
||||
REPORT_STATUS, //Stream 1
|
||||
REPORT_SAMPLE, //Stream 2
|
||||
REPORT_TOUCH, //Stream 3
|
||||
REPORT_THERM, //Stream 4
|
||||
}
|
||||
|
||||
impl MessageSpecies for FmTEMPMessage{}
|
813
FmTEMP_objects.rs
Normal file
813
FmTEMP_objects.rs
Normal file
|
@ -0,0 +1,813 @@
|
|||
use crate::datatypes;
|
||||
use super::{Object, ObjectSpecies, RawObject};
|
||||
use derive_getters::Getters;
|
||||
use derive_builder::Builder;
|
||||
|
||||
#[derive(Clone,Debug)]
|
||||
pub enum FmTEMPSpecies{
|
||||
SpSTANDARD,
|
||||
SpDATA,
|
||||
SpENGDATA,
|
||||
SpPROBEDATA,
|
||||
SpHARDWARESTATE,
|
||||
SpLOCK,
|
||||
SpRAWDATA,
|
||||
SpSTATUS,
|
||||
SpADSAMPLEDATA,
|
||||
SpTOUCHDATA,
|
||||
SpTHERMDATA,
|
||||
SpCALIBRATION,
|
||||
SpMSG_ARGUMENTS,
|
||||
SpSELECTOR,
|
||||
}
|
||||
impl ObjectSpecies for FmTEMPSpecies{}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CTempDStd{
|
||||
STime:TIME,
|
||||
Status:uint16,
|
||||
ExtStatus:uint16,
|
||||
Source:uint16,
|
||||
Mode:uint8,
|
||||
Method:uint8,
|
||||
Temperature:float,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ExtStatus{
|
||||
#[default]
|
||||
NONE,
|
||||
FINAL_POSITION,
|
||||
FINAL_OVER_TEMP,
|
||||
FINAL_OVER_TEMP_POSITION,
|
||||
FINAL_UNDER_TEMP,
|
||||
FINAL_UNDER_TEMP_POSITION,
|
||||
MONITOR_POSITION,
|
||||
MONITOR_OVER_TEMP,
|
||||
MONITOR_OVER_TEMP_POSITION,
|
||||
MONITOR_UNDER_TEMP,
|
||||
MONITOR_UNDER_TEMP_POSITION,
|
||||
CRC_FAILURE,
|
||||
COMM_FAILURE,
|
||||
FINAL_UNADJUSTED,
|
||||
BUTTON_RANGE_ERROR,
|
||||
AMB_RANGE_ERROR,
|
||||
ENTRY_RANGE_ERROR,
|
||||
TT_RANGE_ERROR,
|
||||
TT_SLOPE_RANGE_ERROR,
|
||||
OUTPUT_RANGE_ERROR,
|
||||
CAP_STABILITY_ERROR,
|
||||
CAP_ENTRY_ERROR,
|
||||
PREMATURE_BUTTON_PRESS,
|
||||
CALIBRATION,
|
||||
UNADJUSTED_NO_OFFSETS,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
SURETEMP_SW,
|
||||
SURETEMP,
|
||||
SURETEMP_PLUS,
|
||||
BRAUN_PRO4000,
|
||||
BRAUN_PRO6000,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
ORAL,
|
||||
RECTAL,
|
||||
PED_AXIL,
|
||||
CAL_KEY,
|
||||
ADULT_AXIL,
|
||||
TYMPANIC,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
PREDICT,
|
||||
MONITOR,
|
||||
IR,
|
||||
BRAUN_CALC,
|
||||
TECHNIQUE_COMPENSATION_CALC,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CTempDStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CTempDStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CTempDData{
|
||||
STime:TIME,
|
||||
Status:uint16,
|
||||
ExtStatus:uint16,
|
||||
Source:uint16,
|
||||
Mode:uint8,
|
||||
Method:uint8,
|
||||
Temperature:OBJECT::CNumDFloat,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Status{
|
||||
#[default]
|
||||
DATA_NOT_AVAIL,
|
||||
DATA_COMPLETE,
|
||||
DATA_FAILURE,
|
||||
DATA_EXCEPTION,
|
||||
DATA_PROCESSING,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum ExtStatus{
|
||||
#[default]
|
||||
NONE,
|
||||
FINAL_POSITION,
|
||||
FINAL_OVER_TEMP,
|
||||
FINAL_OVER_TEMP_POSITION,
|
||||
FINAL_UNDER_TEMP,
|
||||
FINAL_UNDER_TEMP_POSITION,
|
||||
MONITOR_POSITION,
|
||||
MONITOR_OVER_TEMP,
|
||||
MONITOR_OVER_TEMP_POSITION,
|
||||
MONITOR_UNDER_TEMP,
|
||||
MONITOR_UNDER_TEMP_POSITION,
|
||||
CRC_FAILURE,
|
||||
COMM_FAILURE,
|
||||
FINAL_UNADJUSTED,
|
||||
BUTTON_RANGE_ERROR,
|
||||
AMB_RANGE_ERROR,
|
||||
ENTRY_RANGE_ERROR,
|
||||
TT_RANGE_ERROR,
|
||||
TT_SLOPE_RANGE_ERROR,
|
||||
OUTPUT_RANGE_ERROR,
|
||||
CAP_STABILITY_ERROR,
|
||||
CAP_ENTRY_ERROR,
|
||||
PREMATURE_BUTTON_PRESS,
|
||||
CALIBRATION,
|
||||
UNADJUSTED_NO_OFFSETS,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Source{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
SURETEMP_SW,
|
||||
SURETEMP,
|
||||
SURETEMP_PLUS,
|
||||
BRAUN_PRO4000,
|
||||
BRAUN_PRO6000,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
ORAL,
|
||||
RECTAL,
|
||||
PED_AXIL,
|
||||
CAL_KEY,
|
||||
ADULT_AXIL,
|
||||
TYMPANIC,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Method{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
MANUAL,
|
||||
DEVICE,
|
||||
REMOTE,
|
||||
PREDICT,
|
||||
MONITOR,
|
||||
IR,
|
||||
BRAUN_CALC,
|
||||
TECHNIQUE_COMPENSATION_CALC,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CTempDData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CTempDData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPTempDEng{
|
||||
temp:float,
|
||||
probe_temp:float,
|
||||
heater:uint16,
|
||||
reserved_1:uint16,
|
||||
method:uint16,
|
||||
algo:uint16,
|
||||
status:uint16,
|
||||
error:uint16,
|
||||
active:uint8,
|
||||
probe_type:uint16,
|
||||
resistance:float,
|
||||
ambient_temp:float,
|
||||
ptb_resistance:float,
|
||||
battery:uint16,
|
||||
probe_temp_min:float,
|
||||
probe_temp_max:float,
|
||||
complete:uint8,
|
||||
sample:uint32,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum method{
|
||||
#[default]
|
||||
PREDICT,
|
||||
MONITOR,
|
||||
CLINICAL,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum algo{
|
||||
#[default]
|
||||
NONE,
|
||||
ORAL_ALG,
|
||||
PED_AX_ALG,
|
||||
ADULT_AX_ALG,
|
||||
RECTAL_ALG,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum status{
|
||||
#[default]
|
||||
IDLE,
|
||||
NOT_READY,
|
||||
READY,
|
||||
PREDICT,
|
||||
PREDICT_DISPLAY,
|
||||
PREDICT_POS,
|
||||
FINAL,
|
||||
FINAL_POS,
|
||||
FINAL_OVER_TEMP,
|
||||
FINAL_UNDER_TEMP,
|
||||
FINAL_OVER_TEMP_POS,
|
||||
FINAL_UNDER_TEMP_POS,
|
||||
NO_PREDICT,
|
||||
ERROR,
|
||||
MONITOR,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum error{
|
||||
#[default]
|
||||
NO_ERROR,
|
||||
ERROR_ALG_PROBE_OVER_TEMP,
|
||||
ERROR_ALG_EXCESSIVE_HTR_ENERGY,
|
||||
ERROR_ALG_OVER_AMB_TEMP,
|
||||
ERROR_ALG_UNDER_AMB_TEMP,
|
||||
ERROR_ALG_NO_PROBE_TEMP_RISE,
|
||||
ERROR_ALG_BAD_PROBE_GAIN,
|
||||
ERROR_ALG_BAD_PROBE_RESP_VAL,
|
||||
ERROR_HTR_ON_NOT_OFF,
|
||||
ERROR_HTR_OFF_NOT_ON,
|
||||
ERROR_HTR_VOLT_HIGH_Q,
|
||||
ERROR_HTR_VOLT_Q_HIGH_IMP,
|
||||
ERROR_HTR_VOLT_LOW,
|
||||
ERROR_HTR_FAILSAFE,
|
||||
ERROR_AD_PULSE_LONG,
|
||||
ERROR_AD_PULSE_SHORT,
|
||||
ERROR_AD_RCAL_LONG,
|
||||
ERROR_AD_RCAL_SHORT,
|
||||
ERROR_AD_PTB_OVER,
|
||||
ERROR_AD_PTB_UNDER,
|
||||
ERROR_AD_TIMEOUT,
|
||||
ERROR_CFG_XFER,
|
||||
ERROR_CFG_SET_CRC,
|
||||
ERROR_CFG_PROBE_CRC,
|
||||
ERROR_CFG_CAL_CRC,
|
||||
ERROR_CFG_LOG_CRC,
|
||||
ERROR_CFG_NO_PROBE,
|
||||
ERROR_CFG_UNIT_PROBE,
|
||||
ERROR_CFG_ACK,
|
||||
ERROR_CFG_INIT,
|
||||
ERROR_BAT_HIGH,
|
||||
ERROR_BAT_LOW,
|
||||
ERROR_BAD_VIBES,
|
||||
ERROR_NO_PROBE_WELL,
|
||||
ERROR_POST_FAIL,
|
||||
ERROR_INTERNAL_FAULT,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum probe_type{
|
||||
#[default]
|
||||
NO_PROBE,
|
||||
ORAL,
|
||||
RECTAL,
|
||||
CALKEY,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CSTPTempDEng{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPTempDEng) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPDProbe{
|
||||
probeType:int8,
|
||||
partNumber:int8,
|
||||
lotCode:uint32,
|
||||
lotSeqNum:int16,
|
||||
probeArrayLoc:int16,
|
||||
testPassFailCode:int16,
|
||||
calSignature:int32,
|
||||
calDateTime:TIME,
|
||||
heaterGain:float,
|
||||
heaterTimeDelay:float,
|
||||
responses:float,
|
||||
thermCalM:float,
|
||||
thermCalB:float,
|
||||
coefA:float,
|
||||
coefB:float,
|
||||
coefC:float,
|
||||
coefD:float,
|
||||
coefE:float,
|
||||
probeCycleCount:uint32,
|
||||
deviceCount:uint16,
|
||||
lastDeviceSN:int8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum probeType{
|
||||
#[default]
|
||||
ORAL,
|
||||
CALKEY,
|
||||
RECTAL,
|
||||
NONE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CSTPDProbe{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPDProbe) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPDHState{
|
||||
hardware:int16,
|
||||
state:int16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum hardware{
|
||||
#[default]
|
||||
PROBE_WELL_SW,
|
||||
PROBE_SW,
|
||||
PROBE_CONNECTED_SW,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CSTPDHState{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPDHState) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPDLock{
|
||||
lock:int16,
|
||||
state:int8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum lock{
|
||||
#[default]
|
||||
DIGITAL_INPUT_LOCK,
|
||||
AD_CHANNEL,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CSTPDLock{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPDLock) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPDRData{
|
||||
thermistor:uint32,
|
||||
PTBResistor:uint32,
|
||||
rCalResistor:uint32,
|
||||
vRef:uint32,
|
||||
}
|
||||
|
||||
impl Object for CSTPDRData{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPDRData) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPDStat{
|
||||
state:uint16,
|
||||
error:uint16,
|
||||
hardwareState:uint16,
|
||||
finalTemp:float,
|
||||
probeTemp:float,
|
||||
method:uint16,
|
||||
probeType:uint16,
|
||||
algorithm:uint16,
|
||||
battery:uint16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum state{
|
||||
#[default]
|
||||
IDLE,
|
||||
NOT_READY,
|
||||
READY,
|
||||
PREDICT,
|
||||
PREDICT_DISPLAY,
|
||||
PREDICT_POS,
|
||||
FINAL,
|
||||
FINAL_POS,
|
||||
FINAL_OVER_TEMP,
|
||||
FINAL_UNDER_TEMP,
|
||||
FINAL_OVER_TEMP_POS,
|
||||
FINAL_UNDER_TEMP_POS,
|
||||
NO_PREDICT,
|
||||
ERROR,
|
||||
MONITOR,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum error{
|
||||
#[default]
|
||||
NO_ERROR,
|
||||
ERROR_ALG_PROBE_OVER_TEMP,
|
||||
ERROR_ALG_EXCESSIVE_HTR_ENERGY,
|
||||
ERROR_ALG_OVER_AMB_TEMP,
|
||||
ERROR_ALG_UNDER_AMB_TEMP,
|
||||
ERROR_ALG_NO_PROBE_TEMP_RISE,
|
||||
ERROR_ALG_BAD_PROBE_GAIN,
|
||||
ERROR_ALG_BAD_PROBE_RESP_VAL,
|
||||
ERROR_HTR_ON_NOT_OFF,
|
||||
ERROR_HTR_OFF_NOT_ON,
|
||||
ERROR_HTR_VOLT_HIGH_Q,
|
||||
ERROR_HTR_VOLT_Q_HIGH_IMP,
|
||||
ERROR_HTR_VOLT_LOW,
|
||||
ERROR_HTR_FAILSAFE,
|
||||
ERROR_AD_PULSE_LONG,
|
||||
ERROR_AD_PULSE_SHORT,
|
||||
ERROR_AD_RCAL_LONG,
|
||||
ERROR_AD_RCAL_SHORT,
|
||||
ERROR_AD_PTB_OVER,
|
||||
ERROR_AD_PTB_UNDER,
|
||||
ERROR_AD_TIMEOUT,
|
||||
ERROR_CFG_XFER,
|
||||
ERROR_CFG_SET_CRC,
|
||||
ERROR_CFG_PROBE_CRC,
|
||||
ERROR_CFG_CAL_CRC,
|
||||
ERROR_CFG_LOG_CRC,
|
||||
ERROR_CFG_NO_PROBE,
|
||||
ERROR_CFG_UNIT_PROBE,
|
||||
ERROR_CFG_ACK,
|
||||
ERROR_CFG_INIT,
|
||||
ERROR_BAT_HIGH,
|
||||
ERROR_BAT_LOW,
|
||||
ERROR_BAD_VIBES,
|
||||
ERROR_NO_PROBE_WELL,
|
||||
ERROR_POST_FAIL,
|
||||
ERROR_INTERNAL_FAULT,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum hardwareState{
|
||||
#[default]
|
||||
probeConnected,
|
||||
probePulled,
|
||||
probeWellIn,
|
||||
savingCal,
|
||||
savingSettings,
|
||||
takeReadingActive,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum method{
|
||||
#[default]
|
||||
PREDICT,
|
||||
MONITOR,
|
||||
CLINICAL,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum probeType{
|
||||
#[default]
|
||||
NO_PROBE,
|
||||
ORAL,
|
||||
RECTAL,
|
||||
CALKEY,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum algorithm{
|
||||
#[default]
|
||||
NONE,
|
||||
ORAL_ALG,
|
||||
PED_AX_ALG,
|
||||
ADULT_AX_ALG,
|
||||
RECTAL_ALG,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CSTPDStat{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPDStat) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPDSample{
|
||||
channel:uint8,
|
||||
error:uint8,
|
||||
sample:uint32,
|
||||
data:uint32,
|
||||
temperature:float,
|
||||
resistance:float,
|
||||
last_rcal:uint32,
|
||||
}
|
||||
|
||||
impl Object for CSTPDSample{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPDSample) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CTempDTouch{
|
||||
ele0:uint16,
|
||||
ele1:uint16,
|
||||
ele2:uint16,
|
||||
touchStatus:uint16,
|
||||
ele0bv:uint8,
|
||||
ele1bv:uint8,
|
||||
ele2bv:uint8,
|
||||
hardwareStateIR:uint16,
|
||||
sampleCount:uint32,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum hardwareStateIR{
|
||||
#[default]
|
||||
TAKE_READING_ACTIVE,
|
||||
PROBE_COVER_ON,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CTempDTouch{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CTempDTouch) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CTempDTherm{
|
||||
ambient:float,
|
||||
ambient_count:int32,
|
||||
thermopile:float,
|
||||
thermopile_count:int32,
|
||||
sampleCount:uint32,
|
||||
heaterPWM:int16,
|
||||
heaterState:int16,
|
||||
heaterError:int16,
|
||||
braun_ambient:float,
|
||||
TCValue:float,
|
||||
pre_num:uint8,
|
||||
post_num:uint8,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum heaterState{
|
||||
#[default]
|
||||
IDLE,
|
||||
HEATER_TEST,
|
||||
HEATER_ON,
|
||||
READY,
|
||||
ERROR,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CTempDTherm{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CTempDTherm) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CTempCStd{
|
||||
Enabled:boolean,
|
||||
InstalledModule:uint16,
|
||||
DisplayUnits:uint16,
|
||||
Mode:uint16,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum InstalledModule{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
SURETEMP_SW,
|
||||
SURETEMP,
|
||||
SURETEMP_PLUS,
|
||||
BRAUN_PRO4000,
|
||||
BRAUN_PRO6000,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum DisplayUnits{
|
||||
#[default]
|
||||
DEG_F,
|
||||
DEG_C,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum Mode{
|
||||
#[default]
|
||||
NONE,
|
||||
UNKNOWN,
|
||||
ORAL,
|
||||
ADULT_AXIL,
|
||||
PED_AXIL,
|
||||
LAST,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CTempCStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CTempCStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPCStd{
|
||||
clinicalPause:uint16,
|
||||
deviceType:uint8,
|
||||
dfltAlgorithm:uint8,
|
||||
ambientBias:float,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum deviceType{
|
||||
#[default]
|
||||
PREDICT_DEVICE,
|
||||
MONITOR_DEVICE,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug,Default)]
|
||||
pub enum dfltAlgorithm{
|
||||
#[default]
|
||||
ORAL,
|
||||
PED_AXILLARY,
|
||||
ADULT_AXILLARY,
|
||||
LAST,
|
||||
#[getter(skip)]
|
||||
raw_object:RawObject,
|
||||
}
|
||||
|
||||
impl Object for CSTPCStd{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPCStd) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPCCal{
|
||||
signature:uint32,
|
||||
dateTime:TIME,
|
||||
modConfig:float,
|
||||
Yp0:float,
|
||||
Rp0:float,
|
||||
RPTBEff:float,
|
||||
RCalEff:float,
|
||||
vRef:float,
|
||||
}
|
||||
|
||||
impl Object for CSTPCCal{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPCCal) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CTempPMsgArg{
|
||||
IOParameterA:uint32,
|
||||
IOParameterB:uint32,
|
||||
}
|
||||
|
||||
impl Object for CTempPMsgArg{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CTempPMsgArg) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
||||
#[derive(Getters,Builder,Clone)]
|
||||
pub struct CSTPPSelector{
|
||||
Value:uint32,
|
||||
}
|
||||
|
||||
impl Object for CSTPPSelector{
|
||||
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmTEMP }
|
||||
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
||||
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmTEMPSpecies:CSTPPSelector) }
|
||||
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
||||
}
|
||||
|
256
src/main.rs
256
src/main.rs
|
@ -1,13 +1,11 @@
|
|||
mod oop;
|
||||
use std::{thread::{self, JoinHandle}, io::Write};
|
||||
use roxmltree;
|
||||
use crossbeam;
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
|
||||
|
||||
let mut objects_filenames: Vec<String> = Vec::new();
|
||||
let mut messages_filenames: Vec<String> = Vec::new();
|
||||
let mut file_names: Vec<String> = Vec::new();
|
||||
let mut handles:Vec<JoinHandle<()>> = Vec::new();
|
||||
let opt = roxmltree::ParsingOptions {
|
||||
|
@ -17,8 +15,6 @@ fn main() {
|
|||
|
||||
for arg in args[1..].iter().cloned(){
|
||||
file_names.push(arg.to_string());
|
||||
objects_filenames.push(file_names.last().unwrap().trim_end_matches(".xml").to_string() + "_objects.rs");
|
||||
messages_filenames.push(file_names.last().unwrap().trim_end_matches(".xml").to_string() + "_messages.rs");
|
||||
handles.push(thread::spawn(move || {
|
||||
println!("{:?}", arg);
|
||||
if arg.to_string().contains(".xml") {
|
||||
|
@ -28,8 +24,21 @@ fn main() {
|
|||
match doc {
|
||||
Ok(doc_good) => {
|
||||
//output(parse(&doc_good));
|
||||
#[allow(unused_variables)]
|
||||
let output:oop::Family = new_parse(&doc_good).unwrap();
|
||||
//#[allow(unused_variables)]
|
||||
let family = new_parse(&doc_good).unwrap();
|
||||
let output_paths = [family.get_name() + "_objects.rs", family.get_name() + "_members.rs"];
|
||||
match crossbeam::scope(|s| {
|
||||
for output_path in output_paths {
|
||||
s.spawn(|_| {
|
||||
write_file(output_gen(family.clone(), output_path))
|
||||
});
|
||||
}
|
||||
}) {
|
||||
Ok(no_panic) => println!("Subthreads didn't panic: {:?}", no_panic),
|
||||
Err(thread_panic) => println!("Subthread panic: {:?}", thread_panic)
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
Err(doc_bad) => {
|
||||
println!("{:?}", doc_bad);
|
||||
|
@ -45,16 +54,17 @@ fn main() {
|
|||
}
|
||||
}
|
||||
fn new_parse(doc:&roxmltree::Document) -> Result<oop::Family,core::fmt::Error>{
|
||||
let current = oop::Current::new();
|
||||
let mut wrapped_family:Option<oop::Family> = None;
|
||||
let mut messages: oop::Messages = oop::Messages::new(Vec::new(), Vec::new(), Vec::new(), Vec::new(), Vec::new());
|
||||
let root = doc.root_element();
|
||||
|
||||
println!("{:?}",doc.root_element());
|
||||
println!("{:?}",doc.root_element().first_element_child());
|
||||
//println!("{:?}",doc.root_element());
|
||||
//println!("{:?}",doc.root_element().first_element_child());
|
||||
if let Some(_) = doc.root_element().first_element_child(){
|
||||
match root.tag_name().name() {
|
||||
"FAMILY" => {
|
||||
for attribute in root.attributes().filter(|attribute| { println!("{:?}",attribute.name()); attribute.name() == "name" }){
|
||||
for attribute in root.attributes().filter(|attribute| { attribute.name() == "name" }){
|
||||
println!("successful match");
|
||||
wrapped_family = Some(oop::Family::new(attribute.value().to_string(), Vec::new(), Vec::new()));
|
||||
}
|
||||
|
@ -63,7 +73,7 @@ fn new_parse(doc:&roxmltree::Document) -> Result<oop::Family,core::fmt::Error>{
|
|||
}
|
||||
|
||||
if let Some(ref mut family) = wrapped_family{
|
||||
root.children().for_each(|child| nested_parse(family, child));
|
||||
root.children().for_each(|child| nested_parse(family, child, current.clone()));
|
||||
}
|
||||
root.children().filter(|outer_child| outer_child.tag_name().name() == "MESSAGES" )
|
||||
.for_each(|message_group| {
|
||||
|
@ -73,19 +83,20 @@ fn new_parse(doc:&roxmltree::Document) -> Result<oop::Family,core::fmt::Error>{
|
|||
});
|
||||
});
|
||||
|
||||
if let Some(family) = wrapped_family{
|
||||
if let Some(mut family) = wrapped_family{
|
||||
family.push_messages(messages);
|
||||
return Ok(family);
|
||||
}
|
||||
}
|
||||
return Err(core::fmt::Error);
|
||||
}
|
||||
|
||||
fn nested_parse(input_family:&mut oop::Family, node: roxmltree::Node) {
|
||||
fn nested_parse(input_family:&mut oop::Family, node: roxmltree::Node, mut current: oop::Current) {
|
||||
if node.is_text() || node.is_comment() { return; }
|
||||
println!("{:?}",node);
|
||||
//println!("{:?}",node);
|
||||
match node.tag_name().name() {
|
||||
"SPECIES_KEY" => {
|
||||
node.children().for_each(|child| nested_parse(input_family, child));
|
||||
node.children().for_each(|child| nested_parse(input_family, child, current.clone()));
|
||||
},
|
||||
"GENUS" => {
|
||||
node.attributes()
|
||||
|
@ -95,7 +106,7 @@ fn nested_parse(input_family:&mut oop::Family, node: roxmltree::Node) {
|
|||
input_family.push_genus(oop::Genus::new(attr.value().to_string(), Vec::new()));
|
||||
};
|
||||
});
|
||||
node.children().for_each(|child| nested_parse(input_family, child));
|
||||
node.children().for_each(|child| nested_parse(input_family, child, current.clone()));
|
||||
},
|
||||
"SPECIES" => {
|
||||
input_family.get_genera().last_mut().unwrap()
|
||||
|
@ -106,20 +117,20 @@ fn nested_parse(input_family:&mut oop::Family, node: roxmltree::Node) {
|
|||
));
|
||||
},
|
||||
"DEFINITION" => {
|
||||
let Some(attr_family) = node.attribute("family")
|
||||
else { todo!() };
|
||||
let Some(attr_genus) = node.attribute("genus")
|
||||
else { todo!() };
|
||||
let Some(attr_species) = node.attribute("species")
|
||||
else { todo!() };
|
||||
if attr_family != input_family.get_name() {
|
||||
current.attr_family = node.attribute("family").unwrap().to_string();
|
||||
current.attr_genus = node.attribute("genus").unwrap().to_string();
|
||||
current.attr_species = node.attribute("species").unwrap().to_string();
|
||||
if current.attr_family != input_family.get_name() {
|
||||
println!("Inconsistent family naming scheme. Check XML file.");
|
||||
panic!();
|
||||
}
|
||||
input_family.get_genera().as_mut_slice().iter_mut().filter(|genus| genus.get_name().as_str() == attr_genus)
|
||||
input_family.get_genera().as_mut_slice().iter_mut()
|
||||
.filter(|genus| genus.get_name().as_str() == current.attr_genus)
|
||||
.for_each(|genus| {
|
||||
genus.get_species().as_mut_slice().iter_mut().filter(|species| species.get_name().as_str() == attr_species)
|
||||
genus.get_species().as_mut_slice().iter_mut()
|
||||
.filter(|species| species.get_name().as_str() == current.attr_species)
|
||||
.for_each(|species|{
|
||||
current.attr_object = node.attribute("class").unwrap().to_string();
|
||||
species.push_object(oop::Object::new(
|
||||
node.attribute("class").unwrap().to_string(),
|
||||
node.attribute("abrv").unwrap().to_string(),
|
||||
|
@ -129,42 +140,47 @@ fn nested_parse(input_family:&mut oop::Family, node: roxmltree::Node) {
|
|||
});
|
||||
}
|
||||
);
|
||||
node.children().for_each(|child| nested_parse(input_family, child));
|
||||
node.children().for_each(|child| nested_parse(input_family, child, current.clone()));
|
||||
},
|
||||
"MEMBERS" => {
|
||||
node.children().for_each(|child| nested_parse(input_family, child));
|
||||
node.children().for_each(|child| nested_parse(input_family, child, current.clone()));
|
||||
},
|
||||
"MEMBER" => {
|
||||
input_family.get_genera().as_mut_slice().iter_mut()
|
||||
.filter(|genus| genus.get_name().as_str() == current.attr_genus)
|
||||
.for_each(|genus| {
|
||||
genus.get_species().as_mut_slice().iter_mut()
|
||||
.filter(|species| species.get_name().as_str() == current.attr_species)
|
||||
.for_each(|species|{
|
||||
species.get_objects().as_mut_slice().iter_mut()
|
||||
.for_each(|object| {
|
||||
object.push_object_member(oop::ObjectMember::new(
|
||||
current.attr_member = node.attribute("name").unwrap().to_string();
|
||||
species.get_objects().last_mut().unwrap().push_object_member(oop::ObjectMember::new(
|
||||
node.attribute("type").unwrap().to_string(),
|
||||
node.attribute("name").unwrap().to_string(),
|
||||
node.attribute("class").unwrap_or("").to_string(),
|
||||
node.attribute("minversion").unwrap().to_string(),
|
||||
node.attribute("maxversion").unwrap().to_string(),
|
||||
Vec::new(),
|
||||
node.attribute("format").unwrap_or("").to_string()
|
||||
));
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
"ENUMERATION" => {
|
||||
node.children().for_each(|child| nested_parse(input_family, child));
|
||||
current.attr_member = node.attribute("name").unwrap().to_string();
|
||||
node.children().for_each(|child| nested_parse(input_family, child, current.clone()));
|
||||
},
|
||||
"ENUM" => {
|
||||
input_family.get_genera().as_mut_slice().iter_mut()
|
||||
.filter(|genus| genus.get_name().as_str() == current.attr_genus)
|
||||
.for_each(|genus| {
|
||||
genus.get_species().as_mut_slice().iter_mut()
|
||||
.filter(|species| species.get_name().as_str() == current.attr_species)
|
||||
.for_each(|species|{
|
||||
species.get_objects().as_mut_slice().iter_mut()
|
||||
species.get_objects().as_mut_slice().iter_mut().filter(|object| object.get_name().as_str() == current.attr_object)
|
||||
.for_each(|object| {
|
||||
object.get_members().as_mut_slice().iter_mut()
|
||||
object.get_members().as_mut_slice().iter_mut().filter(|member| member.get_member_name().as_str() == current.attr_member)
|
||||
.for_each(|member| {
|
||||
member.get_enumerations().push(
|
||||
oop::MemberEnumeration::new(
|
||||
|
@ -187,13 +203,170 @@ fn nested_parse(input_family:&mut oop::Family, node: roxmltree::Node) {
|
|||
}
|
||||
}
|
||||
|
||||
fn output(family: oop::Family) {
|
||||
let mut write_string = String::new();
|
||||
fn output_gen(family: oop::Family, output_path: String) -> (String, String){
|
||||
let mut write_string: String;
|
||||
|
||||
//TODO: Append contents of file, including line breaks and spacing where necessary to
|
||||
//write_string
|
||||
match output_path.as_str() {
|
||||
o if o.contains("objects") => {
|
||||
write_string = format!(
|
||||
"{}{}{}",
|
||||
"use crate::datatypes;\nuse super::{Object, ObjectSpecies, RawObject};\nuse derive_getters::Getters;\nuse derive_builder::Builder;\n\n#[derive(Clone,Debug)]\npub enum ",
|
||||
family.get_name().as_str(),
|
||||
"Species{\n"
|
||||
);
|
||||
for species_name in family.list_species() {
|
||||
write_string = format!(
|
||||
"{}{}{}{}",
|
||||
write_string,
|
||||
"\t",
|
||||
species_name,
|
||||
",\n"
|
||||
);
|
||||
}
|
||||
write_string = format!(
|
||||
"{}{}{}{}",
|
||||
write_string,
|
||||
"}\nimpl ObjectSpecies for ",
|
||||
family.get_name().as_str(),
|
||||
"Species{}\n\n"
|
||||
);
|
||||
let mut genus_name:String;
|
||||
for genus in family.clone().get_genera() {
|
||||
genus_name = genus.get_name();
|
||||
for species in genus.get_species() {
|
||||
for object in species.get_objects() {
|
||||
write_string = format!(
|
||||
"{}{}{}{}",
|
||||
write_string,
|
||||
"#[derive(Getters,Builder,Clone)]\npub struct ",
|
||||
object.get_name(),
|
||||
"{\n"
|
||||
);
|
||||
let mut enums = Vec::new();
|
||||
for member in object.get_members() {
|
||||
if member.get_member_type() != "OBJECT" {
|
||||
write_string = format!(
|
||||
"{}{}{}{}{}{}",
|
||||
write_string,
|
||||
"\t",
|
||||
member.get_member_name(),
|
||||
":",
|
||||
member.get_member_type(),
|
||||
",\n"
|
||||
);
|
||||
} else {
|
||||
write_string = format!(
|
||||
"{}{}{}{}{}{}{}{}",
|
||||
write_string,
|
||||
"\t",
|
||||
member.get_member_name(),
|
||||
":",
|
||||
member.get_member_type(),
|
||||
"::",
|
||||
member.get_member_class(),
|
||||
",\n"
|
||||
);
|
||||
}
|
||||
if !member.get_enumerations().is_empty() && member.get_enumerations().first().unwrap().get_name() != "" {
|
||||
enums.push(member)
|
||||
}
|
||||
}
|
||||
|
||||
if !enums.is_empty() {
|
||||
for member in enums {
|
||||
write_string = format!(
|
||||
"{}{}{}{}",
|
||||
write_string,
|
||||
"}\n\n#[derive(Clone,Copy,Debug,Default)]\npub enum ",
|
||||
member.get_member_name(),
|
||||
"{\n\t#[default]\n"
|
||||
);
|
||||
for e in member.get_enumerations() {
|
||||
write_string = format!(
|
||||
"{}{}{}{}",
|
||||
write_string,
|
||||
"\t",
|
||||
e.get_name(),
|
||||
",\n"
|
||||
);
|
||||
}
|
||||
write_string = format!(
|
||||
"{}{}",
|
||||
write_string,
|
||||
"\t#[getter(skip)]\n\traw_object:RawObject,\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
write_string = format!(
|
||||
"{}{}{}{}{}{}{}{}{}{}{}{}",
|
||||
write_string,
|
||||
"}\n\nimpl Object for ",
|
||||
object.get_name(),
|
||||
"{\n\tfn get_family(&self) -> datatypes::Family { datatypes::Family::",
|
||||
family.get_name(),
|
||||
" }\n\tfn get_genus(&self) -> datatypes::Genus { datatypes::Genus::",
|
||||
genus_name,
|
||||
" }\n\tfn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(",
|
||||
family.get_name().as_str(),
|
||||
"Species:",
|
||||
object.get_name(),
|
||||
") }\n\tfn get_raw_object(&self) -> RawObject { self.raw_object.clone() }\n}\n\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
m if m.contains("members") => {
|
||||
write_string = format!(
|
||||
"{}{}{}",
|
||||
"use super::MessageSpecies;\n\npub enum ",
|
||||
family.get_name().as_str(), "Message{\n"
|
||||
);
|
||||
for messages in family.get_messages() {
|
||||
#[allow(unused_assignments)]
|
||||
let mut message_type = "";
|
||||
match family.get_messages().iter().position(|x| x.eq(&messages)) {
|
||||
Some(0) => message_type = "Request",
|
||||
Some(1) => message_type = "Response",
|
||||
Some(2) => message_type = "Command",
|
||||
Some(3) => message_type = "Status",
|
||||
Some(4) => message_type = "Stream",
|
||||
None => panic!("When writing file, message type error"),
|
||||
Some(_) => panic!("When writing file, message type error")
|
||||
}
|
||||
let mut message_num = 0x00;
|
||||
for message in messages {
|
||||
write_string = format!(
|
||||
"{}{}{}{}{}{}{}{}",
|
||||
write_string,
|
||||
"\t",
|
||||
message,
|
||||
",\t\t\t//",
|
||||
message_type,
|
||||
" ",
|
||||
message_num,
|
||||
"\n"
|
||||
);
|
||||
message_num += 0x01;
|
||||
}
|
||||
}
|
||||
write_string = format!(
|
||||
"{}{}{}{}",
|
||||
write_string,
|
||||
"}\n\nimpl MessageSpecies for ",
|
||||
family.get_name().as_str(), "Message{}"
|
||||
);
|
||||
|
||||
},
|
||||
&_ => panic!("Output path format error")
|
||||
}
|
||||
|
||||
let output_path = family.get_name() + "_family.rs";
|
||||
return (write_string, output_path);
|
||||
}
|
||||
|
||||
fn write_file(args: (String, String)) {
|
||||
let write_string = args.0;
|
||||
let output_path = args.1;
|
||||
if !std::path::Path::new(&output_path).exists(){
|
||||
let file_create_return = std::fs::File::create(&output_path);
|
||||
match file_create_return {
|
||||
|
@ -212,7 +385,7 @@ fn output(family: oop::Family) {
|
|||
let write_result = output_file.write_all(write_string.as_bytes());
|
||||
match write_result{
|
||||
Err(write_error) => {
|
||||
println!("Failed to write to file! Error: {:?}",write_error);
|
||||
println!("Failed to write to file! Error: {:?}", write_error);
|
||||
todo!();
|
||||
}
|
||||
_ => {}
|
||||
|
@ -224,5 +397,4 @@ fn output(family: oop::Family) {
|
|||
todo!();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
61
src/oop.rs
61
src/oop.rs
|
@ -1,5 +1,6 @@
|
|||
use phf::phf_ordered_map;
|
||||
use crate::roxmltree::Node;
|
||||
use std::fmt;
|
||||
|
||||
const MESSAGETYPE: phf::OrderedMap<&'static str, &'static str> = phf_ordered_map! {
|
||||
"Request" => "requests",
|
||||
|
@ -51,6 +52,24 @@ impl Family {
|
|||
self.messages.push(messages.statuses);
|
||||
self.messages.push(messages.streams);
|
||||
}
|
||||
|
||||
pub fn list_species(&self) -> Vec<String> {
|
||||
let mut list: Vec<String> = Vec::new();
|
||||
for genus in &self.genera {
|
||||
for species in &genus.species {
|
||||
if !list.contains(&species.get_name()) {
|
||||
list.push(species.get_name())
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Family {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "Name: {}, Genera: {:?}, Messages: {:?}", self.name, self.genera, self.messages)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
|
@ -149,6 +168,7 @@ impl Object {
|
|||
pub struct ObjectMember {
|
||||
member_type: String,
|
||||
name: String,
|
||||
class: String,
|
||||
minversion: String,
|
||||
maxversion: String,
|
||||
enumerations: Vec<MemberEnumeration>,
|
||||
|
@ -156,11 +176,11 @@ pub struct ObjectMember {
|
|||
}
|
||||
|
||||
impl ObjectMember {
|
||||
pub fn new(member_type: String, name: String, minversion: String, maxversion: String, enumerations: Vec<MemberEnumeration>, format: String) -> Self {
|
||||
Self { member_type, name, minversion, maxversion, enumerations, format }
|
||||
pub fn new(member_type: String, name: String, class: String, minversion: String, maxversion: String, enumerations: Vec<MemberEnumeration>, format: String) -> Self {
|
||||
Self { member_type, name, class, minversion, maxversion, enumerations, format }
|
||||
}
|
||||
|
||||
pub fn get_name(&self) -> String{
|
||||
pub fn get_member_name(&self) -> String{
|
||||
return self.name.clone()
|
||||
}
|
||||
|
||||
|
@ -169,6 +189,10 @@ impl ObjectMember {
|
|||
return self.member_type.clone()
|
||||
}
|
||||
|
||||
pub fn get_member_class(&self) -> String{
|
||||
return self.class.clone();
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
pub fn get_minversion(&self) -> String{
|
||||
return self.minversion.clone()
|
||||
|
@ -190,8 +214,12 @@ impl ObjectMember {
|
|||
}
|
||||
|
||||
#[allow(unused)]
|
||||
pub fn get_format(&mut self) -> &mut String{
|
||||
return &mut self.format
|
||||
pub fn get_format(&self) -> Option<String>{
|
||||
if self.class != "" {
|
||||
return None;
|
||||
} else {
|
||||
return Some(self.format.clone());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -218,7 +246,7 @@ impl MemberEnumeration {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Messages {
|
||||
requests: Vec<String>,
|
||||
responses: Vec<String>,
|
||||
|
@ -280,4 +308,25 @@ impl Messages {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub(crate) struct Current {
|
||||
pub attr_family:String,
|
||||
pub attr_genus:String,
|
||||
pub attr_species:String,
|
||||
pub attr_object:String,
|
||||
pub attr_member:String,
|
||||
}
|
||||
|
||||
impl Current {
|
||||
pub fn new() -> Self{
|
||||
Current {
|
||||
attr_family: "".to_string(),
|
||||
attr_genus: "".to_string(),
|
||||
attr_member: "".to_string(),
|
||||
attr_object: "".to_string(),
|
||||
attr_species: "".to_string()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue