1f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood/* 2f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * Copyright (C) 2015 The Android Open Source Project 3f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * 4f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * you may not use this file except in compliance with the License. 6f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * You may obtain a copy of the License at 7f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * 8f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * 10f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * Unless required by applicable law or agreed to in writing, software 11f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * See the License for the specific language governing permissions and 14f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * limitations under the License. 15f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood */ 16f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood 17f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwoodpackage com.android.bluetoothmidiservice; 18f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood 19f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwoodimport android.media.midi.MidiReceiver; 20f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood 21f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood/** 22f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * This is an abstract base class that encodes MIDI data into a packet buffer. 23f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * PacketEncoder receives data via its {@link android.media.midi.MidiReceiver#onReceive} method 24f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * and notifies its client of packets to write via the {@link PacketEncoder.PacketReceiver} 25f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * interface. 26f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood */ 27f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwoodpublic abstract class PacketEncoder extends MidiReceiver { 28f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood 29f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood public interface PacketReceiver { 30f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood /** Called to write an accumulated packet. 31f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * @param buffer the packet buffer to write 32f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * @param count the number of bytes in the packet buffer to write 33f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood */ 34f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood public void writePacket(byte[] buffer, int count); 35f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood } 36f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood 37f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood /** 38f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood * Called to inform PacketEncoder when the previous write is complete. 39f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood */ 40f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood abstract public void writeComplete(); 41f0a41d1c591193fbe02c9ddbaf24c79af4da9972Mike Lockwood} 42