Quelle motu-command-dsp-message-parser.c
Sprache: C
// SPDX-License-Identifier: GPL-2.0-only // // motu-command-dsp-message-parser.c - a part of driver for MOTU FireWire series // // Copyright (c) 2021 Takashi Sakamoto <o-takashi@sakamocchi.jp>
// Below models allow software to configure their DSP function by command transferred in // asynchronous transaction: // * 828 mk3 (FireWire only and Hybrid) // * 896 mk3 (FireWire only and Hybrid) // * Ultralite mk3 (FireWire only and Hybrid) // * Traveler mk3 // * Track 16 // // Isochronous packets from the above models includes messages to report state of hardware meter.
// All of data blocks don't have messages with meaningful information. switch (sfc) { case CIP_SFC_176400: case CIP_SFC_192000:
parser->interval = 4; break; case CIP_SFC_88200: case CIP_SFC_96000:
parser->interval = 2; break; case CIP_SFC_32000: case CIP_SFC_44100: case CIP_SFC_48000: default:
parser->interval = 1; break;
}
return 0;
}
#define FRAGMENT_POS 6 #define MIDI_BYTE_POS 7 #define MIDI_FLAG_POS 8 // One value of hardware meter consists of 4 messages. #define FRAGMENTS_PER_VALUE 4 #define VALUES_AT_IMAGE_END 0xffffffffffffffff
if (parser->fragment_pos == 4) { // Skip the last two quadlets since they could be // invalid value (0xffffffff) as floating point // number. if (parser->value_index <
SNDRV_FIREWIRE_MOTU_COMMAND_DSP_METER_COUNT - 2) {
u32 val = (u32)(parser->value >> 32);
parser->meter.data[parser->value_index] = val;
}
++parser->value_index;
parser->fragment_pos = 0;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.