SDK Script serial-tcsetattr.are

serial-tcsetattr.are
/* DESC: This script can be used to set/get the attributes of the serial port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */
 
void usage() 
{
    printf("usage: serial-tcsetattr.are <dev> <baud> <databit> <stopbit> <parity> <flow>\n");
    printf("    dev        device to open (e.g. SERIAL1)\n");
    printf("    baud       baudrate (e.g. 115200)\n");
    printf("    databit    data bit [7|8]\n");
    printf("    stopbit    stopbit [0|1]\n");
    printf("    parity     parity [0|1]\n");
    printf("    flow       flow-control [0|1]\n");
 
    exit(1);
}
 
 
if (argc < 6) {
   usage();
}
 
DEV     = argv[1];
BAUD    = (int)argv[2];
DATABIT = (int)argv[3];
STOPBIT = (int)argv[4];
PARITY  = (int)argv[5];
FLOWCTL = (int)argv[6];
 
/* check serial port config */
idx = right(DEV, 1);
 
if (idx < 0 || idx > 1) {
    nb_syslog("Invalid serial port specified");
    exit(1);
 
}
st = nb_config_get(sprintf("serial.%d.status", idx));
if (st != "2") {
    nb_syslog("Serial port is not enabled for us");
    exit(1);
}
 
 
ret = nb_serial_setattr(DEV, BAUD, DATABIT, STOPBIT, PARITY, FLOWCTL);
if (ret == 0) {
    printf("Successfully set serial attributes of %s\n", DEV);
} else {
    printf("Unable to set serial attributes of %s\n", DEV);
    exit(1);
}
 
attr = nb_serial_getattr(DEV);
if (is_void(attr)) {
    printf("Unable to get attributes of %s\n", DEV);
    exit(1);
}
 
printf("%s is now configured as follows:\n", DEV);
printf("baudrate: %d\ndatabit: %d\nstopbit: %d\nparity: %d\nflowctl: %d\n",
        struct_get(attr, "baudrate"),
        struct_get(attr, "databit"),
        struct_get(attr, "stopbit"),
        struct_get(attr, "parity"),
        struct_get(attr, "flowctl")
);
 
 
exit(0);