import { type DataViewReader } from "./data-view-reader.js"; /**

The Cycling Power Measurement characteristic is a variable length structure containing a Flags field, an Instantaneous Power field and, based on the contents of the Flags field, may contain one or more additional fields as shown in the table below.

*/ export interface CyclingPowerMeasurement { /** *

Format: `uint16`

*

Unit: `org.bluetooth.unit.energy.joule`

*

Unit is in kilojoules with a resolution of 1.

*/ accumulatedEnergy?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ accumulatedEnergyPresent: number; /** *

Format: `uint16`

*

Unit: `org.bluetooth.unit.moment_of_force.newton_metre`

*

Unit is in newton metres with a resolution of 1/32.

*/ accumulatedTorque?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ accumulatedTorquePresent: number; /** * | value | description | * | ----- | ----------- | * | 0 | Wheel Based | * | 1 | Crank Based | */ accumulatedTorqueSource: number; /** *

When observed with the front wheel to the right of the pedals, a value of 0 degrees represents the angle when the crank is in the 12 o'clock position and a value of 90 degrees represents the angle, measured clockwise, when the crank points towards the front wheel in a 3 o'clock position. The left crank sensor (if fitted) detects the 0? when the crank it is attached to is in the 12 o'clock position and the right sensor (if fitted) detects the 0? when the crank it is attached to is in its 12 o'clock position; thus, there is a constant 180? difference between the right crank and the left crank position signals.

*

Format: `uint16`

*

Unit: `org.bluetooth.unit.plane_angle.degree`

*

Unit is in degrees with a resolution of 1.

*/ bottomDeadSpotAngle?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ bottomDeadSpotAnglePresent: number; /** *

Format: `uint16`

*

Unit: `org.bluetooth.unit.unitless`

*/ crankRevolutionDataCumulativeCrankRevolutions?: number | undefined; /** *

Format: `uint16`

*

Unit: `org.bluetooth.unit.time.second`

*/ crankRevolutionDataLastCrankEventTime?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ crankRevolutionDataPresent: number; /** *

When observed with the front wheel to the right of the pedals, a value of 0 degrees represents the angle when the crank is in the 12 o'clock position and a value of 90 degrees represents the angle, measured clockwise, when the crank points towards the front wheel in a 3 o'clock position. The left crank sensor (if fitted) detects the 0? when the crank it is attached to is in the 12 o'clock position and the right sensor (if fitted) detects the 0? when the crank it is attached to is in its 12 o'clock position; thus, there is a constant 180? difference between the right crank and the left crank position signals.

*

Format: `uint12`

*

Unit: `org.bluetooth.unit.plane_angle.degree`

*/ extremeAnglesMaximumAngle?: number | undefined; /** *

When observed with the front wheel to the right of the pedals, a value of 0 degrees represents the angle when the crank is in the 12 o'clock position and a value of 90 degrees represents the angle, measured clockwise, when the crank points towards the front wheel in a 3 o'clock position. The left crank sensor (if fitted) detects the 0? when the crank it is attached to is in the 12 o'clock position and the right sensor (if fitted) detects the 0? when the crank it is attached to is in its 12 o'clock position; thus, there is a constant 180? difference between the right crank and the left crank position signals.

*

Format: `uint12`

*

Unit: `org.bluetooth.unit.plane_angle.degree`

*/ extremeAnglesMinimumAngle?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ extremeAnglesPresent: number; /** *

Format: `sint16`

*

Unit: `org.bluetooth.unit.force.newton`

*/ extremeForceMagnitudesMaximumForceMagnitude?: number | undefined; /** *

Format: `sint16`

*

Unit: `org.bluetooth.unit.force.newton`

*/ extremeForceMagnitudesMinimumForceMagnitude?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ extremeForceMagnitudesPresent: number; /** *

Format: `sint16`

*

Unit: `org.bluetooth.unit.moment_of_force.newton_metre`

*/ extremeTorqueMagnitudesMaximumTorqueMagnitude?: number | undefined; /** *

Format: `sint16`

*

Unit: `org.bluetooth.unit.moment_of_force.newton_metre`

*/ extremeTorqueMagnitudesMinimumTorqueMagnitude?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ extremeTorqueMagnitudesPresent: number; /** *

Format: `16bit`

* * Bit field: * * | index | size | name | * | ----- | ---- | --------------------------------- | * | 0 | 1 | Pedal Power Balance Present | * | 1 | 1 | Pedal Power Balance Reference | * | 2 | 1 | Accumulated Torque Present | * | 3 | 1 | Accumulated Torque Source | * | 4 | 1 | Wheel Revolution Data Present | * | 5 | 1 | Crank Revolution Data Present | * | 6 | 1 | Extreme Force Magnitudes Present | * | 7 | 1 | Extreme Torque Magnitudes Present | * | 8 | 1 | Extreme Angles Present | * | 9 | 1 | Top Dead Spot Angle Present | * | 10 | 1 | Bottom Dead Spot Angle Present | * | 11 | 1 | Accumulated Energy Present | * | 12 | 1 | Offset Compensation Indicator | * | 13 | 3 | Reserved for future use | * */ flags: number; /** *

Format: `sint16`

*

Unit: `org.bluetooth.unit.power.watt`

*

Unit is in watts with a resolution of 1.

*/ instantaneousPower: number; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ offsetCompensationIndicator: number; /** *

Format: `uint8`

*

Unit: `org.bluetooth.unit.percentage`

*

Unit is in percentage with a resolution of 1/2.

*/ pedalPowerBalance?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ pedalPowerBalancePresent: number; /** * | value | description | * | ----- | ----------- | * | 0 | Unknown | * | 1 | Left | */ pedalPowerBalanceReference: number; /** *

When observed with the front wheel to the right of the pedals, a value of 0 degrees represents the angle when the crank is in the 12 o'clock position and a value of 90 degrees represents the angle, measured clockwise, when the crank points towards the front wheel in a 3 o'clock position. The left crank sensor (if fitted) detects the 0? when the crank it is attached to is in the 12 o'clock position and the right sensor (if fitted) detects the 0? when the crank it is attached to is in its 12 o'clock position; thus, there is a constant 180? difference between the right crank and the left crank position signals.

*

Format: `uint16`

*

Unit: `org.bluetooth.unit.plane_angle.degree`

*

Unit is in degrees with a resolution of 1.

*/ topDeadSpotAngle?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ topDeadSpotAnglePresent: number; /** *

Format: `uint32`

*

Unit: `org.bluetooth.unit.unitless`

*/ wheelRevolutionDataCumulativeWheelRevolutions?: number | undefined; /** *

Format: `uint16`

*

Unit: `org.bluetooth.unit.time.second`

*/ wheelRevolutionDataLastWheelEventTime?: number | undefined; /** * | value | description | * | ----- | ----------- | * | 0 | False | * | 1 | True | */ wheelRevolutionDataPresent: number; } /** * The fields in the above table, reading from top to bottom, are shown in the order of LSO to MSO, where LSO = Least Significant Octet and MSO = Most Significant Octet. The Least Significant Octet represents the eight bits numbered 0 to 7. * @see {@link https://raw.githubusercontent.com/oesmith/gatt-xml/refs/heads/master/org.bluetooth.characteristic.cycling_power_measurement.xml | Cycling Power Measurement} */ export declare class CyclingPowerMeasurementImpl implements CyclingPowerMeasurement { static readonly UUID_PREFIX = 10851; static readonly TYPE_NAME = "org.bluetooth.characteristic.cycling_power_measurement"; static readonly NAME = "Cycling Power Measurement"; /** Parse from a DataView into {@link CyclingPowerMeasurement}. */ static fromDataView(dataView: DataView | DataViewReader, indexStart?: number | undefined): CyclingPowerMeasurementImpl; readonly accumulatedEnergy?: number | undefined; readonly accumulatedEnergyPresent: number; readonly accumulatedTorque?: number | undefined; readonly accumulatedTorquePresent: number; readonly accumulatedTorqueSource: number; readonly bottomDeadSpotAngle?: number | undefined; readonly bottomDeadSpotAnglePresent: number; readonly crankRevolutionDataCumulativeCrankRevolutions?: number | undefined; readonly crankRevolutionDataLastCrankEventTime?: number | undefined; readonly crankRevolutionDataPresent: number; readonly extremeAnglesMaximumAngle?: number | undefined; readonly extremeAnglesMinimumAngle?: number | undefined; readonly extremeAnglesPresent: number; readonly extremeForceMagnitudesMaximumForceMagnitude?: number | undefined; readonly extremeForceMagnitudesMinimumForceMagnitude?: number | undefined; readonly extremeForceMagnitudesPresent: number; readonly extremeTorqueMagnitudesMaximumTorqueMagnitude?: number | undefined; readonly extremeTorqueMagnitudesMinimumTorqueMagnitude?: number | undefined; readonly extremeTorqueMagnitudesPresent: number; readonly flags: number; readonly instantaneousPower: number; readonly offsetCompensationIndicator: number; readonly pedalPowerBalance?: number | undefined; readonly pedalPowerBalancePresent: number; readonly pedalPowerBalanceReference: number; readonly topDeadSpotAngle?: number | undefined; readonly topDeadSpotAnglePresent: number; readonly wheelRevolutionDataCumulativeWheelRevolutions?: number | undefined; readonly wheelRevolutionDataLastWheelEventTime?: number | undefined; readonly wheelRevolutionDataPresent: number; constructor(cyclingPowerMeasurement: CyclingPowerMeasurement); } /** Parse from a DataView into {@link CyclingPowerMeasurement}. */ export declare function cyclingPowerMeasurementFromDataView(dataView: DataView | DataViewReader, indexStart?: number): CyclingPowerMeasurement; //# sourceMappingURL=cycling-power-measurement.d.ts.map