diff --git a/qahw_api/inc/qahw_api.h b/qahw_api/inc/qahw_api.h
index 1dc52f2..8a65686 100644
--- a/qahw_api/inc/qahw_api.h
+++ b/qahw_api/inc/qahw_api.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
  * Not a Contribution.
  *
  * Copyright (C) 2011 The Android Open Source Project *
@@ -428,6 +428,13 @@
                         qahw_param_id param_id,
                         qahw_param_payload *payload);
 
+/* Api to implement set parameters based on keyword param_id
+ * and data present in payload.
+ */
+int qahw_set_param_data(const qahw_module_handle_t *hw_module,
+                        qahw_param_id param_id,
+                        qahw_param_payload *payload);
+
 __END_DECLS
 
 #endif  // QTI_AUDIO_HAL_API_H
diff --git a/qahw_api/src/qahw.c b/qahw_api/src/qahw.c
index 4025c56..1cb89ee 100644
--- a/qahw_api/src/qahw.c
+++ b/qahw_api/src/qahw.c
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2016, The Linux Foundation. All rights reserved.
+* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
@@ -50,6 +50,12 @@
 typedef uint64_t (*qahwi_in_read_v2_t)(audio_stream_in_t *in, void* buffer,
                                        size_t bytes, uint64_t *timestamp);
 
+typedef int (*qahwi_get_param_data_t) (const audio_hw_device_t *,
+                              qahw_param_id, qahw_param_payload *);
+
+typedef int (*qahwi_set_param_data_t) (audio_hw_device_t *,
+                              qahw_param_id, qahw_param_payload *);
+
 typedef struct {
     audio_hw_device_t *audio_device;
     char module_name[MAX_MODULE_NAME_LENGTH];
@@ -59,6 +65,8 @@
     pthread_mutex_t lock;
     uint32_t ref_count;
     const hw_module_t* module;
+    qahwi_get_param_data_t qahwi_get_param_data;
+    qahwi_set_param_data_t qahwi_set_param_data;
 } qahw_module_t;
 
 typedef struct {
@@ -91,9 +99,6 @@
 static int qahw_list_count;
 static pthread_mutex_t qahw_module_init_lock = PTHREAD_MUTEX_INITIALIZER;
 
-typedef int (*qahwi_get_param_data_t) (const struct audio_device *,
-                              qahw_param_id, qahw_param_payload *);
-qahwi_get_param_data_t qahwi_get_param_data;
 
 /** Start of internal functions */
 /******************************************************************************/
@@ -1233,8 +1238,43 @@
 
     pthread_mutex_lock(&qahw_module->lock);
 
-    if (qahwi_get_param_data){
-        ret = qahwi_get_param_data (qahw_module->audio_device, param_id, payload);
+    if (qahw_module->qahwi_get_param_data){
+        ret = qahw_module->qahwi_get_param_data (qahw_module->audio_device,
+                                   param_id, payload);
+    } else {
+         ret = -ENOSYS;
+         ALOGE("%s not supported\n",__func__);
+    }
+    pthread_mutex_unlock(&qahw_module->lock);
+
+exit:
+     return ret;
+}
+
+/* Api to implement set parameters  based on keyword param_id
+ * and data present in payload.
+ */
+int qahw_set_param_data(const qahw_module_handle_t *hw_module,
+                        qahw_param_id param_id,
+                        qahw_param_payload *payload)
+{
+    int ret = 0;
+    qahw_module_t *qahw_module = (qahw_module_t *)hw_module;
+    qahw_module_t *qahw_module_temp;
+
+    pthread_mutex_lock(&qahw_module_init_lock);
+    qahw_module_temp = get_qahw_module_by_ptr(qahw_module);
+    pthread_mutex_unlock(&qahw_module_init_lock);
+    if (qahw_module_temp == NULL) {
+        ALOGE("%s:: invalid hw module %p", __func__, qahw_module);
+        goto exit;
+    }
+
+    pthread_mutex_lock(&qahw_module->lock);
+
+    if (qahw_module->qahwi_set_param_data){
+        ret = qahw_module->qahwi_set_param_data (qahw_module->audio_device,
+                                   param_id, payload);
     } else {
          ret = -ENOSYS;
          ALOGE("%s not supported\n",__func__);
@@ -1544,11 +1584,16 @@
     qahw_module->module = module;
     ALOGD("%s::Loaded HAL %s module %p", __func__, ahal_name, qahw_module);
 
-    qahwi_get_param_data = (qahwi_get_param_data_t) dlsym (module->dso,
+    qahw_module->qahwi_get_param_data = (qahwi_get_param_data_t) dlsym (module->dso,
                             "qahwi_get_param_data");
-    if (!qahwi_get_param_data)
+    if (!qahw_module->qahwi_get_param_data)
          ALOGD("%s::qahwi_get_param_data api is not defined\n",__func__);
 
+    qahw_module->qahwi_set_param_data = (qahwi_set_param_data_t) dlsym (module->dso,
+                            "qahwi_set_param_data");
+    if (!qahw_module->qahwi_set_param_data)
+         ALOGD("%s::qahwi_set_param_data api is not defined\n",__func__);
+
     if (!qahw_list_count)
         list_init(&qahw_module_list);
     qahw_list_count++;
diff --git a/qahw_api/test/qahw_multi_record_test.c b/qahw_api/test/qahw_multi_record_test.c
index b67df4d..b0b914b 100644
--- a/qahw_api/test/qahw_multi_record_test.c
+++ b/qahw_api/test/qahw_multi_record_test.c
@@ -85,13 +85,9 @@
 static volatile int tests_running;
 static volatile int tests_completed;
 
-#define SOUNDFOCUS_SET_PARAMS_STR_LEN 100
-#define SOUNDFOCUS_SET_PARAMS "SoundFocus.start_angles=%s;"\
-                              "SoundFocus.enable_sectors=%s;" \
-                              "SoundFocus.gain_step=%d"
 int sourcetrack_done = 0;
 static pthread_mutex_t sourcetrack_lock;
-char soundfocus_param[100];
+struct qahw_sound_focus_param sound_focus_data;
 
 void stop_signal_handler(int signal)
 {
@@ -101,21 +97,24 @@
 
 void read_soundfocus_param(void)
 {
-    char params[50] = {0};
-    char *start_angle = NULL;
-    char *enable_sector = NULL;
-    unsigned int gain_step;
+    int i = 0;
+    uint16_t start_angle[4] = {0};
+    uint8_t enable_sector[4] = {0};
+    uint16_t gain_step;
 
-    printf("Enter soundfocusparams (startangle;enablesector;gainstep):::::");
-    scanf("%s",params);
+    printf("\nEnter soundfocusparams startangle :::::");
+    scanf("%hd %hd %hd %hd",&start_angle[0], &start_angle[1],
+                            &start_angle[2], &start_angle[3]);
+    memcpy(&sound_focus_data.start_angle, start_angle, sizeof(start_angle));
 
-    start_angle = strtok(params, ";");
-    enable_sector = strtok(NULL, ";" );
-    gain_step = atoi(strtok(NULL, ";"));
+    printf("\nEnter soundfocusparams enablesector :::::");
+    scanf("%hhd %hhd %hhd %hhd",&enable_sector[0], &enable_sector[1],
+                                &enable_sector[2], &enable_sector[3]);
+    memcpy(&sound_focus_data.enable, enable_sector, sizeof(enable_sector));
 
-    snprintf(soundfocus_param, SOUNDFOCUS_SET_PARAMS_STR_LEN,
-             SOUNDFOCUS_SET_PARAMS, start_angle, enable_sector,
-             gain_step);
+    printf("\nEnter soundfocusparams gainstep:::::");
+    scanf("%hd",&gain_step);
+    memcpy(&sound_focus_data.gain_step, &gain_step, sizeof(gain_step));
 }
 
 void sourcetrack_signal_handler(int signal)
@@ -133,7 +132,6 @@
     int idx =0, status = 0,count = 0, sect = 0;
     qahw_param_id param;
     qahw_param_payload payload;
-    struct qahw_sound_focus_param sound_focus_data;
     qahw_module_handle_t *qawh_module_handle = NULL;
 
     qawh_module_handle = (qahw_module_handle_t *)data;
@@ -144,12 +142,13 @@
             return NULL;
 
         pthread_mutex_lock(&sourcetrack_lock);
-        status = qahw_set_parameters(qawh_module_handle, soundfocus_param);
+        payload = (qahw_param_payload)sound_focus_data;
+        param = QAHW_PARAM_SOUND_FOCUS;
+        status = qahw_set_param_data(qawh_module_handle, param, &payload);
         if (status != 0)
             fprintf(log_file, "Error.Failed Set SoundFocus Params\n");
 
         fprintf(log_file, "\nGet SoundFocus Params from app");
-        param = QAHW_PARAM_SOUND_FOCUS;
         status = qahw_get_param_data(qawh_module_handle, param, &payload);
         if (status < 0) {
                 fprintf(log_file, "Failed to get sound focus params\n");
@@ -535,6 +534,8 @@
     printf("                                           format 1[AUDIO_FORMAT_PCM_16_BIT], sample rate 44100, \n");
     printf("                                           channels 2[AUDIO_CHANNEL_IN_STEREO], record data for 8 secs\n");
     printf("                                           start recording after 2 secs.\n\n");
+    printf(" hal_rec_test -S -c 1 -r 48000 -t 30 -> Enable Sourcetracking\n");
+    printf("                                      For mono channel 48kHz rate for 30seconds\n\n");
     printf(" hal_rec_test -F 1 --kpi-mode -> start a recording with low latency input flag and calculate latency KPIs\n\n");
 }
 
