1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// IPC messages for access to MIDI hardware. 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Multiply-included message file, hence no include guard. 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/common/content_export.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ipc/ipc_message_macros.h" 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ipc/param_traits_macros.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "media/midi/midi_port_info.h" 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "media/midi/midi_result.h" 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "url/gurl.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#undef IPC_MESSAGE_EXPORT 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define IPC_MESSAGE_EXPORT CONTENT_EXPORT 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define IPC_MESSAGE_START MidiMsgStart 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::MidiPortInfo) 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IPC_STRUCT_TRAITS_MEMBER(id) 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IPC_STRUCT_TRAITS_MEMBER(manufacturer) 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IPC_STRUCT_TRAITS_MEMBER(name) 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IPC_STRUCT_TRAITS_MEMBER(version) 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIPC_STRUCT_TRAITS_END() 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(media::MidiResult, media::MIDI_RESULT_LAST) 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Messages for IPC between MidiDispatcher and MidiDispatcherHost. 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Renderer request to browser for using system exclusive messages. 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_ROUTED3(MidiHostMsg_RequestSysExPermission, 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int /* client id */, 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GURL /* origin */, 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool /* user_gesture */) 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Renderer request to browser for canceling a previous permission request. 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MidiHostMsg_CancelSysExPermissionRequest, 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int /* bridge_id */, 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) GURL /* GURL of the frame */) 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Messages sent from the browser to the renderer. 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MidiMsg_SysExPermissionApproved, 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) int /* client id */, 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool /* is_allowed */) 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Messages for IPC between MidiMessageFilter and MidiHost. 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Renderer request to browser for access to MIDI services. 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL1(MidiHostMsg_StartSession, 5258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch int /* client id */) 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(MidiHostMsg_SendData, 55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) uint32 /* port */, 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<uint8> /* data */, 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch double /* timestamp */) 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Messages sent from the browser to the renderer. 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL4(MidiMsg_SessionStarted, 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int /* client id */, 63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) media::MidiResult /* result */, 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) media::MidiPortInfoList /* input ports */, 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) media::MidiPortInfoList /* output ports */) 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(MidiMsg_DataReceived, 68424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) uint32 /* port */, 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<uint8> /* data */, 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch double /* timestamp */) 71a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL1(MidiMsg_AcknowledgeSentData, 73424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) uint32 /* bytes sent */) 74