/** * Writes the data size to the header and a CRC checksum at the end. * @return \Fit\Writer */ protected function writeFileClosure() { //mark current writing position $offset = $this->writer->getOffset(); //move to header and write the size of the data $this->writer->setOffset(4); $data_size = $this->writer->getSize() - 14; $this->writer->writeUInt32LE($data_size); // Does not include file header or crc. Little endian format. //write 2 byte crc check at end of file $this->writer->setOffset($offset); $this->writer->writeUInt16LE(0); return $this; }
/** * Writes the frame raw data without the header. * * @param Zend_Io_Writer $writer The writer object. * @return void */ protected function _writeData($writer) { $writer->writeInt8($flags = 0); if ($this->_adjustments[self::right] > 0) { $flags = $flags | 0x1; } if ($this->_adjustments[self::left] > 0) { $flags = $flags | 0x2; } $writer->writeInt8(16)->writeUInt16BE(abs($this->_adjustments[self::right]))->writeUInt16BE(abs($this->_adjustments[self::left]))->writeUInt16BE(abs($this->_adjustments[self::peakRight]))->writeUInt16BE(abs($this->_adjustments[self::peakLeft])); if (isset($this->_adjustments[self::rightBack]) && isset($this->_adjustments[self::leftBack]) && isset($this->_adjustments[self::peakRightBack]) && isset($this->_adjustments[self::peakLeftBack])) { if ($this->_adjustments[self::rightBack] > 0) { $flags = $flags | 0x4; } if ($this->_adjustments[self::leftBack] > 0) { $flags = $flags | 0x8; } $writer->writeUInt16BE(abs($this->_adjustments[self::rightBack]))->writeUInt16BE(abs($this->_adjustments[self::leftBack]))->writeUInt16BE(abs($this->_adjustments[self::peakRightBack]))->writeUInt16BE(abs($this->_adjustments[self::peakLeftBack])); } if (isset($this->_adjustments[self::center]) && isset($this->_adjustments[self::peakCenter])) { if ($this->_adjustments[self::center] > 0) { $flags = $flags | 0x10; } $writer->writeUInt16BE(abs($this->_adjustments[self::center]))->writeUInt16BE(abs($this->_adjustments[self::peakCenter])); } if (isset($this->_adjustments[self::bass]) && isset($this->_adjustments[self::peakBass])) { if ($this->_adjustments[self::bass] > 0) { $flags = $flags | 0x20; } $writer->writeUInt16BE(abs($this->_adjustments[self::bass]))->writeUInt16BE(abs($this->_adjustments[self::peakBass])); } $writer->setOffset(0); $writer->writeInt8($flags); }