167f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood/*
267f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * Copyright (C) 2014 The Android Open Source Project
367f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood *
467f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
567f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * you may not use this file except in compliance with the License.
667f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * You may obtain a copy of the License at
767f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood *
867f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
967f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood *
1067f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * Unless required by applicable law or agreed to in writing, software
1167f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
1267f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1367f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * See the License for the specific language governing permissions and
1467f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * limitations under the License.
1567f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood */
1667f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood
17b673770f7172d4fca9bc05de1f36bc53e93eb247Mike Lockwoodpackage android.media.midi;
1867f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood
1967f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood/**
2067f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * Interface provided by a device to allow attaching
2167f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood * MidiReceivers to a MIDI device.
2267f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood */
233b7664589be22ddad34b72e11ced937d48660ebbMike Lockwoodabstract public class MidiSender {
247eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood
257eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    /**
267eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     * Connects a {@link MidiReceiver} to the sender
277eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     *
287eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     * @param receiver the receiver to connect
297eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     */
307eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    public void connect(MidiReceiver receiver) {
317eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood        if (receiver == null) {
327eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood            throw new NullPointerException("receiver null in MidiSender.connect");
337eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood        }
347eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood        onConnect(receiver);
357eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    }
367eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood
377eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    /**
387eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     * Disconnects a {@link MidiReceiver} from the sender
397eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     *
407eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     * @param receiver the receiver to disconnect
417eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood     */
427eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    public void disconnect(MidiReceiver receiver) {
437eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood        if (receiver == null) {
447eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood            throw new NullPointerException("receiver null in MidiSender.disconnect");
457eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood        }
467eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood        onDisconnect(receiver);
477eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    }
487eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood
4978beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood    /**
5078beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     * Called to connect a {@link MidiReceiver} to the sender
5178beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     *
5278beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     * @param receiver the receiver to connect
5378beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     */
547eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    abstract public void onConnect(MidiReceiver receiver);
5578beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood
5678beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood    /**
5778beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     * Called to disconnect a {@link MidiReceiver} from the sender
5878beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     *
5978beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     * @param receiver the receiver to disconnect
6078beecffc3ea477b55b65d530e4868dd44b5e71bMike Lockwood     */
617eb441cb4abcd3230a4d243469c5044f49e707c8Mike Lockwood    abstract public void onDisconnect(MidiReceiver receiver);
6267f8e8bd8927f24147d7a1edd6ec3db1a54233b2Mike Lockwood}
63