Class PolarHrm

Description

Class to parse Polar HRM file and insert / update data to database

HRM file contains data related to 1 exercise.

The following fields are handled when present in HRM file (some fields are computed before inserting into database):

Parameters :

  • hrm_version : Version of HRM file
  • date : Date of exercise (format : YYYYMMDD)
  • start_time : Start time (format : HH:MM:SS)
  • rank : Rank of exercise in day
  • monitor_type : Type of monitor (see list of values)
  • s_mode : List of data type recorded in ('hr','rr','speed','altitude','cadence')
  • rec_interval : Recording interval in (1,5,15,30,60,...)
  • elapsed : Duration in seconds * 10
  • max_hr : Maximum heart rate (bpm)
  • rest_hr : Rest heart rate (bpm)
  • vo2max : VO2 max * 10
  • weight : Weight in Kg * 10
Exercise info (some fields are computed from HR data before inserting) :
  • rec_distance : Recorded distance in meters * 10
  • ini_hr : Initial heart rate (bpm)
  • min_hr : Minimum heart rate (bpm)
  • avg_hr : Average heart rate (bpm)
  • max_hr : Maximum heart rate (bpm)
  • end_hr : Final heart rate (bpm)
  • ini_speed : Initial speed in km/h * 10
  • min_speed : Minimum speed in km/h * 10
  • avg_speed : Average speed in km/h * 10
  • max_speed : Maximum speed in km/h * 10
  • end_speed : Final speed in km/h * 10
  • ini_cadence : Initial cadence in cycle / min
  • min_cadence : Minimum cadence in cycle / min
  • avg_cadence : Average cadence in cycle / min
  • max_cadence : Maximum cadence in cycle / min
  • end_cadence : Final cadence in cycle / min
  • avg_stride : Average stride length in centimeters
  • max_stride : Maximum stride length in centimeters
  • ini_altitude : Initial altitude in meters
  • min_altitude : Minimum altitude in meters
  • avg_altitude : Average altitude in meters
  • max_altitude : Maximum altitude in meters
  • end_altitude : Final altitude in meters
  • ascend : Ascend in meters
  • beat_sum : Number of heart beats
  • physio_energy : Physiological energy F(HR) in Kcal
  • meca_energy : Mecanical energy (movement + ground friction + air friction + cinetic + potential up - C * potential down) in Kcal
  • move_energy : Movement energy (internal energy) in calories
  • fr_grn_energy : Ground friction energy in calories
  • fr_air_energy : Air friction energy in calories
  • cin_energy : (external) kinetic energy in calories
  • up_energy : Potential (ascend only) energy in calories
  • down_energy : Potential (descend only) energy in calories (in part)
  • exercise_type : Type of exercise in ('training', 'contest')
  • mid_elapsed : Elapsed time at mid-distance in seconds * 10
  • description : Note for the exercise
Interval training elements :
  • repeat_nb : Number of repeatitions (>= 1)
  • work_distance : Work distance in meters
  • work_duration : Work duration in seconds
  • reco_distance : Recovery distance in meters
  • reco_duration : Recovery duration in seconds
Laps (some fields are computed from HR data before inserting) :
  • elapsed : Duration in seconds * 10 since exercise start
  • lap_elapsed : Duration in seconds * 10
  • distance : Recorded distance in meters
  • ini_hr : Initial heart rate (bpm)
  • min_hr : Minimum heart rate (bpm)
  • avg_hr : Average heart rate (bpm)
  • max_hr : Maximum heart rate (bpm)
  • end_hr : Final heart rate (bpm)
  • ini_speed : Initial speed in km/h * 10
  • min_speed : Minimum speed in km/h * 10
  • avg_speed : Average speed in km/h * 10
  • max_speed : Maximum speed in km/h * 10
  • end_speed : Final speed in km/h * 10
  • ini_cadence : Initial cadence in cycle / min
  • min_cadence : Minimum cadence in cycle / min
  • avg_cadence : Average cadence in cycle / min
  • max_cadence : Maximum cadence in cycle / min
  • end_cadence : Final cadence in cycle / min
  • avg_stride : Average stride length in centimeters
  • max_stride : Maximum stride length in centimeters
  • ini_altitude : Initial altitude in meters
  • min_altitude : Minimum altitude in meters
  • avg_altitude : Average altitude in meters
  • max_altitude : Maximum altitude in meters
  • end_altitude : Final altitude in meters
  • ascend : Ascend in meters
  • physio_energy : Physiological energy F(HR) in cal
  • meca_energy : Mecanical energy in cal
  • description : Note for lap
HR data : For each recording interval (or each heart beat for 'rr'), depending on s_mode:
  • hr : Heart rate (bpm)
  • speed : Speed in km/h * 10
  • cadence: Cadence in cycles / minute
  • altitude : Altitude in meters
  • rr : Heart beat duration in milliseconds

Located in /class/PolarHrm.class.php (line 153)

PolarFile
   |
   --PolarHrm
Variable Summary
array $smode
string $sport_alias
Method Summary
void PolarHrm (string $fileName, integer $userId)
void db_insert (array $exercise, [boolean $hr_data = true], [boolean $stat = true])
array parse ([boolean $header_only = false])
void _insert_lap (integer $exercise_id, string $lap_type, integer $rank, array $lap)
array _parse_block_hrdata_get ( &$buffer, integer $start, integer $nb, string $buffer)
array _parse_block_hrzones_get ( &$buffer, integer $start, integer $nb, string $buffer)
array _parse_block_intnotes_get ( &$buffer, integer $start, integer $nb, string $buffer)
array _parse_block_inttimes_get ( &$buffer, integer $start, integer $nb, string $buffer)
string _parse_block_note_get ( &$buffer, integer $start, integer $nb, string $buffer)
array _parse_block_params_get ( &$buffer, integer $start, integer $nb, string $buffer)
array _parse_block_trip_get ( &$buffer, integer $start, integer $nb, string $buffer)
Variables
array $smode (line 159)

List of recorded data types in ('hr','rr','speed','altitude','cadence')

string $sport_alias (line 165)

Sport standard alias (use to compute mechanical energy)

Inherited Variables

Inherited from PolarFile

PolarFile::$fileName
PolarFile::$userId
PolarFile::$version
Methods
Constructor PolarHrm (line 174)

Class constructor

void PolarHrm (string $fileName, integer $userId)
  • string $fileName: Polar HRM file name (full path name)
  • integer $userId: User ID (as in database)
db_insert (line 203)

Insert exercise into database

SQL tables :

  • plw_day_info (insert / update)
  • plw_exercise (insert / update)
  • plw_lap (delete / insert)
  • plw_data (delete / insert), only if data inserted
  • plw_stat (delete / insert), only if statistics inserted

void db_insert (array $exercise, [boolean $hr_data = true], [boolean $stat = true])
  • array $exercise: Structure for exercise info, laps, and data:
    • 'params' : Parameters (s-mode, interval, ...)
    • 'note' : Description of exercise
    • 'inttimes' : Data for each lap
    • 'intnotes' : Note for each lap (if any)
    • 'hrzones' : HR zones data (not used)
    • 'trip' : Trip data (not used)
    • 'hrdata' : Data for each type recorded
  • boolean $hr_data: True to store 'hrdata' in database, else false
  • boolean $stat: True to store statistics in database, else false Statistics contain (value, nb) pairs for data types: 'hr', 'speed', 'cadence', 'stride'.
parse (line 1276)

Parse Polar HRM file (parameters, note, lap times and notes, HR data)

Notes :

  • The following blocks are parsed : <params>, <note>, <inttimes>, <intnotes>, <hrzones>, <trip>, <hrdata>.
  • Data from <hrzones> and <trip> blocks is not used.

  • return: Structure for exercise data :
    • 'params' : Exercise parameters
    • 'note' : Exercise description
    • 'inttimes' : Exercise laps (there is at least 1 lap)
    • 'intnotes' : Exercise notes when present
    • 'hrzones' : HR zones
    • 'trip' : Trip information
    • 'hrdata' : Recorded data for each data type
array parse ([boolean $header_only = false])
  • boolean $header_only: True to parse 'params', 'note', and 'inttimes' blocks only, else false. True is used to display exercise information when uploadind / importing HRM files.
_insert_lap (line 1211)

Insert one lap row into plw_lap SQL table

void _insert_lap (integer $exercise_id, string $lap_type, integer $rank, array $lap)
  • integer $exercise_id: Exercise ID
  • string $lap_type: Type of lap in ('polar','distance','altitude', 'interval')
  • integer $rank: Rank of lap (from 1)
  • array $lap: Lap fields (same structure as plw_lap table)
_parse_block_hrdata_get (line 1511)

Parse <hrdata> block in HRM file

  • return: Array of recorded data values, from 0
array _parse_block_hrdata_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer
_parse_block_hrzones_get (line 1467)

Parse <hrzones> block in HRM file

  • return: Array of HR zones, from 1
array _parse_block_hrzones_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer
_parse_block_intnotes_get (line 1448)

Parse <intnotes> block in HRM file

  • return: Array of lap notes (indexed by lap number), empty if no lap note
array _parse_block_intnotes_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer
_parse_block_inttimes_get (line 1415)

Parse <inttimes> block in HRM file

  • return: Array of laps (1 to N)
array _parse_block_inttimes_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer
_parse_block_note_get (line 1399)

Parse <note> block in HRM file

  • return: Exercise note
string _parse_block_note_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer
_parse_block_params_get (line 1320)

Parse <params> block in HRM file

  • return: Array of parameters
array _parse_block_params_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer
_parse_block_trip_get (line 1488)

Parse <trip> block in HRM file

  • return: Trip structure
array _parse_block_trip_get ( &$buffer, integer $start, integer $nb, string $buffer)
  • string $buffer: Buffer with HRM file content
  • integer $start: Line number of block in buffer
  • integer $nb: Number of lines in block
  • &$buffer

Inherited Methods

Inherited From PolarFile

PolarFile::PolarFile()
PolarFile::_parse_block_get()
PolarFile::_parse_note()

Documentation generated on Sat, 28 Mar 2009 23:16:46 +0000 by phpDocumentor 1.4.1