/* * Copyright (C) 2025 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 com.android.bips.stats import android.os.Handler import android.os.HandlerThread import android.os.SystemClock import android.print.PrintAttributes import android.print.PrintDocumentInfo import android.print.PrintJobInfo import android.util.Log import androidx.annotation.VisibleForTesting import com.android.bips.jni.BackendConstants import java.util.concurrent.Semaphore import java.util.concurrent.TimeUnit import kotlin.math.max import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds object StatsAsyncLogger { private val TAG = StatsAsyncLogger::class.java.simpleName private val DEBUG = false @VisibleForTesting val EVENT_REPORTED_MIN_INTERVAL: Duration = 10.milliseconds private val MAX_EVENT_QUEUE = 150 private var semaphore = Semaphore(MAX_EVENT_QUEUE) private lateinit var handlerThread: HandlerThread private lateinit var eventHandler: Handler private var nextAvailableTimeMillis = SystemClock.uptimeMillis() private var statsLogWrapper = StatsLogWrapper() private var logging = false @VisibleForTesting fun testSetStatsLogWrapper(wrapper: StatsLogWrapper) { statsLogWrapper = wrapper } @VisibleForTesting fun testSetSemaphore(s: Semaphore) { semaphore = s } @VisibleForTesting fun testSetHandler(handler: Handler) { eventHandler = handler } fun PrinterDiscovery( scheme: StatsAsyncLogger.DiscoverySchemePrinterDiscoveryEvent, secure: Boolean, ): Boolean { if (DEBUG) { Log.d(TAG, "Logging PrinterDiscovery event") } if (!logging) { return false } synchronized(semaphore) { if (!semaphore.tryAcquire()) { Log.w(TAG, "Logging too many events, dropping PrinterDiscovery event") return false } val result = eventHandler.postAtTime( Runnable { synchronized(semaphore) { if (DEBUG) { Log.d(TAG, "Async logging PrinterDiscovery event") } statsLogWrapper.internalPrinterDiscovery(scheme, secure) semaphore.release() } }, nextAvailableTimeMillis, ) if (!result) { Log.e(TAG, "Could not log PrinterDiscovery event") semaphore.release() return false } nextAvailableTimeMillis = getNextAvailableTimeMillis() } return true } fun DiscoveredPrinterCapabilities( makeAndModel: String, colorModeMask: Int, mediaSizes: Iterable, duplexModeMask: Int, secure: Boolean, localMediaTypes: Iterable, ): Boolean { if (DEBUG) { Log.d(TAG, "Logging BipsDiscoveredPrinterCapabilities event") } if (!logging) { return false } val colors = InternalColorModeDiscoveredPrinterCapsEvent.values() .filter { color -> (color.colorMode ?: 0) and colorModeMask != 0 } .toSet() val supportedSizes = mediaSizes .map { InternalMediaSizeDiscoveredPrinterCapsEvent.fromMediaSizeId(it.getId()) } .toSet() val duplexModes = InternalDuplexModeDiscoveredPrinterCapsEvent.values() .filter { mode -> (mode.duplexMode ?: 0) and duplexModeMask != 0 } .toSet() val mediaTypes = localMediaTypes .map { InternalMediaTypeDiscoveredPrinterCapsEvent.fromBipsMediaType(it) } .toSet() synchronized(semaphore) { if (!semaphore.tryAcquire()) { Log.w(TAG, "Logging too many events, dropping DiscoveredPrinterCapabilities event") return false } val result = eventHandler.postAtTime( Runnable { synchronized(semaphore) { statsLogWrapper.internalDiscoveredPrinterCapabilities( makeAndModel, colors, supportedSizes, duplexModes, secure, mediaTypes, ) semaphore.release() } }, nextAvailableTimeMillis, ) if (!result) { Log.e(TAG, "Could not log DiscoveredPrinterCapabilities event") semaphore.release() return false } nextAvailableTimeMillis = getNextAvailableTimeMillis() return true } } fun PrintJob( makeAndModel: String, secure: Boolean, jobOrigin: OriginPrintJobEvent, localJobRawResult: String, jobInfo: PrintJobInfo, docInfo: PrintDocumentInfo, borderless: Boolean, duplexMode: Int, localMediaType: Int, ): Boolean { if (DEBUG) { Log.d(TAG, "Logging PrintJob event") } if (!logging) { return false } synchronized(semaphore) { if (!semaphore.tryAcquire()) { Log.w(TAG, "Logging too many events, dropping PrintJob event") return false } val result = eventHandler.postAtTime( Runnable { synchronized(semaphore) { statsLogWrapper.internalPrintJob( makeAndModel, jobOrigin, InternalLocalPrintJobResultPrintJobEvent.fromLocalResult( localJobRawResult ), borderless, InternalFrameworkMediaSizePrintJobEvent.fromMediaSizeId( jobInfo.getAttributes().getMediaSize()?.getId() ), InternalFrameworkDuplexModePrintJobEvent.fromDuplexMode(duplexMode), InternalLocalMediaTypePrintJobEvent.fromBipsMediaType( localMediaType ), InternalFrameworkColorModePrintJobEvent.fromColorMode( jobInfo.getAttributes().getColorMode() ), secure, jobInfo.getAttributes().getResolution()?.getHorizontalDpi() ?: 0, jobInfo.getAttributes().getResolution()?.getVerticalDpi() ?: 0, docInfo?.getPageCount() ?: PrintDocumentInfo.PAGE_COUNT_UNKNOWN, ) semaphore.release() } }, nextAvailableTimeMillis, ) if (!result) { Log.e(TAG, "Could not log PrintJob event") semaphore.release() return false } nextAvailableTimeMillis = getNextAvailableTimeMillis() } return true } // Returns true if event is now pending to be logged, false otherwise fun RequestPrinterCapabilitiesStatus(getLocalCapsStatus: Int, secure: Boolean): Boolean { if (DEBUG) { Log.d(TAG, "Logging RequestPrinterCapabilitiesStatus event") } if (!logging) { return false } synchronized(semaphore) { if (!semaphore.tryAcquire()) { Log.w( TAG, "Logging too many events, dropping RequestPrinterCapabilitiesStatus event", ) return false } val result = eventHandler.postAtTime( Runnable { synchronized(semaphore) { if (DEBUG) { Log.d(TAG, "Async logging RequestPrinterCapabilitiesStatus event") } statsLogWrapper.internalRequestPrinterCapabilitiesStatus( InternalLocalRequestCapabilitiesStatus.fromLocalResult( getLocalCapsStatus ), secure, ) semaphore.release() } }, nextAvailableTimeMillis, ) if (!result) { Log.e(TAG, "Could not log RequestPrinterCapabilitiesStatus event") semaphore.release() return false } nextAvailableTimeMillis = getNextAvailableTimeMillis() } return true } private fun getNextAvailableTimeMillis(): Long { return max( // Handles back to back records nextAvailableTimeMillis + EVENT_REPORTED_MIN_INTERVAL.inWholeMilliseconds, // Updates next time to more recent value if it wasn't recently SystemClock.uptimeMillis() + EVENT_REPORTED_MIN_INTERVAL.inWholeMilliseconds, ) } // Initializes Async Logger for logging events. Returns true if // started logging and false if logging was already started. fun startLogging(): Boolean { if (logging) { return false } logging = true if (DEBUG) { Log.d(TAG, "Logging started") } semaphore = Semaphore(MAX_EVENT_QUEUE) handlerThread = HandlerThread("StatsEventLoggerWrapper").also { it.start() } eventHandler = Handler(handlerThread.getLooper()) nextAvailableTimeMillis = SystemClock.uptimeMillis() return true } // Returns true if logging was started and the logger successfully // logged all pending events while ending. Returns false // otherwise. fun stopLogging(): Boolean { if (!logging) { return false } logging = false if (DEBUG) { Log.d(TAG, "Begin flushing events") } val acquired = semaphore.tryAcquire( MAX_EVENT_QUEUE, MAX_EVENT_QUEUE * EVENT_REPORTED_MIN_INTERVAL.inWholeMilliseconds, TimeUnit.MILLISECONDS, ) if (!acquired) { Log.w(TAG, "Time exceeded awaiting stats events") } if (DEBUG) { Log.d(TAG, "End flushing events") } handlerThread.quit() return acquired } // Mappings for internal values to associated proto values. // Each Enum class has a suffix that corresponds to an event // proto, e.g. InternalFrameworkMediaSize"PrintJobEvent" to be used for // proto values for print jobs. // Most of these are internal to the package so are prefixed with // Internal // PrinterDiscovery enums // Not Internal because it is used by clients. enum class DiscoverySchemePrinterDiscoveryEvent(val rawValue: Int) { // Unspecified should never be used UNSPECIFIED( BipsStatsLog .BIPS_PRINTER_DISCOVERY__DISCOVERY_SCHEME__BIPS_PRINTER_DISCOVERY_SCHEME_UNSPECIFIED ), MDNS( BipsStatsLog .BIPS_PRINTER_DISCOVERY__DISCOVERY_SCHEME__BIPS_PRINTER_DISCOVERY_SCHEME_MDNS ), MANUAL( BipsStatsLog .BIPS_PRINTER_DISCOVERY__DISCOVERY_SCHEME__BIPS_PRINTER_DISCOVERY_SCHEME_MANUAL ), P2P( BipsStatsLog.BIPS_PRINTER_DISCOVERY__DISCOVERY_SCHEME__BIPS_PRINTER_DISCOVERY_SCHEME_P2P ), } // DiscoveredPrinterCapabilities enums enum class InternalMediaTypeDiscoveredPrinterCapsEvent( val mediaTypeId: Int?, val rawValue: Int, ) { // These numbers are defined in jni/include/wprint_df_types.h PLAIN( 0, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PLAIN, ), SPECIAL( 1, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_SPECIAL, ), PHOTO( 2, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PHOTO, ), TRANSPARENCY( 3, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_TRANSPARENCY, ), IRON_ON( 4, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_IRON_ON, ), IRON_ON_MIRROR( 5, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_IRON_ON_MIRROR, ), ADVANCED_PHOTO( 6, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_ADVANCED_PHOTO, ), FAST_TRANSPARENCY( 7, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_FAST_TRANSPARENCY, ), BROCHURE_GLOSSY( 8, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_BROCHURE_GLOSSY, ), BROCHURE_MATTE( 9, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_BROCHURE_MATTE, ), PHOTO_GLOSSY( 10, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PHOTO_GLOSSY, ), PHOTO_MATTE( 11, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PHOTO_MATTE, ), PREMIUM_PHOTO( 12, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PREMIUM_PHOTO, ), OTHER_PHOTO( 13, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_OTHER_PHOTO, ), PRINTABLE_CD( 14, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PRINTABLE_CD, ), PREMIUM_PRESENTATION( 15, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PREMIUM_PRESENTATION, ), // New types above this line AUTO( 98, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_AUTO, ), UNKNOWN( 99, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_UNKNOWN, ), UNSPECIFIED( null, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__MEDIA_TYPE__BIPS_MEDIA_TYPE_UNSPECIFIED, ); companion object { private val map = entries.associateBy(InternalMediaTypeDiscoveredPrinterCapsEvent::mediaTypeId) fun fromBipsMediaType(mediaTypeId: Int): InternalMediaTypeDiscoveredPrinterCapsEvent { return map.getOrDefault( mediaTypeId, InternalMediaTypeDiscoveredPrinterCapsEvent.UNSPECIFIED, ) } } } enum class InternalDuplexModeDiscoveredPrinterCapsEvent( val duplexMode: Int?, val rawValue: Int, ) { // Keep this up to date to map any new duplex modes in the framework LONG_EDGE( PrintAttributes.DUPLEX_MODE_LONG_EDGE, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_DUPLEX_MODES__FRAMEWORK_DUPLEX_MODE_LONG_EDGE, ), SHORT_EDGE( PrintAttributes.DUPLEX_MODE_SHORT_EDGE, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_DUPLEX_MODES__FRAMEWORK_DUPLEX_MODE_SHORT_EDGE, ), NONE( PrintAttributes.DUPLEX_MODE_NONE, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_DUPLEX_MODES__FRAMEWORK_DUPLEX_MODE_NONE, ), UNSPECIFIED( null, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_DUPLEX_MODES__FRAMEWORK_DUPLEX_MODE_UNSPECIFIED, ); companion object { private val map = entries.associateBy(InternalDuplexModeDiscoveredPrinterCapsEvent::duplexMode) fun fromDuplexMode(duplexMode: Int): InternalDuplexModeDiscoveredPrinterCapsEvent { return map.getOrDefault( duplexMode, InternalDuplexModeDiscoveredPrinterCapsEvent.UNSPECIFIED, ) } } } enum class InternalMediaSizeDiscoveredPrinterCapsEvent( val mediaSizeId: String?, val rawValue: Int, ) { // Keep this up to date to map any new media sizes in the framework UNKNOWN_PORTRAIT( PrintAttributes.MediaSize.UNKNOWN_PORTRAIT.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_UNKNOWN_PORTRAIT, ), UNKNOWN_LANDSCAPE( PrintAttributes.MediaSize.UNKNOWN_LANDSCAPE.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_UNKNOWN_LANDSCAPE, ), ISO_A0( PrintAttributes.MediaSize.ISO_A0.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A0, ), ISO_A1( PrintAttributes.MediaSize.ISO_A1.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A1, ), ISO_A2( PrintAttributes.MediaSize.ISO_A2.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A2, ), ISO_A3( PrintAttributes.MediaSize.ISO_A3.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A3, ), ISO_A4( PrintAttributes.MediaSize.ISO_A4.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A4, ), ISO_A5( PrintAttributes.MediaSize.ISO_A5.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A5, ), ISO_A6( PrintAttributes.MediaSize.ISO_A6.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A6, ), ISO_A7( PrintAttributes.MediaSize.ISO_A7.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A7, ), ISO_A8( PrintAttributes.MediaSize.ISO_A8.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A8, ), ISO_A9( PrintAttributes.MediaSize.ISO_A9.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A9, ), ISO_A10( PrintAttributes.MediaSize.ISO_A10.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_A10, ), ISO_B0( PrintAttributes.MediaSize.ISO_B0.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B0, ), ISO_B1( PrintAttributes.MediaSize.ISO_B1.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B1, ), ISO_B2( PrintAttributes.MediaSize.ISO_B2.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B2, ), ISO_B3( PrintAttributes.MediaSize.ISO_B3.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B3, ), ISO_B4( PrintAttributes.MediaSize.ISO_B4.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B4, ), ISO_B5( PrintAttributes.MediaSize.ISO_B5.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B5, ), ISO_B6( PrintAttributes.MediaSize.ISO_B6.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B6, ), ISO_B7( PrintAttributes.MediaSize.ISO_B7.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B7, ), ISO_B8( PrintAttributes.MediaSize.ISO_B8.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B8, ), ISO_B9( PrintAttributes.MediaSize.ISO_B9.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B9, ), ISO_B10( PrintAttributes.MediaSize.ISO_B10.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_B10, ), ISO_C0( PrintAttributes.MediaSize.ISO_C0.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C0, ), ISO_C1( PrintAttributes.MediaSize.ISO_C1.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C1, ), ISO_C2( PrintAttributes.MediaSize.ISO_C2.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C2, ), ISO_C3( PrintAttributes.MediaSize.ISO_C3.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C3, ), ISO_C4( PrintAttributes.MediaSize.ISO_C4.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C4, ), ISO_C5( PrintAttributes.MediaSize.ISO_C5.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C5, ), ISO_C6( PrintAttributes.MediaSize.ISO_C6.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C6, ), ISO_C7( PrintAttributes.MediaSize.ISO_C7.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C7, ), ISO_C8( PrintAttributes.MediaSize.ISO_C8.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C8, ), ISO_C9( PrintAttributes.MediaSize.ISO_C9.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C9, ), ISO_C10( PrintAttributes.MediaSize.ISO_C10.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ISO_C10, ), NA_LETTER( PrintAttributes.MediaSize.NA_LETTER.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_LETTER, ), NA_GOVT_LETTER( PrintAttributes.MediaSize.NA_GOVT_LETTER.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_GOVT_LETTER, ), NA_LEGAL( PrintAttributes.MediaSize.NA_LEGAL.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_LEGAL, ), NA_JUNIOR_LEGAL( PrintAttributes.MediaSize.NA_JUNIOR_LEGAL.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_JUNIOR_LEGAL, ), NA_LEDGER( PrintAttributes.MediaSize.NA_LEDGER.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_LEDGER, ), NA_TABLOID( PrintAttributes.MediaSize.NA_TABLOID.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_TABLOID, ), NA_INDEX_3X5( PrintAttributes.MediaSize.NA_INDEX_3X5.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_INDEX_3X5, ), NA_INDEX_4X6( PrintAttributes.MediaSize.NA_INDEX_4X6.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_INDEX_4X6, ), NA_INDEX_5X8( PrintAttributes.MediaSize.NA_INDEX_5X8.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_INDEX_5X8, ), NA_MONARCH( PrintAttributes.MediaSize.NA_MONARCH.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_MONARCH, ), NA_QUARTO( PrintAttributes.MediaSize.NA_QUARTO.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_QUARTO, ), NA_FOOLSCAP( PrintAttributes.MediaSize.NA_FOOLSCAP.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_FOOLSCAP, ), ANSI_C( PrintAttributes.MediaSize.ANSI_C.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ANSI_C, ), ANSI_D( PrintAttributes.MediaSize.ANSI_D.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ANSI_D, ), ANSI_E( PrintAttributes.MediaSize.ANSI_E.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ANSI_E, ), ANSI_F( PrintAttributes.MediaSize.ANSI_F.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ANSI_F, ), NA_ARCH_A( PrintAttributes.MediaSize.NA_ARCH_A.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_ARCH_A, ), NA_ARCH_B( PrintAttributes.MediaSize.NA_ARCH_B.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_ARCH_B, ), NA_ARCH_C( PrintAttributes.MediaSize.NA_ARCH_C.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_ARCH_C, ), NA_ARCH_D( PrintAttributes.MediaSize.NA_ARCH_D.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_ARCH_D, ), NA_ARCH_E( PrintAttributes.MediaSize.NA_ARCH_E.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_ARCH_E, ), NA_ARCH_E1( PrintAttributes.MediaSize.NA_ARCH_E1.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_ARCH_E1, ), NA_SUPER_B( PrintAttributes.MediaSize.NA_SUPER_B.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_NA_SUPER_B, ), ROC_8K( PrintAttributes.MediaSize.ROC_8K.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ROC_8K, ), ROC_16K( PrintAttributes.MediaSize.ROC_16K.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_ROC_16K, ), PRC_1( PrintAttributes.MediaSize.PRC_1.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_1, ), PRC_2( PrintAttributes.MediaSize.PRC_2.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_2, ), PRC_3( PrintAttributes.MediaSize.PRC_3.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_3, ), PRC_4( PrintAttributes.MediaSize.PRC_4.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_4, ), PRC_5( PrintAttributes.MediaSize.PRC_5.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_5, ), PRC_6( PrintAttributes.MediaSize.PRC_6.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_6, ), PRC_7( PrintAttributes.MediaSize.PRC_7.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_7, ), PRC_8( PrintAttributes.MediaSize.PRC_8.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_8, ), PRC_9( PrintAttributes.MediaSize.PRC_9.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_9, ), PRC_10( PrintAttributes.MediaSize.PRC_10.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_10, ), PRC_16K( PrintAttributes.MediaSize.PRC_16K.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_PRC_16K, ), OM_PA_KAI( PrintAttributes.MediaSize.OM_PA_KAI.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_OM_PA_KAI, ), OM_DAI_PA_KAI( PrintAttributes.MediaSize.OM_DAI_PA_KAI.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_OM_DAI_PA_KAI, ), OM_JUURO_KU_KAI( PrintAttributes.MediaSize.OM_JUURO_KU_KAI.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_OM_JUURO_KU_KAI, ), JIS_B10( PrintAttributes.MediaSize.JIS_B10.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B10, ), JIS_B9( PrintAttributes.MediaSize.JIS_B9.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B9, ), JIS_B8( PrintAttributes.MediaSize.JIS_B8.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B8, ), JIS_B7( PrintAttributes.MediaSize.JIS_B7.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B7, ), JIS_B6( PrintAttributes.MediaSize.JIS_B6.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B6, ), JIS_B5( PrintAttributes.MediaSize.JIS_B5.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B5, ), JIS_B4( PrintAttributes.MediaSize.JIS_B4.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B4, ), JIS_B3( PrintAttributes.MediaSize.JIS_B3.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B3, ), JIS_B2( PrintAttributes.MediaSize.JIS_B2.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B2, ), JIS_B1( PrintAttributes.MediaSize.JIS_B1.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B1, ), JIS_B0( PrintAttributes.MediaSize.JIS_B0.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_B0, ), JIS_EXEC( PrintAttributes.MediaSize.JIS_EXEC.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JIS_EXEC, ), JPN_CHOU4( PrintAttributes.MediaSize.JPN_CHOU4.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JPN_CHOU4, ), JPN_CHOU3( PrintAttributes.MediaSize.JPN_CHOU3.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JPN_CHOU3, ), JPN_CHOU2( PrintAttributes.MediaSize.JPN_CHOU2.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JPN_CHOU2, ), JPN_HAGAKI( PrintAttributes.MediaSize.JPN_HAGAKI.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JPN_HAGAKI, ), JPN_OUFUKU( PrintAttributes.MediaSize.JPN_OUFUKU.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JPN_OUFUKU, ), JPN_KAHU( PrintAttributes.MediaSize.JPN_KAHU.getId(), BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_JPN_KAHU, ), UNSPECIFIED( null, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_SIZES__FRAMEWORK_MEDIA_SIZE_UNSPECIFIED, ); companion object { private val map = entries.associateBy(InternalMediaSizeDiscoveredPrinterCapsEvent::mediaSizeId) fun fromMediaSizeId(mediaSizeId: String?): InternalMediaSizeDiscoveredPrinterCapsEvent { return when (mediaSizeId) { null -> InternalMediaSizeDiscoveredPrinterCapsEvent.UNSPECIFIED else -> { map.getOrDefault( mediaSizeId, InternalMediaSizeDiscoveredPrinterCapsEvent.UNSPECIFIED, ) } } } } } enum class InternalColorModeDiscoveredPrinterCapsEvent(val colorMode: Int?, val rawValue: Int) { // Keep this up to date to map any new color modes in the framework COLOR( PrintAttributes.COLOR_MODE_COLOR, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_COLORS__FRAMEWORK_COLOR_MODE_COLOR, ), MONOCHROME( PrintAttributes.COLOR_MODE_MONOCHROME, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_COLORS__FRAMEWORK_COLOR_MODE_MONOCRHOME, ), UNSPECIFIED( null, BipsStatsLog .BIPS_DISCOVERED_PRINTER_CAPABILITIES__SUPPORTED_COLORS__FRAMEWORK_COLOR_MODE_UNSPECIFIED, ); companion object { private val map = entries.associateBy(InternalColorModeDiscoveredPrinterCapsEvent::colorMode) fun fromColorMode(colorMode: Int): InternalColorModeDiscoveredPrinterCapsEvent { return map.getOrDefault( colorMode, InternalColorModeDiscoveredPrinterCapsEvent.UNSPECIFIED, ) } } } // PrintJob event enums // Public so it can be used by client enum class OriginPrintJobEvent(val rawValue: Int) { SHARED_IMAGE(BipsStatsLog.BIPS_PRINT_JOB__JOB_ORIGIN__BIPS_JOB_ORIGIN_SHARED_IMAGE), SHARED_PDF(BipsStatsLog.BIPS_PRINT_JOB__JOB_ORIGIN__BIPS_JOB_ORIGIN_SHARED_PDF), DIRECT_PRINT(BipsStatsLog.BIPS_PRINT_JOB__JOB_ORIGIN__BIPS_JOB_ORIGIN_DIRECT_PRINT), } enum class InternalFrameworkMediaSizePrintJobEvent( val mediaSizeId: String?, val rawValue: Int, ) { // Keep this up to date to map any new color modes in the framework UNKNOWN_PORTRAIT( PrintAttributes.MediaSize.UNKNOWN_PORTRAIT.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_UNKNOWN_PORTRAIT, ), UNKNOWN_LANDSCAPE( PrintAttributes.MediaSize.UNKNOWN_LANDSCAPE.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_UNKNOWN_LANDSCAPE, ), ISO_A0( PrintAttributes.MediaSize.ISO_A0.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A0, ), ISO_A1( PrintAttributes.MediaSize.ISO_A1.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A1, ), ISO_A2( PrintAttributes.MediaSize.ISO_A2.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A2, ), ISO_A3( PrintAttributes.MediaSize.ISO_A3.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A3, ), ISO_A4( PrintAttributes.MediaSize.ISO_A4.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A4, ), ISO_A5( PrintAttributes.MediaSize.ISO_A5.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A5, ), ISO_A6( PrintAttributes.MediaSize.ISO_A6.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A6, ), ISO_A7( PrintAttributes.MediaSize.ISO_A7.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A7, ), ISO_A8( PrintAttributes.MediaSize.ISO_A8.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A8, ), ISO_A9( PrintAttributes.MediaSize.ISO_A9.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A9, ), ISO_A10( PrintAttributes.MediaSize.ISO_A10.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_A10, ), ISO_B0( PrintAttributes.MediaSize.ISO_B0.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B0, ), ISO_B1( PrintAttributes.MediaSize.ISO_B1.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B1, ), ISO_B2( PrintAttributes.MediaSize.ISO_B2.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B2, ), ISO_B3( PrintAttributes.MediaSize.ISO_B3.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B3, ), ISO_B4( PrintAttributes.MediaSize.ISO_B4.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B4, ), ISO_B5( PrintAttributes.MediaSize.ISO_B5.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B5, ), ISO_B6( PrintAttributes.MediaSize.ISO_B6.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B6, ), ISO_B7( PrintAttributes.MediaSize.ISO_B7.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B7, ), ISO_B8( PrintAttributes.MediaSize.ISO_B8.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B8, ), ISO_B9( PrintAttributes.MediaSize.ISO_B9.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B9, ), ISO_B10( PrintAttributes.MediaSize.ISO_B10.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_B10, ), ISO_C0( PrintAttributes.MediaSize.ISO_C0.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C0, ), ISO_C1( PrintAttributes.MediaSize.ISO_C1.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C1, ), ISO_C2( PrintAttributes.MediaSize.ISO_C2.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C2, ), ISO_C3( PrintAttributes.MediaSize.ISO_C3.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C3, ), ISO_C4( PrintAttributes.MediaSize.ISO_C4.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C4, ), ISO_C5( PrintAttributes.MediaSize.ISO_C5.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C5, ), ISO_C6( PrintAttributes.MediaSize.ISO_C6.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C6, ), ISO_C7( PrintAttributes.MediaSize.ISO_C7.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C7, ), ISO_C8( PrintAttributes.MediaSize.ISO_C8.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C8, ), ISO_C9( PrintAttributes.MediaSize.ISO_C9.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C9, ), ISO_C10( PrintAttributes.MediaSize.ISO_C10.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ISO_C10, ), NA_LETTER( PrintAttributes.MediaSize.NA_LETTER.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_LETTER, ), NA_GOVT_LETTER( PrintAttributes.MediaSize.NA_GOVT_LETTER.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_GOVT_LETTER, ), NA_LEGAL( PrintAttributes.MediaSize.NA_LEGAL.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_LEGAL, ), NA_JUNIOR_LEGAL( PrintAttributes.MediaSize.NA_JUNIOR_LEGAL.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_JUNIOR_LEGAL, ), NA_LEDGER( PrintAttributes.MediaSize.NA_LEDGER.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_LEDGER, ), NA_TABLOID( PrintAttributes.MediaSize.NA_TABLOID.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_TABLOID, ), NA_INDEX_3X5( PrintAttributes.MediaSize.NA_INDEX_3X5.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_INDEX_3X5, ), NA_INDEX_4X6( PrintAttributes.MediaSize.NA_INDEX_4X6.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_INDEX_4X6, ), NA_INDEX_5X8( PrintAttributes.MediaSize.NA_INDEX_5X8.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_INDEX_5X8, ), NA_MONARCH( PrintAttributes.MediaSize.NA_MONARCH.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_MONARCH, ), NA_QUARTO( PrintAttributes.MediaSize.NA_QUARTO.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_QUARTO, ), NA_FOOLSCAP( PrintAttributes.MediaSize.NA_FOOLSCAP.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_FOOLSCAP, ), ANSI_C( PrintAttributes.MediaSize.ANSI_C.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ANSI_C, ), ANSI_D( PrintAttributes.MediaSize.ANSI_D.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ANSI_D, ), ANSI_E( PrintAttributes.MediaSize.ANSI_E.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ANSI_E, ), ANSI_F( PrintAttributes.MediaSize.ANSI_F.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ANSI_F, ), NA_ARCH_A( PrintAttributes.MediaSize.NA_ARCH_A.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_ARCH_A, ), NA_ARCH_B( PrintAttributes.MediaSize.NA_ARCH_B.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_ARCH_B, ), NA_ARCH_C( PrintAttributes.MediaSize.NA_ARCH_C.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_ARCH_C, ), NA_ARCH_D( PrintAttributes.MediaSize.NA_ARCH_D.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_ARCH_D, ), NA_ARCH_E( PrintAttributes.MediaSize.NA_ARCH_E.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_ARCH_E, ), NA_ARCH_E1( PrintAttributes.MediaSize.NA_ARCH_E1.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_ARCH_E1, ), NA_SUPER_B( PrintAttributes.MediaSize.NA_SUPER_B.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_NA_SUPER_B, ), ROC_8K( PrintAttributes.MediaSize.ROC_8K.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ROC_8K, ), ROC_16K( PrintAttributes.MediaSize.ROC_16K.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_ROC_16K, ), PRC_1( PrintAttributes.MediaSize.PRC_1.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_1, ), PRC_2( PrintAttributes.MediaSize.PRC_2.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_2, ), PRC_3( PrintAttributes.MediaSize.PRC_3.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_3, ), PRC_4( PrintAttributes.MediaSize.PRC_4.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_4, ), PRC_5( PrintAttributes.MediaSize.PRC_5.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_5, ), PRC_6( PrintAttributes.MediaSize.PRC_6.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_6, ), PRC_7( PrintAttributes.MediaSize.PRC_7.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_7, ), PRC_8( PrintAttributes.MediaSize.PRC_8.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_8, ), PRC_9( PrintAttributes.MediaSize.PRC_9.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_9, ), PRC_10( PrintAttributes.MediaSize.PRC_10.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_10, ), PRC_16K( PrintAttributes.MediaSize.PRC_16K.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_PRC_16K, ), OM_PA_KAI( PrintAttributes.MediaSize.OM_PA_KAI.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_OM_PA_KAI, ), OM_DAI_PA_KAI( PrintAttributes.MediaSize.OM_DAI_PA_KAI.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_OM_DAI_PA_KAI, ), OM_JUURO_KU_KAI( PrintAttributes.MediaSize.OM_JUURO_KU_KAI.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_OM_JUURO_KU_KAI, ), JIS_B10( PrintAttributes.MediaSize.JIS_B10.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B10, ), JIS_B9( PrintAttributes.MediaSize.JIS_B9.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B9, ), JIS_B8( PrintAttributes.MediaSize.JIS_B8.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B8, ), JIS_B7( PrintAttributes.MediaSize.JIS_B7.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B7, ), JIS_B6( PrintAttributes.MediaSize.JIS_B6.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B6, ), JIS_B5( PrintAttributes.MediaSize.JIS_B5.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B5, ), JIS_B4( PrintAttributes.MediaSize.JIS_B4.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B4, ), JIS_B3( PrintAttributes.MediaSize.JIS_B3.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B3, ), JIS_B2( PrintAttributes.MediaSize.JIS_B2.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B2, ), JIS_B1( PrintAttributes.MediaSize.JIS_B1.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B1, ), JIS_B0( PrintAttributes.MediaSize.JIS_B0.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_B0, ), JIS_EXEC( PrintAttributes.MediaSize.JIS_EXEC.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JIS_EXEC, ), JPN_CHOU4( PrintAttributes.MediaSize.JPN_CHOU4.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JPN_CHOU4, ), JPN_CHOU3( PrintAttributes.MediaSize.JPN_CHOU3.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JPN_CHOU3, ), JPN_CHOU2( PrintAttributes.MediaSize.JPN_CHOU2.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JPN_CHOU2, ), JPN_HAGAKI( PrintAttributes.MediaSize.JPN_HAGAKI.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JPN_HAGAKI, ), JPN_OUFUKU( PrintAttributes.MediaSize.JPN_OUFUKU.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JPN_OUFUKU, ), JPN_KAHU( PrintAttributes.MediaSize.JPN_KAHU.getId(), BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_JPN_KAHU, ), UNSPECIFIED(null, BipsStatsLog.BIPS_PRINT_JOB__SIZE__FRAMEWORK_MEDIA_SIZE_UNSPECIFIED); companion object { private val map = entries.associateBy(InternalFrameworkMediaSizePrintJobEvent::mediaSizeId) fun fromMediaSizeId(mediaSizeId: String?): InternalFrameworkMediaSizePrintJobEvent { return when (mediaSizeId) { null -> InternalFrameworkMediaSizePrintJobEvent.UNSPECIFIED else -> { map.getOrDefault( mediaSizeId, InternalFrameworkMediaSizePrintJobEvent.UNSPECIFIED, ) } } } } } enum class InternalLocalMediaTypePrintJobEvent(val mediaTypeId: Int?, val rawValue: Int) { // These numbers are defined in jni/include/wprint_df_types.h PLAIN(0, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PLAIN), SPECIAL(1, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_SPECIAL), PHOTO(2, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PHOTO), TRANSPARENCY( 3, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_TRANSPARENCY, ), IRON_ON(4, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_IRON_ON), IRON_ON_MIRROR( 5, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_IRON_ON_MIRROR, ), ADVANCED_PHOTO( 6, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_ADVANCED_PHOTO, ), FAST_TRANSPARENCY( 7, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_FAST_TRANSPARENCY, ), BROCHURE_GLOSSY( 8, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_BROCHURE_GLOSSY, ), BROCHURE_MATTE( 9, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_BROCHURE_MATTE, ), PHOTO_GLOSSY( 10, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PHOTO_GLOSSY, ), PHOTO_MATTE(11, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PHOTO_MATTE), PREMIUM_PHOTO( 12, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PREMIUM_PHOTO, ), OTHER_PHOTO(13, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_OTHER_PHOTO), PRINTABLE_CD( 14, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PRINTABLE_CD, ), PREMIUM_PRESENTATION( 15, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_PREMIUM_PRESENTATION, ), // New types above this line AUTO(98, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_AUTO), UNKNOWN(99, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_MEDIA_UNKNOWN), UNSPECIFIED(null, BipsStatsLog.BIPS_PRINT_JOB__MEDIA_TYPE__BIPS_MEDIA_TYPE_UNSPECIFIED); companion object { private val map = entries.associateBy(InternalLocalMediaTypePrintJobEvent::mediaTypeId) fun fromBipsMediaType(mediaTypeId: Int): InternalLocalMediaTypePrintJobEvent { return map.getOrDefault( mediaTypeId, InternalLocalMediaTypePrintJobEvent.UNSPECIFIED, ) } } } enum class InternalFrameworkColorModePrintJobEvent(val colorMode: Int?, val rawValue: Int) { // Keep this up to date to map any new color modes in the framework COLOR( PrintAttributes.COLOR_MODE_COLOR, BipsStatsLog.BIPS_PRINT_JOB__COLOR__FRAMEWORK_COLOR_MODE_COLOR, ), MONOCHROME( PrintAttributes.COLOR_MODE_MONOCHROME, BipsStatsLog.BIPS_PRINT_JOB__COLOR__FRAMEWORK_COLOR_MODE_MONOCRHOME, ), UNSPECIFIED(null, BipsStatsLog.BIPS_PRINT_JOB__COLOR__FRAMEWORK_COLOR_MODE_UNSPECIFIED); companion object { private val map = entries.associateBy(InternalFrameworkColorModePrintJobEvent::colorMode) fun fromColorMode(colorMode: Int): InternalFrameworkColorModePrintJobEvent { return map.getOrDefault( colorMode, InternalFrameworkColorModePrintJobEvent.UNSPECIFIED, ) } } } enum class InternalFrameworkDuplexModePrintJobEvent(val duplexMode: Int?, val rawValue: Int) { // Keep this up to date to map any new duplex modes in the framework LONG_EDGE( PrintAttributes.DUPLEX_MODE_LONG_EDGE, BipsStatsLog.BIPS_PRINT_JOB__DUPLEX_MODE__FRAMEWORK_DUPLEX_MODE_LONG_EDGE, ), SHORT_EDGE( PrintAttributes.DUPLEX_MODE_SHORT_EDGE, BipsStatsLog.BIPS_PRINT_JOB__DUPLEX_MODE__FRAMEWORK_DUPLEX_MODE_SHORT_EDGE, ), NONE( PrintAttributes.DUPLEX_MODE_NONE, BipsStatsLog.BIPS_PRINT_JOB__DUPLEX_MODE__FRAMEWORK_DUPLEX_MODE_NONE, ), UNSPECIFIED( null, BipsStatsLog.BIPS_PRINT_JOB__DUPLEX_MODE__FRAMEWORK_DUPLEX_MODE_UNSPECIFIED, ); companion object { private val map = entries.associateBy(InternalFrameworkDuplexModePrintJobEvent::duplexMode) fun fromDuplexMode(duplexMode: Int): InternalFrameworkDuplexModePrintJobEvent { return map.getOrDefault( duplexMode, InternalFrameworkDuplexModePrintJobEvent.UNSPECIFIED, ) } } } enum class InternalLocalPrintJobResultPrintJobEvent( val localResult: String?, val rawValue: Int, ) { // These values are originally sourced from // jni/include/wtypes.h similar to // LocalRequestCapabilitiesStatus below. COMPLETED( BackendConstants.JOB_DONE_OK, BipsStatsLog.BIPS_PRINT_JOB__RESULT__BIPS_PRINT_JOB_RESULT_COMPLETED, ), CANCELLED( BackendConstants.JOB_DONE_CANCELLED, BipsStatsLog.BIPS_PRINT_JOB__RESULT__BIPS_PRINT_JOB_RESULT_CANCELLED, ), FAILED_CORRUPT( BackendConstants.JOB_DONE_CORRUPT, BipsStatsLog.BIPS_PRINT_JOB__RESULT__BIPS_PRINT_JOB_RESULT_FAILED_CORRUPT, ), FAILED_CERTIFICATE( BackendConstants.JOB_DONE_BAD_CERTIFICATE, BipsStatsLog.BIPS_PRINT_JOB__RESULT__BIPS_PRINT_JOB_RESULT_FAILED_CERTIFICATE, ), FAILED_UNKNOWN( // Unspecified job error is mapped to JOB_DONE_ERROR by // jni/lib/wprintJNI.c:_wprint_callback_fn() BackendConstants.JOB_DONE_ERROR, BipsStatsLog.BIPS_PRINT_JOB__RESULT__BIPS_PRINT_JOB_RESULT_FAILED_UNKNOWN, ), UNSPECIFIED(null, BipsStatsLog.BIPS_PRINT_JOB__RESULT__BIPS_PRINT_JOB_RESULT_UNSPECIFIED); companion object { private val map = entries.associateBy(InternalLocalPrintJobResultPrintJobEvent::localResult) fun fromLocalResult(localResult: String): InternalLocalPrintJobResultPrintJobEvent { return map.getOrDefault( localResult, InternalLocalPrintJobResultPrintJobEvent.UNSPECIFIED, ) } } } // RequestPrinterCapabilitiesStatus enum enum class InternalLocalRequestCapabilitiesStatus(val localResult: Int?, val rawValue: Int) { // These keys are defined in jni/include/wtypes.h OK( 0, BipsStatsLog .BIPS_REQUEST_PRINTER_CAPABILITIES_STATUS__STATUS__BIPS_REQUEST_CAPABILITIES_STATUS_OK, ), ERROR( -1, BipsStatsLog .BIPS_REQUEST_PRINTER_CAPABILITIES_STATUS__STATUS__BIPS_REQUEST_CAPABILITIES_STATUS_ERROR, ), CANCELLED( -2, BipsStatsLog .BIPS_REQUEST_PRINTER_CAPABILITIES_STATUS__STATUS__BIPS_REQUEST_CAPABILITIES_STATUS_CANCELLED, ), FAILED_CORRUPT( -3, BipsStatsLog .BIPS_REQUEST_PRINTER_CAPABILITIES_STATUS__STATUS__BIPS_REQUEST_CAPABILITIES_STATUS_CORRUPT, ), FAILED_CERTIFICATE( -4, BipsStatsLog .BIPS_REQUEST_PRINTER_CAPABILITIES_STATUS__STATUS__BIPS_REQUEST_CAPABILITIES_STATUS_BAD_CERTIFICATE, ), UNSPECIFIED( null, BipsStatsLog .BIPS_REQUEST_PRINTER_CAPABILITIES_STATUS__STATUS__BIPS_REQUEST_CAPABILITIES_STATUS_UNSPECIFIED, ); companion object { private val map = entries.associateBy(InternalLocalRequestCapabilitiesStatus::localResult) fun fromLocalResult(localResult: Int): InternalLocalRequestCapabilitiesStatus { return map.getOrDefault( localResult, InternalLocalRequestCapabilitiesStatus.UNSPECIFIED, ) } } } }