/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package android.telephony.mbms; import android.annotation.IntDef; import android.telephony.MbmsStreamingSession; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; public class MbmsErrors { /** * Indicates that the middleware has sent an error code that is not defined in the version of * the SDK targeted by your app. This is an illegal value for the middleware to return -- it * should only ever be generated by the framework. */ public static final int UNKNOWN = -1; /** Indicates that the operation was successful. */ public static final int SUCCESS = 0; // Following errors are generated in the manager and should not be returned from the // middleware /** * Indicates that either no MBMS middleware app is installed on the device or multiple * middleware apps are installed on the device. */ public static final int ERROR_NO_UNIQUE_MIDDLEWARE = 1; /** * Indicates that the app attempted to perform an operation on an instance of * {@link android.telephony.MbmsDownloadSession} or * {@link MbmsStreamingSession} without being bound to the middleware. */ public static final int ERROR_MIDDLEWARE_NOT_BOUND = 2; /** Indicates that the middleware has died and the requested operation was not completed.*/ public static final int ERROR_MIDDLEWARE_LOST = 3; /** * Indicates errors that may be generated during initialization by the * middleware. They are applicable to both streaming and file-download use-cases. */ public static class InitializationErrors { private InitializationErrors() {} /** * Indicates that the app tried to create more than one instance each of * {@link MbmsStreamingSession} or {@link android.telephony.MbmsDownloadSession}. */ public static final int ERROR_DUPLICATE_INITIALIZE = 101; /** Indicates that the app is not authorized to access media via MBMS.*/ public static final int ERROR_APP_PERMISSIONS_NOT_GRANTED = 102; /** Indicates that the middleware was unable to initialize for this app. */ public static final int ERROR_UNABLE_TO_INITIALIZE = 103; } /** * Indicates the errors that may occur at any point and are applicable to both * streaming and file-download. */ public static class GeneralErrors { private GeneralErrors() {} /** * Indicates that the app attempted to perform an operation before receiving notification * that the middleware is ready via {@link MbmsStreamingSessionCallback#onMiddlewareReady()} * or {@link MbmsDownloadSessionCallback#onMiddlewareReady()}. */ public static final int ERROR_MIDDLEWARE_NOT_YET_READY = 201; /** * Indicates that the middleware ran out of memory and was unable to complete the requested * operation. */ public static final int ERROR_OUT_OF_MEMORY = 202; /** * Indicates that the requested operation failed due to the middleware being unavailable due * to a transient condition. The app may retry the operation at a later time. */ public static final int ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE = 203; /** * Indicates that the requested operation was not performed due to being in emergency * callback mode. */ public static final int ERROR_IN_E911 = 204; /** Indicates that MBMS is not available due to the device being in roaming. */ public static final int ERROR_NOT_CONNECTED_TO_HOME_CARRIER_LTE = 205; /** Indicates that MBMS is not available due to a SIM read error. */ public static final int ERROR_UNABLE_TO_READ_SIM = 206; /** * Indicates that MBMS is not available due to the inserted SIM being from an unsupported * carrier. */ public static final int ERROR_CARRIER_CHANGE_NOT_ALLOWED = 207; } /** * Indicates the errors that are applicable only to the streaming use-case */ public static class StreamingErrors { private StreamingErrors() {} /** Indicates that the middleware cannot start a stream due to too many ongoing streams */ public static final int ERROR_CONCURRENT_SERVICE_LIMIT_REACHED = 301; /** Indicates that the middleware was unable to start the streaming service */ public static final int ERROR_UNABLE_TO_START_SERVICE = 302; /** * Indicates that the app called * {@link MbmsStreamingSession#startStreaming(StreamingServiceInfo, * java.util.concurrent.Executor, StreamingServiceCallback)} * more than once for the same {@link StreamingServiceInfo}. */ public static final int ERROR_DUPLICATE_START_STREAM = 303; } /** * Indicates the errors that are applicable only to the file-download use-case */ public static class DownloadErrors { private DownloadErrors() { } /** * Indicates that the app is not allowed to change the temp file root at this time due to * outstanding download requests. */ public static final int ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT = 401; /** Indicates that the middleware has no record of the supplied {@link DownloadRequest}. */ public static final int ERROR_UNKNOWN_DOWNLOAD_REQUEST = 402; /** Indicates the the middleware has no record of the supplied {@link FileInfo} */ public static final int ERROR_UNKNOWN_FILE_INFO = 403; /** * Indicates that the service announcement descriptor passed via * {@link android.telephony.MbmsDownloadSession#addServiceAnnouncement(byte[])} * is malformed. */ public static final int ERROR_MALFORMED_SERVICE_ANNOUNCEMENT = 404; } /** * Indicates the errors that are applicable only to the group call use-case. */ public static class GroupCallErrors { private GroupCallErrors() { } /** Indicates that the middleware was unable to start the group call. */ public static final int ERROR_UNABLE_TO_START_SERVICE = 501; /** * Indicates that the app called * {@link android.telephony.MbmsGroupCallSession#startGroupCall} more than once for the * same {@code tmgi}. */ public static final int ERROR_DUPLICATE_START_GROUP_CALL = 502; } /** @hide */ @IntDef(value = { SUCCESS, ERROR_NO_UNIQUE_MIDDLEWARE, ERROR_MIDDLEWARE_NOT_BOUND, ERROR_MIDDLEWARE_LOST, InitializationErrors.ERROR_DUPLICATE_INITIALIZE, InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED, InitializationErrors.ERROR_UNABLE_TO_INITIALIZE, GeneralErrors.ERROR_MIDDLEWARE_NOT_YET_READY, GeneralErrors.ERROR_OUT_OF_MEMORY, GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE, GeneralErrors.ERROR_IN_E911, GeneralErrors.ERROR_NOT_CONNECTED_TO_HOME_CARRIER_LTE, GeneralErrors.ERROR_UNABLE_TO_READ_SIM, GeneralErrors.ERROR_CARRIER_CHANGE_NOT_ALLOWED, StreamingErrors.ERROR_CONCURRENT_SERVICE_LIMIT_REACHED, StreamingErrors.ERROR_UNABLE_TO_START_SERVICE, StreamingErrors.ERROR_DUPLICATE_START_STREAM, DownloadErrors.ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT, DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST, DownloadErrors.ERROR_UNKNOWN_FILE_INFO, DownloadErrors.ERROR_MALFORMED_SERVICE_ANNOUNCEMENT, GroupCallErrors.ERROR_UNABLE_TO_START_SERVICE, GroupCallErrors.ERROR_DUPLICATE_START_GROUP_CALL, }) @Retention(RetentionPolicy.SOURCE) public @interface MbmsError { } private MbmsErrors() {} }