/** * Writes a definition record to file, when necessary (not already written). * @param mixed[] $msg_def The definition of the message. * @return \Fit\Writer */ protected function writeMessageDefinition($msg_def) { $local_msg_type = $this->getLocalMsgType($msg_def['global_msg_number'], true); if ($local_msg_type !== false) { $this->writeRecordHeaderByte($local_msg_type, true); //write definition record fields $this->writer->writeUInt8(0); //reserved //architecture $this->writer->writeUInt8($msg_def['architecture']); //Architecture Type 0: Definition and Data Messages are Little Endian 1: Definition and Data Message are Big Endian $big_endian = $msg_def['architecture'] === 1; //global_msg_number if ($big_endian) { $this->writer->writeUInt16BE($msg_def['global_msg_number']); //0:65535 – Unique to each message *Endianness of this 2 Byte value is defined in the Architecture byte } else { $this->writer->writeUInt16LE($msg_def['global_msg_number']); //0:65535 – Unique to each message *Endianness of this 2 Byte value is defined in the Architecture byte } //no_of_fields $this->writer->writeUInt8(count($msg_def['fields'])); //Number of fields in the Data Message foreach ($msg_def['fields'] as $field_def) { $this->writer->writeUInt8($field_def[\Fit\Field::DEF_NUMBER]); $this->writer->writeUInt8($field_def[\Fit\Field::SIZE]); $this->writer->writeUInt8(self::bartoint(array_merge(array_slice(self::inttobar($field_def[\Fit\Field::TYPE_NUMBER]), 0, 5), array(false, false, self::$base_types[$field_def[\Fit\Field::TYPE_NUMBER]]['endian_ability'])))); } } return $this; }
/** * Writes the object data. * * @param Zend_Io_Writer $writer The writer object. * @return void */ public function write($writer) { $streamNumbersCount = count($this->_streamNumber); $this->setSize(24 + 28 + $streamNumbersCount * 2); $writer->writeGuid($this->getIdentifier())->writeInt64LE($this->getSize())->writeGuid($this->_sharingType)->writeUInt32LE($this->_dataBitrate)->writeUInt32LE($this->_bufferSize)->writeUInt16LE($streamNumbersCount); for ($i = 0; $i < $streamNumbersCount; $i++) { $writer->writeUInt16LE($this->_streamNumbers[$i]); } }
/** * Writes the object data. * * @param Zend_Io_Writer $writer The writer object. * @return void */ public function write($writer) { $priorityRecordCount = count($this->_priorityRecords); $this->setSize(24 + 2 + $priorityRecordCount * 4); $writer->writeGuid($this->getIdentifier())->writeInt64LE($this->getSize())->writeUInt16LE($priorityRecordCount); for ($i = 0; $i < $priorityRecordCount; $i++) { $writer->writeUInt16LE($this->_priorityRecords[$i]['streamNumber'])->writeUInt16LE($this->_priorityRecords[$i]['flags']); } }
/** * Writes the object data. * * @param Zend_Io_Writer $writer The writer object. * @return void */ public function write($writer) { $streamNumbersCount = count($this->_streamNumbers); $this->setSize(24 + 18 + $streamNumbersCount * 2); $writer->writeGuid($this->getIdentifier())->writeInt64LE($this->getSize())->writeGuid($this->_exclusionType)->writeUInt16LE($streamNumbersCount); for ($i = 0; $i < $streamNumbersCount; $i++) { $writer->writeUInt16LE($this->_streamNumbers[$i]); } }
/** * Writes the object data. * * @param Zend_Io_Writer $writer The writer object. * @return void */ public function write($writer) { $bitrateRecordsCount = count($this->_bitrateRecords); $this->setSize(24 + 2 + $bitrateRecordsCount * 6); $writer->writeGuid($this->getIdentifier())->writeInt64LE($this->getSize())->writeUInt16LE($bitrateRecordsCount); for ($i = 0; $i < $bitrateRecordsCount; $i++) { $writer->writeUInt16LE($this->_bitrateRecords[$i]['flags'] << 5 | $this->_bitrateRecords[$i]['streamNumber'] & 0x1f)->writeUInt32LE($this->_bitrateRecords[$i]['averageBitrate']); } }