summaryrefslogtreecommitdiffstats
path: root/net.c
diff options
context:
space:
mode:
authorPaulK <contact@paulk.fr>2012-02-21 18:39:39 +0100
committerPaulK <contact@paulk.fr>2012-02-21 18:39:39 +0100
commit0c854ce2959463e094229bc874c1b4cde0e6ff46 (patch)
treeaf08424ee840777c14db0e911b5d688482a61a1f /net.c
parentd7f131710d21ebc0f20ef2f424f20594658cdecb (diff)
downloadhardware_replicant_libsamsung-ril-0c854ce2959463e094229bc874c1b4cde0e6ff46.tar.gz
hardware_replicant_libsamsung-ril-0c854ce2959463e094229bc874c1b4cde0e6ff46.tar.bz2
hardware_replicant_libsamsung-ril-0c854ce2959463e094229bc874c1b4cde0e6ff46.zip
Fixed IPC_NET_MODE_SEL related functions
Diffstat (limited to 'net.c')
-rw-r--r--net.c47
1 files changed, 26 insertions, 21 deletions
diff --git a/net.c b/net.c
index 4fd1f61..fd1a33b 100644
--- a/net.c
+++ b/net.c
@@ -102,12 +102,12 @@ unsigned char ipc2ril_modesel(unsigned char mode)
{
switch(mode) {
case 0:
- return 7;
- case 1:
- case 3:
+ return 7; // auto mode
+ case IPC_NET_MODE_GSM_UMTS:
+ return 0;
+ case IPC_NET_MODE_GSM_ONLY:
return 1;
- case 2:
- case 4:
+ case IPC_NET_MODE_UMTS_ONLY:
return 2;
default:
return 255;
@@ -120,12 +120,13 @@ unsigned char ipc2ril_modesel(unsigned char mode)
unsigned char ril2ipc_modesel(unsigned char mode)
{
switch(mode) {
- case 1:
- return 2;
- case 2:
- return 3;
- default:
- return 1;
+ case 1: // GSM only
+ return IPC_NET_MODE_GSM_ONLY;
+ case 2: // WCDMA only
+ return IPC_NET_MODE_UMTS_ONLY;
+ case 0:
+ default: // GSM/WCDMA + the rest
+ return IPC_NET_MODE_GSM_UMTS;
}
}
@@ -719,23 +720,27 @@ void ril_request_query_network_selection_mode(RIL_Token t)
RIL_onRequestComplete(t, RIL_E_SUCCESS, &mode, sizeof(mode));
}
-void ril_request_get_preferred_network_type(RIL_Token t)
+void ril_request_set_preferred_network_type(RIL_Token t, void *data, size_t datalen)
{
- ipc_fmt_send_get(IPC_NET_MODE_SEL, reqGetId(t));
+ int ril_mode = *(int*)data;
+ struct ipc_net_mode_sel mode_sel;
+
+ mode_sel->mode = ril2ipc_modesel(ril_mode);
+
+ ipc_gen_phone_res_expect_to_complete(reqGetId(t), IPC_NET_MODE_SEL);
+
+ ipc_fmt_send(IPC_NET_MODE_SEL, IPC_TYPE_SET, &mode_sel, sizeof(mode_sel), reqGetId(t));
}
-void ril_request_set_preffered_network_type(RIL_Token t, void *data, size_t datalen)
+void ril_request_get_preferred_network_type(RIL_Token t)
{
- int ril_mode = *(int*)data;
- unsigned char ipc_mode = ril2ipc_modesel(ril_mode);
-
- ipc_fmt_send(IPC_NET_MODE_SEL, IPC_TYPE_SET, &ipc_mode, sizeof(ipc_mode), reqGetId(t));
+ ipc_fmt_send_get(IPC_NET_MODE_SEL, reqGetId(t));
}
void ipc_net_mode_sel(struct ipc_message_info *info)
{
- unsigned char ipc_mode = *(unsigned char *) info->data;
- int ril_mode = ipc2ril_modesel(ipc_mode);
+ struct ipc_net_mode_sel *mode_sel = (struct ipc_net_mode_sel *) info->data;
+ int ril_mode = ipc2ril_modesel(mode_sel->mode);
- RIL_onRequestComplete(reqGetToken(info->aseq), RIL_E_SUCCESS, &ril_mode, sizeof(int*));
+ RIL_onRequestComplete(reqGetToken(info->aseq), RIL_E_SUCCESS, &ril_mode, sizeof(int));
}