aboutsummaryrefslogtreecommitdiffstats
path: root/samsung-ipc/net.c
diff options
context:
space:
mode:
authorPaulK <contact@paulk.fr>2012-02-22 00:03:08 +0100
committerPaulK <contact@paulk.fr>2012-02-01 04:51:28 +0100
commitd3e5290bd938267422b4a6653faa689cab85987c (patch)
treeaf0e3c894172c0418aa5614c9268c25978bd3f24 /samsung-ipc/net.c
parent27a65c82d7a74e4aad025f794ae10e8686c54fd0 (diff)
downloadexternal_libsamsung-ipc-d3e5290bd938267422b4a6653faa689cab85987c.zip
external_libsamsung-ipc-d3e5290bd938267422b4a6653faa689cab85987c.tar.gz
external_libsamsung-ipc-d3e5290bd938267422b4a6653faa689cab85987c.tar.bz2
Added NET_MODE_SEL headers, fixed NET_PLMN_SEL structure and related function
Also: * renamed IPC_NET_PLMN_SEL_MODE to IPC_NET_PLMN_SEL_... * switched plmn from unsigned to signed char array as it's a string
Diffstat (limited to 'samsung-ipc/net.c')
-rw-r--r--samsung-ipc/net.c36
1 files changed, 27 insertions, 9 deletions
diff --git a/samsung-ipc/net.c b/samsung-ipc/net.c
index 994e9ef..0b9f0c4 100644
--- a/samsung-ipc/net.c
+++ b/samsung-ipc/net.c
@@ -18,27 +18,45 @@
*
*/
+#include <string.h>
#include <radio.h>
void ipc_net_regist_setup(struct ipc_net_regist_get *message, unsigned char domain)
{
+ //FIXME: could that be IPC_NET_ACCESS_TECHNOLOGY_... (act) ?
message->net = 0xff;
message->domain = domain;
}
-void ipc_net_plmn_sel_setup(struct ipc_net_plmn_sel *message, unsigned char mode, unsigned char *plmn)
+void ipc_net_plmn_sel_setup(struct ipc_net_plmn_sel_set *message, unsigned char mode, char *plmn, unsigned char act)
{
- if (mode == IPC_NET_PLMN_SEL_MODE_AUTO)
+ int message_plmn_len = sizeof(message->plmn) / sizeof(char);
+ int plmn_len;
+ int i;
+
+ memset(message, 0, sizeof(struct ipc_net_plmn_sel_set));
+
+ if (mode == IPC_NET_PLMN_SEL_AUTO)
{
- message->mode = IPC_NET_PLMN_SEL_MODE_AUTO;
- message->unk1 = 0xff;
+ message->mode = IPC_NET_PLMN_SEL_AUTO;
+ message->act = IPC_NET_ACCESS_TECHNOLOGY_UNKNOWN;
}
- else if (mode == IPC_NET_PLMN_SEL_MODE_MANUAL)
+ else if (mode == IPC_NET_PLMN_SEL_MANUAL)
{
- message->mode = IPC_NET_PLMN_SEL_MODE_MANUAL;
- strncpy(message->plmn, plmn, 5);
- message->unk0 = 0x23;
- message->unk1 = 0x4;
+ plmn_len = strlen(plmn);
+
+ // Only copy the first (6) bytes if there are more
+ if(plmn_len > message_plmn_len)
+ plmn_len = message_plmn_len;
+
+ strncpy(message->plmn, plmn, plmn_len);
+
+ // If there are less (5 is the usual case) PLMN bytes, fill the rest with '#'
+ if (plmn_len < message_plmn_len)
+ memset((void*) (message->plmn + plmn_len), '#', message_plmn_len - plmn_len);
+
+ message->mode = IPC_NET_PLMN_SEL_MANUAL;
+ message->act = act;
}
}