You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
8.6 KiB
178 lines
8.6 KiB
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- Copyright (C) 2018 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.
|
|
-->
|
|
<!-- This xml is the command's structure about supplementary service by ussd command.
|
|
It defines the feature (e.g. call forwarding , caller id), command, parameter, result,
|
|
response ,and response's value definition.
|
|
Developer can use the CarrierXmlParser.java to load this xml structure and use function to
|
|
make ussd command by structure and analyze the ussd response.
|
|
|
|
If developer need to define ussd command by specific carrier, developer can add new xml and
|
|
xml is named carrier_ss_string_carrierId.xml. The carrierId is a number and is defined in
|
|
<a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/latest_carrier_id/carrier_list.textpb">here</a>
|
|
For example: carrier_ss_string_850.xml
|
|
|
|
The tags define as below:
|
|
<regular_parser> : It is a regular expression for response massage.
|
|
<feature name="callforwarding"> : It defines feature about call forwarding.
|
|
<command name="query"> : The command which is named "query" in feature.
|
|
<service_code> : The command's service code. The value defines by carrier.
|
|
<action_code> : From TS 22.030 6.5.2, the procedure always starts with *, #, **, ## or *#.
|
|
<parameter number="1"> : The parameter is supplementary Information. The number defines the
|
|
number of entries.
|
|
<entry position="1">1</entry> :
|
|
This defines the entry and entry's position and entry's text.
|
|
The 'position' is the parameter's position.
|
|
For example: #120*parameter1*parameter2*parameter3*parameter4#
|
|
parameter1 position=1
|
|
parameter2 position=2
|
|
parameter3 position=3
|
|
parameter4 position=4
|
|
The entry's text is define the parameter's value. If developer want to dynamic input,
|
|
text can use string witch start with "tag_" and define in CarrierXmlParser.java.
|
|
e.g. "tag_number","tag_time"
|
|
<response_format number ="3"> : This defines the response message format. The number means
|
|
the number of parameters.
|
|
<entry position="6" key="status_code"/> :
|
|
It defines response message's parameter.
|
|
The 'position' is the index of parser result which is by <regular_parser>.
|
|
The 'key' is the variable's name which is defined in CarrierXmlParser.java. Developer can
|
|
get response value by key's name.
|
|
For example:
|
|
120*1*7*number*time*1*0*0# parse by <regular_parser>
|
|
120 position= 2
|
|
1 position= 4
|
|
7 position= 6
|
|
number position= 8
|
|
time position= 10
|
|
<command_result number="3"> :
|
|
It defines the meaning for 'key' of 'response_format'.
|
|
The 'number' means the number of entries.
|
|
<entry key="status_code" definition="activate">7</entry> :
|
|
The 'key' is the same as 'key' of <response_format>.
|
|
The 'definition' is meaning for 'key' when response value is the same as text.
|
|
For example:
|
|
If response command is 120*1*7*1# and entry is
|
|
<entry key="status_code" definition="activate">7</entry>
|
|
After message parse, the result is that key="status_code" and value is 7.
|
|
After mapping <command_result>, this means that status_code is activate, when key's value
|
|
is 7 from response message.
|
|
-->
|
|
|
|
<resources>
|
|
<!-- This is a parser format by Regular Expression.
|
|
"response_format"'s position follow below index.
|
|
((\d{2,3})(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*))?)?)?)?)?)?)?#)
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
|
-->
|
|
<regular_parser>((\d{2,3})(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*)(\*([^*#]*))?)?)?)?)?)?)?#)</regular_parser>
|
|
<feature name="callforwarding">
|
|
<command name="query"><!--For example: *#120*1#-->
|
|
<service_code>120</service_code>
|
|
<action_code>*#</action_code>
|
|
<parameter number="1">
|
|
<entry position="1">1</entry>
|
|
</parameter>
|
|
<response_format number ="3"><!--For example: 120*1*7*number*time*1*0*0#-->
|
|
<entry position="6" key="status_code"/>
|
|
<entry position="8" key="number"/>
|
|
<entry position="10" key="time" />
|
|
</response_format>
|
|
</command>
|
|
<command name="activate"><!--For example: *120*1*number*time#-->
|
|
<service_code>120</service_code>
|
|
<action_code>*</action_code>
|
|
<parameter number="3">
|
|
<entry position="1">1</entry>
|
|
<entry position="2">tag_number</entry>
|
|
<entry position="3">tag_time</entry>
|
|
</parameter>
|
|
<response_format number="1"><!--For example: 120*1*7*1#-->
|
|
<entry position="6" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command name="deactivate"><!--For example: #120*1#-->
|
|
<service_code>120</service_code>
|
|
<action_code>#</action_code>
|
|
<parameter number="1">
|
|
<entry position="1">1</entry>
|
|
</parameter>
|
|
<response_format number="1"><!--For example: 120*1*6*2#-->
|
|
<entry position="6" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command_result number="3">
|
|
<entry key="status_code" definition="activate">7</entry>
|
|
<entry key="status_code" definition="deactivate">6</entry>
|
|
<entry key="status_code" definition="unregister">4</entry>
|
|
</command_result>
|
|
</feature>
|
|
<feature name="callerid">
|
|
<command name="activate"><!--For example: *148*2*password#-->
|
|
<service_code>148</service_code>
|
|
<action_code>*</action_code>
|
|
<parameter number="2">
|
|
<entry position="1">2</entry>
|
|
<entry position="2">tag_password</entry>
|
|
</parameter>
|
|
<response_format number="1"><!--For example: 148*7#-->
|
|
<entry position="4" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command name="deactivate"><!--For example: *148*1*password#-->
|
|
<service_code>148</service_code>
|
|
<action_code>*</action_code>
|
|
<parameter number="2">
|
|
<entry position="1">1</entry>
|
|
<entry position="2">tag_password</entry>
|
|
</parameter>
|
|
<response_format number="1"><!--For example: 148*7#-->
|
|
<entry position="4" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command_result number="1">
|
|
<entry key="status_code" definition="ok">7</entry>
|
|
</command_result>
|
|
</feature>
|
|
<feature name="callwaiting">
|
|
<command name="query"><!--For example: *#102#-->
|
|
<service_code>102</service_code>
|
|
<action_code>*#</action_code>
|
|
<response_format number ="1"><!--For example: 120*4#-->
|
|
<entry position="4" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command name="activate"><!--For example: *102#-->
|
|
<service_code>102</service_code>
|
|
<action_code>*</action_code>
|
|
<response_format number="1"><!--For example: 102*5#-->
|
|
<entry position="4" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command name="deactivate"><!--For example: #102#-->
|
|
<service_code>102</service_code>
|
|
<action_code>#</action_code>
|
|
<response_format number="1"><!--For example: 148*4#-->
|
|
<entry position="4" key="status_code"/>
|
|
</response_format>
|
|
</command>
|
|
<command_result number="3">
|
|
<entry key="status_code" definition="activate">5</entry>
|
|
<entry key="status_code" definition="deactivate">4</entry>
|
|
<entry key="status_code" definition="unregister">0</entry>
|
|
</command_result>
|
|
</feature>
|
|
</resources>
|