src/emulator.c | 53 ++++++++++++++++++++++++++++++++++++++++++--------
 src/hfp.h      |  1 +
 2 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/src/emulator.c b/src/emulator.c
index b3afb3da..78eff8de 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -45,6 +45,10 @@
 #define MSBC_OFFSET 1
 #define CODECS_COUNT (MSBC_OFFSET + 1)
 
+//hfp assigned number
+int hf_assnum[128];
+int hf_asskind = 0;
+
 struct hfp_codec_info {
        unsigned char type;
        ofono_bool_t supported;
@@ -853,11 +857,20 @@ static void bind_cb(GAtServer *server, 
GAtServerRequestType type,
                        GAtResult *result, gpointer user_data)
 {
        struct ofono_emulator *em = user_data;
-       char buf[128];
+
 
        switch (type) {
        case G_AT_SERVER_REQUEST_TYPE_QUERY:
-               g_at_server_send_info(em->server, "+BIND: 1,1", TRUE);
+
+               for(int i = 0; i < hf_asskind; i++)
+               {
+                       char buf[128];
+                       char str1[] = "+BIND:";
+                       char str2[] = ",1";
+                       sprintf(buf, "%s%i%s", str1, hf_assnum[i], str2);
+                       g_at_server_send_info(em->server, buf, TRUE);
+               }
+
                g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
 
                __ofono_emulator_slc_condition(em,
@@ -865,8 +878,16 @@ static void bind_cb(GAtServer *server, 
GAtServerRequestType type,
                break;
 
        case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
-               sprintf(buf, "+BIND: (1)");
-               g_at_server_send_info(em->server, buf, TRUE);
+
+               for(int i = 0; i < hf_asskind; i++)
+               {
+                       char buf[128];
+                       char str1[] = "+BIND:(";
+                       char str2[] = ")";
+                       sprintf(buf, "%s%i%s", str1, hf_assnum[i], str2);
+                       g_at_server_send_info(em->server, buf, TRUE);
+               }
+
                g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
                break;
 
@@ -898,9 +919,17 @@ static void bind_cb(GAtServer *server, 
GAtServerRequestType type,
                g_at_result_iter_next(&iter, "");
 
                while (g_at_result_iter_next_number(&iter, &hf_indicator))
+               {
                        ofono_info("HF supports indicator: 0x%04x",
                                        hf_indicator);
 
+                       hf_assnum[hf_asskind] = hf_indicator;
+                       hf_asskind ++;
+                       ofono_info("hf_assnum: %d", hf_assnum[hf_asskind]);
+
+               }
+
+               ofono_info("hf_asskind: %d",hf_asskind);
                g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
 
                break;
@@ -931,7 +960,7 @@ static void biev_cb(GAtServer *server, GAtServerRequestType 
type,
                if (g_at_result_iter_next_number(&iter, &hf_indicator) == FALSE)
                        goto fail;
 
-               if (hf_indicator != HFP_HF_INDICATOR_ENHANCED_SAFETY)
+               if (hf_indicator != HFP_HF_INDICATOR_ENHANCED_SAFETY && 
hf_indicator != HFP_HF_INDICATOR_BATTERY_LEVEL)
                        goto fail;
 
                if (em->ddr_active == FALSE)
@@ -940,10 +969,18 @@ static void biev_cb(GAtServer *server, 
GAtServerRequestType type,
                if (g_at_result_iter_next_number(&iter, &val) == FALSE)
                        goto fail;
 
-               if (val < 0 || val > 1)
+               if (val < 0 || val > 100)
+               {
                        goto fail;
-
-               ofono_info("Enhanced Safety indicator: %d", val);
+               }
+               else if(val > 1)
+               {
+                       ofono_info("Battery Level indicator: %d", val);
+               }
+               else
+               {
+                       ofono_info("Enhanced Safety indicator: %d", val);
+               }
 
                g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
                break;
diff --git a/src/hfp.h b/src/hfp.h
index de4c950f..41a7aef6 100644
--- a/src/hfp.h
+++ b/src/hfp.h
@@ -91,4 +91,5 @@ enum hfp_version {
 
 enum hfp_hf_indicator {
        HFP_HF_INDICATOR_ENHANCED_SAFETY =      0x0001,
+       HFP_HF_INDICATOR_BATTERY_LEVEL   =      0x0002,
 };
-- 
2.25.1
_______________________________________________
ofono mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to