Home | History | Annotate | Download | only in server

Lines Matching refs:info

56 int hfp_info_add_iodev(struct hfp_info *info, struct cras_iodev *dev)
59 if (info->odev)
61 info->odev = dev;
63 buf_reset(info->playback_buf);
65 if (info->idev)
67 info->idev = dev;
69 buf_reset(info->capture_buf);
78 int hfp_info_rm_iodev(struct hfp_info *info, struct cras_iodev *dev)
80 if (dev->direction == CRAS_STREAM_OUTPUT && info->odev == dev) {
81 info->odev = NULL;
82 } else if (dev->direction == CRAS_STREAM_INPUT && info->idev == dev){
83 info->idev = NULL;
90 int hfp_info_has_iodev(struct hfp_info *info)
92 return info->odev || info->idev;
95 void hfp_buf_acquire(struct hfp_info *info, struct cras_iodev *dev,
105 *buf = buf_write_pointer_size(info->playback_buf, &buf_avail);
107 *buf = buf_read_pointer_size(info->capture_buf, &buf_avail);
114 int hfp_buf_size(struct hfp_info *info, struct cras_iodev *dev)
116 return info->playback_buf->used_size / cras_get_format_bytes(dev->format);
119 void hfp_buf_release(struct hfp_info *info, struct cras_iodev *dev,
128 buf_increment_write(info->playback_buf, written_frames);
130 buf_increment_read(info->capture_buf, written_frames);
133 int hfp_buf_queued(struct hfp_info *info, const struct cras_iodev *dev)
139 return buf_queued_bytes(info->playback_buf) / format_bytes;
141 return buf_queued_bytes(info->capture_buf) / format_bytes;
144 int hfp_write(struct hfp_info *info)
151 samples = buf_read_pointer_size(info->playback_buf, &to_send);
152 if (to_send < info->packet_size)
154 to_send = info->packet_size;
157 err = send(info->fd, samples, to_send, 0);
165 if (err != (int)info->packet_size) {
168 err, info->packet_size);
172 buf_increment_read(info->playback_buf, to_send);
178 static void hfp_info_set_packet_size(struct hfp_info *info,
184 info->packet_size = packet_size;
185 byte_buffer_set_used_size(info->playback_buf, used_size);
186 byte_buffer_set_used_size(info->capture_buf, used_size);
188 DL_FOREACH(info->packet_size_changed_cbs, callback)
192 void hfp_register_packet_size_changed_callback(struct hfp_info *info,
201 DL_APPEND(info->packet_size_changed_cbs, callback);
204 void hfp_unregister_packet_size_changed_callback(struct hfp_info *info,
208 DL_FOREACH(info->packet_size_changed_cbs, callback) {
210 DL_DELETE(info->packet_size_changed_cbs, callback);
216 int hfp_read(struct hfp_info *info)
222 capture_buf = buf_write_pointer_size(info->capture_buf, &to_read);
224 if (to_read < info->packet_size)
226 to_read = info->packet_size;
229 err = recv(info->fd, capture_buf, to_read, 0);
238 if (err != (int)info->packet_size) {
244 if (err && (info->packet_size == info->mtu)) {
245 hfp_info_set_packet_size(info, err);
248 err, info->packet_size);
253 buf_increment_write(info->capture_buf, err);
269 struct hfp_info *info = (struct hfp_info *)arg;
272 if (!info->started)
275 err = hfp_read(info);
282 if (!info->idev)
283 buf_increment_read(info->capture_buf, info->packet_size);
285 if (info->odev) {
286 err = hfp_write(info);
296 hfp_info_stop(info);
303 struct hfp_info *info;
304 info = (struct hfp_info *)calloc(1, sizeof(*info));
305 if (!info)
308 info->capture_buf = byte_buffer_create(MAX_HFP_BUF_SIZE_BYTES);
309 if (!info->capture_buf)
312 info->playback_buf = byte_buffer_create(MAX_HFP_BUF_SIZE_BYTES);
313 if (!info->playback_buf)
316 return info;
319 if (info) {
320 if (info->capture_buf)
321 byte_buffer_destroy(info->capture_buf);
322 if (info->playback_buf)
323 byte_buffer_destroy(info->playback_buf);
324 free(info);
329 int hfp_info_running(struct hfp_info *info)
331 return info->started;
334 int hfp_info_start(int fd, unsigned int mtu, struct hfp_info *info)
336 info->fd = fd;
337 info->mtu = mtu;
341 hfp_info_set_packet_size(info, mtu);
342 buf_reset(info->playback_buf);
343 buf_reset(info->capture_buf);
345 audio_thread_add_callback(info->fd, hfp_info_callback, info);
347 info->started = 1;
352 int hfp_info_stop(struct hfp_info *info)
354 if (!info->started)
359 info->fd);
361 close(info->fd);
362 info->fd = 0;
363 info->started = 0;
368 void hfp_info_destroy(struct hfp_info *info)
370 if (info->capture_buf)
371 byte_buffer_destroy(info->capture_buf);
373 if (info->playback_buf)
374 byte_buffer_destroy(info->playback_buf);
376 free(info);