aboutsummaryrefslogtreecommitdiffstats
path: root/samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c')
-rw-r--r--samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c130
1 files changed, 69 insertions, 61 deletions
diff --git a/samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c b/samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c
index e7b89b3..06731a7 100644
--- a/samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c
+++ b/samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c
@@ -2,7 +2,7 @@
* This file is part of libsamsung-ipc.
*
* Copyright (C) 2012 Alexander Tarasikov <alexander.tarasikov@gmail.com>
- * Copyright (C) 2013 Paul Kocialkowski <contact@paulk.fr>
+ * Copyright (C) 2013-2014 Paul Kocialkowski <contact@paulk.fr>
*
* libsamsung-ipc is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -171,34 +171,37 @@ int xmm6260_sec_modem_link_get_hostwake_wait(int device_fd)
return -1;
}
-int xmm6260_sec_modem_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
+int xmm6260_sec_modem_fmt_send(struct ipc_client *client,
+ struct ipc_message *message)
{
struct ipc_fmt_header header;
void *buffer;
+ size_t length;
+ size_t count;
unsigned char *p;
- int count;
int rc;
- if (client == NULL || client->handlers == NULL || client->handlers->write == NULL || request == NULL)
+ if (client == NULL || client->handlers == NULL || client->handlers->write == NULL || message == NULL)
return -1;
- ipc_fmt_header_fill(&header, request);
+ ipc_fmt_header_setup(&header, message);
- buffer = malloc(header.length);
+ length = header.length;
+ buffer = calloc(1, length);
memcpy(buffer, &header, sizeof(struct ipc_fmt_header));
- if (request->data != NULL && request->length > 0)
- memcpy((void *) ((unsigned char *) buffer + sizeof(struct ipc_fmt_header)), request->data, request->length);
+ if (message->data != NULL && message->size > 0)
+ memcpy((void *) ((unsigned char *) buffer + sizeof(struct ipc_fmt_header)), message->data, message->size);
- ipc_client_log_send(client, request, __func__);
+ ipc_client_log_send(client, message, __func__);
p = (unsigned char *) buffer;
count = 0;
- while (count < header.length) {
- rc = client->handlers->write(client->handlers->transport_data, p, header.length - count);
+ while (count < length) {
+ rc = client->handlers->write(client->handlers->transport_data, p, length - count);
if (rc <= 0) {
- ipc_client_log(client, "Writing FMT data to the modem failed");
+ ipc_client_log(client, "Writing FMT data failed");
goto error;
}
@@ -219,36 +222,37 @@ complete:
return rc;
}
-int xmm6260_sec_modem_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
+int xmm6260_sec_modem_fmt_recv(struct ipc_client *client,
+ struct ipc_message *message)
{
struct ipc_fmt_header *header;
void *buffer = NULL;
+ size_t length;
+ size_t count;
unsigned char *p;
- int length;
- int count;
int rc;
- if (client == NULL || client->handlers == NULL || client->handlers->read == NULL || response == NULL)
+ if (client == NULL || client->handlers == NULL || client->handlers->read == NULL || message == NULL)
return -1;
length = XMM6260_DATA_SIZE;
- buffer = malloc(length);
+ buffer = calloc(1, length);
rc = client->handlers->read(client->handlers->transport_data, buffer, length);
if (rc < (int) sizeof(struct ipc_fmt_header)) {
- ipc_client_log(client, "Reading FMT header from the modem failed");
+ ipc_client_log(client, "Reading FMT header failed");
goto error;
}
header = (struct ipc_fmt_header *) buffer;
- ipc_fmt_message_fill(header, response);
+ ipc_fmt_message_setup(header, message);
if (header->length > sizeof(struct ipc_fmt_header)) {
- response->length = header->length - sizeof(struct ipc_fmt_header);
- response->data = malloc(response->length);
+ message->size = header->length - sizeof(struct ipc_fmt_header);
+ message->data = calloc(1, message->size);
- p = (unsigned char *) response->data;
+ p = (unsigned char *) message->data;
count = rc - sizeof(struct ipc_fmt_header);
if (count > 0) {
@@ -256,10 +260,10 @@ int xmm6260_sec_modem_ipc_fmt_recv(struct ipc_client *client, struct ipc_message
p += count;
}
- while (count < (int) response->length) {
- rc = client->handlers->read(client->handlers->transport_data, p, response->length - count);
+ while (count < message->size) {
+ rc = client->handlers->read(client->handlers->transport_data, p, message->size - count);
if (rc <= 0) {
- ipc_client_log(client, "Reading FMT data from the modem failed");
+ ipc_client_log(client, "Reading FMT data failed");
goto error;
}
@@ -268,7 +272,7 @@ int xmm6260_sec_modem_ipc_fmt_recv(struct ipc_client *client, struct ipc_message
}
}
- ipc_client_log_recv(client, response, __func__);
+ ipc_client_log_recv(client, message, __func__);
rc = 0;
goto complete;
@@ -283,35 +287,37 @@ complete:
return rc;
}
-int xmm6260_sec_modem_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
+int xmm6260_sec_modem_rfs_send(struct ipc_client *client,
+ struct ipc_message *message)
{
struct ipc_rfs_header header;
void *buffer;
+ size_t length;
+ size_t count;
unsigned char *p;
- int count;
int rc;
-
- if (client == NULL || client->handlers == NULL || client->handlers->write == NULL || request == NULL)
+ if (client == NULL || client->handlers == NULL || client->handlers->write == NULL || message == NULL)
return -1;
- ipc_rfs_header_fill(&header, request);
+ ipc_rfs_header_setup(&header, message);
- buffer = malloc(header.length);
+ length = header.length;
+ buffer = calloc(1, length);
memcpy(buffer, &header, sizeof(struct ipc_rfs_header));
- if (request->data != NULL && request->length > 0)
- memcpy((void *) ((unsigned char *) buffer + sizeof(struct ipc_rfs_header)), request->data, request->length);
+ if (message->data != NULL && message->size > 0)
+ memcpy((void *) ((unsigned char *) buffer + sizeof(struct ipc_rfs_header)), message->data, message->size);
- ipc_client_log_send(client, request, __func__);
+ ipc_client_log_send(client, message, __func__);
p = (unsigned char *) buffer;
count = 0;
- while (count < (int) header.length) {
- rc = client->handlers->write(client->handlers->transport_data, p, header.length - count);
+ while (count < length) {
+ rc = client->handlers->write(client->handlers->transport_data, p, length - count);
if (rc <= 0) {
- ipc_client_log(client, "Writing RFS data to the modem failed");
+ ipc_client_log(client, "Writing RFS data failed");
goto error;
}
@@ -332,36 +338,37 @@ complete:
return rc;
}
-int xmm6260_sec_modem_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
+int xmm6260_sec_modem_rfs_recv(struct ipc_client *client,
+ struct ipc_message *message)
{
struct ipc_rfs_header *header;
void *buffer = NULL;
+ size_t length;
+ size_t count;
unsigned char *p;
- int length;
- int count;
int rc;
- if (client == NULL || client->handlers == NULL || client->handlers->read == NULL || response == NULL)
+ if (client == NULL || client->handlers == NULL || client->handlers->read == NULL || message == NULL)
return -1;
length = XMM6260_DATA_SIZE;
- buffer = malloc(length);
+ buffer = calloc(1, length);
rc = client->handlers->read(client->handlers->transport_data, buffer, length);
if (rc < (int) sizeof(struct ipc_rfs_header)) {
- ipc_client_log(client, "Reading RFS header from the modem failed");
+ ipc_client_log(client, "Reading RFS header failed");
goto error;
}
header = (struct ipc_rfs_header *) buffer;
- ipc_rfs_message_fill(header, response);
+ ipc_rfs_message_setup(header, message);
if (header->length > sizeof(struct ipc_rfs_header)) {
- response->length = header->length - sizeof(struct ipc_rfs_header);
- response->data = malloc(response->length);
+ message->size = header->length - sizeof(struct ipc_rfs_header);
+ message->data = calloc(1, message->size);
- p = (unsigned char *) response->data;
+ p = (unsigned char *) message->data;
count = rc - sizeof(struct ipc_rfs_header);
if (count > 0) {
@@ -369,10 +376,10 @@ int xmm6260_sec_modem_ipc_rfs_recv(struct ipc_client *client, struct ipc_message
p += count;
}
- while (count < (int) response->length) {
- rc = client->handlers->read(client->handlers->transport_data, p, response->length - count);
+ while (count < message->size) {
+ rc = client->handlers->read(client->handlers->transport_data, p, message->size - count);
if (rc <= 0) {
- ipc_client_log(client, "Reading RFS data from the modem failed");
+ ipc_client_log(client, "Reading RFS data failed");
goto error;
}
@@ -381,7 +388,7 @@ int xmm6260_sec_modem_ipc_rfs_recv(struct ipc_client *client, struct ipc_message
}
}
- ipc_client_log_recv(client, response, __func__);
+ ipc_client_log_recv(client, message, __func__);
rc = 0;
goto complete;
@@ -396,7 +403,7 @@ complete:
return rc;
}
-int xmm6260_sec_modem_ipc_open(int type)
+int xmm6260_sec_modem_open(int type)
{
int fd;
@@ -414,7 +421,7 @@ int xmm6260_sec_modem_ipc_open(int type)
return fd;
}
-int xmm6260_sec_modem_ipc_close(int fd)
+int xmm6260_sec_modem_close(int fd)
{
if (fd < 0)
return -1;
@@ -424,7 +431,7 @@ int xmm6260_sec_modem_ipc_close(int fd)
return 0;
}
-int xmm6260_sec_modem_ipc_read(int fd, void *buffer, unsigned int length)
+int xmm6260_sec_modem_read(int fd, void *buffer, size_t length)
{
int rc;
@@ -432,10 +439,11 @@ int xmm6260_sec_modem_ipc_read(int fd, void *buffer, unsigned int length)
return -1;
rc = read(fd, buffer, length);
+
return rc;
}
-int xmm6260_sec_modem_ipc_write(int fd, void *buffer, unsigned int length)
+int xmm6260_sec_modem_write(int fd, const void *buffer, size_t length)
{
int rc;
@@ -443,10 +451,11 @@ int xmm6260_sec_modem_ipc_write(int fd, void *buffer, unsigned int length)
return -1;
rc = write(fd, buffer, length);
+
return rc;
}
-int xmm6260_sec_modem_ipc_poll(int fd, struct timeval *timeout)
+int xmm6260_sec_modem_poll(int fd, struct timeval *timeout)
{
fd_set fds;
int rc;
@@ -468,7 +477,7 @@ int xmm6260_sec_modem_ipc_poll(int fd, struct timeval *timeout)
return rc;
}
-char *xmm6260_sec_modem_ipc_gprs_get_iface(int cid)
+char *xmm6260_sec_modem_gprs_get_iface(int cid)
{
char *iface = NULL;
@@ -480,13 +489,12 @@ char *xmm6260_sec_modem_ipc_gprs_get_iface(int cid)
return iface;
}
-int xmm6260_sec_modem_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
+int xmm6260_sec_modem_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
{
if (capabilities == NULL)
return -1;
- capabilities->port_list = 0;
- capabilities->cid_max = XMM6260_SEC_MODEM_GPRS_IFACE_COUNT;
+ capabilities->cid_count = XMM6260_SEC_MODEM_GPRS_IFACE_COUNT;
return 0;
}