1# Please follow these guidelines when adding config.
2#
3# 1. The Error Config is defined as an Array of APNs identified by "ApnName"
4#    1.1. Other than Apn names this can also have "*" value which
5#         represents that this can be used as a generic fallback when no
6#         other policy matches.
7# 2. Each Apn associated with "ApnName" has an array of "ErrorTypes". Where each element
8#    in "ErrorTypes" array defines the config for the Error
9# 3. The element in "ErrorTypes" array has the following items
10#    3.1. "ErrorType": Defines the type of error in String.
11#               String should match @ErrorPolicyErrorType in @ErrorPolicyManager
12#         3.1.1. "IKE_PROTOCOL_ERROR_TYPE" refers to the Notify Error coming in
13#                Notify paylod. Refer to https://tools.ietf.org/html/rfc4306#section-3.10.1
14#                for global errors and carrier specific requirements for other carrier specific
15#                error codes.
16#         3.1.2. "GENERIC_ERROR_TYPE" refers to the following Iwlan errors - "IO_EXCEPTION",
17#                "TIMEOUT_EXCEPTION", "SERVER_SELECTION_FAILED" and "TUNNEL_TRANSFORM_FAILED"
18#         3.1.3. "*" represents that this policy a generic fallback when no
19#                other policy matches.
20#    3.2. "ErrorDetails": Array of error specifics for which the policy needs to be applied to.
21#         Following are the currently supported formats of elements in the array:
22#         Note: Array can be a mix of number, range and string formats.
23#         3.2.1. Number or Code: "24" - Number specific to the error(see 3.2.6, 3.2.7).
24#         3.2.2. Range: "9000-9050" Range of specific errors.
25#         3.2.3. Any: "*" value represents that this can be applied to all ErrorDetails
26#                when there is no specific match. This will be a single element array.
27#         3.2.4. String: String describing the specific error.
28#                Currently allowed string values - "IO_EXCEPTION", "TIMEOUT_EXCEPTION",
29#                "SERVER_SELECTION_FAILED" and "TUNNEL_TRANSFORM_FAILED"
30#         3.2.5. "IKE_PROTOCOL_EXCEPTION" ErrorType expects the "ErrorDetail" to be
31#                defined only in numbers or range of numbers.
32#                Examples: ["24"] or ["9000-9050"] or ["7", "14000-14050"]
33#         3.2.6. "GENERIC_ERROR_TYPE" or "*" ErrorType expects only the following to be
34#                in "ErrorDetail" - "IO_EXCEPTION", "TIMEOUT_EXCEPTION",
35#                "SERVER_SELECTION_FAILED", "TUNNEL_TRANSFORM_FAILED" and "*".
36#                Example: ["IO_EXCEPTION", "TIMEOUT_EXCEPTION"] or ["*"]
37#    3.3. "RetryArray": Array of retry times (in secs) represented in string format.
38#         Following formats are currently supported.
39#         3.3.1. ["0","0", "0"] Retry immediately for maximum 3 times and then Fail.
40#         3.3.2. [] Empty array means to fail whenever the error happens.
41#         3.3.3. ["2", "4", "8"] Retry times are 2 secs, 4secs and 8 secs - Fail after that.
42#         3.3.4. ["5", "10", "15", "-1"] Here the "-1" represents infinite retires with the
43#                retry time "15" (the last retry number).
44#         3.3.5. ["2+r15"] 2 seconds + Random time below 15 seconds.
45#    3.4. "UnthrottlingEvents": Events for which the retry time can be unthrottled.
46#         String should match the events defined in @IwlanEventListener
47#         Following are the currently supported UnthrottlingEvents
48#         3.4.1. WIFI_DISABLE_EVENT: Wifi on to off toggle.
49#         3.4.2. APM_DISABLE_EVENT: APM on to off toggle.
50#         3.4.3. APM_ENABLE_EVENT: APM off to on toggle.
51#         3.4.4. WIFI_AP_CHANGED_EVENT: Wifi is connected to a AP with different SSID.
52#         3.4.5. WIFI_CALLING_DISABLE_EVENT: Wifi calling button on to off toggle.
53#
54# Note: When the value is "*" for any of "ApnName" or "ErrorType" or "ErrorDetails",
55#       it means that the config definition applies to rest of the errors for which
56#       the config is not defined.
57#       For example, if "ApnName" is "ims" and one of the "ErrorType" in it
58#       is defined as "*" - this policy will be applied to the error
59#       that doesn't fall into other error types defined under "ims".
60[
61  {
62    "ApnName": "*",
63    "ErrorTypes": [
64      {
65        "ErrorType": "*",
66        "ErrorDetails": ["*"],
67        "RetryArray": ["5", "10", "-1"],
68        "UnthrottlingEvents": ["APM_ENABLE_EVENT", "APM_DISABLE_EVENT", "WIFI_DISABLE_EVENT", "WIFI_AP_CHANGED_EVENT"]
69      },
70      {
71        "ErrorType": "GENERIC_ERROR_TYPE",
72        "ErrorDetails": ["IO_EXCEPTION"],
73        "RetryArray": ["0", "0", "0", "60+r15", "120", "-1"],
74        "UnthrottlingEvents": ["APM_ENABLE_EVENT", "APM_DISABLE_EVENT", "WIFI_DISABLE_EVENT", "WIFI_AP_CHANGED_EVENT"]
75      }
76    ]
77  }
78]
79