From: Jiwan Kim Date: Thu, 2 Jul 2015 04:25:11 +0000 (+0900) Subject: Code sync from tizen_2.4 X-Git-Tag: submit/tizen/20150630.051205^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e564d657ae44efe9217852c38f3ea47ff93eccb6;p=platform%2Fcore%2Ftelephony%2Ftel-plugin-atmodem.git Code sync from tizen_2.4 Change-Id: Iee3837d46c0331194d4d490c40de73d3f1e292ac --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7492dcc..78d2119 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,5 +49,4 @@ SET_TARGET_PROPERTIES(atmodem-plugin PROPERTIES PREFIX "" OUTPUT_NAME atmodem-pl INSTALL(TARGETS atmodem-plugin LIBRARY DESTINATION ${LIBDIR}/telephony/plugins/modems) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/wiki_mcc_mnc_oper_list.sql DESTINATION /tmp RENAME mcc_mnc_oper_list.sql) INSTALL(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION /usr/share/license RENAME tel-plugin-atmodem) diff --git a/LICENSE b/LICENSE index bae7f54..3d69259 100644 --- a/LICENSE +++ b/LICENSE @@ -1,204 +1,204 @@ -Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved. - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - +Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + diff --git a/packaging/tel-plugin-atmodem.spec b/packaging/tel-plugin-atmodem.spec index 3352336..700df53 100644 --- a/packaging/tel-plugin-atmodem.spec +++ b/packaging/tel-plugin-atmodem.spec @@ -1,6 +1,6 @@ %define major 0 %define minor 1 -%define patchlevel 57 +%define patchlevel 66 Name: tel-plugin-atmodem Version: %{major}.%{minor}.%{patchlevel} @@ -30,25 +30,6 @@ make %{?_smp_mflags} %post /sbin/ldconfig -mkdir -p /opt/dbspace - -if [ ! -f /opt/dbspace/.mcc_mnc_oper_list.db ] -then - sqlite3 /opt/dbspace/.mcc_mnc_oper_list.db < /tmp/mcc_mnc_oper_list.sql -fi - -rm -f /tmp/mcc_mnc_oper_list.sql - -if [ -f /opt/dbspace/.mcc_mnc_oper_list.db ] -then -chmod 600 /opt/dbspace/.mcc_mnc_oper_list.db -fi - -if [ -f /opt/dbspace/.mcc_mnc_oper_list.db-journal ] -then -chmod 644 /opt/dbspace/.mcc_mnc_oper_list.db-journal -fi - %postun -p /sbin/ldconfig %install @@ -58,8 +39,7 @@ cp LICENSE %{buildroot}/usr/share/license/%{name} %files %manifest tel-plugin-atmodem.manifest -%defattr(-,root,root,-) +%defattr(644,system,system,-) #%doc COPYING %{_libdir}/telephony/plugins/modems/atmodem-plugin* -/tmp/mcc_mnc_oper_list.sql /usr/share/license/%{name} diff --git a/res/convert_to_sql.c b/res/convert_to_sql.c deleted file mode 100644 index 2039c65..0000000 --- a/res/convert_to_sql.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * tel-plugin-atmodem - * - * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Ja-young Gu - * - * 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. - */ - -#include -#include - -#define TABLE_NAME "mcc_mnc_oper_list" -#define TABLE_SCHEMA "create table " TABLE_NAME " (id integer primary key, country char(3), mcc integer, mnc char(3), oper char(45) );" - -#define dbg(fmt,args...) fprintf(stderr, fmt, ##args); - -int main(int argc, char *argv[]) -{ - FILE *fp_in; - - char buf[255]; - char brand[255]; - char oper[255]; - char *pos1, *pos2; - char country[10]; - char mnc[10]; - char *oper_select; - int mcc; - - if (argc != 2) { - printf("%s filename.csv\n", argv[0]); - return -1; - } - - fp_in = fopen(argv[1], "r"); - if (fp_in == NULL) { - printf("faild.\n"); - return -1; - } - - printf("%s\n", TABLE_SCHEMA); - - printf("BEGIN;\n"); - while (1) { - fgets (buf, 255, fp_in); - - if (feof(fp_in)) { - break; - } - - // remove '\n' - buf[strlen(buf)-1] = '\0'; - - dbg("\n%s\n", buf); - - pos1 = strchr (buf, ','); - memset (country, 0, 10); - memcpy(country, buf, pos1-buf); - - dbg("country=[%s]\n", country); - - sscanf (pos1+1, "%d", &mcc); - dbg("mcc=[%d]\n", mcc); - - // get mnc - pos1 = strchr (pos1+1, ','); - pos2 = strchr (pos1+1, ','); - - dbg("mnc=[%s]\n", pos1+1); - - memset (mnc, 0, 10); - strncpy (mnc, pos1+1, pos2-pos1-1); - - // get brand - pos1 = pos2; - pos2 = strchr (pos1+1, ','); - - dbg("brand=[%s]\n", pos1+1); - - memset (brand, 0, 255); - strncpy (brand, pos1+1, pos2-pos1-1); - - // get oper - pos1 = pos2; - pos2 = strchr (pos1+1, ','); - - dbg("oper=[%s]\n", pos1+1); - - memset (oper, 0, 255); - strcpy (oper, pos1+1); - - oper_select = brand; - if (strlen(brand) == 0) - oper_select = oper; - - if (oper_select[0] == '\"') { - memset(buf, 0, 255); - snprintf(buf, strlen(oper_select)-2, "%s", oper_select+1); - snprintf(oper_select, 255, "%s", buf); - } - - snprintf(buf, 255, "insert into %s " - " (country, mcc, mnc, oper) " - " values (\"%s\", %d, \"%s\", \"%s\");", - TABLE_NAME, country, mcc, mnc, oper_select); - printf("%s\n",buf); - } - printf("COMMIT;\n"); - - fclose(fp_in); -} diff --git a/res/wiki_mcc_mnc_oper_list.csv b/res/wiki_mcc_mnc_oper_list.csv deleted file mode 100644 index 6c6edf6..0000000 --- a/res/wiki_mcc_mnc_oper_list.csv +++ /dev/null @@ -1,1517 +0,0 @@ -Country,MCC,MNC,Brand,Operator -__,001,01,TEST,Test Network -GE,289,67,Aquafon,Aquafon -GE,289,88,A-Mobile,A-Mobile -AF,412,01,AWCC,Afghan Wireless Communication Company -AF,412,20,Roshan,Telecom Development Company Afghanistan Ltd. -AF,412,40,MTN,MTN Group Afghanistan -AF,412,50,Etisalat,Etisalat Afghanistan -AL,76,01,AMC,Albanian Mobile Communications -AL,276,02,Vodafone,Vodafone Albania -AL,276,03,Eagle Mobile,Eagle Mobile -AL,276,04,Plus Communication,Plus Communication -DZ,603,01,Mobilis,ATM Mobilis -DZ,603,02,Djezzy,Orascom Telecom Algerie Spa -DZ,603,03,Nedjma,Wataniya Telecom Algerie -AS,44,11,Bluesky,Bluesky -AD,213,03,Mobiland,Servei De Tele. DAndorra -AO,631,02,UNITEL,UNITEL S.a.r.l. -AO,631,04,MOVICEL,MOVICEL Telecommunications S.a. -AI,365,010,,Weblinks Limited -AI,365,840,,Cable & Wireless -AG,344,030,APUA,Antigua Public Utilities Authority -AG,344,920,LIME,Cable & Wireless Caribbean Cellular (Antigua) Limited -AG,338,050,Digicel,Antigua Wireless Ventures Limited -AR,722,010,Movistar,Telefonica Móviles Argentina SA -AR,722,020,Nextel,NII Holdings -AR,722,070,Movistar,Telefonica Móviles Argentina SA -AR,722,310,Claro,AMX Argentina S.A -AR,722,320,Claro,AMX Argentina S.A -AR,722,330,Claro,AMX Argentina S.A -AR,722,34,Personal,Telecom Personal SA -AR,722,341,Personal,Telecom Personal SA -AR,722,350,,Hutchinson (PORT HABLE) -AR,722,36,Personal,Telecom Personal SA -AM,283,01,Beeline,ArmenTel -AM,283,05,VivaCell-MTS,K Telecom CJSC -AM,283,10,Orange, -AW,363,01,SETAR,Servicio di Telecomunicacion di Aruba -AW,363,02,Digicel, -AU,505,01,Telstra,Telstra Corporation Limited -AU,505,02,Optus,Singtel Optus Proprietary Limited -AU,505,03,Vodafone,Vodafone Hutchison Australia Proprietary Limited -AU,505,04,,Department of Defence -AU,505,05,Ozitel, -AU,505,06,3,Vodafone Hutchison Australia Proprietary Limited -AU,505,08,One.Tel,One.Tel Limited -AU,505,09,Airnet, -AU,505,12,3,Vodafone Hutchison Australia Proprietary Limited -AU,505,13,Railcorp,Rail Corporation New South Wales -AU,505,14,AAPT,Telecom New Zealand -AU,505,15,3GIS, -AU,505,16,Victorian Rail Track, -AU,505,21,SOUL,TPG Telecom Limited -AU,505,24,Advance Communications Technologies Pty. Ltd., -AU,505,38,Crazy John's,Vodafone Hutchison Australia Proprietary Limited -AU,505,71,Telstra,Telstra Corporation Limited -AU,505,72,Telstra,Telstra Corporation Limited -AU,505,88,Localstar Holding Pty. Ltd., -AU,505,90,Optus,Singtel Optus Proprietary Limited -AU,505,99,One.Tel,One.Tel -AT,232,01,A1,A1 Telekom Austria -AT,232,03,T-Mobile,T-Mobile Austria -AT,232,05,Orange,Orange Austria -AT,232,07,tele.ring,T-Mobile Austria -AT,232,09,A1,A1 Telekom Austria -AT,232,10,3,Hutchison 3G -AT,232,11,bob,A1 Telekom Austria -AT,232,12,yesss,yesss -AT,232,14,3,Hutchison 3G -AT,232,15,Barablu,Barablu Mobile Ltd. -AT,232,91,GSM-R A,ÖBB -AZ,400,01,Azercell, -AZ,400,02,Bakcell, -AZ,400,03,FONEX,CATEL -AZ,400,04,Nar Mobile,Azerfon -BS,364,390,BaTelCo,The Bahamas Telecommunications Company Ltd -BH,426,01,Batelco,Bahrain Telecommunications Company -BH,426,02,zain BH,Zain Bahrain -BH,426,04,VIVA,Viva Bahrain -BD,470,01,Grameenphone,GrameenPhone Ltd -BD,470,02,Robi,Axiata Bangladesh Ltd. -BD,470,03,Banglalink,Orascom Telecom Holding -BD,470,04,TeleTalk, -BD,470,05,Citycell, -BD,470,06,Airtel formerly Warid Telcom,Bharti airtel Bangladesh Ltd. -BB,342,600,LIME,LIME (formerly known as Cable & Wireless) -BB,342,750,Digicel,Digicel (Barbados) Limited -BB,342,820,,Sunbeach Communications -BY,257,01,velcom, -BY,257,02,MTS,Mobile TeleSystems -BY,257,03,DIALLOG,BelCel -BY,257,04,life:),Belarussian Telecommunications Network -BY,257,501,BelCel JV, -BE,206,01,Proximus,Belgacom Mobile -BE,206,05,Telenet,Telenet -BE,206,10,Mobistar,France Telecom -BE,206,20,BASE,KPN -BZ,702,67,DigiCell,Belize Telemedia -BZ,702,99,Smart,SpeedNet Communications Limited -BJ,616,01,Libercom,Benin Telecoms Mobile -BJ,616,02,Moov,Telecel Benin -BJ,616,03,MTN,Spacetel Benin -BJ,616,04,BBCOM,Bell Benin Communications -BJ,616,05,Glo,Glo Communication Benin -BM,350,01,Digicel Bermuda,Telecommunications (Bermuda & West Indies) Ltd -BM,350,02,Mobility,M3 Wireless -BM,338,050,Digicel Bermuda, -BM,310,59,Cellular One, -BT,402,11,B-Mobile,B-Mobile -BT,402,77,TashiCell,Tashi InfoComm Limited -BO,736,01,Nuevatel,Nuevatel PCS De Bolivia SA -BO,736,02,Entel,Entel SA -BO,736,03,Tigo,Telefonica Celular De Bolivia S.A -BA,218,03,HT-ERONET,Public Enterprise Croatian Telecom Ltd. -BA,218,05,m:tel,RS Telecommunications JSC Banja Luka -BA,218,90,BH Mobile,BH Telecom -BW,652,01,Mascom,Mascom Wireless (Pty) Limited -BW,652,02,Orange,Orange (Botswana) Pty Limited -BW,652,04,BTC Mobile,Botswana Telecommunications Corporation -BR,724,00,Nextel,"NII Holdings, Inc." -BR,724,02,TIM,Telecom Italia Mobile -BR,724,03,TIM,Telecom Italia Mobile -BR,724,04,TIM,Telecom Italia Mobile -BR,724,05,Claro BR,Claro -BR,724,06,Vivo,Vivo S.A. -BR,724,07,Sercomtel,Sercomtel Celular -BR,724,10,Vivo,Vivo S.A. -BR,724,11,Vivo,Vivo S.A. -BR,724,15,CTBC Celular,CTBC Celular S.A. -BR,724,16,Brasil Telecom GSM,Brasil Telecom GSM -BR,724,23,Vivo,Vivo S.A. -BR,724,31,Oi,TNL PCS -BR,724,32,CTBC Celular,CTBC Celular S.A. -BR,724,33,CTBC Celular,CTBC Celular S.A. -BR,724,34,CTBC Celular,CTBC Celular S.A. -BR,724,39,Nextel,"NII Holdings, Inc." -VG,348,170,LIME,Cable & Wireless -VG,348,570,CCT Boatphone,Caribbean Cellular Telephone -VG,348,770,Digicel,Digicel (BVI) Limited -BN,528,01,,Jabatan Telekom Brunei -BN,528,02,B-Mobile,B-Mobile Communications Sdn Bhd -BN,528,11,DSTCom,Data Stream Technology -BG,284,01,M-Tel,Mobiltel -BG,284,03,Vivacom,BTC -BG,284,04,Undisclosed,Undisclosed -BG,284,05,GLOBUL,Cosmo Bulgaria Mobile -BF,613,01,Telmob,Onatal -BF,613,02,Zain,Celtel Burkina Faso -BF,613,03,Telecel Faso,Telecel Faso SA -BI,642,01,Spacetel,Econet Wireless Burundi PLC -BI,642,02,Africell,Africell PLC -BI,642,03,Onatel,Onatel -BI,642,07,Smart Mobile,LACELL SU -BI,642,08,HiTs Telecom,HiTs Telecom -BI,642,82,U-COM Burundi,U-COM Burundi S.A. -KH,456,01,Mobitel,CamGSM -KH,456,02,hello,Telekom Malaysia International (Cambodia) Co. Ltd -KH,456,03,,S Telecom -KH,456,04,qb,Cambodia Advance Communications Co. Ltd -KH,456,05,Star-Cell,APPLIFONE CO. LTD. -KH,456,06,Smart Mobile,"Latelz Co., Ltd" -KH,456,18,Mfone,Camshin / Shinawatra -KH,456,11,Excell, -KH,456,09,Beeline,Sotelco Ltd. -KH,456,08,Metfone,Viettel -CM,624,01,MTN Cameroon,Mobile Telephone Network Cameroon Ltd -CM,624,02,Orange,Orange Cameroun S.A. -CA,302,220,Telus,Telus Mobility -CA,302,221,Telus,Telus Mobility -CA,302,270,unknown,EastLink -CA,302,290,,Airtel Wireless -CA,302,320,Mobilicity,DAVE Wireless -CA,302,350,FIRST,FIRST Networks Operations -CA,302,360,MiKe,Telus Mobility -CA,302,361,Telus,Telus Mobility -CA,302,370,Fido,Fido Solutions (Rogers Wireless) -CA,302,380,DMTS,Dryden Mobility -CA,302,490,WIND Mobile,Globalive Communications -CA,302,500,Videotron,Videotron -CA,302,510,Videotron,Videotron -CA,302,610,Bell,Bell Mobility -CA,302,610,Bell,Virgin Mobile Canada -CA,302,620,ICE Wireless,ICE Wireless -CA,302,640,Bell,Bell Mobility -CA,302,652,,BC Tel Mobility (Telus) -CA,302,653,Telus,Telus Mobility -CA,302,655,MTS,MTS Mobility -CA,302,656,TBay,Thunder Bay Telephone Mobility -CA,302,657,Telus,Telus Mobility -CA,302,660,MTS,MTS Mobility -CA,302,680,SaskTel,SaskTel Mobility -CA,302,701,,MB Tel Mobility -CA,302,702,,MT&T Mobility (Aliant) -CA,302,703,,New Tel Mobility (Aliant) -CA,302,710,Globalstar, -CA,302,720,Rogers Wireless,Rogers Communications -CA,302,780,SaskTel,SaskTel Mobility -CA,302,880,Bell / Telus / SaskTel,"Shared Telus, Bell, and SaskTel" -CV,625,01,CVMOVEL,"CVMovel, S.A." -CV,625,02,T+,T+ -KY,346,140,LIME,Cable & Wireless (Cayman Islands) Limited -KY,346,50,Digicel,Digicel Cayman Ltd. -CF,623,01,CTP,Centrafrique Telecom Plus -CF,623,02,TC,Telecel Centrafrique -CF,623,03,Orange,Orange RCA -CF,623,04,Nationlink,Nationlink Telecom RCA -TD,622,01,Airtel,Bharti Airtel SA -TD,622,02,,Tchad Mobile -TD,622,03,,TIGO - Millicom -TD,622,04,Salam,Sotel Mobile -CL,730,01,entel,Entel PCS Telecomunicaciones S.A. -CL,730,02,movistar,Telefónica Móvil de Chile -CL,730,03,Claro,Claro Chile S.A. -CL,730,04,Nextel,Centennial Cayman Corp. Chile -CL,730,08,VTR Móvil,VTR S.A. -CL,730,09,Nextel,Centennial Cayman Corp. Chile -CL,730,10,entel,Entel Telefonía Móvil S.A. -CL,730,99,Will,WILL Telefonía -CN,460,00,China Mobile,China Mobile -CN,460,01,China Unicom,China Unicom -CN,460,02,China Mobile,China Mobile -CN,460,03,China Telecom,China Telecom -CN,460,05,China Telecom,China Telecom -CN,460,06,China Unicom,China Unicom -CN,460,07,China Mobile,China Mobile -CN,460,20,China Tietong,China Tietong -CO,732,001,,Colombia Telecomunicaciones S.A. -CO,732,002,Edatel,Edatel S.A. -CO,732,101,Comcel,Comcel Colombia -CO,732,102,movistar,Bellsouth Colombia -CO,732,103,Tigo,Colombia Móvil -CO,732,111,Tigo,Colombia Móvil -CO,732,123,movistar,Telefónica Móviles Colombia -KM,654,01,,HURI - SNPT -CG,629,01,Airtel,Celtel Congo -CG,629,10,Libertis Telecom,MTN CONGO S.A -CG,629,07,,Warid Telecom -CK,548,01,,Telecom Cook -CR,712,01,Kolbi ICE,Instituto Costarricense de Electricidad -CR,712,02,Kolbi ICE,Instituto Costarricense de Electricidad -CR,712,03,Claro,Claro CR Telecomunicaciones -CR,712,04,movistar,Telefonica Móviles Costa Rica -HR,219,01,T-Mobile,T-Mobile Croatia -HR,219,02,Tele2,Tele2 -HR,219,10,Vip,Vipnet -CU,368,01,CUBACEL,"Empresa de Telecomunicaciones de Cuba, SA" -CY,280,01,Cytamobile-Vodafone,Cyprus Telecommunications Auth -CY,280,10,MTN,Areeba Ltd -CZ,230,01,T-Mobile,T-Mobile Czech Republic -CZ,230,02,O2,Telefónica Czech Republic -CZ,230,03,Vodafone,Vodafone Czech Republic -CZ,230,04,U:fon,"MobilKom, a. s." -CZ,230,05,,"TRAVEL TELEKOMMUNIKATION, s.r.o." -CZ,230,06,,"OSNO TELECOMUNICATION, s.r.o." -CZ,230,98,,"Správa železniční dopravní cesty, s.o." -CZ,230,99,Vodafone,Vodafone Czech Republic -CD,630,01,Vodacom,Vodacom Congo RDC sprl -CD,630,02,Zain,Celtel Congo -CD,630,04,,Cellco -CD,630,05,Supercell,Supercell SPRL -CD,630,10,Libertis Telecom, -CD,630,86,CCT,Congo-Chine Telecom s.a.r.l. -CD,630,89,SAIT Telecom,OASIS SPRL -DK,238,01,TDC,TDC A/S -DK,238,02,Telenor,Telenor Denmark -DK,238,03,,MIGway A/S -DK,238,05,,ApS KBUS -DK,238,06,3,Hi3G Denmark ApS -DK,238,07,,Barablu Mobile Ltd. -DK,238,09,,Dansk Beredskabskommunikation A/S -DK,238,10,TDC,TDC A/S -DK,238,11,,Dansk Beredskabskommunikation A/S -DK,238,12,,Lycamobile Denmark Ltd -DK,238,20,Telia, -DK,238,30,Telia,Telia Nättjänster Norden AB -DK,238,40,,Ericsson Danmark A/S -DK,238,77,Telenor,Telenor Denmark -DJ,638,01,Evatis,Djibouti Telecom SA -DM,366,020,Digicel,Digicel Group Limited -DM,366,110,,Cable & Wireless -DO,370,01,Orange,Orange Dominicana -DO,370,02,Claro,"Compañía Dominicana de Teléfonos, C por" -DO,370,03,Tricom,Tricom S.A. -DO,370,04,Viva,"Trilogy Dominicana, S.A." -TL,514,02,,Timor Telecom -EC,740,00,Movistar,Otecel S.A. -EC,740,01,Claro,CONECEL S.A. -EC,740,02,Alegro,Corporación Nacional de Telecomunicaciones CNT EP -EG,602,01,Mobinil,ECMS-Mobinil -EG,602,02,Vodafone,Vodafone Egypt -EG,602,03,Etisalat,Etisalat Egypt -SV,706,01,CTE Telecom Personal,CTE Telecom Personal SA de CV -SV,706,02,digicel,Digicel Group -SV,706,03,Tigo,Telemovil EL Salvador S.A. -SV,706,04,movistar,Telefónica Móviles El Salvador -SV,706,11,Claro,América Móvil -GQ,627,01,Orange GQ,GETESA -GQ,627,03,Hits GQ,HiTs EG.SA -ER,657,01,Eritel,Eritrea Telecommunications Services Corporation -EE,248,01,EMT,Estonian Mobile Telecom -EE,248,02,Elisa,Elisa Eesti -EE,248,03,Tele 2,Tele 2 Eesti -EE,248,04,,OY Top Connect -EE,248,05,,AS Bravocom Mobiil -EE,248,06,,Progroup Holding -ET,636,01,ETH-MTN,Ethio Telecom -FO,288,01,Faroese Telecom,Faroese Telecom -FO,288,02,Vodafone,Vodafone Faroe Islands -FJ,542,01,Vodafone,Vodafone Fiji -FJ,542,02,Digicel,Digicel Fiji -FI,244,03,DNA,DNA Oy -FI,244,05,Elisa,Elisa Oyj -FI,244,07,Nokia,Nokia Test Network -FI,244,08,,Unknown -FI,244,10,,TDC Oy -FI,244,11,VIRVE,Suomen Erillisverkot Oy -FI,244,12,DNA,DNA Oy -FI,244,14,AMT,Ålands Mobiltelefon -FI,244,15,SAMK,Samk student network -FI,244,21,Saunalahti,Elisa Oyj -FI,244,29,,Scnl Truphone -FI,244,91,Sonera,TeliaSonera Finland Oyj -FR,208,00,Orange,France Télécom -FR,208,01,Orange,France Télécom -FR,208,02,Orange,France Télécom -FR,208,05,,Globalstar Europe -FR,208,06,,Globalstar Europe -FR,208,07,,Globalstar Europe -FR,208,10,SFR,Vivendi -FR,208,11,SFR,Vivendi -FR,208,13,SFR,Vivendi -FR,208,14,Free Mobile,Iliad -FR,208,15,Free Mobile,Iliad -FR,208,20,Bouygues,Bouygues Telecom -FR,208,21,Bouygues,Bouygues Telecom -FR,208,22,Transatel Mobile,Transatel -FR,208,88,Bouygues,Bouygues Telecom -PF,547,20,Vini,Tikiphone SA -GA,628,01,Libertis,Gabon Telecom & Libertis S.A. -GA,628,02,Moov,Atlantique Télécom (Etisalat Group) Gabon S.A. -GA,628,03,Airtel,Airtel Gabon S.A. -GA,628,04,Azur,USAN Gabon S.A. -GM,607,01,Gamcel,Gamcel -GM,607,02,Africel,Africel -GM,607,03,Comium,Comium -GM,607,04,QCell,QCell Gambia -GE,282,01,Geocell,Geocell Limited -GE,282,02,MagtiCom,Magticom GSM -GE,282,03,MagtiCom,Magtifix -GE,282,04,Beeline,Mobitel LLC -GE,282,05,Silknet,Silknet CDMA -DE,262,01,T-Mobile,T-Mobile Deutschland GmbH -DE,262,02,Vodafone,Vodafone D2 GmbH -DE,262,03,E-Plus,E-Plus Mobilfunk -DE,262,04,Vodafone, -DE,262,05,E-Plus,E-Plus Mobilfunk -DE,262,06,T-Mobile, -DE,262,07,O2,O2 (Germany) GmbH & Co. OHG -DE,262,08,O2, -DE,262,09,Vodafone, -DE,262,10,,Arcor AG & Co -DE,262,11,O2, -DE,262,12,,Dolphin Telecom -DE,262,13,,Mobilcom Multimedia -DE,262,14,,Group 3G UMTS -DE,262,15,Airdata, -DE,262,16,Vistream, -DE,262,42,27C3,Chaos Computer Club -DE,262,43,LYCA,Lycamobile -DE,262,60,,DB Telematik -DE,262,76,,Siemens AG -DE,262,77,E-Plus, -DE,262,92,Nash Technologies, -DE,262,901,Debitel, -GH,620,01,MTN,MTN Group -GH,620,02,Vodafone,Vodafone Group -GH,620,03,tiGO,Millicom Ghana -GH,620,04,Expresso,Kasapa / Hutchison Telecom -GH,620,06,Airtel,Airtel -GI,266,01,GibTel,Gibraltar Telecoms -GI,266,06,CTS Mobile,CTS Gibraltar -GR,202,01,Cosmote,COSMOTE - Mobile Telecommunications S.A. -GR,202,05,Vodafone,Vodafone Greece -GR,202,09,Wind,Wind Hellas Telecommunications S.A. (Q-Telecom) -GR,202,10,Wind,Wind Hellas Telecommunications S.A. -GL,290,01,,TELE Greenland A/S -GD,352,030,Digicel,Digicel Grenada Ltd. -GD,352,110,Cable & Wireless,Cable & Wireless Grenada Ltd. -GP,340,01,Orange,Orange Caraïbe Mobiles -GP,340,02,Outremer,Outremer Telecom -GP,340,03,Telcell,Saint Martin et Saint Barthelemy Telcell Sarl -GP,340,08,Dauphin,Dauphin Telecom -GP,340,20,Digicel,DIGICEL Antilles Française Guyane -GU,310,032,IT&E Wireless,"IT&E Overseas, Inc" -GU,310,033,,Guam Telephone Authority -GU,310,140,mPulse,GTA Wireless -GU,310,370,docomo,docomo Pacific -GU,311,250,i CAN_GSM,Wave Runner LLC -GU,310,470,docomo,docomo Pacific -GT,704,01,Claro,Servicios de Comunicaciones Personales Inalambricas (SERCOM) -GT,704,02,Comcel / Tigo,Millicom / Local partners -GT,704,03,movistar,Telefonica Móviles Guatemala (Telefónica) -GB,234,55,Sure Mobile,Cable & Wireless Guernsey -GB,234,50,Wave Telecom,Wave Telecom (JT-Wave) -GB,234,03,Airtel Vodafone,Guernsey Airtel Ltd -GN,611,01,Orange S.A.,Orange -GN,611,02,Sotelgui,Sotelgui Lagui -GN,611,03,Telecel Guinee,INTERCEL Guinée -GN,611,04,MTN,Areeba Guinea -GN,611,05,Cellcom,Cellcom -GW,632,02,Areeba,Spacetel Guiné-Bissau S.A. -GW,632,03,Orange, -GY,738,01,Digicel,U-Mobile (Cellular) Inc. -GY,738,02,GT&T Cellink Plus,Guyana Telephone & Telegraph Co. -HT,372,01,Voila,Communication Cellulaire d'Haiti S.A. -HT,372,02,Digicel,Unigestion Holding S.A. -HT,372,03,NATCOM,Telecommunication S.A. -HN,708,01,Claro,Servicios de Comunicaciones de Honduras S.A. de C.V. -HN,708,02,Tigo,Celtel / Tigo -HN,708,30,Hondutel,Empresa Hondureña de Telecomunicaciones -HN,708,40,DIGICEL,Digicel de Honduras -HK,454,00,1O1O / One2Free,CSL Limited merged New World -HK,454,01,,CITIC Telecom 1616 -HK,454,02,,CSL Limited -HK,454,03,3 (3G),Hutchison Telecom -HK,454,04,3 (2G),Hutchison Telecom -HK,454,05,3 (CDMA),Hutchison Telecom -HK,454,06,SmarTone,SmarTone Mobile Communications Limited -HK,454,07,,China Unicom (Hong Kong) Limited -HK,454,08,,Trident Telecom -HK,454,09,,China Motion Telecom -HK,454,10,New World Mobility,CSL Limited -HK,454,11,,China-Hong Kong Telecom -HK,454,12,CMCC HK,China Mobile Hong Kong Company Limited -HK,454,14,,Hutchison Telecom -HK,454,15,,SmarTone Mobile Communications Limited -HK,454,16,PCCW Mobile (2G),PCCW Limited -HK,454,17,,SmarTone Mobile Communications Limited -HK,454,18,,CSL Limited -HK,454,19,PCCW Mobile (3G),PCCW Limited -HK,454,29,PCCW Mobile (CDMA),PCCW Limited -HU,216,01,Telenor,Telenor Magyarország Zrt. -HU,216,30,T-Mobile,Magyar Telekom Plc -HU,216,70,Vodafone,Vodafone Magyarország Zrt. -IS,274,01,Síminn,Iceland Telecom -IS,274,02,Vodafone,Og fjarskipti hf -IS,274,03,Vodafone,Vodafone Iceland -IS,274,04,Viking,IMC Island ehf -IS,274,06,,Núll níu ehf -IS,274,07,IceCell,IceCell ehf -IS,274,08,On-waves,Iceland Telecom -IS,274,11,Nova,Nova ehf -IS,274,12,Tal,Tal hf -IN,404,01,Vodafone IN,Haryana -IN,404,02,AirTel,Punjab -IN,404,03,AirTel,Himachal Pradesh -IN,404,04,IDEA,Delhi & NCR -IN,404,05,Vodafone IN,Gujarat -IN,404,07,IDEA,Andhra Pradesh -IN,404,09,Reliance,Assam -IN,404,10,AirTel,Delhi & NCR -IN,404,11,Vodafone IN,Delhi & NCR -IN,404,12,IDEA,Haryana -IN,404,13,Vodafone IN,Andhra Pradesh -IN,404,14,IDEA,Punjab -IN,404,15,Vodafone IN,Uttar Pradesh (East) -IN,404,17,AIRCEL,West Bengal -IN,404,19,IDEA,Kerala -IN,404,20,Vodafone IN,Mumbai -IN,404,21,Loop Mobile,Mumbai -IN,404,22,IDEA,Maharashtra & Goa -IN,404,24,IDEA,Gujarat -IN,404,25,AIRCEL,Bihar -IN,404,27,Vodafone IN,Maharashtra & Goa -IN,404,28,AIRCEL,Orissa -IN,404,29,AIRCEL,Assam -IN,404,30,Vodafone IN,Kolkata -IN,404,31,AirTel,Kolkata -IN,404,34,CellOne,Haryana -IN,404,36,Reliance,Bihar & Jharkhand -IN,404,37,Aircel,Jammu & Kashmir -IN,404,38,CellOne,Assam -IN,404,41,Aircel,Chennai -IN,404,42,Aircel,Tamil Nadu -IN,404,44,IDEA,Karnataka -IN,404,45,Airtel,Karnataka -IN,404,46,Vodafone IN,Kerala -IN,404,48,Dishnet Wireless,Unknown -IN,404,49,Airtel,Andhra Pradesh -IN,404,51,CellOne,Himachal Pradesh -IN,404,52,Reliance,Orissa -IN,404,53,CellOne,Punjab -IN,404,54,CellOne,Uttar Pradesh (West) -IN,404,55,CellOne,Uttar Pradesh (East) -IN,404,71,CellOne,Karnataka (Bangalore) -IN,404,56,IDEA,Uttar Pradesh (West) -IN,404,57,CellOne,Gujarat -IN,404,58,CellOne,Madhya Pradesh & Chhattisgarh -IN,404,59,CellOne,Rajasthan -IN,404,60,Vodafone IN,Rajasthan -IN,404,62,CellOne,Jammu & Kashmir -IN,404,64,CellOne,Chennai -IN,404,66,CellOne,Maharashtra & Goa -IN,404,67,Reliance GSM,Madhya Pradesh & Chhattisgarh -IN,404,68,DOLPHIN,Delhi & NCR -IN,404,69,DOLPHIN,Mumbai -IN,404,72,CellOne,Kerala -IN,404,74,CellOne,West Bengal -IN,404,76,CellOne,Orissa -IN,404,78,Idea Cellular Ltd,Madhya Pradesh & Chattishgarh -IN,404,80,BSNL MOBILE,Bharat Sanchar Nigam Limited -IN,404,81,CellOne,Kolkata -IN,404,82,Idea,Himachal Pradesh -IN,404,83,Reliance Smart GSM,Kolkata -IN,404,84,Vodafone IN,Chennai -IN,404,85,Reliance,West Bengal -IN,404,86,Vodafone IN,Karnataka -IN,404,87,Idea,Rajisthan -IN,404,88,Vodafone IN,Vodafone Punjab -IN,404,89,Idea,Uttar Pradesh (East) -IN,404,90,AirTel,Maharashtra & Goa -IN,404,91,AIRCEL,Kolkata -IN,404,92,AirTel,Mumbai -IN,404,93,AirTel,Madhya Pradesh -IN,404,96,AirTel,Haryana -IN,405,01,Reliance,Andhra Pradesh -IN,405,03,Reliance,Bihar -IN,405,04,Reliance,Chennai -IN,405,05,Reliance,Delhi & NCR -IN,405,09,Reliance,Jammu & Kashmir -IN,405,10,Reliance,Karnataka -IN,405,13,Reliance,Maharashtra & Goa -IN,405,025,TATA Teleservice,Andhra Pradesh -IN,405,026,TATA Teleservice,Assam -IN,405,027,TATA Teleservice,Bihar/Jharkhand -IN,405,029,TATA Teleservice,Delhi -IN,405,030,TATA Teleservice,Gujarat -IN,405,031,TATA Teleservice,Haryana -IN,405,032,TATA Teleservice,Himachal Pradesh -IN,405,033,TATA Teleservice,Jammu & Kashmir -IN,405,034,TATA Teleservice,Karnataka -IN,405,035,TATA Teleservice,Kerala -IN,405,036,TATA Teleservice,Kolkata -IN,405,037,TATA Teleservice,Maharashtra & Goa -IN,405,038,TATA Teleservice,Madhya Pradesh -IN,405,039,TATA Teleservice,Mumbai -IN,405,041,TATA Teleservice,Orissa -IN,405,042,TATA Teleservice,Punjab -IN,405,043,TATA Teleservice,Rajasthan -IN,405,044,TATA Teleservice,Tamil Nadu including Chennai -IN,405,045,TATA Teleservice,[Uttar Pradesh (E)] -IN,405,046,TATA Teleservice,[Uttar Pradesh (W) & Uttarkhand ] -IN,405,047,TATA Teleservice,[West Bengal] -IN,405,51,AirTel,West Bengal -IN,405,52,AirTel,Bihar & Jharkhand -IN,405,54,AirTel,Uttar Pradesh (East) -IN,405,55,Airtel,Jammu & Kashmir -IN,405,56,AirTel,Assam -IN,405,66,Vodafone IN,Uttar Pradesh (West) -IN,405,70,IDEA,Bihar & Jharkhand -IN,405,750,Vodafone IN,Jammu & Kashmir -IN,405,751,Vodafone IN,Assam -IN,405,752,Vodafone IN,Bihar & Jharkhand -IN,405,753,Vodafone IN,Orissa -IN,405,754,Vodafone IN,Himachal Pradesh -IN,405,755,Vodafone IN,North East -IN,405,756,Vodafone IN,Madhya Pradesh & Chhattisgarh -IN,405,799,IDEA,Mumbai -IN,405,800,AIRCEL,Delhi & NCR -IN,405,801,AIRCEL,Andhra Pradesh -IN,405,802,AIRCEL,Gujarat -IN,405,803,AIRCEL,Karnataka -IN,405,804,AIRCEL,Maharashtra & Goa -IN,405,805,AIRCEL,Mumbai -IN,405,806,AIRCEL,Rajasthan -IN,405,807,AIRCEL,Haryana -IN,405,808,AIRCEL,Madhya Pradesh -IN,405,809,AIRCEL,Kerala -IN,405,810,AIRCEL,Uttar Pradesh (East) -IN,405,811,AIRCEL,Uttar Pradesh (West) -IN,405,812,AIRCEL,Punjab -IN,405,819,Uninor,Andhra Pradesh -IN,405,818,Uninor,Uttar Pradesh (West) -IN,405,820,Uninor,Karnataka -IN,405,821,Uninor,Kerala -IN,405,822,Uninor,Kolkata -IN,405,824,Videocon Datacom,Assam -IN,405,827,Videocon Datacom,Gujarat -IN,405,834,Videocon Datacom,Madhya Pradesh -IN,405,844,Uninor,Delhi & NCR -IN,405,845,IDEA,Assam -IN,405,86,IDEA,Jammu & Kashmir -IN,405,848,IDEA,Kolkata -IN,405,850,IDEA,Orissa -IN,405,855,Loop Mobile,Assam -IN,405,864,Loop Mobile,Kolkata -IN,405,865,Loop Mobile,Madhya Pradesh -IN,405,875,Uninor,Assam -IN,405,880,Uninor,West Bengal -IN,405,881,S Tel,Assam -IN,405,912,Etisalat DB(cheers),Andhra Pradesh -IN,405,913,Etisalat DB(cheers),Delhi & NCR -IN,405,914,Etisalat DB(cheers),Gujarat -IN,405,917,Etisalat DB(cheers),Kerala -IN,404,927,Uninor,Gujarat -IN,405,929,Uninor,Maharashtra -ID,510,00,PSN,PT Pasifik Satelit Nusantara (ACeS) -ID,510,01,INDOSAT,PT Indonesian Satellite Corporation Tbk (INDOSAT) -ID,510,03,StarOne,PT Indosat Tbk -ID,510,07,TelkomFlexi,PT Telkom -ID,510,08,AXIS,PT Natrindo Telepon Seluler -ID,510,09,SMART,PT Smart Telecom -ID,510,10,Telkomsel,PT Telekomunikasi Selular -ID,510,11,XL,PT XL Axiata Tbk -ID,510,20,TELKOMMobile,PT Telkom Indonesia Tbk -ID,510,21,IM3,PT Indonesian Satellite Corporation Tbk (INDOSAT) -ID,510,27,Ceria,PT Sampoerna Telekomunikasi Indonesia -ID,510,28,Fren/Hepi,PT Mobile-8 Telecom -ID,510,89,3,PT Hutchison CP Telecommunications -ID,510,99,Esia,PT Bakrie Telecom -IR,432,11,IR-MCI,Mobile Communications Company of Iran -IR,432,14,TKC,KFZO -IR,432,19,MTCE,Mobile Telecommunications Company of Esfahan -IR,432,32,Taliya,Rafsanjan Industrial Complex -IR,432,35,Irancell,Irancell Telecommunications Services Company -IR,432,70,TCI,Telephone Communications Company of Iran -IR,432,93,Iraphone,Iraphone -IQ,418,05,Asia Cell,Asia Cell Telecommunications Company -IQ,418,08,SanaTel, -IQ,418,20,Zain,Zain Iraq -IQ,418,30,Zain,Zain Iraq -IQ,418,40,Korek,Korek Telecom Ltd -IQ,418,45,Mobitel,Mobitel Co. Ltd. -IQ,418,92,Omnnea,Omnnea Wireless -IE,272,01,Vodafone,Vodafone Ireland -IE,272,02,O2,O2 Ireland -IE,272,03,Meteor,Meteor Mobile Communications -IE,272,04,,Access Telecom -IE,272,05,3,Hutchison 3G Ireland limited -IE,272,07,Eircom,Eircom Mobile -IE,272,09,,Clever Communications -IE,272,11,,Liffey Telecom -IM,234,58,Pronto GSM,Manx Telecom -IM,234,09,Sure Mobile,Cable & Wireless Isle of Man Ltd. -IL,425,01,Orange,Partner Communications Company Ltd -IL,425,02,Cellcom, -IL,425,03,Pelephone, -IL,425,77,Mirs, -IT,222,01,TIM,Telecom Italia SpA -IT,222,02,Elsacom, -IT,222,07,Noverca, -IT,222,10,Vodafone,Vodafone Omnitel N.V. -IT,222,30,RFI,Rete Ferroviaria Italiana -IT,222,77,IPSE 2000, -IT,222,88,Wind,Wind Telecomunicazioni SpA -IT,222,98,Blu, -IT,222,99,3 Italia,Hutchison 3G -CI,612,01,,Cora de Comstar -CI,612,02,Moov, -CI,612,03,Orange, -CI,612,04,KoZ,Comium Ivory Coast Inc -CI,612,05,MTN, -CI,612,06,ORICEL,ORICEL -JM,338,020,LIME,Cable & Wireless -JM,338,050,Digicel,Digicel (Jamaica) Limited -JM,338,070,Claro,Oceanic Digital Jamaica Limited -JM,338,180,LIME,Cable & Wireless -JP,440,00,eMobile,EMOBILE Limited -JP,440,01,NTT docomo,NTT docomo -JP,440,02,NTT docomo,NTT DoCoMo Kansai -JP,440,03,NTT docomo,NTT DoCoMo Hokuriku -JP,440,04,SoftBank,SoftBank Mobile Corp -JP,440,06,SoftBank,SoftBank Mobile Corp -JP,440,07,KDDI,KDDI Corporation -JP,440,08,KDDI,KDDI Corporation -JP,440,09,NTT docomo,NTT DoCoMo Kansai -JP,440,10,NTT docomo,NTT DoCoMo Kansai -JP,440,11,NTT docomo,NTT DoCoMo Tokai -JP,440,12,NTT docomo,NTT DoCoMo -JP,440,13,NTT docomo,NTT DoCoMo -JP,440,14,NTT docomo,NTT DoCoMo Tohoku -JP,440,15,NTT docomo,NTT DoCoMo -JP,440,16,NTT docomo,NTT DoCoMo -JP,440,17,NTT docomo,NTT DoCoMo -JP,440,18,NTT docomo,NTT DoCoMo Tokai -JP,440,19,NTT docomo,NTT DoCoMo Hokkaido -JP,440,20,SoftBank,SoftBank Mobile Corp -JP,440,21,NTT docomo,NTT DoCoMo -JP,440,22,NTT docomo,NTT DoCoMo Kansai -JP,440,23,DoCoMo,NTT DoCoMo Tokai -JP,440,24,DoCoMo,NTT DoCoMo Chugoku -JP,440,25,DoCoMo,NTT DoCoMo Hokkaido -JP,440,26,DoCoMo,NTT DoCoMo Kyushu -JP,440,27,DoCoMo,NTT DoCoMoTohoku -JP,440,28,DoCoMo,NTT DoCoMo Shikoku -JP,440,29,DoCoMo,NTT DoCoMo -JP,440,30,DoCoMo,NTT DoCoMo -JP,440,31,DoCoMo,NTT DoCoMo Kansai -JP,440,32,DoCoMo,NTT DoCoMo -JP,440,33,DoCoMo,NTT DoCoMo Tokai -JP,440,34,DoCoMo,NTT DoCoMo Kyushu -JP,440,35,DoCoMo,NTT DoCoMo Kansai -JP,440,36,DoCoMo,NTT DoCoMo -JP,440,37,DoCoMo,NTT DoCoMo -JP,440,38,DoCoMo,NTT DoCoMo -JP,440,39,DoCoMo,NTT DoCoMo -JP,440,40,SoftBank,SoftBank Mobile Corp -JP,440,41,SoftBank,SoftBank Mobile Corp -JP,440,42,SoftBank,SoftBank Mobile Corp -JP,440,43,SoftBank,SoftBank Mobile Corp -JP,440,44,SoftBank,SoftBank Mobile Corp -JP,440,45,SoftBank,SoftBank Mobile Corp -JP,440,46,SoftBank,SoftBank Mobile Corp -JP,440,47,SoftBank,SoftBank Mobile Corp -JP,440,48,SoftBank,SoftBank Mobile Corp -JP,440,49,DoCoMo,NTT DoCoMo -JP,440,50,KDDI,KDDI Corporation -JP,440,51,KDDI,KDDI Corporation -JP,440,52,KDDI,KDDI Corporation -JP,440,53,KDDI,KDDI Corporation -JP,440,54,KDDI,KDDI Corporation -JP,440,55,KDDI,KDDI Corporation -JP,440,56,KDDI,KDDI Corporation -JP,440,58,DoCoMo,NTT DoCoMo Kansai -JP,440,60,DoCoMo,NTT DoCoMo Kansai -JP,440,61,DoCoMo,NTT DoCoMo Chugoku -JP,440,62,DoCoMo,NTT DoCoMo Kyushu -JP,440,63,DoCoMo,NTT DoCoMo -JP,440,64,DoCoMo,NTT DoCoMo -JP,440,65,DoCoMo,NTT DoCoMo Shikoku -JP,440,66,DoCoMo,NTT DoCoMo -JP,440,67,DoCoMo,NTT DoCoMo Tohoku -JP,440,68,DoCoMo,NTT DoCoMo Kyushu -JP,440,69,DoCoMo,NTT DoCoMo -JP,440,70,au,KDDI Corporation -JP,440,71,KDDI,KDDI Corporation -JP,440,72,KDDI,KDDI Corporation -JP,440,73,KDDI,KDDI Corporation -JP,440,74,KDDI,KDDI Corporation -JP,440,75,KDDI,KDDI Corporation -JP,440,76,KDDI,KDDI Corporation -JP,440,77,KDDI,KDDI Corporation -JP,440,78,,Okinawa Cellular Telephone -JP,440,79,KDDI,KDDI Corporation -JP,440,80,TU-KA,TU-KA Cellular Tokyo -JP,440,81,TU-KA,TU-KA Cellular Tokyo -JP,440,82,TU-KA,TU-KA Phone Kansai -JP,440,83,TU-KA,TU-KA Cellular Tokai -JP,440,84,TU-KA,TU-KA Phone Kansai -JP,440,85,TU-KA,TU-KA Cellular Tokai -JP,440,86,TU-KA,TU-KA Cellular Tokyo -JP,440,87,DoCoMo,NTT DoCoMo Chugoku -JP,440,88,KDDI,KDDI Corporation -JP,440,89,KDDI,KDDI Corporation -JP,440,90,SoftBank,SoftBank Mobile Corp -JP,440,92,SoftBank,SoftBank Mobile Corp -JP,440,93,SoftBank,SoftBank Mobile Corp -JP,440,94,SoftBank,SoftBank Mobile Corp -JP,440,95,SoftBank,SoftBank Mobile Corp -JP,440,96,SoftBank,SoftBank Mobile Corp -JP,440,97,SoftBank,SoftBank Mobile Corp -JP,440,98,SoftBank,SoftBank Mobile Corp -JP,440,99,DoCoMo,NTT DoCoMo -JE,234,50,JT-Wave,Jersey Telecom (JT-Wave) -JE,234,55,Sure Mobile,Cable & Wireless Jersey Limited -JE,234,03,Airtel Vodafone,JERSEY AIRTEL LIMITED -JO,416,01,zain JO,Jordan Mobile Telephone Services -JO,416,02,XPress Telecom, -JO,416,03,Umniah,Umniah Mobile Company -JO,416,77,Orange,Petra Jordanian Mobile Telecommunications Company (MobileCom) -KZ,401,01,Beeline,KaR-Tel LLP -KZ,401,02,Kcell,GSM Kazakhstan Ltd -KZ,401,07,Dalacom, -KZ,401,08,Kazakhtelecom, -KZ,401,77,Mobile Telecom Service,Mobile Telecom Service LLP -KE,639,02,Safaricom,Safaricom Limited -KE,639,03,Airtel,B Airtel -KE,639,07,Orange Kenya,Telkom Kenya -KE,639,05,yu,Econet Wireless Kenya -KI,545,09,Kiribati Frigate,Telecom Services Kiribati Ltd -KP,467,192,Koryolink,Cheo Technology Jv Company -KP,467,193,SunNet,Korea Posts and Telecommunications Corporation -KR,450,02,KT,KT -KR,450,03,Power 017,"Shinsegi Telecom, Inc." -KR,450,04,KT,KT -KR,450,05,SKT,SK Telecom -KR,450,06,LGU+,LG Telecom -KR,450,08,olleh,KT -RKS,212,01,Vala,PTK - Directory of Post of Kosovo -RKS,293,41,IPKO,IPKO -RKS,212,01,Z Mobile,Dardaphone -KW,419,02,zain KW,Zain Kuwait -KW,419,03,Wataniya,National Mobile Telecommunications -KW,419,04,Viva,Kuwait Telecommunication Company -KG,437,01,Beeline,Sky Mobile LLC -KG,437,03,Fonex,Aktel Ltd -KG,437,05,MegaCom,Alfa Telecom CJSC -KG,437,09,O!,NurTelecom LLC -LA,457,01,LaoTel,Lao Shinawatra Telecom -LA,457,02,ETL,Enterprise of Telecommunications Lao -LA,457,03,Unitel,"Star Telecom Co., Ltd" -LA,457,08,Tigo,Millicom Lao Co Ltd -LV,247,01,LMT,Latvian Mobile Telephone -LV,247,02,Tele2,Tele2 -LV,247,03,TRIATEL,Telekom Baltija -LV,247,05,Bite,Bite Latvija -LV,247,06,,Rigatta -LV,247,07,MTS,Master Telecom -LV,247,08,IZZI,IZZI -LV,247,09,Camel Mobile,Camel Mobile -LB,415,01,Alfa,MIC 1 -LB,415,03,mtc touch,MIC 2 -LB,415,05,Ogero Mobile,Ogero Telecom -LS,651,01,Vodacom,Vodacom Lesotho (Pty) Ltd -LS,651,02,,Econet Ezin-cel -LR,618,01,Lonestar Cell,Lonestar Communications Corporation -LR,618,02,Libercell,Atlantic Wireless (Liberia) Inc. -LR,618,04,Comium,Comium Liberia -LR,618,07,Cellcom,"Cellcom Telecommunications, Inc" -LR,618,20,LIBTELCO,Liberia Telecommunications Corporation -LY,606,00,Libyana,Libyana -LY,606,01,Madar,Al-Madar Al-Jadeed -LY,606,02,Al-Jeel Phone,Al-Jeel Al-Jadeed -LY,606,03,Libya Phone,Libya Telecom and Technology (LTT) -LY,606,06,Hatef Libya,Hatef Libya -LI,295,01,Swisscom,Swisscom Schweiz AG -LI,295,02,Orange,Orange Liechtenstein AG -LI,295,05,FL1,Mobilkom Liechtenstein AG -LI,295,77,Alpmobil,Alpcom AG -LI,295,04,Cubic Telecom,Cubic Telecom AG -LT,246,01,Omnitel, -LT,246,02,BITE,UAB Bité Lietuva -LT,246,03,Tele 2, -LT,246,05,LitRail,Lithuanian Railways -LT,246,06,Mediafon,UAB Mediafon -LU,270,01,LuxGSM,P&T Luxembourg -LU,270,77,Tango,Tango SA -LU,270,99,Orange,Orange S.A. -MO,455,00,SmarTone,SmarTone Macao -MO,455,01,CTM,C.T.M. Telemovel+ -MO,455,02,China Telecom,China Telecom -MO,455,03,3,Hutchison Telecom -MO,455,04,CTM,C.T.M. Telemovel+ -MO,455,05,3,Hutchison Telecom -MK,294,01,T-Mobile MK,T-Mobile Macedonia -MK,294,02,ONE,One -MK,294,03,Vip MK,VIP Operator -MG,646,01,Airtel,Bharti Airtel -MG,646,02,Orange,Orange Madagascar S.A. -MG,646,03,Sacel,Sacel Madagascar S.A. -MG,646,04,Telma,Telma Mobile S.A. -MW,650,01,TNM,Telecom Network Malawi -MW,650,10,Airtel,Bharti Airtel Limited -MY,502,01,ATUR 450,Telekom Malaysia Bhd -MY,502,10,,DiGi Telecommunications -MY,502,11,TM Homeline,Telekom Malaysia Bhd [78] -MY,502,12,Maxis,Maxis Mobile Services SDN Berhad -MY,502,13,Celcom,Celcom Axiata Berhad -MY,502,14,,Telekom Malaysia Berhad for PSTN SMS -MY,502,16,DiGi,DiGi Telecommunications -MY,502,17,Hotlink,Maxis Prepaid -MY,502,18,U Mobile,U Mobile Sdn Bhd -MY,502,18,TM Homeline,Telekom Malaysia Bhd -MY,502,19,Celcom,Celcom Axiata Berhad -MY,502,20,,Electcoms Wireless Sdn Bhd -MY,502,150,Tune Talk,Tune Talk Sdn Bhd -MY,502,151,,Baraka Telecom Sdn Bhd (MVNE) -MY,502,152,Yes,YTL Communications Sdn Bhd -MV,472,01,Dhiraagu,Dhivehi Raajjeyge Gulhun -MV,472,02,Wataniya,Wataniya Telecom Maldives -ML,610,01,Malitel,Malitel SA -ML,610,02,Orange,Orange Mali SA -MT,278,01,Vodafone,Vodafone Malta -MT,278,21,GO,Mobisle Communications Limited -MT,278,77,Melita,Melita Plc -MQ,340,01,Orange,Orange Caraïbe Mobiles -MQ,340,02,Outremer,Outremer Telecom -MQ,340,20,Digicel,DIGICEL Antilles Française Guyane -MR,609,01,Mattel,Mattel -MR,609,02,Chinguitel,Chinguitel -MR,609,10,Mauritel,Mauritel Mobiles -MU,617,01,Orange,Cellplus Mobile Communications Ltd. -MU,617,02,MTML,Mahanagar Telephone (Mauritius) Ltd. -MU,617,10,Emtel,Emtel Ltd -MX,334,010,Nextel,Nextel México -MX,334,020,Telcel,América Móvil / Mextel -MX,334,030,movistar,Pegaso Comunicaciones y Sistemas -MX,334,040,Iusacell / Unefon,Iusacell / Unefon -MX,334,050,Iusacell,Iusacell -FM,550,01,,FSM EMMANUEL -MD,259,01,Orange,Orange Moldova -MD,259,02,Moldcell, -MD,259,03,IDC,Interdnestrcom -MD,259,03,Unité,Moldtelecom -MD,259,04,Eventis,Eventis Telecom -MD,259,05,Unité,Moldtelecom -MD,259,99,Unité,Moldtelecom -MC,212,01,Office des Telephones,Monaco Telecom -MN,428,99,MobiCom,Mobicom Corporation -MN,428,88,Unitel,Unitel LLC -MN,428,91,Skytel,Skytel LLC -MN,428,98,G.Mobile,G-Mobile LLC -ME,297,01,Telenor,Telenor Montenegro -ME,297,02,T-Mobile,T-Mobile Montenegro LLC -ME,297,03,m:tel CG,MTEL CG -ME,297,04,T-Mobile,T-Mobile Montenegro -MA,604,00,Méditel,Medi Telecom -MA,604,01,IAM,Ittissalat Al Maghrib (Maroc Telecom) -MA,604,05,INWI,WANA - Groupe ONA -MZ,643,01,mCel,Mocambique Celular S.A. -MZ,643,04,Vodacom,"Vodacom Mozambique, S.A." -MM,414,01,MPT,Myanmar Post and Telecommunication -NA,649,01,MTC,MTC Namibia -NA,649,02,switch,Telecom Namibia -NA,649,03,Leo,Orascom Telecom Holding -NR,536,02,Digicel,Digicel (Nauru) Corporation -NP,429,01,Namaste / NT Mobile,Nepal Telecom -NP,429,02,Ncell,Ncell Pvt. Ltd. Spice Nepal -NP,429,04,SmartCell,Smart Telecom Pvt. Ltd. -NP,429,03,Sky/C-Phone,Nepal Telecom -NL,204,01,,VastMobiel B.V. -NL,204,02,Tele2,Tele2 Nederland B.V. -NL,204,03,,Voiceworks B.V. -NL,204,04,Vodafone,hollandsnieuwe -NL,204,05,,Elephant Talk Communications Premium Rate Services -NL,204,06,,Mundio Mobile (Netherlands) Ltd -NL,204,07,,Teleena (MVNE) -NL,204,08,KPN,KPN Mobile The Netherlands B.V. -NL,204,09,Lycamobile,Lycamobile Netherlands Limited -NL,204,10,KPN,KPN B.V. -NL,204,12,Telfort,KPN Mobile The Netherlands B.V. -NL,204,13,,Unica Installatietechniek B.V. -NL,204,14,6Gmobile,6GMOBILE B.V. -NL,204,15,,Ziggo B.V. -NL,204,16,T-Mobile,T-Mobile Netherlands B.V -NL,204,17,,Intercity Mobile Communications B.V. -NL,204,18,,UPC Nederland B.V. -NL,204,19,,Mixe Communication Solutions B.V. -NL,204,20,T-Mobile,T-Mobile Netherlands B.V -NL,204,21,,ProRail B.V. -NL,204,22,,Ministerie van Defensie -NL,204,23,,ASPIDER Solutions Nederland B.V. -NL,204,24,,Private Mobility Nederland B.V. -NL,204,25,,CapX B.V. -NL,204,26,,SpeakUp B.V. -NL,204,27,,Breezz Nederland B.V. -NL,204,67,,RadioAccess B.V. -NL,204,68,,Unify Group Holding B.V. -NL,204,69,,KPN Mobile The Netherlands B.V. -AN,362,51,Telcell,Telcell N.V. -AN,362,69,Digicel,Curaçao Telecom N.V. -AN,362,91,UTS,Setel N.V. -AN,362,95,MIO,E.O.C.G. Wireless -AN,362,94,Bayòs,Bòbò Frus N.V. -NC,546,01,Mobilis,OPT New Caledonia -NZ,530,00,Telecom,Telecom New Zealand -NZ,530,01,Vodafone,Vodafone New Zealand -NZ,530,02,Telecom,Telecom New Zealand -NZ,530,03,Woosh,Woosh Wireless New Zealand -NZ,530,04,TelstraClear,TelstraClear New Zealand -NZ,530,05,XT Mobile Network,Telecom New Zealand -NZ,530,24,2degrees,2degrees -NI,710,21,Claro,"Empresa Nicaragüense de Telecomunicaciones, S.A." -NI,710,30,movistar,Telefónica Móviles de Nicaragua S.A. -NI,710,73,SERCOM,Servicios de Comunicaciones S.A. -NE,614,01,SahelCom, -NE,614,02,Airtel,Bharti Airtel Limited -NE,614,03,Telecel,Telecel Niger SA -NE,614,04,Orange,Orange Niger -NG,621,20,Airtel,Bharti Airtel Limited -NG,621,30,MTN,MTN Nigeria Communications Limited -NG,621,40,M-Tel,Nigerian Mobile Telecommunications Limited -NG,621,50,Glo,Globacom Ltd -NG,621,60,Etisalat,Emerging Markets Telecommunication Services Ltd (Etisalat) -NG,621,25,Visafone,Visafone Communications Ltd. -NU,555,01,Telecom Niue,Telecom Niue -NF,505,10,Norfolk Telecom,Norfolk Telecom -NO,242,01,Telenor, -NO,242,02,NetCom,NetCom GSM -NO,242,03,Teletopia,Teletopia -NO,242,04,Tele2,Mobile Norway AS -NO,242,05,Network Norway,Mobile Norway AS -NO,242,06,Ice,Nordisk Mobiltelefon -NO,242,07,Ventelo,Ventelo AS -NO,242,08,TDC,TDC Mobil AS -NO,242,09,Com4,Com4 AS [106] -NO,242,11,SystemNet,SystemNet AS [107] -NO,242,20,,Jernbaneverket AS -NO,242,23,Lyca,Lyca Mobile Ltd -OM,422,02,Oman Mobile,Oman Telecommunications Company -OM,422,03,Nawras,Omani Qatari Telecommunications Company SAOC -PK,410,01,Mobilink,Mobilink-PMCL -PK,410,03,Ufone,Pakistan Telecommunication Mobile Ltd -PK,410,04,Zong,China Mobile -PK,410,06,Telenor,Telenor Pakistan -PK,410,07,Warid,WaridTel -PW,552,01,PNCC,Palau National Communications Corp. -PW,552,80,Palau Mobile,Palau Mobile Corporation -PS,425,05,Jawwal,"Palestine Cellular Communications, Ltd." -PS,425,06,Wataniya,Wataniya Palestine Mobile Telecommunications Company -PA,714,01,Cable & Wireless,Cable & Wireless Panama S.A. -PA,714,02,movistar,"Telefonica Moviles Panama S.A, Bell South Corp. (BSC)" -PA,714,04,Digicel,Digicel Group -PA,714,03,Claro,América Móvil -PG,537,01,B-Mobile,Pacific Mobile Communications -PG,537,03,Digicel,Digicel PNG -PY,744,01,VOX,Hola Paraguay S.A -PY,744,02,Claro,AMX Paraguay S.A. -PY,744,04,Tigo,Telefonica Celular Del Paraguay S.A. (Telecel) -PY,744,05,Personal,Núcleo S.A -PY,744,06,Copaco,Copaco S.A. -PE,716,06,Movistar,Telefónica Móviles Perú -PE,716,07,NEXTEL,NII Holdings -PE,716,10,Claro,América Móvil Perú -PH,515,01,Islacom,Globe Telecom via Innove Communications -PH,515,02,Globe,Globe Telecom -PH,515,03,Smart,PLDT via Smart Communications -PH,515,05,Sun,Digital Telecommunications Philippines -PH,515,11,,PLDT via ACeS Philippines -PH,515,18,Cure,PLDT via Smart's Connectivity Unlimited Resources Enterprise -PH,515,88,,Nextel -PL,260,01,Plus,Polkomtel S.A. -PL,260,02,T-Mobile,Polska Telefonia Cyfrowa Sp. z o.o. -PL,260,03,Orange,Polska Telefonia Komórkowa Centertel Sp. z o.o. -PL,260,04,,not in use -PL,260,05,,Polska Telefonia Komórkowa Centertel Sp. z o.o. -PL,260,06,Play,P4 Sp. z o.o. -PL,260,07,Netia,Netia S.A. -PL,260,08,,E-Telko Sp. z o.o. -PL,260,09,,Telekomunikacja Kolejowa Sp. z o.o. -PL,260,10,Sferia,Sferia S.A. -PL,260,11,Nordisk Polska,Nordisk Polska Sp. z o.o. -PL,260,12,Cyfrowy Polsat,Cyfrowy Polsat S.A. -PL,260,15,CenterNet,CenterNet S.A. -PL,260,16,Mobyland,Mobyland Sp. z o.o. -PL,260,17,Aero2,Aero 2 Sp. z o.o. -PT,268,01,Vodafone,Vodafone Portugal -PT,268,03,Optimus,"Sonaecom – Serviços de Comunicações, S.A." -PT,268,06,TMN,Telecomunicações Móveis Nacionais -PT,268,21,Zapp,Zapp Portugal -PR,330,110,Claro,Puerto Rico Telephone Company -PR,330,00,Open Mobile,PR Wireless -QA,427,01,Qtel,Qtel -QA,427,02,Vodafone,Vodafone Qatar -QA,427,05,Ministry of Interior,Ministry of Interior -RE,647,00,Orange,Orange La Réunion -RE,647,02,Outremer,Outremer Telecom -RE,647,10,SFR Reunion,Societe Reunionnaise de Radiotelephone -RO,226,01,Vodafone,Vodafone România -RO,226,02,Romtelecom,Romtelecom -RO,226,03,Cosmote,Cosmote România -RO,226,04,Cosmote,Cosmote România -RO,226,05,Digi.Mobil,RCS&RDS -RO,226,06,Cosmote,Cosmote România -RO,226,10,Orange,Orange România -RO,226,11,Enigma-System,Enigma-System -RU,250,01,MTS,Mobile TeleSystems -RU,250,02,MegaFon,MegaFon OJSC - previously known as North-West GSM -RU,250,03,NCC,Nizhegorodskaya Cellular Communications -RU,250,04,Sibchallenge,Sibchallenge -RU,250,05,ETK,Yeniseytelecom -RU,250,06,Skylink [10],CJSC Saratov System of Cellular Communications -RU,250,07,SMARTS,Zao SMARTS -RU,250,09,Skylink,Khabarovsky Cellular Phone -RU,250,10,DTC,Dontelekom -RU,250,11,,Orensot -RU,250,12,Baykalwestcom,Baykal Westcom / New Telephone Company / Far Eastern Cellular -RU,250,12,Akos, -RU,250,13,KUGSM,Kuban GSM -RU,250,15,SMARTS,"SMARTS Ufa, SMARTS Uljanovsk" -RU,250,16,NTC,New Telephone Company -RU,250,17,Utel,JSC Uralsvyazinform -RU,250,19,INDIGO,INDIGO -RU,250,20,Tele2,Tele2 -RU,250,23,Mobicom - Novosibirsk,Mobicom - Novosibirsk -RU,250,28,Beeline,Beeline -RU,250,35,MOTIV,MOTIV -RU,250,38,Tambov GSM,Central Telecommunication Company -RU,250,39,Utel,Uralsvyazinform -RU,250,44,,Stavtelesot / North Caucasian GSM -RU,250,92,,Primtelefon -RU,250,93,,Telecom XXI -RU,250,99,Beeline,OJSC Vimpel-Communications -RW,635,10,MTN,MTN Rwandacell SARL -RW,635,12,Rwandatel,Rwandatel S.A. -RW,635,13,Tigo,TIGO RWANDA S.A -SKN,356,050,Digicel, -SKN,356,110,,LIME -SKN,356,070,Chippie,UTS -LC,358,050,Digicel[citation needed], -LC,358,110,,Cable & Wireless -PM,308,01,Ameris,St. Pierre-et-Miquelon Télécom -VC,360,070,Digicel, -VC,360,100,Cingular Wireless, -VC,360,110,Cable & Wireless,Cable & Wireless -WS,549,01,Digicel,Digicel Pacific Ltd. -WS,549,27,SamoaTel,SamoaTel Ltd -SM,292,01,PRIMA,San Marino Telecom -ST,626,01,CSTmovel,Companhia Santomese de Telecomunicaçôe -SA,420,01,Al Jawal,Saudi Telecom Company -SA,420,03,Mobily,Etihad Etisalat Company -SA,420,04,Zain SA,Zain Saudi Arabia -SN,608,01,Orange,Sonatel -SN,608,02,Tigo,Millicom International Cellular S.A. -SN,608,03,Expresso,Sudatel -RS,220,01,Telenor,Telenor Serbia -RS,220,02,Telenor,Telenor Montenegro -RS,220,03,mt:s,Telekom Srbija -RS,220,05,VIP,VIP Mobile -SC,633,01,Cable & Wireless,Cable & Wireless Seychelles -SC,633,02,Mediatech International,Mediatech International -SC,633,10,Airtel,Telecom Seychelles Ltd -SL,619,01,Airtel,Bharti Airtel Limited -SL,619,02,Tigo,Millicom (SL) Limited -SL,619,03,Africell,Lintel Sierra Leone Limited -SL,619,04,Comium,Comium Sierra leone INC -SL,619,05,Africell,Lintel Sierra Leone Limited -SL,619,25,Mobitel,Mobitel -SG,525,01,SingTel,Singapore Telecom -SG,525,02,SingTel-G18,Singapore Telecom -SG,525,03,M1,MobileOne Asia -SG,525,05,StarHub,StarHub Mobile -SG,525,12,,Digital Trunked Radio Network -SK,231,01,Orange,Orange Slovensko -SK,231,02,T-Mobile,T-Mobile Slovensko -SK,231,03,,Unient Communications -SK,231,04,T-Mobile,T-Mobile Slovensko -SK,231,06,O2,Telefónica O2 Slovakia -SK,231,99,ŽSR,Železnice Slovenskej Republiky -SI,293,40,Si.mobil,SI.MOBIL d.d. -SI,293,41,Mobitel,Mobitel D.D. -SI,293,64,T-2,T-2 d.o.o. -SI,293,70,TuÅ¡mobil,TuÅ¡mobil d.o.o. -SB,540,01,BREEZE,Solomon Telekom Co Ltd -SO,637,60,Nationlink Telecom,Nationlink Telecom -SO,637,01,Telesom,Telesom -SO,637,04,Somafone,Somafone FZLLC -SO,637,10,Nationlink,NationLink Telecom -SO,637,25,Hormuud,Hormuud Telecom Somalia Inc -SO,637,30,Golis,Golis Telecom Somalia -SO,637,82,Telcom,Telcom Somalia -ZA,655,01,Vodacom,Vodacom -ZA,655,02,Telkom Mobile / 8.ta,Telkom -ZA,655,06,Sentech, -ZA,655,07,Cell C,Cell C -ZA,655,10,MTN,MTN Group -ZA,655,11,,South African Police Service Gauteng -ZA,655,13,Neotel, -ZA,655,21,,Cape Town Metropolitan Council -ZA,655,30,,Bokamoso Consortium -ZA,655,31,,Karabo Telecoms (Pty) Ltd. -ZA,655,32,,Ilizwi Telecommunications -ZA,655,33,,Thinta Thinta Telecommunications -__,250,30,Megafon,Ostelecom -ES,214,01,Vodafone,Vodafone Spain -ES,214,03,Orange,France Telecom España SA -ES,214,04,Yoigo,Xfera Moviles SA -ES,214,05,TME,Telefónica Móviles España -ES,214,06,Vodafone,Vodafone Spain -ES,214,07,movistar,Telefónica Móviles España -ES,214,08,Euskaltel, -ES,214,09,Orange,France Telecom España SA -ES,214,15,BT,BT Group España Compañia de Servicios Globales de Telecomunicaciones S.A.U. -ES,214,16,TeleCable,Telecable de Asturias S.A.U. -ES,214,17,Móbil R,R Cable y Telecomunicaciones Galicia S.A. -ES,214,18,ONO,Cableuropa S.A.U. -ES,214,19,Simyo,E-PLUS Moviles Virtuales España S.L.U. -ES,214,20,Fonyou,Fonyou Telecom S.L. -ES,214,21,Jazztel,Jazz Telecom S.A.U. -ES,214,22,DigiMobil,Best Spain Telecom -ES,214,23,Barablu,Barablu Móvil España -ES,214,24,Eroski,Eroski Móvil España -ES,214,25,LycaMobile,LycaMobile S.L. -LK,413,01,Mobitel,Sri Lanka Telecom Mobitel -LK,413,02,Dialog,Dialog Axiata -LK,413,03,Etisalat,Emirates Telecommunication Corporation -LK,413,05,Airtel,Bharti Airtel -LK,413,08,Hutch,Hutchison Telecommunications Lanka -SD,634,01,Zain SD,Zain Group - Sudan -SD,634,02,MTN,MTN Sudan -SD,634,05,Vivacell,Wawat Securities -SD,634,07,Sudani One,Sudatel Group -SR,746,02,Telesur,Telecommunications Company Suriname (Telesur) -SR,746,03,Digicel,Digicel Group Limited -SR,746,04,Uniqa,Intelsur N.V. / UTS N.V. -SZ,653,10,,Swazi MTN -SE,240,01,Telia,SwedenTeliaSonera -SE,240,02,3,Hutchison 3G -SE,240,03,Ice.net,Nordisk Mobiltelefon -SE,240,04,,3G Infrastructure Services -SE,240,05,Sweden 3G,Svenska UMTS-Nät -SE,240,06,Telenor,Telenor Sweden -SE,240,07,Tele2,Tele2 Sweden -SE,240,08,Telenor,Telenor Sweden -SE,240,09,djuice,Telenor Sweden -SE,240,10,Spring Mobil,Tele2 -SE,240,11,,Lindholmen Science Park -SE,240,12,,Barablu Mobile Scandinavia -SE,240,13,,Ventelo Sverige -SE,240,14,,TDC Mobil -SE,240,15,,Wireless Maingate Nordic -SE,240,16,,42IT -SE,240,17,Gotanet,Götalandsnätet -SE,240,20,,Wireless Maingate Message Services -SE,240,21,MobiSir,Trafikverket (formerly Banverket) -SE,240,24,Sweden 2G,Net4Mobility -SE,240,25,,DigiTelMobile -SE,240,26,,Beepsend -SE,240,33,,Mobile Arts AB -CH,228,01,Swisscom,Swisscom Ltd -CH,228,02,Sunrise,Sunrise Communications AG -CH,228,03,Orange,Orange Communications SA -CH,228,05,,Togewanet AG (Comfone) -CH,228,06,SBB-CFF-FFS,SBB AG -CH,228,07,IN&Phone,IN&Phone SA -CH,228,08,Tele2,Tele2 Telecommunications AG -CH,228,50,,3G Mobile AG -CH,228,51,,BebbiCell AG -SY,417,01,Syriatel,Syriatel Mobile Telecom -SY,417,02,MTN,MTN Syria -TW,466,01,FarEasTone,Far EasTone Telecommunications Co Ltd -TW,466,05,APTG,Asia Pacific Telecom -TW,466,06,Tuntex,Tuntex Telecom -TW,466,11,Chunghwa LDM,LDTA/Chungwa Telecom -TW,466,88,KG Telecom,KG Telecom -TW,466,89,VIBO,VIBO Telecom -TW,466,92,Chungwa,Chunghwa -TW,466,93,MobiTai,Mobitai Communications -TW,466,97,Taiwan Mobile,Taiwan Mobile Co. Ltd -TW,466,99,TransAsia,TransAsia Telecoms -TJ,436,01,Tcell,JV Somoncom -TJ,436,02,Tcell,Indigo Tajikistan -TJ,436,03,MLT,TT Mobile -TJ,436,04,Babilon-M,Babilon-Mobile -TJ,436,05,Beeline,Vimpelcom -TJ,436,12,Tcell,Indigo -TZ,640,02,tiGO,MIC Tanzania Limited -TZ,640,03,Zantel,Zanzibar Telecom Ltd -TZ,640,04,Vodacom,Vodacom Tanzania Limited -TZ,640,05,Airtel,Bharti Airtel -TZ,640,06,Sasatel,Dovetel Limited -TZ,640,07,TTCL Mobile,Tanzania Telecommunication Company LTD (TTCL) -TZ,640,08,Benson Online (BOL),Benson Informatics Limited -TZ,640,09,Hits,ExcellentCom Tanzania Limited -TZ,640,11,SmileCom,Smile Telecoms Holdings Ltd. -TH,520,00,my CAT 3G+,CAT Telecom -TH,520,01,AIS,Advanced Info Service -TH,520,02,CAT CDMA,CAT Telecom -TH,520,10,,WCS IQ -TH,520,15,TOT 3G,Telephone Organization of Thailand (TOT) -TH,520,18,dtac,Total Access Communication -TH,520,23,AIS GSM 1800,Digital Phone (AIS) -TH,520,99,True Move,True Corporation -TG,615,01,Togo Cell,Togo Telecom -TG,615,03,Moov,Moov Togo -TO,539,01,,Tonga Communications Corporation -TO,539,43,,Shoreline Communication -TO,539,88,Digicel, -TT,374,12,bmobile,TSTT -TT,374,130,Digicel,Digicel (Trinidad & Tobago) Limited -TN,605,01,Orange,Orange Tunisie -TN,605,02,Tunicell,Tunisie Telecom -TN,605,03,Tunisiana,Orascom Telecom Tunisie -TR,286,01,Turkcell,Turkcell Iletisim Hizmetleri A.S. -TR,286,02,Vodafone,Vodafone Turkey -TR,286,03,Avea, -TR,286,04,,Aycell -TM,438,01,MTS,Barash Communication Technologies -TM,438,02,TM-Cell,Altyn Asyr -TC,376,350,C&W,Cable & Wireless West Indies Ltd (Turks & Caicos) -TC,376,352,Islandcom,Islandcom Telecommunications -TC,338,05,Digicel,Digicel (Turks & Caicos) Limited -TV,553,01,TTC,Tuvalu Telecom -UG,641,01,Airtel,Bharti Airtel -UG,641,10,MTN,MTN Uganda -UG,641,11,UTL,Uganda Telecom Ltd. -UG,641,14,Orange,Orange Uganda -UG,641,22,Warid Telecom,Warid Telecom -UA,255,01,MTS,Ukrainian Mobile Communications -UA,255,02,Beeline,Ukrainian Radio Systems -UA,255,03,Kyivstar,Kyivstar GSM JSC -UA,255,04,IT,Intertelecom -UA,255,05,Golden Telecom,Golden Telecom -UA,255,06,life:),Astelit -UA,255,07,Ukrtelecom,Ukrtelecom -UA,255,21,PEOPLEnet,Telesystems of Ukraine -UA,255,23,CDMA Ukraine,ITC -AE,424,02,Etisalat,E mirates Telecom Corp -AE,424,03,du,Emirates Integrated Telecommunications Company -UK,234,00,BT,BT Group -UK,234,01,Vectone Mobile,Mundio Mobile Limited -UK,234,02,O2,Telefónica O2 UK Limited -UK,234,03,Airtel-Vodafone,Jersey Airtel Limited -UK,234,04,FMS Solutions Ltd,FMS Solutions Ltd -UK,234,05,,COLT Mobile Telecommunications Limited -UK,234,06,,Internet Computer Bureau Limited -UK,234,07,,Cable & Wireless UK -UK,234,08,,OnePhone (UK) Ltd -UK,234,09,,Tismi BV -UK,234,10,O2,Telefónica O2 UK Limited -UK,234,11,O2,Telefónica Europe -UK,234,12,Railtrack,Network Rail Infrastructure Ltd -UK,234,13,Railtrack,Network Rail Infrastructure Ltd -UK,234,14,Hay Systems Ltd,Hay Systems Ltd -UK,234,15,Vodafone,Vodafone United Kingdom -UK,234,16,Talk Talk,TalkTalk Communications Limited -UK,234,17,,FleXtel Limited -UK,234,18,Cloud9,Cloud9 -UK,234,19,Private Mobile Networks PMN,Teleware plc -UK,234,20,Three,Hutchison 3G UK Ltd -UK,234,22,RoutoMessaging,Routo Telecommunications Limited -UK,234,24,Greenfone,Stour Marine -UK,234,25,Truphone,Software Cellular Network Ltd -UK,234,30,T-Mobile,Everything Everywhere Limited (TM) -UK,234,31,Virgin,Virgin Mobile -UK,234,32,Virgin,Virgin Mobile -UK,234,33,Orange,Everything Everywhere Limited (TM) -UK,234,34,Orange,Everything Everywhere Limited (TM) -UK,234,35,,JSC Ingenium (UK) Limited -UK,234,36,,Cable and Wireless Isle of Man Limited -UK,234,37,,Synectiv Ltd -UK,234,50,JT-Wave,Jersey Telecom -UK,234,55,,Cable & Wireless Guernsey / Sure Mobile (Jersey) -UK,234,58,,Manx Telecom -UK,234,76,BT,BT Group -UK,234,78,Airwave,Airwave (communications network)[citation needed] -UK,235,00,,Mundio Mobile Limited -UK,235,01,,Everything Everywhere Limited (TM) -UK,235,02,,Everything Everywhere Limited (TM) -UK,235,77,BT,BT Group -UK,235,91,,Vodafone United Kingdom -UK,235,92,,Cable & Wireless UK -UK,235,94,,Hutchison 3G UK Ltd -UK,235,95,,Network Rail Infrastructure Limited -US,310,053,,Virgin Mobile US -US,310,054,,Alltel US -US,310,066,,U.S. Cellular -US,310,004,Verizon,Verizon Wireless -US,310,005,Verizon,Verizon Wireless -US,310,010,,MCI -US,310,012,Verizon,Verizon Wireless -US,310,013,MobileTel, -US,310,014,,Testing -US,310,016,,Cricket Communications -US,310,017,,North Sight Communications Inc. -US,310,020,,Union Telephone Company -US,310,026,T-Mobile, -US,310,030,Centennial,Centennial Communications -US,310,034,Airpeak, -US,310,040,Concho,"Concho Cellular Telephone Co., Inc." -US,310,046,SIMMETRY,TMP Corp -US,310,060,,Consolidated Telcom -US,310,070,,Highland Cellular -US,310,080,Corr,Corr Wireless Communications LLC -US,310,090,AT&T,AT&T Mobility -US,310,100,Plateau Wireless,New Mexico RSA 4 East Ltd. Partnership -US,310,110,PTI Pacifica,PTI Pacifica Inc. -US,310,120,Sprint, -US,310,150,AT&T,AT&T Mobility -US,310,160,,T-Mobile -US,310,170,,T-Mobile -US,310,180,West Central,West Central Wireless -US,310,190,Dutch Harbor,"Alaska Wireless Communications, LLC" -US,310,200,,T-Mobile -US,310,210,,T-Mobile -US,310,220,,T-Mobile -US,310,230,,T-Mobile -US,310,240,,T-Mobile -US,310,250,,T-Mobile -US,310,260,,T-Mobile -US,310,270,,T-Mobile -US,310,280,,T-Mobile -US,310,290,,T-Mobile -US,310,300,iSmart Mobile,Smart Call (Truphone) -US,310,310,,T-Mobile -US,310,311,,Farmers Wireless -US,310,320,Cellular One,"Smith Bagley, Inc." -US,310,330,T-Mobile, -US,310,340,Westlink,Westlink Communications -US,310,350,,Carolina Phone -US,310,380,AT&T,AT&T Mobility -US,310,390,Cellular One of East Texas,"TX-11 Acquisition, LLC" -US,310,400,i CAN_GSM,Wave Runner LLC (Guam) -US,310,410,AT&T,AT&T Mobility -US,310,420,Cincinnati Bell,Cincinnati Bell Wireless -US,310,430,,Alaska Digitel -US,310,440,Cellular One, -US,310,450,Viaero,Viaero Wireless -US,310,460,Simmetry,TMP Corporation -US,310,470,nTelos, -US,310,480,,Choice Phone -US,310,490,T-Mobile, -US,310,500,Alltel, -US,310,510,Airtel,Airtel Wireless -US,310,520,VeriSign, -US,310,530,,West Virginia Wireless -US,310,540,Oklahoma Western,Oklahoma Western Telephone Company -US,310,560,AT&T,AT&T Mobility -US,310,570,Cellular One,"MTPCS, LLC" -US,310,580,T-Mobile, -US,310,590,Alltel,Alltel Communications Inc -US,310,610,Epic Touch,Elkhart Telephone Co. -US,310,620,Coleman County Telecom,Coleman County Telecommunications -US,310,630,AmeriLink PCS,Choice Wireless -US,310,640,Airadigm,Airadigm Communications -US,310,650,Jasper,"Jasper Wireless, inc" -US,310,660,T-Mobile, -US,310,670,Northstar, -US,310,680,AT&T,AT&T Mobility -US,310,690,Conestoga,Conestoga Wireless Company -US,310,730,SeaMobile, -US,310,740,Convey,Convey Communications Inc. -US,310,760,Panhandle,Panhandle Telecommunications Systems Inc. -US,310,770,i wireless,Iowa Wireless Services -US,310,780,,Airlink PCS -US,310,790,PinPoint,PinPoint Communications -US,310,800,,T-Mobile -US,310,830,Caprock,Caprock Cellular -US,310,840,telna Mobile,"Telecom North America Mobile, Inc." -US,310,850,Aeris,"Aeris Communications, Inc." -US,310,870,PACE,Kaplan Telephone Company -US,310,880,Advantage,Advantage Cellular Systems -US,310,890,Unicel,Rural Cellular Corporation -US,310,900,Mid-Rivers Wireless,Mid-Rivers Communications -US,310,910,First Cellular,First Cellular of Southern Illinois -US,310,940,,Iris Wireless LLC -US,310,950,XIT Wireless,Texas RSA 1 dba XIT Cellular -US,310,960,Plateau Wireless, -US,310,970,Globalstar, -US,310,980,,AT&T Mobility -US,310,990,,AT&T Mobility -US,311,000,,Mid-Tex Cellular -US,311,010,Chariton Valley,Chariton Valley Communications -US,311,020,,Missouri RSA 5 Partnership -US,311,030,,Indigo Wireless -US,311,040,,Commnet Wireless -US,311,050,,Wikes Cellular -US,311,060,Farmers Cellular,Farmers Cellular Telephone -US,311,070,Easterbrooke,Easterbrooke Cellular Corporation -US,311,080,Pine Cellular,Pine Telephone Company -US,311,090,Long Lines Wireless,Long Lines Wireless LLC -US,311,100,,High Plains Wireless -US,311,110,,High Plains Wireless -US,311,120,,Choice Phone -US,311,130,,Cell One Amarillo -US,311,140,Sprocket,MBO Wireless -US,311,150,,Wilkes Cellular -US,311,160,,Endless Mountains Wireless -US,311,170,PetroCom,Broadpoint Inc -US,311,180,,Cingular Wireless -US,311,190,,Cellular Properties -US,311,210,,Emery Telcom Wireless -US,311,220,,U.S. Cellular -US,311,230,,C Spire Wireless -US,311,330,Bug Tussel Wireless,Bug Tussel Wireless -US,311,480,Verizon,Verizon Wireless -US,311,660,metroPCS,metroPCS -US,316,010,Nextel,Nextel Communications -US,316,011,,Southern Communications Services -UY,748,01,Antel,Compania estatal (ANTEL) -UY,748,07,Movistar,Telefónica Móviles Uruguay -UY,748,10,Claro UY,AM Wireless Uruguay S.A. -UZ,434,01,,Buztel -UZ,434,02,,Uzmacom -UZ,434,04,Beeline,Unitel LLC -UZ,434,05,Ucell,Coscom -UZ,434,06,,Perfectum Mobile -UZ,434,07,MTS,Uzdunrobita -VU,541,01,SMILE,Telecom Vanuatu Ltd -VE,734,01,Digitel,Corporacion Digitel C.A. -VE,734,02,Digitel,Corporacion Digitel C.A. -VE,734,03,Digitel,Corporacion Digitel C.A. -VE,734,04,movistar,Telefónica Móviles Venezuela -VE,734,06,Movilnet,Telecomunicaciones Movilnet -VN,452,01,MobiFone,Vietnam Mobile Telecom Services Company (VMS) -VN,452,02,Vinaphone,Vietnam Telecom Services Company -VN,452,03,S-Fone,S-Telecom -VN,452,04,Viettel Mobile,Viettel Telecom -VN,452,05,Vietnamobile,Hanoi Telecom -VN,452,06,EVNTelecom,EVNTelecom - EVN -VN,452,08,3G EVNTelecom,EVNTelecom - EVN -VN,452,07,Beeline VN,GTEL Mobile JSC -YE,421,01,SabaFon, -YE,421,02,MTN,SpaceTel -YE,421,03,Yemen Mobile,Yemen Mobile -YE,421,04,HiTS-UNITEL,Y -ZM,645,01,Airtel,Bharti Airtel -ZM,645,02,MTN,MTN Group -ZM,645,03,ZAMTEL,Zambia Telecommunications Company Ltd -ZW,648,01,Net*One,Net*One Cellular (Pvt) Ltd -ZW,648,03,Telecel,Telecel Zimbabwe (PVT) Ltd -ZW,648,04,Econet,Econet Wireless (Private) Limited -__,901,01,ICO,ICO Satellite Management -__,901,02,,Sense Communications International -__,901,03,Iridium, -__,901,04,Globalstar, -__,901,05,,Thuraya RMSS Network -__,901,06,,Thuraya Satellite Telecommunications Company -__,901,07,Ellipso, -__,901,08,, -__,901,09,,Tele1 Europe -__,901,10,ACeS, -__,901,11,Inmarsat, -__,901,12,Telenor,Maritime Communications Partner AS -__,901,13,GSM.AQ,Global Networks Switzerland Inc. -__,901,14,,AeroMobile AS -__,901,15,,OnAir Switzerland Sarl -__,901,16,,Jasper Systems -__,901,17,Navitas, -__,901,18,Cellular @Sea,AT&T Mobility -__,901,19,,Vodafone Malta Maritime -__,901,21,Seanet,Seanet Maritime Communications -__,901,23,,Beeline -__,901,24,iNum,Voxbone -__,901,26,TIM,Telecom Italia -__,901,29,Telenor, -__,901,32,Sky High,MegaFon diff --git a/res/wiki_mcc_mnc_oper_list.db b/res/wiki_mcc_mnc_oper_list.db deleted file mode 100644 index fefb8b6..0000000 Binary files a/res/wiki_mcc_mnc_oper_list.db and /dev/null differ diff --git a/res/wiki_mcc_mnc_oper_list.sql b/res/wiki_mcc_mnc_oper_list.sql deleted file mode 100644 index fd5493a..0000000 --- a/res/wiki_mcc_mnc_oper_list.sql +++ /dev/null @@ -1,1520 +0,0 @@ -create table mcc_mnc_oper_list (id integer primary key, country char(3), mcc integer, mnc char(3), oper char(45) ); -BEGIN; -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 1, "01", "TEST"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 111, "11", "SDK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 289, "67", "Aquafon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 289, "88", "A-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AF", 412, "01", "AWCC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AF", 412, "20", "Roshan"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AF", 412, "40", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AF", 412, "50", "Etisalat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AL", 76, "01", "AMC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AL", 276, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AL", 276, "03", "Eagle Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AL", 276, "04", "Plus Communication"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DZ", 603, "01", "Mobilis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DZ", 603, "02", "Djezzy"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DZ", 603, "03", "Nedjma"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AS", 44, "11", "Bluesky"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AD", 213, "03", "Mobiland"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AO", 631, "02", "UNITEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AO", 631, "04", "MOVICEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AI", 365, "010", "Weblinks Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AI", 365, "840", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AG", 344, "030", "APUA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AG", 344, "920", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AG", 338, "050", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "010", "Movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "020", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "070", "Movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "310", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "320", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "330", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "34", "Personal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "341", "Personal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "350", "Hutchinson (PORT HABLE)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AR", 722, "36", "Personal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AM", 283, "01", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AM", 283, "05", "VivaCell-MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AM", 283, "10", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AW", 363, "01", "SETAR"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AW", 363, "02", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "01", "Telstra"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "02", "Optus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "03", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "04", "Department of Defence"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "05", "Ozitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "06", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "08", "One.Tel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "09", "Airnet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "12", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "13", "Railcorp"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "14", "AAPT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "15", "3GIS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "16", "Victorian Rail Track"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "21", "SOUL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "24", "Advance Communications Technologies Pty. Ltd."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "38", "Crazy John's"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "71", "Telstra"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "72", "Telstra"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "88", "Localstar Holding Pty. Ltd."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "90", "Optus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AU", 505, "99", "One.Tel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "01", "A1"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "03", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "05", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "07", "tele.ring"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "09", "A1"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "10", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "11", "bob"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "12", "yesss"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "14", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "15", "Barablu"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AT", 232, "91", "GSM-R A"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AZ", 400, "01", "Azercell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AZ", 400, "02", "Bakcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AZ", 400, "03", "FONEX"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AZ", 400, "04", "Nar Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BS", 364, "390", "BaTelCo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BH", 426, "01", "Batelco"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BH", 426, "02", "zain BH"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BH", 426, "04", "VIVA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BD", 470, "01", "Grameenphone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BD", 470, "02", "Robi"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BD", 470, "03", "Banglalink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BD", 470, "04", "TeleTalk"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BD", 470, "05", "Citycell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BD", 470, "06", "Airtel formerly Warid Telcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BB", 342, "600", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BB", 342, "750", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BB", 342, "820", "Sunbeach Communications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BY", 257, "01", "velcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BY", 257, "02", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BY", 257, "03", "DIALLOG"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BY", 257, "04", "life:)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BY", 257, "501", "BelCel JV"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BE", 206, "01", "Proximus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BE", 206, "05", "Telenet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BE", 206, "10", "Mobistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BE", 206, "20", "BASE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BZ", 702, "67", "DigiCell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BZ", 702, "99", "Smart"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BJ", 616, "01", "Libercom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BJ", 616, "02", "Moov"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BJ", 616, "03", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BJ", 616, "04", "BBCOM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BJ", 616, "05", "Glo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BM", 350, "01", "Digicel Bermuda"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BM", 350, "02", "Mobility"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BM", 338, "050", "Digicel Bermuda"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BM", 310, "59", "Cellular One"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BT", 402, "11", "B-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BT", 402, "77", "TashiCell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BO", 736, "01", "Nuevatel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BO", 736, "02", "Entel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BO", 736, "03", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BA", 218, "03", "HT-ERONET"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BA", 218, "05", "m:tel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BA", 218, "90", "BH Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BW", 652, "01", "Mascom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BW", 652, "02", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BW", 652, "04", "BTC Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "00", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "02", "TIM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "03", "TIM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "04", "TIM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "05", "Claro BR"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "06", "Vivo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "07", "Sercomtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "10", "Vivo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "11", "Vivo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "15", "CTBC Celular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "16", "Brasil Telecom GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "23", "Vivo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "31", "Oi"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "32", "CTBC Celular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "33", "CTBC Celular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "34", "CTBC Celular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BR", 724, "39", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VG", 348, "170", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VG", 348, "570", "CCT Boatphone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VG", 348, "770", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BN", 528, "01", "Jabatan Telekom Brunei"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BN", 528, "02", "B-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BN", 528, "11", "DSTCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BG", 284, "01", "M-Tel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BG", 284, "03", "Vivacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BG", 284, "04", "Undisclosed"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BG", 284, "05", "GLOBUL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BF", 613, "01", "Telmob"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BF", 613, "02", "Zain"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BF", 613, "03", "Telecel Faso"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BI", 642, "01", "Spacetel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BI", 642, "02", "Africell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BI", 642, "03", "Onatel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BI", 642, "07", "Smart Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BI", 642, "08", "HiTs Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("BI", 642, "82", "U-COM Burundi"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "01", "Mobitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "02", "hello"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "03", "S Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "04", "qb"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "05", "Star-Cell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "06", "Smart Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "18", "Mfone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "11", "Excell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "09", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KH", 456, "08", "Metfone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CM", 624, "01", "MTN Cameroon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CM", 624, "02", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "220", "Telus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "221", "Telus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "270", "unknown"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "290", "Airtel Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "320", "Mobilicity"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "350", "FIRST"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "360", "MiKe"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "361", "Telus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "370", "Fido"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "380", "DMTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "490", "WIND Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "500", "Videotron"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "510", "Videotron"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "610", "Bell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "610", "Bell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "620", "ICE Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "640", "Bell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "652", "BC Tel Mobility (Telus)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "653", "Telus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "655", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "656", "TBay"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "657", "Telus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "660", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "680", "SaskTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "701", "MB Tel Mobility"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "702", "MT&T Mobility (Aliant)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "703", "New Tel Mobility (Aliant)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "710", "Globalstar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "720", "Rogers Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "780", "SaskTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CA", 302, "880", "Bell / Telus / SaskTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CV", 625, "01", "CVMOVEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CV", 625, "02", "T+"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KY", 346, "140", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KY", 346, "50", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CF", 623, "01", "CTP"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CF", 623, "02", "TC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CF", 623, "03", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CF", 623, "04", "Nationlink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TD", 622, "01", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TD", 622, "02", "Tchad Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TD", 622, "03", "TIGO - Millicom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TD", 622, "04", "Salam"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "01", "entel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "02", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "03", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "04", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "08", "VTR Móvil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "09", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "10", "entel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CL", 730, "99", "Will"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "00", "China Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "01", "China Unicom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "02", "China Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "03", "China Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "05", "China Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "06", "China Unicom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "07", "China Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CN", 460, "20", "China Tietong"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "001", "Colombia Telecomunicaciones S.A."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "002", "Edatel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "101", "Comcel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "102", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "103", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "111", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CO", 732, "123", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KM", 654, "01", "HURI - SNPT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CG", 629, "01", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CG", 629, "10", "Libertis Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CG", 629, "07", "Warid Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CK", 548, "01", "Telecom Cook"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CR", 712, "01", "Kolbi ICE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CR", 712, "02", "Kolbi ICE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CR", 712, "03", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CR", 712, "04", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HR", 219, "01", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HR", 219, "02", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HR", 219, "10", "Vip"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CU", 368, "01", "CUBACEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CY", 280, "01", "Cytamobile-Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CY", 280, "10", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "01", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "02", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "03", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "04", "U:fon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "05", "TRAVEL TELEKOMMUNIKATION, s.r.o"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "06", "OSNO TELECOMUNICATION, s.r.o"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "98", "Správa železniční dopravní cesty, s.o"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CZ", 230, "99", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "01", "Vodacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "02", "Zain"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "04", "Cellco"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "05", "Supercell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "10", "Libertis Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "86", "CCT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CD", 630, "89", "SAIT Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "01", "TDC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "02", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "03", "MIGway A/S"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "05", "ApS KBUS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "06", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "07", "Barablu Mobile Ltd."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "09", "Dansk Beredskabskommunikation A/S"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "10", "TDC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "11", "Dansk Beredskabskommunikation A/S"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "12", "Lycamobile Denmark Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "20", "Telia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "30", "Telia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "40", "Ericsson Danmark A/S"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DK", 238, "77", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DJ", 638, "01", "Evatis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DM", 366, "020", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DM", 366, "110", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DO", 370, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DO", 370, "02", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DO", 370, "03", "Tricom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DO", 370, "04", "Viva"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TL", 514, "02", "Timor Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EC", 740, "00", "Movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EC", 740, "01", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EC", 740, "02", "Alegro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EG", 602, "01", "Mobinil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EG", 602, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EG", 602, "03", "Etisalat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SV", 706, "01", "CTE Telecom Personal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SV", 706, "02", "digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SV", 706, "03", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SV", 706, "04", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SV", 706, "11", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GQ", 627, "01", "Orange GQ"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GQ", 627, "03", "Hits GQ"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ER", 657, "01", "Eritel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EE", 248, "01", "EMT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EE", 248, "02", "Elisa"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EE", 248, "03", "Tele 2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EE", 248, "04", "OY Top Connect"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EE", 248, "05", "AS Bravocom Mobiil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("EE", 248, "06", "Progroup Holding"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ET", 636, "01", "ETH-MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FO", 288, "01", "Faroese Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FO", 288, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FJ", 542, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FJ", 542, "02", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "03", "DNA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "05", "Elisa"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "07", "Nokia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "08", "Unknown"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "10", "TDC Oy"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "11", "VIRVE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "12", "DNA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "14", "AMT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "15", "SAMK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "21", "Saunalahti"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "29", "Scnl Truphone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FI", 244, "91", "Sonera"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "00", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "02", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "05", "Globalstar Europe"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "06", "Globalstar Europe"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "07", "Globalstar Europe"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "10", "SFR"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "11", "SFR"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "13", "SFR"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "14", "Free Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "15", "Free Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "20", "Bouygues"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "21", "Bouygues"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "22", "Transatel Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FR", 208, "88", "Bouygues"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PF", 547, "20", "Vini"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GA", 628, "01", "Libertis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GA", 628, "02", "Moov"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GA", 628, "03", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GA", 628, "04", "Azur"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GM", 607, "01", "Gamcel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GM", 607, "02", "Africel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GM", 607, "03", "Comium"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GM", 607, "04", "QCell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 282, "01", "Geocell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 282, "02", "MagtiCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 282, "03", "MagtiCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 282, "04", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GE", 282, "05", "Silknet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "01", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "03", "E-Plus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "04", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "05", "E-Plus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "06", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "07", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "08", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "09", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "10", "Arcor AG & Co"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "11", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "12", "Dolphin Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "13", "Mobilcom Multimedia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "14", "Group 3G UMTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "15", "Airdata"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "16", "Vistream"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "42", "27C3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "43", "LYCA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "60", "DB Telematik"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "76", "Siemens AG"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "77", "E-Plus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "92", "Nash Technologies"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("DE", 262, "901", "Debitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GH", 620, "01", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GH", 620, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GH", 620, "03", "tiGO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GH", 620, "04", "Expresso"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GH", 620, "06", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GI", 266, "01", "GibTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GI", 266, "06", "CTS Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GR", 202, "01", "Cosmote"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GR", 202, "05", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GR", 202, "09", "Wind"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GR", 202, "10", "Wind"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GL", 290, "01", "TELE Greenland A/S"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GD", 352, "030", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GD", 352, "110", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GP", 340, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GP", 340, "02", "Outremer"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GP", 340, "03", "Telcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GP", 340, "08", "Dauphin"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GP", 340, "20", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GU", 310, "032", "IT&E Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GU", 310, "033", "Guam Telephone Authority"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GU", 310, "140", "mPulse"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GU", 310, "370", "docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GU", 311, "250", "i CAN_GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GU", 310, "470", "docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GT", 704, "01", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GT", 704, "02", "Comcel / Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GT", 704, "03", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GB", 234, "55", "Sure Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GB", 234, "50", "Wave Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GB", 234, "03", "Airtel Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GN", 611, "01", "Orange S.A."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GN", 611, "02", "Sotelgui"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GN", 611, "03", "Telecel Guinee"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GN", 611, "04", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GN", 611, "05", "Cellcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GW", 632, "02", "Areeba"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GW", 632, "03", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GY", 738, "01", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("GY", 738, "02", "GT&T Cellink Plus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HT", 372, "01", "Voila"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HT", 372, "02", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HT", 372, "03", "NATCOM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HN", 708, "01", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HN", 708, "02", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HN", 708, "30", "Hondutel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HN", 708, "40", "DIGICEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "00", "1O1O / One2Free"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "01", "CITIC Telecom 1616"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "02", "CSL Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "03", "3 (3G)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "04", "3 (2G)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "05", "3 (CDMA)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "06", "SmarTone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "07", "China Unicom (Hong Kong) Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "08", "Trident Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "09", "China Motion Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "10", "New World Mobility"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "11", "China-Hong Kong Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "12", "CMCC HK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "14", "Hutchison Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "15", "SmarTone Mobile Communications Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "16", "PCCW Mobile (2G)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "17", "SmarTone Mobile Communications Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "18", "CSL Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "19", "PCCW Mobile (3G)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HK", 454, "29", "PCCW Mobile (CDMA)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HU", 216, "01", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HU", 216, "30", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("HU", 216, "70", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "01", "Síminn"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "03", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "04", "Viking"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "06", "Núll níu ehf"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "07", "IceCell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "08", "On-waves"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "11", "Nova"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IS", 274, "12", "Tal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "01", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "02", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "03", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "04", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "05", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "07", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "09", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "10", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "11", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "12", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "13", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "14", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "15", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "17", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "19", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "20", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "21", "Loop Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "22", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "24", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "25", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "27", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "28", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "29", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "30", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "31", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "34", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "36", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "37", "Aircel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "38", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "41", "Aircel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "42", "Aircel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "44", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "45", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "46", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "48", "Dishnet Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "49", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "51", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "52", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "53", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "54", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "55", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "71", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "56", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "57", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "58", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "59", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "60", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "62", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "64", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "66", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "67", "Reliance GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "68", "DOLPHIN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "69", "DOLPHIN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "72", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "74", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "76", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "78", "Idea Cellular Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "80", "BSNL MOBILE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "81", "CellOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "82", "Idea"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "83", "Reliance Smart GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "84", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "85", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "86", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "87", "Idea"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "88", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "89", "Idea"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "90", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "91", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "92", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "93", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "96", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "01", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "03", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "04", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "05", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "09", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "10", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "13", "Reliance"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "025", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "026", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "027", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "029", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "030", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "031", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "032", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "033", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "034", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "035", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "036", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "037", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "038", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "039", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "041", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "042", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "043", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "044", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "045", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "046", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "047", "TATA Teleservice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "51", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "52", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "54", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "55", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "56", "AirTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "66", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "70", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "750", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "751", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "752", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "753", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "754", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "755", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "756", "Vodafone IN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "799", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "800", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "801", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "802", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "803", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "804", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "805", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "806", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "807", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "808", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "809", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "810", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "811", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "812", "AIRCEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "819", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "818", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "820", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "821", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "822", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "824", "Videocon Datacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "827", "Videocon Datacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "834", "Videocon Datacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "844", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "845", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "86", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "848", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "850", "IDEA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "855", "Loop Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "864", "Loop Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "865", "Loop Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "875", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "880", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "881", "S Tel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "912", "Etisalat DB(cheers)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "913", "Etisalat DB(cheers)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "914", "Etisalat DB(cheers)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "917", "Etisalat DB(cheers)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 404, "927", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IN", 405, "929", "Uninor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "00", "PSN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "01", "INDOSAT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "03", "StarOne"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "07", "TelkomFlexi"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "08", "AXIS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "09", "SMART"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "10", "Telkomsel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "11", "XL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "20", "TELKOMMobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "21", "IM3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "27", "Ceria"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "28", "Fren/Hepi"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "89", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ID", 510, "99", "Esia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "11", "IR-MCI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "14", "TKC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "19", "MTCE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "32", "Taliya"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "35", "Irancell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "70", "TCI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IR", 432, "93", "Iraphone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "05", "Asia Cell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "08", "SanaTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "20", "Zain"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "30", "Zain"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "40", "Korek"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "45", "Mobitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IQ", 418, "92", "Omnnea"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "02", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "03", "Meteor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "04", "Access Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "05", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "07", "Eircom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "09", "Clever Communications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IE", 272, "11", "Liffey Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IM", 234, "58", "Pronto GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IM", 234, "09", "Sure Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IL", 425, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IL", 425, "02", "Cellcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IL", 425, "03", "Pelephone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IL", 425, "77", "Mirs"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "01", "TIM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "02", "Elsacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "07", "Noverca"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "10", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "30", "RFI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "77", "IPSE 2000"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "88", "Wind"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "98", "Blu"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("IT", 222, "99", "3 Italia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CI", 612, "01", "Cora de Comstar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CI", 612, "02", "Moov"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CI", 612, "03", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CI", 612, "04", "KoZ"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CI", 612, "05", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CI", 612, "06", "ORICEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JM", 338, "020", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JM", 338, "050", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JM", 338, "070", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JM", 338, "180", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "00", "eMobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "01", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "02", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "03", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "04", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "06", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "07", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "08", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "09", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "10", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "11", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "12", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "13", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "14", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "15", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "16", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "17", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "18", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "19", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "20", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "21", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "22", "NTT docomo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "23", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "24", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "25", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "26", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "27", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "28", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "29", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "30", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "31", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "32", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "33", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "34", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "35", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "36", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "37", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "38", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "39", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "40", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "41", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "42", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "43", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "44", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "45", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "46", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "47", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "48", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "49", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "50", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "51", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "52", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "53", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "54", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "55", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "56", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "58", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "60", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "61", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "62", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "63", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "64", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "65", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "66", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "67", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "68", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "69", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "70", "au"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "71", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "72", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "73", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "74", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "75", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "76", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "77", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "78", "Okinawa Cellular Telephone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "79", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "80", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "81", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "82", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "83", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "84", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "85", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "86", "TU-KA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "87", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "88", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "89", "KDDI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "90", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "92", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "93", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "94", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "95", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "96", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "97", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "98", "SoftBank"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JP", 440, "99", "DoCoMo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JE", 234, "50", "JT-Wave"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JE", 234, "55", "Sure Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JE", 234, "03", "Airtel Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JO", 416, "01", "zain JO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JO", 416, "02", "XPress Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JO", 416, "03", "Umniah"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("JO", 416, "77", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KZ", 401, "01", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KZ", 401, "02", "Kcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KZ", 401, "07", "Dalacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KZ", 401, "08", "Kazakhtelecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KZ", 401, "77", "Mobile Telecom Service"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KE", 639, "02", "Safaricom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KE", 639, "03", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KE", 639, "07", "Orange Kenya"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KE", 639, "05", "yu"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KI", 545, "09", "Kiribati Frigate"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KP", 467, "192", "Koryolink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KP", 467, "193", "SunNet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KR", 450, "02", "KT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KR", 450, "03", "Power 017"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KR", 450, "04", "KT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KR", 450, "05", "SKT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KR", 450, "06", "LGU+"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KR", 450, "08", "olleh"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RKS", 212, "01", "Vala"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RKS", 293, "41", "IPKO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RKS", 212, "01", "Z Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KW", 419, "02", "zain KW"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KW", 419, "03", "Wataniya"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KW", 419, "04", "Viva"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KG", 437, "01", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KG", 437, "03", "Fonex"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KG", 437, "05", "MegaCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("KG", 437, "09", "O!"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LA", 457, "01", "LaoTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LA", 457, "02", "ETL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LA", 457, "03", "Unitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LA", 457, "08", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "01", "LMT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "02", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "03", "TRIATEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "05", "Bite"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "06", "Rigatta"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "07", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "08", "IZZI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LV", 247, "09", "Camel Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LB", 415, "01", "Alfa"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LB", 415, "03", "mtc touch"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LB", 415, "05", "Ogero Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LS", 651, "01", "Vodacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LS", 651, "02", "Econet Ezin-cel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LR", 618, "01", "Lonestar Cell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LR", 618, "02", "Libercell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LR", 618, "04", "Comium"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LR", 618, "07", "Cellcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LR", 618, "20", "LIBTELCO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LY", 606, "00", "Libyana"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LY", 606, "01", "Madar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LY", 606, "02", "Al-Jeel Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LY", 606, "03", "Libya Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LY", 606, "06", "Hatef Libya"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LI", 295, "01", "Swisscom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LI", 295, "02", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LI", 295, "05", "FL1"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LI", 295, "77", "Alpmobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LI", 295, "04", "Cubic Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LT", 246, "01", "Omnitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LT", 246, "02", "BITE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LT", 246, "03", "Tele 2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LT", 246, "05", "LitRail"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LT", 246, "06", "Mediafon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LU", 270, "01", "LuxGSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LU", 270, "77", "Tango"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LU", 270, "99", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MO", 455, "00", "SmarTone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MO", 455, "01", "CTM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MO", 455, "02", "China Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MO", 455, "03", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MO", 455, "04", "CTM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MO", 455, "05", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MK", 294, "01", "T-Mobile MK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MK", 294, "02", "ONE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MK", 294, "03", "Vip MK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MG", 646, "01", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MG", 646, "02", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MG", 646, "03", "Sacel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MG", 646, "04", "Telma"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MW", 650, "01", "TNM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MW", 650, "10", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "01", "ATUR 450"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "10", "DiGi Telecommunications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "11", "TM Homeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "12", "Maxis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "13", "Celcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "14", "Telekom Malaysia Berhad for PSTN SMS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "16", "DiGi"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "17", "Hotlink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "18", "U Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "18", "TM Homeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "19", "Celcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "20", "Electcoms Wireless Sdn Bhd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "150", "Tune Talk"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "151", "Baraka Telecom Sdn Bhd (MVNE)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MY", 502, "152", "Yes"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MV", 472, "01", "Dhiraagu"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MV", 472, "02", "Wataniya"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ML", 610, "01", "Malitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ML", 610, "02", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MT", 278, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MT", 278, "21", "GO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MT", 278, "77", "Melita"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MQ", 340, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MQ", 340, "02", "Outremer"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MQ", 340, "20", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MR", 609, "01", "Mattel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MR", 609, "02", "Chinguitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MR", 609, "10", "Mauritel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MU", 617, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MU", 617, "02", "MTML"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MU", 617, "10", "Emtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MX", 334, "010", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MX", 334, "020", "Telcel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MX", 334, "030", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MX", 334, "040", "Iusacell / Unefon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MX", 334, "050", "Iusacell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("FM", 550, "01", "FSM EMMANUEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "02", "Moldcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "03", "IDC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "03", "Unité"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "04", "Eventis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "05", "Unité"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MD", 259, "99", "Unité"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MC", 212, "01", "Office des Telephones"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MN", 428, "99", "MobiCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MN", 428, "88", "Unitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MN", 428, "91", "Skytel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MN", 428, "98", "G.Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ME", 297, "01", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ME", 297, "02", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ME", 297, "03", "m:tel CG"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ME", 297, "04", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MA", 604, "00", "Méditel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MA", 604, "01", "IAM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MA", 604, "05", "INWI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MZ", 643, "01", "mCel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MZ", 643, "04", "Vodacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("MM", 414, "01", "MPT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NA", 649, "01", "MTC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NA", 649, "02", "switch"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NA", 649, "03", "Leo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NR", 536, "02", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NP", 429, "01", "Namaste / NT Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NP", 429, "02", "Ncell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NP", 429, "04", "SmartCell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NP", 429, "03", "Sky/C-Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "01", "VastMobiel B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "02", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "03", "Voiceworks B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "04", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "05", "Elephant Talk Communications Premium Rate Services"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "06", "Mundio Mobile (Netherlands) Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "07", "Teleena (MVNE)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "08", "KPN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "09", "Lycamobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "10", "KPN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "12", "Telfort"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "13", "Unica Installatietechniek B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "14", "6Gmobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "15", "Ziggo B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "16", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "17", "Intercity Mobile Communications B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "18", "UPC Nederland B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "19", "Mixe Communication Solutions B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "20", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "21", "ProRail B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "22", "Ministerie van Defensie"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "23", "ASPIDER Solutions Nederland B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "24", "Private Mobility Nederland B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "25", "CapX B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "26", "SpeakUp B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "27", "Breezz Nederland B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "67", "RadioAccess B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "68", "Unify Group Holding B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NL", 204, "69", "KPN Mobile The Netherlands B.V."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AN", 362, "51", "Telcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AN", 362, "69", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AN", 362, "91", "UTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AN", 362, "95", "MIO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AN", 362, "94", "Bayòs"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NC", 546, "01", "Mobilis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "00", "Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "02", "Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "03", "Woosh"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "04", "TelstraClear"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "05", "XT Mobile Network"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NZ", 530, "24", "2degrees"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NI", 710, "21", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NI", 710, "30", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NI", 710, "73", "SERCOM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NE", 614, "01", "SahelCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NE", 614, "02", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NE", 614, "03", "Telecel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NE", 614, "04", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NG", 621, "20", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NG", 621, "30", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NG", 621, "40", "M-Tel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NG", 621, "50", "Glo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NG", 621, "60", "Etisalat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NG", 621, "25", "Visafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NU", 555, "01", "Telecom Niue"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NF", 505, "10", "Norfolk Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "01", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "02", "NetCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "03", "Teletopia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "04", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "05", "Network Norway"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "06", "Ice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "07", "Ventelo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "08", "TDC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "09", "Com4"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "11", "SystemNet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "20", "Jernbaneverket AS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("NO", 242, "23", "Lyca"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("OM", 422, "02", "Oman Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("OM", 422, "03", "Nawras"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PK", 410, "01", "Mobilink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PK", 410, "03", "Ufone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PK", 410, "04", "Zong"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PK", 410, "06", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PK", 410, "07", "Warid"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PW", 552, "01", "PNCC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PW", 552, "80", "Palau Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PS", 425, "05", "Jawwal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PS", 425, "06", "Wataniya"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PA", 714, "01", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PA", 714, "02", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PA", 714, "04", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PA", 714, "03", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PG", 537, "01", "B-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PG", 537, "03", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PY", 744, "01", "VOX"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PY", 744, "02", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PY", 744, "04", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PY", 744, "05", "Personal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PY", 744, "06", "Copaco"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PE", 716, "06", "Movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PE", 716, "07", "NEXTEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PE", 716, "10", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "01", "Islacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "02", "Globe"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "03", "Smart"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "05", "Sun"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "11", "PLDT via ACeS Philippines"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "18", "Cure"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PH", 515, "88", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "01", "Plus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "02", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "03", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "04", "not in use"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "05", "Polska Telefonia Komórkowa Centertel Sp. z o.o."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "06", "Play"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "07", "Netia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "08", "E-Telko Sp. z o.o."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "09", "Telekomunikacja Kolejowa Sp. z o.o."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "10", "Sferia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "11", "Nordisk Polska"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "12", "Cyfrowy Polsat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "15", "CenterNet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "16", "Mobyland"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PL", 260, "17", "Aero2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PT", 268, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PT", 268, "03", "Optimus"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PT", 268, "06", "TMN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PT", 268, "21", "Zapp"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PR", 330, "110", "Claro"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PR", 330, "00", "Open Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("QA", 427, "01", "Qtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("QA", 427, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("QA", 427, "05", "Ministry of Interior"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RE", 647, "00", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RE", 647, "02", "Outremer"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RE", 647, "10", "SFR Reunion"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "02", "Romtelecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "03", "Cosmote"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "04", "Cosmote"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "05", "Digi.Mobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "06", "Cosmote"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "10", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RO", 226, "11", "Enigma-System"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "01", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "02", "MegaFon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "03", "NCC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "04", "Sibchallenge"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "05", "ETK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "06", "Skylink [10]"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "07", "SMARTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "09", "Skylink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "10", "DTC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "11", "Orensot"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "12", "Baykalwestcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "12", "Akos"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "13", "KUGSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "15", "SMARTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "16", "NTC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "17", "Utel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "19", "INDIGO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "20", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "23", "Mobicom - Novosibirsk"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "28", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "35", "MOTIV"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "38", "Tambov GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "39", "Utel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "44", "Stavtelesot / North Caucasian GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "92", "Primtelefon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "93", "Telecom XXI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RU", 250, "99", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RW", 635, "10", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RW", 635, "12", "Rwandatel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RW", 635, "13", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SKN", 356, "050", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SKN", 356, "110", "LIME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SKN", 356, "070", "Chippie"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LC", 358, "050", "Digicel[citation needed]"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LC", 358, "110", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("PM", 308, "01", "Ameris"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VC", 360, "070", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VC", 360, "100", "Cingular Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VC", 360, "110", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("WS", 549, "01", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("WS", 549, "27", "SamoaTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SM", 292, "01", "PRIMA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ST", 626, "01", "CSTmovel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SA", 420, "01", "Al Jawal"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SA", 420, "03", "Mobily"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SA", 420, "04", "Zain SA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SN", 608, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SN", 608, "02", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SN", 608, "03", "Expresso"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RS", 220, "01", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RS", 220, "02", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RS", 220, "03", "mt:s"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("RS", 220, "05", "VIP"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SC", 633, "01", "Cable & Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SC", 633, "02", "Mediatech International"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SC", 633, "10", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SL", 619, "01", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SL", 619, "02", "Tigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SL", 619, "03", "Africell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SL", 619, "04", "Comium"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SL", 619, "05", "Africell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SL", 619, "25", "Mobitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SG", 525, "01", "SingTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SG", 525, "02", "SingTel-G18"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SG", 525, "03", "M1"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SG", 525, "05", "StarHub"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SG", 525, "12", "Digital Trunked Radio Network"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SK", 231, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SK", 231, "02", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SK", 231, "03", "Unient Communications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SK", 231, "04", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SK", 231, "06", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SK", 231, "99", "ŽSR"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SI", 293, "40", "Si.mobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SI", 293, "41", "Mobitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SI", 293, "64", "T-2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SI", 293, "70", "TuÅ¡mobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SB", 540, "01", "BREEZE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "60", "Nationlink Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "01", "Telesom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "04", "Somafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "10", "Nationlink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "25", "Hormuud"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "30", "Golis"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SO", 637, "82", "Telcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "01", "Vodacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "02", "Telkom Mobile / 8.ta"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "06", "Sentech"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "07", "Cell C"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "10", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "11", "South African Police Service Gauteng"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "13", "Neotel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "21", "Cape Town Metropolitan Council"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "30", "Bokamoso Consortium"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "31", "Karabo Telecoms (Pty) Ltd."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "32", "Ilizwi Telecommunications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZA", 655, "33", "Thinta Thinta Telecommunications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 250, "30", "Megafon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "01", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "03", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "04", "Yoigo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "05", "TME"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "06", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "07", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "08", "Euskaltel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "09", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "15", "BT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "16", "TeleCable"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "17", "Móbil R"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "18", "ONO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "19", "Simyo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "20", "Fonyou"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "21", "Jazztel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "22", "DigiMobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "23", "Barablu"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "24", "Eroski"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ES", 214, "25", "LycaMobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LK", 413, "01", "Mobitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LK", 413, "02", "Dialog"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LK", 413, "03", "Etisalat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LK", 413, "05", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("LK", 413, "08", "Hutch"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SD", 634, "01", "Zain SD"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SD", 634, "02", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SD", 634, "05", "Vivacell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SD", 634, "07", "Sudani One"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SR", 746, "02", "Telesur"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SR", 746, "03", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SR", 746, "04", "Uniqa"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SZ", 653, "10", "Swazi MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "01", "Telia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "02", "3"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "03", "Ice.net"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "04", "3G Infrastructure Services"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "05", "Sweden 3G"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "06", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "07", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "08", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "09", "djuice"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "10", "Spring Mobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "11", "Lindholmen Science Park"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "12", "Barablu Mobile Scandinavia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "13", "Ventelo Sverige"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "14", "TDC Mobil"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "15", "Wireless Maingate Nordic"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "16", "42IT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "17", "Gotanet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "20", "Wireless Maingate Message Services"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "21", "MobiSir"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "24", "Sweden 2G"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "25", "DigiTelMobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "26", "Beepsend"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SE", 240, "33", "Mobile Arts AB"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "01", "Swisscom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "02", "Sunrise"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "03", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "05", "Togewanet AG (Comfone)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "06", "SBB-CFF-FFS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "07", "IN&Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "08", "Tele2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "50", "3G Mobile AG"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("CH", 228, "51", "BebbiCell AG"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SY", 417, "01", "Syriatel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("SY", 417, "02", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "01", "FarEasTone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "05", "APTG"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "06", "Tuntex"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "11", "Chunghwa LDM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "88", "KG Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "89", "VIBO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "92", "Chungwa"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "93", "MobiTai"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "97", "Taiwan Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TW", 466, "99", "TransAsia"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TJ", 436, "01", "Tcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TJ", 436, "02", "Tcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TJ", 436, "03", "MLT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TJ", 436, "04", "Babilon-M"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TJ", 436, "05", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TJ", 436, "12", "Tcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "02", "tiGO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "03", "Zantel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "04", "Vodacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "05", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "06", "Sasatel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "07", "TTCL Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "08", "Benson Online (BOL)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "09", "Hits"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TZ", 640, "11", "SmileCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "00", "my CAT 3G+"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "01", "AIS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "02", "CAT CDMA"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "10", "WCS IQ"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "15", "TOT 3G"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "18", "dtac"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "23", "AIS GSM 1800"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TH", 520, "99", "True Move"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TG", 615, "01", "Togo Cell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TG", 615, "03", "Moov"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TO", 539, "01", "Tonga Communications Corporation"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TO", 539, "43", "Shoreline Communication"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TO", 539, "88", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TT", 374, "12", "bmobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TT", 374, "130", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TN", 605, "01", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TN", 605, "02", "Tunicell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TN", 605, "03", "Tunisiana"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TR", 286, "01", "Turkcell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TR", 286, "02", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TR", 286, "03", "Avea"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TR", 286, "04", "Aycell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TM", 438, "01", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TM", 438, "02", "TM-Cell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TC", 376, "350", "C&W"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TC", 376, "352", "Islandcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TC", 338, "05", "Digicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("TV", 553, "01", "TTC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UG", 641, "01", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UG", 641, "10", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UG", 641, "11", "UTL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UG", 641, "14", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UG", 641, "22", "Warid Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "01", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "02", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "03", "Kyivstar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "04", "IT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "05", "Golden Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "06", "life:)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "07", "Ukrtelecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "21", "PEOPLEnet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UA", 255, "23", "CDMA Ukraine"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AE", 424, "02", "Etisalat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("AE", 424, "03", "du"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "00", "BT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "01", "Vectone Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "02", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "03", "Airtel-Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "04", "FMS Solutions Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "05", "COLT Mobile Telecommunications Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "06", "Internet Computer Bureau Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "07", "Cable & Wireless UK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "08", "OnePhone (UK) Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "09", "Tismi BV"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "10", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "11", "O2"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "12", "Railtrack"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "13", "Railtrack"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "14", "Hay Systems Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "15", "Vodafone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "16", "Talk Talk"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "17", "FleXtel Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "18", "Cloud9"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "19", "Private Mobile Networks PMN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "20", "Three"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "22", "RoutoMessaging"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "24", "Greenfone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "25", "Truphone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "30", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "31", "Virgin"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "32", "Virgin"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "33", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "34", "Orange"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "35", "JSC Ingenium (UK) Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "36", "Cable and Wireless Isle of Man Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "37", "Synectiv Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "50", "JT-Wave"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "55", "Cable & Wireless Guernsey / Sure Mobile (Jersey)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "58", "Manx Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "76", "BT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 234, "78", "Airwave"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "00", "Mundio Mobile Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "01", "Everything Everywhere Limited (TM)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "02", "Everything Everywhere Limited (TM)"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "77", "BT"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "91", "Vodafone United Kingdom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "92", "Cable & Wireless UK"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "94", "Hutchison 3G UK Ltd"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UK", 235, "95", "Network Rail Infrastructure Limited"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "053", "Virgin Mobile US"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "054", "Alltel US"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "066", "U.S. Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "004", "Verizon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "005", "Verizon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "010", "MCI"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "012", "Verizon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "013", "MobileTel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "014", "Testing"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "016", "Cricket Communications"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "017", "North Sight Communications Inc."); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "020", "Union Telephone Company"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "026", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "030", "Centennial"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "034", "Airpeak"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "040", "Concho"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "046", "SIMMETRY"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "060", "Consolidated Telcom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "070", "Highland Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "080", "Corr"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "090", "AT&T"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "100", "Plateau Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "110", "PTI Pacifica"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "120", "Sprint"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "150", "AT&T"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "160", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "170", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "180", "West Central"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "190", "Dutch Harbor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "200", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "210", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "220", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "230", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "240", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "250", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "260", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "270", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "280", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "290", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "300", "iSmart Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "310", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "311", "Farmers Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "320", "Cellular One"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "330", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "340", "Westlink"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "350", "Carolina Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "380", "AT&T"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "390", "Cellular One of East Texas"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "400", "i CAN_GSM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "410", "AT&T"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "420", "Cincinnati Bell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "430", "Alaska Digitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "440", "Cellular One"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "450", "Viaero"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "460", "Simmetry"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "470", "nTelos"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "480", "Choice Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "490", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "500", "Alltel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "510", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "520", "VeriSign"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "530", "West Virginia Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "540", "Oklahoma Western"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "560", "AT&T"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "570", "Cellular One"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "580", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "590", "Alltel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "610", "Epic Touch"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "620", "Coleman County Telecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "630", "AmeriLink PCS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "640", "Airadigm"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "650", "Jasper"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "660", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "670", "Northstar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "680", "AT&T"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "690", "Conestoga"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "730", "SeaMobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "740", "Convey"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "760", "Panhandle"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "770", "i wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "780", "Airlink PCS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "790", "PinPoint"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "800", "T-Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "830", "Caprock"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "840", "telna Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "850", "Aeris"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "870", "PACE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "880", "Advantage"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "890", "Unicel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "900", "Mid-Rivers Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "910", "First Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "940", "Iris Wireless LLC"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "950", "XIT Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "960", "Plateau Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "970", "Globalstar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "980", "AT&T Mobility"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 310, "990", "AT&T Mobility"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "000", "Mid-Tex Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "010", "Chariton Valley"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "020", "Missouri RSA 5 Partnership"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "030", "Indigo Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "040", "Commnet Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "050", "Wikes Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "060", "Farmers Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "070", "Easterbrooke"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "080", "Pine Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "090", "Long Lines Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "100", "High Plains Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "110", "High Plains Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "120", "Choice Phone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "130", "Cell One Amarillo"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "140", "Sprocket"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "150", "Wilkes Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "160", "Endless Mountains Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "170", "PetroCom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "180", "Cingular Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "190", "Cellular Properties"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "210", "Emery Telcom Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "220", "U.S. Cellular"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "230", "C Spire Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "330", "Bug Tussel Wireless"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "480", "Verizon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 311, "660", "metroPCS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 316, "010", "Nextel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("US", 316, "011", "Southern Communications Services"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UY", 748, "01", "Antel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UY", 748, "07", "Movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UY", 748, "10", "Claro UY"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UZ", 434, "01", "Buztel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UZ", 434, "02", "Uzmacom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UZ", 434, "04", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UZ", 434, "05", "Ucell"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UZ", 434, "06", "Perfectum Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("UZ", 434, "07", "MTS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VU", 541, "01", "SMILE"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VE", 734, "01", "Digitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VE", 734, "02", "Digitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VE", 734, "03", "Digitel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VE", 734, "04", "movistar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VE", 734, "06", "Movilnet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "01", "MobiFone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "02", "Vinaphone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "03", "S-Fone"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "04", "Viettel Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "05", "Vietnamobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "06", "EVNTelecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "08", "3G EVNTelecom"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("VN", 452, "07", "Beeline VN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("YE", 421, "01", "SabaFon"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("YE", 421, "02", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("YE", 421, "03", "Yemen Mobile"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("YE", 421, "04", "HiTS-UNITEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZM", 645, "01", "Airtel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZM", 645, "02", "MTN"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZM", 645, "03", "ZAMTEL"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZW", 648, "01", "Net*One"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZW", 648, "03", "Telecel"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("ZW", 648, "04", "Econet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "01", "ICO"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "02", "Sense Communications International"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "03", "Iridium"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "04", "Globalstar"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "05", "Thuraya RMSS Network"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "06", "Thuraya Satellite Telecommunications Company"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "07", "Ellipso"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "08", ""); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "09", "Tele1 Europe"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "10", "ACeS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "11", "Inmarsat"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "12", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "13", "GSM.AQ"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "14", "AeroMobile AS"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "15", "OnAir Switzerland Sarl"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "16", "Jasper Systems"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "17", "Navitas"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "18", "Cellular @Sea"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "19", "Vodafone Malta Maritime"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "21", "Seanet"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "23", "Beeline"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "24", "iNum"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "26", "TIM"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "29", "Telenor"); -insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values ("__", 901, "32", "Sky High"); -COMMIT; diff --git a/src/desc_at.c b/src/desc_at.c old mode 100755 new mode 100644 diff --git a/src/s_call.c b/src/s_call.c old mode 100755 new mode 100644 index 7eb9a77..dc7e762 --- a/src/s_call.c +++ b/src/s_call.c @@ -29,36 +29,56 @@ #include #include #include -#include +#include #include #include +#include #include #include "s_common.h" #include "s_call.h" +static int __call_convert_handle_to_call_id(CoreObject *o, int handle) +{ + CallObject *co = NULL; + co = tcore_call_object_find_by_handle(o, handle); + + if (co == NULL) { + err("CallObject with handle %d not found", handle); + return -1; + } + return tcore_call_object_get_id(co); +} + static enum tcore_call_status _call_status(unsigned int status) { switch (status) { - case 0: - return TCORE_CALL_STATUS_ACTIVE; - case 1: - return TCORE_CALL_STATUS_HELD; - case 2: - return TCORE_CALL_STATUS_DIALING; - case 3: - return TCORE_CALL_STATUS_ALERT; - case 4: - return TCORE_CALL_STATUS_INCOMING; - case 5: - return TCORE_CALL_STATUS_WAITING; - case 6: - return TCORE_CALL_STATUS_DIALING; //connecting not exist. set to dialing - case 7: - return TCORE_CALL_STATUS_IDLE; - default: - return TCORE_CALL_STATUS_IDLE; - break; + case 0: + return TCORE_CALL_STATUS_ACTIVE; + + case 1: + return TCORE_CALL_STATUS_HELD; + + case 2: + return TCORE_CALL_STATUS_DIALING; + + case 3: + return TCORE_CALL_STATUS_ALERT; + + case 4: + return TCORE_CALL_STATUS_INCOMING; + + case 5: + return TCORE_CALL_STATUS_WAITING; + + case 6: + return TCORE_CALL_STATUS_DIALING; /* connecting not exist. set to dialing */ + + case 7: + return TCORE_CALL_STATUS_IDLE; + + default: + return TCORE_CALL_STATUS_IDLE; } return TCORE_CALL_STATUS_IDLE; @@ -69,10 +89,12 @@ static enum tcore_call_type _call_type(int type) switch (type) { case 0: return TCORE_CALL_TYPE_VOICE; + case 1: return TCORE_CALL_TYPE_VIDEO; + default: - break; + break; } err("invalid call type, returing default call type as voice"); @@ -82,7 +104,7 @@ static enum tcore_call_type _call_type(int type) static void _call_branch_by_status(CoreObject *co, CallObject *call_obj, enum tcore_call_status call_state) { - guint call_id; + guint call_handle; enum tcore_call_type call_type; enum tcore_call_status state; TcorePlugin *p = tcore_object_ref_plugin(co); @@ -96,7 +118,7 @@ static void _call_branch_by_status(CoreObject *co, } call_type = tcore_call_object_get_type(call_obj); - call_id = tcore_call_object_get_id(call_obj); + call_handle = tcore_call_object_get_handle(call_obj); /* Update Call status */ tcore_call_object_set_status(call_obj, call_state); @@ -104,59 +126,63 @@ static void _call_branch_by_status(CoreObject *co, if (call_type == TCORE_CALL_TYPE_VOICE) { /* Voice call notification */ switch (call_state) { case TCORE_CALL_STATUS_ACTIVE: { - struct tnoti_call_status_active data = {0,}; + struct tnoti_call_status_active data = {0, }; data.type = call_type; - data.id = call_id; + data.handle = call_handle; /* Send notification */ - tcore_server_send_notification (tcore_plugin_ref_server(p), co, + tcore_server_send_notification(tcore_plugin_ref_server(p), co, TNOTI_CALL_STATUS_ACTIVE, sizeof(struct tnoti_call_status_active), &data); - } - break; + } + break; + case TCORE_CALL_STATUS_HELD: { - struct tnoti_call_status_held data = {0,}; + struct tnoti_call_status_held data = {0, }; data.type = call_type; - data.id = call_id; + data.handle = call_handle; /* Send notification */ - tcore_server_send_notification (tcore_plugin_ref_server(p), co, + tcore_server_send_notification(tcore_plugin_ref_server(p), co, TNOTI_CALL_STATUS_HELD, sizeof(struct tnoti_call_status_held), &data); - } - break; + } + break; + case TCORE_CALL_STATUS_DIALING: { - struct tnoti_call_status_dialing data = {0,}; + struct tnoti_call_status_dialing data = {0, }; data.type = call_type; - data.id = call_id; + data.handle = call_handle; /* Send notification */ - tcore_server_send_notification (tcore_plugin_ref_server(p), co, + tcore_server_send_notification(tcore_plugin_ref_server(p), co, TNOTI_CALL_STATUS_DIALING, sizeof(struct tnoti_call_status_dialing), &data); - } - break; + } + break; + case TCORE_CALL_STATUS_ALERT: { - struct tnoti_call_status_alert data = {0,}; + struct tnoti_call_status_alert data = {0, }; data.type = call_type; - data.id = call_id; + data.handle = call_handle; /* Send notification */ - tcore_server_send_notification (tcore_plugin_ref_server(p), co, + tcore_server_send_notification(tcore_plugin_ref_server(p), co, TNOTI_CALL_STATUS_ALERT, sizeof(struct tnoti_call_status_alert), &data); - } - break; + } + break; + case TCORE_CALL_STATUS_INCOMING: case TCORE_CALL_STATUS_WAITING: { - struct tnoti_call_status_incoming data = {0,}; + struct tnoti_call_status_incoming data = {0, }; data.type = call_type; - data.id = call_id; + data.handle = call_handle; tcore_call_object_get_number(call_obj, data.cli.number); data.cli.mode = tcore_call_object_get_cli_mode(call_obj); data.cna.mode = tcore_call_object_get_cna_mode(call_obj); @@ -165,31 +191,34 @@ static void _call_branch_by_status(CoreObject *co, data.active_line = tcore_call_object_get_active_line(call_obj); /* Send notification */ - tcore_server_send_notification (tcore_plugin_ref_server(p), co, + tcore_server_send_notification(tcore_plugin_ref_server(p), co, TNOTI_CALL_STATUS_INCOMING, sizeof(struct tnoti_call_status_incoming), &data); - } - break; + } + break; + case TCORE_CALL_STATUS_IDLE: { struct tnoti_call_status_idle idle; - idle.id = call_id; + idle.handle = call_handle; /* TODO - get proper call end cause. */ idle.cause = CALL_END_CAUSE_NONE; idle.type = TCORE_CALL_TYPE_VOICE; /* Send notification */ - tcore_server_send_notification (tcore_plugin_ref_server(p), co, + tcore_server_send_notification(tcore_plugin_ref_server(p), co, TNOTI_CALL_STATUS_IDLE, sizeof(struct tnoti_call_status_idle), &idle); /* Free Call object */ tcore_call_object_free(co, call_obj); - } - break; + } + break; + default: - /*Do nothing*/ + /* Do nothing */ dbg("Default case executed."); + break; } } else { err("Unknown Call type: [%d]", call_type); @@ -199,7 +228,7 @@ static void _call_branch_by_status(CoreObject *co, static void _handle_call_get_call_list(CoreObject *co, gboolean flag, void *data) { - gint call_id; + gint call_handle; gint direction; gint mode; enum tcore_call_status state; @@ -229,7 +258,7 @@ static void _handle_call_get_call_list(CoreObject *co, err("Invalid call_id"); continue; } - call_id = atoi(resp); + call_handle = atoi(resp); resp = g_slist_nth_data(tokens, 1); if (NULL == resp) { @@ -260,7 +289,7 @@ static void _handle_call_get_call_list(CoreObject *co, mpty = atoi(resp); resp = g_slist_nth_data(tokens, 5); - if (NULL == resp) { + if (NULL == resp) { err("Number is NULL"); } else { /* Strike off double quotes */ @@ -275,25 +304,27 @@ static void _handle_call_get_call_list(CoreObject *co, /* Check if number is International or National */ ton = ((num_type) >> 4) & 0x07; - if (ton == 1 && num[0] != '+') { - /* International number */ - number[0] = '+'; - memcpy(&number[1], num, strlen(num)); - } else { - memcpy(number, num, strlen(num)); + if (num) { + if (ton == 1 && num[0] != '+') { + /* International number */ + number[0] = '+'; + memcpy(&number[1], num, strlen(num)); + } else { + memcpy(number, num, strlen(num)); + } } } g_free(num); } - dbg("Call ID: [%d] Direction: [%s] Call Type: [%d] " \ + dbg("Call Handle: [%d] Direction: [%s] Call Type: [%d] " \ "Multi-party: [%s] Number: [%s] Type-of-Number: [%d] State: [%d]", \ - call_id, (direction ? "Outgoing" : "Incoming"), + call_handle, (direction ? "Outgoing" : "Incoming"), mode, (mpty ? "YES" : "NO"), number, ton, state); - call_obj = tcore_call_object_find_by_id(co, call_id); + call_obj = tcore_call_object_find_by_handle(co, call_handle); if (NULL == call_obj) { - call_obj = tcore_call_object_new(co, call_id); + call_obj = tcore_call_object_new(co); if (NULL == call_obj) { err("Unable to create call object"); continue; @@ -362,7 +393,7 @@ static void _on_response_call_get_call_list(TcorePending *p, static int _call_get_call_list(CoreObject *co, gboolean flag) { - gboolean*data = NULL; + gboolean *data = NULL; guint ret = -1; dbg("Entry"); @@ -371,12 +402,17 @@ static int _call_get_call_list(CoreObject *co, gboolean flag) return ret; } /* Response callback data */ - data = g_try_malloc(sizeof (flag)); + data = g_try_malloc(sizeof(flag)); + if (data == NULL) { + err("Memory allocation failed!!"); + return ret; + } + *data = flag; /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(co, - "AT+CLCC","+CLCC", + "AT+CLCC", "+CLCC", TCORE_AT_MULTILINE, NULL, _on_response_call_get_call_list, data, @@ -386,7 +422,7 @@ static int _call_get_call_list(CoreObject *co, gboolean flag) } -// NOTIFICATION +/* NOTIFICATION */ static void __on_notification_call_incoming(CoreObject *co, guint call_id, const void *data) { @@ -421,11 +457,12 @@ static void __on_notification_call_incoming(CoreObject *co, } /* Create Call object */ - call_obj = tcore_call_object_new(co, (guint)call_id); + call_obj = tcore_call_object_new(co); if (NULL == call_obj) { err(" Unable to create call object"); return; } + tcore_call_object_set_id(call_obj, call_id); lines = (GSList *)data; if (lines == NULL) { @@ -460,16 +497,17 @@ static void __on_notification_call_incoming(CoreObject *co, mpty = atoi(resp); resp = g_slist_nth_data(tokens, 5); - if (NULL == resp) { + if (NULL == resp) { err("Number is NULL"); } else { /* Strike off double quotes */ num = tcore_at_tok_extract(resp); - dbg("Number: [%s]", num); - - memcpy(number, num, strlen(num)); - number[strlen(num)] = '\0'; - g_free(num); + if (num) { + dbg("Number: [%s]", num); + memcpy(number, num, strlen(num)); + number[strlen(num)] = '\0'; + g_free(num); + } } dbg("Call ID: [%d] Direction: [%s] Call Type: [%d] " \ @@ -479,7 +517,7 @@ static void __on_notification_call_incoming(CoreObject *co, /* Update Call Object */ tcore_call_object_set_type(call_obj, mode); - tcore_call_object_set_direction(call_obj, direction); + tcore_call_object_set_direction(call_obj, TCORE_CALL_DIRECTION_INCOMING); tcore_call_object_set_multiparty_state(call_obj, mpty); if (number[0] != '\0') tcore_call_object_set_cli_info(call_obj, @@ -502,9 +540,52 @@ static void __on_notification_call_status(CoreObject *co, { CallObject *call_obj = NULL; + dbg("call_state = %d", call_state); + switch (call_state) { case TCORE_CALL_STATUS_ACTIVE: - case TCORE_CALL_STATUS_HELD: + { + int prev_status; + + dbg("TCORE_CALL_STATUS_ACTIVE"); + call_obj = tcore_call_object_find_by_id(co, call_id); + if (call_obj == NULL) { + err("Unable to find Call Object - Call ID: [%d]", call_id); + return; + } + /* + * Active / Held status notification will be handled in _call_get_call_list(). + * Because of timing issue, we should not notifity this event before updating call info. + * One exception is that we will send this event when active status is receviced during dialing or incoming. + */ + prev_status = tcore_call_object_get_status(call_obj); + if ((prev_status == TCORE_CALL_STATUS_DIALING) + || (prev_status == TCORE_CALL_STATUS_ALERT) + || (prev_status == TCORE_CALL_STATUS_INCOMING) + || (prev_status == TCORE_CALL_STATUS_WAITING)) { + _call_branch_by_status(co, call_obj, call_state); + } + } + break; + case TCORE_CALL_STATUS_HELD:{ + dbg("TCORE_CALL_STATUS_HELD"); + call_obj = tcore_call_object_find_by_id(co, call_id); + if (!call_obj) { + call_obj = tcore_call_object_new(co); + if (!call_obj) { + err("Unable to create Call Object"); + return; + } + tcore_call_object_set_id(call_obj, call_id); + } + + /* + * Make request to get current Call list. + * Then send notification to application + */ + _call_get_call_list(co, TRUE); + } + break; case TCORE_CALL_STATUS_ALERT: case TCORE_CALL_STATUS_IDLE: { call_obj = tcore_call_object_find_by_id(co, call_id); @@ -521,11 +602,12 @@ static void __on_notification_call_status(CoreObject *co, case TCORE_CALL_STATUS_DIALING: { call_obj = tcore_call_object_find_by_id(co, call_id); if (!call_obj) { - call_obj = tcore_call_object_new(co, call_id); + call_obj = tcore_call_object_new(co); if (!call_obj) { err("Unable to create Call Object"); return; } + tcore_call_object_set_id(call_obj, call_id); } /* @@ -608,7 +690,7 @@ static gboolean on_notification_call_cssu_info(CoreObject *co, gchar *cmd = 0; gint local_index = 0; gint code2 = -1; - gchar number[MAX_CALL_NUMBER_LEN + 1] = {'\0',}; + gchar number[MAX_CALL_NUMBER_LEN + 1] = {'\0', }; TcorePlugin *p = NULL; dbg("Entry"); @@ -638,9 +720,11 @@ static gboolean on_notification_call_cssu_info(CoreObject *co, if ((resp = g_slist_nth_data(tokens, 2))) { resp = tcore_at_tok_extract((const gchar *)resp); - memcpy(number, resp, strlen(resp)); - number[strlen(resp)] = '\0';; - g_free(resp); + if (resp) { + memcpy(number, resp, strlen(resp)); + number[strlen(resp)] = '\0';; + g_free(resp); + } } dbg("+CSSU: : %d : %d : %s ", code2, local_index, number); @@ -752,8 +836,8 @@ static void on_response_call_answer(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_answer*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_answer *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_ANSWER, sizeof(struct tresp_call_answer), &resp); @@ -791,8 +875,8 @@ static void on_response_call_release(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_end*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_end *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; resp.type = req_buf->type; tcore_user_request_send_response(ur, TRESP_CALL_END, @@ -831,8 +915,8 @@ static void on_response_call_hold(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_hold*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_hold *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_HOLD, sizeof(struct tresp_call_hold), &resp); @@ -848,6 +932,7 @@ static void on_response_call_active(TcorePending *p, struct treq_call_active *req_buf = NULL; const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; + CoreObject *core_obj = NULL; dbg("Entry"); @@ -870,14 +955,18 @@ static void on_response_call_active(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_active*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_active *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_ACTIVE, sizeof(struct tresp_call_active), &resp); } else { err("ur is NULL"); } + + core_obj = tcore_pending_ref_core_object(p); + _call_get_call_list(core_obj, TRUE); + } static void on_response_call_swap(TcorePending *p, @@ -909,8 +998,8 @@ static void on_response_call_swap(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_swap*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_swap *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_SWAP, sizeof(struct tresp_call_swap), &resp); @@ -926,6 +1015,7 @@ static void on_response_call_join(TcorePending *p, struct treq_call_join *req_buf = NULL; const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; + CoreObject *core_obj = NULL; dbg("Entry"); @@ -948,14 +1038,18 @@ static void on_response_call_join(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_join*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_join *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_JOIN, sizeof(struct tresp_call_join), &resp); } else { err("ur is NULL"); } + + core_obj = tcore_pending_ref_core_object(p); + _call_get_call_list(core_obj, TRUE); + } static void on_response_call_split(TcorePending *p, @@ -987,14 +1081,15 @@ static void on_response_call_split(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_split*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_split *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_SPLIT, sizeof(struct tresp_call_split), &resp); } else { err("ur is NULL"); } + } static void on_response_call_deflect(TcorePending *p, @@ -1026,8 +1121,8 @@ static void on_response_call_deflect(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_deflect*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_deflect *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_DEFLECT, sizeof(struct tresp_call_deflect), &resp); @@ -1065,8 +1160,8 @@ static void on_response_call_transfer(TcorePending *p, ur = tcore_pending_ref_user_request(p); if (ur) { - req_buf = (struct treq_call_transfer*) tcore_user_request_ref_data( ur, 0); - resp.id = req_buf->id; + req_buf = (struct treq_call_transfer *)tcore_user_request_ref_data(ur, 0); + resp.handle = req_buf->handle; tcore_user_request_send_response(ur, TRESP_CALL_TRANSFER, sizeof(struct tresp_call_transfer), &resp); @@ -1076,7 +1171,7 @@ static void on_response_call_transfer(TcorePending *p, } /* Request */ -static TReturn s_call_outgoing( CoreObject *o, UserRequest *ur) +static TReturn s_call_outgoing(CoreObject *o, UserRequest *ur) { gchar *at_cmd; const gchar *clir; @@ -1086,7 +1181,7 @@ static TReturn s_call_outgoing( CoreObject *o, UserRequest *ur) dbg("Entry"); - dial_info = (struct treq_call_dial*)tcore_user_request_ref_data( ur, 0); + dial_info = (struct treq_call_dial *)tcore_user_request_ref_data(ur, 0); if (dial_info->type == CALL_TYPE_VIDEO) { err("Video call is not supported in atmodem"); @@ -1124,7 +1219,7 @@ static TReturn s_call_outgoing( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_answer( CoreObject *o, UserRequest *ur) +static TReturn s_call_answer(CoreObject *o, UserRequest *ur) { gchar *at_cmd; struct treq_call_answer *ans_info = NULL; @@ -1132,7 +1227,7 @@ static TReturn s_call_answer( CoreObject *o, UserRequest *ur) dbg("Entry"); - ans_info = (struct treq_call_answer*)tcore_user_request_ref_data( ur, 0); + ans_info = (struct treq_call_answer *)tcore_user_request_ref_data(ur, 0); if (ans_info->type == CALL_ANSWER_TYPE_ACCEPT) { /* AT-Command */ @@ -1167,22 +1262,25 @@ static TReturn s_call_answer( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_release( CoreObject *o, UserRequest *ur) +static TReturn s_call_release(CoreObject *o, UserRequest *ur) { gchar *at_cmd; struct treq_call_end *end_info = NULL; TReturn ret = TCORE_RETURN_FAILURE; + int call_id; dbg("Entry"); - end_info = (struct treq_call_end*)tcore_user_request_ref_data( ur, 0); + end_info = (struct treq_call_end *)tcore_user_request_ref_data(ur, 0); + + call_id = __call_convert_handle_to_call_id(o, end_info->handle); if (end_info->type == CALL_END_TYPE_ALL) { /* AT-Command */ - at_cmd = g_strdup_printf("%s", "AT+CHLD=8"); + at_cmd = g_strdup_printf("%s", "ATH"); } else if (end_info->type == CALL_END_TYPE_DEFAULT) { /* AT-Command */ - at_cmd = g_strdup_printf("%s%d", "AT+CHLD=1",end_info->id); + at_cmd = g_strdup_printf("%s%d", "AT+CHLD=1", call_id); } else if (end_info->type == CALL_END_TYPE_ACTIVE_ALL) { /* AT-Command */ at_cmd = g_strdup_printf("%s", "AT+CHLD=1"); @@ -1210,7 +1308,7 @@ static TReturn s_call_release( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_hold( CoreObject *o, UserRequest *ur) +static TReturn s_call_hold(CoreObject *o, UserRequest *ur) { TReturn ret = TCORE_RETURN_FAILURE; gchar *at_cmd; @@ -1233,7 +1331,7 @@ static TReturn s_call_hold( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_active( CoreObject *o, UserRequest *ur) +static TReturn s_call_active(CoreObject *o, UserRequest *ur) { TReturn ret = TCORE_RETURN_FAILURE; gchar *at_cmd; @@ -1256,7 +1354,7 @@ static TReturn s_call_active( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_swap( CoreObject *o, UserRequest *ur) +static TReturn s_call_swap(CoreObject *o, UserRequest *ur) { TReturn ret = TCORE_RETURN_FAILURE; gchar *at_cmd; @@ -1279,7 +1377,7 @@ static TReturn s_call_swap( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_join( CoreObject *o, UserRequest *ur) +static TReturn s_call_join(CoreObject *o, UserRequest *ur) { TReturn ret = TCORE_RETURN_FAILURE; gchar *at_cmd; @@ -1302,17 +1400,19 @@ static TReturn s_call_join( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_split( CoreObject *o, UserRequest *ur) +static TReturn s_call_split(CoreObject *o, UserRequest *ur) { gchar *at_cmd; struct treq_call_split *split_info = NULL; TReturn ret = TCORE_RETURN_FAILURE; + int call_id; dbg("Entry"); - split_info = (struct treq_call_split*)tcore_user_request_ref_data( ur, 0); + split_info = (struct treq_call_split *)tcore_user_request_ref_data(ur, 0); + call_id = __call_convert_handle_to_call_id(o, split_info->handle); - at_cmd = g_strdup_printf("%s%d", "AT+CHLD=2", split_info->id); + at_cmd = g_strdup_printf("%s%d", "AT+CHLD=2", call_id); /* AT-Command */ dbg(" at command : %s", at_cmd); @@ -1330,7 +1430,7 @@ static TReturn s_call_split( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_deflect( CoreObject *o, UserRequest *ur) +static TReturn s_call_deflect(CoreObject *o, UserRequest *ur) { gchar *at_cmd; struct treq_call_deflect *deflect_info = NULL; @@ -1338,7 +1438,7 @@ static TReturn s_call_deflect( CoreObject *o, UserRequest *ur) dbg("Entry"); - deflect_info = (struct treq_call_deflect*)tcore_user_request_ref_data( ur, 0); + deflect_info = (struct treq_call_deflect *)tcore_user_request_ref_data(ur, 0); at_cmd = g_strdup_printf("AT+CTFR=%s", deflect_info->number); dbg("at command : %s", at_cmd); @@ -1356,7 +1456,7 @@ static TReturn s_call_deflect( CoreObject *o, UserRequest *ur) return ret; } -static TReturn s_call_transfer( CoreObject *o, UserRequest *ur) +static TReturn s_call_transfer(CoreObject *o, UserRequest *ur) { TReturn ret = TCORE_RETURN_FAILURE; gchar *at_cmd; @@ -1379,6 +1479,32 @@ static TReturn s_call_transfer( CoreObject *o, UserRequest *ur) return ret; } +static TReturn s_get_preferred_voice_subscription(CoreObject *o, UserRequest *ur) +{ + struct tresp_call_get_preferred_voice_subscription resp_data = {0, }; + TReturn ret = TCORE_RETURN_FAILURE; + Server *server; + Storage *strg = NULL; + + dbg("Entry"); + + server = tcore_plugin_ref_server(tcore_object_ref_plugin(o)); + strg = tcore_server_find_storage(server, "vconf"); + + /* VCONFKEY is aligned to resp_data->preferred_subs type */ + resp_data.preferred_subs = tcore_storage_get_int(strg, STORAGE_KEY_TELEPHONY_PREFERRED_VOICE_SUBSCRIPTION); + dbg("Preferred Subscription: [%d]", resp_data.preferred_subs); + + resp_data.err = CALL_ERROR_NONE; + /* Send Response */ + ret = tcore_user_request_send_response(ur, + TRESP_CALL_GET_PREFERRED_VOICE_SUBSCRIPTION, + sizeof(struct tresp_call_get_preferred_voice_subscription), &resp_data); + + dbg("ret: [0x%x]", ret); + return ret; +} + /* Call Operations */ static struct tcore_call_operations call_ops = { .dial = s_call_outgoing, @@ -1400,7 +1526,7 @@ static struct tcore_call_operations call_ops = { .set_sound_mute_status = NULL, .get_sound_mute_status = NULL, .set_preferred_voice_subscription = NULL, - .get_preferred_voice_subscription = NULL, + .get_preferred_voice_subscription = s_get_preferred_voice_subscription, }; gboolean s_call_init(TcorePlugin *p, TcoreHal *h) @@ -1413,13 +1539,13 @@ gboolean s_call_init(TcorePlugin *p, TcoreHal *h) if (!o) return FALSE; - tcore_object_add_callback( o, "+SCLCC", on_notification_call_status, NULL); - tcore_object_add_callback( o, "+CSSU:", on_notification_call_cssu_info, NULL); + tcore_object_add_callback(o, "+SCLCC", on_notification_call_status, NULL); + tcore_object_add_callback(o, "+CSSU:", on_notification_call_cssu_info, NULL); return TRUE; } -void s_call_exit( TcorePlugin *p) +void s_call_exit(TcorePlugin *p) { CoreObject *o; diff --git a/src/s_common.c b/src/s_common.c old mode 100755 new mode 100644 index 6f74763..00a2ece --- a/src/s_common.c +++ b/src/s_common.c @@ -32,6 +32,8 @@ #undef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define TAB_SPACE " " + #define bitsize(type) (sizeof(type) * 8) #define copymask(type) ((0xffffffff) >> (32 - bitsize(type))) @@ -66,7 +68,7 @@ char _util_unpackb(const char *src, int pos, int len) src++; len -= 8 - pos; - if (len > 0) result = (result << len) | (*src >> (8 - len)); // if any bits left + if (len > 0) result = (result << len) | (*src >> (8 - len)); /* if any bits left */ } return result; @@ -76,13 +78,12 @@ char _util_convert_byte_hexChar(char val) { char hex_char; - if (val <= 9) { + if (val <= 9) hex_char = (char) (val + '0'); - } else if (val >= 10 && val <= 15) { + else if (val >= 10 && val <= 15) hex_char = (char) (val - 10 + 'A'); - } else { + else hex_char = '0'; -} return (hex_char); } @@ -93,7 +94,7 @@ gboolean util_byte_to_hex(const char *byte_pdu, char *hex_pdu, int num_bytes) char nibble; int buf_pos = 0; - for (i = 0; i < num_bytes * 2; i++) { + for (i = 0; i < num_bytes * 2; i++) { nibble = _util_unpackb(byte_pdu, buf_pos, 4); buf_pos += 4; hex_pdu[i] = _util_convert_byte_hexChar(nibble); @@ -117,18 +118,17 @@ void util_hex_dump(char *pad, int size, const void *data) p = (unsigned const char *)data; snprintf(buf, 255, "%s%04X: ", pad, 0); - for (i = 0; imsg_auto_id_current == 0) { gd->msg_auto_id_current = gd->msg_auto_id_start; dbg("pending_auto_id_current is 0, reset to start"); - } - else if (gd->msg_auto_id_current >= gd->msg_auto_id_end) { + } else if (gd->msg_auto_id_current >= gd->msg_auto_id_end) { gd->msg_auto_id_current = gd->msg_auto_id_start; dbg("pending_auto_id_current is over, reset to start"); - } - else { + } else { gd->msg_auto_id_current++; } @@ -240,22 +238,21 @@ UserRequest *util_pop_waiting_job(GQueue *queue, unsigned int id) unsigned char util_hexCharToInt(char c) { - if (c >= '0' && c <= '9') - return (c - '0'); - else if (c >= 'A' && c <= 'F') - return (c - 'A' + 10); - else if (c >= 'a' && c <= 'f') - return (c - 'a' + 10); - else - { - dbg("invalid charater!!"); - return -1; - } + if (c >= '0' && c <= '9') { + return (c - '0'); + } else if (c >= 'A' && c <= 'F') { + return (c - 'A' + 10); + } else if (c >= 'a' && c <= 'f') { + return (c - 'a' + 10); + } else { + dbg("invalid charater!!"); + return -1; + } } -char * util_hexStringToBytes(char * s) +char *util_hexStringToBytes(char *s) { - char * ret; + char *ret; int i; int sz; @@ -264,12 +261,16 @@ char * util_hexStringToBytes(char * s) sz = strlen(s); - ret = calloc((sz/2)+1, 1); + ret = g_try_malloc0((sz / 2) + 1); + if (ret == NULL) { + err("Memory allocation failed!!"); + return NULL; + } dbg("Convert String to Binary!!"); for (i = 0; i < sz; i += 2) { - ret[i / 2] = (char) ((util_hexCharToInt(s[i]) << 4) | util_hexCharToInt(s[i + 1])); + ret[i / 2] = (char)((util_hexCharToInt(s[i]) << 4) | util_hexCharToInt(s[i + 1])); dbg("[%02x]", ret[i/2]); } @@ -279,7 +280,6 @@ char * util_hexStringToBytes(char * s) void on_send_at_request(TcorePending *p, gboolean send_status, void *user_data) { - dbg("Send - [%s]", - (send_status == TRUE ? "OK" : "NOK")); + dbg("Send - [%s]", (send_status == TRUE ? "OK" : "NOK")); } diff --git a/src/s_modem.c b/src/s_modem.c old mode 100755 new mode 100644 index d3a9ae0..7c54491 --- a/src/s_modem.c +++ b/src/s_modem.c @@ -53,14 +53,14 @@ static gboolean on_sys_event_modem_power(CoreObject *co_modem, const void *event struct tnoti_modem_power modem_power; enum cp_state *state; - state = (enum cp_state*)event_info; + state = (enum cp_state *)event_info; dbg("state : (0x%x)", *state); - if ( *state == CP_STATE_OFFLINE || *state == CP_STATE_CRASH_RESET ) { + if (*state == CP_STATE_OFFLINE || *state == CP_STATE_CRASH_RESET) { tcore_modem_set_powered(co_modem, FALSE); - if ( *state == CP_STATE_OFFLINE ) + if (*state == CP_STATE_OFFLINE) modem_power.state = MODEM_STATE_OFFLINE; else modem_power.state = MODEM_STATE_ERROR; @@ -164,10 +164,10 @@ static void on_response_poweron(TcorePending *p, { const struct tcore_at_response *at_resp = data; - if(at_resp && at_resp->success > 0) { + if (at_resp && at_resp->success > 0) { dbg("RESPONSE OK"); on_event_modem_power(tcore_pending_ref_core_object(p), NULL, NULL); - } else{ + } else { dbg("RESPONSE NOK"); s_modem_send_poweron(tcore_pending_ref_plugin(p)); } @@ -207,7 +207,7 @@ static void on_response_modem_set_flight_mode(TcorePending *p, flight_resp.result = TCORE_RETURN_FAILURE; dbg("Setting Modem Flight mode - [%s] - [%s]", - ((flight_req->enable == 1) ? "ON": "OFF"), + ((flight_req->enable == 1) ? "ON" : "OFF"), (flight_resp.result == TCORE_RETURN_SUCCESS ? "SUCCESS" : "FAIL")); if (ur) { @@ -226,7 +226,7 @@ static void on_response_modem_set_flight_mode(TcorePending *p, flight_mode.enable = flight_req->enable; dbg("Boot-up: Modem Flight mode - [%s]", - (flight_req->enable ? "ON": "OFF")); + (flight_req->enable ? "ON" : "OFF")); /* Send notification */ tcore_server_send_notification(tcore_plugin_ref_server(tcore_object_ref_plugin(co_modem)), @@ -234,8 +234,7 @@ static void on_response_modem_set_flight_mode(TcorePending *p, TNOTI_MODEM_FLIGHT_MODE, sizeof(struct tnoti_modem_flight_mode), &flight_mode); } - } - else { + } else { err("ur is NULL"); } } @@ -245,7 +244,7 @@ static void on_response_modem_get_imei(TcorePending *p, { const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; - struct tresp_modem_get_imei imei_resp= {0, }; + struct tresp_modem_get_imei imei_resp = {0, }; dbg("Enter"); @@ -294,7 +293,7 @@ static void on_response_modem_get_version(TcorePending *p, { const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; - struct tresp_modem_get_version version_resp= {0, }; + struct tresp_modem_get_version version_resp = {0, }; dbg("Enter"); @@ -369,7 +368,7 @@ static TReturn power_off(CoreObject *co_modem, UserRequest *ur) tcore_modem_set_powered(co_modem, FALSE); /* Send notification */ - tcore_server_send_notification( tcore_plugin_ref_server(tcore_object_ref_plugin(co_modem)), + tcore_server_send_notification(tcore_plugin_ref_server(tcore_object_ref_plugin(co_modem)), co_modem, TNOTI_MODEM_POWER, sizeof(struct tnoti_modem_power), &modem_power); diff --git a/src/s_network.c b/src/s_network.c old mode 100755 new mode 100644 index 51bfed6..fb8477d --- a/src/s_network.c +++ b/src/s_network.c @@ -39,14 +39,14 @@ #define ATMODEM_NETWORK_BASE_16 16 typedef enum { - ATMDOEM_NETWORK_ACT_GSM, /* GSM */ - ATMDOEM_NETWORK_ACT_GSM_COMPACT, /* GSM Compact */ - ATMDOEM_NETWORK_ACT_UTRAN, /* UTRAN */ - ATMDOEM_NETWORK_ACT_GSM_EGPRS, /* GSM w/EGPRS */ - ATMDOEM_NETWORK_ACT_UTRAN_HSDPA, /* UTRAN w/HSDPA */ - ATMDOEM_NETWORK_ACT_UTRAN_HSUPA, /* UTRAN w/HSUPA */ - ATMDOEM_NETWORK_ACT_UTRAN_HSDPA_HSUPA, /* UTRAN w/HSDPA and HSUPA */ - ATMDOEM_NETWORK_ACT_E_UTRAN, /* E-UTRAN */ + ATMDOEM_NETWORK_ACT_GSM, /* GSM */ + ATMDOEM_NETWORK_ACT_GSM_COMPACT, /* GSM Compact */ + ATMDOEM_NETWORK_ACT_UTRAN, /* UTRAN */ + ATMDOEM_NETWORK_ACT_GSM_EGPRS, /* GSM w/EGPRS */ + ATMDOEM_NETWORK_ACT_UTRAN_HSDPA, /* UTRAN w/HSDPA */ + ATMDOEM_NETWORK_ACT_UTRAN_HSUPA, /* UTRAN w/HSUPA */ + ATMDOEM_NETWORK_ACT_UTRAN_HSDPA_HSUPA, /* UTRAN w/HSDPA and HSUPA */ + ATMDOEM_NETWORK_ACT_E_UTRAN, /* E-UTRAN */ } AtmodemNetworkAct; #define AT_CREG_STAT_NOT_REG 0 /* not registered, MT is not currently searching a new operator to register to */ @@ -129,11 +129,15 @@ static void _insert_mcc_mnc_oper_list(TcorePlugin *p, CoreObject *co_network) g_hash_table_iter_init(&iter, result); while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { row = value; - noi = calloc(sizeof(struct tcore_network_operator_info), 1); - snprintf(noi->mcc, 4, "%s",(const gchar *)(g_hash_table_lookup(row, "1"))); - snprintf(noi->mnc, 4, "%s",(const gchar *)(g_hash_table_lookup(row, "2"))); - snprintf(noi->name, 41, "%s",(const gchar *)(g_hash_table_lookup(row, "3"))); - snprintf(noi->country, 4, "%s",(const gchar *)(g_hash_table_lookup(row, "0"))); + noi = g_try_malloc0(sizeof(struct tcore_network_operator_info)); + if (noi == NULL) { + err("Memory allocation failed!!"); + continue; + } + snprintf(noi->mcc, 4, "%s", (const char *)(g_hash_table_lookup(row, "1"))); + snprintf(noi->mnc, 4, "%s", (const char *)(g_hash_table_lookup(row, "2"))); + snprintf(noi->name, 41, "%s", (const char *)(g_hash_table_lookup(row, "3"))); + snprintf(noi->country, 4, "%s", (const char *)(g_hash_table_lookup(row, "0"))); tcore_network_operator_info_add(co_network, noi); g_free(noi); @@ -170,70 +174,72 @@ static enum telephony_network_service_domain_status __atmodem_network_map_stat(g } static enum telephony_network_service_type _get_service_type(enum telephony_network_service_type prev_type, - int act, int cs_status, int ps_status) + int act, int cs_status, int ps_status) { enum telephony_network_service_type ret; ret = prev_type; switch (act) { - case NETWORK_ACT_NOT_SPECIFIED: - ret = NETWORK_SERVICE_TYPE_UNKNOWN; - break; + case NETWORK_ACT_NOT_SPECIFIED: + ret = NETWORK_SERVICE_TYPE_UNKNOWN; + break; + + case NETWORK_ACT_GSM: + if (prev_type == NETWORK_SERVICE_TYPE_2_5G_EDGE) + ret = NETWORK_SERVICE_TYPE_2_5G_EDGE; + else + ret = NETWORK_SERVICE_TYPE_2G; + break; - case NETWORK_ACT_GSM: - if (prev_type == NETWORK_SERVICE_TYPE_2_5G_EDGE) - ret = NETWORK_SERVICE_TYPE_2_5G_EDGE; - else - ret = NETWORK_SERVICE_TYPE_2G; - break; + case NETWORK_ACT_IS95A: + case NETWORK_ACT_IS95B: + ret = NETWORK_SERVICE_TYPE_2G; + break; - case NETWORK_ACT_IS95A: - case NETWORK_ACT_IS95B: - ret = NETWORK_SERVICE_TYPE_2G; - break; + case NETWORK_ACT_CDMA_1X: + case NETWORK_ACT_GPRS: + ret = NETWORK_SERVICE_TYPE_2_5G; + break; - case NETWORK_ACT_CDMA_1X: - case NETWORK_ACT_GPRS: - ret = NETWORK_SERVICE_TYPE_2_5G; - break; + case NETWORK_ACT_EGPRS: + return NETWORK_SERVICE_TYPE_2_5G_EDGE; - case NETWORK_ACT_EGPRS: - return NETWORK_SERVICE_TYPE_2_5G_EDGE; - break; + case NETWORK_ACT_UMTS: + ret = NETWORK_SERVICE_TYPE_3G; + break; - case NETWORK_ACT_UMTS: - ret = NETWORK_SERVICE_TYPE_3G; - break; + case NETWORK_ACT_EVDO_REV0: + case NETWORK_ACT_CDMA_1X_EVDO_REV0: + case NETWORK_ACT_EVDO_REVA: + case NETWORK_ACT_CDMA_1X_EVDO_REVA: + case NETWORK_ACT_EVDV: + ret = NETWORK_SERVICE_TYPE_3G; + break; - case NETWORK_ACT_EVDO_REV0: - case NETWORK_ACT_CDMA_1X_EVDO_REV0: - case NETWORK_ACT_EVDO_REVA: - case NETWORK_ACT_CDMA_1X_EVDO_REVA: - case NETWORK_ACT_EVDV: - ret = NETWORK_SERVICE_TYPE_3G; - break; - default : - /*Do Nothing*/ - dbg ("Default Case executed."); + default: + /*Do Nothing*/ + dbg("Default Case executed."); + break; } - if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_NO && ps_status == NETWORK_SERVICE_DOMAIN_STATUS_NO) { + if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_NO + && ps_status == NETWORK_SERVICE_DOMAIN_STATUS_NO) { ret = NETWORK_SERVICE_TYPE_NO_SERVICE; - } - else if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_SEARCH || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_SEARCH) { - if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL) { + } else if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_SEARCH + || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_SEARCH) { + if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL + || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL) { /* no change */ - } - else { + } else { ret = NETWORK_SERVICE_TYPE_SEARCH; } - } - else if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_EMERGENCY || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_EMERGENCY) { - if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL) { + } else if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_EMERGENCY + || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_EMERGENCY) { + if (cs_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL + || ps_status == NETWORK_SERVICE_DOMAIN_STATUS_FULL) { /* no change */ - } - else { + } else { ret = NETWORK_SERVICE_TYPE_EMERGENCY; } } @@ -257,7 +263,7 @@ static gboolean on_notification_atmodem_cs_network_info(CoreObject *co_network, return TRUE; } - line = (gchar *) (lines->data); + line = (char *) (lines->data); if (line != NULL) { struct tnoti_network_registration_status registration_status = {0, }; struct tnoti_network_location_cellinfo cell_info = {0, }; @@ -268,7 +274,7 @@ static gboolean on_notification_atmodem_cs_network_info(CoreObject *co_network, /* * Tokenize * - * +CREG: [,,[,]] + * +CREG: [, , [, ]] */ tokens = tcore_at_tok_new(line); if (g_slist_length(tokens) < 1) { @@ -286,14 +292,16 @@ static gboolean on_notification_atmodem_cs_network_info(CoreObject *co_network, /* */ if ((token_str = g_slist_nth_data(tokens, 1))) { - token_str = tcore_at_tok_extract((const gchar *)token_str); - - lac = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); + token_str = tcore_at_tok_extract((const char *)token_str); + if (token_str != NULL) { + lac = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); - /* Update Location Area Code (lac) information */ - (void)tcore_network_set_lac(co_network, lac); - - g_free(token_str); + /* Update Location Area Code (lac) information */ + (void)tcore_network_set_lac(co_network, lac); + g_free(token_str); + } else { + err("No "); + } } else { dbg("No in +CREG"); (void)tcore_network_get_lac(co_network, &lac); @@ -301,14 +309,15 @@ static gboolean on_notification_atmodem_cs_network_info(CoreObject *co_network, /* */ if ((token_str = g_slist_nth_data(tokens, 2))) { - token_str = tcore_at_tok_extract((const gchar *)token_str); - - ci = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); - - /* Update Cell ID (ci) information */ - (void)tcore_network_set_cell_id(co_network, ci); - - g_free(token_str); + token_str = tcore_at_tok_extract((const char *)token_str); + if (token_str != NULL) { + ci = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); + /* Update Cell ID (ci) information */ + (void)tcore_network_set_cell_id(co_network, ci); + g_free(token_str); + } else { + err("No "); + } } else { dbg("No in +CREG"); (void)tcore_network_get_cell_id(co_network, &ci); @@ -327,7 +336,8 @@ static gboolean on_notification_atmodem_cs_network_info(CoreObject *co_network, /* Send Notification - Network (CS) Registration status */ registration_status.cs_domain_status = stat; - tcore_network_get_service_status(co_network, TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET, ®istration_status.ps_domain_status); + tcore_network_get_service_status(co_network, + TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET, ®istration_status.ps_domain_status); tcore_server_send_notification(tcore_plugin_ref_server(tcore_object_ref_plugin(co_network)), co_network, @@ -336,15 +346,16 @@ static gboolean on_notification_atmodem_cs_network_info(CoreObject *co_network, #if 0 /* TODO : Implement Roaming State */ switch (stat) { - case TEL_NETWORK_REG_STATUS_ROAMING: - roam_state = TRUE; // no break - case TEL_NETWORK_REG_STATUS_REGISTERED: - Fetch Network name - Internal request - (void)__atmodem_network_fetch_nw_name(co_network, - __on_response_atmodem_network_fetch_nw_name_internal, NULL); - break; - default: - break; + case TEL_NETWORK_REG_STATUS_ROAMING: + roam_state = TRUE; /* no break */ + case TEL_NETWORK_REG_STATUS_REGISTERED: + Fetch Network name - Internal request + (void)__atmodem_network_fetch_nw_name(co_network, + __on_response_atmodem_network_fetch_nw_name_internal, NULL); + break; + + default: + break; } tcore_network_set_roaming_state(co_network, roam_state); @@ -382,7 +393,7 @@ static gboolean on_notification_atmodem_ps_network_info(CoreObject *co_network, return TRUE; } - line = (gchar *) (lines->data); + line = (char *) (lines->data); if (line != NULL) { struct tnoti_network_registration_status registration_status = {0, }; struct tnoti_network_location_cellinfo cell_info = {0, }; @@ -396,7 +407,7 @@ static gboolean on_notification_atmodem_ps_network_info(CoreObject *co_network, /* * Tokenize * - * +CGREG: [,,[,,]] + * +CGREG: [, , [, , ]] */ tokens = tcore_at_tok_new(line); if (g_slist_length(tokens) < 1) { @@ -414,14 +425,15 @@ static gboolean on_notification_atmodem_ps_network_info(CoreObject *co_network, /* */ if ((token_str = g_slist_nth_data(tokens, 1))) { - token_str = tcore_at_tok_extract((const gchar *)token_str); - - lac = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); - - /* Update Location Area Code (lac) information */ - (void)tcore_network_set_lac(co_network, lac); - - g_free(token_str); + token_str = tcore_at_tok_extract((const char *)token_str); + if (token_str != NULL) { + lac = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); + /* Update Location Area Code (lac) information */ + (void)tcore_network_set_lac(co_network, lac); + g_free(token_str); + } else { + err("No "); + } } else { dbg("No in +CGREG"); (void)tcore_network_get_lac(co_network, &lac); @@ -429,14 +441,15 @@ static gboolean on_notification_atmodem_ps_network_info(CoreObject *co_network, /* */ if ((token_str = g_slist_nth_data(tokens, 2))) { - token_str = tcore_at_tok_extract((const gchar *)token_str); - - ci = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); - - /* Update Cell ID (ci) information */ - (void)tcore_network_set_cell_id(co_network, ci); - - g_free(token_str); + token_str = tcore_at_tok_extract((const char *)token_str); + if (token_str != NULL) { + ci = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); + /* Update Cell ID (ci) information */ + (void)tcore_network_set_cell_id(co_network, ci); + g_free(token_str); + } else { + err("No "); + } } else { dbg("No in +CGREG"); (void)tcore_network_get_cell_id(co_network, &ci); @@ -453,16 +466,17 @@ static gboolean on_notification_atmodem_ps_network_info(CoreObject *co_network, /* */ if ((token_str = g_slist_nth_data(tokens, 4))) { - token_str = tcore_at_tok_extract((const gchar *)token_str); - - rac = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); - - /* Update Routing Area Code (rac) information */ - (void)tcore_network_set_rac(co_network, rac); - - g_free(token_str); + token_str = tcore_at_tok_extract((const char *)token_str); + if (token_str != NULL) { + rac = (guint)strtol(token_str, NULL, ATMODEM_NETWORK_BASE_16); + /* Update Routing Area Code (rac) information */ + (void)tcore_network_set_rac(co_network, rac); + g_free(token_str); + } else { + err("No "); + } } else { - err("No in +CGREG"); + err("No in +CGREG"); (void)tcore_network_get_rac(co_network, &rac); } dbg(": %d : 0x%x : 0x%x : %d : 0x%x", ps_status, lac, ci, act, rac); @@ -526,12 +540,12 @@ static gboolean on_notification_atmodem_network_rssi(CoreObject *co_network, return TRUE; } - line = (const gchar *)lines->data; + line = (const char *)lines->data; if (line != NULL) { GSList *tokens; guint descriptor; guint value; - static struct tnoti_network_icon_info net_icon_info = {0xff,0,0,0}; + static struct tnoti_network_icon_info net_icon_info = {0xff, 0, 0, 0}; tokens = tcore_at_tok_new(line); @@ -577,11 +591,10 @@ static void __on_response_atmodem_network_registration(TcorePending *p, const struct tcore_at_response *at_resp = data; dbg("Entry"); - if (at_resp && at_resp->success) { + if (at_resp && at_resp->success) dbg("Network Registration - [OK]"); - } else { + else err("Network Registration - [NOK]"); - } } static void __atmodem_network_register_to_network(CoreObject *co_network) @@ -605,6 +618,8 @@ static void on_sim_resp_hook_get_netname(UserRequest *ur, enum tcore_response_co const struct tresp_sim_read *resp = data; CoreObject *o = user_data; struct tnoti_network_registration_status regist_status; + struct tnoti_network_identity network_identity; + gchar *plmn = NULL; if (command == TRESP_SIM_GET_SPN) { dbg("OK SPN GETTING!!"); @@ -621,15 +636,14 @@ static void on_sim_resp_hook_get_netname(UserRequest *ur, enum tcore_response_co * bit[1]: 0 = display of the service provider name is required when registered PLMN is neither HPLMN nor a PLMN in the service provider PLMN list * 1 = display of the service provider name is not required when registered PLMN is neither HPLMN nor a PLMN in the service provider PLMN list */ - if (resp->data.spn.display_condition & 0x01) { + if (resp->data.spn.display_condition & 0x01) tcore_network_set_network_name_priority(o, TCORE_NETWORK_NAME_PRIORITY_NETWORK); - } - if ((resp->data.spn.display_condition & 0x02) == 0) { + + if ((resp->data.spn.display_condition & 0x02) == 0) tcore_network_set_network_name_priority(o, TCORE_NETWORK_NAME_PRIORITY_SPN); - } - if ((resp->data.spn.display_condition & 0x03) == 0x01) { + + if ((resp->data.spn.display_condition & 0x03) == 0x01) tcore_network_set_network_name_priority(o, TCORE_NETWORK_NAME_PRIORITY_ANY); - } } tcore_network_get_service_status(o, TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT, ®ist_status.cs_domain_status); @@ -639,6 +653,22 @@ static void on_sim_resp_hook_get_netname(UserRequest *ur, enum tcore_response_co tcore_server_send_notification(tcore_plugin_ref_server(tcore_object_ref_plugin(o)), o, TNOTI_NETWORK_REGISTRATION_STATUS, sizeof(struct tnoti_network_registration_status), ®ist_status); + + memset(&network_identity, 0x00, sizeof(struct tnoti_network_identity)); + + plmn = tcore_network_get_plmn(o); + if (plmn) { + dbg("plmn = %s", plmn); + g_strlcpy(network_identity.plmn, plmn, sizeof(network_identity.plmn)); + g_free(plmn); + } + g_strlcpy(network_identity.short_name, "SDK", sizeof(network_identity.short_name)); + g_strlcpy(network_identity.full_name, "SDK", sizeof(network_identity.full_name)); + + tcore_server_send_notification(tcore_plugin_ref_server(tcore_object_ref_plugin(o)), + o, + TNOTI_NETWORK_IDENTITY, + sizeof(struct tnoti_network_identity), &network_identity); } /* Hooks */ @@ -712,8 +742,8 @@ static void on_response_network_search(TcorePending *p, /* Status */ resp = tcore_at_tok_nth(net_token, 0); if (resp != NULL) { - nw_resp.list [count].status = atoi(resp); - dbg("Status: [%d]", nw_resp.list [count].status); + nw_resp.list[count].status = atoi(resp); + dbg("Status: [%d]", nw_resp.list[count].status); } /* Name */ @@ -764,19 +794,19 @@ static void on_response_network_search(TcorePending *p, dbg("[%d] Status: [%d] name: [%s] PLMN: [%s] AcT: [%d]", count, - nw_resp.list [count].status, - nw_resp.list [count].name, - nw_resp.list [count].plmn, - nw_resp.list [count].act); + nw_resp.list[count].status, + nw_resp.list[count].name, + nw_resp.list[count].plmn, + nw_resp.list[count].act); tcore_at_tok_free(net_token); } nw_resp.result = TCORE_RETURN_SUCCESS; - } - else { + } else { err("RESPONSE NOK"); - err("CME Error[%s]",(char *)(at_resp->lines ? at_resp->lines->data : "Unknown")); + if (at_resp) + err("CME Error[%s]", (char *)(at_resp->lines ? at_resp->lines->data : "Unknown")); } ur = tcore_pending_ref_user_request(p); @@ -784,8 +814,7 @@ static void on_response_network_search(TcorePending *p, tcore_user_request_send_response(ur, TRESP_NETWORK_SEARCH, sizeof(struct tresp_network_search), &nw_resp); - } - else { + } else { err("ur is NULL"); } @@ -806,7 +835,7 @@ static void on_response_network_get_plmn_selection_mode(TcorePending *p, dbg("Enter"); - nw_resp.result = TCORE_RETURN_FAILURE; //TODO - CME Error mapping required. + nw_resp.result = TCORE_RETURN_FAILURE; /* TODO - CME Error mapping required. */ if (at_resp && at_resp->success) { const gchar *line; @@ -870,7 +899,7 @@ static void on_response_network_set_plmn_selection_mode(TcorePending *p, } else { err("RESPONSE NOK"); if (at_resp->lines) - err("CME Error[%s]",(char *)at_resp->lines->data); + err("CME Error[%s]", (char *)at_resp->lines->data); nw_resp.result = TCORE_RETURN_FAILURE; } } else { @@ -918,18 +947,18 @@ static void on_response_network_get_serving_network(TcorePending *p, num_lines = g_slist_length(at_resp->lines); dbg("number of lines: %d", num_lines); - for(count = 0; count < num_lines; count++) { + for (count = 0; count < num_lines; count++) { line = g_slist_nth_data(at_resp->lines, count); tokens = tcore_at_tok_new(line); - // mode - if ((local_data = tcore_at_tok_nth(tokens, 0))) { + /* mode */ + if ((local_data = tcore_at_tok_nth(tokens, 0))) dbg("mode : %s", local_data); - } - // format - if ((local_data = tcore_at_tok_nth(tokens, 1))) { + + /* format */ + if ((local_data = tcore_at_tok_nth(tokens, 1))) dbg("format : %s", local_data); - } - //plmn + + /*plmn */ if ((plmn = tcore_at_tok_nth(tokens, 2))) { dbg("plmn : %s", plmn); g_strlcpy(nw_resp.plmn, plmn, 6); @@ -939,7 +968,8 @@ static void on_response_network_get_serving_network(TcorePending *p, tcore_network_set_network_name(co_network, TCORE_NETWORK_NAME_TYPE_FULL, "SDK"); } } - //act + + /* act */ if ((local_data = tcore_at_tok_nth(tokens, 3))) { dbg("AcT : %s", local_data); act = lookup_tbl_access_technology[atoi(local_data)]; @@ -1008,7 +1038,7 @@ static TReturn set_plmn_selection_mode(CoreObject *co_network, UserRequest *ur) dbg("Entry"); - mode_info = (struct treq_network_set_plmn_selection_mode*)tcore_user_request_ref_data( ur, 0 ); + mode_info = (struct treq_network_set_plmn_selection_mode *)tcore_user_request_ref_data(ur, 0); if (mode_info->mode == NETWORK_SELECT_MODE_AUTOMATIC) { at_cmd = g_strdup_printf("AT+COPS=0"); @@ -1022,15 +1052,17 @@ static TReturn set_plmn_selection_mode(CoreObject *co_network, UserRequest *ur) case NETWORK_ACT_EGPRS: act = 0; break; + case NETWORK_ACT_UMTS: case NETWORK_ACT_GSM_UTRAN: act = 2; break; + default: err("Unsupported AcT: [%d]", mode_info->act); return ret; } - at_cmd = g_strdup_printf("AT+COPS=1,2,\"%s\",%d", mode_info->plmn, act); + at_cmd = g_strdup_printf("AT+COPS=1, 2, \"%s\", %d", mode_info->plmn, act); } /* Send Request to modem */ @@ -1083,6 +1115,61 @@ static TReturn get_serving_network(CoreObject *co_network, UserRequest *ur) return ret; } +static TReturn get_default_subscription(CoreObject *co, UserRequest *ur) +{ + struct tresp_network_get_default_subs resp_data = {0, }; + TReturn ret = TCORE_RETURN_FAILURE; + Server *server; + Storage *strg = NULL; + TcorePlugin *plugin = tcore_object_ref_plugin(co); + + dbg("Enter"); + + server = tcore_plugin_ref_server(plugin); + strg = tcore_server_find_storage(server, "vconf"); + + /* VCONFKEY is aligned to req_data->current_network type */ + resp_data.default_subs = tcore_storage_get_int(strg, + STORAGE_KEY_TELEPHONY_DUALSIM_DEFAULT_SERVICE_INT); + + resp_data.result = TCORE_RETURN_SUCCESS; + + /* Send Response */ + ret = tcore_user_request_send_response(ur, + TRESP_NETWORK_GET_DEFAULT_SUBSCRIPTION, + sizeof(struct tresp_network_get_default_subs), &resp_data); + + dbg("ret: [0x%x]", ret); + return ret; +} + +static TReturn get_default_data_subscription(CoreObject *co, UserRequest *ur) +{ + struct tresp_network_get_default_data_subs resp = {0, }; + Server *server; + Storage *strg = NULL; + TcorePlugin *plugin = tcore_object_ref_plugin(co); + TReturn ret; + + dbg("Enter"); + + server = tcore_plugin_ref_server(plugin); + strg = tcore_server_find_storage(server, "vconf"); + + resp.default_subs = tcore_storage_get_int(strg, STORAGE_KEY_TELEPHONY_DUALSIM_DEFAULT_DATA_SERVICE_INT); + dbg("Defualt data Subscription: [%d]", resp.default_subs); + + resp.result = TCORE_RETURN_SUCCESS; + + ret = tcore_user_request_send_response(ur, + TRESP_NETWORK_GET_DEFAULT_DATA_SUBSCRIPTION, + sizeof(struct tresp_network_get_default_data_subs), &resp); + if (TCORE_RETURN_SUCCESS == ret) + tcore_user_request_unref(ur); + + return ret; +} + /** Network operations */ static struct tcore_network_operations network_ops = { .search = search_network, @@ -1100,6 +1187,8 @@ static struct tcore_network_operations network_ops = { .get_power_on_attach = NULL, .set_cancel_manual_search = NULL, .get_serving_network = get_serving_network, + .get_default_subscription = get_default_subscription, + .get_default_data_subscription = get_default_data_subscription, }; gboolean s_network_init(TcorePlugin *p, TcoreHal *h) diff --git a/src/s_ps.c b/src/s_ps.c index e417355..b3f0d5a 100644 --- a/src/s_ps.c +++ b/src/s_ps.c @@ -185,7 +185,7 @@ static void __on_response_get_ipconfiguration(TcorePending *p, dbg("IP address: %s", ip); } - (void)tcore_context_set_address(ps_context, (const char*)pdp_address); + (void)tcore_context_set_address(ps_context, (const char *)pdp_address); g_free(pdp_address); dbg("Adding default DNS pri: 8.8.8.8 sec: 8.8.4.4"); @@ -204,7 +204,7 @@ static void __on_response_get_ipconfiguration(TcorePending *p, } } } - }else { + } else { err("Response NOK"); context_id = tcore_context_get_id(ps_context); @@ -229,7 +229,7 @@ static void __get_ipconfiguration(CoreObject *co_ps, CoreObject *ps_context) ps_context, on_send_at_request, NULL, 0, NULL, NULL); - if (ret != TCORE_RETURN_SUCCESS){ + if (ret != TCORE_RETURN_SUCCESS) { err("Failed to prepare and send AT request"); /* Deactivate PDP context */ @@ -279,7 +279,7 @@ static void __attach_ps(CoreObject *co_ps, CoreObject *ps_context) __on_response_attach_ps, ps_context, on_send_at_request, NULL, 0, NULL, NULL); - if (ret != TCORE_RETURN_SUCCESS){ + if (ret != TCORE_RETURN_SUCCESS) { err("Failed to prepare and send AT request"); /* Deactivate PDP context */ @@ -378,8 +378,8 @@ static void on_response_ps_define_context(TcorePending *p, dbg("Response OK"); curr_call_status = 0; tcore_context_set_state(co_ps, CONTEXT_STATE_ACTIVATED); - }else { - err("ERROR[%s]",at_resp->final_response); + } else { + err("ERROR[%s]", at_resp->final_response); curr_call_status = 3; } @@ -432,7 +432,7 @@ static TReturn activate_ps_context(CoreObject *o, CoreObject *ps_context, void* on_response_ps_activate_context, ps_context, on_send_at_request, NULL, 0, NULL, NULL); - if (ret != TCORE_RETURN_SUCCESS){ + if (ret != TCORE_RETURN_SUCCESS) { err("AT request failed. Send notification for call status [DISCONNECTED]"); __notify_context_status_changed(o, context_id, 3); @@ -486,7 +486,7 @@ static TReturn deactivate_ps_context(CoreObject *o, CoreObject *ps_context, void on_response_ps_deactivate_context, ps_context, on_send_at_request, NULL, 0, NULL, NULL); - if (ret != TCORE_RETURN_SUCCESS){ + if (ret != TCORE_RETURN_SUCCESS) { err("AT request failed. Send notification for call status [DISCONNECTED]"); __notify_context_status_changed(o, context_id, 3); } diff --git a/src/s_sim.c b/src/s_sim.c old mode 100755 new mode 100644 index b6c0a9a..f147288 --- a/src/s_sim.c +++ b/src/s_sim.c @@ -47,8 +47,11 @@ #define ALLOC_METAINFO() do { \ - file_meta = g_malloc0(sizeof(sim_meta_info_t)); \ - dbg("Allocated - file_meta: [%p]", file_meta); \ + file_meta = g_try_malloc0(sizeof(sim_meta_info_t)); \ + if (file_meta == NULL) { \ + err("Memory allocation failed!!"); \ + return TCORE_RETURN_ENOMEM; \ + } \ } while (0) #define FREE_METAINFO() do { \ @@ -64,11 +67,11 @@ } typedef enum { - SIM_FILE_TYPE_DEDICATED = 0x00, /**< Dedicated */ - SIM_FILE_TYPE_TRANSPARENT = 0x01, /**< Transparent -binary type*/ - SIM_FILE_TYPE_LINEAR_FIXED = 0x02, /**< Linear fixed - record type*/ - SIM_FILE_TYPE_CYCLIC = 0x04, /**< Cyclic - record type*/ - SIM_FILE_TYPE_INVALID_TYPE = 0xFF /**< Invalid type */ + SIM_FILE_TYPE_DEDICATED = 0x00, /**< Dedicated */ + SIM_FILE_TYPE_TRANSPARENT = 0x01, /**< Transparent -binary type*/ + SIM_FILE_TYPE_LINEAR_FIXED = 0x02, /**< Linear fixed - record type*/ + SIM_FILE_TYPE_CYCLIC = 0x04, /**< Cyclic - record type*/ + SIM_FILE_TYPE_INVALID_TYPE = 0xFF /**< Invalid type */ } sim_file_type_t; typedef enum { @@ -83,7 +86,7 @@ typedef enum { SIM_CURR_SEC_OP_PIN1_ENABLE, SIM_CURR_SEC_OP_PIN1_DISABLE, SIM_CURR_SEC_OP_PIN2_ENABLE, - SIM_CURR_SEC_OP_PIN2_DISABLE, // 10 + SIM_CURR_SEC_OP_PIN2_DISABLE, /* 10 */ SIM_CURR_SEC_OP_SIM_ENABLE, SIM_CURR_SEC_OP_SIM_DISABLE, SIM_CURR_SEC_OP_NET_ENABLE, @@ -93,7 +96,7 @@ typedef enum { SIM_CURR_SEC_OP_SP_ENABLE, SIM_CURR_SEC_OP_SP_DISABLE, SIM_CURR_SEC_OP_CP_ENABLE, - SIM_CURR_SEC_OP_CP_DISABLE, // 20 + SIM_CURR_SEC_OP_CP_DISABLE, /* 20 */ SIM_CURR_SEC_OP_FDN_ENABLE, SIM_CURR_SEC_OP_FDN_DISABLE, SIM_CURR_SEC_OP_PIN1_STATUS, @@ -108,39 +111,41 @@ typedef enum { } sim_sec_op_t; typedef enum { - SEC_LOCK_TYPE_NONE =0, - SEC_LOCK_TYPE_READY, /* ME is not locked */ - SEC_LOCK_TYPE_PS, /* PH-SIM, Lock Phone to SIM/UICC card(MT asks password when other than current SIM/UICC card inserted; MT may remember certain amount of - previously used cards thus not requiring password when they are inserted ) */ - SEC_LOCK_TYPE_PF, /* PH-FSIM, Lock Phone to the very First inserted SIM/UICC card ( MT asks password when other than the first SIM/UICC card is inserted ) */ - SEC_LOCK_TYPE_SC, /*Lock SIM/UICC card ( SIM asks password in ME power-up and when this command is issued ) */ - SEC_LOCK_TYPE_FD, /* SIM card or active application in the UICC(GSM or USIM) fixed dialing memory feature */ - SEC_LOCK_TYPE_PN, /* Network Personalization */ - SEC_LOCK_TYPE_PU, /* Network subset Personalization */ - SEC_LOCK_TYPE_PP, /* Service Provider Personalization */ - SEC_LOCK_TYPE_PC, /* Corporate Personalization */ - SEC_LOCK_TYPE_SC2, /* Lock PIN2 ( ... ) */ - SEC_LOCK_TYPE_PUK2, /* Lock PUK2 (... ) */ - SEC_LOCK_TYPE_ACL, /* ACL */ - - SEC_LOCK_TYPE_NO_SIM, /* SIM is not inserted */ - SEC_LOCK_TYPE_UNAVAIL, /* SIM is inserted but can not communicate with SIM ( SIM interface error ) */ - SEC_SIM_INIT_COMPLETED, /* SIM Initialize Completed */ - SEC_PB_INIT_COMPLETED, /* Phonebook Initialize Completed*/ - SEC_SIM_INIT_CRASH, /* SIM Crash request from SMC lab*/ + SEC_LOCK_TYPE_NONE = 0, + SEC_LOCK_TYPE_READY, /* ME is not locked */ + SEC_LOCK_TYPE_PS, /* PH-SIM, Lock Phone to SIM/UICC card(MT asks password when + other than current SIM/UICC card inserted; MT may remember + certain amount of previously used cards thus not requiring + password when they are inserted ) */ + SEC_LOCK_TYPE_PF, /* PH-FSIM, Lock Phone to the very First inserted SIM/UICC card ( MT asks password when other than the first SIM/UICC card is inserted ) */ + SEC_LOCK_TYPE_SC, /*Lock SIM/UICC card ( SIM asks password in ME power-up and when this command is issued ) */ + SEC_LOCK_TYPE_FD, /* SIM card or active application in the UICC(GSM or USIM) fixed dialing memory feature */ + SEC_LOCK_TYPE_PN, /* Network Personalization */ + SEC_LOCK_TYPE_PU, /* Network subset Personalization */ + SEC_LOCK_TYPE_PP, /* Service Provider Personalization */ + SEC_LOCK_TYPE_PC, /* Corporate Personalization */ + SEC_LOCK_TYPE_SC2, /* Lock PIN2 ( ... ) */ + SEC_LOCK_TYPE_PUK2, /* Lock PUK2 (... ) */ + SEC_LOCK_TYPE_ACL, /* ACL */ + + SEC_LOCK_TYPE_NO_SIM, /* SIM is not inserted */ + SEC_LOCK_TYPE_UNAVAIL, /* SIM is inserted but can not communicate with SIM ( SIM interface error ) */ + SEC_SIM_INIT_COMPLETED, /* SIM Initialize Completed */ + SEC_PB_INIT_COMPLETED, /* Phonebook Initialize Completed*/ + SEC_SIM_INIT_CRASH, /* SIM Crash request from SMC lab*/ SEC_LOCK_TYPE_MAX } sim_sec_lock_type_t; typedef enum { SEC_LOCK_KEY_NONE, - SEC_LOCK_KEY_UNLOCKED, /* Not necessary */ - SEC_LOCK_KEY_PIN, /* PIN required as a password */ - SEC_LOCK_KEY_PUK, /* 0PUK required as a password */ - SEC_LOCK_KEY_PIN2, /* PIN2 required as a password */ - SEC_LOCK_KEY_PUK2, /* PUK2 required as a password */ - SEC_LOCK_KEY_PERM_BLOCKED, /* PIN Permanent Blocked */ - SEC_LOCK_KEY_PIN2_DISABLE, /* PIN2 Lock Disabled*/ + SEC_LOCK_KEY_UNLOCKED, /* Not necessary */ + SEC_LOCK_KEY_PIN, /* PIN required as a password */ + SEC_LOCK_KEY_PUK, /* 0PUK required as a password */ + SEC_LOCK_KEY_PIN2, /* PIN2 required as a password */ + SEC_LOCK_KEY_PUK2, /* PUK2 required as a password */ + SEC_LOCK_KEY_PERM_BLOCKED, /* PIN Permanent Blocked */ + SEC_LOCK_KEY_PIN2_DISABLE, /* PIN2 Lock Disabled*/ SEC_LOCK_KEY_MAX } sim_sec_lock_key_t; @@ -150,25 +155,23 @@ typedef struct { } sim_private_info_t; typedef struct { - gboolean b_valid; /**< Valid or not */ - guint rec_length; /**< Length of one record in file */ - guint rec_count; /**< Number of records in file */ - guint data_size; /**< File size */ - guint current_index; /**< Current index to read */ - sim_file_type_t file_type; /**< File type and structure */ -// sim_sec_op_t sec_op; /**< Current index to read */ - struct tel_sim_mbi_list mbi_list; /**< Mailbox List */ - struct tel_sim_mb_number mb_list[SIM_MSP_CNT_MAX*5]; /**< Mailbox number */ - enum tel_sim_file_id file_id; /**< Current file id */ - TReturn file_result; /**< File access result */ - struct tresp_sim_read files; /**< File read data */ - enum tcore_request_command req_command; /**< Request command Id */ - struct tel_sim_imsi imsi; /**< Stored locally as of now, - Need to store in secure storage*/ + gboolean b_valid; /**< Valid or not */ + guint rec_length; /**< Length of one record in file */ + guint rec_count; /**< Number of records in file */ + guint data_size; /**< File size */ + guint current_index; /**< Current index to read */ + sim_file_type_t file_type; /**< File type and structure */ + struct tel_sim_mbi_list mbi_list; /**< Mailbox List */ + struct tel_sim_mb_number mb_list[SIM_MSP_CNT_MAX * 5]; /**< Mailbox number */ + enum tel_sim_file_id file_id; /**< Current file id */ + TReturn file_result; /**< File access result */ + struct tresp_sim_read files; /**< File read data */ + enum tcore_request_command req_command; /**< Request command Id */ + struct tel_sim_imsi imsi; /**< Stored locally as of now, + Need to store in secure storage*/ } sim_meta_info_t; /* Request Function Declaration */ -//static TReturn __sim_get_imsi(CoreObject *co_sim, UserRequest *ur); static TReturn __sim_get_ecc(CoreObject *co_sim, UserRequest *ur); static TReturn __sim_get_spdi(CoreObject *co_sim, UserRequest *ur); static TReturn __sim_get_spn(CoreObject *co_sim, UserRequest *ur); @@ -188,9 +191,8 @@ static TReturn __sim_decode_status_word(unsigned short status_word1, unsigned sh static void __sim_update_sim_status(CoreObject *co_sim, enum tel_sim_status sim_status); static void __sim_get_sim_type(CoreObject *co_sim); static const char *__sim_get_fac_from_lock_type(enum tel_sim_facility_type lock_type); -//static int __sim_get_lock_type(sim_sec_op_t sec_op); -static gboolean __convert_scpin_str_to_enum(char* line, - sim_sec_lock_type_t* lock_type, sim_sec_lock_key_t* lock_key); +static gboolean __convert_scpin_str_to_enum(char *line, + sim_sec_lock_type_t *lock_type, sim_sec_lock_key_t *lock_key); /* Internal Response Functions*/ static void __sim_next_from_read_data(CoreObject *co_sim, UserRequest *ur, @@ -211,7 +213,11 @@ static gboolean __util_hexstring_to_bytes(gchar *hex_str, #define SIM_READ_FILE(co_sim, cb, cb_data, fileId, ret) do { \ sim_meta_info_t *file_meta = {0, }; \ \ - ALLOC_METAINFO(); \ + file_meta = g_try_malloc0(sizeof(sim_meta_info_t)); \ + if (file_meta == NULL) { \ + err("Memory allocation failed!!"); \ + return; \ + } \ file_meta->file_id = fileId; \ file_meta->file_result = SIM_ACCESS_FAILED; \ \ @@ -244,8 +250,11 @@ static gboolean __util_hexstring_to_bytes(gchar *hex_str, hex_str_len = strlen(hex_str); - byte_str = g_malloc0((hex_str_len / 2) + 1); - + byte_str = g_try_malloc0((hex_str_len / 2) + 1); + if (byte_str == NULL) { + err("Memory allocation failed!!"); + return FALSE; + } dbg("Convert String to Binary!!!"); for (i = 0; i < hex_str_len; i += 2) { byte_str[i / 2] = (gchar)((__util_hexchar_to_int(hex_str[i]) << 4) @@ -361,35 +370,6 @@ static enum tcore_response_command __find_resp_command(UserRequest *ur) return TRESP_UNKNOWN; } -#if 0 -static void __sim_set_identity(CoreObject *co_sim, struct tel_sim_imsi *imsi) -{ - gchar new_imsi[15 + 1] = {0, }; - gchar *old_imsi; - - memcpy(&new_imsi, imsi->mcc, strlen(imsi->mcc)); - memcpy(&new_imsi[strlen(imsi->mcc)], imsi->mnc, strlen(imsi->mnc)); - memcpy(&new_imsi[strlen(imsi->mcc) + strlen(imsi->mnc)], imsi->msin, strlen(imsi->msin)); - - /* TODO: This is temporary code, we should use secure storage instead of vconf */ - old_imsi = vconf_get_str("db/telephony/imsi"); - if (old_imsi) { - if (g_strcmp0(old_imsi, new_imsi) != 0) { - dbg("New SIM"); - vconf_set_str("db/telephony/imsi", new_imsi); - tcore_sim_set_identification(co_sim, TRUE); - } else { - dbg("Same SIM"); - tcore_sim_set_identification(co_sim, FALSE); - } - } else { - dbg("Old IMSI value is NULL, set IMSI"); - vconf_set_str("db/telephony/imsi", new_imsi); - tcore_sim_set_identification(co_sim, TRUE); - } -} -#endif - /* Utility Functions */ static TReturn __sim_decode_status_word(unsigned short status_word1, unsigned short status_word2) @@ -477,10 +457,10 @@ static TReturn __sim_decode_status_word(unsigned short status_word1, rst = SIM_ACCESS_FAILED; dbg("error -Incorrect parameters [%x][%x]", status_word1, status_word2); } else if (status_word1 == 0x6A && status_word2 == 0x82) { - rst = SIM_ACCESS_FILE_NOT_FOUND; // not sure of the SW1 and SW2 meaning here + rst = SIM_ACCESS_FILE_NOT_FOUND; /* not sure of the SW1 and SW2 meaning here */ dbg("error -File Not found [%x][%x]", status_word1, status_word2); } else if (status_word1 == 0x6A && status_word2 == 0x83) { - rst = SIM_ACCESS_FILE_NOT_FOUND; // not sure of the SW1 and SW2 meaning here + rst = SIM_ACCESS_FILE_NOT_FOUND; /* not sure of the SW1 and SW2 meaning here */ dbg("error -Record Not found [%x][%x]", status_word1, status_word2); } else { rst = SIM_ACCESS_CARD_ERROR; @@ -519,13 +499,13 @@ static void __sim_update_sim_status(CoreObject *co_sim, } } -static gboolean __convert_scpin_str_to_enum(char* line, +static gboolean __convert_scpin_str_to_enum(char *line, sim_sec_lock_type_t *lock_type, sim_sec_lock_key_t *lock_key) { - char *type =NULL, *key = NULL; + char *type = NULL, *key = NULL; GSList *tokens = NULL; - if(line == NULL) + if (line == NULL) return FALSE; tokens = tcore_at_tok_new(line); @@ -548,63 +528,63 @@ static gboolean __convert_scpin_str_to_enum(char* line, dbg("type: [%s], key: [%s]", type, key); } - if(g_str_has_prefix (type, "NO_SIM")) + if (g_str_has_prefix(type, "NO_SIM")) *lock_type = SEC_LOCK_TYPE_NO_SIM; - else if(g_str_has_prefix (type, "UNAVAIL")) + else if (g_str_has_prefix(type, "UNAVAIL")) *lock_type = SEC_LOCK_TYPE_UNAVAIL; - else if(g_str_has_prefix (type, "NO_LOCK")) + else if (g_str_has_prefix(type, "NO_LOCK")) *lock_type = SEC_LOCK_TYPE_READY; - else if(g_str_has_prefix (type, "LOCK_PS")) + else if (g_str_has_prefix(type, "LOCK_PS")) *lock_type = SEC_LOCK_TYPE_PS; - else if(g_str_has_prefix (type, "LOCK_PF")) - *lock_type = SEC_LOCK_TYPE_PF ; - else if(g_str_has_prefix (type, "LOCK_SC")) + else if (g_str_has_prefix(type, "LOCK_PF")) + *lock_type = SEC_LOCK_TYPE_PF; + else if (g_str_has_prefix(type, "LOCK_SC")) *lock_type = SEC_LOCK_TYPE_SC; - else if(g_str_has_prefix (type, "LOCK_FD")) + else if (g_str_has_prefix(type, "LOCK_FD")) *lock_type = SEC_LOCK_TYPE_FD; - else if(g_str_has_prefix (type, "LOCK_PN")) - *lock_type = SEC_LOCK_TYPE_PN ; - else if(g_str_has_prefix (type, "LOCK_PU")) - *lock_type = SEC_LOCK_TYPE_PU ; - else if(g_str_has_prefix (type, "LOCK_PP")) + else if (g_str_has_prefix(type, "LOCK_PN")) + *lock_type = SEC_LOCK_TYPE_PN; + else if (g_str_has_prefix(type, "LOCK_PU")) + *lock_type = SEC_LOCK_TYPE_PU; + else if (g_str_has_prefix(type, "LOCK_PP")) *lock_type = SEC_LOCK_TYPE_PP; - else if(g_str_has_prefix (type, "LOCK_PC")) + else if (g_str_has_prefix(type, "LOCK_PC")) *lock_type = SEC_LOCK_TYPE_PC; - else if(g_str_has_prefix (type, "LOCK_SC2")) - *lock_type = SEC_LOCK_TYPE_SC2 ; - else if(g_str_has_prefix (type, "LOCK_ACL")) + else if (g_str_has_prefix(type, "LOCK_SC2")) + *lock_type = SEC_LOCK_TYPE_SC2; + else if (g_str_has_prefix(type, "LOCK_ACL")) *lock_type = SEC_LOCK_TYPE_ACL; - else if(g_str_has_prefix (type, "LOCK_PUK2")) + else if (g_str_has_prefix(type, "LOCK_PUK2")) *lock_type = SEC_LOCK_TYPE_PUK2; - else if(g_str_has_prefix (type, "INIT_COMP")) + else if (g_str_has_prefix(type, "INIT_COMP")) *lock_type = SEC_SIM_INIT_COMPLETED; - else if(g_str_has_prefix (type, "INIT_ERROR")) + else if (g_str_has_prefix(type, "INIT_ERROR")) *lock_type = SEC_SIM_INIT_CRASH; else *lock_type = SEC_LOCK_TYPE_NONE; - if(g_str_has_prefix (key, "PIN")) + if (g_str_has_prefix(key, "PIN")) *lock_key = SEC_LOCK_KEY_PIN; - else if(g_str_has_prefix (key, "PUK")) + else if (g_str_has_prefix(key, "PUK")) *lock_key = SEC_LOCK_KEY_PUK; - else if(g_str_has_prefix (key, "PIN2")) + else if (g_str_has_prefix(key, "PIN2")) *lock_key = SEC_LOCK_KEY_PIN2; - else if(g_str_has_prefix (key, "PUK2")) + else if (g_str_has_prefix(key, "PUK2")) *lock_key = SEC_LOCK_KEY_PUK2; - else if(g_str_has_prefix (key, "BLOCKED")) - *lock_key = SEC_LOCK_KEY_PERM_BLOCKED ; - else if(g_str_has_prefix (key, "UNLOCKED")) - *lock_key = SEC_LOCK_KEY_UNLOCKED ; - else if(g_str_has_prefix (key, "PIN2_DISABLE")) + else if (g_str_has_prefix(key, "BLOCKED")) + *lock_key = SEC_LOCK_KEY_PERM_BLOCKED; + else if (g_str_has_prefix(key, "UNLOCKED")) + *lock_key = SEC_LOCK_KEY_UNLOCKED; + else if (g_str_has_prefix(key, "PIN2_DISABLE")) *lock_key = SEC_LOCK_KEY_PIN2_DISABLE; else *lock_key = SEC_LOCK_KEY_NONE; - if(*lock_type == SEC_LOCK_TYPE_READY) + if (*lock_type == SEC_LOCK_TYPE_READY) *lock_key = SEC_LOCK_KEY_UNLOCKED; - if((*lock_type == SEC_LOCK_TYPE_NO_SIM)||(*lock_type == SEC_LOCK_TYPE_UNAVAIL)|| - (*lock_type == SEC_SIM_INIT_COMPLETED)||(*lock_type == SEC_SIM_INIT_CRASH)) + if ((*lock_type == SEC_LOCK_TYPE_NO_SIM) || (*lock_type == SEC_LOCK_TYPE_UNAVAIL) || + (*lock_type == SEC_SIM_INIT_COMPLETED) || (*lock_type == SEC_SIM_INIT_CRASH)) *lock_key = SEC_LOCK_KEY_NONE; dbg("type: [%d], key: [%d]", *lock_type, *lock_key); @@ -647,8 +627,11 @@ static void __on_response_sim_get_sim_type(TcorePending *p, /* Update SIM type */ tcore_sim_set_type(co_sim, sim_type); - } - else { + if (sim_type == 1) + tcore_sim_set_app_list(co_sim, SIM_APP_TYPE_SIM); + else if (sim_type == 2) + tcore_sim_set_app_list(co_sim, SIM_APP_TYPE_USIM); + } else { err("Invalid message"); } @@ -738,7 +721,7 @@ static void __sim_process_sim_status(CoreObject *co_sim, static const char *__sim_get_fac_from_lock_type(enum tel_sim_facility_type lock_type) { char *fac = NULL; - switch(lock_type) { + switch (lock_type) { case SIM_FACILITY_PS: fac = (char *)"PS"; break; @@ -974,12 +957,6 @@ static void __sim_next_from_read_data(CoreObject *co_sim, UserRequest *ur, case SIM_EF_CPHS_OPERATOR_NAME_STRING: { file_meta->files.result = sim_result; - if (decode_ret == TRUE && sim_result == SIM_ACCESS_SUCCESS) { - memcpy(file_meta->files.data.cphs_net.full_name, - file_meta->files.data.cphs_net.full_name, - strlen((char *)file_meta->files.data.cphs_net.full_name)); - } - file_meta->file_id = SIM_EF_CPHS_OPERATOR_NAME_SHORT_FORM_STRING; file_meta->file_result = SIM_ACCESS_FAILED; ur = tcore_user_request_ref(ur); @@ -988,10 +965,6 @@ static void __sim_next_from_read_data(CoreObject *co_sim, UserRequest *ur, break; case SIM_EF_CPHS_OPERATOR_NAME_SHORT_FORM_STRING: - if (sim_result == SIM_ACCESS_SUCCESS) { - file_meta->files.result = SIM_ACCESS_SUCCESS; - } - dbg("Sending response"); file_meta->files.result = sim_result; @@ -1093,7 +1066,7 @@ static void __sim_next_from_get_response(CoreObject *co_sim, UserRequest *ur, __sim_get_response(co_sim, ur, file_meta); } else if (SIM_TYPE_USIM == card_type) { dbg(" [SIM DATA]fail to get Language information "\ - "in USIM(EF-LI(6F05),EF-PL(2F05))"); + "in USIM(EF-LI(6F05), EF-PL(2F05))"); file_meta->files.result = sim_result; tcore_user_request_send_response(ur, @@ -1198,13 +1171,12 @@ static void __sim_next_from_get_response(CoreObject *co_sim, UserRequest *ur, if (sim_result == SIM_ACCESS_SUCCESS) { __sim_read_binary(co_sim, ur, file_meta); } else { - /* Emulator does not support ICCID, thus need to send dummy ICCID for SDK ITC test */ + /* Emulator does not support ICCID, thus need to send dummy ICCID for SDK ITC test */ g_strlcpy(file_meta->files.data.iccid.iccid, SIM_ICCID, SIM_ICCID_LEN_MAX); file_meta->files.result = SIM_ACCESS_SUCCESS; - if (tcore_user_request_ref_communicator(ur)) { //external call + if (tcore_user_request_ref_communicator(ur)) /* external call */ tcore_user_request_send_response(ur, __find_resp_command(ur), sizeof(struct tresp_sim_read), &file_meta->files); - } } } break; @@ -1267,10 +1239,9 @@ static void __sim_next_from_get_response(CoreObject *co_sim, UserRequest *ur, /* Emulator does not support MSISDN, thus need to send MSISDN count as ZERO for SDK ITC test */ file_meta->files.data.msisdn_list.count = 0; file_meta->files.result = SIM_ACCESS_SUCCESS; - if (tcore_user_request_ref_communicator(ur)) { //external call + if (tcore_user_request_ref_communicator(ur)) /* external call */ tcore_user_request_send_response(ur, __find_resp_command(ur), sizeof(struct tresp_sim_read), &file_meta->files); - } } } break; @@ -1360,10 +1331,10 @@ static void __on_response_sim_read_data(TcorePending *p, if (dr == FALSE) { err("IMSI decoding failed"); } else { - //__sim_set_identity(co_sim, &file_meta->imsi); - /* Update IMSI */ tcore_sim_set_imsi(co_sim, &file_meta->imsi); + /* SIM is not changed in SDK */ + tcore_sim_set_identification(co_sim, FALSE); } } break; @@ -1377,8 +1348,7 @@ static void __on_response_sim_read_data(TcorePending *p, case SIM_EF_ELP: /* 2G EF - 2 bytes decoding */ case SIM_EF_USIM_LI: /* 3G EF - 2 bytes decoding */ case SIM_EF_USIM_PL: /* 3G EF - same as EFELP, so 2 byte decoding */ - case SIM_EF_LP: /* 1 byte encoding */ - { + case SIM_EF_LP: { /* 1 byte encoding */ card_type = tcore_sim_get_type(co_sim); if ((SIM_TYPE_GSM == card_type) && (file_meta->file_id == SIM_EF_LP)) { @@ -1415,21 +1385,19 @@ static void __on_response_sim_read_data(TcorePending *p, card_type = tcore_sim_get_type(co_sim); file_meta->files.data.svct.sim_type = card_type; - if (SIM_TYPE_GSM == card_type) { + if (SIM_TYPE_GSM == card_type) dr = tcore_sim_decode_sst(&file_meta->files.data.svct.table.sst, (unsigned char *)res, res_len); - } else if (SIM_TYPE_USIM == card_type) { + else if (SIM_TYPE_USIM == card_type) dr = tcore_sim_decode_ust(&file_meta->files.data.svct.table.ust, (unsigned char *)res, res_len); - } else { + else err("Not handled card_type[%d]", card_type); - } - if (dr == FALSE) { + if (dr == FALSE) err("SST decoding failed"); - } else { + else tcore_sim_set_service_table(co_sim, svct); - } /* Free memory */ g_free(svct); @@ -1608,9 +1576,9 @@ static void __on_response_sim_read_data(TcorePending *p, break; case SIM_EF_CPHS_OPERATOR_NAME_STRING: - dr = tcore_sim_decode_ons((unsigned char*)&file_meta->files.data.cphs_net.full_name, + dr = tcore_sim_decode_ons((unsigned char *)&file_meta->files.data.cphs_net.full_name, (unsigned char *)res, res_len); - dbg("file_meta->files.result[%d],file_meta->files.data.cphs_net.full_name[%s]", + dbg("file_meta->files.result[%d], file_meta->files.data.cphs_net.full_name[%s]", file_meta->files.result, file_meta->files.data.cphs_net.full_name); break; @@ -1630,9 +1598,9 @@ static void __on_response_sim_read_data(TcorePending *p, break; case SIM_EF_CPHS_OPERATOR_NAME_SHORT_FORM_STRING: - dr = tcore_sim_decode_short_ons((unsigned char*)&file_meta->files.data.cphs_net.short_name, + dr = tcore_sim_decode_short_ons((unsigned char *)&file_meta->files.data.cphs_net.short_name, (unsigned char *)res, res_len); - dbg("file_meta->files.result[%d],file_meta->files.data.cphs_net.short_name[%s]", + dbg("file_meta->files.result[%d], file_meta->files.data.cphs_net.short_name[%s]", file_meta->files.result, file_meta->files.data.cphs_net.short_name); break; @@ -1773,13 +1741,13 @@ static void __on_response_sim_get_response(TcorePending *p, switch (file_type_tag) { /* increment to next byte */ - // ptr_data++; case 0x1: dbg("Getting FileType: [Transparent file type]"); file_type = SIM_FILE_TYPE_TRANSPARENT; /* increment to next byte */ ptr_data++; + /* increment to next byte */ ptr_data++; break; @@ -1788,14 +1756,18 @@ static void __on_response_sim_get_response(TcorePending *p, dbg("Getting FileType: [Linear fixed file type]"); /* increment to next byte */ ptr_data++; + /* data coding byte - value 21 */ ptr_data++; + /* 2bytes */ memcpy(&record_len, ptr_data, 2); + /* swap bytes */ SWAP_BYTES_16(record_len); ptr_data = ptr_data + 2; num_of_records = *ptr_data++; + /* Data lossy conversation from enum (int) to unsigned char */ file_type = SIM_FILE_TYPE_LINEAR_FIXED; break; @@ -1804,10 +1776,13 @@ static void __on_response_sim_get_response(TcorePending *p, dbg("Cyclic fixed file type"); /* increment to next byte */ ptr_data++; + /* data coding byte - value 21 */ ptr_data++; + /* 2bytes */ memcpy(&record_len, ptr_data, 2); + /* swap bytes */ SWAP_BYTES_16(record_len); ptr_data = ptr_data + 2; @@ -1826,7 +1801,7 @@ static void __on_response_sim_get_response(TcorePending *p, return; } - /*File identifier - 0x84,0x85,0x86 etc are currently ignored and not handled */ + /*File identifier - 0x84, 0x85, 0x86 etc are currently ignored and not handled */ if (*ptr_data == 0x83) { /* increment to next byte */ ptr_data++; @@ -1836,7 +1811,7 @@ static void __on_response_sim_get_response(TcorePending *p, memcpy(&file_id, ptr_data, file_id_len); dbg("file_id: %x", file_id); - /* swap bytes */ + /* swap bytes */ SWAP_BYTES_16(file_id); dbg("file_id: %x", file_id); @@ -1867,15 +1842,15 @@ static void __on_response_sim_get_response(TcorePending *p, /* life cycle status integer [8A][length:0x01][status]*/ /* - status info b8~b1 - 00000000 : No information given - 00000001 : creation state - 00000011 : initialization state - 000001-1 : operation state -activated - 000001-0 : operation state -deactivated - 000011-- : Termination state - b8~b5 !=0, b4~b1=X : Proprietary - Any other value : RFU + * status info b8~b1 + * 00000000 : No information given + * 00000001 : creation state + * 00000011 : initialization state + * 000001-1 : operation state -activated + * 000001-0 : operation state -deactivated + * 000011-- : Termination state + * b8~b5 !=0, b4~b1=X : Proprietary + * Any other value : RFU */ if (*ptr_data == 0x8A) { /* increment to next byte */ @@ -1921,7 +1896,6 @@ static void __on_response_sim_get_response(TcorePending *p, } else { /* if tag length is not 3 */ /* ignoring bytes */ - // ptr_data = ptr_data + 4; dbg("Useless security attributes, so jump to next tag"); ptr_data = ptr_data + (*ptr_data + 1); } @@ -1984,18 +1958,22 @@ static void __on_response_sim_get_response(TcorePending *p, /* ignore RFU byte1 and byte2 */ ptr_data++; ptr_data++; + /* file size */ - // file_size = p_info->response_len; memcpy(&file_size, ptr_data, 2); + /* swap bytes */ SWAP_BYTES_16(file_size); + /* parsed file size */ ptr_data = ptr_data + 2; + /* file id */ memcpy(&file_id, ptr_data, 2); SWAP_BYTES_16(file_id); dbg("FILE id --> [%x]", file_id); ptr_data = ptr_data + 2; + /* save file type - transparent, linear fixed or cyclic */ file_type_tag = (*(ptr_data + 7)); @@ -2008,7 +1986,7 @@ static void __on_response_sim_get_response(TcorePending *p, case 0x1: /* MF file type */ dbg("MF file type - not handled - Debug!"); - break; + break; case 0x2: /* DF file type */ @@ -2029,24 +2007,32 @@ static void __on_response_sim_get_response(TcorePending *p, } else { /* increment to next byte */ ptr_data++; + /* For a cyclic EF all bits except bit 7 are RFU; b7=1 indicates that */ /* the INCREASE command is allowed on the selected cyclic file. */ file_type = SIM_FILE_TYPE_CYCLIC; } + /* bytes 9 to 11 give SIM file access conditions */ ptr_data++; + /* byte 10 has one nibble that is RF U and another for INCREASE which is not used currently */ ptr_data++; + /* byte 11 is invalidate and rehabilate nibbles */ ptr_data++; + /* byte 12 - file status */ ptr_data++; + /* byte 13 - GSM specific data */ gsm_specific_file_data_len = *ptr_data; dbg("gsm_specific_file_data_len:[%d]", gsm_specific_file_data_len); ptr_data++; + /* byte 14 - structure of EF - transparent or linear or cyclic , already saved above */ ptr_data++; + /* byte 15 - length of record for linear and cyclic , for transparent it is set to 0x00. */ record_len = *ptr_data; dbg("record length[%d], file size[%d]", record_len, file_size); @@ -2194,38 +2180,45 @@ static TReturn __sim_get_response(CoreObject *co_sim, UserRequest *ur, sim_meta_ #if 0 /* To be used later */ static int __sim_get_lock_type(sim_sec_op_t sec_op) { - switch(sec_op) { - case SIM_CURR_SEC_OP_SIM_DISABLE : - case SIM_CURR_SEC_OP_SIM_ENABLE : - case SIM_CURR_SEC_OP_SIM_STATUS : - return SIM_FACILITY_PS; - case SIM_CURR_SEC_OP_PIN1_DISABLE : - case SIM_CURR_SEC_OP_PIN1_ENABLE : - case SIM_CURR_SEC_OP_PIN1_STATUS : - return SIM_FACILITY_SC; - case SIM_CURR_SEC_OP_FDN_DISABLE : - case SIM_CURR_SEC_OP_FDN_ENABLE : - case SIM_CURR_SEC_OP_FDN_STATUS : - return SIM_FACILITY_FD; - case SIM_CURR_SEC_OP_NET_DISABLE : - case SIM_CURR_SEC_OP_NET_ENABLE : - case SIM_CURR_SEC_OP_NET_STATUS : - return SIM_FACILITY_PN; - case SIM_CURR_SEC_OP_NS_DISABLE : - case SIM_CURR_SEC_OP_NS_ENABLE : - case SIM_CURR_SEC_OP_NS_STATUS : - return SIM_FACILITY_PU; - case SIM_CURR_SEC_OP_SP_DISABLE : - case SIM_CURR_SEC_OP_SP_ENABLE : - case SIM_CURR_SEC_OP_SP_STATUS : - return SIM_FACILITY_PP; - case SIM_CURR_SEC_OP_CP_DISABLE : - case SIM_CURR_SEC_OP_CP_ENABLE : - case SIM_CURR_SEC_OP_CP_STATUS : - return SIM_FACILITY_PC ; - default : - err("Invalid sec op [%d]", sec_op); - return -1; + switch (sec_op) { + case SIM_CURR_SEC_OP_SIM_DISABLE: + case SIM_CURR_SEC_OP_SIM_ENABLE: + case SIM_CURR_SEC_OP_SIM_STATUS: + return SIM_FACILITY_PS; + + case SIM_CURR_SEC_OP_PIN1_DISABLE: + case SIM_CURR_SEC_OP_PIN1_ENABLE: + case SIM_CURR_SEC_OP_PIN1_STATUS: + return SIM_FACILITY_SC; + + case SIM_CURR_SEC_OP_FDN_DISABLE: + case SIM_CURR_SEC_OP_FDN_ENABLE: + case SIM_CURR_SEC_OP_FDN_STATUS: + return SIM_FACILITY_FD; + + case SIM_CURR_SEC_OP_NET_DISABLE: + case SIM_CURR_SEC_OP_NET_ENABLE: + case SIM_CURR_SEC_OP_NET_STATUS: + return SIM_FACILITY_PN; + + case SIM_CURR_SEC_OP_NS_DISABLE: + case SIM_CURR_SEC_OP_NS_ENABLE: + case SIM_CURR_SEC_OP_NS_STATUS: + return SIM_FACILITY_PU; + + case SIM_CURR_SEC_OP_SP_DISABLE: + case SIM_CURR_SEC_OP_SP_ENABLE: + case SIM_CURR_SEC_OP_SP_STATUS: + return SIM_FACILITY_PP; + + case SIM_CURR_SEC_OP_CP_DISABLE: + case SIM_CURR_SEC_OP_CP_ENABLE: + case SIM_CURR_SEC_OP_CP_STATUS: + return SIM_FACILITY_PC; + + default: + err("Invalid sec op [%d]", sec_op); + return -1; } } #endif @@ -2590,8 +2583,7 @@ static void on_response_sim_get_facility(TcorePending *p, gint data_len, tokens = tcore_at_tok_new(line); if (g_slist_length(tokens) < 1) { err("Invalid message"); - } - else { + } else { char *local_data = g_slist_nth_data(tokens, 0); if (local_data != NULL) { get_facility_resp.b_enable = atoi(local_data); @@ -2600,8 +2592,7 @@ static void on_response_sim_get_facility(TcorePending *p, gint data_len, (get_facility_resp.b_enable ? "Enabled" : "Disabled")); get_facility_resp.result = SIM_PIN_OPERATION_SUCCESS; - } - else { + } else { err("Invalid message"); } } @@ -2626,7 +2617,7 @@ static void on_response_sim_get_facility(TcorePending *p, gint data_len, * Operation - get_imsi * * Request - - * AT-Command: AT+CRSM= [,[,,,[,[,]]]] + * AT-Command: AT+CRSM= [, [, , , [, [, ]]]] * where, * * 176 READ BINARY @@ -2657,8 +2648,8 @@ static void on_response_sim_get_facility(TcorePending *p, gint data_len, * 1 active * * Success: - * OK - * +CRSM: ,[,] + * OK + * +CRSM: , [, ] * * , * Integer type containing the SIM information @@ -2836,7 +2827,7 @@ static TReturn __sim_get_msisdn(CoreObject *co_sim, UserRequest *ur) * String type values * * Success: - * OK + * OK * * Failure: * +CME ERROR: @@ -2963,9 +2954,9 @@ static TReturn s_sim_change_pins(CoreObject *co_sim, UserRequest *ur) * 1 active * * Success: when =2: - * OK - * +CLCK: [, [ - * +CLCK: , [...]] + * OK + * +CLCK: [, [ + * +CLCK: , [...]] * * Failure: */ diff --git a/src/s_sms.c b/src/s_sms.c old mode 100755 new mode 100644 index 37e468e..2ac595c --- a/src/s_sms.c +++ b/src/s_sms.c @@ -68,16 +68,16 @@ #define AT_SW1_SUCCESS 0x90 #define AT_SW2_SUCCESS 0 -#define SMS_SWAPBYTES16(x) (((x) & 0xffff0000) | (((x) & 0x0000ff00) >> 8) | (((x) & 0x000000ff) << 8)) +#define SMS_SWAPBYTES16(x) ((((x) & 0xff00) >> 8) | (((x) & 0x00ff) << 8)) /* Local functions */ static gchar __util_hexchar_to_int(gchar c); -static gboolean __util_hexstring_to_bytes(gchar *hex_str, - gchar **bytes, guint *bytes_len); +static gboolean __util_hexstring_to_bytes(char *hex_str, + char **bytes, guint *bytes_len); static long __util_encode_hex(const guchar *src, - long num_bytes, gchar *buf); + long num_bytes, char *buf); static guint __util_encode_pdu(const guchar sca[SMS_SMSP_ADDRESS_LEN], - const guchar *tpdu, guint tpdu_len, gchar *pdu); + const guchar *tpdu, guint tpdu_len, char *pdu); static gchar __util_hexchar_to_int(gchar c) { @@ -93,9 +93,9 @@ static gchar __util_hexchar_to_int(gchar c) } } -static gboolean __util_hexstring_to_bytes(gchar *hex_str, gchar **bytes, guint *bytes_len) +static gboolean __util_hexstring_to_bytes(char *hex_str, char **bytes, guint *bytes_len) { - gchar *byte_str; + char *byte_str; guint hex_str_len; guint i; @@ -104,7 +104,11 @@ static gboolean __util_hexstring_to_bytes(gchar *hex_str, gchar **bytes, guint * hex_str_len = strlen(hex_str); - byte_str = g_malloc0((hex_str_len / 2) + 1); + byte_str = g_try_malloc0((hex_str_len / 2) + 1); + if (byte_str == NULL) { + err("Memory allocation failed!!"); + return FALSE; + } dbg("Convert String to Binary!!!"); for (i = 0; i < hex_str_len; i += 2) { @@ -119,7 +123,7 @@ static gboolean __util_hexstring_to_bytes(gchar *hex_str, gchar **bytes, guint * return TRUE; } -static long __util_encode_hex(const guchar *src, long num_bytes, gchar *buf) +static long __util_encode_hex(const guchar *src, long num_bytes, char *buf) { long i, j; @@ -137,7 +141,7 @@ static long __util_encode_hex(const guchar *src, long num_bytes, gchar *buf) } static guint __util_encode_pdu(const guchar *sca, - const guchar *tpdu, guint tpdu_len, gchar *pdu) + const guchar *tpdu, guint tpdu_len, char *pdu) { guint sca_len = 0; unsigned char converted_sca[SMS_ENCODED_SCA_LEN_MAX]; @@ -145,8 +149,7 @@ static guint __util_encode_pdu(const guchar *sca, if (sca[0] == 0) { converted_sca[0] = 0; sca_len = 0; - } - else { + } else { unsigned int i; /* * For PDU, the SC Address length is the number of packed BCD bytes @@ -177,15 +180,14 @@ static int util_sms_decode_smsParameters(unsigned char *incoming, unsigned int l dbg(" RecordLen = %d", length); - if(incoming == NULL || params == NULL) + if (incoming == NULL || params == NULL) return FALSE; - alpha_id_len = length -SMS_SMSP_PARAMS_MAX_LEN; + alpha_id_len = length - SMS_SMSP_PARAMS_MAX_LEN; if (alpha_id_len > 0) { - if (alpha_id_len > SMS_SMSP_ALPHA_ID_LEN_MAX) { + if (alpha_id_len > SMS_SMSP_ALPHA_ID_LEN_MAX) alpha_id_len = SMS_SMSP_ALPHA_ID_LEN_MAX; - } for (i = 0; i < alpha_id_len; i++) { if (0xff == incoming[i]) { @@ -303,31 +305,33 @@ static int util_sms_decode_smsParameters(unsigned char *incoming, unsigned int l params->tpSvcCntrAddr.dialNumLen = 0; } - if ((params->paramIndicator & SMSPValidPID) == 0 && (alpha_id_len + nPIDOffset) < MAX_GSM_SMS_PARAM_RECORD_SIZE) { + if ((params->paramIndicator & SMSPValidPID) == 0 + && (alpha_id_len + nPIDOffset) < MAX_GSM_SMS_PARAM_RECORD_SIZE) params->tpProtocolId = incoming[alpha_id_len + nPIDOffset]; - } - if ((params->paramIndicator & SMSPValidDCS) == 0 && (alpha_id_len + nDCSOffset) < MAX_GSM_SMS_PARAM_RECORD_SIZE) { + + if ((params->paramIndicator & SMSPValidDCS) == 0 + && (alpha_id_len + nDCSOffset) < MAX_GSM_SMS_PARAM_RECORD_SIZE) params->tpDataCodingScheme = incoming[alpha_id_len + nDCSOffset]; - } - if ((params->paramIndicator & SMSPValidVP) == 0 && (alpha_id_len + nVPOffset) < MAX_GSM_SMS_PARAM_RECORD_SIZE) { + + if ((params->paramIndicator & SMSPValidVP) == 0 + && (alpha_id_len + nVPOffset) < MAX_GSM_SMS_PARAM_RECORD_SIZE) params->tpValidityPeriod = incoming[alpha_id_len + nVPOffset]; - } dbg(" Alpha Id(Len) = %d", (int) params->alphaIdLen); - for (i = 0; i < (int) params->alphaIdLen; i++) { + for (i = 0; i < (int) params->alphaIdLen; i++) dbg(" Alpha Id = [%d] [%c]", i, params->szAlphaId[i]); - } - dbg(" PID = %d",params->tpProtocolId); - dbg(" DCS = %d",params->tpDataCodingScheme); - dbg(" VP = %d",params->tpValidityPeriod); + + dbg(" PID = %d", params->tpProtocolId); + dbg(" DCS = %d", params->tpDataCodingScheme); + dbg(" VP = %d", params->tpValidityPeriod); return TRUE; } /* * Notification - SMS-DELIVER - * +CMT = [], (PDU mode enabled) + * +CMT = [], (PDU mode enabled) * * where, * alpha_id @@ -349,7 +353,7 @@ static gboolean on_notification_sms_incoming_msg(CoreObject *co, GSList *lines = NULL; char *line = NULL; int pdu_len = 0, no_of_tokens = 0; - gchar *byte_pdu = NULL; + char *byte_pdu = NULL; guint buf_len = 0; struct tnoti_sms_incoming_msg incoming_msg; @@ -413,8 +417,7 @@ static gboolean on_notification_sms_incoming_msg(CoreObject *co, if (sca_length == 0) { dbg("SCA length = 0"); memcpy(incoming_msg.msgInfo.tpduData, &byte_pdu[1], incoming_msg.msgInfo.msgLength); - } - else { + } else { incoming_msg.msgInfo.sca[0] = sca_length; memcpy(&(incoming_msg.msgInfo.sca[1]), &byte_pdu[1], sca_length); memcpy(incoming_msg.msgInfo.tpduData, &byte_pdu[sca_length+1], incoming_msg.msgInfo.msgLength); @@ -434,27 +437,31 @@ static gboolean on_notification_sms_incoming_msg(CoreObject *co, #if 0 /* To be used later */ static int __util_map_sms_err(int err) { - int sms_error=0; + int sms_error = 0; switch (err) { - case 300: //ME Failure; + case 300: /* ME Failure; */ sms_error = SMS_PHONE_FAILURE; break; - case 302: //Operation not allowed; - case 303: //Operation not supported; + + case 302: /* Operation not allowed; */ + case 303: /* Operation not supported; */ sms_error = SMS_OPERATION_NOT_SUPPORTED; break; - case 304: //Invalid PDU mode parameter; - case 305: //Invalid text mode parameter; + + case 304: /* Invalid PDU mode parameter; */ + case 305: /* Invalid text mode parameter; */ sms_error = SMS_INVALID_PARAMETER_FORMAT; break; - case 320: //memory failure; - case 321: //invalid memory index; - case 322: //memory full; + + case 320: /* memory failure; */ + case 321: /* invalid memory index; */ + case 322: /* memory full; */ sms_error = SMS_MEMORY_FAILURE; break; - case 330: //SCA unknown; - case 500: //Unknown error; + + case 330: /* SCA unknown; */ + case 500: /* Unknown error; */ default: sms_error = SMS_UNKNOWN; break; @@ -467,7 +474,7 @@ static int __util_map_sms_err(int err) static gboolean on_notification_sms_device_ready(CoreObject *co, const void *event_info, void *user_data) { - struct tnoti_sms_ready_status sms_ready_info = {0,}; + struct tnoti_sms_ready_status sms_ready_info = {0, }; dbg("SMS notification - [Device Ready]"); @@ -491,11 +498,10 @@ static void on_response_sms_send_more_msg(TcorePending *p, dbg("Enter"); - if (at_resp && at_resp->success) { + if (at_resp && at_resp->success) dbg("Response OK for AT+CMMS: More msgs to send!!"); - } else { + else err("Response NOK for AT+CMMS: More msgs to send"); - } /* Need not send any response */ } @@ -516,17 +522,17 @@ static void on_response_sms_send_sms(TcorePending *p, if (at_resp && at_resp->success) { dbg("Response OK"); if (at_resp->lines) { - const gchar *line; - gchar* line_token; + const char *line; + char *line_token; GSList *tokens = NULL; gint msg_ref = 0; - line = (const gchar *)at_resp->lines->data; + line = (const char *)at_resp->lines->data; tokens = tcore_at_tok_new(line); line_token = g_slist_nth_data(tokens, 0); if (line_token != NULL) { /* - * Response from MODEM for send SMS: +CMGS: [,] + * Response from MODEM for send SMS: +CMGS: [, ] * * Message Reference is not used by MSG_SERVER and application. * So Filling only result @@ -578,7 +584,7 @@ static void on_response_sms_get_msg_indices(TcorePending *p, line_count = g_slist_length(at_resp->lines); dbg("No. of lines: [%d]", line_count); - for (count = 0; countlines, count); dbg("gslist_line [%d] is [%s]", count, line); @@ -599,14 +605,12 @@ static void on_response_sms_get_msg_indices(TcorePending *p, continue; } } - }else { + } else { err("Invalid Response Received: NO Lines Present"); - if (count_info->storedMsgCnt.usedCount == 0) { // Check if used count is zero + if (count_info->storedMsgCnt.usedCount == 0) /* Check if used count is zero */ count_info->result = TCORE_RETURN_SUCCESS; - } } - } - else { + } else { err("RESPONSE NOK"); } @@ -638,6 +642,10 @@ static void on_response_sms_get_msg_count(TcorePending *p, ur = tcore_pending_ref_user_request(p); count_info = g_try_malloc0(sizeof(struct tresp_sms_get_storedMsgCnt)); + if (NULL == count_info) { + err("Memory Allocation failed for count_info"); + return; + } count_info->result = TCORE_RETURN_FAILURE; if (at_resp && at_resp->success) { @@ -646,7 +654,7 @@ static void on_response_sms_get_msg_count(TcorePending *p, char *line = NULL, *line_token = NULL; line = (char *)at_resp->lines->data; - dbg("line: [%s]",line); + dbg("line: [%s]", line); /* * Tokenize @@ -689,16 +697,13 @@ static void on_response_sms_get_msg_count(TcorePending *p, return; - } - else { + } else { dbg("No records...!!!"); } - } - else { + } else { err("Invalid Response Received: NO Lines Present"); } - } - else { + } else { err("RESPONSE NOK"); } @@ -732,7 +737,7 @@ static void on_response_sms_get_sca(TcorePending *p, if (at_resp->lines) { GSList *tokens = NULL; const char *sca_tok_addr; - gchar *line = NULL, *sca_addr = NULL, *sca_toa = NULL; + char *line = NULL, *sca_addr = NULL, *sca_toa = NULL; line = (char *)at_resp->lines->data; tokens = tcore_at_tok_new(line); @@ -742,7 +747,7 @@ static void on_response_sms_get_sca(TcorePending *p, sca_addr = tcore_at_tok_extract(sca_tok_addr); dbg("SCA: [%s] SCA-TOA: [%s]", sca_addr, sca_toa); if ((NULL != sca_addr) && (NULL != sca_toa)) { - gchar *sca; + char *sca; guint sca_len = 0; __util_hexstring_to_bytes(sca_addr, &sca, &sca_len); /*TODO : Check*/ @@ -814,7 +819,7 @@ static void on_response_atmodem_sms_send_deliver_report(TcorePending *p, { const struct tcore_at_response *at_resp = data; UserRequest *ur; - struct tresp_sms_set_delivery_report set_deliver_report_rsp = {0,}; + struct tresp_sms_set_delivery_report set_deliver_report_rsp = {0, }; dbg("Enter"); @@ -844,7 +849,7 @@ static void on_response_sms_get_params(TcorePending *pending, int data_len, cons int sw1 = 0, sw2 = 0; const char *line = NULL; char *line_token = NULL; - GSList *tokens=NULL; + GSList *tokens = NULL; char *hexData = NULL; char *recordData = NULL; int i = 0; @@ -869,9 +874,8 @@ static void on_response_sms_get_params(TcorePending *pending, int data_len, cons if (line_token != NULL) { sw2 = atoi(line_token); dbg("sw2 is %d", sw2); - if ((sw1 == 0x90 && sw2 == 0x00) || sw1 == 0x91) { + if ((sw1 == 0x90 && sw2 == 0x00) || sw1 == 0x91) resp_get_params.result = SMS_SENDSMS_SUCCESS; - } } else { dbg("sw2 is NULL"); } @@ -890,7 +894,6 @@ static void on_response_sms_get_params(TcorePending *pending, int data_len, cons dbg("SCAddr = %d [%02x]", i, resp_get_params.paramsInfo.tpSvcCntrAddr.diallingNum[i]); free(recordData); - //free(hexData); } else { dbg("No response"); @@ -914,7 +917,7 @@ static void on_response_sms_get_params(TcorePending *pending, int data_len, cons static void on_response_sms_set_params(TcorePending *pending, int data_len, const void *data, void *user_data) { UserRequest *ur; - struct tresp_sms_set_params resp_set_sms_params= {0, }; + struct tresp_sms_set_params resp_set_sms_params = {0, }; const struct tcore_at_response *at_resp = data; resp_set_sms_params.result = SMS_DEVICE_FAILURE; @@ -922,12 +925,12 @@ static void on_response_sms_set_params(TcorePending *pending, int data_len, cons if (at_resp && at_resp->success) { dbg("RESPONSE OK"); if (at_resp->lines) { - GSList *tokens=NULL; - int sw1 =0 , sw2 = 0; + GSList *tokens = NULL; + int sw1 = 0, sw2 = 0; const char *line = NULL; char *line_token = NULL; - line = (const char *) at_resp->lines->data; + line = (const char *)at_resp->lines->data; tokens = tcore_at_tok_new(line); line_token = g_slist_nth_data(tokens, 0); @@ -937,6 +940,7 @@ static void on_response_sms_set_params(TcorePending *pending, int data_len, cons err("sw1 is NULL"); goto EXIT; } + line_token = g_slist_nth_data(tokens, 1); if (line_token != NULL) { sw2 = atoi(line_token); @@ -944,12 +948,13 @@ static void on_response_sms_set_params(TcorePending *pending, int data_len, cons err("sw2 is NULL"); goto EXIT; } + dbg("sw1 - %x sw2 - %x", sw1, sw2); - if (((sw1 == AT_SW1_SUCCESS) && (sw2 == AT_SW2_SUCCESS)) || (sw1 == 0x91)) { + if (((sw1 == AT_SW1_SUCCESS) && (sw2 == AT_SW2_SUCCESS)) || (sw1 == 0x91)) resp_set_sms_params.result = SMS_SENDSMS_SUCCESS; - } else { + else err("Status Word 1 and Status Word 2 are invalid"); - } + EXIT: tcore_at_tok_free(tokens); } else { @@ -977,8 +982,8 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, char *line = NULL , *line_token = NULL; int sw1 = 0 , sw2 = 0, *smsp_record_len = NULL; int sim_type = 0; - GSList *tokens=NULL; - CoreObject *co_sim = NULL; //need this to get the sim type GSM/USIM + GSList *tokens = NULL; + CoreObject *co_sim = NULL; /* need this to get the sim type GSM/USIM */ TcorePlugin *plugin = NULL; char *hexData = NULL; @@ -995,22 +1000,21 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, if (at_resp->lines) { line = (char *) at_resp->lines->data; - /*+CRSM: ,[,]*/ + /*+CRSM: , [, ]*/ dbg("line is %s", line); tokens = tcore_at_tok_new(line); line_token = g_slist_nth_data(tokens, 0); - if (line_token != NULL) { + if (line_token != NULL) sw1 = atoi(line_token); - } else { + else dbg("sw1 is NULL"); - } + line_token = g_slist_nth_data(tokens, 1); if (line_token != NULL) { sw2 = atoi(line_token); - if ((sw1 == 144) && (sw2 == 0)) { + if ((sw1 == 144) && (sw2 == 0)) resp_get_param_cnt.result = SMS_SENDSMS_SUCCESS; - } } else { dbg("sw2 is NULL"); } @@ -1039,6 +1043,11 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, dbg("hexData: %s", hexData + 1); recordData = util_hexStringToBytes(hexData); + if (!recordData) { + err("util_hexStringToBytes Failed!!"); + tcore_at_tok_free(tokens); + return; + } tcore_util_hex_dump(" ", strlen(hexData) / 2, recordData); @@ -1046,7 +1055,7 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, co_sim = tcore_plugin_ref_core_object(tcore_pending_ref_plugin(pending), CORE_OBJECT_TYPE_SIM); sim_type = tcore_sim_get_type(co_sim); - dbg("sim type is %d",sim_type); + dbg("sim type is %d", sim_type); if (sim_type == SIM_TYPE_USIM) { /* @@ -1075,97 +1084,112 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, dbg("tag_len=[%d]", tag_len); /* FCP file descriptor - file type, accessibility, DF, ADF etc*/ if (*ptr_data == 0x82) { - /* increment to next byte */ - ptr_data++; - /*2 or 5 value*/ - ptr_data++; - /* unsigned char file_desc_len = *ptr_data++;*/ - /* s_dbg("file descriptor length: [%d]", file_desc_len);*/ - /* TBD: currently capture only file type : ignore sharable, non sharable, working, internal etc*/ - /* consider only last 3 bits*/ - file_type_tag = file_type_tag & (*ptr_data); - - switch (file_type_tag) { /* increment to next byte */ ptr_data++; + /*2 or 5 value*/ + ptr_data++; + + /* consider only last 3 bits*/ + file_type_tag = file_type_tag & (*ptr_data); + + switch (file_type_tag) { + /* increment to next byte */ + ptr_data++; + case 0x1: dbg("Getting FileType: [Transparent file type]"); /* increment to next byte */ ptr_data++; - file_type = 0x01; //SIM_FTYPE_TRANSPARENT - /* data coding byte - value 21 */ + file_type = 0x01; /* SIM_FTYPE_TRANSPARENT */ + + /* data coding byte - value 21 */ ptr_data++; - break; + break; case 0x2: dbg("Getting FileType: [Linear fixed file type]"); /* increment to next byte */ ptr_data++; - /* data coding byte - value 21 */ + + /* data coding byte - value 21 */ ptr_data++; - /* 2bytes */ + + /* 2bytes */ memcpy(&record_len, ptr_data, 2); + /* swap bytes */ record_len = SMS_SWAPBYTES16(record_len); ptr_data = ptr_data + 2; num_of_records = *ptr_data++; + /* Data lossy conversation from enum (int) to unsigned char */ - file_type = 0x02; // SIM_FTYPE_LINEAR_FIXED - break; + file_type = 0x02; /* SIM_FTYPE_LINEAR_FIXED */ + break; case 0x6: dbg(" Cyclic fixed file type"); /* increment to next byte */ ptr_data++; - /* data coding byte - value 21 */ + + /* data coding byte - value 21 */ ptr_data++; - /* 2bytes */ + + /* 2bytes */ memcpy(&record_len, ptr_data, 2); + /* swap bytes */ record_len = SMS_SWAPBYTES16(record_len); ptr_data = ptr_data + 2; num_of_records = *ptr_data++; - file_type = 0x04; //SIM_FTYPE_CYCLIC - break; + file_type = 0x04; /* SIM_FTYPE_CYCLIC */ + break; default: dbg("not handled file type [0x%x]", *ptr_data); - break; + break; } } else { dbg("INVALID FCP received - DEbug!"); - //free(hexData); free(recordData); tcore_at_tok_free(tokens); + return; } - /*File identifier - file id?? */ // 0x84,0x85,0x86 etc are currently ignored and not handled + /* + * File identifier - file id?? + * + * 0x84, 0x85, 0x86 etc are currently ignored and not handled + */ if (*ptr_data == 0x83) { /* increment to next byte */ ptr_data++; file_id_len = *ptr_data++; memcpy(&file_id, ptr_data, file_id_len); - /* swap bytes */ + + /* swap bytes */ file_id = SMS_SWAPBYTES16(file_id); ptr_data = ptr_data + 2; dbg("Getting FileID=[0x%x]", file_id); } else { dbg("INVALID FCP received - DEbug!"); - //free(hexData); free(recordData); tcore_at_tok_free(tokens); + return; } - /* proprietary information */ + /* proprietary information */ if (*ptr_data == 0xA5) { unsigned short prop_len; + /* increment to next byte */ ptr_data++; + /* length */ prop_len = *ptr_data; + /* skip data */ ptr_data = ptr_data + prop_len + 1; } else { @@ -1174,15 +1198,15 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, /* life cycle status integer [8A][length:0x01][status]*/ /* - status info b8~b1 - 00000000 : No information given - 00000001 : creation state - 00000011 : initialization state - 000001-1 : operation state -activated - 000001-0 : operation state -deactivated - 000011-- : Termination state - b8~b5 !=0, b4~b1=X : Proprietary - Any other value : RFU + * status info b8~b1 + * 00000000 : No information given + * 00000001 : creation state + * 00000011 : initialization state + * 000001-1 : operation state -activated + * 000001-0 : operation state -deactivated + * 000011-- : Termination state + * b8~b5 !=0, b4~b1=X : Proprietary + * Any other value : RFU */ if (*ptr_data == 0x8A) { /* increment to next byte */ @@ -1191,22 +1215,22 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, ptr_data++; switch (*ptr_data) { - case 0x04: - case 0x06: - dbg(" operation state -deactivated"); - ptr_data++; - break; - - case 0x05: - case 0x07: - dbg(" operation state -activated"); - ptr_data++; - break; - - default: - dbg(" DEBUG! LIFE CYCLE STATUS =[0x%x]",*ptr_data); - ptr_data++; - break; + case 0x04: + case 0x06: + dbg(" operation state -deactivated"); + ptr_data++; + break; + + case 0x05: + case 0x07: + dbg(" operation state -activated"); + ptr_data++; + break; + + default: + dbg(" DEBUG! LIFE CYCLE STATUS =[0x%x]", *ptr_data); + ptr_data++; + break; } } @@ -1214,12 +1238,15 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, if (*ptr_data == 0x86 || *ptr_data == 0x8B || *ptr_data == 0x8C || *ptr_data == 0xAB) { /* increment to next byte */ ptr_data++; + /* if tag length is 3 */ if (*ptr_data == 0x03) { /* increment to next byte */ ptr_data++; + /* EFARR file id */ memcpy(&arr_file_id, ptr_data, 2); + /* swap byes */ arr_file_id = SMS_SWAPBYTES16(arr_file_id); ptr_data = ptr_data + 2; @@ -1228,15 +1255,14 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, } else { /* if tag length is not 3 */ /* ignoring bytes */ - // ptr_data = ptr_data + 4; dbg("Useless security attributes, so jump to next tag"); ptr_data = ptr_data + (*ptr_data + 1); } } else { dbg("INVALID FCP received[0x%x] - DEbug!", *ptr_data); - //free(hexData); free(recordData); tcore_at_tok_free(tokens); + return; } @@ -1244,22 +1270,25 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, /* file size excluding structural info*/ if (*ptr_data == 0x80) { - /* for EF file size is body of file and for Linear or cyclic it is + /* + * for EF file size is body of file and for Linear or cyclic it is * number of recXsizeof(one record) */ /* increment to next byte */ ptr_data++; + /* length is 1 byte - value is 2 bytes or more */ ptr_data++; memcpy(&file_size, ptr_data, 2); + /* swap bytes */ file_size = SMS_SWAPBYTES16(file_size); ptr_data = ptr_data + 2; } else { dbg("INVALID FCP received - Debug!"); - //free(hexData); free(recordData); tcore_at_tok_free(tokens); + return; } @@ -1268,9 +1297,11 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, int len; /* increment to next byte */ ptr_data++; + /* length */ len = *ptr_data; dbg("len=[%d]", len); + /* ignored bytes */ ptr_data = ptr_data + 3; } else { @@ -1278,114 +1309,126 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, /* 0x81 is optional tag?? check out! so do not return -1 from here! */ /* return -1; */ } - /*short file identifier ignored*/ + + /* short file identifier ignored */ if (*ptr_data == 0x88) { dbg("0x88: Do Nothing"); - /*DO NOTHING*/ + /* DO NOTHING */ } } else { dbg("INVALID FCP received - Debug!"); - //free(hexData); free(recordData); tcore_at_tok_free(tokens); + return; } } else if (sim_type == SIM_TYPE_GSM) { - /* ignore RFU byte1 and byte2 */ + /* ignore RFU byte1 and byte2 */ ptr_data++; ptr_data++; - /* file size */ - //file_size = p_info->response_len; + + /* file size */ memcpy(&file_size, ptr_data, 2); + /* swap bytes */ file_size = SMS_SWAPBYTES16(file_size); - /* parsed file size */ + + /* parsed file size */ ptr_data = ptr_data + 2; - /* file id */ + + /* file id */ memcpy(&file_id, ptr_data, 2); file_id = SMS_SWAPBYTES16(file_id); dbg(" FILE id --> [%x]", file_id); ptr_data = ptr_data + 2; + /* save file type - transparent, linear fixed or cyclic */ file_type_tag = (*(ptr_data + 7)); switch (*ptr_data) { - case 0x0: - /* RFU file type */ - dbg(" RFU file type- not handled - Debug!"); - break; + case 0x0: + /* RFU file type */ + dbg(" RFU file type- not handled - Debug!"); + break; + + case 0x1: + /* MF file type */ + dbg(" MF file type - not handled - Debug!"); + break; + + case 0x2: + /* DF file type */ + dbg(" DF file type - not handled - Debug!"); + break; + + case 0x4: + /* EF file type */ + dbg(" EF file type [%d] ", file_type_tag); + /* increment to next byte */ + ptr_data++; - case 0x1: - /* MF file type */ - dbg(" MF file type - not handled - Debug!"); - break; + if (file_type_tag == 0x00 || file_type_tag == 0x01) { + /* increament to next byte as this byte is RFU */ + ptr_data++; + file_type = + (file_type_tag == 0x00) ? 0x01 : 0x02; /* SIM_FTYPE_TRANSPARENT:SIM_FTYPE_LINEAR_FIXED; */ + } else { + /* increment to next byte */ + ptr_data++; + /* For a cyclic EF all bits except bit 7 are RFU; b7=1 indicates that */ + /* the INCREASE command is allowed on the selected cyclic file. */ + file_type = 0x04; /* SIM_FTYPE_CYCLIC; */ + } - case 0x2: - /* DF file type */ - dbg(" DF file type - not handled - Debug!"); - break; + /* bytes 9 to 11 give SIM file access conditions */ + ptr_data++; - case 0x4: - /* EF file type */ - dbg(" EF file type [%d] ", file_type_tag); - /* increment to next byte */ - ptr_data++; + /* byte 10 has one nibble that is RF U and another for INCREASE which is not used currently */ + ptr_data++; - if (file_type_tag == 0x00 || file_type_tag == 0x01) { - /* increament to next byte as this byte is RFU */ - ptr_data++; - file_type = - (file_type_tag == 0x00) ? 0x01 : 0x02; // SIM_FTYPE_TRANSPARENT:SIM_FTYPE_LINEAR_FIXED; - } else { - /* increment to next byte */ - ptr_data++; - /* For a cyclic EF all bits except bit 7 are RFU; b7=1 indicates that */ - /* the INCREASE command is allowed on the selected cyclic file. */ - file_type = 0x04; // SIM_FTYPE_CYCLIC; - } - /* bytes 9 to 11 give SIM file access conditions */ - ptr_data++; - /* byte 10 has one nibble that is RF U and another for INCREASE which is not used currently */ - ptr_data++; - /* byte 11 is invalidate and rehabilate nibbles */ - ptr_data++; - /* byte 12 - file status */ - ptr_data++; - /* byte 13 - GSM specific data */ - ptr_data++; - /* byte 14 - structure of EF - transparent or linear or cyclic , already saved above */ - ptr_data++; - /* byte 15 - length of record for linear and cyclic , for transparent it is set to 0x00. */ - record_len = *ptr_data; - dbg("record length[%d], file size[%d]", record_len, file_size); + /* byte 11 is invalidate and rehabilate nibbles */ + ptr_data++; - if (record_len != 0) - num_of_records = (file_size / record_len); + /* byte 12 - file status */ + ptr_data++; - dbg("Number of records [%d]", num_of_records); - break; + /* byte 13 - GSM specific data */ + ptr_data++; - default: - dbg(" not handled file type"); - break; + /* byte 14 - structure of EF - transparent or linear or cyclic , already saved above */ + ptr_data++; + + /* byte 15 - length of record for linear and cyclic , for transparent it is set to 0x00. */ + record_len = *ptr_data; + dbg("record length[%d], file size[%d]", record_len, file_size); + + if (record_len != 0) + num_of_records = (file_size / record_len); + + dbg("Number of records [%d]", num_of_records); + break; + + default: + dbg(" not handled file type"); + break; } } else { dbg(" Card Type - UNKNOWN [%d]", sim_type); } - dbg("EF[0x%x] size[%ld] Type[0x%x] NumOfRecords[%ld] RecordLen[%ld]", file_id, file_size, file_type, num_of_records, record_len); + dbg("EF[0x%x] size[%ld] Type[0x%x] NumOfRecords[%ld] RecordLen[%ld]", + file_id, file_size, file_type, num_of_records, record_len); resp_get_param_cnt.recordCount = num_of_records; resp_get_param_cnt.result = SMS_SUCCESS; - //TO Store smsp record length in the property + /* TO Store smsp record length in the property */ plugin = tcore_pending_ref_plugin(pending); smsp_record_len = tcore_plugin_ref_property(plugin, "SMSPRECORDLEN"); memcpy(smsp_record_len, &record_len, sizeof(int)); dbg("Property Updated"); free(recordData); - //free(hexData); } else { /*2. SIM access fail case*/ dbg("SIM access fail"); @@ -1401,15 +1444,14 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, dbg("RESPONSE NOK"); } - if (ur) { - tcore_user_request_send_response(ur, - TRESP_SMS_GET_PARAMCNT, - sizeof(struct tresp_sms_get_paramcnt), &resp_get_param_cnt); - } else { + if (ur) + tcore_user_request_send_response(ur, + TRESP_SMS_GET_PARAMCNT, + sizeof(struct tresp_sms_get_paramcnt), &resp_get_param_cnt); + else err("ur is NULL"); - } - if(tokens) + if (tokens) tcore_at_tok_free(tokens); } @@ -1420,15 +1462,15 @@ static void on_response_sms_get_param_count(TcorePending *pending, int data_len, * * Request - * AT-Command: AT+CMGS - * For PDU mode (+CMGF=0): - * +CMGS= - * PDU is given + * For PDU mode (+CMGF=0): + * +CMGS= + * PDU is given * where, * Length of the pdu. * PDU to send. * * Response - - *+CMGS: [,] + *+CMGS: [, ] * OK * Failure: * +CMS ERROR: @@ -1500,14 +1542,14 @@ static TReturn send_umts_msg(CoreObject *co, UserRequest *ur) * * Request - * AT-Command: AT+CPMS - * +CPMS=[, [,]] + * +CPMS=[, [, ]] * where * memory storage to read. * * Response - * Success: (Single-line output) - * +CPMS: ,,,,,, - * ,, + * +CPMS: , , , , , , + * , , * OK * * Failure: @@ -1539,13 +1581,12 @@ static TReturn sms_get_msg_count(CoreObject *co, UserRequest *ur) * AT-Command: AT+CSCA? * * Response - - * Success: Single-Line - * +CSCA: , - * OK + * Success: Single-Line + * +CSCA: , + * OK * where * Service center number * address type of SCA - * */ #ifdef EMUL_SUPPORTED static TReturn get_sca(CoreObject *co, UserRequest *ur) @@ -1573,22 +1614,22 @@ static TReturn get_sca(CoreObject *co, UserRequest *ur) * * Request - * AT-Command: AT+CSCA - * AT+CSCA=[,] + * AT+CSCA=[, ] * where * Service center number * address type of SCA * * Response - * Success: No result - * OK + * OK * * Failure: - * +CMS ERROR: + * +CMS ERROR: */ #ifdef EMUL_SUPPORTED static TReturn set_sca(CoreObject *co, UserRequest *ur) { - gchar *at_cmd; + char *at_cmd; const struct treq_sms_set_sca *set_sca_req; gint address_type; TReturn ret; @@ -1602,7 +1643,7 @@ static TReturn set_sca(CoreObject *co, UserRequest *ur) address_type = 129; /* AT Command */ - at_cmd = g_strdup_printf("AT+CSCA=\"%s\",%d", set_sca_req->scaInfo.diallingNum, address_type); + at_cmd = g_strdup_printf("AT+CSCA=\"%s\", %d", set_sca_req->scaInfo.diallingNum, address_type); /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(co, @@ -1634,7 +1675,7 @@ static TReturn set_sca(CoreObject *co, UserRequest *ur) static TReturn set_delivery_report(CoreObject *co, UserRequest *ur) { const struct treq_sms_set_delivery_report *set_deliver_report_req = NULL; - gchar *at_cmd; + char *at_cmd; TReturn ret; dbg("Enter"); @@ -1642,10 +1683,10 @@ static TReturn set_delivery_report(CoreObject *co, UserRequest *ur) set_deliver_report_req = tcore_user_request_ref_data(ur, NULL); /*AT Command*/ - if(set_deliver_report_req->rspType == SMS_SENDSMS_SUCCESS) + if (set_deliver_report_req->rspType == SMS_SENDSMS_SUCCESS) at_cmd = g_strdup_printf("AT+CNMA=0%s", "\r"); else - at_cmd = g_strdup_printf("AT+CNMA=2,3%s%x%s", "/n", 0x00ff00, ""); + at_cmd = g_strdup_printf("AT+CNMA=2, 3%s%x%s", "/n", 0x00ff00, ""); /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(co, @@ -1675,11 +1716,16 @@ static TReturn get_sms_params(CoreObject *co, UserRequest *ur) get_sms_params_data = tcore_user_request_ref_data(ur, NULL); smsp_record_len = (int *)tcore_plugin_ref_property(tcore_object_ref_plugin(co), "SMSPRECORDLEN"); + if (NULL == smsp_record_len) { + err("SMSP record is NULL"); + return TCORE_RETURN_FAILURE; + } + record_len = *smsp_record_len; dbg("record len from property %d", record_len); - //AT+CRSM=command>[,[,,,[,[,]]]] - cmd_str = g_strdup_printf("AT+CRSM=178,28482,%d,4,%d", (get_sms_params_data->index+1), record_len); + /* AT+CRSM=command>[, [, , , [, [, ]]]] */ + cmd_str = g_strdup_printf("AT+CRSM=178, 28482, %d, 4, %d", (get_sms_params_data->index+1), record_len); ret = tcore_prepare_and_send_at_request(co, cmd_str, "+CRSM", @@ -1713,6 +1759,11 @@ static TReturn set_sms_params(CoreObject *co, UserRequest *ur) set_sms_params_data = (struct treq_sms_set_params *)tcore_user_request_ref_data(ur, NULL); smsp_record_len = (int *)tcore_plugin_ref_property(tcore_object_ref_plugin(co), "SMSPRECORDLEN"); + if (NULL == smsp_record_len) { + err("SMSP record is NULL"); + return TCORE_RETURN_FAILURE; + } + smsp_record_length = *smsp_record_len; dbg("smsp_record_length [%d]", smsp_record_length); @@ -1733,8 +1784,8 @@ static TReturn set_sms_params(CoreObject *co, UserRequest *ur) util_byte_to_hex((const char *)encoded_data, (char *)params_hex_data, smsp_record_length); - cmd_str = g_strdup_printf("AT+CRSM=220,28482,%d,4,%d,\"%s\"", - (set_sms_params_data->params.recordIndex+1),smsp_record_length,params_hex_data); + cmd_str = g_strdup_printf("AT+CRSM=220, 28482, %d, 4, %d, \"%s\"", + (set_sms_params_data->params.recordIndex+1), smsp_record_length, params_hex_data); ret = tcore_prepare_and_send_at_request(co, cmd_str, "+CRSM:", @@ -1760,8 +1811,8 @@ static TReturn get_param_count(CoreObject *co, UserRequest *ur) dbg("Entry"); - //AT+CRSM=command>[,[,,,[,[,]]]] - cmd_str = g_strdup_printf("AT+CRSM=192,28482"); + /* AT+CRSM=command>[, [, , , [, [, ]]]] */ + cmd_str = g_strdup_printf("AT+CRSM=192, 28482"); tcore_util_hex_dump(" ", strlen(cmd_str), (void *)cmd_str); @@ -1833,7 +1884,7 @@ gboolean s_sms_init(TcorePlugin *p, TcoreHal *hal) tcore_plugin_link_property(p, "SMS", data); - //storing smsp record length + /* Storing smsp record length */ smsp_record_len = g_try_malloc0(sizeof(int)); tcore_plugin_link_property(p, "SMSPRECORDLEN", smsp_record_len); diff --git a/src/s_ss.c b/src/s_ss.c old mode 100755 new mode 100644 index bb603c7..a6bdffb --- a/src/s_ss.c +++ b/src/s_ss.c @@ -40,14 +40,18 @@ #include "util.h" enum telephony_ss_opcode { - TIZEN_SS_OPCO_DEACTIVATE=0x01, - TIZEN_SS_OPCO_ACTIVATE, - TIZEN_SS_OPCO_REG, - TIZEN_SS_OPCO_DEREG, - TIZEN_SS_OPCO_MAX + TIZEN_SS_OPCO_DEACTIVATE = 0x01, + TIZEN_SS_OPCO_ACTIVATE, + TIZEN_SS_OPCO_REG, + TIZEN_SS_OPCO_DEREG, + TIZEN_SS_OPCO_MAX } ; -static void _ss_ussd_response(UserRequest *ur, const char* ussd_str, +struct ss_resp_cb_data { + enum telephony_ss_opcode opco; +}; + +static void _ss_ussd_response(UserRequest *ur, const char *ussd_str, enum telephony_ss_ussd_type type, enum telephony_ss_ussd_status status) { struct tresp_ss_ussd resp; @@ -66,16 +70,14 @@ static void _ss_ussd_response(UserRequest *ur, const char* ussd_str, if (len < MAX_SS_USSD_LEN) { memcpy(resp.str, ussd_str, len); - resp.str[ len ] = '\0'; - } - else { + resp.str[len] = '\0'; + } else { memcpy(resp.str, ussd_str, MAX_SS_USSD_LEN); - resp.str[ MAX_SS_USSD_LEN - 1 ] = '\0'; + resp.str[MAX_SS_USSD_LEN - 1] = '\0'; } dbg("resp.str : %s", resp.str); - } - else { + } else { memset(resp.str, '\0', MAX_SS_USSD_LEN); } @@ -85,7 +87,7 @@ static void _ss_ussd_response(UserRequest *ur, const char* ussd_str, } static void _ss_ussd_notification(TcorePlugin *p, - const char* ussd_str, enum telephony_ss_ussd_status status) + const char *ussd_str, enum telephony_ss_ussd_status status) { CoreObject *o = 0; struct tnoti_ss_ussd noti; @@ -102,14 +104,12 @@ static void _ss_ussd_notification(TcorePlugin *p, if (len < MAX_SS_USSD_LEN) { memcpy(noti.str, ussd_str, len); - noti.str[ len ] = '\0'; - } - else { + noti.str[len] = '\0'; + } else { memcpy(noti.str, ussd_str, MAX_SS_USSD_LEN); - noti.str[ MAX_SS_USSD_LEN - 1 ] = '\0'; + noti.str[MAX_SS_USSD_LEN - 1] = '\0'; } - } - else { + } else { memset(noti.str, '\0', MAX_SS_USSD_LEN); } @@ -119,7 +119,7 @@ static void _ss_ussd_notification(TcorePlugin *p, o, TNOTI_SS_USSD, sizeof(struct tnoti_ss_ussd), - (void*)¬i); + (void *)¬i); } static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *user_data) @@ -135,13 +135,13 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u UssdSession *ussd_session = 0; char *ussd_str = 0; TcorePlugin *p = 0; - int m=0, dcs=0; + int m = 0, dcs = 0; p = tcore_object_ref_plugin(o); ussd_session = tcore_ss_ussd_get_session(o); - lines = (GSList *) data; + lines = (GSList *)data; if (g_slist_length(lines) != 1) { dbg("Unsolicited message but multiple lines"); return TRUE; @@ -153,28 +153,33 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u if (NULL == resp_str) { err("Status is missing from +CUSD Notification"); goto out; - } - else { + } else { m = atoi(resp_str); switch (m) { case 0: status = SS_USSD_NO_ACTION_REQUIRE; break; + case 1: status = SS_USSD_ACTION_REQUIRE; break; + case 2: status = SS_USSD_TERMINATED_BY_NET; break; + case 3: status = SS_USSD_OTHER_CLIENT; break; + case 4: status = SS_USSD_NOT_SUPPORT; break; + case 5: status = SS_USSD_TIME_OUT; break; + default: dbg("unsupported m : %d", m); status = SS_USSD_MAX; @@ -207,8 +212,8 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u case TCORE_DCS_TYPE_8_BIT: { if (strlen(resp_str) > 0) { ussd_str = g_new0(char, strlen(resp_str) + 1); - memcpy(ussd_str,resp_str, strlen(resp_str)); - ussd_str[ strlen(resp_str) ] = '\0'; + memcpy(ussd_str, resp_str, strlen(resp_str)); + ussd_str[strlen(resp_str)] = '\0'; } } break; @@ -218,7 +223,7 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u if (ussd_session) { UserRequest *ur = 0; enum telephony_ss_ussd_type type; - tcore_ss_ussd_get_session_data(ussd_session, (void**)&ur); + tcore_ss_ussd_get_session_data(ussd_session, (void **)&ur); if (!ur) { err("ur : (NULL)"); @@ -232,8 +237,7 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u return TRUE; } } - } - else { + } else { warn("No DCS string! Using default DCS value"); } @@ -247,20 +251,19 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u UserRequest *ur = 0; enum telephony_ss_ussd_type type; - tcore_ss_ussd_get_session_data(ussd_session, (void**)&ur); + tcore_ss_ussd_get_session_data(ussd_session, (void **)&ur); if (!ur) { err("ur : (NULL)"); return TRUE; } type = (enum telephony_ss_ussd_type)tcore_ss_ussd_get_session_type(ussd_session); - _ss_ussd_response(ur, (const char*)ussd_str, type, status); + _ss_ussd_response(ur, (const char *)ussd_str, type, status); g_free(ussd_str); - } - else { + } else { tcore_ss_ussd_create_session(o, TCORE_SS_USSD_TYPE_NETWORK_INITIATED, 0, 0); - _ss_ussd_notification(p, (const char*)ussd_str, status); + _ss_ussd_notification(p, (const char *)ussd_str, status); g_free(ussd_str); } @@ -271,10 +274,10 @@ static gboolean on_notification_ss_ussd(CoreObject *o, const void *data, void *u if (ussd_session) { UserRequest *ur = 0; - tcore_ss_ussd_get_session_data(ussd_session, (void**)&ur); - if (ur) { + tcore_ss_ussd_get_session_data(ussd_session, (void **)&ur); + if (ur) tcore_user_request_unref(ur); - } + tcore_ss_ussd_destroy_session(ussd_session); } @@ -453,15 +456,28 @@ static void on_response_atmodem_ss_set_barring(TcorePending *p, int data_len, const void *data, void *user_data) { struct tresp_ss_barring resp = {0, }; + const struct treq_ss_barring *req = NULL; + struct ss_resp_cb_data *cb_data = user_data; const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; dbg("Entry"); + ur = tcore_pending_ref_user_request(p); if (at_resp) { if (at_resp->success) { - err("Response: [OK]"); + dbg("Response: [OK]"); resp.err = SS_ERROR_NONE; + + req = tcore_user_request_ref_data(ur, NULL); + resp.record_num = 1; + resp.record = g_malloc0(sizeof(struct barring_info) * resp.record_num); + resp.record[0].class = req->class; + resp.record[0].mode = req->mode; + if (cb_data->opco == TIZEN_SS_OPCO_ACTIVATE) + resp.record[0].status = SS_STATUS_ACTIVATE; + else + resp.record[0].status = SS_STATUS_DEACTIVATE; } else { err("Response: [NOK] - [%s]", at_resp->final_response); resp.err = SS_ERROR_UNKNOWNERROR; @@ -470,20 +486,20 @@ static void on_response_atmodem_ss_set_barring(TcorePending *p, err("No response data"); } - ur = tcore_pending_ref_user_request(p); if (ur) { - /*TODO : - req_buf = (struct treq_ss_barring *) tcore_user_request_ref_data(ur, 0); - req_buf = (struct treq_ss_barring *) tcore_user_request_ref_data(ur, 0); - resp.record->class = req_buf.class; - resp.record->mode = req_buf.mode; - Confirm data to be passed up and send accordingly*/ - tcore_user_request_send_response(ur, - TRESP_SS_BARRING_ACTIVATE, + enum tcore_response_command resp_cmd; + if (cb_data->opco == TIZEN_SS_OPCO_ACTIVATE) + resp_cmd = TRESP_SS_BARRING_ACTIVATE; + else + resp_cmd = TRESP_SS_BARRING_DEACTIVATE; + tcore_user_request_send_response(ur, resp_cmd, sizeof(struct tresp_ss_barring), &resp); } else { err("ur is NULL"); } + + g_free(resp.record); + g_free(cb_data); } static void on_response_atmodem_ss_get_barring_status(TcorePending *p, @@ -500,19 +516,17 @@ static void on_response_atmodem_ss_get_barring_status(TcorePending *p, dbg("Entry"); ur = tcore_pending_ref_user_request(p); - if (ur) { - req_buf = (struct treq_ss_barring*) tcore_user_request_ref_data(ur, 0); - } else { + if (ur) + req_buf = (struct treq_ss_barring *)tcore_user_request_ref_data(ur, 0); + else err("User Request is NULL"); - } if (at_resp) { if (at_resp->lines && at_resp->success) { - resp_data = (GSList *) at_resp->lines; - resp.record_num= g_slist_length(resp_data); + resp_data = (GSList *)at_resp->lines; + resp.record_num = g_slist_length(resp_data); dbg("Total records: [%d]", resp.record_num); - } - else { + } else { err("RESPONSE - [NOK]"); } } else { @@ -522,7 +536,7 @@ static void on_response_atmodem_ss_get_barring_status(TcorePending *p, if (req_buf) { if (resp.record_num > 0) { resp.record = g_try_malloc0( - (resp.record_num) * sizeof(struct tresp_ss_barring)); + (resp.record_num) * sizeof(struct barring_info)); for (valid_records = 0; resp_data != NULL; resp_data = resp_data->next) { const gchar *line; GSList *tokens = NULL; @@ -540,11 +554,10 @@ static void on_response_atmodem_ss_get_barring_status(TcorePending *p, continue; } - if (atoi(status) == 1) { + if (atoi(status) == 1) resp.record[valid_records].status = SS_STATUS_REG; - } else { + else resp.record[valid_records].status = SS_STATUS_DEREG; - } classx_str = g_slist_nth_data(tokens, 1); if (!classx_str) { @@ -558,7 +571,7 @@ static void on_response_atmodem_ss_get_barring_status(TcorePending *p, } } - resp.record[valid_records].mode= req_buf->mode; + resp.record[valid_records].mode = req_buf->mode; result = TCORE_RETURN_SUCCESS; valid_records++; } else { @@ -572,16 +585,13 @@ static void on_response_atmodem_ss_get_barring_status(TcorePending *p, } dbg("Getting Barring status: [%s]", - (result == TCORE_RETURN_FAILURE ? "SUCCESS" : "FAIL")); + (result == TCORE_RETURN_SUCCESS ? "SUCCESS" : "FAIL")); resp.record_num = valid_records; tcore_user_request_send_response(ur, TRESP_SS_BARRING_GET_STATUS, sizeof(struct tresp_ss_barring), &resp); - - if (resp.record) { - g_free(resp.record); - } + g_free(resp.record); } #ifdef EMUL_SUPPORTED @@ -623,15 +633,36 @@ static void on_response_atmodem_ss_set_forwarding(TcorePending *p, int data_len, const void *data, void *user_data) { struct tresp_ss_forwarding resp = {0, }; + const struct treq_ss_forwarding *req = NULL; + struct ss_resp_cb_data *cb_data = user_data; const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; dbg("Entry"); + ur = tcore_pending_ref_user_request(p); if (at_resp) { if (at_resp->success) { - err("Response: [OK]"); + dbg("Response: [OK]"); resp.err = SS_ERROR_NONE; + + req = tcore_user_request_ref_data(ur, NULL); + resp.record_num = 1; + resp.record = g_malloc0(sizeof(struct forwarding_info) * resp.record_num); + if (cb_data->opco == TIZEN_SS_OPCO_ACTIVATE || cb_data->opco == TIZEN_SS_OPCO_REG) + resp.record[0].status = SS_STATUS_ACTIVATE; + else + resp.record[0].status = SS_STATUS_DEACTIVATE; + resp.record[0].class = req->class; + resp.record[0].mode = req->mode; + if (strlen(req->number)) { + g_strlcpy(resp.record[0].number, req->number, MAX_SS_FORWARDING_NUMBER_LEN); + resp.record[0].number_present = TRUE; + } + resp.record[0].ton = req->ton; + resp.record[0].npi = req->npi; + if (req->time > 0) + resp.record[0].time = req->time; } else { err("Response: [NOK] - [%s]", at_resp->final_response); resp.err = SS_ERROR_UNKNOWNERROR; @@ -640,15 +671,20 @@ static void on_response_atmodem_ss_set_forwarding(TcorePending *p, err("No response data"); } - ur = tcore_pending_ref_user_request(p); if (ur) { - /*TODO : Confirm data to be passed up and send accordingly*/ - tcore_user_request_send_response(ur, - TRESP_SS_FORWARDING_ACTIVATE, + enum tcore_response_command resp_cmd; + if (cb_data->opco == TIZEN_SS_OPCO_ACTIVATE) + resp_cmd = TRESP_SS_FORWARDING_ACTIVATE; + else + resp_cmd = TRESP_SS_FORWARDING_DEACTIVATE; + tcore_user_request_send_response(ur, resp_cmd, sizeof(struct tresp_ss_barring), &resp); } else { err("ur is NULL"); } + + g_free(resp.record); + g_free(cb_data); } static void on_response_atmodem_ss_get_forwarding_status(TcorePending *p, @@ -665,16 +701,15 @@ static void on_response_atmodem_ss_get_forwarding_status(TcorePending *p, dbg("Enter"); ur = tcore_pending_ref_user_request(p); - if (ur) { - req_buf = (struct treq_ss_forwarding*) tcore_user_request_ref_data(ur, 0); - } + if (ur) + req_buf = (struct treq_ss_forwarding *)tcore_user_request_ref_data(ur, 0); + if (at_resp) { if (at_resp->lines && at_resp->success) { - resp_data = (GSList *) at_resp->lines; - resp.record_num= g_slist_length(resp_data); + resp_data = (GSList *)at_resp->lines; + resp.record_num = g_slist_length(resp_data); dbg("Total records: [%d]", resp.record_num); - } - else { + } else { err("RESPONSE - [NOK]"); resp.err = SS_ERROR_UNKNOWNERROR; } @@ -685,7 +720,7 @@ static void on_response_atmodem_ss_get_forwarding_status(TcorePending *p, if (req_buf) { if (resp.record_num > 0) { resp.record = g_try_malloc0( - (resp.record_num) * sizeof(struct tresp_ss_forwarding)); + (resp.record_num) * sizeof(struct forwarding_info)); for (valid_records = 0; resp_data != NULL; resp_data = resp_data->next) { const gchar *line; GSList *tokens = NULL; @@ -705,11 +740,10 @@ static void on_response_atmodem_ss_get_forwarding_status(TcorePending *p, continue; } - if (atoi(status) == 1) { + if (atoi(status) == 1) resp.record[valid_records].status = SS_STATUS_ACTIVATE; - } else { + else resp.record[valid_records].status = SS_STATUS_DEACTIVATE; - } classx_str = g_slist_nth_data(tokens, 1); if (!classx_str) { @@ -751,27 +785,36 @@ static void on_response_atmodem_ss_get_forwarding_status(TcorePending *p, resp.record_num = valid_records; tcore_user_request_send_response(ur, - TRESP_SS_FORWARDING_DEACTIVATE, + TRESP_SS_FORWARDING_GET_STATUS, sizeof(struct tresp_ss_forwarding), &resp); - - if (resp.record) { - g_free(resp.record); - } + g_free(resp.record); } static void on_response_atmodem_ss_set_waiting(TcorePending *p, int data_len, const void *data, void *user_data) { struct tresp_ss_waiting resp = {0, }; + const struct treq_ss_waiting *req = NULL; + struct ss_resp_cb_data *cb_data = user_data; const struct tcore_at_response *at_resp = data; UserRequest *ur = NULL; dbg("Entry"); + ur = tcore_pending_ref_user_request(p); if (at_resp) { if (at_resp->success) { - err("Response: [OK]"); + dbg("Response: [OK]"); resp.err = SS_ERROR_NONE; + + req = tcore_user_request_ref_data(ur, NULL); + resp.record_num = 1; + resp.record = g_malloc0(sizeof(struct waiting_info) * resp.record_num); + resp.record[0].class = req->class; + if (cb_data->opco == TIZEN_SS_OPCO_ACTIVATE) + resp.record[0].status = SS_STATUS_ACTIVATE; + else + resp.record[0].status = SS_STATUS_DEACTIVATE; } else { err("Response: [NOK] - [%s]", at_resp->final_response); resp.err = SS_ERROR_UNKNOWNERROR; @@ -780,15 +823,20 @@ static void on_response_atmodem_ss_set_waiting(TcorePending *p, err("No response data"); } - ur = tcore_pending_ref_user_request(p); if (ur) { - /*TODO : Confirm data to be passed up and send accordingly*/ - tcore_user_request_send_response(ur, - TRESP_SS_WAITING_ACTIVATE, + enum tcore_response_command resp_cmd; + if (cb_data->opco == TIZEN_SS_OPCO_ACTIVATE) + resp_cmd = TRESP_SS_WAITING_ACTIVATE; + else + resp_cmd = TRESP_SS_WAITING_DEACTIVATE; + tcore_user_request_send_response(ur, resp_cmd, sizeof(struct tresp_ss_waiting), &resp); } else { err("ur is NULL"); } + + g_free(resp.record); + g_free(cb_data); } static void on_response_atmodem_ss_get_waiting_status(TcorePending *p, @@ -805,20 +853,18 @@ static void on_response_atmodem_ss_get_waiting_status(TcorePending *p, dbg("Enter"); ur = tcore_pending_ref_user_request(p); - if (ur) { - req_buf = (struct treq_ss_waiting*) tcore_user_request_ref_data(ur, 0); - } else { + if (ur) + req_buf = (struct treq_ss_waiting *)tcore_user_request_ref_data(ur, 0); + else err("User Request is NULL"); - } if (at_resp) { if (at_resp->lines && at_resp->success) { - resp_data = (GSList *) at_resp->lines; - waiting_resp.record_num= g_slist_length(resp_data); + resp_data = (GSList *)at_resp->lines; + waiting_resp.record_num = g_slist_length(resp_data); dbg("Total records: [%d]", waiting_resp.record_num); waiting_resp.err = SS_ERROR_NONE; - } - else { + } else { err("RESPONSE - [NOK]"); waiting_resp.err = SS_ERROR_UNKNOWNERROR; } @@ -829,7 +875,7 @@ static void on_response_atmodem_ss_get_waiting_status(TcorePending *p, if (req_buf) { if (waiting_resp.record_num > 0) { waiting_resp.record = g_try_malloc0( - (waiting_resp.record_num) * sizeof(struct tresp_ss_waiting)); + (waiting_resp.record_num) * sizeof(struct waiting_info)); for (valid_records = 0; resp_data != NULL; resp_data = resp_data->next) { const gchar *line; GSList *tokens = NULL; @@ -847,11 +893,10 @@ static void on_response_atmodem_ss_get_waiting_status(TcorePending *p, continue; } - if (atoi(status) == 1) { - waiting_resp.record[valid_records].status= SS_STATUS_ACTIVATE; - } else { + if (atoi(status) == 1) + waiting_resp.record[valid_records].status = SS_STATUS_ACTIVATE; + else waiting_resp.record[valid_records].status = SS_STATUS_DEACTIVATE; - } classx_str = g_slist_nth_data(tokens, 1); if (!classx_str) { @@ -880,11 +925,9 @@ static void on_response_atmodem_ss_get_waiting_status(TcorePending *p, waiting_resp.record_num = valid_records; tcore_user_request_send_response(ur, - TRESP_SS_WAITING_DEACTIVATE, + TRESP_SS_WAITING_GET_STATUS, sizeof(struct tresp_ss_waiting), &waiting_resp); - - if (waiting_resp.record) - g_free(waiting_resp.record); + g_free(waiting_resp.record); } #ifdef EMUL_SUPPORTED @@ -901,9 +944,8 @@ static void on_response_atmodem_ss_get_cli_status(TcorePending *p, dbg("Enter"); ur = tcore_pending_ref_user_request(p); - if (ur) { - req_buf = (struct treq_ss_cli*) tcore_user_request_ref_data(ur, 0); - } + if (ur) + req_buf = (struct treq_ss_cli *)tcore_user_request_ref_data(ur, 0); if (req_buf->type == SS_CLI_TYPE_CDIP) { err("Unsupported CLI type: [%d]", req_buf->type); @@ -913,10 +955,7 @@ static void on_response_atmodem_ss_get_cli_status(TcorePending *p, if (at_resp && at_resp->success) { const gchar *line; -/* gchar *status = NULL; - gint net_status; - gint dev_status; -*/ + if (!at_resp->lines) { err("Invalid response message"); goto out; @@ -928,8 +967,9 @@ static void on_response_atmodem_ss_get_cli_status(TcorePending *p, goto out; } dbg("RESPONSE OK"); - /*TODO: Confirm Status Mapping and pass accordingly - */ + /* + * TODO: Confirm Status Mapping and pass accordingly + */ cli_resp.type = req_buf->type; result = TCORE_RETURN_SUCCESS; } else { @@ -961,7 +1001,7 @@ static void on_response_atmodem_ss_send_ussd_request(TcorePending *p, dbg("Enter"); - co= tcore_pending_ref_core_object(p); + co = tcore_pending_ref_core_object(p); ussd_s = tcore_ss_ussd_get_session(co); if (!ussd_s) { @@ -993,13 +1033,14 @@ static TReturn _ss_barring_set(CoreObject *o, UserRequest *ur, enum telephony_ss { gchar *at_cmd = NULL; struct treq_ss_barring *barring_info = NULL; + struct ss_resp_cb_data *cb_data = NULL; guint mode; guint classx; const char *facility = NULL; - char password[ MAX_SS_BARRING_PASSWORD_LEN + 1]; + char password[MAX_SS_BARRING_PASSWORD_LEN + 1]; TReturn ret = TCORE_RETURN_FAILURE; - barring_info = (struct treq_ss_barring*)tcore_user_request_ref_data(ur, 0); + barring_info = (struct treq_ss_barring *)tcore_user_request_ref_data(ur, 0); if (op == TIZEN_SS_OPCO_ACTIVATE) mode = 1; @@ -1020,17 +1061,24 @@ static TReturn _ss_barring_set(CoreObject *o, UserRequest *ur, enum telephony_ss dbg("facility: [%s], classx:[%d], mode: [%d]", facility, classx, mode); /* AT-Command */ - at_cmd = g_strdup_printf("AT+CLCK=\"%s\",%d,\"%s\",%d", + at_cmd = g_strdup_printf("AT+CLCK=\"%s\", %d, \"%s\", %d", facility, mode, password, classx); dbg("request command : %s", at_cmd); + /* Make resp_cb_data */ + cb_data = g_malloc0(sizeof(struct ss_resp_cb_data)); + cb_data->opco = op; + /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(o, at_cmd, NULL, TCORE_AT_NO_RESULT, ur, - on_response_atmodem_ss_set_barring, NULL, + on_response_atmodem_ss_set_barring, cb_data, on_send_at_request, NULL, 0, NULL, NULL); - dbg("ret: [0x%x]", ret); + if (ret != TCORE_RETURN_SUCCESS) { + err("Request failed!!!"); + g_free(cb_data); + } g_free(at_cmd); return ret; @@ -1057,7 +1105,7 @@ static TReturn _ss_barring_get(CoreObject *o, dbg("facility: [%s], classx:[%d], mode: [%d]", facility, classx, mode); /* AT-Command */ - at_cmd = g_strdup_printf("AT+CLCK=\"%s\",%d,,%d", + at_cmd = g_strdup_printf("AT+CLCK=\"%s\", %d, , %d", facility, mode, classx); dbg("request command : %s", at_cmd); @@ -1094,7 +1142,7 @@ static TReturn s_ss_barring_change_password(CoreObject *o, UserRequest *ur) dbg("Entry"); - barring_info = (struct treq_ss_barring_change_password*)tcore_user_request_ref_data(ur, 0); + barring_info = (struct treq_ss_barring_change_password *)tcore_user_request_ref_data(ur, 0); memcpy(old_password, barring_info->password_old, MAX_SS_BARRING_PASSWORD_LEN); old_password[MAX_SS_BARRING_PASSWORD_LEN] = '\0'; @@ -1102,7 +1150,7 @@ static TReturn s_ss_barring_change_password(CoreObject *o, UserRequest *ur) new_password[MAX_SS_BARRING_PASSWORD_LEN] = '\0'; dbg("old passwd - %s new passwd- %s", old_password, new_password); - at_cmd = g_strdup_printf("AT+CPWD=\"%s\",\"%s\",\"%s\"", "AB", old_password, new_password); + at_cmd = g_strdup_printf("AT+CPWD=\"%s\", \"%s\", \"%s\"", "AB", old_password, new_password); dbg("request command : %s", at_cmd); /* Send Request to modem */ @@ -1122,7 +1170,7 @@ static TReturn s_ss_barring_change_password(CoreObject *o, UserRequest *ur) static TReturn s_ss_barring_get_status(CoreObject *o, UserRequest *ur) { struct treq_ss_barring *barring_info = 0; - barring_info = (struct treq_ss_barring*)tcore_user_request_ref_data(ur, 0); + barring_info = (struct treq_ss_barring *)tcore_user_request_ref_data(ur, 0); return _ss_barring_get(o, ur, barring_info->class, SS_BARR_MODE_BOIC); } @@ -1131,6 +1179,7 @@ static TReturn _ss_forwarding_set(CoreObject *o, UserRequest *ur, enum telephony { gchar *at_cmd = NULL; struct treq_ss_forwarding *forwarding_info = NULL; + struct ss_resp_cb_data *cb_data = NULL; TReturn ret = TCORE_RETURN_FAILURE; gchar *tmp_cmd = NULL; guint classx; @@ -1140,7 +1189,7 @@ static TReturn _ss_forwarding_set(CoreObject *o, UserRequest *ur, enum telephony dbg("Entry"); - forwarding_info = (struct treq_ss_forwarding*) tcore_user_request_ref_data(ur, 0); + forwarding_info = (struct treq_ss_forwarding *)tcore_user_request_ref_data(ur, 0); classx = __atmodem_ss_convert_class_to_atmodem_class(forwarding_info->class); if (__atmodem_ss_convert_forwarding_opcode_to_modem_mode( @@ -1163,33 +1212,39 @@ static TReturn _ss_forwarding_set(CoreObject *o, UserRequest *ur, enum telephony dbg("classx: [%d], reason:[%d], mode: [%d]", classx, reason, mode); if (mode == 3) /* TIZEN_SS_OPCO_REGISTER */ - tmp_cmd = g_strdup_printf("AT+CCFC=%d,%d,\"%s\",%d,%d", + tmp_cmd = g_strdup_printf("AT+CCFC=%d, %d, \"%s\", %d, %d", reason, mode, forwarding_info->number, num_type, classx); else - tmp_cmd = g_strdup_printf("AT+CCFC=%d,%d,,,%d", + tmp_cmd = g_strdup_printf("AT+CCFC=%d, %d, , , %d", reason, mode, classx); if (reason == 2) /* SS_CF_MODE_CFNRy */ - at_cmd = g_strdup_printf("%s,,,%d", tmp_cmd, forwarding_info->time); + at_cmd = g_strdup_printf("%s, , , %d", tmp_cmd, forwarding_info->time); else at_cmd = g_strdup_printf("%s", tmp_cmd); dbg("request command : %s", at_cmd); + /* Make resp_cb_data */ + cb_data = g_malloc0(sizeof(struct ss_resp_cb_data)); + cb_data->opco = op; + /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(o, at_cmd, NULL, TCORE_AT_NO_RESULT, ur, - on_response_atmodem_ss_set_forwarding, NULL, + on_response_atmodem_ss_set_forwarding, cb_data, on_send_at_request, NULL, 0, NULL, NULL); - dbg("ret: [0x%x]", ret); + if (ret != TCORE_RETURN_SUCCESS) { + err("Request failed!!!"); + g_free(cb_data); + } g_free(at_cmd); g_free(tmp_cmd); - return ret; } -static TReturn _ss_forwarding_get( CoreObject *o, +static TReturn _ss_forwarding_get(CoreObject *o, UserRequest *ur, enum telephony_ss_class class, enum telephony_ss_forwarding_mode mode) @@ -1212,7 +1267,7 @@ static TReturn _ss_forwarding_get( CoreObject *o, dbg("classx: [%d], reason: [%d], mode: [%d]", classx, reason, query_mode); - at_cmd = g_strdup_printf("AT+CCFC=%d,%d,,,%d", reason, query_mode, classx); + at_cmd = g_strdup_printf("AT+CCFC=%d, %d, , , %d", reason, query_mode, classx); dbg("request command : %s", at_cmd); /* Send Request to modem */ @@ -1251,7 +1306,7 @@ static TReturn s_ss_forwarding_deregister(CoreObject *o, UserRequest *ur) static TReturn s_ss_forwarding_get_status(CoreObject *o, UserRequest *ur) { struct treq_ss_forwarding *forwarding_info = 0; - forwarding_info = (struct treq_ss_forwarding*)tcore_user_request_ref_data(ur, 0); + forwarding_info = (struct treq_ss_forwarding *)tcore_user_request_ref_data(ur, 0); return _ss_forwarding_get(o, ur, forwarding_info->class, forwarding_info->mode); } @@ -1260,35 +1315,42 @@ static TReturn _ss_waiting_set(CoreObject *o, UserRequest *ur, enum telephony_ss { gchar *at_cmd = NULL; struct treq_ss_waiting *waiting_info = 0; + struct ss_resp_cb_data *cb_data = NULL; guint classx; guint mode; TReturn ret = TCORE_RETURN_FAILURE; dbg("Entry"); - waiting_info = (struct treq_ss_waiting*) tcore_user_request_ref_data(ur, 0); + waiting_info = (struct treq_ss_waiting *)tcore_user_request_ref_data(ur, 0); - if (opco == TIZEN_SS_OPCO_ACTIVATE) { + if (opco == TIZEN_SS_OPCO_ACTIVATE) mode = 1; - } else { + else mode = 0; - } + classx = __atmodem_ss_convert_class_to_atmodem_class(waiting_info->class); dbg("mode: [%d], class: [%d]", mode, classx); - at_cmd = g_strdup_printf("AT+CCWA=1,%d,%d", mode, classx); + at_cmd = g_strdup_printf("AT+CCWA=1, %d, %d", mode, classx); dbg("request command : %s", at_cmd); + /* Make resp_cb_data */ + cb_data = g_malloc0(sizeof(struct ss_resp_cb_data)); + cb_data->opco = opco; + /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(o, at_cmd, NULL, TCORE_AT_NO_RESULT, ur, - on_response_atmodem_ss_set_waiting, NULL, + on_response_atmodem_ss_set_waiting, cb_data, on_send_at_request, NULL, 0, NULL, NULL); - dbg("ret: [0x%x]", ret); + if (ret != TCORE_RETURN_SUCCESS) { + err("Request failed!!!"); + g_free(cb_data); + } g_free(at_cmd); - return ret; } @@ -1305,7 +1367,7 @@ static TReturn _ss_waiting_get(CoreObject *o, classx = __atmodem_ss_convert_class_to_atmodem_class(class); dbg("class: [%d]", classx); - at_cmd = g_strdup_printf("AT+CCWA=1,2,%d", classx); + at_cmd = g_strdup_printf("AT+CCWA=1, 2, %d", classx); dbg("request command : %s", at_cmd); /* Send Request to modem */ @@ -1334,7 +1396,7 @@ static TReturn s_ss_waiting_deactivate(CoreObject *o, UserRequest *ur) static TReturn s_ss_waiting_get_status(CoreObject *o, UserRequest *ur) { struct treq_ss_waiting *waiting = 0; - waiting = (struct treq_ss_waiting*)tcore_user_request_ref_data(ur, 0); + waiting = (struct treq_ss_waiting *)tcore_user_request_ref_data(ur, 0); return _ss_waiting_get(o, ur, waiting->class); } @@ -1350,25 +1412,30 @@ static TReturn s_ss_cli_get_status(CoreObject *o, UserRequest *ur) cli_info = (struct treq_ss_cli *)tcore_user_request_ref_data(ur, 0); switch (cli_info->type) { - case SS_CLI_TYPE_CLIR: - cmd_prefix = "+CLIR"; - break; - case SS_CLI_TYPE_CLIP: - cmd_prefix = "+CLIP"; - break; - case SS_CLI_TYPE_COLP: - cmd_prefix = "+COLP"; - break; - case SS_CLI_TYPE_COLR: - cmd_prefix = "+COLR"; - break; - case SS_CLI_TYPE_CNAP: - cmd_prefix = "+CNAP"; - break; - case SS_CLI_TYPE_CDIP: - default: - dbg("Unsupported CLI type: [%d]", cli_info->type); - return ret; + case SS_CLI_TYPE_CLIR: + cmd_prefix = "+CLIR"; + break; + + case SS_CLI_TYPE_CLIP: + cmd_prefix = "+CLIP"; + break; + + case SS_CLI_TYPE_COLP: + cmd_prefix = "+COLP"; + break; + + case SS_CLI_TYPE_COLR: + cmd_prefix = "+COLR"; + break; + + case SS_CLI_TYPE_CNAP: + cmd_prefix = "+CNAP"; + break; + + case SS_CLI_TYPE_CDIP: + default: + dbg("Unsupported CLI type: [%d]", cli_info->type); + return ret; } /* AT-Command */ @@ -1397,13 +1464,13 @@ static TReturn s_ss_send_ussd(CoreObject *o, UserRequest *ur) struct treq_ss_ussd *ussd = 0; TReturn ret = TCORE_RETURN_FAILURE; - ussd = (struct treq_ss_ussd*)tcore_user_request_ref_data(ur, 0); + ussd = (struct treq_ss_ussd *)tcore_user_request_ref_data(ur, 0); ussd_s = tcore_ss_ussd_get_session(o); if (!ussd_s) { dbg("USSD session does not exist"); tcore_ss_ussd_create_session(o, (enum tcore_ss_ussd_type)ussd->type, - (void*)tcore_user_request_ref(ur), 0); + (void *)tcore_user_request_ref(ur), 0); } else { if (ussd->type == SS_USSD_TYPE_USER_INITIATED) { @@ -1416,8 +1483,8 @@ static TReturn s_ss_send_ussd(CoreObject *o, UserRequest *ur) tcore_ss_ussd_set_session_type(ussd_s, (enum tcore_ss_ussd_type)ussd->type); } - at_cmd = g_strdup_printf("AT+CUSD=1,\"%s\",%d", ussd->str, 0x0f); - dbg("request command : %s",at_cmd); + at_cmd = g_strdup_printf("AT+CUSD=1, \"%s\", %d", ussd->str, 0x0f); + dbg("request command : %s", at_cmd); /* Send Request to modem */ ret = tcore_prepare_and_send_at_request(o, at_cmd, NULL, @@ -1461,7 +1528,7 @@ gboolean s_ss_init(TcorePlugin *p, TcoreHal *h) so = tcore_ss_new(p, "ss", &ss_ops, h); if (!so) { - err("[ error ] ss_new()"); + err("[error] ss_new()"); return FALSE; }