Move retrying into DC.
[android/platform/frameworks/opt/telephony.git] / README.txt
1 This package contains classes used to manage a DataConnection.
2
3 A criticial aspect of this class is that most objects in this
4 package run on the same thread except DataConnectionTracker
5 This makes processing efficient as it minimizes context
6 switching and it eliminates issues with multi-threading.
7
8 This can be done because all actions are either asynchronous
9 or are known to be non-blocking and fast. At this time only
10 DcTesterDeactivateAll takes specific advantage of this
11 single threading knowledge by using Dcc#mDcListAll so be
12 very careful when making changes that break this assumption.
13
14 A related change was in DataConnectionAc I added code that
15 checks to see if the caller is on a different thread. If
16 it is then the AsyncChannel#sendMessageSynchronously is
17 used. If the caller is on the same thread then a getter
18 is used. This allows the DCAC to be used from any thread
19 and was required to fix a bug when Dcc called
20 PhoneBase#notifyDataConnection which calls DCT#getLinkProperties
21 and DCT#getLinkCapabilities which call Dcc all on the same
22 thread. Without this change there was a dead lock when
23 sendMessageSynchronously blocks.
24
25
26 Testing:
27
28 There are three Intents that can be sent for testing pruproses:
29
30 The first two cause bringUp and retry requests to fail and the first
31 causes all DC's to fail the second causes a specific DC to fail:
32
33   adb shell am broadcast -a com.android.internal.telephony.dataconnection.action_fail_bringup --ei counter 2 --ei fail_cause -3
34   adb shell am broadcast -a com.android.internal.telephony.dataconnection.DC-1.action_fail_bringup --ei counter 2 --ei fail_cause -3
35
36 The other causes all DC's to get torn down, simulating a temporary network outage:
37
38   adb shell am broadcast -a com.android.internal.telephony.dataconnection.action_deactivate_all
39
40 To simplify testing we also have detach and attach simulations below where {x} is gsm, cdma or sip
41
42   adb shell am broadcast -a com.android.internal.telephony.{x}.action_detached
43   adb shell am broadcast -a com.android.internal.telephony.{x}.action_attached
44
45
46 Additionally, you on DEGUGGABLE builds (userdebug, eng) you can replace the retry configuration
47 by setting the SystemProperty: test.data_retry_config for instance:
48
49   adb shell setprop test.data_retry_config "5000,5000,5000"
50
51 Which changes the retry to 3 retires at 5 second intervals. This can be added to
52 /data/local.prop, don't forget to "adb shell chmod 0600 /data/local.prop":
53   $ cat local.prop.test.data_retry_config
54   test.data_retry_config=5000,5000,5000,5000
55