summaryrefslogtreecommitdiffstats
path: root/package/tapi_sip/src/tapi_agent.h
blob: 12e870121519bf173a6375b99e72b3c1d2a403a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef __TAPI_AGENT_H__
#define __TAPI_AGENT_H__

#include "agent.h"
#include <tapi-port.h>

struct session;

enum tapi_agent_state {
	TAPI_AGENT_STATE_IDLE,
	TAPI_AGENT_STATE_RINGING,
	TAPI_AGENT_STATE_ACTIVE,
};

struct tapi_agent {
	struct agent agent;
	struct tapi_port port;
	struct tapi_port_event_listener event_listener;

	enum tapi_agent_state state;

	struct session *session;
};

static inline struct tapi_agent *agent_to_tapi_agent(struct agent *agent)
{
	return container_of(agent, struct tapi_agent, agent);
}

static inline struct tapi_agent *port_to_tapi_agent(struct tapi_port *port)
{
	return container_of(port, struct tapi_agent, port);
}

void tapi_agent_init(struct tapi_device *tdev, int port, struct tapi_agent *tagent);

#endif