2015-01-06 7 views
5

Ich habe den AOSP-Quellcode für Lollipop 5.0 heruntergeladen. In der Api-Stufe 21 gibt es unter Bluetooth Low Energy Scan-Einstellungen drei Optionen zum Scannen der Geräte: SCAN_MODE_BALANCED, SCAN_MODE_LOW_LATENCY, SCAN_MODE_LOW_POWER. Basieren diese auf verschiedenen Scanintervall- und Scanfensterwerten? Wenn ja, wo finde ich die für diese Makros im Quellcodeverzeichnis definierten Werte.Android AOSP - Definition von Scan-Intervall und Scan-Fenster in Android-Quellcode

Antwort

5

Ich fand, während das Stichwort greping "SCAN_MODE_BALANCED":

/** 
    * Scan params corresponding to regular scan setting 
    */ 
    private static final int SCAN_MODE_LOW_POWER_WINDOW_MS = 500; 
    private static final int SCAN_MODE_LOW_POWER_INTERVAL_MS = 5000; 
    private static final int SCAN_MODE_BALANCED_WINDOW_MS = 2000; 
    private static final int SCAN_MODE_BALANCED_INTERVAL_MS = 5000; 
    private static final int SCAN_MODE_LOW_LATENCY_WINDOW_MS = 5000; 
    private static final int SCAN_MODE_LOW_LATENCY_INTERVAL_MS = 5000; 

    /** 
    * Scan params corresponding to batch scan setting 
    */ 
    private static final int SCAN_MODE_BATCH_LOW_POWER_WINDOW_MS = 1500; 
    private static final int SCAN_MODE_BATCH_LOW_POWER_INTERVAL_MS = 150000; 
    private static final int SCAN_MODE_BATCH_BALANCED_WINDOW_MS = 1500; 
    private static final int SCAN_MODE_BATCH_BALANCED_INTERVAL_MS = 15000; 
    private static final int SCAN_MODE_BATCH_LOW_LATENCY_WINDOW_MS = 1500; 
    private static final int SCAN_MODE_BATCH_LOW_LATENCY_INTERVAL_MS = 5000; 

auch ScanManager.ScanNative.configureRegularScanParams auszuchecken(). Zwei Parameter scanWindow und scanInterval werden entsprechend der Scaneinstellung (ScanSettings.SCAN_MODE_LOW_POWER, ScanSettings.SCAN_MODE_BALANCED, ScanSettings.SCAN_MODE_LOW_LATENCY) festgelegt, in BLE-Einheiten konvertiert und dann an gattSetScanParametersNative() übergeben.

Hoffe, das hilft.

+0

Danke @yanoken !! – HRG

+1

Was bedeutet es genau, wenn ich sage, dass ich meine ScanSettings auf SCAN_MODE_LOW_LATENCY eingestellt habe? Es heißt, es scannt alle 5 Sekunden für 5 Sekunden und startet dann das Scannen wieder - ich glaube nicht, dass dies der Fall ist, da ich eine Anwendung habe, wo die Updates schneller sind als alle 5 Sekunden. Könnten Sie bitte näher auf die Interpretation dieser Werte eingehen? – BigPenguin

1

Ich bin mir nicht sicher, ob dies richtig ist oder wenn Sie selbst können es verwenden, um die Werte, die Sie brauchen zu finden, aber ich fand einige code from Google regarding scanning settings: unter Werte in http://androidxref.com/5.0.0_r2/xref/packages/apps/Bluetooth/src/com/android/bluetooth/gatt/ScanManager.java

// Constants for Scan Cycle 
    // Low Power: 2.5 minute period with 1.5 seconds active (1% duty cycle) 
    /* @VisibleForTesting */ static final int LOW_POWER_IDLE_MILLIS = 148500; 
    /* @VisibleForTesting */ static final int LOW_POWER_ACTIVE_MILLIS = 1500; 

    // Balanced: 15 second period with 1.5 second active (10% duty cycle) 
    /* @VisibleForTesting */ static final int BALANCED_IDLE_MILLIS = 13500; 
    /* @VisibleForTesting */ static final int BALANCED_ACTIVE_MILLIS = 1500; 

    // Low Latency: 1.67 second period with 1.5 seconds active (90% duty cycle) 
    /* @VisibleForTesting */ static final int LOW_LATENCY_IDLE_MILLIS = 167; 
    /* @VisibleForTesting */ static final int LOW_LATENCY_ACTIVE_MILLIS = 1500; 
+0

Danke Tim. Aber ich konnte solche Art von Definitionen in google android source code nicht finden. Nach dem Suchen in der Treiberstufe fand ich hier etwas wie dieses http://androidxref.com/5.0.0_r2/xref/external/bluetooth/bluedroid/stack/btm/btm_ble_int .h #define BTM_BLE_GAP_DISC_SCAN_INT 18/* Intervall (scan_int) = 11,25 ms = 0x0010 * 0,625 ms */ #define BTM_BLE_GAP_DISC_SCAN_WIN 18/* scan_window = 11,25 ms = 0x0010 * 0,625 ms */ – HRG

+0

entspricht dem obigen Scanfenster und Scan Intervall. Aber ich frage mich, wie sie die Werte für SCAN_MODE_BALANCED, SCAN_MODE_LOW_LATENCY, SCAN_MODE_LOW_POWER definieren! – HRG