diff options
author | PaulK <contact@paulk.fr> | 2012-02-21 18:39:39 +0100 |
---|---|---|
committer | PaulK <contact@paulk.fr> | 2012-02-21 18:39:39 +0100 |
commit | 0c854ce2959463e094229bc874c1b4cde0e6ff46 (patch) | |
tree | af08424ee840777c14db0e911b5d688482a61a1f /net.c | |
parent | d7f131710d21ebc0f20ef2f424f20594658cdecb (diff) | |
download | hardware_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.c | 47 |
1 files changed, 26 insertions, 21 deletions
@@ -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)); } |