bluez5: backend-native: Add AT+CLCC support

This allows the HFP HF to retrieve the list of calls with their index,
state and remote number (if available).

This commit shared the list of calls between modemmanager.c and
backend-native.c, and switches call state storage from ModemManager
states to CLCC states
This commit is contained in:
Frédéric Danis 2022-09-23 16:26:07 +02:00 committed by Wim Taymans
parent 55075915ec
commit 20572a1789
3 changed files with 117 additions and 28 deletions

View file

@ -25,6 +25,8 @@
#ifndef SPA_BLUEZ5_MODEMMANAGER_H_
#define SPA_BLUEZ5_MODEMMANAGER_H_
#include <spa/utils/list.h>
#include "defs.h"
enum cmee_error {
@ -44,6 +46,35 @@ enum call_setup {
CIND_CALLSETUP_ALERTING
};
enum call_direction {
CALL_OUTGOING,
CALL_INCOMING
};
enum call_state {
CLCC_ACTIVE,
CLCC_HELD,
CLCC_DIALING,
CLCC_ALERTING,
CLCC_INCOMING,
CLCC_WAITING,
CLCC_RESPONSE_AND_HOLD
};
struct call {
struct spa_list link;
unsigned int index;
struct impl *this;
DBusPendingCall *pending;
char *path;
char *number;
bool call_indicator;
enum call_direction direction;
enum call_state state;
bool multiparty;
};
struct mm_ops {
void (*send_cmd_result)(bool success, enum cmee_error error, void *user_data);
void (*set_modem_service)(bool available, void *user_data);
@ -62,6 +93,7 @@ unsigned int mm_supported_features();
bool mm_answer_call(void *modemmanager, void *user_data, enum cmee_error *error);
bool mm_hangup_call(void *modemmanager, void *user_data, enum cmee_error *error);
const char *mm_get_incoming_call_number(void *modemmanager);
struct spa_list *mm_get_calls(void *modemmanager);
#else
void *mm_register(struct spa_log *log, void *dbus_connection, const struct mm_ops *ops, void *user_data)
{
@ -100,6 +132,11 @@ const char *mm_get_incoming_call_number(void *modemmanager)
{
return NULL;
}
struct spa_list *mm_get_calls(void *modemmanager)
{
return NULL;
}
#endif
#endif