ipc: Consistent coding style and major cleanup
authorPaul Kocialkowski <contact@paulk.fr>
Sat, 15 Feb 2014 19:16:19 +0000 (20:16 +0100)
committerPaul Kocialkowski <contact@paulk.fr>
Sat, 15 Feb 2014 19:58:20 +0000 (20:58 +0100)
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
34 files changed:
Android.mk
include/protocol.h
include/samsung-ipc.h
samsung-ipc/Makefile.am
samsung-ipc/devices/aries/aries.c [moved from samsung-ipc/devices/aries/aries_ipc.c with 75% similarity]
samsung-ipc/devices/aries/aries.h [moved from samsung-ipc/devices/aries/aries_ipc.h with 88% similarity]
samsung-ipc/devices/crespo/crespo.c [moved from samsung-ipc/devices/crespo/crespo_ipc.c with 63% similarity]
samsung-ipc/devices/crespo/crespo.h [moved from samsung-ipc/devices/crespo/crespo_ipc.h with 76% similarity]
samsung-ipc/devices/galaxys2/galaxys2.c [moved from samsung-ipc/devices/galaxys2/galaxys2_ipc.c with 70% similarity]
samsung-ipc/devices/galaxys2/galaxys2.h [moved from samsung-ipc/devices/galaxys2/galaxys2_ipc.h with 79% similarity]
samsung-ipc/devices/i9300/i9300.c [moved from samsung-ipc/devices/i9300/i9300_ipc.c with 70% similarity]
samsung-ipc/devices/i9300/i9300.h [moved from samsung-ipc/devices/i9300/i9300_ipc.h with 80% similarity]
samsung-ipc/devices/maguro/maguro.c [moved from samsung-ipc/devices/maguro/maguro_ipc.c with 69% similarity]
samsung-ipc/devices/maguro/maguro.h [moved from samsung-ipc/devices/maguro/maguro_ipc.h with 84% similarity]
samsung-ipc/devices/n7100/n7100.c [moved from samsung-ipc/devices/n7100/n7100_ipc.c with 70% similarity]
samsung-ipc/devices/n7100/n7100.h [moved from samsung-ipc/devices/n7100/n7100_ipc.h with 83% similarity]
samsung-ipc/devices/piranha/piranha.c [moved from samsung-ipc/devices/piranha/piranha_ipc.c with 65% similarity]
samsung-ipc/devices/piranha/piranha.h [moved from samsung-ipc/devices/piranha/piranha_ipc.h with 77% similarity]
samsung-ipc/devices/xmm6160/xmm6160.c
samsung-ipc/devices/xmm6160/xmm6160.h
samsung-ipc/devices/xmm6260/xmm6260.c
samsung-ipc/devices/xmm6260/xmm6260.h
samsung-ipc/devices/xmm6260/xmm6260_hsic.c
samsung-ipc/devices/xmm6260/xmm6260_hsic.h
samsung-ipc/devices/xmm6260/xmm6260_mipi.c
samsung-ipc/devices/xmm6260/xmm6260_mipi.h
samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c
samsung-ipc/devices/xmm6260/xmm6260_sec_modem.h
samsung-ipc/ipc.c
samsung-ipc/ipc.h
samsung-ipc/ipc_devices.c
samsung-ipc/ipc_devices.h
samsung-ipc/ipc_utils.c [moved from samsung-ipc/ipc_util.c with 73% similarity]
tools/modemctrl.c

index 8b6f445..cf55285 100644 (file)
@@ -1,6 +1,6 @@
 # This file is part of libsamsung-ipc.
 #
-# Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr>
+# Copyright (C) 2011-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
@@ -50,19 +50,19 @@ endif
 LOCAL_SRC_FILES := \
        samsung-ipc/ipc.c \
        samsung-ipc/ipc_devices.c \
-       samsung-ipc/ipc_util.c \
+       samsung-ipc/ipc_utils.c \
        samsung-ipc/devices/xmm6160/xmm6160.c \
        samsung-ipc/devices/xmm6260/xmm6260.c \
        samsung-ipc/devices/xmm6260/xmm6260_hsic.c \
        samsung-ipc/devices/xmm6260/xmm6260_mipi.c \
        samsung-ipc/devices/xmm6260/xmm6260_sec_modem.c \
-       samsung-ipc/devices/crespo/crespo_ipc.c \
-       samsung-ipc/devices/aries/aries_ipc.c \
-       samsung-ipc/devices/galaxys2/galaxys2_ipc.c \
-       samsung-ipc/devices/maguro/maguro_ipc.c \
-       samsung-ipc/devices/piranha/piranha_ipc.c \
-       samsung-ipc/devices/i9300/i9300_ipc.c \
-       samsung-ipc/devices/n7100/n7100_ipc.c \
+       samsung-ipc/devices/crespo/crespo.c \
+       samsung-ipc/devices/aries/aries.c \
+       samsung-ipc/devices/galaxys2/galaxys2.c \
+       samsung-ipc/devices/maguro/maguro.c \
+       samsung-ipc/devices/piranha/piranha.c \
+       samsung-ipc/devices/i9300/i9300.c \
+       samsung-ipc/devices/n7100/n7100.c \
        samsung-ipc/utils.c \
        samsung-ipc/call.c \
        samsung-ipc/sms.c \
index 1de64df..d2b58d0 100644 (file)
@@ -2,6 +2,7 @@
  * This file is part of libsamsung-ipc.
  *
  * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com>
+ * Copyright (C) 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
@@ -66,9 +67,9 @@
  * Macros
  */
 
-#define IPC_COMMAND(f)                          ((f->group << 8) | f->index)
-#define IPC_GROUP(m)                            (m >> 8)
-#define IPC_INDEX(m)                            (m & 0xff)
+#define IPC_COMMAND(group, index)               ((group << 8) | index)
+#define IPC_GROUP(command)                      (command >> 8)
+#define IPC_INDEX(command)                      (command & 0xff)
 
 /*
  * Structures
index 13370c8..669d4d8 100644 (file)
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com>
  * Copyright (C) 2012 Simon Busch <morphis@gravedo.de>
+ * Copyright (C) 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
@@ -40,67 +41,58 @@ struct ipc_handlers;
 struct ipc_fmt_header;
 struct ipc_rfs_header;
 
-struct ipc_message_info {
+struct ipc_message {
     unsigned char mseq;
     unsigned char aseq;
-    unsigned char group;
-    unsigned char index;
-    unsigned short cmd;
+    unsigned short command;
     unsigned char type;
-    unsigned int length;
-    unsigned char *data;
+    void *data;
+    size_t size;
 };
 
 struct ipc_client_gprs_capabilities {
-    int port_list;
-    int cid_max;
+    int cid_count;
 };
 
 /*
  * Helpers
  */
 
-struct ipc_client *ipc_client_create(int client_type);
-int ipc_client_destroy(struct ipc_client *client);
+int ipc_device_detect(void);
 
-void ipc_client_log(struct ipc_client *client, const char *message, ...);
-int ipc_client_set_log_callback(struct ipc_client *client,
-    void (*log_callback)(void *log_data, const char *message), void *log_data);
+struct ipc_client *ipc_client_create(int type);
+int ipc_client_destroy(struct ipc_client *client);
 
-int ipc_client_set_transport_handlers(struct ipc_client *client,
+int ipc_client_transport_handlers_register(struct ipc_client *client,
     int (*open)(void *transport_data, int type),
     int (*close)(void *transport_data),
-    int (*read)(void *transport_data, void *buffer, unsigned int length),
-    int (*write)(void *transport_data, void *buffer, unsigned int length),
+    int (*read)(void *transport_data, void *data, size_t size),
+    int (*write)(void *transport_data, const void *data, size_t size),
     int (*poll)(void *transport_data, struct timeval *timeout),
     void *transport_data);
-int ipc_client_set_power_handlers(struct ipc_client *client,
-    int (*power_on)(void *power_data),
-    int (*power_off)(void *power_data),
+int ipc_client_power_handlers_register(struct ipc_client *client,
+    int (*power_on)(void *power_data), int (*power_off)(void *power_data),
     void *power_data);
-int ipc_client_set_gprs_handlers(struct ipc_client *client,
+int ipc_client_gprs_handlers_register(struct ipc_client *client,
     int (*gprs_activate)(void *gprs_data, int cid),
-    int (*gprs_deactivate)(void *gprs_data, int cid),
-    void *gprs_data);
+    int (*gprs_deactivate)(void *gprs_data, int cid), void *gprs_data);
+
+void ipc_client_log(struct ipc_client *client, const char *message, ...);
+int ipc_client_log_callback_register(struct ipc_client *client,
+    void (*log_callback)(void *log_data, const char *message), void *log_data);
 
-int ipc_client_bootstrap(struct ipc_client *client);
-int ipc_client_send(struct ipc_client *client, const unsigned short command,
-    const char type, unsigned char *data, const int length, unsigned char mseq);
-int ipc_client_recv(struct ipc_client *client,
-    struct ipc_message_info *response);
-void ipc_client_response_free(struct ipc_client *client,
-    struct ipc_message_info *response);
+int ipc_client_boot(struct ipc_client *client);
+int ipc_client_send(struct ipc_client *client, unsigned char mseq,
+    unsigned short command, unsigned char type, const void *data, size_t size);
+int ipc_client_recv(struct ipc_client *client, struct ipc_message *message);
 
 int ipc_client_open(struct ipc_client *client);
 int ipc_client_close(struct ipc_client *client);
 int ipc_client_poll(struct ipc_client *client, struct timeval *timeout);
-
 int ipc_client_power_on(struct ipc_client *client);
 int ipc_client_power_off(struct ipc_client *client);
-
 int ipc_client_gprs_activate(struct ipc_client *client, int cid);
 int ipc_client_gprs_deactivate(struct ipc_client *client, int cid);
-
 int ipc_client_data_create(struct ipc_client *client);
 int ipc_client_data_destroy(struct ipc_client *client);
 
@@ -116,18 +108,24 @@ char *ipc_client_nv_data_secret(struct ipc_client *client);
 size_t ipc_client_nv_data_size(struct ipc_client *client);
 size_t ipc_client_nv_data_chunk_size(struct ipc_client *client);
 
-const char *ipc_response_type_to_str(int type);
-const char *ipc_request_type_to_str(int type);
-const char *ipc_command_to_str(int command);
-void ipc_client_hex_dump(struct ipc_client *client, void *data, int size);
-void ipc_client_log_recv(struct ipc_client *client,
-    struct ipc_message_info *response, const char *prefix);
-void ipc_client_log_send(struct ipc_client *client,
-    struct ipc_message_info *request, const char *prefix);
-void ipc_fmt_header_fill(struct ipc_fmt_header *header, struct ipc_message_info *message);
-void ipc_fmt_message_fill(struct ipc_fmt_header *header, struct ipc_message_info *message);
-void ipc_rfs_header_fill(struct ipc_rfs_header *header, struct ipc_message_info *message);
-void ipc_rfs_message_fill(struct ipc_rfs_header *header, struct ipc_message_info *message);
+const char *ipc_request_type_string(unsigned char type);
+const char *ipc_response_type_string(unsigned char type);
+const char *ipc_command_string(unsigned short command);
+
+void ipc_hex_dump(struct ipc_client *client, const void *data, size_t size);
+void ipc_client_log_recv(struct ipc_client *client, struct ipc_message *message,
+    const char *prefix);
+void ipc_client_log_send(struct ipc_client *client, struct ipc_message *message,
+    const char *prefix);
+
+int ipc_fmt_header_setup(struct ipc_fmt_header *header,
+    const struct ipc_message *message);
+int ipc_fmt_message_setup(const struct ipc_fmt_header *header,
+    struct ipc_message *message);
+int ipc_rfs_header_setup(struct ipc_rfs_header *header,
+    const struct ipc_message *message);
+int ipc_rfs_message_setup(const struct ipc_rfs_header *header,
+    struct ipc_message *message);
 
 /*
  * Samsung-IPC protocol
index 4c0ba02..7d64b41 100644 (file)
@@ -21,7 +21,7 @@ libsamsung_ipc_la_SOURCES = \
        ipc.h \
        ipc_devices.c \
        ipc_devices.h \
-       ipc_util.c \
+       ipc_utils.c \
        devices/xmm6160/xmm6160.c \
        devices/xmm6160/xmm6160.h \
        devices/xmm6260/xmm6260.c \
@@ -35,23 +35,23 @@ libsamsung_ipc_la_SOURCES = \
        devices/xmm6260/modem.h \
        devices/xmm6260/modem_link_device_hsic.h \
        devices/xmm6260/modem_prj.h \
-       devices/crespo/crespo_ipc.c \
-       devices/crespo/crespo_ipc.h \
+       devices/crespo/crespo.c \
+       devices/crespo/crespo.h \
        devices/crespo/crespo_modem_ctl.h \
-       devices/aries/aries_ipc.c \
-       devices/aries/aries_ipc.h \
+       devices/aries/aries.c \
+       devices/aries/aries.h \
        devices/aries/onedram.h \
        devices/aries/phonet.h \
-       devices/galaxys2/galaxys2_ipc.c \
-       devices/galaxys2/galaxys2_ipc.h \
-       devices/maguro/maguro_ipc.c \
-       devices/maguro/maguro_ipc.h \
-       devices/piranha/piranha_ipc.c \
-       devices/piranha/piranha_ipc.h \
-       devices/i9300/i9300_ipc.c \
-       devices/i9300/i9300_ipc.h \
-       devices/n7100/n7100_ipc.c \
-       devices/n7100/n7100_ipc.h \
+       devices/galaxys2/galaxys2.c \
+       devices/galaxys2/galaxys2.h \
+       devices/maguro/maguro.c \
+       devices/maguro/maguro.h \
+       devices/piranha/piranha.c \
+       devices/piranha/piranha.h \
+       devices/i9300/i9300.c \
+       devices/i9300/i9300.h \
+       devices/n7100/n7100.c \
+       devices/n7100/n7100.h \
        utils.c \
        utils.h \
        call.c \
similarity index 75%
rename from samsung-ipc/devices/aries/aries_ipc.c
rename to samsung-ipc/devices/aries/aries.c
index aede718..77fa4b6 100644 (file)
 #include "phonet.h"
 
 #include "xmm6160.h"
-#include "aries_ipc.h"
+#include "aries.h"
 
-int aries_ipc_bootstrap(struct ipc_client *client)
+int aries_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
     void *onedram_address = NULL;
     unsigned int onedram_init;
     unsigned int onedram_magic;
     unsigned int onedram_deinit;
-
     int onedram_fd = -1;
     int serial_fd = -1;
-
     struct timeval timeout;
     fd_set fds;
-
     unsigned char *p;
     unsigned char *pp;
     int rc;
@@ -62,7 +59,7 @@ int aries_ipc_bootstrap(struct ipc_client *client)
     if (client == NULL || client->handlers == NULL || client->handlers->power_on == NULL || client->handlers->power_off == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting aries modem bootstrap");
+    ipc_client_log(client, "Starting aries modem boot");
 
     modem_image_data = file_data_read(ARIES_MODEM_IMAGE_DEVICE, ARIES_MODEM_IMAGE_SIZE, 0x1000, 0);
     if (modem_image_data == NULL) {
@@ -239,31 +236,32 @@ complete:
     return rc;
 }
 
-int aries_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
+int aries_fmt_send(struct ipc_client *client, struct ipc_message *message)
 {
     struct ipc_fmt_header header;
-    void *buffer = NULL;
+    void *buffer;
+    size_t length;
+    size_t count = 0;
+    size_t chunk;
     unsigned char *p;
-    int length = 0;
-    int count = 0;
-    int chunk;
     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);
 
     length = header.length;
-    buffer = malloc(header.length);
+    buffer = calloc(1, length);
 
     memcpy(buffer, &header, sizeof(struct ipc_fmt_header));
-    if (request->data != NULL && request->length > 0) {
+
+    if (message->data != NULL && message->size > 0) {
         p = (unsigned char *) buffer + sizeof(header);
-        memcpy(p, request->data, request->length);
+        memcpy(p, message->data, message->size);
     }
 
-    ipc_client_log_send(client, request, __func__);
+    ipc_client_log_send(client, message, __func__);
 
     p = (unsigned char *) buffer;
 
@@ -272,7 +270,7 @@ int aries_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *reque
 
         rc = client->handlers->write(client->handlers->transport_data, p, chunk);
         if (rc < 0) {
-            ipc_client_log(client, "Writing FMT data to the modem failed");
+            ipc_client_log(client, "Writing FMT data failed");
             goto error;
         }
 
@@ -293,52 +291,52 @@ complete:
     return rc;
 }
 
-int aries_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
+int aries_fmt_recv(struct ipc_client *client, struct ipc_message *message)
 {
     struct ipc_fmt_header *header;
-    void *buffer = NULL;
+    void *buffer;
+    size_t length;
+    size_t count = 0;
+    size_t chunk;
     unsigned char *p;
-    int length = 0;
-    int count = 0;
-    int chunk;
     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 = ARIES_BUFFER_LENGTH;
-    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);
 
     length = header->length - sizeof(struct ipc_fmt_header);
     if (length > 0) {
-        response->length = length;
-        response->data = malloc(length);
+        message->size = length;
+        message->data = calloc(1, length);
 
         count = rc - sizeof(struct ipc_fmt_header);
         if (count > 0) {
             p = (unsigned char *) buffer + sizeof(struct ipc_fmt_header);
-            memcpy(response->data, p, count);
+            memcpy(message->data, p, count);
         }
     }
 
-    p = (unsigned char *) response->data + count;
+    p = (unsigned char *) message->data + count;
 
     while (count < length) {
         chunk = length - count < ARIES_BUFFER_LENGTH ? length - count : ARIES_BUFFER_LENGTH;
 
         rc = client->handlers->read(client->handlers->transport_data, p, chunk);
         if (rc < 0) {
-            ipc_client_log(client, "Reading FMT data from the modem failed");
+            ipc_client_log(client, "Reading FMT data failed");
             goto error;
         }
 
@@ -346,7 +344,7 @@ int aries_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *respo
         p += rc;
     }
 
-    ipc_client_log_recv(client, response, __func__);
+    ipc_client_log_recv(client, message, __func__);
 
     rc = 0;
     goto complete;
@@ -361,31 +359,31 @@ complete:
     return rc;
 }
 
-int aries_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
+int aries_rfs_send(struct ipc_client *client, struct ipc_message *message)
 {
     struct ipc_rfs_header header;
-    void *buffer = NULL;
+    void *buffer;
+    size_t length;
+    size_t count = 0;
+    size_t chunk;
     unsigned char *p;
-    int length = 0;
-    int count = 0;
-    int chunk;
     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);
 
     length = header.length;
-    buffer = malloc(length);
+    buffer = calloc(1, length);
 
     memcpy(buffer, &header, sizeof(header));
-    if (request->data != NULL && request->length > 0) {
+    if (message->data != NULL && message->size > 0) {
         p = (unsigned char *) buffer + sizeof(header);
-        memcpy(p, request->data, request->length);
+        memcpy(p, message->data, message->size);
     }
 
-    ipc_client_log_send(client, request, __func__);
+    ipc_client_log_send(client, message, __func__);
 
     p = (unsigned char *) buffer;
 
@@ -394,7 +392,7 @@ int aries_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *reque
 
         rc = client->handlers->write(client->handlers->transport_data, p, chunk);
         if (rc < 0) {
-            ipc_client_log(client, "Writing RFS data to the modem failed");
+            ipc_client_log(client, "Writing RFS data failed");
             goto error;
         }
 
@@ -415,52 +413,52 @@ complete:
     return rc;
 }
 
-int aries_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
+int aries_rfs_recv(struct ipc_client *client, struct ipc_message *message)
 {
     struct ipc_rfs_header *header;
-    void *buffer = NULL;
+    void *buffer;
+    size_t length;
+    size_t count = 0;
+    size_t chunk;
     unsigned char *p;
-    int length = 0;
-    int count = 0;
-    int chunk;
     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 = ARIES_BUFFER_LENGTH;
-    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);
 
     length = header->length - sizeof(struct ipc_rfs_header);
     if (length > 0) {
-        response->length = length;
-        response->data = malloc(length);
+        message->size = length;
+        message->data = calloc(1, length);
 
         count = rc - sizeof(struct ipc_rfs_header);
         if (count > 0) {
             p = (unsigned char *) buffer + sizeof(struct ipc_rfs_header);
-            memcpy(response->data, p, count);
+            memcpy(message->data, p, count);
         }
     }
 
-    p = (unsigned char *) response->data + count;
+    p = (unsigned char *) message->data + count;
 
     while (count < length) {
         chunk = length - count < ARIES_BUFFER_LENGTH ? length - count : ARIES_BUFFER_LENGTH;
 
         rc = client->handlers->read(client->handlers->transport_data, p, chunk);
         if (rc < 0) {
-            ipc_client_log(client, "Reading RFS data from the modem failed");
+            ipc_client_log(client, "Reading RFS data failed");
             goto error;
         }
 
@@ -468,7 +466,7 @@ int aries_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *respo
         p += rc;
     }
 
-    ipc_client_log_recv(client, response, __func__);
+    ipc_client_log_recv(client, message, __func__);
 
     rc = 0;
     goto complete;
@@ -483,23 +481,21 @@ complete:
     return rc;
 }
 
-int aries_ipc_open(void *data, int type)
+int aries_open(void *data, int type)
 {
-    struct aries_ipc_transport_data *transport_data;
+    struct aries_transport_data *transport_data;
     struct sockaddr_pn *spn;
     struct ifreq ifr;
-
     int reuse;
     int socket_rfs_magic;
-
     int fd;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct aries_ipc_transport_data *) data;
-    memset(data, 0, sizeof(struct aries_ipc_transport_data));
+    transport_data = (struct aries_transport_data *) data;
+    memset(data, 0, sizeof(struct aries_transport_data));
 
     spn = &transport_data->spn;
 
@@ -558,15 +554,15 @@ int aries_ipc_open(void *data, int type)
     return 0;
 }
 
-int aries_ipc_close(void *data)
+int aries_close(void *data)
 {
-    struct aries_ipc_transport_data *transport_data;
+    struct aries_transport_data *transport_data;
     int fd;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct aries_ipc_transport_data *) data;
+    transport_data = (struct aries_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -578,9 +574,9 @@ int aries_ipc_close(void *data)
     return 0;
 }
 
-int aries_ipc_read(void *data, void *buffer, unsigned int length)
+int aries_read(void *data, void *buffer, size_t length)
 {
-    struct aries_ipc_transport_data *transport_data;
+    struct aries_transport_data *transport_data;
     int spn_size;
     int fd;
     int rc;
@@ -588,7 +584,7 @@ int aries_ipc_read(void *data, void *buffer, unsigned int length)
     if (data == NULL || buffer == NULL || length == 0)
         return -1;
 
-    transport_data = (struct aries_ipc_transport_data *) data;
+    transport_data = (struct aries_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -596,13 +592,13 @@ int aries_ipc_read(void *data, void *buffer, unsigned int length)
 
     spn_size = sizeof(struct sockaddr_pn);
 
-    rc = recvfrom(fd, buffer, length, 0, (const struct sockaddr *) &transport_data->spn, &spn_size);
+    rc = recvfrom(fd, buffer, length, 0, (struct sockaddr *) &transport_data->spn, &spn_size);
     return rc;
 }
 
-int aries_ipc_write(void *data, void *buffer, unsigned int length)
+int aries_write(void *data, const void *buffer, size_t length)
 {
-    struct aries_ipc_transport_data *transport_data;
+    struct aries_transport_data *transport_data;
     int spn_size;
     int fd;
     int rc;
@@ -610,7 +606,7 @@ int aries_ipc_write(void *data, void *buffer, unsigned int length)
     if (data == NULL || buffer == NULL || length == 0)
         return -1;
 
-    transport_data = (struct aries_ipc_transport_data *) data;
+    transport_data = (struct aries_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -622,9 +618,9 @@ int aries_ipc_write(void *data, void *buffer, unsigned int length)
     return rc;
 }
 
-int aries_ipc_poll(void *data, struct timeval *timeout)
+int aries_poll(void *data, struct timeval *timeout)
 {
-    struct aries_ipc_transport_data *transport_data;
+    struct aries_transport_data *transport_data;
     fd_set fds;
     int fd;
     int rc;
@@ -632,7 +628,7 @@ int aries_ipc_poll(void *data, struct timeval *timeout)
     if (data == NULL)
         return -1;
 
-    transport_data = (struct aries_ipc_transport_data *) data;
+    transport_data = (struct aries_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -645,7 +641,7 @@ int aries_ipc_poll(void *data, struct timeval *timeout)
     return rc;
 }
 
-int aries_ipc_power_on(void *data)
+int aries_power_on(void *data)
 {
     char buffer[] = "on\n";
     int value;
@@ -666,7 +662,7 @@ int aries_ipc_power_on(void *data)
     return 0;
 }
 
-int aries_ipc_power_off(void *data)
+int aries_power_off(void *data)
 {
     char buffer[] = "off\n";
     int value;
@@ -687,18 +683,18 @@ int aries_ipc_power_off(void *data)
     return 0;
 }
 
-int aries_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int aries_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct aries_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct aries_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct aries_transport_data));
 
     return 0;
 }
 
-int aries_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int aries_data_destroy(void *transport_data, void *power_data, void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -708,7 +704,7 @@ int aries_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_da
     return 0;
 }
 
-int aries_ipc_gprs_activate(void *data, int cid)
+int aries_gprs_activate(void *data, int cid)
 {
     int rc;
 
@@ -719,7 +715,7 @@ int aries_ipc_gprs_activate(void *data, int cid)
     return 0;
 }
 
-int aries_ipc_gprs_deactivate(void *data, int cid)
+int aries_gprs_deactivate(void *data, int cid)
 {
     int rc;
 
@@ -730,10 +726,10 @@ int aries_ipc_gprs_deactivate(void *data, int cid)
     return 0;
 }
 
-char *aries_ipc_gprs_get_iface(int cid)
+char *aries_gprs_get_iface(int cid)
 {
-    struct ifreq ifr;
     char *iface = NULL;
+    struct ifreq ifr;
     int fd;
     int rc;
     int i;
@@ -758,52 +754,51 @@ char *aries_ipc_gprs_get_iface(int cid)
     return NULL;
 }
 
-int aries_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
+int aries_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
 {
     if (capabilities == NULL)
         return -1;
 
-    capabilities->port_list = 1;
-    capabilities->cid_max = ARIES_GPRS_IFACE_COUNT;
+    capabilities->cid_count = ARIES_GPRS_IFACE_COUNT;
 
     return 0;
 }
 
-struct ipc_ops aries_ipc_fmt_ops = {
-    .bootstrap = aries_ipc_bootstrap,
-    .send = aries_ipc_fmt_send,
-    .recv = aries_ipc_fmt_recv,
+struct ipc_client_ops aries_fmt_ops = {
+    .boot = aries_boot,
+    .send = aries_fmt_send,
+    .recv = aries_fmt_recv,
 };
 
-struct ipc_ops aries_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = aries_ipc_rfs_send,
-    .recv = aries_ipc_rfs_recv,
+struct ipc_client_ops aries_rfs_ops = {
+    .boot = NULL,
+    .send = aries_rfs_send,
+    .recv = aries_rfs_recv,
 };
 
-struct ipc_handlers aries_ipc_handlers = {
-    .open = aries_ipc_open,
-    .close = aries_ipc_close,
-    .read = aries_ipc_read,
-    .write = aries_ipc_write,
-    .poll = aries_ipc_poll,
+struct ipc_client_handlers aries_handlers = {
+    .open = aries_open,
+    .close = aries_close,
+    .read = aries_read,
+    .write = aries_write,
+    .poll = aries_poll,
     .transport_data = NULL,
-    .power_on = aries_ipc_power_on,
-    .power_off = aries_ipc_power_off,
+    .power_on = aries_power_on,
+    .power_off = aries_power_off,
     .power_data = NULL,
-    .gprs_activate = aries_ipc_gprs_activate,
-    .gprs_deactivate = aries_ipc_gprs_deactivate,
+    .gprs_activate = aries_gprs_activate,
+    .gprs_deactivate = aries_gprs_deactivate,
     .gprs_data = NULL,
-    .data_create = aries_ipc_data_create,
-    .data_destroy = aries_ipc_data_destroy,
+    .data_create = aries_data_create,
+    .data_destroy = aries_data_destroy,
 };
 
-struct ipc_gprs_specs aries_ipc_gprs_specs = {
-    .gprs_get_iface = aries_ipc_gprs_get_iface,
-    .gprs_get_capabilities = aries_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs aries_gprs_specs = {
+    .gprs_get_iface = aries_gprs_get_iface,
+    .gprs_get_capabilities = aries_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs aries_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs aries_nv_data_specs = {
     .nv_data_path = XMM6160_NV_DATA_PATH,
     .nv_data_md5_path = XMM6160_NV_DATA_MD5_PATH,
     .nv_data_backup_path = XMM6160_NV_DATA_BACKUP_PATH,
similarity index 88%
rename from samsung-ipc/devices/aries/aries_ipc.h
rename to samsung-ipc/devices/aries/aries.h
index bb42f27..efa7870 100644 (file)
@@ -20,8 +20,8 @@
 
 #include "phonet.h"
 
-#ifndef __ARIES_IPC_H__
-#define __ARIES_IPC_H__
+#ifndef __ARIES_H__
+#define __ARIES_H__
 
 #define ARIES_MODEM_IMAGE_SIZE                                  0xA00000
 #define ARIES_PSI_SIZE                                          0x5000
 #define ARIES_GPRS_IFACE_PREFIX                 "pdp"
 #define ARIES_GPRS_IFACE_COUNT                                  3
 
-struct aries_ipc_transport_data {
+struct aries_transport_data {
     struct sockaddr_pn spn;
     int fd;
 };
 
-extern struct ipc_ops aries_ipc_fmt_ops;
-extern struct ipc_ops aries_ipc_rfs_ops;
-extern struct ipc_handlers aries_ipc_handlers;
-extern struct ipc_gprs_specs aries_ipc_gprs_specs;
-extern struct ipc_nv_data_specs aries_ipc_nv_data_specs;
+extern struct ipc_client_ops aries_fmt_ops;
+extern struct ipc_client_ops aries_rfs_ops;
+extern struct ipc_client_handlers aries_handlers;
+extern struct ipc_client_gprs_specs aries_gprs_specs;
+extern struct ipc_client_nv_data_specs aries_nv_data_specs;
 
 #endif
 
similarity index 63%
rename from samsung-ipc/devices/crespo/crespo_ipc.c
rename to samsung-ipc/devices/crespo/crespo.c
index 94dc695..fe50012 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2011 Joerie de Gram <j.de.gram@gmail.com>
  * Copyright (C) 2011 Simon Busch <morphis@gravedo.de>
- * Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr>
+ * Copyright (C) 2011-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
 #include "crespo_modem_ctl.h"
 
 #include "xmm6160.h"
-#include "crespo_ipc.h"
+#include "crespo.h"
 
-int crespo_ipc_bootstrap(struct ipc_client *client)
+int crespo_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
-
     int modem_ctl_fd = -1;
     int serial_fd = -1;
-
     unsigned char *p;
     int rc;
 
     if (client == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting crespo modem bootstrap");
+    ipc_client_log(client, "Starting crespo modem boot");
 
     modem_image_data = file_data_read(CRESPO_MODEM_IMAGE_DEVICE, CRESPO_MODEM_IMAGE_SIZE, 0x1000, 0);
     if (modem_image_data == NULL) {
@@ -129,30 +127,30 @@ complete:
     return rc;
 }
 
-int crespo_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
+int crespo_fmt_send(struct ipc_client *client, struct ipc_message *message)
 {
     struct ipc_fmt_header header;
     struct modem_io mio;
     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);
 
     memset(&mio, 0, sizeof(struct modem_io));
-    mio.size = request->length + sizeof(struct ipc_fmt_header);
-    mio.data = malloc(mio.size);
+    mio.size = message->size + sizeof(struct ipc_fmt_header);
+    mio.data = calloc(1, mio.size);
 
     memcpy(mio.data, &header, sizeof(struct ipc_fmt_header));
-    if (request->data != NULL && request->length > 0)
-        memcpy((void *) ((unsigned char *) mio.data + sizeof(struct ipc_fmt_header)), request->data, request->length);
+    if (message->data != NULL && message->size > 0)
+        memcpy((void *) ((unsigned char *) mio.data + sizeof(struct ipc_fmt_header)), message->data, message->size);
 
-    ipc_client_log_send(client, request, __func__);
+    ipc_client_log_send(client, message, __func__);
 
     rc = client->handlers->write(client->handlers->transport_data, (void *) &mio, sizeof(struct modem_io));
     if (rc < 0) {
-        ipc_client_log(client, "Writing FMT data to the modem failed");
+        ipc_client_log(client, "Writing FMT data failed");
         goto error;
     }
 
@@ -169,37 +167,37 @@ complete:
     return rc;
 }
 
-int crespo_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
+int crespo_fmt_recv(struct ipc_client *client, struct ipc_message *message)
 {
     struct ipc_fmt_header *header;
     struct modem_io mio;
     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;
 
     memset(&mio, 0, sizeof(struct modem_io));
     mio.size = CRESPO_BUFFER_LENGTH;
-    mio.data = malloc(mio.size);
+    mio.data = calloc(1, mio.size);
 
     rc = client->handlers->read(client->handlers->transport_data, &mio, sizeof(struct modem_io) + mio.size);
     if (rc < 0 || mio.data == NULL || mio.size < sizeof(struct ipc_fmt_header)) {
-        ipc_client_log(client, "Reading FMT data from the modem failed");
+        ipc_client_log(client, "Reading FMT data failed");
         goto error;
     }
 
     header = (struct ipc_fmt_header *) mio.data;
 
-    ipc_fmt_message_fill(header, response);
+    ipc_fmt_message_setup(header, message);
 
     if (mio.size > sizeof(struct ipc_fmt_header)) {
-        response->length = mio.size - sizeof(struct ipc_fmt_header);
-        response->data = malloc(response->length);
+        message->size = mio.size - sizeof(struct ipc_fmt_header);
+        message->data = calloc(1, message->size);
 
-        memcpy(response->data, (void *) ((unsigned char *) mio.data + sizeof(struct ipc_fmt_header)), response->length);
+        memcpy(message->data, (void *) ((unsigned char *) mio.data + sizeof(struct ipc_fmt_header)), message->size);
     }
 
-    ipc_client_log_recv(client, response, __func__);
+    ipc_client_log_recv(client, message, __func__);
 
     rc = 0;
     goto complete;
@@ -214,30 +212,30 @@ complete:
     return rc;
 }
 
-int crespo_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
+int crespo_rfs_send(struct ipc_client *client, struct ipc_message *message)
 {
     struct modem_io mio;
     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;
 
     memset(&mio, 0, sizeof(struct modem_io));
-    mio.id = request->mseq;
-    mio.cmd = request->index;
-    mio.size = request->length;
+    mio.id = message->mseq;
+    mio.cmd = IPC_INDEX(message->command);
+    mio.size = message->size;
 
-    if (request->data != NULL && request->length > 0) {
-        mio.data = malloc(mio.size);
+    if (message->data != NULL && message->size > 0) {
+        mio.data = calloc(1, mio.size);
 
-        memcpy(mio.data, request->data, request->length);
+        memcpy(mio.data, message->data, message->size);
     }
 
-    ipc_client_log_send(client, request, __func__);
+    ipc_client_log_send(client, message, __func__);
 
     rc = client->handlers->write(client->handlers->transport_data, (void *) &mio, sizeof(struct modem_io));
     if (rc < 0) {
-        ipc_client_log(client, "Writing RFS data to the modem failed");
+        ipc_client_log(client, "Writing RFS data failed");
         goto error;
     }
 
@@ -254,37 +252,36 @@ complete:
     return rc;
 }
 
-int crespo_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
+int crespo_rfs_recv(struct ipc_client *client, struct ipc_message *message)
 {
     struct modem_io mio;
     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;
 
     memset(&mio, 0, sizeof(struct modem_io));
     mio.size = CRESPO_BUFFER_LENGTH;
-    mio.data = malloc(mio.size);
+    mio.data = calloc(1, mio.size);
 
     rc = client->handlers->read(client->handlers->transport_data, &mio, sizeof(struct modem_io) + mio.size);
     if (rc < 0 || mio.data == NULL || mio.size <= 0) {
-        ipc_client_log(client, "Reading RFS data from the modem failed");
+        ipc_client_log(client, "Reading RFS data failed");
         goto error;
     }
 
-    memset(response, 0, sizeof(struct ipc_message_info));
-    response->aseq = mio.id;
-    response->group = IPC_GROUP_RFS;
-    response->index = mio.cmd;
+    memset(message, 0, sizeof(struct ipc_message));
+    message->aseq = mio.id;
+    message->command = IPC_COMMAND(IPC_GROUP_RFS, mio.cmd);
 
     if (mio.size > 0) {
-        response->length = mio.size;
-        response->data = malloc(response->length);
+        message->size = mio.size;
+        message->data = calloc(1, message->size);
 
-        memcpy(response->data, mio.data, response->length);
+        memcpy(message->data, mio.data, message->size);
     }
 
-    ipc_client_log_recv(client, response, __func__);
+    ipc_client_log_recv(client, message, __func__);
 
     rc = 0;
     goto complete;
@@ -299,15 +296,15 @@ complete:
     return rc;
 }
 
-int crespo_ipc_open(void *data, int type)
+int crespo_open(void *data, int type)
 {
-    struct crespo_ipc_transport_data *transport_data;
+    struct crespo_transport_data *transport_data;
     int fd;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct crespo_ipc_transport_data *) data;
+    transport_data = (struct crespo_transport_data *) data;
 
     switch (type) {
         case IPC_CLIENT_TYPE_FMT:
@@ -328,15 +325,15 @@ int crespo_ipc_open(void *data, int type)
     return 0;
 }
 
-int crespo_ipc_close(void *data)
+int crespo_close(void *data)
 {
-    struct crespo_ipc_transport_data *transport_data;
+    struct crespo_transport_data *transport_data;
     int fd;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct crespo_ipc_transport_data *) data;
+    transport_data = (struct crespo_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -348,16 +345,16 @@ int crespo_ipc_close(void *data)
     return 0;
 }
 
-int crespo_ipc_read(void *data, void *buffer, unsigned int length)
+int crespo_read(void *data, void *buffer, size_t length)
 {
-    struct crespo_ipc_transport_data *transport_data;
+    struct crespo_transport_data *transport_data;
     int fd;
     int rc;
 
     if (data == NULL || buffer == NULL || length == 0)
         return -1;
 
-    transport_data = (struct crespo_ipc_transport_data *) data;
+    transport_data = (struct crespo_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -370,16 +367,16 @@ int crespo_ipc_read(void *data, void *buffer, unsigned int length)
     return 0;
 }
 
-int crespo_ipc_write(void *data, void *buffer, unsigned int length)
+int crespo_write(void *data, const void *buffer, size_t length)
 {
-    struct crespo_ipc_transport_data *transport_data;
+    struct crespo_transport_data *transport_data;
     int fd;
     int rc;
 
     if (data == NULL || buffer == NULL || length == 0)
         return -1;
 
-    transport_data = (struct crespo_ipc_transport_data *) data;
+    transport_data = (struct crespo_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -392,9 +389,9 @@ int crespo_ipc_write(void *data, void *buffer, unsigned int length)
     return 0;
 }
 
-int crespo_ipc_poll(void *data, struct timeval *timeout)
+int crespo_poll(void *data, struct timeval *timeout)
 {
-    struct crespo_ipc_transport_data *transport_data;
+    struct crespo_transport_data *transport_data;
     fd_set fds;
     int fd;
     int rc;
@@ -402,7 +399,7 @@ int crespo_ipc_poll(void *data, struct timeval *timeout)
     if (data == NULL)
         return -1;
 
-    transport_data = (struct crespo_ipc_transport_data *) data;
+    transport_data = (struct crespo_transport_data *) data;
 
     fd = transport_data->fd;
     if (fd < 0)
@@ -415,7 +412,7 @@ int crespo_ipc_poll(void *data, struct timeval *timeout)
     return rc;
 }
 
-int crespo_ipc_power_on(void *data)
+int crespo_power_on(void *data)
 {
     int fd;
     int rc;
@@ -434,7 +431,7 @@ int crespo_ipc_power_on(void *data)
     return 0;
 }
 
-int crespo_ipc_power_off(void *data)
+int crespo_power_off(void *data)
 {
     int fd;
     int rc;
@@ -453,18 +450,18 @@ int crespo_ipc_power_off(void *data)
     return 0;
 }
 
-int crespo_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int crespo_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct crespo_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct crespo_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct crespo_transport_data));
 
     return 0;
 }
 
-int crespo_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int crespo_data_destroy(void *transport_data, void *power_data, void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -474,7 +471,7 @@ int crespo_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_d
     return 0;
 }
 
-char *crespo_ipc_gprs_get_iface_single(int cid)
+char *crespo_gprs_get_iface_single(int cid)
 {
     char *iface = NULL;
 
@@ -483,18 +480,17 @@ char *crespo_ipc_gprs_get_iface_single(int cid)
     return iface;
 }
 
-int crespo_ipc_gprs_get_capabilities_single(struct ipc_client_gprs_capabilities *capabilities)
+int crespo_gprs_get_capabilities_single(struct ipc_client_gprs_capabilities *capabilities)
 {
     if (capabilities == NULL)
         return -1;
 
-    capabilities->port_list = 0;
-    capabilities->cid_max = 1;
+    capabilities->cid_count = 1;
 
     return 0;
 }
 
-char *crespo_ipc_gprs_get_iface(int cid)
+char *crespo_gprs_get_iface(int cid)
 {
     char *iface = NULL;
 
@@ -506,57 +502,56 @@ char *crespo_ipc_gprs_get_iface(int cid)
     return iface;
 }
 
-int crespo_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
+int crespo_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
 {
     if (capabilities == NULL)
         return -1;
 
-    capabilities->port_list = 0;
-    capabilities->cid_max = CRESPO_GPRS_IFACE_COUNT;
+    capabilities->cid_count = CRESPO_GPRS_IFACE_COUNT;
 
     return 0;
 }
 
-struct ipc_ops crespo_ipc_fmt_ops = {
-    .bootstrap = crespo_ipc_bootstrap,
-    .send = crespo_ipc_fmt_send,
-    .recv = crespo_ipc_fmt_recv,
+struct ipc_client_ops crespo_fmt_ops = {
+    .boot = crespo_boot,
+    .send = crespo_fmt_send,
+    .recv = crespo_fmt_recv,
 };
 
-struct ipc_ops crespo_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = crespo_ipc_rfs_send,
-    .recv = crespo_ipc_rfs_recv,
+struct ipc_client_ops crespo_rfs_ops = {
+    .boot = NULL,
+    .send = crespo_rfs_send,
+    .recv = crespo_rfs_recv,
 };
 
-struct ipc_handlers crespo_ipc_handlers = {
-    .open = crespo_ipc_open,
-    .close = crespo_ipc_close,
-    .read = crespo_ipc_read,
-    .write = crespo_ipc_write,
-    .poll = crespo_ipc_poll,
+struct ipc_client_handlers crespo_handlers = {
+    .open = crespo_open,
+    .close = crespo_close,
+    .read = crespo_read,
+    .write = crespo_write,
+    .poll = crespo_poll,
     .transport_data = NULL,
-    .power_on = crespo_ipc_power_on,
-    .power_off = crespo_ipc_power_off,
+    .power_on = crespo_power_on,
+    .power_off = crespo_power_off,
     .power_data = NULL,
     .gprs_activate = NULL,
     .gprs_deactivate = NULL,
     .gprs_data = NULL,
-    .data_create = crespo_ipc_data_create,
-    .data_destroy = crespo_ipc_data_destroy,
+    .data_create = crespo_data_create,
+    .data_destroy = crespo_data_destroy,
 };
 
-struct ipc_gprs_specs crespo_ipc_gprs_specs_single = {
-    .gprs_get_iface = crespo_ipc_gprs_get_iface_single,
-    .gprs_get_capabilities = crespo_ipc_gprs_get_capabilities_single,
+struct ipc_client_gprs_specs crespo_gprs_specs_single = {
+    .gprs_get_iface = crespo_gprs_get_iface_single,
+    .gprs_get_capabilities = crespo_gprs_get_capabilities_single,
 };
 
-struct ipc_gprs_specs crespo_ipc_gprs_specs = {
-    .gprs_get_iface = crespo_ipc_gprs_get_iface,
-    .gprs_get_capabilities = crespo_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs crespo_gprs_specs = {
+    .gprs_get_iface = crespo_gprs_get_iface,
+    .gprs_get_capabilities = crespo_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs crespo_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs crespo_nv_data_specs = {
     .nv_data_path = XMM6160_NV_DATA_PATH,
     .nv_data_md5_path = XMM6160_NV_DATA_MD5_PATH,
     .nv_data_backup_path = XMM6160_NV_DATA_BACKUP_PATH,
similarity index 76%
rename from samsung-ipc/devices/crespo/crespo_ipc.h
rename to samsung-ipc/devices/crespo/crespo.h
index ff984d8..97dff96 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr>
+ * Copyright (C) 2011-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
@@ -17,8 +17,8 @@
  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __CRESPO_IPC_H__
-#define __CRESPO_IPC_H__
+#ifndef __CRESPO_H__
+#define __CRESPO_H__
 
 #define CRESPO_MODEM_IMAGE_SIZE                                 0xD80000
 #define CRESPO_PSI_SIZE                                         0x5000
 #define CRESPO_GPRS_IFACE_PREFIX                "rmnet"
 #define CRESPO_GPRS_IFACE_COUNT                                 3
 
-struct crespo_ipc_transport_data {
+struct crespo_transport_data {
     int fd;
 };
 
-extern struct ipc_ops crespo_ipc_fmt_ops;
-extern struct ipc_ops crespo_ipc_rfs_ops;
-extern struct ipc_handlers crespo_ipc_handlers;
-extern struct ipc_gprs_specs crespo_ipc_gprs_specs_single;
-extern struct ipc_gprs_specs crespo_ipc_gprs_specs;
-extern struct ipc_nv_data_specs crespo_ipc_nv_data_specs;
+extern struct ipc_client_ops crespo_fmt_ops;
+extern struct ipc_client_ops crespo_rfs_ops;
+extern struct ipc_client_handlers crespo_handlers;
+extern struct ipc_client_gprs_specs crespo_gprs_specs_single;
+extern struct ipc_client_gprs_specs crespo_gprs_specs;
+extern struct ipc_client_nv_data_specs crespo_nv_data_specs;
 
 #endif
 
similarity index 70%
rename from samsung-ipc/devices/galaxys2/galaxys2_ipc.c
rename to samsung-ipc/devices/galaxys2/galaxys2.c
index 44a315b..7070376 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
 #include "xmm6260.h"
 #include "xmm6260_hsic.h"
 #include "xmm6260_sec_modem.h"
-#include "galaxys2_ipc.h"
+#include "galaxys2.h"
 
-int galaxys2_ipc_bootstrap(struct ipc_client *client)
+int galaxys2_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
     int modem_image_fd = -1;
     int modem_boot_fd = -1;
     int modem_link_fd = -1;
-
     unsigned char *p;
     int rc;
 
     if (client == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting galaxys2 modem bootstrap");
+    ipc_client_log(client, "Starting galaxys2 modem boot");
 
     modem_image_fd = open(GALAXYS2_MODEM_IMAGE_DEVICE, O_RDONLY);
     if (modem_image_fd < 0) {
@@ -230,106 +229,88 @@ complete:
     return rc;
 }
 
-
-int galaxys2_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_fmt_send(client, request);
-}
-
-int galaxys2_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_fmt_recv(client, response);
-}
-
-int galaxys2_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_rfs_send(client, request);
-}
-
-int galaxys2_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_rfs_recv(client, response);
-}
-
-int galaxys2_ipc_open(void *data, int type)
+int galaxys2_open(void *data, int type)
 {
-    struct galaxys2_ipc_transport_data *transport_data;
+    struct galaxys2_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct galaxys2_ipc_transport_data *) data;
+    transport_data = (struct galaxys2_transport_data *) data;
 
-    transport_data->fd = xmm6260_sec_modem_ipc_open(type);
+    transport_data->fd = xmm6260_sec_modem_open(type);
     if (transport_data->fd < 0)
         return -1;
 
     return 0;
 }
 
-int galaxys2_ipc_close(void *data)
+int galaxys2_close(void *data)
 {
-    struct galaxys2_ipc_transport_data *transport_data;
+    struct galaxys2_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct galaxys2_ipc_transport_data *) data;
+    transport_data = (struct galaxys2_transport_data *) data;
 
-    xmm6260_sec_modem_ipc_close(transport_data->fd);
+    xmm6260_sec_modem_close(transport_data->fd);
     transport_data->fd = -1;
 
     return 0;
 }
 
-int galaxys2_ipc_read(void *data, void *buffer, unsigned int length)
+int galaxys2_read(void *data, void *buffer, size_t length)
 {
-    struct galaxys2_ipc_transport_data *transport_data;
+    struct galaxys2_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct galaxys2_ipc_transport_data *) data;
+    transport_data = (struct galaxys2_transport_data *) data;
+
+    rc = xmm6260_sec_modem_read(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_read(transport_data->fd, buffer, length);
     return rc;
 }
 
-int galaxys2_ipc_write(void *data, void *buffer, unsigned int length)
+int galaxys2_write(void *data, const void *buffer, size_t length)
 {
-    struct galaxys2_ipc_transport_data *transport_data;
+    struct galaxys2_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct galaxys2_ipc_transport_data *) data;
+    transport_data = (struct galaxys2_transport_data *) data;
+
+    rc = xmm6260_sec_modem_write(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_write(transport_data->fd, buffer, length);
     return rc;
 }
 
-int galaxys2_ipc_poll(void *data, struct timeval *timeout)
+int galaxys2_poll(void *data, struct timeval *timeout)
 {
-    struct galaxys2_ipc_transport_data *transport_data;
+    struct galaxys2_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct galaxys2_ipc_transport_data *) data;
+    transport_data = (struct galaxys2_transport_data *) data;
+
+    rc = xmm6260_sec_modem_poll(transport_data->fd, timeout);
 
-    rc = xmm6260_sec_modem_ipc_poll(transport_data->fd, timeout);
     return rc;
 }
 
-int galaxys2_ipc_power_on(void *data)
+int galaxys2_power_on(void *data)
 {
     return 0;
 }
 
-int galaxys2_ipc_power_off(void *data)
+int galaxys2_power_off(void *data)
 {
     int fd;
     int rc;
@@ -348,18 +329,19 @@ int galaxys2_ipc_power_off(void *data)
     return 0;
 }
 
-int galaxys2_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int galaxys2_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct galaxys2_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct galaxys2_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct galaxys2_transport_data));
 
     return 0;
 }
 
-int galaxys2_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int galaxys2_data_destroy(void *transport_data, void *power_data,
+    void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -369,52 +351,41 @@ int galaxys2_ipc_data_destroy(void *transport_data, void *power_data, void *gprs
     return 0;
 }
 
-char *galaxys2_ipc_gprs_get_iface(int cid)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_iface(cid);
-}
-
-
-int galaxys2_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_capabilities(capabilities);
-}
-
-struct ipc_ops galaxys2_ipc_fmt_ops = {
-    .bootstrap = galaxys2_ipc_bootstrap,
-    .send = galaxys2_ipc_fmt_send,
-    .recv = galaxys2_ipc_fmt_recv,
+struct ipc_client_ops galaxys2_fmt_ops = {
+    .boot = galaxys2_boot,
+    .send = xmm6260_sec_modem_fmt_send,
+    .recv = xmm6260_sec_modem_fmt_recv,
 };
 
-struct ipc_ops galaxys2_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = galaxys2_ipc_rfs_send,
-    .recv = galaxys2_ipc_rfs_recv,
+struct ipc_client_ops galaxys2_rfs_ops = {
+    .boot = NULL,
+    .send = xmm6260_sec_modem_rfs_send,
+    .recv = xmm6260_sec_modem_rfs_recv,
 };
 
-struct ipc_handlers galaxys2_ipc_handlers = {
-    .read = galaxys2_ipc_read,
-    .write = galaxys2_ipc_write,
-    .open = galaxys2_ipc_open,
-    .close = galaxys2_ipc_close,
-    .poll = galaxys2_ipc_poll,
+struct ipc_client_handlers galaxys2_handlers = {
+    .read = galaxys2_read,
+    .write = galaxys2_write,
+    .open = galaxys2_open,
+    .close = galaxys2_close,
+    .poll = galaxys2_poll,
     .transport_data = NULL,
-    .power_on = galaxys2_ipc_power_on,
-    .power_off = galaxys2_ipc_power_off,
+    .power_on = galaxys2_power_on,
+    .power_off = galaxys2_power_off,
     .power_data = NULL,
     .gprs_activate = NULL,
     .gprs_deactivate = NULL,
     .gprs_data = NULL,
-    .data_create = galaxys2_ipc_data_create,
-    .data_destroy = galaxys2_ipc_data_destroy,
+    .data_create = galaxys2_data_create,
+    .data_destroy = galaxys2_data_destroy,
 };
 
-struct ipc_gprs_specs galaxys2_ipc_gprs_specs = {
-    .gprs_get_iface = galaxys2_ipc_gprs_get_iface,
-    .gprs_get_capabilities = galaxys2_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs galaxys2_gprs_specs = {
+    .gprs_get_iface = xmm6260_sec_modem_gprs_get_iface,
+    .gprs_get_capabilities = xmm6260_sec_modem_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs galaxys2_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs galaxys2_nv_data_specs = {
     .nv_data_path = XMM6260_NV_DATA_PATH,
     .nv_data_md5_path = XMM6260_NV_DATA_MD5_PATH,
     .nv_data_backup_path = XMM6260_NV_DATA_BACKUP_PATH,
similarity index 79%
rename from samsung-ipc/devices/galaxys2/galaxys2_ipc.h
rename to samsung-ipc/devices/galaxys2/galaxys2.h
index 7d68465..5d315c6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
@@ -17,8 +17,8 @@
  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __GALAXYS2_IPC_H__
-#define __GALAXYS2_IPC_H__
+#ifndef __GALAXYS2_H__
+#define __GALAXYS2_H__
 
 #define GALAXYS2_MODEM_IMAGE_SIZE                               0x1000000
 #define GALAXYS2_PSI_OFFSET                                     0
 
 #define GALAXYS2_MODEM_IMAGE_DEVICE             "/dev/block/mmcblk0p8"
 
-struct galaxys2_ipc_transport_data {
+struct galaxys2_transport_data {
     int fd;
 };
 
-extern struct ipc_ops galaxys2_ipc_fmt_ops;
-extern struct ipc_ops galaxys2_ipc_rfs_ops;
-extern struct ipc_handlers galaxys2_ipc_handlers;
-extern struct ipc_gprs_specs galaxys2_ipc_gprs_specs;
-extern struct ipc_nv_data_specs galaxys2_ipc_nv_data_specs;
+extern struct ipc_client_ops galaxys2_fmt_ops;
+extern struct ipc_client_ops galaxys2_rfs_ops;
+extern struct ipc_client_handlers galaxys2_handlers;
+extern struct ipc_client_gprs_specs galaxys2_gprs_specs;
+extern struct ipc_client_nv_data_specs galaxys2_nv_data_specs;
 
 #endif
 
similarity index 70%
rename from samsung-ipc/devices/i9300/i9300_ipc.c
rename to samsung-ipc/devices/i9300/i9300.c
index b7364df..a3c22bd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
 #include "xmm6260.h"
 #include "xmm6260_hsic.h"
 #include "xmm6260_sec_modem.h"
-#include "i9300_ipc.h"
+#include "i9300.h"
 
-int i9300_ipc_bootstrap(struct ipc_client *client)
+int i9300_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
     int modem_image_fd = -1;
     int modem_boot_fd = -1;
     int modem_link_fd = -1;
-
     unsigned char *p;
     int rc;
 
     if (client == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting i9300 modem bootstrap");
+    ipc_client_log(client, "Starting i9300 modem boot");
 
     modem_image_fd = open(I9300_MODEM_IMAGE_DEVICE, O_RDONLY);
     if (modem_image_fd < 0) {
@@ -224,106 +223,88 @@ complete:
     return rc;
 }
 
-
-int i9300_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_fmt_send(client, request);
-}
-
-int i9300_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_fmt_recv(client, response);
-}
-
-int i9300_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_rfs_send(client, request);
-}
-
-int i9300_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_rfs_recv(client, response);
-}
-
-int i9300_ipc_open(void *data, int type)
+int i9300_open(void *data, int type)
 {
-    struct i9300_ipc_transport_data *transport_data;
+    struct i9300_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct i9300_ipc_transport_data *) data;
+    transport_data = (struct i9300_transport_data *) data;
 
-    transport_data->fd = xmm6260_sec_modem_ipc_open(type);
+    transport_data->fd = xmm6260_sec_modem_open(type);
     if (transport_data->fd < 0)
         return -1;
 
     return 0;
 }
 
-int i9300_ipc_close(void *data)
+int i9300_close(void *data)
 {
-    struct i9300_ipc_transport_data *transport_data;
+    struct i9300_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct i9300_ipc_transport_data *) data;
+    transport_data = (struct i9300_transport_data *) data;
 
-    xmm6260_sec_modem_ipc_close(transport_data->fd);
+    xmm6260_sec_modem_close(transport_data->fd);
     transport_data->fd = -1;
 
     return 0;
 }
 
-int i9300_ipc_read(void *data, void *buffer, unsigned int length)
+int i9300_read(void *data, void *buffer, size_t length)
 {
-    struct i9300_ipc_transport_data *transport_data;
+    struct i9300_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct i9300_ipc_transport_data *) data;
+    transport_data = (struct i9300_transport_data *) data;
+
+    rc = xmm6260_sec_modem_read(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_read(transport_data->fd, buffer, length);
     return rc;
 }
 
-int i9300_ipc_write(void *data, void *buffer, unsigned int length)
+int i9300_write(void *data, const void *buffer, size_t length)
 {
-    struct i9300_ipc_transport_data *transport_data;
+    struct i9300_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct i9300_ipc_transport_data *) data;
+    transport_data = (struct i9300_transport_data *) data;
+
+    rc = xmm6260_sec_modem_write(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_write(transport_data->fd, buffer, length);
     return rc;
 }
 
-int i9300_ipc_poll(void *data, struct timeval *timeout)
+int i9300_poll(void *data, struct timeval *timeout)
 {
-    struct i9300_ipc_transport_data *transport_data;
+    struct i9300_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct i9300_ipc_transport_data *) data;
+    transport_data = (struct i9300_transport_data *) data;
+
+    rc = xmm6260_sec_modem_poll(transport_data->fd, timeout);
 
-    rc = xmm6260_sec_modem_ipc_poll(transport_data->fd, timeout);
     return rc;
 }
 
-int i9300_ipc_power_on(void *data)
+int i9300_power_on(void *data)
 {
     return 0;
 }
 
-int i9300_ipc_power_off(void *data)
+int i9300_power_off(void *data)
 {
     int fd;
     int rc;
@@ -342,18 +323,18 @@ int i9300_ipc_power_off(void *data)
     return 0;
 }
 
-int i9300_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int i9300_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct i9300_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct i9300_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct i9300_transport_data));
 
     return 0;
 }
 
-int i9300_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int i9300_data_destroy(void *transport_data, void *power_data, void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -363,52 +344,41 @@ int i9300_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_da
     return 0;
 }
 
-char *i9300_ipc_gprs_get_iface(int cid)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_iface(cid);
-}
-
-
-int i9300_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_capabilities(capabilities);
-}
-
-struct ipc_ops i9300_ipc_fmt_ops = {
-    .bootstrap = i9300_ipc_bootstrap,
-    .send = i9300_ipc_fmt_send,
-    .recv = i9300_ipc_fmt_recv,
+struct ipc_client_ops i9300_fmt_ops = {
+    .boot = i9300_boot,
+    .send = xmm6260_sec_modem_fmt_send,
+    .recv = xmm6260_sec_modem_fmt_recv,
 };
 
-struct ipc_ops i9300_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = i9300_ipc_rfs_send,
-    .recv = i9300_ipc_rfs_recv,
+struct ipc_client_ops i9300_rfs_ops = {
+    .boot = NULL,
+    .send = xmm6260_sec_modem_rfs_send,
+    .recv = xmm6260_sec_modem_rfs_recv,
 };
 
-struct ipc_handlers i9300_ipc_handlers = {
-    .read = i9300_ipc_read,
-    .write = i9300_ipc_write,
-    .open = i9300_ipc_open,
-    .close = i9300_ipc_close,
-    .poll = i9300_ipc_poll,
+struct ipc_client_handlers i9300_handlers = {
+    .read = i9300_read,
+    .write = i9300_write,
+    .open = i9300_open,
+    .close = i9300_close,
+    .poll = i9300_poll,
     .transport_data = NULL,
-    .power_on = i9300_ipc_power_on,
-    .power_off = i9300_ipc_power_off,
+    .power_on = i9300_power_on,
+    .power_off = i9300_power_off,
     .power_data = NULL,
     .gprs_activate = NULL,
     .gprs_deactivate = NULL,
     .gprs_data = NULL,
-    .data_create = i9300_ipc_data_create,
-    .data_destroy = i9300_ipc_data_destroy,
+    .data_create = i9300_data_create,
+    .data_destroy = i9300_data_destroy,
 };
 
-struct ipc_gprs_specs i9300_ipc_gprs_specs = {
-    .gprs_get_iface = i9300_ipc_gprs_get_iface,
-    .gprs_get_capabilities = i9300_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs i9300_gprs_specs = {
+    .gprs_get_iface = xmm6260_sec_modem_gprs_get_iface,
+    .gprs_get_capabilities = xmm6260_sec_modem_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs i9300_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs i9300_nv_data_specs = {
     .nv_data_path = XMM6260_NV_DATA_PATH,
     .nv_data_md5_path = XMM6260_NV_DATA_MD5_PATH,
     .nv_data_backup_path = XMM6260_NV_DATA_BACKUP_PATH,
similarity index 80%
rename from samsung-ipc/devices/i9300/i9300_ipc.h
rename to samsung-ipc/devices/i9300/i9300.h
index 901c28d..9e63c4b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
@@ -17,8 +17,8 @@
  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __I9300_IPC_H__
-#define __I9300_IPC_H__
+#ifndef __I9300_H__
+#define __I9300_H__
 
 #define I9300_MODEM_IMAGE_SIZE                               0x1000000
 #define I9300_PSI_OFFSET                                     0x1000
 
 #define I9300_MODEM_IMAGE_DEVICE             "/dev/block/mmcblk0p7"
 
-struct i9300_ipc_transport_data {
+struct i9300_transport_data {
     int fd;
 };
 
-extern struct ipc_ops i9300_ipc_fmt_ops;
-extern struct ipc_ops i9300_ipc_rfs_ops;
-extern struct ipc_handlers i9300_ipc_handlers;
-extern struct ipc_gprs_specs i9300_ipc_gprs_specs;
-extern struct ipc_nv_data_specs i9300_ipc_nv_data_specs;
+extern struct ipc_client_ops i9300_fmt_ops;
+extern struct ipc_client_ops i9300_rfs_ops;
+extern struct ipc_client_handlers i9300_handlers;
+extern struct ipc_client_gprs_specs i9300_gprs_specs;
+extern struct ipc_client_nv_data_specs i9300_nv_data_specs;
 
 #endif
 
similarity index 69%
rename from samsung-ipc/devices/maguro/maguro_ipc.c
rename to samsung-ipc/devices/maguro/maguro.c
index 632cd3b..f157883 100644 (file)
@@ -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
 #include "xmm6260.h"
 #include "xmm6260_mipi.h"
 #include "xmm6260_sec_modem.h"
-#include "maguro_ipc.h"
+#include "maguro.h"
 
-int maguro_ipc_bootstrap(struct ipc_client *client)
+int maguro_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
     int modem_image_fd = -1;
     int modem_boot_fd = -1;
     void *mps_data = NULL;
-
     unsigned char *p;
     int rc;
 
     if (client == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting maguro modem bootstrap");
+    ipc_client_log(client, "Starting maguro modem boot");
 
     modem_image_fd = open(MAGURO_MODEM_IMAGE_DEVICE, O_RDONLY);
     if (modem_image_fd < 0) {
@@ -206,106 +205,88 @@ complete:
     return rc;
 }
 
-
-int maguro_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_fmt_send(client, request);
-}
-
-int maguro_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_fmt_recv(client, response);
-}
-
-int maguro_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_rfs_send(client, request);
-}
-
-int maguro_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_rfs_recv(client, response);
-}
-
-int maguro_ipc_open(void *data, int type)
+int maguro_open(void *data, int type)
 {
-    struct maguro_ipc_transport_data *transport_data;
+    struct maguro_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct maguro_ipc_transport_data *) data;
+    transport_data = (struct maguro_transport_data *) data;
 
-    transport_data->fd = xmm6260_sec_modem_ipc_open(type);
+    transport_data->fd = xmm6260_sec_modem_open(type);
     if (transport_data->fd < 0)
         return -1;
 
     return 0;
 }
 
-int maguro_ipc_close(void *data)
+int maguro_close(void *data)
 {
-    struct maguro_ipc_transport_data *transport_data;
+    struct maguro_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct maguro_ipc_transport_data *) data;
+    transport_data = (struct maguro_transport_data *) data;
 
-    xmm6260_sec_modem_ipc_close(transport_data->fd);
+    xmm6260_sec_modem_close(transport_data->fd);
     transport_data->fd = -1;
 
     return 0;
 }
 
-int maguro_ipc_read(void *data, void *buffer, unsigned int length)
+int maguro_read(void *data, void *buffer, size_t length)
 {
-    struct maguro_ipc_transport_data *transport_data;
+    struct maguro_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct maguro_ipc_transport_data *) data;
+    transport_data = (struct maguro_transport_data *) data;
+
+    rc = xmm6260_sec_modem_read(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_read(transport_data->fd, buffer, length);
     return rc;
 }
 
-int maguro_ipc_write(void *data, void *buffer, unsigned int length)
+int maguro_write(void *data, const void *buffer, size_t length)
 {
-    struct maguro_ipc_transport_data *transport_data;
+    struct maguro_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct maguro_ipc_transport_data *) data;
+    transport_data = (struct maguro_transport_data *) data;
+
+    rc = xmm6260_sec_modem_write(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_write(transport_data->fd, buffer, length);
     return rc;
 }
 
-int maguro_ipc_poll(void *data, struct timeval *timeout)
+int maguro_poll(void *data, struct timeval *timeout)
 {
-    struct maguro_ipc_transport_data *transport_data;
+    struct maguro_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct maguro_ipc_transport_data *) data;
+    transport_data = (struct maguro_transport_data *) data;
+
+    rc = xmm6260_sec_modem_poll(transport_data->fd, timeout);
 
-    rc = xmm6260_sec_modem_ipc_poll(transport_data->fd, timeout);
     return rc;
 }
 
-int maguro_ipc_power_on(void *data)
+int maguro_power_on(void *data)
 {
     return 0;
 }
 
-int maguro_ipc_power_off(void *data)
+int maguro_power_off(void *data)
 {
     int fd;
     int rc;
@@ -324,18 +305,19 @@ int maguro_ipc_power_off(void *data)
     return 0;
 }
 
-int maguro_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int maguro_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct maguro_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct maguro_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct maguro_transport_data));
 
     return 0;
 }
 
-int maguro_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int maguro_data_destroy(void *transport_data, void *power_data,
+    void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -345,52 +327,41 @@ int maguro_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_d
     return 0;
 }
 
-char *maguro_ipc_gprs_get_iface(int cid)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_iface(cid);
-}
-
-
-int maguro_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_capabilities(capabilities);
-}
-
-struct ipc_ops maguro_ipc_fmt_ops = {
-    .bootstrap = maguro_ipc_bootstrap,
-    .send = maguro_ipc_fmt_send,
-    .recv = maguro_ipc_fmt_recv,
+struct ipc_client_ops maguro_fmt_ops = {
+    .boot = maguro_boot,
+    .send = xmm6260_sec_modem_fmt_send,
+    .recv = xmm6260_sec_modem_fmt_recv,
 };
 
-struct ipc_ops maguro_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = maguro_ipc_rfs_send,
-    .recv = maguro_ipc_rfs_recv,
+struct ipc_client_ops maguro_rfs_ops = {
+    .boot = NULL,
+    .send = xmm6260_sec_modem_rfs_send,
+    .recv = xmm6260_sec_modem_rfs_recv,
 };
 
-struct ipc_handlers maguro_ipc_handlers = {
-    .read = maguro_ipc_read,
-    .write = maguro_ipc_write,
-    .open = maguro_ipc_open,
-    .close = maguro_ipc_close,
-    .poll = maguro_ipc_poll,
+struct ipc_client_handlers maguro_handlers = {
+    .read = maguro_read,
+    .write = maguro_write,
+    .open = maguro_open,
+    .close = maguro_close,
+    .poll = maguro_poll,
     .transport_data = NULL,
-    .power_on = maguro_ipc_power_on,
-    .power_off = maguro_ipc_power_off,
+    .power_on = maguro_power_on,
+    .power_off = maguro_power_off,
     .power_data = NULL,
     .gprs_activate = NULL,
     .gprs_deactivate = NULL,
     .gprs_data = NULL,
-    .data_create = maguro_ipc_data_create,
-    .data_destroy = maguro_ipc_data_destroy,
+    .data_create = maguro_data_create,
+    .data_destroy = maguro_data_destroy,
 };
 
-struct ipc_gprs_specs maguro_ipc_gprs_specs = {
-    .gprs_get_iface = maguro_ipc_gprs_get_iface,
-    .gprs_get_capabilities = maguro_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs maguro_gprs_specs = {
+    .gprs_get_iface = xmm6260_sec_modem_gprs_get_iface,
+    .gprs_get_capabilities = xmm6260_sec_modem_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs maguro_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs maguro_nv_data_specs = {
     .nv_data_path = MAGURO_NV_DATA_PATH,
     .nv_data_md5_path = MAGURO_NV_DATA_MD5_PATH,
     .nv_data_backup_path = MAGURO_NV_DATA_BACKUP_PATH,
similarity index 84%
rename from samsung-ipc/devices/maguro/maguro_ipc.h
rename to samsung-ipc/devices/maguro/maguro.h
index c58178c..cc15bd6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
@@ -17,8 +17,8 @@
  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __MAGURO_IPC_H__
-#define __MAGURO_IPC_H__
+#ifndef __MAGURO_H__
+#define __MAGURO_H__
 
 #define MAGURO_MODEM_IMAGE_SIZE                                 0x1000000
 #define MAGURO_PSI_OFFSET                                       0
 #define MAGURO_NV_DATA_BACKUP_PATH              "/factory/.nv_data.bak"
 #define MAGURO_NV_DATA_BACKUP_MD5_PATH          "/factory/.nv_data.bak.md5"
 
-struct maguro_ipc_transport_data {
+struct maguro_transport_data {
     int fd;
 };
 
-extern struct ipc_ops maguro_ipc_fmt_ops;
-extern struct ipc_ops maguro_ipc_rfs_ops;
-extern struct ipc_handlers maguro_ipc_handlers;
-extern struct ipc_gprs_specs maguro_ipc_gprs_specs;
-extern struct ipc_nv_data_specs maguro_ipc_nv_data_specs;
+extern struct ipc_client_ops maguro_fmt_ops;
+extern struct ipc_client_ops maguro_rfs_ops;
+extern struct ipc_client_handlers maguro_handlers;
+extern struct ipc_client_gprs_specs maguro_gprs_specs;
+extern struct ipc_client_nv_data_specs maguro_nv_data_specs;
 
 #endif
 
similarity index 70%
rename from samsung-ipc/devices/n7100/n7100_ipc.c
rename to samsung-ipc/devices/n7100/n7100.c
index ad118da..c72dcdd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
 #include "xmm6260.h"
 #include "xmm6260_hsic.h"
 #include "xmm6260_sec_modem.h"
-#include "n7100_ipc.h"
+#include "n7100.h"
 
-int n7100_ipc_bootstrap(struct ipc_client *client)
+int n7100_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
     int modem_image_fd = -1;
     int modem_boot_fd = -1;
     int modem_link_fd = -1;
-
     unsigned char *p;
     int rc;
 
     if (client == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting n7100 modem bootstrap");
+    ipc_client_log(client, "Starting n7100 modem boot");
 
     modem_image_fd = open(N7100_MODEM_IMAGE_DEVICE, O_RDONLY);
     if (modem_image_fd < 0) {
@@ -224,106 +223,88 @@ complete:
     return rc;
 }
 
-
-int n7100_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_fmt_send(client, request);
-}
-
-int n7100_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_fmt_recv(client, response);
-}
-
-int n7100_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_rfs_send(client, request);
-}
-
-int n7100_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_rfs_recv(client, response);
-}
-
-int n7100_ipc_open(void *data, int type)
+int n7100_open(void *data, int type)
 {
-    struct n7100_ipc_transport_data *transport_data;
+    struct n7100_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct n7100_ipc_transport_data *) data;
+    transport_data = (struct n7100_transport_data *) data;
 
-    transport_data->fd = xmm6260_sec_modem_ipc_open(type);
+    transport_data->fd = xmm6260_sec_modem_open(type);
     if (transport_data->fd < 0)
         return -1;
 
     return 0;
 }
 
-int n7100_ipc_close(void *data)
+int n7100_close(void *data)
 {
-    struct n7100_ipc_transport_data *transport_data;
+    struct n7100_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct n7100_ipc_transport_data *) data;
+    transport_data = (struct n7100_transport_data *) data;
 
-    xmm6260_sec_modem_ipc_close(transport_data->fd);
+    xmm6260_sec_modem_close(transport_data->fd);
     transport_data->fd = -1;
 
     return 0;
 }
 
-int n7100_ipc_read(void *data, void *buffer, unsigned int length)
+int n7100_read(void *data, void *buffer, size_t length)
 {
-    struct n7100_ipc_transport_data *transport_data;
+    struct n7100_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct n7100_ipc_transport_data *) data;
+    transport_data = (struct n7100_transport_data *) data;
+
+    rc = xmm6260_sec_modem_read(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_read(transport_data->fd, buffer, length);
     return rc;
 }
 
-int n7100_ipc_write(void *data, void *buffer, unsigned int length)
+int n7100_write(void *data, const void *buffer, size_t length)
 {
-    struct n7100_ipc_transport_data *transport_data;
+    struct n7100_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct n7100_ipc_transport_data *) data;
+    transport_data = (struct n7100_transport_data *) data;
+
+    rc = xmm6260_sec_modem_write(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_write(transport_data->fd, buffer, length);
     return rc;
 }
 
-int n7100_ipc_poll(void *data, struct timeval *timeout)
+int n7100_poll(void *data, struct timeval *timeout)
 {
-    struct n7100_ipc_transport_data *transport_data;
+    struct n7100_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct n7100_ipc_transport_data *) data;
+    transport_data = (struct n7100_transport_data *) data;
+
+    rc = xmm6260_sec_modem_poll(transport_data->fd, timeout);
 
-    rc = xmm6260_sec_modem_ipc_poll(transport_data->fd, timeout);
     return rc;
 }
 
-int n7100_ipc_power_on(void *data)
+int n7100_power_on(void *data)
 {
     return 0;
 }
 
-int n7100_ipc_power_off(void *data)
+int n7100_power_off(void *data)
 {
     int fd;
     int rc;
@@ -342,18 +323,19 @@ int n7100_ipc_power_off(void *data)
     return 0;
 }
 
-int n7100_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int n7100_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct n7100_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct n7100_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct n7100_transport_data));
 
     return 0;
 }
 
-int n7100_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int n7100_data_destroy(void *transport_data, void *power_data,
+    void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -363,52 +345,41 @@ int n7100_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_da
     return 0;
 }
 
-char *n7100_ipc_gprs_get_iface(int cid)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_iface(cid);
-}
-
-
-int n7100_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_capabilities(capabilities);
-}
-
-struct ipc_ops n7100_ipc_fmt_ops = {
-    .bootstrap = n7100_ipc_bootstrap,
-    .send = n7100_ipc_fmt_send,
-    .recv = n7100_ipc_fmt_recv,
+struct ipc_client_ops n7100_fmt_ops = {
+    .boot = n7100_boot,
+    .send = xmm6260_sec_modem_fmt_send,
+    .recv = xmm6260_sec_modem_fmt_recv,
 };
 
-struct ipc_ops n7100_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = n7100_ipc_rfs_send,
-    .recv = n7100_ipc_rfs_recv,
+struct ipc_client_ops n7100_rfs_ops = {
+    .boot = NULL,
+    .send = xmm6260_sec_modem_rfs_send,
+    .recv = xmm6260_sec_modem_rfs_recv,
 };
 
-struct ipc_handlers n7100_ipc_handlers = {
-    .read = n7100_ipc_read,
-    .write = n7100_ipc_write,
-    .open = n7100_ipc_open,
-    .close = n7100_ipc_close,
-    .poll = n7100_ipc_poll,
+struct ipc_client_handlers n7100_handlers = {
+    .read = n7100_read,
+    .write = n7100_write,
+    .open = n7100_open,
+    .close = n7100_close,
+    .poll = n7100_poll,
     .transport_data = NULL,
-    .power_on = n7100_ipc_power_on,
-    .power_off = n7100_ipc_power_off,
+    .power_on = n7100_power_on,
+    .power_off = n7100_power_off,
     .power_data = NULL,
     .gprs_activate = NULL,
     .gprs_deactivate = NULL,
     .gprs_data = NULL,
-    .data_create = n7100_ipc_data_create,
-    .data_destroy = n7100_ipc_data_destroy,
+    .data_create = n7100_data_create,
+    .data_destroy = n7100_data_destroy,
 };
 
-struct ipc_gprs_specs n7100_ipc_gprs_specs = {
-    .gprs_get_iface = n7100_ipc_gprs_get_iface,
-    .gprs_get_capabilities = n7100_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs n7100_gprs_specs = {
+    .gprs_get_iface = xmm6260_sec_modem_gprs_get_iface,
+    .gprs_get_capabilities = xmm6260_sec_modem_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs n7100_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs n7100_nv_data_specs = {
     .nv_data_path = XMM6260_NV_DATA_PATH,
     .nv_data_md5_path = XMM6260_NV_DATA_MD5_PATH,
     .nv_data_backup_path = XMM6260_NV_DATA_BACKUP_PATH,
similarity index 83%
rename from samsung-ipc/devices/n7100/n7100_ipc.h
rename to samsung-ipc/devices/n7100/n7100.h
index 0008627..5ffd353 100644 (file)
@@ -17,8 +17,8 @@
  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __N7100_IPC_H__
-#define __N7100_IPC_H__
+#ifndef __N7100_H__
+#define __N7100_H__
 
 #define N7100_MODEM_IMAGE_SIZE                               0x1000000
 #define N7100_PSI_OFFSET                                     0x1000
 
 #define N7100_MODEM_IMAGE_DEVICE             "/dev/block/mmcblk0p10"
 
-struct n7100_ipc_transport_data {
+struct n7100_transport_data {
     int fd;
 };
 
-extern struct ipc_ops n7100_ipc_fmt_ops;
-extern struct ipc_ops n7100_ipc_rfs_ops;
-extern struct ipc_handlers n7100_ipc_handlers;
-extern struct ipc_gprs_specs n7100_ipc_gprs_specs;
-extern struct ipc_nv_data_specs n7100_ipc_nv_data_specs;
+extern struct ipc_client_ops n7100_fmt_ops;
+extern struct ipc_client_ops n7100_rfs_ops;
+extern struct ipc_client_handlers n7100_handlers;
+extern struct ipc_client_gprs_specs n7100_gprs_specs;
+extern struct ipc_client_nv_data_specs n7100_nv_data_specs;
 
 #endif
 
similarity index 65%
rename from samsung-ipc/devices/piranha/piranha_ipc.c
rename to samsung-ipc/devices/piranha/piranha.c
index 88754dd..44af920 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
 #include "xmm6260.h"
 #include "xmm6260_mipi.h"
 #include "xmm6260_sec_modem.h"
-#include "piranha_ipc.h"
+#include "piranha.h"
 
-int piranha_ipc_bootstrap(struct ipc_client *client)
+int piranha_boot(struct ipc_client *client)
 {
     void *modem_image_data = NULL;
     int modem_image_fd = -1;
     int modem_boot_fd = -1;
-
     unsigned char *p;
     int rc;
 
     if (client == NULL)
         return -1;
 
-    ipc_client_log(client, "Starting piranha modem bootstrap");
+    ipc_client_log(client, "Starting piranha modem boot");
 
     modem_image_fd = open(PIRANHA_MODEM_IMAGE_DEVICE, O_RDONLY);
     if (modem_image_fd < 0) {
@@ -172,105 +171,88 @@ complete:
     return rc;
 }
 
-int piranha_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_fmt_send(client, request);
-}
-
-int piranha_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response)
-{
-    return xmm6260_sec_modem_ipc_fmt_recv(client, response);
-}
-
-int piranha_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request)
-{
-    return xmm6260_sec_modem_ipc_rfs_send(client, request);
-}
-
-int piranha_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response)
+int piranha_open(void *data, int type)
 {
-    return xmm6260_sec_modem_ipc_rfs_recv(client, response);
-}
-
-int piranha_ipc_open(void *data, int type)
-{
-    struct piranha_ipc_transport_data *transport_data;
+    struct piranha_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct piranha_ipc_transport_data *) data;
+    transport_data = (struct piranha_transport_data *) data;
 
-    transport_data->fd = xmm6260_sec_modem_ipc_open(type);
+    transport_data->fd = xmm6260_sec_modem_open(type);
     if (transport_data->fd < 0)
         return -1;
 
     return 0;
 }
 
-int piranha_ipc_close(void *data)
+int piranha_close(void *data)
 {
-    struct piranha_ipc_transport_data *transport_data;
+    struct piranha_transport_data *transport_data;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct piranha_ipc_transport_data *) data;
+    transport_data = (struct piranha_transport_data *) data;
 
-    xmm6260_sec_modem_ipc_close(transport_data->fd);
+    xmm6260_sec_modem_close(transport_data->fd);
     transport_data->fd = -1;
 
     return 0;
 }
 
-int piranha_ipc_read(void *data, void *buffer, unsigned int length)
+int piranha_read(void *data, void *buffer, size_t length)
 {
-    struct piranha_ipc_transport_data *transport_data;
+    struct piranha_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct piranha_ipc_transport_data *) data;
+    transport_data = (struct piranha_transport_data *) data;
+
+    rc = xmm6260_sec_modem_read(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_read(transport_data->fd, buffer, length);
     return rc;
 }
 
-int piranha_ipc_write(void *data, void *buffer, unsigned int length)
+int piranha_write(void *data, const void *buffer, size_t length)
 {
-    struct piranha_ipc_transport_data *transport_data;
+    struct piranha_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct piranha_ipc_transport_data *) data;
+    transport_data = (struct piranha_transport_data *) data;
+
+    rc = xmm6260_sec_modem_write(transport_data->fd, buffer, length);
 
-    rc = xmm6260_sec_modem_ipc_write(transport_data->fd, buffer, length);
     return rc;
 }
 
-int piranha_ipc_poll(void *data, struct timeval *timeout)
+int piranha_poll(void *data, struct timeval *timeout)
 {
-    struct piranha_ipc_transport_data *transport_data;
+    struct piranha_transport_data *transport_data;
     int rc;
 
     if (data == NULL)
         return -1;
 
-    transport_data = (struct piranha_ipc_transport_data *) data;
+    transport_data = (struct piranha_transport_data *) data;
+
+    rc = xmm6260_sec_modem_poll(transport_data->fd, timeout);
 
-    rc = xmm6260_sec_modem_ipc_poll(transport_data->fd, timeout);
     return rc;
 }
 
-int piranha_ipc_power_on(void *data)
+int piranha_power_on(void *data)
 {
     return 0;
 }
 
-int piranha_ipc_power_off(void *data)
+int piranha_power_off(void *data)
 {
     int fd;
     int rc;
@@ -289,18 +271,19 @@ int piranha_ipc_power_off(void *data)
     return 0;
 }
 
-int piranha_ipc_data_create(void **transport_data, void **power_data, void **gprs_data)
+int piranha_data_create(void **transport_data, void **power_data,
+    void **gprs_data)
 {
     if (transport_data == NULL)
         return -1;
 
-    *transport_data = (void *) malloc(sizeof(struct piranha_ipc_transport_data));
-    memset(*transport_data, 0, sizeof(struct piranha_ipc_transport_data));
+    *transport_data = calloc(1, sizeof(struct piranha_transport_data));
 
     return 0;
 }
 
-int piranha_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_data)
+int piranha_data_destroy(void *transport_data, void *power_data,
+    void *gprs_data)
 {
     if (transport_data == NULL)
         return -1;
@@ -310,52 +293,41 @@ int piranha_ipc_data_destroy(void *transport_data, void *power_data, void *gprs_
     return 0;
 }
 
-char *piranha_ipc_gprs_get_iface(int cid)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_iface(cid);
-}
-
-
-int piranha_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities)
-{
-    return xmm6260_sec_modem_ipc_gprs_get_capabilities(capabilities);
-}
-
-struct ipc_ops piranha_ipc_fmt_ops = {
-    .bootstrap = piranha_ipc_bootstrap,
-    .send = piranha_ipc_fmt_send,
-    .recv = piranha_ipc_fmt_recv,
+struct ipc_client_ops piranha_fmt_ops = {
+    .boot = piranha_boot,
+    .send = xmm6260_sec_modem_fmt_send,
+    .recv = xmm6260_sec_modem_fmt_recv,
 };
 
-struct ipc_ops piranha_ipc_rfs_ops = {
-    .bootstrap = NULL,
-    .send = piranha_ipc_rfs_send,
-    .recv = piranha_ipc_rfs_recv,
+struct ipc_client_ops piranha_rfs_ops = {
+    .boot = NULL,
+    .send = xmm6260_sec_modem_rfs_send,
+    .recv = xmm6260_sec_modem_rfs_recv,
 };
 
-struct ipc_handlers piranha_ipc_handlers = {
-    .read = piranha_ipc_read,
-    .write = piranha_ipc_write,
-    .open = piranha_ipc_open,
-    .close = piranha_ipc_close,
-    .poll = piranha_ipc_poll,
+struct ipc_client_handlers piranha_handlers = {
+    .read = piranha_read,
+    .write = piranha_write,
+    .open = piranha_open,
+    .close = piranha_close,
+    .poll = piranha_poll,
     .transport_data = NULL,
-    .power_on = piranha_ipc_power_on,
-    .power_off = piranha_ipc_power_off,
+    .power_on = piranha_power_on,
+    .power_off = piranha_power_off,
     .power_data = NULL,
     .gprs_activate = NULL,
     .gprs_deactivate = NULL,
     .gprs_data = NULL,
-    .data_create = piranha_ipc_data_create,
-    .data_destroy = piranha_ipc_data_destroy,
+    .data_create = piranha_data_create,
+    .data_destroy = piranha_data_destroy,
 };
 
-struct ipc_gprs_specs piranha_ipc_gprs_specs = {
-    .gprs_get_iface = piranha_ipc_gprs_get_iface,
-    .gprs_get_capabilities = piranha_ipc_gprs_get_capabilities,
+struct ipc_client_gprs_specs piranha_gprs_specs = {
+    .gprs_get_iface = xmm6260_sec_modem_gprs_get_iface,
+    .gprs_get_capabilities = xmm6260_sec_modem_gprs_get_capabilities,
 };
 
-struct ipc_nv_data_specs piranha_ipc_nv_data_specs = {
+struct ipc_client_nv_data_specs piranha_nv_data_specs = {
     .nv_data_path = XMM6260_NV_DATA_PATH,
     .nv_data_md5_path = XMM6260_NV_DATA_MD5_PATH,
     .nv_data_backup_path = XMM6260_NV_DATA_BACKUP_PATH,
similarity index 77%
rename from samsung-ipc/devices/piranha/piranha_ipc.h
rename to samsung-ipc/devices/piranha/piranha.h
index 7cff520..834f7c3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
@@ -17,8 +17,8 @@
  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __PIRANHA_IPC_H__
-#define __PIRANHA_IPC_H__
+#ifndef __PIRANHA_H__
+#define __PIRANHA_H__
 
 #define PIRANHA_MODEM_IMAGE_SIZE                                0x1400000
 #define PIRANHA_PSI_OFFSET                                      0x1000
 
 #define PIRANHA_MODEM_IMAGE_DEVICE              "/dev/block/mmcblk0p8"
 
-struct piranha_ipc_transport_data {
+struct piranha_transport_data {
     int fd;
 };
 
-extern struct ipc_ops piranha_ipc_fmt_ops;
-extern struct ipc_ops piranha_ipc_rfs_ops;
-extern struct ipc_handlers piranha_ipc_handlers;
-extern struct ipc_gprs_specs piranha_ipc_gprs_specs;
-extern struct ipc_nv_data_specs piranha_ipc_nv_data_specs;
-extern struct ipc_nv_data_specs piranha_ipc_nv_data_specs;
+extern struct ipc_client_ops piranha_fmt_ops;
+extern struct ipc_client_ops piranha_rfs_ops;
+extern struct ipc_client_handlers piranha_handlers;
+extern struct ipc_client_gprs_specs piranha_gprs_specs;
+extern struct ipc_client_nv_data_specs piranha_nv_data_specs;
+extern struct ipc_client_nv_data_specs piranha_nv_data_specs;
 
 #endif
 
index 2c4d64b..c0c5c35 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr>
+ * Copyright (C) 2011-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
@@ -30,7 +30,7 @@
 #include "xmm6160.h"
 
 int xmm6160_psi_send(struct ipc_client *client, int serial_fd,
-    void *psi_data, unsigned short psi_size)
+    const void *psi_data, unsigned short psi_size)
 {
     char at[] = XMM6160_AT;
     unsigned char version;
@@ -38,17 +38,15 @@ int xmm6160_psi_send(struct ipc_client *client, int serial_fd,
     unsigned char psi_magic;
     unsigned char psi_crc;
     unsigned char psi_ack;
-
     struct termios termios;
     struct timeval timeout;
     fd_set fds;
-
+    size_t length;
     unsigned char *p;
-    int length;
     int rc;
     int i;
 
-    if (client == NULL || serial_fd < 0 || psi_data == NULL || psi_size <= 0)
+    if (client == NULL || serial_fd < 0 || psi_data == NULL || psi_size == 0)
         return -1;
 
     tcgetattr(serial_fd, &termios);
@@ -62,7 +60,7 @@ int xmm6160_psi_send(struct ipc_client *client, int serial_fd,
     length = strlen(at);
     for (i = 0; i < XMM6160_AT_COUNT; i++) {
         rc = write(serial_fd, at, length);
-        if (rc < length) {
+        if (rc < (int) length) {
             ipc_client_log(client, "Writing AT in ASCII failed");
             goto error;
         }
@@ -185,15 +183,14 @@ complete:
 }
 
 int xmm6160_firmware_send(struct ipc_client *client, int device_fd,
-    void *device_address, void *firmware_data, int firmware_size)
+    void *device_address, const void *firmware_data, size_t firmware_size)
 {
-    int wc;
-
+    size_t wc;
     unsigned char *p;
     int rc;
     int i;
 
-    if (client == NULL || (device_fd < 0 && device_address == NULL) || firmware_data == NULL || firmware_size <= 0)
+    if (client == NULL || (device_fd < 0 && device_address == NULL) || firmware_data == NULL || firmware_size == 0)
         return -1;
 
     p = (unsigned char *) firmware_data;
@@ -204,7 +201,7 @@ int xmm6160_firmware_send(struct ipc_client *client, int device_fd,
         wc = 0;
         while (wc < firmware_size) {
             rc = write(device_fd, (void *) p, firmware_size - wc);
-            if (rc < 0) {
+            if (rc <= 0) {
                 ipc_client_log(client, "Writing firmware failed");
                 goto error;
             }
@@ -229,9 +226,8 @@ int xmm6160_nv_data_send(struct ipc_client *client, int device_fd,
     void *device_address)
 {
     void *nv_data = NULL;
-    int nv_size;
-    int wc;
-
+    size_t nv_size;
+    size_t wc;
     unsigned char *p;
     int rc;
 
@@ -239,6 +235,8 @@ int xmm6160_nv_data_send(struct ipc_client *client, int device_fd,
         return -1;
 
     nv_size = ipc_client_nv_data_size(client);
+    if (nv_size == 0)
+        return -1;
 
     nv_data = ipc_nv_data_load(client);
     if (nv_data == NULL) {
@@ -255,7 +253,7 @@ int xmm6160_nv_data_send(struct ipc_client *client, int device_fd,
         wc = 0;
         while (wc < nv_size) {
             rc = write(device_fd, p, nv_size - wc);
-            if (rc < 0) {
+            if (rc <= 0) {
                 ipc_client_log(client, "Writing modem image failed");
                 goto error;
             }
index 14f337a..22ae2be 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr>
+ * Copyright (C) 2011-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
@@ -37,9 +37,9 @@
 #define XMM6160_NV_DATA_CHUNK_SIZE                              0x1000
 
 int xmm6160_psi_send(struct ipc_client *client, int serial_fd,
-    void *psi_data, unsigned short psi_size);
+    const void *psi_data, unsigned short psi_size);
 int xmm6160_firmware_send(struct ipc_client *client, int device_fd,
-    void *device_address, void *firmware_data, int firmware_size);
+    void *device_address, const void *firmware_data, size_t firmware_size);
 int xmm6160_nv_data_send(struct ipc_client *client, int device_fd,
     void *device_address);
 
index 416f6c2..2711caf 100644 (file)
@@ -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
 
 #include "xmm6260.h"
 
-unsigned char xmm6260_crc_calculate(void *buffer, int length)
+unsigned char xmm6260_crc_calculate(const void *data, size_t size)
 {
     unsigned char crc;
     unsigned char *p;
 
-    if (buffer == NULL || length <= 0)
+    if (data == NULL || size == 0)
         return 0;
 
-    p = (unsigned char *) buffer;
+    p = (unsigned char *) data;
 
     crc = 0;
-    while (length--)
+    while (size--)
         crc ^= *p++;
 
     return crc;
index c116ede..bc55a44 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
@@ -46,7 +46,7 @@
 #define XMM6260_NV_DATA_SIZE                                    0x200000
 #define XMM6260_NV_DATA_CHUNK_SIZE                              0x1000
 
-unsigned char xmm6260_crc_calculate(void *buffer, int length);
+unsigned char xmm6260_crc_calculate(const void *data, size_t size);
 
 #endif
 
index 747ebd1..24b6567 100644 (file)
@@ -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>
  *
  * Based on the incomplete C++ implementation which is:
  * Copyright (C) 2012 Sergey Gridasov <grindars@gmail.com>
@@ -37,7 +37,6 @@ int xmm6260_hsic_ack_read(int device_fd, unsigned short ack)
 {
     struct timeval timeout;
     fd_set fds;
-
     unsigned short value;
     int rc;
     int i;
@@ -66,20 +65,18 @@ int xmm6260_hsic_ack_read(int device_fd, unsigned short ack)
 }
 
 int xmm6260_hsic_psi_send(struct ipc_client *client, int device_fd,
-    void *psi_data, unsigned short psi_size)
+    const void *psi_data, unsigned short psi_size)
 {
     struct xmm6260_hsic_psi_header psi_header;
     char at[] = XMM6260_AT;
     unsigned char psi_ack;
     unsigned char chip_id;
     unsigned char psi_crc;
-
     struct timeval timeout;
     fd_set fds;
-    int wc;
-
+    size_t wc;
+    size_t length;
     unsigned char *p;
-    int length;
     int rc;
     int i;
 
@@ -98,7 +95,7 @@ int xmm6260_hsic_psi_send(struct ipc_client *client, int device_fd,
         timeout.tv_usec = 100000;
 
         rc = write(device_fd, at, length);
-        if (rc < length) {
+        if (rc < (int) length) {
             ipc_client_log(client, "Writing ATAT in ASCII failed");
             goto error;
         }
@@ -129,7 +126,7 @@ int xmm6260_hsic_psi_send(struct ipc_client *client, int device_fd,
 
     psi_ack = 0;
     rc = read(device_fd, &psi_ack, sizeof(psi_ack));
-    if (rc < 0 || psi_ack != XMM6260_HSIC_BOOT0_ACK) {
+    if (rc <= 0 || psi_ack != XMM6260_HSIC_BOOT0_ACK) {
         ipc_client_log(client, "Reading boot ACK failed");
         goto error;
     }
@@ -142,7 +139,7 @@ int xmm6260_hsic_psi_send(struct ipc_client *client, int device_fd,
 
     chip_id = 0;
     rc = read(device_fd, &chip_id, sizeof(chip_id));
-    if (rc < 0) {
+    if (rc <= 0) {
         ipc_client_log(client, "Reading chip id failed");
         goto error;
     }
@@ -164,7 +161,7 @@ int xmm6260_hsic_psi_send(struct ipc_client *client, int device_fd,
     wc = 0;
     while (wc < psi_size) {
         rc = write(device_fd, (void *) p, psi_size - wc);
-        if (rc < 0) {
+        if (rc <= 0) {
             ipc_client_log(client, "Writing PSI failed");
             goto error;
         }
@@ -234,25 +231,23 @@ complete:
 }
 
 int xmm6260_hsic_ebl_send(struct ipc_client *client, int device_fd,
-    void *ebl_data, int ebl_size)
+    const void *ebl_data, size_t ebl_size)
 {
     unsigned char ebl_crc;
-
-    int chunk;
-    int count;
-    int wc;
-
+    size_t chunk;
+    size_t count;
+    size_t wc;
+    size_t size;
     unsigned char *p;
-    int length;
     int rc;
 
-    if (client == NULL || device_fd < 0 || ebl_data == NULL || ebl_size <= 0)
+    if (client == NULL || device_fd < 0 || ebl_data == NULL || ebl_size == 0)
         return -1;
 
-    length = sizeof(ebl_size);
+    size = sizeof(ebl_size);
 
-    rc = write(device_fd, &ebl_size, length);
-    if (rc < length) {
+    rc = write(device_fd, &ebl_size, size);
+    if (rc < (int) size) {
         ipc_client_log(client, "Writing EBL size failed");
         goto error;
     }
@@ -272,7 +267,7 @@ int xmm6260_hsic_ebl_send(struct ipc_client *client, int device_fd,
         count = chunk < ebl_size - wc ? chunk : ebl_size - wc;
 
         rc = write(device_fd, (void *) p, count);
-        if (rc < 0) {
+        if (rc <= 0) {
             ipc_client_log(client, "Writing EBL failed");
             goto error;
         }
@@ -309,20 +304,18 @@ complete:
 }
 
 int xmm6260_hsic_command_send(int device_fd, unsigned short code,
-    void *data, int size, int command_data_size, int ack)
+    const void *data, size_t size, size_t command_data_size, int ack)
 {
     struct xmm6260_hsic_command_header header;
     void *buffer = NULL;
-    int length;
-
+    size_t length;
     struct timeval timeout;
     fd_set fds;
-
     unsigned char *p;
     int rc;
     int i;
 
-    if (device_fd < 0 || data == NULL || size <= 0 || command_data_size < size)
+    if (device_fd < 0 || data == NULL || size == 0 || command_data_size == 0 || command_data_size < size)
         return -1;
 
     header.checksum = (size & 0xffff) + code;
@@ -331,11 +324,11 @@ int xmm6260_hsic_command_send(int device_fd, unsigned short code,
 
     p = (unsigned char *) data;
 
-    for (i = 0; i < size; i++)
+    for (i = 0; i < (int) size; i++)
         header.checksum += *p++;
 
     length = command_data_size + sizeof(header);
-    buffer = malloc(length);
+    buffer = calloc(1, length);
 
     memset(buffer, 0, length);
     p = (unsigned char *) buffer;
@@ -344,7 +337,7 @@ int xmm6260_hsic_command_send(int device_fd, unsigned short code,
     memcpy(p, data, size);
 
     rc = write(device_fd, buffer, length);
-    if (rc < length)
+    if (rc < (int) length)
         goto error;
 
     if (!ack) {
@@ -373,7 +366,7 @@ int xmm6260_hsic_command_send(int device_fd, unsigned short code,
         goto error;
 
     rc = read(device_fd, buffer, command_data_size);
-    if (rc < command_data_size)
+    if (rc < (int) command_data_size)
         goto error;
 
     if (header.code != code)
@@ -392,16 +385,16 @@ complete:
     return rc;
 }
 
-int xmm6260_hsic_modem_data_send(int device_fd, void *data, int size, int address)
+int xmm6260_hsic_modem_data_send(int device_fd, const void *data, size_t size,
+    int address)
 {
-    int chunk;
-    int count;
-    int c;
-
+    size_t chunk;
+    size_t count;
+    size_t c;
     unsigned char *p;
     int rc;
 
-    if (device_fd < 0 || data == NULL || size <= 0)
+    if (device_fd < 0 || data == NULL || size == 0)
         return -1;
 
     rc = xmm6260_hsic_command_send(device_fd, XMM6260_COMMAND_FLASH_SET_ADDRESS, &address, sizeof(address), XMM6260_HSIC_FLASH_SET_ADDRESS_SIZE, 1);
@@ -436,11 +429,9 @@ complete:
 int xmm6260_hsic_port_config_send(struct ipc_client *client, int device_fd)
 {
     void *buffer = NULL;
-    int length;
-
+    size_t length;
     struct timeval timeout;
     fd_set fds;
-
     int rc;
 
     if (client == NULL || device_fd < 0)
@@ -457,14 +448,14 @@ int xmm6260_hsic_port_config_send(struct ipc_client *client, int device_fd)
         goto error;
 
     length = XMM6260_HSIC_PORT_CONFIG_SIZE;
-    buffer = malloc(length);
+    buffer = calloc(1, length);
 
     rc = select(device_fd + 1, &fds, NULL, NULL, &timeout);
     if (rc <= 0)
         goto error;
 
     rc = read(device_fd, buffer, length);
-    if (rc < length) {
+    if (rc < (int) length) {
         ipc_client_log(client, "Reading port config failed");
         goto error;
     }
@@ -490,11 +481,11 @@ complete:
 }
 
 int xmm6260_hsic_sec_start_send(struct ipc_client *client, int device_fd,
-    void *sec_data, int sec_size)
+    const void *sec_data, size_t sec_size)
 {
     int rc;
 
-    if (client == NULL || device_fd < 0 || sec_data == NULL || sec_size <= 0)
+    if (client == NULL || device_fd < 0 || sec_data == NULL || sec_size == 0)
         return -1;
 
     rc = xmm6260_hsic_command_send(device_fd, XMM6260_COMMAND_SEC_START, sec_data, sec_size, XMM6260_HSIC_SEC_START_SIZE, 1);
@@ -507,7 +498,7 @@ int xmm6260_hsic_sec_start_send(struct ipc_client *client, int device_fd,
 int xmm6260_hsic_sec_end_send(struct ipc_client *client, int device_fd)
 {
     unsigned short sec_data;
-    int sec_size;
+    size_t sec_size;
     int rc;
 
     if (client == NULL || device_fd < 0)
@@ -524,11 +515,11 @@ int xmm6260_hsic_sec_end_send(struct ipc_client *client, int device_fd)
 }
 
 int xmm6260_hsic_firmware_send(struct ipc_client *client, int device_fd,
-    void *firmware_data, int firmware_size)
+    const void *firmware_data, size_t firmware_size)
 {
     int rc;
 
-    if (client == NULL || device_fd < 0 || firmware_data == NULL || firmware_size <= 0)
+    if (client == NULL || device_fd < 0 || firmware_data == NULL || firmware_size == 0)
         return -1;
 
     rc = xmm6260_hsic_modem_data_send(device_fd, firmware_data, firmware_size, XMM6260_FIRMWARE_ADDRESS);
@@ -541,13 +532,15 @@ int xmm6260_hsic_firmware_send(struct ipc_client *client, int device_fd,
 int xmm6260_hsic_nv_data_send(struct ipc_client *client, int device_fd)
 {
     void *nv_data = NULL;
-    int nv_size;
+    size_t nv_size;
     int rc;
 
     if (client == NULL || device_fd < 0)
         return -1;
 
     nv_size = ipc_client_nv_data_size(client);
+    if (nv_size == 0)
+        return -1;
 
     nv_data = ipc_nv_data_load(client);
     if (nv_data == NULL) {
index 4e25bce..1728a4c 100644 (file)
@@ -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
@@ -51,16 +51,16 @@ struct xmm6260_hsic_command_header {
 } __attribute__((packed));
 
 int xmm6260_hsic_psi_send(struct ipc_client *client, int device_fd,
-    void *psi_data, unsigned short psi_size);
+    const void *psi_data, unsigned short psi_size);
 int xmm6260_hsic_ebl_send(struct ipc_client *client, int device_fd,
-    void *ebl_data, int ebl_size);
+    const void *ebl_data, size_t ebl_size);
 
 int xmm6260_hsic_port_config_send(struct ipc_client *client, int device_fd);
 int xmm6260_hsic_sec_start_send(struct ipc_client *client, int device_fd,
-    void *sec_data, int sec_size);
+    const void *sec_data, size_t sec_size);
 int xmm6260_hsic_sec_end_send(struct ipc_client *client, int device_fd);
 int xmm6260_hsic_firmware_send(struct ipc_client *client, int device_fd,
-    void *firmware_data, int firmware_size);
+    const void *firmware_data, size_t firmware_size);
 int xmm6260_hsic_nv_data_send(struct ipc_client *client, int device_fd);
 int xmm6260_hsic_hw_reset_send(struct ipc_client *client, int device_fd);
 
index a14fd20..dd2a560 100644 (file)
@@ -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>
  *
  * Based on the incomplete C++ implementation which is:
  * Copyright (C) 2012 Sergey Gridasov <grindars@gmail.com>
 #include "xmm6260.h"
 #include "xmm6260_mipi.h"
 
-int xmm6260_mipi_crc_calculate(void *buffer, int length)
+int xmm6260_mipi_crc_calculate(const void *data, size_t size)
 {
     unsigned char crc;
     int mipi_crc;
 
-    crc = xmm6260_crc_calculate(buffer, length);
+    crc = xmm6260_crc_calculate(data, size);
     mipi_crc = (crc << 24) | 0xffffff;
 
     return mipi_crc;
@@ -48,7 +48,6 @@ int xmm6260_mipi_ack_read(int device_fd, unsigned short ack)
 {
     struct timeval timeout;
     fd_set fds;
-
     unsigned int value;
     int rc;
     int i;
@@ -77,18 +76,16 @@ int xmm6260_mipi_ack_read(int device_fd, unsigned short ack)
 }
 
 int xmm6260_mipi_psi_send(struct ipc_client *client, int device_fd,
-    void *psi_data, unsigned short psi_size)
+    const void *psi_data, unsigned short psi_size)
 {
     struct xmm6260_mipi_psi_header psi_header;
     char at[] = XMM6260_AT;
     int psi_crc;
-
     struct timeval timeout;
     fd_set fds;
-    int wc;
-
+    size_t wc;
+    size_t length;
     unsigned char *p;
-    int length;
     int rc;
     int i;
 
@@ -107,7 +104,7 @@ int xmm6260_mipi_psi_send(struct ipc_client *client, int device_fd,
         timeout.tv_usec = 100000;
 
         rc = write(device_fd, at, length);
-        if (rc < length) {
+        if (rc < (int) length) {
             ipc_client_log(client, "Writing ATAT in ASCII failed");
             goto error;
         }
@@ -147,7 +144,7 @@ int xmm6260_mipi_psi_send(struct ipc_client *client, int device_fd,
     wc = 0;
     while (wc < psi_size) {
         rc = write(device_fd, (void *) p, psi_size - wc);
-        if (rc < 0) {
+        if (rc <= 0) {
             ipc_client_log(client, "Writing PSI failed");
             goto error;
         }
@@ -184,20 +181,19 @@ complete:
 }
 
 int xmm6260_mipi_ebl_send(struct ipc_client *client, int device_fd,
-    void *ebl_data, int ebl_size)
+    const void *ebl_data, size_t ebl_size)
 {
     unsigned short boot_magic[4];
     unsigned char ebl_crc;
-
-    int chunk;
-    int count;
-    int wc;
-
+    size_t chunk;
+    size_t count;
+    size_t wc;
+    size_t size;
+    size_t length;
     unsigned char *p;
-    int length;
     int rc;
 
-    if (client == NULL || device_fd < 0 || ebl_data == NULL || ebl_size <= 0)
+    if (client == NULL || device_fd < 0 || ebl_data == NULL || ebl_size == 0)
         return -1;
 
     boot_magic[0] = 0;
@@ -214,7 +210,7 @@ int xmm6260_mipi_ebl_send(struct ipc_client *client, int device_fd,
     }
 
     rc = write(device_fd, &boot_magic, length);
-    if (rc < length) {
+    if (rc < (int) length) {
         ipc_client_log(client, "Writing boot magic failed");
         goto error;
     }
@@ -226,16 +222,16 @@ int xmm6260_mipi_ebl_send(struct ipc_client *client, int device_fd,
         goto error;
     }
 
-    length = sizeof(ebl_size);
+    size = sizeof(ebl_size);
 
-    rc = write(device_fd, &length, sizeof(length));
-    if (rc < (int) sizeof(length)) {
+    rc = write(device_fd, &size, sizeof(size));
+    if (rc < (int) sizeof(size)) {
         ipc_client_log(client, "Writing EBL size length failed");
         goto error;
     }
 
-    rc = write(device_fd, &ebl_size, length);
-    if (rc < length) {
+    rc = write(device_fd, &ebl_size, size);
+    if (rc < (int) size) {
         ipc_client_log(client, "Writing EBL size failed");
         goto error;
     }
@@ -249,8 +245,8 @@ int xmm6260_mipi_ebl_send(struct ipc_client *client, int device_fd,
 
     ebl_size++;
 
-    rc = write(device_fd, &ebl_size, length);
-    if (rc < length) {
+    rc = write(device_fd, &ebl_size, size);
+    if (rc < (int) size) {
         ipc_client_log(client, "Writing EBL size failed");
         goto error;
     }
@@ -265,7 +261,7 @@ int xmm6260_mipi_ebl_send(struct ipc_client *client, int device_fd,
         count = chunk < ebl_size - wc ? chunk : ebl_size - wc;
 
         rc = write(device_fd, (void *) p, count);
-        if (rc < 0) {
+        if (rc <= 0) {
             ipc_client_log(client, "Writing EBL failed");
             goto error;
         }
@@ -302,19 +298,17 @@ complete:
 }
 
 int xmm6260_mipi_command_send(int device_fd, unsigned short code,
-    void *data, int size, int ack, int short_footer)
+    const void *data, size_t size, int ack, int short_footer)
 {
     struct xmm6260_mipi_command_header header;
     struct xmm6260_mipi_command_footer footer;
-    int footer_size;
     void *buffer = NULL;
-    int length;
-
+    size_t length;
+    size_t footer_length;
     struct timeval timeout;
     fd_set fds;
-    int chunk;
-    int c;
-
+    size_t chunk;
+    size_t c;
     unsigned char *p;
     int rc;
     int i;
@@ -333,25 +327,25 @@ int xmm6260_mipi_command_send(int device_fd, unsigned short code,
 
     p = (unsigned char *) data;
 
-    for (i = 0; i < size; i++)
+    for (i = 0; i < (int) size; i++)
         footer.checksum += *p++;
 
-    footer_size = sizeof(footer);
+    footer_length = sizeof(footer);
     if (short_footer)
-        footer_size -= sizeof(short);
+        footer_length -= sizeof(short);
 
-    length = sizeof(header) + size + footer_size;
-    buffer = malloc(length);
+    length = sizeof(header) + size + footer_length;
+    buffer = calloc(1, length);
 
     p = (unsigned char *) buffer;
     memcpy(p, &header, sizeof(header));
     p += sizeof(header);
     memcpy(p, data, size);
     p += size;
-    memcpy(p, &footer, footer_size);
+    memcpy(p, &footer, footer_length);
 
     rc = write(device_fd, buffer, length);
-    if (rc < length)
+    if (rc < (int) length)
         goto error;
 
     free(buffer);
@@ -383,7 +377,7 @@ int xmm6260_mipi_command_send(int device_fd, unsigned short code,
     if (length < (int) sizeof(buffer))
         goto error;
 
-    buffer = malloc(length);
+    buffer = calloc(1, length);
 
     p = (unsigned char *) buffer;
     memcpy(p, &length, sizeof(length));
@@ -397,7 +391,7 @@ int xmm6260_mipi_command_send(int device_fd, unsigned short code,
             goto error;
 
         rc = read(device_fd, (void *) p, chunk);
-        if (rc < chunk)
+        if (rc < (int) chunk)
             goto error;
 
         p += rc;
@@ -421,16 +415,16 @@ complete:
     return rc;
 }
 
-int xmm6260_mipi_modem_data_send(int device_fd, void *data, int size, int address)
+int xmm6260_mipi_modem_data_send(int device_fd, const void *data, size_t size,
+    int address)
 {
-    int chunk;
-    int count;
-    int c;
-
+    size_t chunk;
+    size_t count;
+    size_t c;
     unsigned char *p;
     int rc;
 
-    if (device_fd < 0 || data == NULL || size <= 0)
+    if (device_fd < 0 || data == NULL || size == 0)
         return -1;
 
     rc = xmm6260_mipi_command_send(device_fd, XMM6260_COMMAND_FLASH_SET_ADDRESS, &address, sizeof(address), 1, 0);
@@ -465,14 +459,12 @@ complete:
 int xmm6260_mipi_port_config_send(struct ipc_client *client, int device_fd)
 {
     void *buffer = NULL;
-    int length;
-
+    size_t length;
     struct timeval timeout;
     fd_set fds;
-    int chunk;
-    int count;
-    int c;
-
+    size_t chunk;
+    size_t count;
+    size_t c;
     unsigned char *p;
     int rc;
 
@@ -490,13 +482,13 @@ int xmm6260_mipi_port_config_send(struct ipc_client *client, int device_fd)
         goto error;
 
     rc = read(device_fd, &length, sizeof(length));
-    if (rc < (int) sizeof(length) || length <= 0) {
+    if (rc < (int) sizeof(length) || length == 0) {
         ipc_client_log(client, "Reading port config length failed");
         goto error;
     }
     ipc_client_log(client, "Read port config length (0x%x)", length);
 
-    buffer = malloc(length);
+    buffer = calloc(1, length);
 
     p = (unsigned char *) buffer;
 
@@ -510,7 +502,7 @@ int xmm6260_mipi_port_config_send(struct ipc_client *client, int device_fd)
             goto error;
 
         rc = read(device_fd, p, count);
-        if (rc < count) {
+        if (rc < (int) count) {
             ipc_client_log(client, "Reading port config failed");
             goto error;
         }
@@ -540,11 +532,11 @@ complete:
 }
 
 int xmm6260_mipi_sec_start_send(struct ipc_client *client, int device_fd,
-    void *sec_data, int sec_size)
+    const void *sec_data, size_t sec_size)
 {
     int rc;
 
-    if (client == NULL || device_fd < 0 || sec_data == NULL || sec_size <= 0)
+    if (client == NULL || device_fd < 0 || sec_data == NULL || sec_size == 0)
         return -1;
 
     rc = xmm6260_mipi_command_send(device_fd, XMM6260_COMMAND_SEC_START, sec_data, sec_size, 1, 0);
@@ -557,7 +549,7 @@ int xmm6260_mipi_sec_start_send(struct ipc_client *client, int device_fd,
 int xmm6260_mipi_sec_end_send(struct ipc_client *client, int device_fd)
 {
     unsigned short sec_data;
-    int sec_size;
+    size_t sec_size;
     int rc;
 
     if (client == NULL || device_fd < 0)
@@ -574,11 +566,11 @@ int xmm6260_mipi_sec_end_send(struct ipc_client *client, int device_fd)
 }
 
 int xmm6260_mipi_firmware_send(struct ipc_client *client, int device_fd,
-    void *firmware_data, int firmware_size)
+    const void *firmware_data, size_t firmware_size)
 {
     int rc;
 
-    if (client == NULL || device_fd < 0 || firmware_data == NULL || firmware_size <= 0)
+    if (client == NULL || device_fd < 0 || firmware_data == NULL || firmware_size == 0)
         return -1;
 
     rc = xmm6260_mipi_modem_data_send(device_fd, firmware_data, firmware_size, XMM6260_FIRMWARE_ADDRESS);
@@ -591,13 +583,15 @@ int xmm6260_mipi_firmware_send(struct ipc_client *client, int device_fd,
 int xmm6260_mipi_nv_data_send(struct ipc_client *client, int device_fd)
 {
     void *nv_data = NULL;
-    int nv_size;
+    size_t nv_size;
     int rc;
 
     if (client == NULL || device_fd < 0)
         return -1;
 
     nv_size = ipc_client_nv_data_size(client);
+    if (nv_size == 0)
+        return -1;
 
     nv_data = ipc_nv_data_load(client);
     if (nv_data == NULL) {
@@ -624,11 +618,11 @@ complete:
 }
 
 int xmm6260_mipi_mps_data_send(struct ipc_client *client, int device_fd,
-    void *mps_data, int mps_size)
+    const void *mps_data, size_t mps_size)
 {
     int rc;
 
-    if (client == NULL || device_fd < 0 || mps_data == NULL || mps_size <= 0)
+    if (client == NULL || device_fd < 0 || mps_data == NULL || mps_size == 0)
         return -1;
 
     rc = xmm6260_mipi_modem_data_send(device_fd, mps_data, mps_size, XMM6260_MPS_DATA_ADDRESS);
@@ -641,7 +635,7 @@ int xmm6260_mipi_mps_data_send(struct ipc_client *client, int device_fd,
 int xmm6260_mipi_hw_reset_send(struct ipc_client *client, int device_fd)
 {
     unsigned int hw_reset_data;
-    int hw_reset_size;
+    size_t hw_reset_size;
     int rc;
 
     if (client == NULL || device_fd < 0)
index 4c9d7d2..4744369 100644 (file)
@@ -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
@@ -53,19 +53,19 @@ struct xmm6260_mipi_command_footer {
 } __attribute__((packed));
 
 int xmm6260_mipi_psi_send(struct ipc_client *client, int device_fd,
-    void *psi_data, unsigned short psi_size);
+    const void *psi_data, unsigned short psi_size);
 int xmm6260_mipi_ebl_send(struct ipc_client *client, int device_fd,
-    void *ebl_data, int ebl_size);
+    const void *ebl_data, size_t ebl_size);
 
 int xmm6260_mipi_port_config_send(struct ipc_client *client, int device_fd);
 int xmm6260_mipi_sec_start_send(struct ipc_client *client, int device_fd,
-    void *sec_data, int sec_size);
+    const void *sec_data, size_t sec_size);
 int xmm6260_mipi_sec_end_send(struct ipc_client *client, int device_fd);
 int xmm6260_mipi_firmware_send(struct ipc_client *client, int device_fd,
-    void *firmware_data, int firmware_size);
+    const void *firmware_data, size_t firmware_size);
 int xmm6260_mipi_nv_data_send(struct ipc_client *client, int device_fd);
 int xmm6260_mipi_mps_data_send(struct ipc_client *client, int device_fd,
-    void *mps_data, int mps_size);
+    const void *mps_data, size_t mps_size);
 int xmm6260_mipi_hw_reset_send(struct ipc_client *client, int device_fd);
 
 #endif
index e7b89b3..06731a7 100644 (file)
@@ -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;
 }
index 8895fbb..d1c6fe6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of libsamsung-ipc.
  *
- * 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
@@ -40,19 +40,23 @@ int xmm6260_sec_modem_link_control_active(int device_fd, int active);
 int xmm6260_sec_modem_link_connected_wait(int device_fd);
 int xmm6260_sec_modem_link_get_hostwake_wait(int device_fd);
 
-int xmm6260_sec_modem_ipc_fmt_send(struct ipc_client *client, struct ipc_message_info *request);
-int xmm6260_sec_modem_ipc_fmt_recv(struct ipc_client *client, struct ipc_message_info *response);
-int xmm6260_sec_modem_ipc_rfs_send(struct ipc_client *client, struct ipc_message_info *request);
-int xmm6260_sec_modem_ipc_rfs_recv(struct ipc_client *client, struct ipc_message_info *response);
-
-int xmm6260_sec_modem_ipc_open(int type);
-int xmm6260_sec_modem_ipc_close(int fd);
-int xmm6260_sec_modem_ipc_read(int fd, void *buffer, unsigned int length);
-int xmm6260_sec_modem_ipc_write(int fd, void *buffer, unsigned int length);
-int xmm6260_sec_modem_ipc_poll(int fd, struct timeval *timeout);
-
-char *xmm6260_sec_modem_ipc_gprs_get_iface(int cid);
-int xmm6260_sec_modem_ipc_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities);
+int xmm6260_sec_modem_fmt_send(struct ipc_client *client,
+    struct ipc_message *message);
+int xmm6260_sec_modem_fmt_recv(struct ipc_client *client,
+    struct ipc_message *message);
+int xmm6260_sec_modem_rfs_send(struct ipc_client *client,
+    struct ipc_message *message);
+int xmm6260_sec_modem_rfs_recv(struct ipc_client *client,
+    struct ipc_message *message);
+
+int xmm6260_sec_modem_open(int type);
+int xmm6260_sec_modem_close(int fd);
+int xmm6260_sec_modem_read(int fd, void *buffer, size_t length);
+int xmm6260_sec_modem_write(int fd, const void *buffer, size_t length);
+int xmm6260_sec_modem_poll(int fd, struct timeval *timeout);
+
+char *xmm6260_sec_modem_gprs_get_iface(int cid);
+int xmm6260_sec_modem_gprs_get_capabilities(struct ipc_client_gprs_capabilities *capabilities);
 
 #endif
 
index 86f4291..a8cacf0 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com>
  * Copyright (C) 2011 Simon Busch <morphis@gravedo.de>
- * Copyright (C) 2013 Paul Kocialkowsk <contact@paulk.fr>
+ * Copyright (C) 2013-2014 Paul Kocialkowsk <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
@@ -51,7 +51,7 @@ int ipc_device_detect(void)
     char *line, *p, *c;
     int index = -1;
     int fd = -1;
-    int length;
+    size_t length;
     int rc;
     int i;
 
@@ -68,8 +68,7 @@ int ipc_device_detect(void)
     if (fd < 0)
         goto error;
 
-    length = sizeof(buffer);
-    length = read(fd, &buffer, length);
+    length = read(fd, &buffer, sizeof(buffer));
 
     close(fd);
     fd = -1;
@@ -145,26 +144,22 @@ complete:
     return index;
 }
 
-struct ipc_client *ipc_client_create(int client_type)
+struct ipc_client *ipc_client_create(int type)
 {
-    struct ipc_client *client;
-    int device_index = -1;
+    struct ipc_client *client = NULL;
+    int device_index;
 
-    device_index = ipc_device_detect();
-
-    if (device_index < 0 || device_index > ipc_devices_count)
-        return NULL;
-
-    if (client_type < 0 || client_type > IPC_CLIENT_TYPE_RFS)
+    if (type < 0 || type > IPC_CLIENT_TYPE_RFS)
         return NULL;
 
-    client = (struct ipc_client *) malloc(sizeof(struct ipc_client));
-    memset(client, 0, sizeof(struct ipc_client));
+    device_index = ipc_device_detect();
+    if (device_index < 0 || device_index > ipc_devices_count)
+        goto error;
 
-    client->type = client_type;
+    client = (struct ipc_client *) calloc(1, sizeof(struct ipc_client));
+    client->type = type;
 
-    switch (client_type)
-    {
+    switch (type) {
         case IPC_CLIENT_TYPE_RFS:
             client->ops = ipc_devices[device_index].rfs_ops;
             break;
@@ -172,19 +167,27 @@ struct ipc_client *ipc_client_create(int client_type)
             client->ops = ipc_devices[device_index].fmt_ops;
             break;
         default:
-            return NULL;
+            goto error;
     }
 
     client->gprs_specs = ipc_devices[device_index].gprs_specs;
     client->nv_data_specs = ipc_devices[device_index].nv_data_specs;
 
-    // Handlers are subject to be modified
-    client->handlers = (struct ipc_handlers *) malloc(sizeof(struct ipc_handlers));
-    memset(client->handlers, 0, sizeof(struct ipc_handlers));
+    // Handlers can be modified
+    client->handlers = (struct ipc_client_handlers *) calloc(1, sizeof(struct ipc_client_handlers));
 
-    if (ipc_devices[device_index].handlers != 0)
-        memcpy(client->handlers, ipc_devices[device_index].handlers, sizeof(struct ipc_handlers));
+    if (ipc_devices[device_index].handlers != NULL)
+        memcpy(client->handlers, ipc_devices[device_index].handlers, sizeof(struct ipc_client_handlers));
 
+    goto complete;
+
+error:
+    if (client != NULL) {
+        free(client);
+        client = NULL;
+    }
+
+complete:
     return client;
 }
 
@@ -202,37 +205,11 @@ int ipc_client_destroy(struct ipc_client *client)
     return 0;
 }
 
-void ipc_client_log(struct ipc_client *client, const char *message, ...)
-{
-    char buffer[4096];
-    va_list args;
-
-    if (client == NULL || client->log_callback == NULL || message == NULL)
-        return;
-
-    va_start(args, message);
-    vsnprintf(buffer, 4096, message, args);
-    client->log_callback(client->log_data, buffer);
-    va_end(args);
-}
-
-int ipc_client_set_log_callback(struct ipc_client *client,
-    void (*log_callback)(void *log_data, const char *message), void *log_data)
-{
-    if (client == NULL)
-        return -1;
-
-    client->log_callback = log_callback;
-    client->log_data = log_data;
-
-    return 0;
-}
-
-int ipc_client_set_transport_handlers(struct ipc_client *client,
+int ipc_client_transport_handlers_register(struct ipc_client *client,
     int (*open)(void *transport_data, int type),
     int (*close)(void *transport_data),
-    int (*read)(void *transport_data, void *buffer, unsigned int length),
-    int (*write)(void *transport_data, void *buffer, unsigned int length),
+    int (*read)(void *transport_data, void *data, size_t size),
+    int (*write)(void *transport_data, const void *data, size_t size),
     int (*poll)(void *transport_data, struct timeval *timeout),
     void *transport_data)
 {
@@ -255,9 +232,8 @@ int ipc_client_set_transport_handlers(struct ipc_client *client,
     return 0;
 }
 
-int ipc_client_set_power_handlers(struct ipc_client *client,
-    int (*power_on)(void *power_data),
-    int (*power_off)(void *power_data),
+int ipc_client_power_handlers_register(struct ipc_client *client,
+    int (*power_on)(void *power_data), int (*power_off)(void *power_data),
     void *power_data)
 {
     if (client == NULL || client->handlers == NULL)
@@ -273,10 +249,9 @@ int ipc_client_set_power_handlers(struct ipc_client *client,
     return 0;
 }
 
-int ipc_client_set_gprs_handlers(struct ipc_client *client,
+int ipc_client_gprs_handlers_register(struct ipc_client *client,
     int (*gprs_activate)(void *gprs_data, int cid),
-    int (*gprs_deactivate)(void *gprs_data, int cid),
-    void *gprs_data)
+    int (*gprs_deactivate)(void *gprs_data, int cid), void *gprs_data)
 {
     if (client == NULL || client->handlers == NULL)
         return -1;
@@ -291,61 +266,70 @@ int ipc_client_set_gprs_handlers(struct ipc_client *client,
     return 0;
 }
 
-int ipc_client_bootstrap(struct ipc_client *client)
+void ipc_client_log(struct ipc_client *client, const char *message, ...)
 {
-    if (client == NULL || client->ops == NULL ||
-        client->ops->bootstrap == NULL)
-        return -1;
+    char buffer[4096];
+    va_list args;
+
+    if (client == NULL || client->log_callback == NULL || message == NULL)
+        return;
 
-    return client->ops->bootstrap(client);
+    va_start(args, message);
+    vsnprintf((char *) &buffer, sizeof(buffer), message, args);
+    client->log_callback(client->log_data, buffer);
+    va_end(args);
 }
 
-int ipc_client_send(struct ipc_client *client, const unsigned short command,
-    const char type, unsigned char *data, const int length, unsigned char mseq)
+int ipc_client_log_callback_register(struct ipc_client *client,
+    void (*log_callback)(void *log_data, const char *message), void *log_data)
 {
-    struct ipc_message_info request;
-
-    if (client == NULL || client->ops == NULL || client->ops->send == NULL)
+    if (client == NULL)
         return -1;
 
-    request.mseq = mseq;
-    request.aseq = 0xff;
-    request.group = IPC_GROUP(command);
-    request.index = IPC_INDEX(command);
-    request.type = type;
-    request.length = length;
-    request.data = data;
+    client->log_callback = log_callback;
+    client->log_data = log_data;
 
-    return client->ops->send(client, &request);
+    return 0;
 }
 
-int ipc_client_recv(struct ipc_client *client,
-    struct ipc_message_info *response)
+int ipc_client_boot(struct ipc_client *client)
 {
-    if (client == NULL || client->ops == NULL || client->ops->recv == NULL)
+    if (client == NULL || client->ops == NULL || client->ops->boot == NULL)
         return -1;
 
-    return client->ops->recv(client, response);
+    return client->ops->boot(client);
 }
 
-void ipc_client_response_free(struct ipc_client *client,
-    struct ipc_message_info *response)
+int ipc_client_send(struct ipc_client *client, unsigned char mseq,
+    unsigned short command, unsigned char type, const void *data, size_t size)
 {
-    if (response == NULL)
-        return;
+    struct ipc_message message;
 
-    if (response->data != NULL && response->length > 0) {
-        free(response->data);
-        response->data = NULL;
-    }
+    if (client == NULL || client->ops == NULL || client->ops->send == NULL)
+        return -1;
+
+    memset(&message, 0, sizeof(message));
+    message.mseq = mseq;
+    message.aseq = 0xff;
+    message.command = command;
+    message.type = type;
+    message.data = (void *) data;
+    message.size = size;
+
+    return client->ops->send(client, &message);
+}
+
+int ipc_client_recv(struct ipc_client *client, struct ipc_message *message)
+{
+    if (client == NULL || client->ops == NULL || client->ops->recv == NULL || message == NULL)
+        return -1;
 
-    memset(response, 0, sizeof(struct ipc_message_info));
+    return client->ops->recv(client, message);
 }
 
 int ipc_client_open(struct ipc_client *client)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->open == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->open == NULL)
         return -1;
 
     return client->handlers->open(client->handlers->transport_data, client->type);
@@ -353,8 +337,7 @@ int ipc_client_open(struct ipc_client *client)
 
 int ipc_client_close(struct ipc_client *client)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->close == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->close == NULL)
         return -1;
 
     return client->handlers->close(client->handlers->transport_data);
@@ -362,8 +345,7 @@ int ipc_client_close(struct ipc_client *client)
 
 int ipc_client_poll(struct ipc_client *client, struct timeval *timeout)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->poll == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->poll == NULL)
         return -1;
 
     return client->handlers->poll(client->handlers->transport_data, timeout);
@@ -371,8 +353,7 @@ int ipc_client_poll(struct ipc_client *client, struct timeval *timeout)
 
 int ipc_client_power_on(struct ipc_client *client)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->power_on == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->power_on == NULL)
         return -1;
 
     return client->handlers->power_on(client->handlers->power_data);
@@ -380,8 +361,7 @@ int ipc_client_power_on(struct ipc_client *client)
 
 int ipc_client_power_off(struct ipc_client *client)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->power_off == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->power_off == NULL)
         return -1;
 
     return client->handlers->power_off(client->handlers->power_data);
@@ -389,8 +369,7 @@ int ipc_client_power_off(struct ipc_client *client)
 
 int ipc_client_gprs_activate(struct ipc_client *client, int cid)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->gprs_activate == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->gprs_activate == NULL)
         return -1;
 
     return client->handlers->gprs_activate(client->handlers->gprs_data, cid);
@@ -398,8 +377,7 @@ int ipc_client_gprs_activate(struct ipc_client *client, int cid)
 
 int ipc_client_gprs_deactivate(struct ipc_client *client, int cid)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->gprs_deactivate == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->gprs_deactivate == NULL)
         return -1;
 
     return client->handlers->gprs_deactivate(client->handlers->gprs_data, cid);
@@ -407,28 +385,23 @@ int ipc_client_gprs_deactivate(struct ipc_client *client, int cid)
 
 int ipc_client_data_create(struct ipc_client *client)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->data_create == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->data_create == NULL)
         return -1;
 
-    return client->handlers->data_create(&client->handlers->transport_data,
-        &client->handlers->power_data, &client->handlers->power_data);
+    return client->handlers->data_create(&client->handlers->transport_data, &client->handlers->power_data, &client->handlers->power_data);
 }
 
 int ipc_client_data_destroy(struct ipc_client *client)
 {
-    if (client == NULL || client->handlers == NULL ||
-        client->handlers->data_destroy == NULL)
+    if (client == NULL || client->handlers == NULL || client->handlers->data_destroy == NULL)
         return -1;
 
-    return client->handlers->data_destroy(client->handlers->transport_data,
-        client->handlers->power_data, client->handlers->power_data);
+    return client->handlers->data_destroy(client->handlers->transport_data, client->handlers->power_data, client->handlers->power_data);
 }
 
 char *ipc_client_gprs_get_iface(struct ipc_client *client, int cid)
 {
-    if (client == NULL || client->gprs_specs == NULL ||
-        client->gprs_specs->gprs_get_iface == NULL)
+    if (client == NULL || client->gprs_specs == NULL || client->gprs_specs->gprs_get_iface == NULL)
         return NULL;
 
     return client->gprs_specs->gprs_get_iface(cid);
@@ -437,8 +410,7 @@ char *ipc_client_gprs_get_iface(struct ipc_client *client, int cid)
 int ipc_client_gprs_get_capabilities(struct ipc_client *client,
     struct ipc_client_gprs_capabilities *capabilities)
 {
-    if (client == NULL || client->gprs_specs == NULL ||
-        client->gprs_specs->gprs_get_capabilities == NULL)
+    if (client == NULL || client->gprs_specs == NULL || client->gprs_specs->gprs_get_capabilities == NULL)
         return -1;
 
     return client->gprs_specs->gprs_get_capabilities(capabilities);
@@ -446,9 +418,7 @@ int ipc_client_gprs_get_capabilities(struct ipc_client *client,
 
 char *ipc_client_nv_data_path(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_path == NULL)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_path == NULL)
         return NULL;
 
     return client->nv_data_specs->nv_data_path;
@@ -456,9 +426,7 @@ char *ipc_client_nv_data_path(struct ipc_client *client)
 
 char *ipc_client_nv_data_md5_path(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_md5_path == NULL)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_md5_path == NULL)
         return NULL;
 
     return client->nv_data_specs->nv_data_md5_path;
@@ -466,9 +434,7 @@ char *ipc_client_nv_data_md5_path(struct ipc_client *client)
 
 char *ipc_client_nv_data_backup_path(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_backup_path == NULL)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_backup_path == NULL)
         return NULL;
 
     return client->nv_data_specs->nv_data_backup_path;
@@ -476,9 +442,7 @@ char *ipc_client_nv_data_backup_path(struct ipc_client *client)
 
 char *ipc_client_nv_data_backup_md5_path(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_backup_md5_path == NULL)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_backup_md5_path == NULL)
         return NULL;
 
     return client->nv_data_specs->nv_data_backup_md5_path;
@@ -486,9 +450,7 @@ char *ipc_client_nv_data_backup_md5_path(struct ipc_client *client)
 
 char *ipc_client_nv_data_secret(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_secret == NULL)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_secret == NULL)
         return NULL;
 
     return client->nv_data_specs->nv_data_secret;
@@ -496,9 +458,7 @@ char *ipc_client_nv_data_secret(struct ipc_client *client)
 
 size_t ipc_client_nv_data_size(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_size == 0)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_size == 0)
         return 0;
 
     return client->nv_data_specs->nv_data_size;
@@ -506,9 +466,7 @@ size_t ipc_client_nv_data_size(struct ipc_client *client)
 
 size_t ipc_client_nv_data_chunk_size(struct ipc_client *client)
 {
-    if (client == NULL ||
-        client->nv_data_specs == NULL ||
-        client->nv_data_specs->nv_data_chunk_size == 0)
+    if (client == NULL || client->nv_data_specs == NULL || client->nv_data_specs->nv_data_chunk_size == 0)
         return 0;
 
     return client->nv_data_specs->nv_data_chunk_size;
index 5870cdd..b50303e 100644 (file)
@@ -2,6 +2,7 @@
  * This file is part of libsamsung-ipc.
  *
  * Copyright (C) 2011 Simon Busch <morphis@gravedo.de>
+ * Copyright (C) 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
  * Structures
  */
 
-struct ipc_ops {
-    int (*bootstrap)(struct ipc_client *client);
-    int (*send)(struct ipc_client *client, struct ipc_message_info *);
-    int (*recv)(struct ipc_client *client, struct ipc_message_info *);
+struct ipc_client_ops {
+    int (*boot)(struct ipc_client *client);
+    int (*send)(struct ipc_client *client, struct ipc_message *message);
+    int (*recv)(struct ipc_client *client, struct ipc_message *message);
 };
 
-struct ipc_handlers {
+struct ipc_client_handlers {
     /* Transport handlers */
     int (*open)(void *transport_data, int type);
     int (*close)(void *transport_data);
 
-    int (*read)(void *transport_data, void *buffer, unsigned int length);
-    int (*write)(void *transport_data, void *buffer, unsigned int length);
+    int (*read)(void *transport_data, void *buffer, size_t length);
+    int (*write)(void *transport_data, const void *buffer, size_t length);
     int (*poll)(void *transport_data, struct timeval *timeout);
 
     void *transport_data;
@@ -63,12 +64,12 @@ struct ipc_handlers {
     int (*data_destroy)(void *transport_data, void *power_data, void *gprs_data);
 };
 
-struct ipc_gprs_specs {
+struct ipc_client_gprs_specs {
     char *(*gprs_get_iface)(int cid);
     int (*gprs_get_capabilities)(struct ipc_client_gprs_capabilities *capabilities);
 };
 
-struct ipc_nv_data_specs {
+struct ipc_client_nv_data_specs {
     char *nv_data_path;
     char *nv_data_md5_path;
     char *nv_data_backup_path;
@@ -84,10 +85,10 @@ struct ipc_client {
     void (*log_callback)(void *log_data, const char *message);
     void *log_data;
 
-    struct ipc_ops *ops;
-    struct ipc_handlers *handlers;
-    struct ipc_gprs_specs *gprs_specs;
-    struct ipc_nv_data_specs *nv_data_specs;
+    struct ipc_client_ops *ops;
+    struct ipc_client_handlers *handlers;
+    struct ipc_client_gprs_specs *gprs_specs;
+    struct ipc_client_nv_data_specs *nv_data_specs;
 };
 
 /*
index dec61c2..ee97f77 100644 (file)
@@ -28,111 +28,111 @@ struct ipc_device_desc ipc_devices[] = {
         .name = "crespo",
         .board_name = "herring",
         .kernel_version = "2.6.35",
-        .fmt_ops = &crespo_ipc_fmt_ops,
-        .rfs_ops = &crespo_ipc_rfs_ops,
-        .handlers = &crespo_ipc_handlers,
-        .gprs_specs = &crespo_ipc_gprs_specs_single,
-        .nv_data_specs = &crespo_ipc_nv_data_specs,
+        .fmt_ops = &crespo_fmt_ops,
+        .rfs_ops = &crespo_rfs_ops,
+        .handlers = &crespo_handlers,
+        .gprs_specs = &crespo_gprs_specs_single,
+        .nv_data_specs = &crespo_nv_data_specs,
     },
     {
         .name = "crespo",
         .board_name = "herring",
         .kernel_version = "3.0",
-        .fmt_ops = &crespo_ipc_fmt_ops,
-        .rfs_ops = &crespo_ipc_rfs_ops,
-        .handlers = &crespo_ipc_handlers,
-        .gprs_specs = &crespo_ipc_gprs_specs,
-        .nv_data_specs = &crespo_ipc_nv_data_specs,
+        .fmt_ops = &crespo_fmt_ops,
+        .rfs_ops = &crespo_rfs_ops,
+        .handlers = &crespo_handlers,
+        .gprs_specs = &crespo_gprs_specs,
+        .nv_data_specs = &crespo_nv_data_specs,
     },
     {
         .name = "aries",
         .board_name = "aries",
         .kernel_version = NULL,
-        .fmt_ops = &aries_ipc_fmt_ops,
-        .rfs_ops = &aries_ipc_rfs_ops,
-        .handlers = &aries_ipc_handlers,
-        .gprs_specs = &aries_ipc_gprs_specs,
-        .nv_data_specs = &aries_ipc_nv_data_specs,
+        .fmt_ops = &aries_fmt_ops,
+        .rfs_ops = &aries_rfs_ops,
+        .handlers = &aries_handlers,
+        .gprs_specs = &aries_gprs_specs,
+        .nv_data_specs = &aries_nv_data_specs,
     },
     {
         .name = "aries",
         .board_name = "gt-p1000",
         .kernel_version = NULL,
-        .fmt_ops = &aries_ipc_fmt_ops,
-        .rfs_ops = &aries_ipc_rfs_ops,
-        .handlers = &aries_ipc_handlers,
-        .gprs_specs = &aries_ipc_gprs_specs,
-        .nv_data_specs = &aries_ipc_nv_data_specs,
+        .fmt_ops = &aries_fmt_ops,
+        .rfs_ops = &aries_rfs_ops,
+        .handlers = &aries_handlers,
+        .gprs_specs = &aries_gprs_specs,
+        .nv_data_specs = &aries_nv_data_specs,
     },
     {
         .name = "galaxys2",
         .board_name = "smdk4210",
         .kernel_version = NULL,
-        .fmt_ops = &galaxys2_ipc_fmt_ops,
-        .rfs_ops = &galaxys2_ipc_rfs_ops,
-        .handlers = &galaxys2_ipc_handlers,
-        .gprs_specs = &galaxys2_ipc_gprs_specs,
-        .nv_data_specs = &galaxys2_ipc_nv_data_specs,
+        .fmt_ops = &galaxys2_fmt_ops,
+        .rfs_ops = &galaxys2_rfs_ops,
+        .handlers = &galaxys2_handlers,
+        .gprs_specs = &galaxys2_gprs_specs,
+        .nv_data_specs = &galaxys2_nv_data_specs,
     },
     {
         .name = "galaxys2",
         .board_name = "i9100",
         .kernel_version = NULL,
-        .fmt_ops = &galaxys2_ipc_fmt_ops,
-        .rfs_ops = &galaxys2_ipc_rfs_ops,
-        .handlers = &galaxys2_ipc_handlers,
-        .gprs_specs = &galaxys2_ipc_gprs_specs,
-        .nv_data_specs = &galaxys2_ipc_nv_data_specs,
+        .fmt_ops = &galaxys2_fmt_ops,
+        .rfs_ops = &galaxys2_rfs_ops,
+        .handlers = &galaxys2_handlers,
+        .gprs_specs = &galaxys2_gprs_specs,
+        .nv_data_specs = &galaxys2_nv_data_specs,
     },
     {
         .name = "maguro",
         .board_name = "tuna",
         .kernel_version = NULL,
-        .fmt_ops = &maguro_ipc_fmt_ops,
-        .rfs_ops = &maguro_ipc_rfs_ops,
-        .handlers = &maguro_ipc_handlers,
-        .gprs_specs = &maguro_ipc_gprs_specs,
-        .nv_data_specs = &maguro_ipc_nv_data_specs,
+        .fmt_ops = &maguro_fmt_ops,
+        .rfs_ops = &maguro_rfs_ops,
+        .handlers = &maguro_handlers,
+        .gprs_specs = &maguro_gprs_specs,
+        .nv_data_specs = &maguro_nv_data_specs,
     },
     {
         .name = "piranha",
         .board_name = "espresso10",
         .kernel_version = NULL,
-        .fmt_ops = &piranha_ipc_fmt_ops,
-        .rfs_ops = &piranha_ipc_rfs_ops,
-        .handlers = &piranha_ipc_handlers,
-        .gprs_specs = &piranha_ipc_gprs_specs,
-        .nv_data_specs = &piranha_ipc_nv_data_specs,
+        .fmt_ops = &piranha_fmt_ops,
+        .rfs_ops = &piranha_rfs_ops,
+        .handlers = &piranha_handlers,
+        .gprs_specs = &piranha_gprs_specs,
+        .nv_data_specs = &piranha_nv_data_specs,
     },
     {
         .name = "piranha",
         .board_name = "espresso",
         .kernel_version = NULL,
-        .fmt_ops = &piranha_ipc_fmt_ops,
-        .rfs_ops = &piranha_ipc_rfs_ops,
-        .handlers = &piranha_ipc_handlers,
-        .gprs_specs = &piranha_ipc_gprs_specs,
-        .nv_data_specs = &piranha_ipc_nv_data_specs,
+        .fmt_ops = &piranha_fmt_ops,
+        .rfs_ops = &piranha_rfs_ops,
+        .handlers = &piranha_handlers,
+        .gprs_specs = &piranha_gprs_specs,
+        .nv_data_specs = &piranha_nv_data_specs,
     },
     {
         .name = "i9300",
         .board_name = "smdk4x12",
         .kernel_version = NULL,
-        .fmt_ops = &i9300_ipc_fmt_ops,
-        .rfs_ops = &i9300_ipc_rfs_ops,
-        .handlers = &i9300_ipc_handlers,
-        .gprs_specs = &i9300_ipc_gprs_specs,
-        .nv_data_specs = &i9300_ipc_nv_data_specs,
+        .fmt_ops = &i9300_fmt_ops,
+        .rfs_ops = &i9300_rfs_ops,
+        .handlers = &i9300_handlers,
+        .gprs_specs = &i9300_gprs_specs,
+        .nv_data_specs = &i9300_nv_data_specs,
     },
     {
         .name = "n7100",
         .board_name = "smdk4x12",
         .kernel_version = NULL,
-        .fmt_ops = &n7100_ipc_fmt_ops,
-        .rfs_ops = &n7100_ipc_rfs_ops,
-        .handlers = &n7100_ipc_handlers,
-        .gprs_specs = &n7100_ipc_gprs_specs,
-        .nv_data_specs = &n7100_ipc_nv_data_specs,
+        .fmt_ops = &n7100_fmt_ops,
+        .rfs_ops = &n7100_rfs_ops,
+        .handlers = &n7100_handlers,
+        .gprs_specs = &n7100_gprs_specs,
+        .nv_data_specs = &n7100_nv_data_specs,
     },
 };
 
index b93de60..36058c9 100644 (file)
 
 #include <samsung-ipc.h>
 
-#include "devices/crespo/crespo_ipc.h"
-#include "devices/aries/aries_ipc.h"
-#include "devices/galaxys2/galaxys2_ipc.h"
-#include "devices/maguro/maguro_ipc.h"
-#include "devices/piranha/piranha_ipc.h"
-#include "devices/i9300/i9300_ipc.h"
-#include "devices/n7100/n7100_ipc.h"
+#include "devices/crespo/crespo.h"
+#include "devices/aries/aries.h"
+#include "devices/galaxys2/galaxys2.h"
+#include "devices/maguro/maguro.h"
+#include "devices/piranha/piranha.h"
+#include "devices/i9300/i9300.h"
+#include "devices/n7100/n7100.h"
 
 #ifndef __IPC_DEVICES_H__
 #define __IPC_DEVICES_H__
@@ -36,11 +36,11 @@ struct ipc_device_desc {
     char *board_name;
     char *kernel_version;
 
-    struct ipc_ops *fmt_ops;
-    struct ipc_ops *rfs_ops;
-    struct ipc_handlers *handlers;
-    struct ipc_gprs_specs *gprs_specs;
-    struct ipc_nv_data_specs *nv_data_specs;
+    struct ipc_client_ops *fmt_ops;
+    struct ipc_client_ops *rfs_ops;
+    struct ipc_client_handlers *handlers;
+    struct ipc_client_gprs_specs *gprs_specs;
+    struct ipc_client_nv_data_specs *nv_data_specs;
 };
 
 extern struct ipc_device_desc ipc_devices[];
similarity index 73%
rename from samsung-ipc/ipc_util.c
rename to samsung-ipc/ipc_utils.c
index 3cbb5af..54a4fd7 100644 (file)
@@ -2,7 +2,7 @@
  * This file is part of libsamsung-ipc.
  *
  * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@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
 #include <samsung-ipc.h>
 #include "ipc.h"
 
-/* Log utils */
-const char *ipc_response_type_to_str(int type)
+const char *ipc_request_type_string(unsigned char type)
 {
-    switch (type) {
-        case IPC_TYPE_INDI:
-            return "INDI";
-        case IPC_TYPE_RESP:
-            return "RESP";
-        case IPC_TYPE_NOTI:
-            return "NOTI";
-        default:
-            return "UNKNOWN";
-    }
-}
+    static char type_string[5] = { 0 };
 
-const char *ipc_request_type_to_str(int type)
-{
     switch (type) {
         case IPC_TYPE_EXEC:
-            return "EXEC";
+            return "IPC_TYPE_EXEC";
         case IPC_TYPE_GET:
-            return "GET";
+            return "IPC_TYPE_GET";
         case IPC_TYPE_SET:
-            return "SET";
+            return "IPC_TYPE_SET";
         case IPC_TYPE_CFRM:
-            return "CFRM";
+            return "IPC_TYPE_CFRM";
         case IPC_TYPE_EVENT:
-            return "EVENT";
+            return "IPC_TYPE_EVENT";
         default:
-            return "UNKNOWN";
+            snprintf((char *) &type_string, sizeof(type_string), "0x%02x", type);
+            return type_string;
     }
 }
 
-const char *ipc_command_to_str(int command)
+const char *ipc_response_type_string(unsigned char type)
 {
+    static char type_string[5] = { 0 };
+
+    switch (type) {
+        case IPC_TYPE_INDI:
+            return "IPC_TYPE_INDI";
+        case IPC_TYPE_RESP:
+            return "IPC_TYPE_RESP";
+        case IPC_TYPE_NOTI:
+            return "IPC_TYPE_NOTI";
+        default:
+            snprintf((char *) &type_string, sizeof(type_string), "0x%02x", type);
+            return type_string;
+    }
+}
+
+const char *ipc_command_string(unsigned short command)
+{
+    static char command_string[7] = { 0 };
+
     switch (command) {
         case IPC_PWR_PHONE_PWR_UP:
             return "IPC_PWR_PHONE_PWR_UP";
@@ -333,11 +340,12 @@ const char *ipc_command_to_str(int command)
         case IPC_GEN_PHONE_RES:
             return "IPC_GEN_PHONE_RES";
         default:
-            return "UNKNOWN";
+            snprintf((char *) &command_string, sizeof(command_string), "0x%04x", command);
+            return command_string;
     }
 }
 
-void ipc_client_hex_dump(struct ipc_client *client, void *data, int size)
+void ipc_hex_dump(struct ipc_client *client, const void *data, size_t size)
 {
     /* dumps size bytes of *data to stdout. Looks like:
      * [0000] 75 6E 6B 6E 6F 77 6E 20
@@ -345,9 +353,9 @@ void ipc_client_hex_dump(struct ipc_client *client, void *data, int size)
      * (in a single line of course)
      */
 
-    unsigned char *p = data;
+    unsigned char *p = (unsigned char *) data;
     unsigned char c;
-    int n;
+    size_t n;
     char bytestr[4] = {0};
     char addrstr[10] = {0};
     char hexstr[ 16*3 + 5] = {0};
@@ -393,124 +401,131 @@ void ipc_client_hex_dump(struct ipc_client *client, void *data, int size)
     }
 }
 
-void ipc_client_log_recv(struct ipc_client *client,
-    struct ipc_message_info *response, const char *prefix)
+void ipc_client_log_recv(struct ipc_client *client, struct ipc_message *message,
+    const char *prefix)
 {
+    if (client == NULL || message == NULL || prefix == NULL)
+        return;
+
     switch (client->type) {
         case IPC_CLIENT_TYPE_FMT:
-            ipc_client_log(client, "%s: RECV FMT!", prefix);
-            ipc_client_log(client, "%s: Response: aseq=0x%02x, command=%s, type=%s, length=%d",
-                prefix, response->aseq, ipc_command_to_str(IPC_COMMAND(response)), ipc_response_type_to_str(response->type), response->length);
+            ipc_client_log(client, "%s: Received FMT message", prefix);
+            ipc_client_log(client, "%s: Message: aseq=0x%02x, command=%s, type=%s, size=%d", prefix, message->aseq, ipc_command_string(message->command), ipc_response_type_string(message->type), message->size);
 #ifdef DEBUG
-            if (response->length > 0) {
-                ipc_client_log(client, "==== FMT DATA DUMP ====");
-                ipc_client_hex_dump(client, (void *) response->data,
-                    response->length > 0x100 ? 0x100 : response->length);
-                ipc_client_log(client, "=======================");
+            if (message->size > 0) {
+                ipc_client_log(client, "=============================== FMT data dump ================================");
+                ipc_hex_dump(client, (void *) message->data, message->size > 0x100 ? 0x100 : message->size);
+                ipc_client_log(client, "==============================================================================");
             }
 #endif
             break;
         case IPC_CLIENT_TYPE_RFS:
-            ipc_client_log(client, "%s: RECV RFS!", prefix);
-            ipc_client_log(client, "%s: Response: aseq=0x%02x, command=%s, length=%d",
-                prefix, response->aseq, ipc_command_to_str(IPC_COMMAND(response)), response->length);
+            ipc_client_log(client, "%s: Received RFS message", prefix);
+            ipc_client_log(client, "%s: Message: aseq=0x%02x, command=%s, size=%d", prefix, message->aseq, ipc_command_string(message->command), message->size);
 #ifdef DEBUG
-            if (response->length > 0) {
-                ipc_client_log(client, "==== RFS DATA DUMP ====");
-                ipc_client_hex_dump(client, (void *) response->data,
-                    response->length > 0x100 ? 0x100 : response->length);
-                ipc_client_log(client, "=======================");
+            if (message->size > 0) {
+                ipc_client_log(client, "=============================== RFS data dump ================================");
+                ipc_hex_dump(client, (void *) message->data, message->size > 0x100 ? 0x100 : message->size);
+                ipc_client_log(client, "==============================================================================");
             }
 #endif
             break;
     }
 }
 
-void ipc_client_log_send(struct ipc_client *client,
-    struct ipc_message_info *request, const char *prefix)
+void ipc_client_log_send(struct ipc_client *client, struct ipc_message *message,
+    const char *prefix)
 {
+    if (client == NULL || message == NULL || prefix == NULL)
+        return;
+
     switch (client->type) {
         case IPC_CLIENT_TYPE_FMT:
-            ipc_client_log(client, "%s: SEND FMT!", prefix);
-            ipc_client_log(client, "%s: Request: mseq=0x%02x, command=%s, type=%s, length=%d",
-                prefix, request->mseq, ipc_command_to_str(IPC_COMMAND(request)), ipc_request_type_to_str(request->type), request->length);
+            ipc_client_log(client, "%s: Sent FMT message", prefix);
+            ipc_client_log(client, "%s: Message: mseq=0x%02x, command=%s, type=%s, size=%d", prefix, message->mseq, ipc_command_string(message->command), ipc_response_type_string(message->type), message->size);
 #ifdef DEBUG
-            if (request->length > 0) {
-                ipc_client_log(client, "==== FMT DATA DUMP ====");
-                ipc_client_hex_dump(client, (void *) request->data,
-                    request->length > 0x100 ? 0x100 : request->length);
-                ipc_client_log(client, "=======================");
+            if (message->size > 0) {
+                ipc_client_log(client, "=============================== FMT data dump ================================");
+                ipc_hex_dump(client, (void *) message->data, message->size > 0x100 ? 0x100 : message->size);
+                ipc_client_log(client, "==============================================================================");
             }
 #endif
             break;
         case IPC_CLIENT_TYPE_RFS:
-            ipc_client_log(client, "%s: SEND RFS!", prefix);
-            ipc_client_log(client, "%s: Request: mseq=0x%02x, command=%s, length=%d",
-                prefix, request->mseq, ipc_command_to_str(IPC_COMMAND(request)), request->length);
+            ipc_client_log(client, "%s: Sent RFS message", prefix);
+            ipc_client_log(client, "%s: Message: mseq=0x%02x, command=%s, size=%d", prefix, message->mseq, ipc_command_string(message->command), message->size);
 #ifdef DEBUG
-            if (request->length > 0) {
-                ipc_client_log(client, "==== RFS DATA DUMP ====");
-                ipc_client_hex_dump(client, (void *) request->data,
-                    request->length > 0x100 ? 0x100 : request->length);
-                ipc_client_log(client, "=======================");
+            if (message->size > 0) {
+                ipc_client_log(client, "=============================== RFS data dump ================================");
+                ipc_hex_dump(client, (void *) message->data, message->size > 0x100 ? 0x100 : message->size);
+                ipc_client_log(client, "==============================================================================");
             }
 #endif
             break;
     }
 }
 
-void ipc_fmt_header_fill(struct ipc_fmt_header *header, struct ipc_message_info *message)
+int ipc_fmt_header_setup(struct ipc_fmt_header *header,
+    const struct ipc_message *message)
 {
     if (header == NULL || message == NULL)
-        return;
+        return -1;
 
     memset(header, 0, sizeof(struct ipc_fmt_header));
     header->mseq = message->mseq;
     header->aseq = message->aseq;
-    header->group = message->group;
-    header->index = message->index;
+    header->group = IPC_GROUP(message->command);
+    header->index = IPC_INDEX(message->command);
     header->type = message->type;
-    header->length = message->length + sizeof(struct ipc_fmt_header);
+    header->length = message->size + sizeof(struct ipc_fmt_header);
+
+    return 0;
 }
 
-void ipc_fmt_message_fill(struct ipc_fmt_header *header, struct ipc_message_info *message)
+int ipc_fmt_message_setup(const struct ipc_fmt_header *header,
+    struct ipc_message *message)
 {
     if (header == NULL || message == NULL)
-        return;
+        return -1;
 
-    memset(message, 0, sizeof(struct ipc_message_info));
+    memset(message, 0, sizeof(struct ipc_message));
     message->mseq = header->mseq;
     message->aseq = header->aseq;
-    message->group = header->group;
-    message->index = header->index;
+    message->command = IPC_COMMAND(header->group, header->index);
     message->type = header->type;
-    message->cmd = IPC_COMMAND(message);
-    message->length = 0;
     message->data = NULL;
+    message->size = 0;
+
+    return 0;
 }
 
-void ipc_rfs_header_fill(struct ipc_rfs_header *header, struct ipc_message_info *message)
+int ipc_rfs_header_setup(struct ipc_rfs_header *header,
+    const struct ipc_message *message)
 {
     if (header == NULL || message == NULL)
-        return;
+        return -1;
 
     memset(header, 0, sizeof(struct ipc_rfs_header));
     header->id = message->mseq;
-    header->index = message->index;
-    header->length = message->length + sizeof(struct ipc_rfs_header);
+    header->index = IPC_INDEX(message->command);
+    header->length = message->size + sizeof(struct ipc_rfs_header);
+
+    return 0;
 }
 
-void ipc_rfs_message_fill(struct ipc_rfs_header *header, struct ipc_message_info *message)
+int ipc_rfs_message_setup(const struct ipc_rfs_header *header,
+    struct ipc_message *message)
 {
     if (header == NULL || message == NULL)
-        return;
+        return -1;
 
-    memset(message, 0, sizeof(struct ipc_message_info));
+    memset(message, 0, sizeof(struct ipc_message));
     message->aseq = header->id;
-    message->group = IPC_GROUP_RFS;
-    message->index = header->index;
-    message->length = 0;
+    message->command = IPC_COMMAND(IPC_GROUP_RFS, header->index);
     message->data = NULL;
+    message->size = 0;
+
+    return 0;
 }
 
 // vim:ts=4:sw=4:expandtab
index 0edfa8d..91d0dc9 100644 (file)
@@ -62,25 +62,25 @@ int seq_get(void)
 void modem_snd_no_mic_mute(struct ipc_client *client)
 {
     uint8_t data = 0;
-    ipc_client_send(client, IPC_SND_MIC_MUTE_CTRL, IPC_TYPE_SET, (void *) &data, 1, seq_get());
+    ipc_client_send(client, seq_get(), IPC_SND_MIC_MUTE_CTRL, IPC_TYPE_SET, (void *) &data, 1);
 }
 
 void modem_snd_clock_ctrl(struct ipc_client *client)
 {
     uint8_t data = 0x01;
-    ipc_client_send(client, IPC_SND_CLOCK_CTRL, IPC_TYPE_EXEC, (void *) &data, 1, seq_get());
+    ipc_client_send(client, seq_get(), IPC_SND_CLOCK_CTRL, IPC_TYPE_EXEC, (void *) &data, 1);
 }
 
 void modem_snd_spkr_volume_ctrl(struct ipc_client *client)
 {
     uint16_t data = 0x0411;
-    ipc_client_send(client, IPC_SND_SPKR_VOLUME_CTRL, IPC_TYPE_SET, (void *) &data, 2, seq_get());
+    ipc_client_send(client, seq_get(), IPC_SND_SPKR_VOLUME_CTRL, IPC_TYPE_SET, (void *) &data, 2);
 }
 
 void modem_snd_audio_path_ctrl(struct ipc_client *client)
 {
     uint8_t data = 0x01;
-    ipc_client_send(client, IPC_SND_AUDIO_PATH_CTRL, IPC_TYPE_SET, (void *) &data, 1, seq_get());
+    ipc_client_send(client, seq_get(), IPC_SND_AUDIO_PATH_CTRL, IPC_TYPE_SET, (void *) &data, 1);
 }
 
 
@@ -99,7 +99,7 @@ void modem_exec_call_out(struct ipc_client *client, char *num)
     call_out.prefix=IPC_CALL_PREFIX_NONE; //0x21;//IPC_CALL_PREFIX_NONE;
     memcpy(call_out.number, num, call_out.number_length);
 
-    ipc_client_send(client, IPC_CALL_OUTGOING, IPC_TYPE_EXEC, (void *) &call_out, sizeof(struct ipc_call_outgoing_data), seq_get());
+    ipc_client_send(client, seq_get(), IPC_CALL_OUTGOING, IPC_TYPE_EXEC, (void *) &call_out, sizeof(struct ipc_call_outgoing_data));
 
     out_call = 1;
 
@@ -112,14 +112,14 @@ void modem_exec_call_answer(struct ipc_client *client)
 {
     modem_snd_clock_ctrl(client);
 
-    ipc_client_send(client, IPC_CALL_ANSWER, IPC_TYPE_EXEC, NULL, 0, seq_get());
+    ipc_client_send(client, seq_get(), IPC_CALL_ANSWER, IPC_TYPE_EXEC, NULL, 0);
 
     modem_snd_no_mic_mute(client);
 }
 
 void modem_get_call_list(struct ipc_client *client)
 {
-    ipc_client_send(client, IPC_CALL_LIST, IPC_TYPE_GET, NULL, 0, seq_get());
+    ipc_client_send(client, seq_get(), IPC_CALL_LIST, IPC_TYPE_GET, NULL, 0);
 
     modem_snd_no_mic_mute(client);
 }
@@ -127,12 +127,12 @@ void modem_get_call_list(struct ipc_client *client)
 void modem_exec_power_normal(struct ipc_client *client)
 {
     uint16_t data = 0x0202;
-    ipc_client_send(client, IPC_PWR_PHONE_STATE, IPC_TYPE_EXEC, (void *) &data, sizeof(data), seq_get());
+    ipc_client_send(client, seq_get(), IPC_PWR_PHONE_STATE, IPC_TYPE_EXEC, (void *) &data, sizeof(data));
 }
 
 void modem_set_sms_device_ready(struct ipc_client *client)
 {
-    ipc_client_send(client, IPC_SMS_DEVICE_READY, IPC_TYPE_SET, NULL, 0, seq_get());
+    ipc_client_send(client, seq_get(), IPC_SMS_DEVICE_READY, IPC_TYPE_SET, NULL, 0);
 }
 
 void modem_set_sec_pin_status(struct ipc_client *client, char *pin1, char *pin2)
@@ -142,17 +142,17 @@ void modem_set_sec_pin_status(struct ipc_client *client, char *pin1, char *pin2)
     printf("[I] Sending PIN1 unlock request\n");
 
     ipc_sec_pin_status_setup(&pin_status, IPC_SEC_PIN_TYPE_PIN1, pin1, pin2);
-    ipc_client_send(client, IPC_SEC_PIN_STATUS, IPC_TYPE_SET, (void *) &pin_status, sizeof(pin_status), seq_get());
+    ipc_client_send(client, seq_get(), IPC_SEC_PIN_STATUS, IPC_TYPE_SET, (void *) &pin_status, sizeof(pin_status));
 }
 
-void modem_response_sec(struct ipc_client *client, struct ipc_message_info *resp)
+void modem_response_sec(struct ipc_client *client, struct ipc_message *resp)
 {
     struct ipc_sec_pin_status_response_data *sim_status;
     unsigned char type;
     int status;
     char *data;
 
-    switch(IPC_COMMAND(resp))
+    switch(resp->command)
     {
         case IPC_SEC_PIN_STATUS :
             sim_status = (struct ipc_sec_pin_status_response_data *)resp->data;
@@ -208,9 +208,9 @@ void modem_response_sec(struct ipc_client *client, struct ipc_message_info *resp
     }
 }
 
-void modem_response_sms(struct ipc_client *client, struct ipc_message_info *resp)
+void modem_response_sms(struct ipc_client *client, struct ipc_message *resp)
 {
-    switch(IPC_COMMAND(resp))
+    switch(resp->command)
     {
         case IPC_SMS_DEVICE_READY:
             if(state ==  MODEM_STATE_LPM)
@@ -227,11 +227,11 @@ void modem_response_sms(struct ipc_client *client, struct ipc_message_info *resp
     }
 }
 
-void modem_response_call(struct ipc_client *client, struct ipc_message_info *resp)
+void modem_response_call(struct ipc_client *client, struct ipc_message *resp)
 {
     struct ipc_call_status_data *stat;
 
-    switch(IPC_COMMAND(resp))
+    switch(resp->command)
     {
         case IPC_CALL_LIST:
 /*
@@ -276,11 +276,11 @@ void modem_response_call(struct ipc_client *client, struct ipc_message_info *res
     }
 }
 
-void modem_response_pwr(struct ipc_client *client, struct ipc_message_info *resp)
+void modem_response_pwr(struct ipc_client *client, struct ipc_message *resp)
 {
     int state_n;
 
-    switch(IPC_COMMAND(resp))
+    switch(resp->command)
     {
         case IPC_PWR_PHONE_PWR_UP:
             printf("[2] Phone is powered up (LPM)!\n");
@@ -307,13 +307,13 @@ void modem_response_pwr(struct ipc_client *client, struct ipc_message_info *resp
     }
 }
 
-void modem_response_net(struct ipc_client *client, struct ipc_message_info *resp)
+void modem_response_net(struct ipc_client *client, struct ipc_message *resp)
 {
     struct ipc_net_regist_response_data *regi;
     struct ipc_net_plmn_entry *plmn;
     char mnc[6];
 
-    switch(IPC_COMMAND(resp))
+    switch(resp->command)
     {
         case IPC_NET_REGIST:
             regi = (struct ipc_net_regist_response_data *) resp->data;
@@ -325,7 +325,7 @@ void modem_response_net(struct ipc_client *client, struct ipc_message_info *resp
         break;
         case IPC_NET_SERVING_NETWORK:
 
-            memcpy(mnc, (char *)(resp->data + 3), 5);
+            memcpy(mnc, (char *)((char *) resp->data + 3), 5);
             mnc[5]=0;
             printf("[6] Registered with network! Got PLMN (Mobile Network Code): '%s'\n", mnc);
 /*
@@ -340,9 +340,9 @@ void modem_response_net(struct ipc_client *client, struct ipc_message_info *resp
     }
 }
 
-void modem_response_handle(struct ipc_client *client, struct ipc_message_info *resp)
+void modem_response_handle(struct ipc_client *client, struct ipc_message *resp)
 {
-    switch(resp->group)
+    switch(IPC_GROUP(resp->command))
     {
         case IPC_GROUP_NET:
             modem_response_net(client, resp);
@@ -369,7 +369,7 @@ void modem_response_handle(struct ipc_client *client, struct ipc_message_info *r
 
 int modem_read_loop(struct ipc_client *client)
 {
-    struct ipc_message_info resp;
+    struct ipc_message resp;
     int rc;
 
     memset(&resp, 0, sizeof(resp));
@@ -431,7 +431,7 @@ int modem_start(struct ipc_client *client)
     int rc = -1;
 
     ipc_client_data_create(client);
-    ipc_client_bootstrap(client);
+    ipc_client_boot(client);
 
     usleep(300);
 
@@ -458,8 +458,8 @@ void print_help()
 {
     printf("usage: modemctrl <command>\n");
     printf("commands:\n");
-    printf("\tstart                 bootstrap modem and start read loop\n");
-    printf("\tbootstrap             bootstrap modem only\n");
+    printf("\tstart                 boot modem and start read loop\n");
+    printf("\tboot                  boot modem only\n");
     printf("\tpower-on              power on the modem\n");
     printf("\tpower-off             power off the modem\n");
     printf("arguments:\n");
@@ -523,8 +523,8 @@ int main(int argc, char *argv[])
     }
 
     if (debug == 0)
-        ipc_client_set_log_callback(client_fmt, modem_log_handler_quiet, NULL);
-    else ipc_client_set_log_callback(client_fmt, modem_log_handler, NULL);
+        ipc_client_log_callback_register(client_fmt, modem_log_handler_quiet, NULL);
+    else ipc_client_log_callback_register(client_fmt, modem_log_handler, NULL);
 
     while(opt_i < argc) {
         if(strncmp(argv[optind], "power-on", 8) == 0) {
@@ -535,8 +535,8 @@ int main(int argc, char *argv[])
             if (ipc_client_power_off(client_fmt) < 0)
                 printf("[E] Something went wrong while powering modem off\n");
             goto modem_quit;
-        } else if (strncmp(argv[optind], "bootstrap", 9) == 0) {
-            ipc_client_bootstrap(client_fmt);
+        } else if (strncmp(argv[optind], "boot", 9) == 0) {
+            ipc_client_boot(client_fmt);
         } else if(strncmp(argv[optind], "start", 5) == 0) {
             printf("[0] Starting modem on FMT client\n");
             rc = modem_start(client_fmt);