--- public_html/bottlerocket/br.c Sun Jun 6 22:14:38 1999
+++ br.c Mon Jun 7 23:17:50 1999
@@ -27,13 +27,8 @@
*/
-/*
- * Yeah. I know. It'll get moved to ttySx soon enough... Maybe some day if
- * you're really lucky, I'll even add a command-line option. Woo!
- */
-
-#define X10_DEVICE "/dev/cua0"
-
+#define DEBUG 1
+
char *MyName = "bottlerocket"; /* Default */
void usage()
@@ -44,16 +39,18 @@
fprintf(stderr, "Purpose: Control X10 \"FireCracker\" wireless \n");
fprintf(stderr, " home-control interface things. \n");
fprintf(stderr, " \n");
- fprintf(stderr, "Usage: %s <1-16> (on | off) \n",
+ fprintf(stderr, "Usage: %s [0|1|2|3] <1-16> (on | off) \n",
MyName);
- fprintf(stderr, " %s (bright | dim) \n",
+ fprintf(stderr, " %s [0|1|2|3] (bright | dim) \n\n",
MyName);
- fprintf(stderr, " \n");
+ fprintf(stderr, " [0|1|2|3]: optional, sets serial port to ttyS0,1,2,3\n");
+ fprintf(stderr, " default is ttyS0 \n\n");
+ fprintf(stderr, " \n");
fprintf(stderr, "Examples: %s A1 on \n",
MyName);
- fprintf(stderr, " %s P8 off \n",
+ fprintf(stderr, " %s 3 P8 off \n",
MyName);
- fprintf(stderr, " %s B dim \n",
+ fprintf(stderr, " %s 2 B dim \n",
MyName);
}
@@ -122,6 +119,19 @@
return group;
}
+char* get_port(char *arg1, char *arg2)
+{
+
+ if (!strcmp(arg1,arg2)) return "/dev/ttyS0";
+ else {
+ if (!strcmp(arg2,"0")) return "/dev/ttyS0";
+ if (!strcmp(arg2,"1")) return "/dev/ttyS1";
+ if (!strcmp(arg2,"2")) return "/dev/ttyS2";
+ if (!strcmp(arg2,"3")) return "/dev/ttyS3";
+ }
+ return "0";
+}
+
int main(int argc, char *argv[])
{
char device;
@@ -129,12 +139,12 @@
int cmd;
int fd;
unsigned short unit;
-
+ char* X10_DEVICE = "/dev/ttyS0";
/*
* Who am I?
*/
-
+
if (argc > 0)
MyName = argv[0];
@@ -142,23 +152,25 @@
* What am I doing?
*/
- if ((argc < 3)
- || ((cmd = get_cmd(argv[2])) < 0)
- || ((device = get_device(argv[1], cmd)) < 0)
- || ((group = get_group(argv[1])) < 0)
+
+ if ((argc < 3)
+ || ((cmd = get_cmd(argv[argc - 1])) < 0)
+ || ((device = get_device(argv[argc - 2], cmd)) < 0)
+ || ((group = get_group(argv[argc - 2])) < 0)
+ || !strcmp((X10_DEVICE = get_port(argv[0], argv[argc - 3])),"0")
)
{
- usage();
+ usage();
exit(0);
}
-
+
unit = (unsigned char)((group << 4) | device);
/*
* Snag the serial port...
*/
- if ((fd = open(X10_DEVICE, O_RDWR)) < 0) {
+ if ((fd = open(X10_DEVICE, O_RDWR | O_NONBLOCK)) < 0) {
fprintf(stderr, "%s: Error %d opening %s.\n", MyName, errno,
X10_DEVICE);
perror(MyName);