Home | History | Annotate | Download | only in common
      1 /* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  */
      5 
      6 #ifndef CRAS_IODEV_INFO_H_
      7 #define CRAS_IODEV_INFO_H_
      8 
      9 #include <stddef.h>
     10 #include <stdint.h>
     11 
     12 #define CRAS_IODEV_NAME_BUFFER_SIZE 64
     13 #define CRAS_NODE_TYPE_BUFFER_SIZE 32
     14 #define CRAS_NODE_MIC_POS_BUFFER_SIZE 128
     15 #define CRAS_NODE_NAME_BUFFER_SIZE 64
     16 #define CRAS_NODE_HOTWORD_MODEL_BUFFER_SIZE 16
     17 
     18 /* Identifying information about an IO device.
     19  *    idx - iodev index.
     20  *    name - Name displayed to the user.
     21  *    stable_id - ID that does not change due to device plug/unplug or reboot.
     22  *    stable_id_new - New stable_id, it will be deprecated and be put on
     23  *        stable_id.
     24  */
     25 struct __attribute__ ((__packed__)) cras_iodev_info {
     26 	uint32_t idx;
     27 	char name[CRAS_IODEV_NAME_BUFFER_SIZE];
     28 	uint32_t stable_id;
     29 	uint32_t stable_id_new;
     30 };
     31 
     32 /* Identifying information about an ionode on an iodev.
     33  *    iodev_idx - Index of the device this node belongs.
     34  *    ionode_idx - Index of this node on the device.
     35  *    plugged - Set true if this node is known to be plugged in.
     36  *    plugged_time - If plugged is true, this is the time it was attached.
     37  *    active - If this is the node currently being used.
     38  *    volume - per-node volume (0-100)
     39  *    capture_gain - per-node capture gain/attenuation (in 100*dBFS)
     40  *    left_right_swapped - Set true if left and right channels are swapped.
     41  *    stable_id - ID that does not change due to device plug/unplug or reboot.
     42  *    stable_id_new - New stable_id, it will be deprecated and be put on
     43  *        stable_id.
     44  *    mic_positions - Positions of the mic array.
     45  *    type - Type displayed to the user.
     46  *    name - Name displayed to the user.
     47  *    active_hotword_model - name of the currently selected hotword model.
     48  */
     49 struct __attribute__ ((__packed__)) cras_ionode_info {
     50 	uint32_t iodev_idx;
     51 	uint32_t ionode_idx;
     52 	int32_t plugged;
     53 	int32_t active;
     54 	struct { int64_t tv_sec; int64_t tv_usec; } plugged_time;
     55 	uint32_t volume;
     56 	int32_t capture_gain;
     57 	int32_t left_right_swapped;
     58 	uint32_t type_enum;
     59 	uint32_t stable_id;
     60 	uint32_t stable_id_new;
     61 	char mic_positions[CRAS_NODE_MIC_POS_BUFFER_SIZE];
     62 	char type[CRAS_NODE_TYPE_BUFFER_SIZE];
     63 	char name[CRAS_NODE_NAME_BUFFER_SIZE];
     64 	char active_hotword_model[CRAS_NODE_HOTWORD_MODEL_BUFFER_SIZE];
     65 };
     66 
     67 /* This is used in the cras_client_set_node_attr API.
     68  *    IONODE_ATTR_PLUGGED - set the node as plugged/unplugged.
     69  *    IONODE_ATTR_VOLUME - set the node's output volume.
     70  *    IONODE_ATTR_CAPTURE_GAIN - set the node's capture gain.
     71  *    IONODE_ATTR_SWAP_LEFT_RIGHT - Swap the node's left and right channel.
     72  */
     73 enum ionode_attr {
     74 	IONODE_ATTR_PLUGGED,
     75 	IONODE_ATTR_VOLUME,
     76 	IONODE_ATTR_CAPTURE_GAIN,
     77 	IONODE_ATTR_SWAP_LEFT_RIGHT
     78 };
     79 
     80 #endif /* CRAS_IODEV_INFO_H_ */
     81