1// Copyright 2017 The Fuchsia 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#include <stdio.h>
6#include <unistd.h>
7#include <fcntl.h>
8#include <string.h>
9#include <zircon/device/audio-codec.h>
10
11static int cmd_enable(const char* dev, bool enable) {
12    int fd = open(dev, O_RDONLY);
13    if (fd < 0) {
14        printf("Error opening %s\n", dev);
15        return fd;
16    }
17
18    ssize_t rc = ioctl_audio_codec_enable(fd, &enable);
19    if (rc < 0) {
20        printf("Error enabling for %s (rc %zd)\n", dev, rc);
21        close(fd);
22        goto out;
23    }
24
25out:
26    close(fd);
27    return rc;
28}
29
30int main(int argc, const char** argv) {
31    int rc = 0;
32    const char *cmd = argc > 1 ? argv[1] : NULL;
33    if (cmd) {
34        if (!strcmp(cmd, "help")) {
35            goto usage;
36        } else if (!strcmp(cmd, "enable")) {
37            if (argc < 3) goto usage;
38            rc = cmd_enable(argv[2], true);
39        } else if (!strcmp(cmd, "disable")) {
40            if (argc < 3) goto usage;
41            rc = cmd_enable(argv[2], false);
42        } else {
43            printf("Unrecognized command %s!\n", cmd);
44            goto usage;
45        }
46    } else {
47        goto usage;
48    }
49    return rc;
50usage:
51    printf("Usage:\n");
52    printf("%s\n", argv[0]);
53    printf("%s enable <codecdev>\n", argv[0]);
54    printf("%s disable <codecdev>\n", argv[0]);
55    return 0;
56}
57