19/11/23 13:24:50.24 16BvOCmG.net
セルスタンバイ(lineage 14.1時点)について調べたので自分用メモ
データsimのセルスタンバイは以下のどちらかの方法で解消できる
1, config_voice_capableをfalseにする
2, ServiceStateTracker::useDataRegStateForDataOnlyDevicesのmNewSS.setVoiceRegState(mNewSS.getDataRegState());を無条件で実行するようにする
実態としては、2のmNewSS.setVoiceRegState(mNewSS.getDataRegState());の実行条件が1になってる。
実際のコード↓ lineageのソース階層で言うと、frameworks/opt/telephony/src/java/com/android/internal/telephony/ServiceStateTracker.java
protected void useDataRegStateForDataOnlyDevices() {
if (mVoiceCapable == false) {
if (DBG) {
log("useDataRegStateForDataOnlyDevice: VoiceRegState=" + mNewSS.getVoiceRegState()
+ " DataRegState=" + mNewSS.getDataRegState());
}
// TODO: Consider not lying and instead have callers know the difference.
mNewSS.setVoiceRegState(mNewSS.getDataRegState());
}
}
mVoiceCapableが他所でconfig_voice_capableによってfalseになってると、mNewSS.setVoiceRegState(mNewSS.getDataRegState());が実行される。
これによって、データの疎通状況フラグが通話の疎通状況フラグにコピーされ、常に圏内のフリが行われる。