/** * Writes a data-record to the file. * @param mixed[] $msg_def * @param mixed[] $message_data * @return \Fit\Writer */ protected function writeMessageData($msg_def, $message_data) { $local_msg_type = $this->getLocalMsgType($msg_def['global_msg_number']); $this->writeRecordHeaderByte($local_msg_type, false); //en nu de velddata wegschrijven foreach ($msg_def['fields'] as $field_def) { if (isset($message_data[$field_def[\Fit\Field::NAME]])) { $val = $message_data[$field_def[\Fit\Field::NAME]]; } else { $val = null; } if (is_numeric($val) && $field_def[\Fit\Field::FACTOR] > 0) { $val /= $field_def[\Fit\Field::FACTOR]; } $big_endian = $msg_def['architecture'] === 1; switch ($field_def[\Fit\Field::TYPE_NUMBER]) { case \Fit\Core::STRING: $this->writer->writeString8((string) $val, $field_def[\Fit\Field::SIZE]); break; case \Fit\Core::SINT8: $this->writer->writeInt8($val); break; case \Fit\Core::ENUM: case \Fit\Core::UINT8Z: case \Fit\Core::UINT8: $this->writer->writeUInt8($val); break; case \Fit\Core::SINT16: $big_endian ? $this->writer->writeInt16BE($val) : $this->writer->writeInt16LE($val); break; case \Fit\Core::UINT16Z: case \Fit\Core::UINT16: $big_endian ? $this->writer->writeUInt16BE($val) : $this->writer->writeUInt16LE($val); break; case \Fit\Core::SINT32: $big_endian ? $this->writer->writeInt32BE($val) : $this->writer->writeInt32LE($val); break; case \Fit\Core::UINT32Z: case \Fit\Core::UINT32: $big_endian ? $this->writer->writeUInt32BE($val) : $this->writer->writeUInt32LE($val); break; case \Fit\Core::FLOAT32: $big_endian ? $this->writer->writeFloatBE($val) : $this->writer->writeFloatLE($val); break; case \Fit\Core::FLOAT64: $big_endian ? $this->writer->writeInt64BE($val) : $this->writer->writeInt64LE($val); break; case \Fit\Core::BYTE: default: $this->writer->write($val, $field_def[\Fit\Field::SIZE]); } } return $this; }