#include <core_object.h>
#include <plugin.h>
#include <queue.h>
+#include <storage.h>
#include <co_call.h>
#include <user_request.h>
#include <server.h>
static enum tcore_call_cli_mode _get_clir_status(char *num)
{
- enum tcore_call_cli_mode clir = CALL_CLI_MODE_DEFAULT;
+ enum tcore_call_cli_mode clir = TCORE_CALL_CLI_MODE_DEFAULT;
dbg("Entry");
return TCORE_CALL_CLI_MODE_PRESENT;
}
- err("Exit");
+ dbg("CLI mode default");
+
+ dbg("Exit");
+
return clir;
}
err("User Request is NULL");
}
- dbg("Exit")
+ dbg("Exit");
return;
}
return;
}
-static void on_confirmation_set_sound_path(TcorePending *p, int data_len, const void *data, void *user_data)
+static void on_confirmation_set_sound_path(TcorePending *p, int data_len,
+ const void *data,
+ void *user_data)
{
const TcoreATResponse *resp = data;
struct tnoti_call_sound_path *snd_path = user_data;
+ struct tresp_call_sound_set_path resp_set_sound_path;
+ UserRequest *ur = tcore_pending_ref_user_request(p);
TcorePlugin *plugin = tcore_pending_ref_plugin(p);
+ CoreObject *co_call;
- if (resp->success > 0) {
- tcore_server_send_notification(tcore_plugin_ref_server(plugin),
- tcore_plugin_ref_core_object(plugin, CORE_OBJECT_TYPE_CALL),
- TNOTI_CALL_SOUND_PATH,
- sizeof(struct tnoti_call_sound_path),
- (void *)snd_path);
- } else {
- dbg("Error in set sound path");
+ if (ur == NULL) {
+ err("User Request is NULL");
+ g_free(user_data);
+ return;
}
- g_free(snd_path);
+ if (resp->success <= 0) {
+
+ dbg("RESPONSE NOT OK");
+ resp_set_sound_path.err = TRUE;
+
+ goto out;
+ }
+
+ dbg("RESPONSE OK");
+ resp_set_sound_path.err = FALSE;
+
+ co_call = tcore_plugin_ref_core_object(plugin, CORE_OBJECT_TYPE_CALL);
+
+ /* Notify control plugin about sound path */
+ tcore_server_send_notification(tcore_plugin_ref_server(plugin),
+ co_call, TNOTI_CALL_SOUND_PATH,
+ sizeof(struct tnoti_call_sound_path),
+ snd_path);
+
+out:
+ /* Answer TAPI request */
+ tcore_user_request_send_response(ur, TRESP_CALL_SET_SOUND_PATH,
+ sizeof(resp_set_sound_path),
+ &resp_set_sound_path);
+
+ g_free(user_data);
}
static void on_confirmation_call_set_source_sound_path(TcorePending *p, int data_len, const void *data, void *user_data)
ERROR:
err("Invalid CLCC line");
- if (num) {
- g_free(num);
- num = NULL;
- }
+ g_free(num);
// Free tokens
tcore_at_tok_free(tokens);
return;
}
- dbg("freeing at token")
+ dbg("freeing at token");
tcore_at_tok_free(tokens);
eflag = g_new0(gboolean, 1);
static TReturn s_call_outgoing(CoreObject *o, UserRequest *ur)
{
struct treq_call_dial *data = 0;
- char *raw_str = NULL;
- char *cmd_str = NULL;
- const char *cclir;
+ char *cmd_str;
+ const char *cclir, *num;
enum tcore_call_cli_mode clir = CALL_CLI_MODE_DEFAULT;
- TcorePending *pending = NULL;
+ TcorePending *pending;
TcoreATRequest *req;
- gboolean ret = FALSE;
-
- dbg("function entrance");
+ gboolean ret;
- if (FALSE == tcore_hal_get_power_state(tcore_object_get_hal(o))) {
- dbg("cp not ready/n");
- return TCORE_RETURN_ENOSYS;
- }
+ dbg("Entry");
data = (struct treq_call_dial *) tcore_user_request_ref_data(ur, 0);
if (data->type == CALL_TYPE_VIDEO) {
- dbg("invalid call type")
+ dbg("invalid call type");
return TCORE_RETURN_FAILURE;
}
clir = _get_clir_status(data->number);
- // Compose ATD Cmd string
+ if (clir == TCORE_CALL_CLI_MODE_DEFAULT) {
+ TcorePlugin *plugin = tcore_object_ref_plugin(o);
+ Server *server = tcore_plugin_ref_server(plugin);
+ Storage *strg;
+
+ dbg("Reading VCONF key");
+
+ strg = tcore_server_find_storage(server, "vconf");
+ clir = tcore_storage_get_int(strg,
+ STORAGE_KEY_CISSAPPL_SHOW_MY_NUMBER_INT);
+
+ num = data->number;
+ } else
+ /* Need to remove CLIR code from dialing number */
+ num = data->number + 4;
+
+ /* Compose ATD Cmd string */
switch (clir) {
case TCORE_CALL_CLI_MODE_PRESENT:
dbg("CALL_CLI_MODE_PRESENT");
- cclir = "I";
- break; // invocation
+ cclir = "i";
+ break;
case TCORE_CALL_CLI_MODE_RESTRICT:
dbg("CALL_CLI_MODE_RESTRICT");
- cclir = "i";
- break; // suppression
+ cclir = "I";
+ break;
case TCORE_CALL_CLI_MODE_DEFAULT:
default:
cclir = "";
dbg("CALL_CLI_MODE_DEFAULT");
- break; // subscription default
+ break;
}
dbg("data->number = %s", data->number);
- raw_str = g_strdup_printf("ATD%s%s;", data->number, cclir);
- cmd_str = g_strdup_printf("%s", raw_str);
+ cmd_str = g_strdup_printf("ATD%s%s;", num, cclir);
dbg("request command : %s", cmd_str);
tcore_pending_set_request_data(pending, 0, req);
ret = _call_request_message(pending, o, ur, on_confirmation_call_outgoing, NULL);
- g_free(raw_str);
g_free(cmd_str);
- if (!ret) {
+ if (ret == FALSE) {
dbg("AT request(%s) sent failed", req->cmd);
return TCORE_RETURN_FAILURE;
}
dbg("AT request(%s) sent success", req->cmd);
+ dbg("Exit");
+
return TCORE_RETURN_SUCCESS;
}
g_free(cmd_str);
if (!ret) {
- dbg("AT request sent failed")
+ dbg("AT request sent failed");
return TCORE_RETURN_FAILURE;
}