Fix ril close for v2.

Change-Id: Id05e6dfd73d6486ec0c762f2c734a9ba2dd3dc7d
diff --git a/mbtk/libmbtk_lib/ril/v2/mbtk_ril_api.c b/mbtk/libmbtk_lib/ril/v2/mbtk_ril_api.c
index ec0a7cc..9c14459 100755
--- a/mbtk/libmbtk_lib/ril/v2/mbtk_ril_api.c
+++ b/mbtk/libmbtk_lib/ril/v2/mbtk_ril_api.c
@@ -20,6 +20,7 @@
 typedef struct {
     ATPortType_enum port;
     bool enable;
+    int open_count;
 } ril_at_port_info_t;
 
 typedef struct {
@@ -457,10 +458,12 @@
     {
         if(at_port_check(port)) {
             LOGD("Port(%d) is opened.", port);
+            ril_cli.ports[port].open_count++;
             return &(ril_cli.ports[port]);
         } else {
             ril_cli.ports[port].port = port;
             ril_cli.ports[port].enable = TRUE;
+            ril_cli.ports[port].open_count++;
             return &(ril_cli.ports[port]);
         }
     }
@@ -550,10 +553,12 @@
     // Auto open default port.
     ril_cli.ports[MBTK_AT_PORT_DEF].port = MBTK_AT_PORT_DEF;
     ril_cli.ports[MBTK_AT_PORT_DEF].enable = TRUE;
+    ril_cli.ports[MBTK_AT_PORT_DEF].open_count++;
 
     if(port != MBTK_AT_PORT_DEF) {
         ril_cli.ports[port].port = port;
         ril_cli.ports[port].enable = TRUE;
+        ril_cli.ports[port].open_count++;
         return &(ril_cli.ports[port]);
     } else {
         return &(ril_cli.ports[MBTK_AT_PORT_DEF]);
@@ -584,8 +589,17 @@
         return MBTK_RIL_ERR_PORT;
     }
 
+    ril_cli.ports[port].open_count--;
+
+    if(ril_cli.ports[port].open_count > 0) {
+        LOGD("Port(%d) open_count is %d, no close port.", ril_cli.ports[port].open_count);
+        return MBTK_RIL_ERR_SUCCESS;
+    }
+
+    LOGD("Will close port %d", port);
     ril_cli.ports[port].enable = FALSE;
     ril_cli.ports[port].port = ATPORTTYPE_NON;
+    ril_cli.ports[port].open_count = 0;
 
     // All port is close ???
     int i = ATPORTTYPE_0;