This commit verifies the conditions where the AT+BCC command will fail.

The codec connection setup is missing.
---
 src/emulator.c |   25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/emulator.c b/src/emulator.c
index 24c5e48..f358a0e 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -871,6 +871,30 @@ fail:
        }
 }
 
+static void bcc_cb(GAtServer *server, GAtServerRequestType type,
+                       GAtResult *result, gpointer user_data)
+{
+       struct ofono_emulator *em = user_data;
+
+       switch(type) {
+       case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY:
+               if (!em->slc)
+                       goto fail;
+
+               if (!(em->l_features & HFP_AG_FEATURE_CODEC_NEGOTIATION) &&
+                       !(em->r_features & HFP_HF_FEATURE_CODEC_NEGOTIATION))
+                       goto fail;
+
+               g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+               break;
+
+       default:
+fail:
+               g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+               break;
+       }
+}
+
 static void emulator_add_indicator(struct ofono_emulator *em, const char* name,
                                        int min, int max, int dflt,
                                        gboolean mandatory)
@@ -979,6 +1003,7 @@ void ofono_emulator_register(struct ofono_emulator *em, 
int fd)
                g_at_server_register(em->server, "+CCWA", ccwa_cb, em, NULL);
                g_at_server_register(em->server, "+CMEE", cmee_cb, em, NULL);
                g_at_server_register(em->server, "+BIA", bia_cb, em, NULL);
+               g_at_server_register(em->server, "+BCC", bcc_cb, em, NULL);
        }
 
        __ofono_atom_register(em->atom, emulator_unregister);
-- 
1.7.9.5

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to