Upgradation to New Design.
authorwootak.jung <wootak.jung@samsung.com>
Sun, 24 Mar 2013 08:55:21 +0000 (17:55 +0900)
committerwootak.jung <wootak.jung@samsung.com>
Sun, 24 Mar 2013 08:55:21 +0000 (17:55 +0900)
include/vdpram.h
include/vdpram_dump.h
src/desc-vmodem.c
src/vdpram.c
src/vdpram_dump.c

index d50266f..02d11af 100644 (file)
@@ -23,9 +23,8 @@
 \r
 int vdpram_close(int fd);\r
 int vdpram_open (void);\r
-int vdpramerr_open(void);\r
-int vdpram_poweron(int fd);\r
-int vdpram_poweroff(int fd);\r
+gboolean vdpram_poweron(int fd);
+gboolean vdpram_poweroff(int fd);
 \r
 int vdpram_tty_read(int nFd, void* buf, size_t nbytes);\r
 int vdpram_tty_write(int nFd, void* buf, size_t nbytes);\r
index e98a275..222d862 100644 (file)
@@ -21,8 +21,8 @@
 #ifndef __VDPRAM_DUMP_H__\r
 #define __VDPRAM_DUMP_H__\r
 \r
-#define IPC_TX 0\r
-#define IPC_RX 1\r
+#define TX                             0
+#define RX                             1
 \r
 void vdpram_hex_dump(int dir, unsigned short data_len, void *data);\r
 \r
index 4d19225..11a51a9 100644 (file)
 #include <unistd.h>
 #include <stdlib.h>
 #include <time.h>
+#include <fcntl.h>
 
 #include <glib.h>
 
 #include <tcore.h>
 #include <plugin.h>
-
-#include <tcore.h>
 #include <server.h>
-#include <plugin.h>
 #include <user_request.h>
 #include <hal.h>
+#include <core_object.h>
 
 #include "vdpram.h"
 
+#define SERVER_INIT_WAIT_TIMEOUT               500
+
+#define DEVICE_NAME_LEN_MAX                            16
+#define DEVICE_NAME_PREFIX                             "pdp"
+
+#define BUF_LEN_MAX                                            512
+
+#define CORE_OBJECT_NAME_MAX                   16
+
+#define MODEM_PLUGIN_NAME                              "atmodem-plugin.so"
+
 struct custom_data {
        int vdpram_fd;
        guint watch_id_vdpram;
 };
 
-static TReturn hal_power(TcoreHal *hal, gboolean flag)
+struct v_modules {
+       unsigned int co_type;
+       char co_name[CORE_OBJECT_NAME_MAX];
+};
+
+/* Supported Modules */
+static struct v_modules supported_modules[] = {
+       {CORE_OBJECT_TYPE_MODEM,        "Modem"},
+       {CORE_OBJECT_TYPE_CALL,         "Call"},
+       {CORE_OBJECT_TYPE_SS,           "SS"},
+       {CORE_OBJECT_TYPE_NETWORK,      "Network"},
+       {CORE_OBJECT_TYPE_PS,           "PS"},
+       {CORE_OBJECT_TYPE_SIM,          "SIM"},
+       {CORE_OBJECT_TYPE_SMS,          "SMS"},
+       {0,                                                     ""}
+};
+
+static void _assign_objects_to_hal(TcoreHal *hal)
+{
+       TcorePlugin *plugin;
+       int i;
+       gboolean ret;
+
+       plugin = tcore_hal_ref_plugin(hal);
+
+       /* Add Core Object type for specific 'hal' */
+       for (i = 0 ; supported_modules[i].co_type != 0 ; i++) {
+               ret = tcore_server_add_cp_mapping_tbl_entry(plugin,
+                                                                       supported_modules[i].co_type, hal);
+               if (ret == TRUE) {
+                       dbg("[VMODEM] Core Object: [%s] - [Success]",
+                                                                       supported_modules[i].co_name);
+               } else {
+                       err("[VMODEM] Core Object: [%s] - [Fail]",
+                                                                       supported_modules[i].co_name);
+               }
+       }
+}
+
+static void _deassign_objects_from_hal(TcoreHal *hal)
+{
+       TcorePlugin *plugin;
+
+       plugin = tcore_hal_ref_plugin(hal);
+
+       /* Remove mapping table entry */
+       tcore_server_remove_cp_mapping_tbl_entry(plugin, hal);
+}
+
+static guint _register_gio_watch(TcoreHal *h, int fd, void *callback)
+{
+       GIOChannel *channel = NULL;
+       guint source;
+
+       dbg("[VMODEM] Register to Watch list - fd: [%d]", fd);
+
+       if ((fd < 0) || (callback == NULL))
+               return 0;
+
+       channel = g_io_channel_unix_new(fd);
+       source = g_io_add_watch(channel, G_IO_IN, (GIOFunc) callback, h);
+       g_io_channel_unref(channel);
+       channel = NULL;
+
+       return source;
+}
+
+static void _deregister_gio_watch(guint watch_id)
+{
+       dbg("[VMODEM] Deregister Watch ID: [%d]", watch_id);
+
+       /* Remove source */
+       g_source_remove(watch_id);
+}
+
+static gboolean _load_modem_plugin(gpointer data)
+{
+       TcoreHal *hal;
+       TcorePlugin *plugin;
+       struct custom_data *user_data;
+
+       dbg("[VMMODEM] Entry");
+
+       if (data == NULL) {
+               err("[VMMODEM] data is NULL");
+               return FALSE;
+       }
+
+       hal = data;
+       plugin = tcore_hal_ref_plugin(hal);
+
+       /* Load Modem Plug-in */
+       if (tcore_server_load_modem_plugin(tcore_plugin_ref_server(plugin),
+                                       plugin, MODEM_PLUGIN_NAME) == TCORE_RETURN_FAILURE) {
+               err("[VMMODEM] Load Modem Plug-in - [FAIL]");
+
+               /* Clean-up */
+               _deassign_objects_from_hal(hal);
+
+               goto EXIT;
+       } else {
+               dbg("[VMMODEM] Load Modem Plug-in - [SUCCESS]");
+       }
+
+       /* To stop the cycle need to return FALSE */
+       return FALSE;
+
+EXIT:
+       user_data = tcore_hal_ref_user_data(hal);
+       if (user_data == NULL)
+               return FALSE;
+
+       /* Deregister from Watch list */
+       _deregister_gio_watch(user_data->watch_id_vdpram);
+
+       /* Free HAL */
+       tcore_hal_free(hal);
+
+       /* Close VDPRAM device */
+       vdpram_close(user_data->vdpram_fd);
+
+       /* Free custom data */
+       g_free(user_data);
+
+       return FALSE;
+}
+
+static TReturn _modem_power(TcoreHal *hal, gboolean enable)
 {
        struct custom_data *user_data;
 
        user_data = tcore_hal_ref_user_data(hal);
-       if (!user_data)
+       if (user_data == NULL) {
+               err("[VMODEM] User data is NULL");
                return TCORE_RETURN_FAILURE;
+       }
 
-       /* power on */
-       if (flag == TRUE) {
+       if (enable == TRUE) {                                                   /* POWER ON */
                if (FALSE == vdpram_poweron(user_data->vdpram_fd)) {
-                       err("vdpram_poweron failed");
+                       err("[VMODEM] Power ON - [FAIL]");
                        return TCORE_RETURN_FAILURE;
                }
+
+               /* Set Power State - ON */
                tcore_hal_set_power_state(hal, TRUE);
-       }
-       /* power off */
-       else {
-               if (FALSE == vdpram_poweroff(user_data->vdpram_fd)) {
-                       err("vdpram_poweroff failed");
+       } else {                                                                                /* POWER OFF */
+               if (vdpram_poweroff(user_data->vdpram_fd) == FALSE) {
+                       err("[VMODEM] Power OFF - [FAIL]");
                        return TCORE_RETURN_FAILURE;
                }
+
+               /* Set Power state - OFF */
                tcore_hal_set_power_state(hal, FALSE);
        }
 
        return TCORE_RETURN_SUCCESS;
 }
 
+static gboolean on_recv_vdpram_message(GIOChannel *channel,
+                                                                       GIOCondition condition, gpointer data)
+{
+       TcoreHal *hal = data;
+       struct custom_data *custom;
+       char buf[BUF_LEN_MAX];
+       int n = 0;
+
+       custom = tcore_hal_ref_user_data(hal);
+       memset(buf, 0x0, BUF_LEN_MAX);
+
+       /* Read from Device */
+       n = vdpram_tty_read(custom->vdpram_fd, buf, BUF_LEN_MAX);
+       if (n < 0) {
+               err("[VMODEM] Read error - Data received: [%d]", n);
+               return TRUE;
+       }
+       dbg("[VMODEM] DPRAM Receive - Data length: [%d]", n);
+
+       /* Emit receive callback */
+       tcore_hal_emit_recv_callback(hal, n, buf);
+
+       return TRUE;
+}
+
+static TReturn hal_power(TcoreHal *hal, gboolean flag)
+{
+       return _modem_power(hal, flag);
+}
 
 static TReturn hal_send(TcoreHal *hal, unsigned int data_len, void *data)
 {
        int ret;
        struct custom_data *user_data;
 
-       if (tcore_hal_get_power_state(hal) == FALSE)
+       if (tcore_hal_get_power_state(hal) == FALSE) {
+               err("[VMODEM] HAL Power state - OFF");
                return TCORE_RETURN_FAILURE;
+       }
 
        user_data = tcore_hal_ref_user_data(hal);
-       if (!user_data)
+       if (user_data == NULL) {
+               err("[VMODEM] User data is NULL");
                return TCORE_RETURN_FAILURE;
+       }
 
        ret = vdpram_tty_write(user_data->vdpram_fd, data, data_len);
        if(ret < 0)     {
-               err("vdpram_tty_write failed");
+               err("[VMODEM] Write failed");
                return TCORE_RETURN_FAILURE;
        }
        else {
@@ -95,62 +268,69 @@ static TReturn hal_send(TcoreHal *hal, unsigned int data_len, void *data)
        }
 }
 
-
-static struct tcore_hal_operations hops =
+static TReturn hal_setup_netif(CoreObject *co,
+                               TcoreHalSetupNetifCallback func,
+                               void *user_data, unsigned int cid,
+                               gboolean enable)
 {
-       .power = hal_power,
-       .send = hal_send,
-};
+       char ifname[DEVICE_NAME_LEN_MAX];
+       int size = 0;
+       int fd = 0;
+       char buf[32];
+       char *control = NULL;
+
+       if (cid > 3) {
+               err("[VMODEM] Context ID: [%d]", cid);
+               return TCORE_RETURN_EINVAL;
+       }
 
-static gboolean on_recv_vdpram_message(GIOChannel *channel, GIOCondition condition, gpointer data)
-{
-       TcoreHal *hal = data;
-       struct custom_data *custom;
+       if (enable == TRUE) {
+               dbg("[VMODEM] ACTIVATE - Context ID: [%d]", cid)
+               control = "/sys/class/net/svnet0/pdp/activate";
+       } else {
+               dbg("[VMODEM] DEACTIVATE - Context ID: [%d]", cid)
+               control = "/sys/class/net/svnet0/pdp/deactivate";
+       }
 
-       #define BUF_LEN_MAX 512
-       char buf[BUF_LEN_MAX];
-       int n = 0;
+       fd = open(control, O_WRONLY);
+       if (fd < 0) {
+               err("[VMODEM] Failed to Open interface: [%s]", control);
 
-       custom = tcore_hal_ref_user_data(hal);
-       memset(buf, 0, BUF_LEN_MAX);
-       n = vdpram_tty_read(custom->vdpram_fd, buf, BUF_LEN_MAX);
-       if (n < 0) {
-               err("tty_read error. return_valute = %d", n);
-               return TRUE;
+               /* Invoke callback function */
+               if (func)
+                       func(co, -1, NULL, user_data);
+
+               return TCORE_RETURN_FAILURE;
        }
 
-       dbg("vdpram recv (ret = %d)", n);
-       tcore_hal_emit_recv_callback(hal, n, buf);
+       /* Context ID needs to be written to the Device */
+       snprintf(buf, sizeof(buf), "%d", cid);
+       size = write(fd, buf, strlen(buf));
 
-       return TRUE;
-}
+       /* Close 'fd' */
+       close(fd);
 
-static guint register_gio_watch(TcoreHal *h, int fd, void *callback)
-{
-       GIOChannel *channel = NULL;
-       guint source;
+       /* Device name */
+       snprintf(ifname, DEVICE_NAME_LEN_MAX, "%s%d", DEVICE_NAME_PREFIX, (cid - 1));
+       dbg("[VMODEM] Interface Name: [%s]", ifname);
 
-       if (fd < 0 || !callback)
-               return 0;
-
-       channel = g_io_channel_unix_new(fd);
-       source = g_io_add_watch(channel, G_IO_IN, (GIOFunc) callback, h);
-       g_io_channel_unref(channel);
-       channel = NULL;
+       /* Invoke callback function */
+       if (func)
+               func(co, 0, ifname, user_data);
 
-       return source;
+       return TCORE_RETURN_SUCCESS;
 }
 
-
-/*static int power_tx_pwr_on_exec(int nFd)
-{
-        Not implement yet
-       return 0;
-}*/
+/* HAL Operations */
+static struct tcore_hal_operations hal_ops = {
+       .power = hal_power,
+       .send = hal_send,
+       .setup_netif = hal_setup_netif,
+};
 
 static gboolean on_load()
 {
-       dbg("i'm load!");
+       dbg("[VMODEM] Load!!!");
 
        return TRUE;
 }
@@ -160,47 +340,145 @@ static gboolean on_init(TcorePlugin *plugin)
        TcoreHal *hal;
        struct custom_data *data;
 
-       if (!plugin)
+       dbg("[VMODEM] Init!!!");
+
+       if (plugin == NULL) {
+               err("[VMODEM] PLug-in is NULL");
                return FALSE;
+       }
 
-       dbg("i'm init!");
+       /* Register Modem Interface Plug-in */
+       if (tcore_server_register_modem(tcore_plugin_ref_server(plugin), plugin)
+                                                               == FALSE) {
+               err("[VMODEM] Registration Failed");
+               return FALSE;
+       }
+       dbg("[VMODEM] Registered from Server");
+
+       data = g_try_new0(struct custom_data, 1);
+       if (data == NULL) {
+               err("[VMODEM] Failed to allocate memory for Custom data");
+
+               /* Unregister from Server */
+               tcore_server_unregister_modem(tcore_plugin_ref_server(plugin), plugin);
+               return FALSE;
+       }
 
        /*
-        * Phonet init
+        * Open DPRAM device
         */
-       data = calloc(sizeof(struct custom_data), 1);
-       memset(data, 0, sizeof(struct custom_data));
-
        data->vdpram_fd = vdpram_open();
 
        /*
-        * HAL init
+        * Create and initialize HAL
         */
-       hal = tcore_hal_new(plugin, "vmodem", &hops, TCORE_HAL_MODE_CUSTOM);
-       tcore_hal_link_user_data(hal, data);
+       hal = tcore_hal_new(plugin, "vmodem", &hal_ops, TCORE_HAL_MODE_CUSTOM);
+       if (hal == NULL) {
+               /* Close VDPRAM device */
+               vdpram_close(data->vdpram_fd);
+
+               /* Fre custom data */
+               g_free(data);
+
+               /* Unregister from Server */
+               tcore_server_unregister_modem(tcore_plugin_ref_server(plugin), plugin);
+
+               return FALSE;
+       }
 
-       data->watch_id_vdpram= register_gio_watch(hal, data->vdpram_fd, on_recv_vdpram_message);
+       /* Set HAL as Modem Interface Plug-in's User data */
+       tcore_plugin_link_user_data(plugin, hal);
 
-       dbg("vdpram_fd = %d, watch_id_vdpram=%d ", data->vdpram_fd, data->watch_id_vdpram);
+       /* Link custom data to HAL user data */
+       tcore_hal_link_user_data(hal, data);
+
+       /* Register to Watch llist */
+       data->watch_id_vdpram = _register_gio_watch(hal,
+                                                               data->vdpram_fd, on_recv_vdpram_message);
+       dbg("[VMODEM] fd: [%d] Watch ID: [%d]",
+                                                               data->vdpram_fd, data->watch_id_vdpram);
+
+       /* Power ON VDPRAM device */
+       if (_modem_power(hal, TRUE) == TCORE_RETURN_SUCCESS) {
+               dbg("[VMODEM] Power ON - [SUCCESS]");
+       } else {
+               err("[VMODEM] Power ON - [FAIL]");
+               goto EXIT;
+       }
 
-       if (!vdpram_poweron(data->vdpram_fd))
-               err("vdpram_poweron Failed");
+       /* Add Core Objects list to HAL */
+       _assign_objects_to_hal(hal);
 
-//     power_tx_pwr_on_exec(data->vdpram_fd);
+       /* Check CP Power ON */
+       g_timeout_add_full(G_PRIORITY_HIGH, SERVER_INIT_WAIT_TIMEOUT, _load_modem_plugin, hal, 0);
 
+       dbg("[VMMODEM] Exit");
        return TRUE;
+
+EXIT:
+       /* Deregister from Watch list */
+       _deregister_gio_watch(data->watch_id_vdpram);
+
+       /* Free HAL */
+       tcore_hal_free(hal);
+
+       /* Close VDPRAM device */
+       vdpram_close(data->vdpram_fd);
+
+       /* Free custom data */
+       g_free(data);
+
+       /* Unregister from Server */
+       tcore_server_unregister_modem(tcore_plugin_ref_server(plugin), plugin);
+
+       return FALSE;
 }
 
 static void on_unload(TcorePlugin *plugin)
 {
-       if (!plugin)
+       TcoreHal *hal;
+       struct custom_data *user_data;
+
+       dbg("[VMODEM] Unload!!!");
+
+       if (plugin == NULL)
                return;
 
-       dbg("i'm unload");
+       hal = tcore_plugin_ref_user_data(plugin);
+       if (hal == NULL)
+               return;
+
+       /* Unload Modem Plug-in */
+#if 0  /* TODO - Open the code below */
+       tcore_server_unload_modem_plugin(tcore_plugin_ref_server(plugin), plugin);
+#endif
+       user_data = tcore_hal_ref_user_data(hal);
+       if (user_data == NULL)
+               return;
+
+       /* Deregister from Watch list */
+       _deregister_gio_watch(user_data->watch_id_vdpram);
+       dbg("[VMODEM] Deregistered Watch ID");
+
+       /* Free HAL */
+       tcore_hal_free(hal);
+       dbg("[VMODEM] Freed HAL");
+
+       /* Close VDPRAM device */
+       vdpram_close(user_data->vdpram_fd);
+       dbg("[VMODEM] Closed VDPRAM device");
+
+       /* Free custom data */
+       g_free(user_data);
+
+       tcore_server_unregister_modem(tcore_plugin_ref_server(plugin), plugin);
+       dbg("[VMODEM] Unregistered from Server");
+
+       dbg("[VMODEM] Unloaded MODEM");
 }
 
-struct tcore_plugin_define_desc plugin_define_desc =
-{
+/* VMODEM Descriptor Structure */
+struct tcore_plugin_define_desc plugin_define_desc = {
        .name = "VMODEM",
        .priority = TCORE_PLUGIN_PRIORITY_HIGH,
        .version = 1,
index 7613b59..aaddf6b 100644 (file)
@@ -29,6 +29,8 @@
 #include <fcntl.h>\r
 #include <sys/ioctl.h>\r
 \r
+#include <glib.h>
+
 #include <log.h>\r
 #include "legacy/TelUtility.h"\r
 #include "vdpram.h"\r
 #  endif\r
 #endif\r
 \r
-typedef struct _tty_old_setting_t{\r
+/* Retry parameters */
+#define SLEEP_TIME_IN_SEC              0
+#define SLEEP_TIME_IN_MSEC             50
+
+#define MAX_RETRY_COUNT                        10
+
+typedef struct _tty_old_setting_t {
        int             fd;\r
        struct  termios  termiosVal;\r
        struct  _tty_old_setting_t *next;\r
@@ -71,51 +79,58 @@ typedef struct _tty_old_setting_t{
 \r
 static tty_old_setting_t *ttyold_head = NULL;\r
 \r
-/* static functions */\r
+/*
+ *     Insert TTY old settings.
+ */
 static void __insert_tty_oldsetting(tty_old_setting_t *me)\r
 {\r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
        if (me == NULL)\r
                return;\r
 \r
        if (ttyold_head)\r
-           ttyold_head->prev = me;\r
+               ttyold_head->prev = me;
 \r
        me->next = ttyold_head;\r
        me->prev = 0;\r
        ttyold_head = me;\r
 }\r
 \r
+/*
+ *     Search TTY old settings.
+ */
 static tty_old_setting_t *__search_tty_oldsetting(int fd)\r
 {\r
        tty_old_setting_t *tty = NULL;\r
 \r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
        if (ttyold_head == NULL)\r
                return NULL;\r
 \r
        tty = ttyold_head;\r
 \r
-       do{\r
+       do {
                if (tty->fd == fd) {\r
-                       dbg("oldsetting for inputted fd is found");\r
+                       dbg("oldsetting for inputted fd [%d] is found", fd);
                        break;\r
-               }\r
-               else {\r
+               } else {
                        if (tty->next == NULL) {\r
-                               dbg("No oldsetting is found");\r
+                               err("No oldsetting found!!!");
                                tty = NULL;\r
                                break;\r
                        }\r
                        tty = tty->next;\r
                }\r
-       }while(1);\r
+       } while (1);
 \r
        return tty;\r
 }\r
 \r
+/*
+ *     Remove TTY old settings.
+ */
 static void __remove_tty_oldsetting(tty_old_setting_t *me)\r
 {\r
        dbg( "Function Enterence.");\r
@@ -124,42 +139,43 @@ static void __remove_tty_oldsetting(tty_old_setting_t *me)
                return;\r
 \r
        if (me->prev)\r
-           me->prev->next = me->next;\r
+               me->prev->next = me->next;
        else\r
-           ttyold_head = me->next;\r
+               ttyold_head = me->next;
 \r
        if (me->next)\r
-           me->next->prev = me->prev;\r
+               me->next->prev = me->prev;
 }\r
 \r
-/* Set hardware flow control.\r
-*/\r
+/*
+ *     Set hardware flow control.
+ */
 static void __tty_sethwf(int fd, int on)\r
 {\r
        struct termios tty;\r
 \r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
        if (tcgetattr(fd, &tty))\r
                err("__tty_sethwf: tcgetattr:");\r
 \r
        if (on)\r
-           tty.c_cflag |= CRTSCTS;\r
+               tty.c_cflag |= CRTSCTS;
        else\r
-           tty.c_cflag &= ~CRTSCTS;\r
+               tty.c_cflag &= ~CRTSCTS;
 \r
        if (tcsetattr(fd, TCSANOW, &tty))\r
                err("__tty_sethwf: tcsetattr:");\r
 }\r
 \r
 /*\r
-* Set RTS line. Sometimes dropped. Linux specific?\r
-*/\r
+ *     Set RTS line. Sometimes dropped. Linux specific?
+ */
 static int __tty_setrts(int fd)\r
 {\r
        int mcs;\r
 \r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
        if (-1 ==  ioctl(fd, TIOCMODG, &mcs))\r
                err("icotl: TIOCMODG");\r
@@ -173,7 +189,7 @@ static int __tty_setrts(int fd)
 }\r
 \r
 /*\r
- * Set baudrate, parity and number of bits.\r
+ *     Set baudrate, parity and number of bits.
  */\r
 static int __tty_setparms(int fd, char* baudr, char* par, char* bits, char* stop, int hwf, int swf)\r
 {\r
@@ -185,9 +201,9 @@ static int __tty_setparms(int fd, char* baudr, char* par, char* bits, char* stop
        struct termios tty;\r
        tty_old_setting_t *old_setting = NULL;\r
 \r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
-       old_setting = calloc(sizeof(tty_old_setting_t), 1);\r
+       old_setting = g_try_new0(tty_old_setting_t, 1);
 \r
        if (old_setting == NULL)\r
                return TAPI_API_SYSTEM_OUT_OF_MEM;\r
@@ -195,12 +211,12 @@ static int __tty_setparms(int fd, char* baudr, char* par, char* bits, char* stop
        old_setting->fd = fd;\r
 \r
        if (tcgetattr(fd, &tty) < 0) {\r
-               free(old_setting);\r
+               g_free(old_setting);
                return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
        }\r
 \r
        if (tcgetattr(fd, &old_setting->termiosVal) < 0) {\r
-               free(old_setting);\r
+               g_free(old_setting);
                return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
        }\r
 \r
@@ -216,92 +232,89 @@ static int __tty_setparms(int fd, char* baudr, char* par, char* bits, char* stop
        if ((newbaud = (atol(baudr) / 100)) == 0 && baudr[0] != '0')\r
                newbaud = -1;\r
 \r
-       switch(newbaud)\r
-       {\r
+       switch(newbaud) {
                case 0:\r
                        spd = 0;\r
-                       break;\r
+               break;
 \r
                case 3:\r
                        spd = B300;\r
-                       break;\r
+               break;
 \r
                case 6:\r
                        spd = B600;\r
-                       break;\r
+               break;
 \r
                case 12:\r
                        spd = B1200;\r
-                       break;\r
+               break;
 \r
                case 24:\r
                        spd = B2400;\r
-                       break;\r
+               break;
 \r
                case 48:\r
                        spd = B4800;\r
-                       break;\r
+               break;
 \r
                case 96:\r
                        spd = B9600;\r
-                       break;\r
+               break;
 \r
                case 192:\r
                        spd = B19200;\r
-                       break;\r
+               break;
 \r
                case 384:\r
                        spd = B38400;\r
-                       break;\r
+               break;
 \r
                case 576:\r
                        spd = B57600;\r
-                       break;\r
+               break;
 \r
                case 1152:\r
                        spd = B115200;\r
-                       break;\r
+               break;
 \r
                default:\r
                        err("invaid baud rate");\r
-                       break;\r
+               break;
        }\r
 \r
        if (spd != -1) {\r
-           cfsetospeed(&tty, (speed_t) spd);\r
-           cfsetispeed(&tty, (speed_t) spd);\r
+               cfsetospeed(&tty, (speed_t) spd);
+               cfsetispeed(&tty, (speed_t) spd);
        }\r
 \r
-       switch(bit)\r
-       {\r
-           case '5':\r
-               tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5;\r
-               break;\r
+       switch(bit) {
+               case '5':
+                       tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5;
+               break;
 \r
-           case '6':\r
-               tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6;\r
-               break;\r
+               case '6':
+                       tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6;
+               break;
 \r
-           case '7':\r
-               tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7;\r
-               break;\r
+               case '7':
+                       tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7;
+               break;
 \r
-           case '8':\r
-           default:\r
-               tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;\r
-               break;\r
+               case '8':
+               default:
+                       tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;
+               break;
        }\r
 \r
-       switch(stop_bit)\r
-       {\r
-           case '1':\r
-               tty.c_cflag &= ~CSTOPB;\r
-               break;\r
+       switch(stop_bit) {
+               case '1':
+                       tty.c_cflag &= ~CSTOPB;
+               break;
 \r
-           case '2':\r
-           default:\r
-               tty.c_cflag |= CSTOPB;\r
-               break;\r
+               case '2':
+               default:
+                       tty.c_cflag |= CSTOPB;
+               break;
        }\r
 \r
        /* Set into raw, no echo mode */\r
@@ -313,70 +326,92 @@ static int __tty_setparms(int fd, char* baudr, char* par, char* bits, char* stop
        tty.c_cc[VTIME] = 1;\r
 \r
        if (swf)\r
-           tty.c_iflag |= IXON | IXOFF;\r
+               tty.c_iflag |= IXON | IXOFF;
        else\r
-           tty.c_iflag &= ~(IXON | IXOFF | IXANY);\r
+               tty.c_iflag &= ~(IXON | IXOFF | IXANY);
 \r
        tty.c_cflag &= ~(PARENB | PARODD);\r
 \r
        if (par[0] == 'E')\r
-           tty.c_cflag |= PARENB;\r
+               tty.c_cflag |= PARENB;
        else if (par[0] == 'O')\r
-           tty.c_cflag |= (PARENB | PARODD);\r
+               tty.c_cflag |= (PARENB | PARODD);
 \r
        if (tcsetattr(fd, TCSANOW, &tty) < 0) {\r
-               free(old_setting);\r
-           return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
+               g_free(old_setting);
+               return TAPI_API_TRANSPORT_LAYER_FAILURE;
        }\r
 \r
        __tty_setrts(fd);\r
        __tty_sethwf(fd, hwf);\r
 \r
        return TAPI_API_SUCCESS;\r
-\r
 }\r
 \r
+/*
+ *     Close TTY Device.
+ */
 static int __tty_close(int fd)\r
 {\r
        tty_old_setting_t *old_setting = NULL;\r
 \r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
+       /* Get previous settings */
        old_setting = __search_tty_oldsetting(fd);\r
-       if (old_setting == NULL)\r
+       if (old_setting == NULL) {
+               dbg("[VDPRAM] No previous settings found!!!");
                return TAPI_API_SUCCESS;\r
+       }
 \r
        if (tcsetattr(fd, TCSAFLUSH, &old_setting->termiosVal) < 0)     {\r
-               err("close failed");\r
+               err("[VDPRAM] Close failed");
                return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
        }\r
 \r
+       /* Remove the previous setting configured */
        __remove_tty_oldsetting(old_setting);\r
 \r
-       free(old_setting);\r
+       /* Free memory */
+       g_free(old_setting);
 \r
+       /* Close fd */
        close(fd);\r
 \r
        return TAPI_API_SUCCESS;\r
 }\r
 \r
 /*\r
-* restore the old settings before close.\r
-*/\r
+ *     Wait on select.
+ */
+static void __sleep(int sec, int msec)
+{
+    struct timeval tv;
+
+    tv.tv_sec = sec;
+    tv.tv_usec = msec;
+
+    select(0, NULL, NULL, NULL, &tv);
+}
+
+/*
+ * Close the VDPRAM device
+ */
 int vdpram_close(int fd)\r
 {\r
        int ret = TAPI_API_SUCCESS;\r
 \r
-       dbg("Function Enterence.");\r
+       dbg("Function Entrance");
 \r
+       /* Close VDPRAM Device */
        ret = __tty_close(fd);\r
 \r
        return ret;\r
 }\r
 \r
 /*\r
-*      Open the vdpram fd.\r
-*/\r
+ * Open the VDPRAM device
+ */
 int vdpram_open (void)\r
 {\r
        int rv = -1;\r
@@ -384,103 +419,97 @@ int vdpram_open (void)
        int val = 0;\r
        unsigned int cmd =0;\r
 \r
+       dbg("Function Enterence.");
+
+       /* Open DPRAM device */
        fd = open(VDPRAM_OPEN_PATH, O_RDWR);\r
-\r
        if (fd < 0) {\r
-               err("#### Failed to open vdpram file: error no hex %x", errno);\r
+               err("[VDPRAM] Open VDPRAM file - [FAIL] Error: [%s]", strerror(errno));
                return rv;\r
+       } else {
+               dbg("[VDPRAM] Open VDPRAM file - [SUCCESS] fd: [%d] path: [%s]",
+                                                                               fd, VDPRAM_OPEN_PATH);
        }\r
-       else\r
-               dbg("#### Success to open vdpram file. fd:%d, path:%s", fd, VDPRAM_OPEN_PATH);\r
 \r
+       /* Set device parameters */
+       if (__tty_setparms(fd, "115200", "N", "8", "1", 0, 0) != TAPI_API_SUCCESS) {
+               err("[VDPRAM] Set TTY device parameters - [FAIL]");
 \r
-       if (__tty_setparms(fd, "115200", "N", "8", "1", 0, 0) != TAPI_API_SUCCESS) {\r
+               /* Close VDPRAM Device */
                vdpram_close(fd);\r
                return rv;\r
        }\r
-       else\r
-               dbg("#### Success set tty vdpram params. fd:%d", fd);\r
+       else {
+               dbg("[VDPRAM] Set TTY device parameters - [SUCCESS]");
+       }
 \r
-       /*TODO: No need to check Status. Delete*/\r
+       /* TODO: No need to check Status. Delete */
        cmd = HN_DPRAM_PHONE_GETSTATUS;\r
+       if (ioctl(fd, cmd, &val) < 0) {
+               err("[VDPRAM] Get Phone status - [FAIL] fd: [d] cmd: [%d] val: [%d]",
+                                                                                       fd, cmd, val);
 \r
-       if (ioctl(fd, cmd, &val) < 0) {\r
-               err("#### ioctl failed fd:%d, cmd:%lu, val:%d", fd,cmd,val);\r
+               /* Close Device */
                vdpram_close(fd);\r
+
                return rv;\r
+       } else {
+               dbg("[VDPRAM] Get Phone status - [SUCCESS]");
        }\r
-       else\r
-               dbg("#### ioctl Success fd:%d, cmd:%lu, val:%d", fd,cmd,val);\r
 \r
        return fd;\r
-\r
 }\r
 \r
 /*\r
-*      power on the phone.\r
-*/\r
-int vdpram_poweron(int fd)\r
+ *     Power ON the Phone.
+ */
+gboolean vdpram_poweron(int fd)
 {\r
-       int rv = -1;\r
-\r
        if (ioctl(fd, HN_DPRAM_PHONE_ON, NULL) < 0) {\r
-               err("Phone Power On failed (fd:%d)", fd);\r
-               rv = 0;\r
+               err("[VDPRAM] Phone Power ON [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
+               return FALSE;
        }\r
        else {\r
-               dbg("Phone Power On success (fd:%d)", fd);\r
-               rv = 1;\r
+               dbg("[VDPRAM] Phone Power ON [SUCCESS] - fd: [%d]", fd);
+               return TRUE;
        }\r
-       return rv;\r
 }\r
 \r
- /*\r
- *     Power Off the Phone.\r
+/*
+ *     Power OFF the Phone.
  */\r
-int vdpram_poweroff(int fd)\r
+gboolean vdpram_poweroff(int fd)
 {\r
-       int rv;\r
-\r
        if (ioctl(fd, HN_DPRAM_PHONE_OFF, NULL) < 0) {\r
-               err("Phone Power Off failed.");\r
-               rv = -1;\r
+               err("[VDPRAM] Phone Power OFF [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
+               return FALSE;
        }\r
        else {\r
-               dbg("Phone Power Off success.");\r
-               rv = 1;\r
+               dbg("[VDPRAM] Phone Power OFF [SUCCESS] - fd: [%d]", fd);
+               return TRUE;
        }\r
-\r
-       return rv;\r
 }\r
 \r
 /*\r
-*      Read data from vdpram.\r
-*/\r
-\r
+ *     Read data from VDPRAM.
+ */
 int vdpram_tty_read(int nFd, void* buf, size_t nbytes)\r
 {\r
        int     actual = 0;\r
 \r
        if ((actual = read(nFd, buf, nbytes)) < 0) {\r
-               dbg("[TRANSPORT DPRAM]read failed.");\r
+               err("[VDPRAM] Read [FAIL] - fd: [%d] Error: [%s]", nFd, strerror(errno));
        }\r
-       vdpram_hex_dump(IPC_RX, actual, buf);\r
+
+       /* Dumping Read data */
+       vdpram_hex_dump(RX, actual, buf);
 \r
        return actual;\r
 }\r
 \r
-static void __selectsleep(int sec,int msec)\r
-{\r
-    struct timeval tv;\r
-    tv.tv_sec=sec;\r
-    tv.tv_usec=msec;\r
-    select(0,NULL,NULL,NULL,&tv);\r
-    return;\r
-}\r
-\r
 /*\r
-*      Write data to vdpram.\r
-*/\r
+ *     Write data to VDPRAM.
+ */
 int vdpram_tty_write(int nFd, void* buf, size_t nbytes)\r
 {\r
        int ret;\r
@@ -488,33 +517,38 @@ int vdpram_tty_write(int nFd, void* buf, size_t nbytes)
        int     retry = 0;\r
 \r
        do {\r
-               vdpram_hex_dump(IPC_TX, nbytes, buf);\r
+               vdpram_hex_dump(TX, nbytes, buf);
+
+               /* Write to Device */
                ret = write(nFd, (unsigned char* )buf, nbytes - actual);\r
+               if (ret < 0) {
+                       err("[VDPRAM] Write [FAIL] - fd: [%d] Error: [%s]",
+                                                                                               nFd, strerror(errno));
 \r
-               if ((ret < 0 && errno == EAGAIN) || (ret < 0 && errno == EBUSY)) {\r
-                       err("write failed. retry.. ret[%d] with errno[%d] ",ret, errno);\r
-                       __selectsleep(0,50);\r
+                       if ((errno == EAGAIN) || (errno == EBUSY)) {
+                               /* Sleep for 50 msecs */
+                               __sleep(SLEEP_TIME_IN_SEC, SLEEP_TIME_IN_MSEC);
 \r
-                       if (retry == 10)\r
-                               return 0;\r
+                               if (retry == MAX_RETRY_COUNT) {
+                                       err("[VDPRAM] Maximum retries completed!!!");
+                                       return 0;
+                               }
 \r
-                       retry = retry + 1;\r
-                   continue;\r
-               }\r
+                               retry = retry + 1;
+                               continue;
+                       }
 \r
-               if (ret < 0) {\r
-                   if (actual != nbytes)\r
-                               err("write failed.ret[%d]",ret);\r
+                       if (actual != nbytes)
+                               err("[VDPRAM] Write [FAIL] - fd: [%d]", nFd);
 \r
-                       err("errno [%d]",errno);\r
+                       err("[VDPRAM] Write [FAIL] - Error: [%s]", strerror(errno));
                        return actual;\r
                }\r
 \r
                actual  += ret;\r
                buf     += ret;\r
-\r
+               dbg("[VDPRAM] Write Actual bytes: [%d] Written bytes: [%d]", actual, ret);
        } while(actual < nbytes);\r
 \r
        return actual;\r
 }\r
-/*     EOF     */\r
index d2992e8..7befabd 100644 (file)
@@ -66,7 +66,7 @@ void vdpram_hex_dump(int dir, unsigned short data_len, void *data)
        if(!data)\r
                return;\r
 \r
-       if (dir == IPC_RX)\r
+       if (dir == RX)
                d = "[RX]";\r
        else\r
                d = "[TX]";\r