2 * module-murphy-ivi -- PulseAudio module for providing audio routing support
3 * Copyright (c) 2012, Intel Corporation.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU Lesser General Public License,
7 * version 2.1, as published by the Free Software Foundation.
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.
12 * See the GNU Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this program; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, Boston,
23 #include <sys/types.h>
26 #include <pulsecore/pulsecore-config.h>
39 static const char *method_str(am_method);
41 pa_routerif *pa_routerif_init(struct userdata *u,
46 pa_module *m = u->module;
47 pa_routerif *routerif = NULL;
49 routerif = pa_xnew0(pa_routerif, 1);
56 void pa_routerif_done(struct userdata *u)
58 pa_routerif *routerif;
60 if (u && (routerif = u->routerif)) {
61 if (routerif->sock >= 0)
62 close(routerif->sock);
71 pa_bool_t pa_routerif_register_domain(struct userdata *u,
72 am_domainreg_data *dr)
74 pa_routerif *routerif;
79 pa_assert_se((routerif = u->routerif));
80 pa_assert(routerif->sock >= 0);
82 pa_log_info("%s: registering to AudioManager", __FILE__);
87 pa_bool_t pa_routerif_domain_complete(struct userdata *u, uint16_t domain)
89 pa_routerif *routerif;
90 pa_bool_t success = TRUE;
93 pa_assert_se((routerif = u->routerif));
94 pa_assert(routerif->sock >= 0);
96 pa_log_debug("%s: domain %u AudioManager %s", __FUNCTION__,
97 domain, method_str(audiomgr_domain_complete));
102 pa_bool_t pa_routerif_unregister_domain(struct userdata *u, uint16_t domain)
104 pa_routerif *routerif;
105 pa_bool_t success = TRUE;
108 pa_assert_se((routerif = u->routerif));
109 pa_assert(routerif->sock >= 0);
111 pa_log_info("%s: deregistreing domain %u from AudioManager",
118 pa_bool_t pa_routerif_register_node(struct userdata *u,
122 const char *method = method_str(m);
123 pa_routerif *routerif;
124 pa_bool_t success = TRUE;
128 pa_assert_se((routerif = u->routerif));
129 pa_assert(routerif->sock >= 0);
131 pa_log_debug("%s: %s '%s' to AudioManager", __FUNCTION__, method,rd->name);
137 pa_bool_t pa_routerif_unregister_node(struct userdata *u,
139 am_nodeunreg_data *ud)
141 const char *method = method_str(m);
142 pa_routerif *routerif;
143 pa_bool_t success = TRUE;
147 pa_assert_se((routerif = u->routerif));
148 pa_assert(routerif->sock >= 0);
150 pa_log_debug("%s: %s '%s' to AudioManager", __FUNCTION__, method,ud->name);
156 pa_bool_t pa_routerif_acknowledge(struct userdata *u, am_method m,
157 struct am_ack_data *ad)
159 const char *method = method_str(m);
160 pa_routerif *routerif;
161 pa_bool_t success = TRUE;
165 pa_assert_se((routerif = u->routerif));
166 pa_assert(routerif->sock >= 0);
168 pa_log_debug("%s: sending %s", __FILE__, method);
174 static const char *method_str(am_method m)
177 case audiomgr_register_domain: return "register_domain";
178 case audiomgr_domain_complete: return "domain_complete";
179 case audiomgr_deregister_domain: return "deregister_domain";
180 case audiomgr_register_source: return "register_source";
181 case audiomgr_deregister_source: return "deregister_source";
182 case audiomgr_register_sink: return "register_sink";
183 case audiomgr_deregister_sink: return "deregister_sink";
184 case audiomgr_connect: return "connect";
185 case audiomgr_connect_ack: return "connect_ack";
186 case audiomgr_disconnect: return "disconnect";
187 case audiomgr_disconnect_ack: return "disconnect_ack";
188 case audiomgr_setsinkvol_ack: return "setsinkvol_ack";
189 case audiomgr_setsrcvol_ack: return "setsrcvol_ack";
190 case audiomgr_sinkvoltick_ack: return "sinkvoltick_ack";
191 case audiomgr_srcvoltick_ack: return "srcvoltick_ack";
192 case audiomgr_setsinkprop_ack: return "setsinkprop_ack";
193 default: return "invalid_method";
200 * indent-tabs-mode: nil