19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.bluetooth; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.bluetooth.AtCommandResult; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handler Interface for {@link AtParser}.<p> 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class AtCommandHandler { 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handle Basic commands "ATA".<p> 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * These are single letter commands such as ATA and ATD. Anything following 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the single letter command ('A' and 'D' respectively) will be passed as 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 'arg'.<p> 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For example, "ATDT1234" would result in the call 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * handleBasicCommand("T1234").<p> 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param arg Everything following the basic command character. 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The result of this command. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AtCommandResult handleBasicCommand(String arg) { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new AtCommandResult(AtCommandResult.ERROR); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handle Actions command "AT+FOO".<p> 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Action commands are part of the Extended command syntax, and are 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * typically used to signal an action on "FOO".<p> 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The result of this command. 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AtCommandResult handleActionCommand() { 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new AtCommandResult(AtCommandResult.ERROR); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handle Read command "AT+FOO?".<p> 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Read commands are part of the Extended command syntax, and are 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * typically used to read the value of "FOO".<p> 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The result of this command. 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AtCommandResult handleReadCommand() { 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new AtCommandResult(AtCommandResult.ERROR); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handle Set command "AT+FOO=...".<p> 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set commands are part of the Extended command syntax, and are 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * typically used to set the value of "FOO". Multiple arguments can be 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sent.<p> 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AT+FOO=[<arg1>[,<arg2>[,...]]]<p> 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Each argument will be either numeric (Integer) or String. 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * handleSetCommand is passed a generic Object[] array in which each 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * element will be an Integer (if it can be parsed with parseInt()) or 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * String.<p> 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Missing arguments ",," are set to empty Strings.<p> 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param args Array of String and/or Integer's. There will always be at 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * least one element in this array. 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The result of this command. 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Typically used to set this paramter 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AtCommandResult handleSetCommand(Object[] args) { 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new AtCommandResult(AtCommandResult.ERROR); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handle Test command "AT+FOO=?".<p> 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Test commands are part of the Extended command syntax, and are typically 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * used to request an indication of the range of legal values that "FOO" 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can take.<p> 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * By defualt we return an OK result, to indicate that this command is at 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * least recognized.<p> 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The result of this command. 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AtCommandResult handleTestCommand() { 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new AtCommandResult(AtCommandResult.OK); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 94