/*\r
* tel-plugin-vmodem\r
*\r
- * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: Junhwan An <jh48.an@samsung.com>\r
+ * Copyright (c) 2013 Samsung Electronics Co. Ltd. All rights reserved.\r
*\r
* Licensed under the Apache License, Version 2.0 (the "License");\r
* you may not use this file except in compliance with the License.\r
#include <glib.h>
#include <log.h>\r
-#include "legacy/TelUtility.h"\r
+\r
#include "vdpram.h"\r
-#include "vdpram_dump.h"\r
\r
#ifndef TIOCMODG\r
# ifdef TIOCMGET\r
# endif\r
#endif\r
\r
+#define VDPRAM_OPEN_PATH "/dev/vdpram0"\r
+\r
+/* DPRAM ioctls for DPRAM tty devices */\r
+#define IOC_MZ_MAGIC ('h')\r
+#define HN_DPRAM_PHONE_ON _IO (IOC_MZ_MAGIC, 0xd0)\r
+#define HN_DPRAM_PHONE_OFF _IO (IOC_MZ_MAGIC, 0xd1)\r
+#define HN_DPRAM_PHONE_GETSTATUS _IOR(IOC_MZ_MAGIC, 0xd2, guint)\r
+\r
/* Retry parameters */
#define SLEEP_TIME_IN_SEC 0
#define SLEEP_TIME_IN_MSEC 50
-#define MAX_RETRY_COUNT 10
+#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
- struct _tty_old_setting_t *prev;\r
-} tty_old_setting_t;\r
-\r
-#define VDPRAM_OPEN_PATH "/dev/vdpram0"\r
+typedef struct tty_old_setting TtyOldSetting;\r
\r
-/* DPRAM ioctls for DPRAM tty devices */\r
-#define IOC_MZ_MAGIC ('h')\r
-#define HN_DPRAM_PHONE_ON _IO (IOC_MZ_MAGIC, 0xd0)\r
-#define HN_DPRAM_PHONE_OFF _IO (IOC_MZ_MAGIC, 0xd1)\r
-#define HN_DPRAM_PHONE_GETSTATUS _IOR(IOC_MZ_MAGIC, 0xd2, unsigned int)\r
+struct tty_old_setting {
+ gint fd;\r
+ struct termios termiosVal;\r
+ TtyOldSetting *next;\r
+ TtyOldSetting *prev;\r
+};\r
\r
-static tty_old_setting_t *ttyold_head = NULL;\r
+static TtyOldSetting *ttyold_head = NULL;\r
\r
/*
- * Insert TTY old settings.
+ * Insert TTY old settings
*/
-static void __insert_tty_oldsetting(tty_old_setting_t *me)\r
+static void __insert_tty_oldsetting(TtyOldSetting *me)\r
{\r
- dbg("Function Entrance");
+ dbg("Enter");
\r
if (me == NULL)\r
return;\r
}\r
\r
/*
- * Search TTY old settings.
+ * Search TTY old settings
*/
-static tty_old_setting_t *__search_tty_oldsetting(int fd)\r
+static TtyOldSetting *__search_tty_oldsetting(gint fd)\r
{\r
- tty_old_setting_t *tty = NULL;\r
-\r
- dbg("Function Entrance");
-\r
- if (ttyold_head == NULL)\r
- return NULL;\r
+ TtyOldSetting *tty = ttyold_head;\r
\r
- tty = ttyold_head;\r
+ dbg("Enter");
\r
- do {
+ while (tty) {\r
if (tty->fd == fd) {\r
- dbg("oldsetting for inputted fd [%d] is found", fd);
+ dbg("tty for fd [%d] found!!!", fd);
break;\r
- } else {
- if (tty->next == NULL) {\r
- err("No oldsetting found!!!");
- tty = NULL;\r
- break;\r
- }\r
- tty = tty->next;\r
}\r
- } while (1);
+ tty = tty->next;\r
+ };\r
\r
return tty;\r
}\r
\r
/*
- * Remove TTY old settings.
+ * Remove TTY old settings
*/
-static void __remove_tty_oldsetting(tty_old_setting_t *me)\r
+static void __remove_tty_oldsetting(TtyOldSetting *me)\r
{\r
- dbg( "Function Enterence.");\r
+ dbg("Enter");\r
\r
if (me == NULL)\r
return;\r
}\r
\r
/*
- * Set hardware flow control.
+ * Set hardware flow control
*/
-static void __tty_sethwf(int fd, int on)\r
+static void __tty_sethwf(gint fd, gint on)\r
{\r
struct termios tty;\r
\r
- dbg("Function Entrance");
+ dbg("Enter");
\r
if (tcgetattr(fd, &tty))\r
err("__tty_sethwf: tcgetattr:");\r
\r
- if (on)\r
+ if (on == 1)\r
tty.c_cflag |= CRTSCTS;
else\r
tty.c_cflag &= ~CRTSCTS;
}\r
\r
/*\r
- * Set RTS line. Sometimes dropped. Linux specific?
+ * Set RTS line. Sometimes dropped. Linux specific?
*/
-static int __tty_setrts(int fd)\r
+static gint __tty_setrts(gint fd)\r
{\r
- int mcs;\r
+ gint mcs;\r
\r
- dbg("Function Entrance");
+ dbg("Enter");
\r
if (-1 == ioctl(fd, TIOCMODG, &mcs))\r
err("icotl: TIOCMODG");\r
}\r
\r
/*\r
- * Set baudrate, parity and number of bits.
+ * 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
+static gboolean __tty_setparms(gint fd,\r
+ gchar *baudr, gchar *par, gchar *bits, gchar *stop, gint hwf, gint swf)\r
{\r
- int spd = -1;\r
- int newbaud;\r
- int bit = bits[0];\r
- int stop_bit = stop[0];\r
+ gint spd = -1;\r
+ gint newbaud;\r
+ gint bit = bits[0];\r
+ gint stop_bit = stop[0];\r
\r
struct termios tty;\r
- tty_old_setting_t *old_setting = NULL;\r
+ TtyOldSetting *old_setting = NULL;\r
\r
- dbg("Function Entrance");
+ dbg("Enter");
\r
- old_setting = g_try_new0(tty_old_setting_t, 1);
+ old_setting = g_try_new0(TtyOldSetting, 1);
\r
if (old_setting == NULL)\r
- return TAPI_API_SYSTEM_OUT_OF_MEM;\r
+ return FALSE;\r
\r
old_setting->fd = fd;\r
\r
if (tcgetattr(fd, &tty) < 0) {\r
g_free(old_setting);
- return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
+ return FALSE;\r
}\r
\r
if (tcgetattr(fd, &old_setting->termiosVal) < 0) {\r
g_free(old_setting);
- return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
+ return FALSE;\r
}\r
\r
__insert_tty_oldsetting(old_setting);\r
if ((newbaud = (atol(baudr) / 100)) == 0 && baudr[0] != '0')\r
newbaud = -1;\r
\r
- switch(newbaud) {
- case 0:\r
- spd = 0;\r
- break;
+ switch (newbaud) {
+ case 0:\r
+ spd = 0;\r
+ break;
\r
- case 3:\r
- spd = B300;\r
- break;
+ case 3:\r
+ spd = B300;\r
+ break;
\r
- case 6:\r
- spd = B600;\r
- break;
+ case 6:\r
+ spd = B600;\r
+ break;
\r
- case 12:\r
- spd = B1200;\r
- break;
+ case 12:\r
+ spd = B1200;\r
+ break;
\r
- case 24:\r
- spd = B2400;\r
- break;
+ case 24:\r
+ spd = B2400;\r
+ break;
\r
- case 48:\r
- spd = B4800;\r
- break;
+ case 48:\r
+ spd = B4800;\r
+ break;
\r
- case 96:\r
- spd = B9600;\r
- break;
+ case 96:\r
+ spd = B9600;\r
+ break;
\r
- case 192:\r
- spd = B19200;\r
- break;
+ case 192:\r
+ spd = B19200;\r
+ break;
\r
- case 384:\r
- spd = B38400;\r
- break;
+ case 384:\r
+ spd = B38400;\r
+ break;
\r
- case 576:\r
- spd = B57600;\r
- break;
+ case 576:\r
+ spd = B57600;\r
+ break;
\r
- case 1152:\r
- spd = B115200;\r
- break;
+ case 1152:\r
+ spd = B115200;\r
+ break;
\r
- default:\r
- err("invaid baud rate");\r
- break;
+ default:\r
+ err("invaid baud rate");\r
+ break;
}\r
\r
if (spd != -1) {\r
cfsetispeed(&tty, (speed_t) spd);
}\r
\r
- switch(bit) {
- case '5':
- tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5;
- break;
+ switch (bit) {
+ case '5':
+ tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5;
+ break;
\r
- case '6':
- tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6;
- break;
+ case '6':
+ tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6;
+ break;
\r
- case '7':
- tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7;
- break;
+ case '7':
+ tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7;
+ break;
\r
- case '8':
- default:
- tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;
- break;
+ case '8':
+ default:
+ tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;
+ break;
}\r
\r
- switch(stop_bit) {
- case '1':
- tty.c_cflag &= ~CSTOPB;
- break;
+ switch (stop_bit) {
+ case '1':
+ tty.c_cflag &= ~CSTOPB;
+ break;
\r
- case '2':
- default:
- tty.c_cflag |= CSTOPB;
- break;
+ case '2':
+ default:
+ tty.c_cflag |= CSTOPB;
+ break;
}\r
\r
/* Set into raw, no echo mode */\r
\r
if (tcsetattr(fd, TCSANOW, &tty) < 0) {\r
g_free(old_setting);
- return TAPI_API_TRANSPORT_LAYER_FAILURE;
+ return FALSE;
}\r
\r
__tty_setrts(fd);\r
__tty_sethwf(fd, hwf);\r
\r
- return TAPI_API_SUCCESS;\r
+ return TRUE;\r
}\r
\r
/*
- * Close TTY Device.
+ * Close TTY Device
*/
-static int __tty_close(int fd)\r
+static gboolean __tty_close(gint fd)\r
{\r
- tty_old_setting_t *old_setting = NULL;\r
+ TtyOldSetting *old_setting = NULL;\r
\r
- dbg("Function Entrance");
+ dbg("Enter");
\r
/* Get previous settings */
old_setting = __search_tty_oldsetting(fd);\r
if (old_setting == NULL) {
- dbg("[VDPRAM] No previous settings found!!!");
- return TAPI_API_SUCCESS;\r
+ dbg("No previous settings found!!!");
+ return TRUE;\r
}
\r
if (tcsetattr(fd, TCSAFLUSH, &old_setting->termiosVal) < 0) {\r
- err("[VDPRAM] Close failed");
- return TAPI_API_TRANSPORT_LAYER_FAILURE;\r
+ err("Close failed");
+ return FALSE;\r
}\r
\r
/* Remove the previous setting configured */
/* Close fd */
close(fd);\r
\r
- return TAPI_API_SUCCESS;\r
+ return TRUE;\r
}\r
\r
/*\r
- * Wait on select.
+ * Wait on select
*/
-static void __sleep(int sec, int msec)
+static void __sleep(gint sec, gint msec)
{
- struct timeval tv;
+ struct timeval tv;
- tv.tv_sec = sec;
- tv.tv_usec = msec;
+ tv.tv_sec = sec;
+ tv.tv_usec = msec;
- select(0, NULL, NULL, NULL, &tv);
+ select(0, NULL, NULL, NULL, &tv);
}
/*
* Close the VDPRAM device
*/
-int vdpram_close(int fd)\r
+gboolean vdpram_close(gint fd)\r
{\r
- int ret = TAPI_API_SUCCESS;\r
+ gint ret;\r
\r
- dbg("Function Entrance");
+ dbg("Enter");
\r
/* Close VDPRAM Device */
ret = __tty_close(fd);\r
/*\r
* Open the VDPRAM device
*/
-int vdpram_open (void)\r
+gint vdpram_open (void)\r
{\r
- int rv = -1;\r
- int fd = -1;\r
- int val = 0;\r
- unsigned int cmd =0;\r
+ gint rv = -1;\r
+ gint fd = -1;\r
+ gint val = 0;\r
+ guint cmd =0;\r
\r
- dbg("Function Enterence.");
+ dbg("Enter");
/* Open DPRAM device */
fd = open(VDPRAM_OPEN_PATH, O_RDWR);\r
if (fd < 0) {\r
- err("[VDPRAM] Open VDPRAM file - [FAIL] Error: [%s]", strerror(errno));
+ err("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);
+ dbg("Open VDPRAM file - [SUCCESS] 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]");
+ if (__tty_setparms(fd, "115200", "N", "8", "1", 0, 0) != TRUE) {
+ err("Set TTY device parameters - [FAIL]");
\r
/* Close VDPRAM Device */
- vdpram_close(fd);\r
+ (void)vdpram_close(fd);\r
return rv;\r
}\r
else {
- dbg("[VDPRAM] Set TTY device parameters - [SUCCESS]");
+ dbg("Set TTY device parameters - [SUCCESS]");
}
\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);
+ err("Get Phone status - [FAIL] fd: [d] cmd: [%d] val: [%d]",
+ fd, cmd, val);
\r
/* Close Device */
- vdpram_close(fd);\r
+ (void)vdpram_close(fd);\r
return rv;\r
} else {
- dbg("[VDPRAM] Get Phone status - [SUCCESS]");
+ dbg("Get Phone status - [SUCCESS]");
}\r
\r
return fd;\r
}\r
\r
/*\r
- * Power ON the Phone.
+ * Power ON the Phone
*/
-gboolean vdpram_poweron(int fd)
+gboolean vdpram_poweron(gint fd)
{\r
if (ioctl(fd, HN_DPRAM_PHONE_ON, NULL) < 0) {\r
- err("[VDPRAM] Phone Power ON [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
+ err("Phone Power ON [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
return FALSE;
}\r
else {\r
- dbg("[VDPRAM] Phone Power ON [SUCCESS] - fd: [%d]", fd);
+ dbg("Phone Power ON [SUCCESS] - fd: [%d]", fd);
return TRUE;
}\r
}\r
\r
/*
- * Power OFF the Phone.
+ * Power OFF the Phone
*/\r
-gboolean vdpram_poweroff(int fd)
+gboolean vdpram_poweroff(gint fd)
{\r
if (ioctl(fd, HN_DPRAM_PHONE_OFF, NULL) < 0) {\r
- err("[VDPRAM] Phone Power OFF [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
+ err("Phone Power OFF [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
return FALSE;
}\r
else {\r
- dbg("[VDPRAM] Phone Power OFF [SUCCESS] - fd: [%d]", fd);
+ dbg("Phone Power OFF [SUCCESS] - fd: [%d]", fd);
return TRUE;
}\r
}\r
\r
/*\r
- * Read data from VDPRAM.
+ * Read data from VDPRAM
*/
-int vdpram_tty_read(int nFd, void* buf, size_t nbytes)\r
+gint vdpram_tty_read(gint fd, void *buf, size_t buf_len)\r
{\r
- int actual = 0;\r
+ gint actual = 0;\r
\r
- if ((actual = read(nFd, buf, nbytes)) < 0) {\r
- err("[VDPRAM] Read [FAIL] - fd: [%d] Error: [%s]", nFd, strerror(errno));
+ if ((actual = read(fd, buf, buf_len)) < 0) {\r
+ err("Read [FAIL] - fd: [%d] Error: [%s]", fd, strerror(errno));
}\r
- /* Dumping Read data */
- vdpram_hex_dump(RX, actual, buf);
-\r
return actual;\r
}\r
\r
/*\r
- * Write data to VDPRAM.
+ * Write data to VDPRAM
*/
-int vdpram_tty_write(int nFd, void* buf, size_t nbytes)\r
+gint vdpram_tty_write(gint fd, void *buf, size_t buf_len)\r
{\r
- int ret;\r
size_t actual = 0;\r
- int retry = 0;\r
-\r
- do {\r
- vdpram_hex_dump(TX, nbytes, buf);
+ guint retry = 0;\r
+ gint ret;\r
+ while(actual < buf_len) {\r
/* Write to Device */
- ret = write(nFd, (unsigned char* )buf, nbytes - actual);\r
+ ret = write(fd, (guchar *)buf, buf_len - actual);\r
if (ret < 0) {
- err("[VDPRAM] Write [FAIL] - fd: [%d] Error: [%s]",
- nFd, strerror(errno));
+ err("Write [FAIL] - fd: [%d] Error: [%s]",
+ fd, strerror(errno));
\r
if ((errno == EAGAIN) || (errno == EBUSY)) {
/* Sleep for 50 msecs */
__sleep(SLEEP_TIME_IN_SEC, SLEEP_TIME_IN_MSEC);
\r
if (retry == MAX_RETRY_COUNT) {
- err("[VDPRAM] Maximum retries completed!!!");
+ err("Maximum retries completed!!!");
return 0;
}
\r
continue;
}
\r
- if (actual != nbytes)
- err("[VDPRAM] Write [FAIL] - fd: [%d]", nFd);
+ if (actual != buf_len)
+ err("Write [FAIL] - fd: [%d]", fd);
\r
- err("[VDPRAM] Write [FAIL] - Error: [%s]", strerror(errno));
+ err("Write [FAIL] - Error: [%s]", strerror(errno));
return actual;\r
}\r
\r
actual += ret;\r
buf += ret;\r
- dbg("[VDPRAM] Write Actual bytes: [%d] Written bytes: [%d]", actual, ret);
- } while(actual < nbytes);\r
+ dbg("Write Actual bytes: [%d] Written bytes: [%d]", actual, ret);
+ };\r
\r
return actual;\r
}\r