blob: 42bc646df108d430b6c0c743d7154b37cff86284 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <stdio.h>
#include <lib/fdio/directory.h>
#include <lib/zx/channel.h>
#include <fuchsia/hardware/audiocodec/c/fidl.h>
#include <string.h>
#include <unistd.h>
#include <zircon/status.h>
static zx_status_t cmd_enable(const char* dev, bool enable) {
zx::channel local, remote;
zx_status_t status = zx::channel::create(0, &local, &remote);
if (status != ZX_OK) {
printf("Error creating channel: %s\n", zx_status_get_string(status));
return status;
}
status = fdio_service_connect(dev, remote.release());
if (status != ZX_OK) {
printf("Error opening %s: %s\n", dev, zx_status_get_string(status));
return status;
}
status = fuchsia_hardware_audiocodec_DeviceSetEnabled(local.get(), enable);
if (status != ZX_OK) {
printf("Error enabling for %s: %s\n", dev, zx_status_get_string(status));
return status;
}
return ZX_OK;
}
int main(int argc, const char** argv) {
int rc = 0;
const char *cmd = argc > 1 ? argv[1] : NULL;
if (cmd) {
if (!strcmp(cmd, "help")) {
goto usage;
} else if (!strcmp(cmd, "enable")) {
if (argc < 3) goto usage;
rc = cmd_enable(argv[2], true);
} else if (!strcmp(cmd, "disable")) {
if (argc < 3) goto usage;
rc = cmd_enable(argv[2], false);
} else {
printf("Unrecognized command %s!\n", cmd);
goto usage;
}
} else {
goto usage;
}
return rc;
usage:
printf("Usage:\n");
printf("%s\n", argv[0]);
printf("%s enable <codecdev>\n", argv[0]);
printf("%s disable <codecdev>\n", argv[0]);
return 0;
}