1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdio.h>
2e49f9c923868fd7a62356ab1864444ade4a2cab6Doug Kwan#include <stdlib.h>
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <string.h>
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <fcntl.h>
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <errno.h>
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint smd_main(int argc, char **argv)
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    int fd, len, r, port = 0;
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    char devname[32];
11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    argc--;
12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    argv++;
13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if((argc > 0) && (argv[0][0] == '-')) {
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        port = atoi(argv[0] + 1);
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        argc--;
17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        argv++;
18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    sprintf(devname,"/dev/smd%d",port);
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    fd = open(devname, O_WRONLY);
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if(fd < 0) {
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        fprintf(stderr,"failed to open smd0 - %s\n",
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            strerror(errno));
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        return -1;
26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    while(argc > 0) {
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        len = strlen(argv[0]);
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        r = write(fd, argv[0], len);
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        if(r != len) {
31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            fprintf(stderr,"failed to write smd0 (%d) %s\n",
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project                r, strerror(errno));
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            return -1;
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        }
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        argc--;
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        argv++;
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        write(fd, argc ? " " : "\r", 1);
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    close(fd);
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return 0;
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
42