cake
/
p7utils
Archived
1
0
Fork 0

Using p7_makesettings now.

This commit is contained in:
Thomas Touhey 2017-04-06 18:54:18 +02:00
parent bd9ebf1ce5
commit 69aaf390a4
1 changed files with 10 additions and 48 deletions

View File

@ -177,52 +177,6 @@ FOOT;
return (0); \
}
/**
* make_settings:
* Make settings from a string.
*
* @arg fmt the format string.
* @arg settings the settings to set.
* @return if there was an error (0 if ok).
*/
static int make_settings(const char *argname,
const char *fmt, p7_streamsettings_t *settings)
{
/* extract data from the string */
unsigned int speed; char par; int stop;
if (sscanf(fmt, "%u%c%d", &speed, &par, &stop) < 3
|| (par != 'N' && par != 'E' && par != 'O')
|| (stop != 1 && stop != 2)) {
log("%s: invalid format, expected <speed,parity,stop bits>, e.g. "
"9600N2 or 115200O1!\n", argname);
return (1);
}
/* get the speed */
switch (speed) {
case 9600: speed = P7_B9600; break;
case 19200: speed = P7_B19200; break;
case 38400: speed = P7_B38400; break;
case 57600: speed = P7_B57600; break;
case 115200: speed = P7_B115200; break;
default:
log("%s: %u is not a valid speed!\n", argname, speed);
return (1);
}
/* set the settings */
p7_initcomm(settings);
settings->speed = speed;
settings->flags &= ~(P7_TWOSTOPBITS | P7_PARMASK);
settings->flags |= --stop ? P7_TWOSTOPBITS : P7_ONESTOPBIT;
settings->flags |= par == 'N' ? P7_PARDIS :
par == 'E' ? P7_PARENB | P7_PAREVEN : P7_PARENB | P7_PARODD;
/* no error! */
return (0);
}
/**
* parse_args:
* Args parsing main function.
@ -415,8 +369,12 @@ int parse_args(int ac, char **av, args_t *args)
/* use serial settings */
if (s_use) {
if (args->com) args->use = &args->_use;
if (make_settings("--use", s_use, &args->_use))
if (p7_makesettings(&args->_use, s_use)) {
log("--use: invalid format!\n");
log("--use: expected <speed><parity><stopbits>, "
"e.g. 9600N2 or 115200E1!\n");
return (0);
}
}
/* set serial settings */
@ -425,8 +383,12 @@ int parse_args(int ac, char **av, args_t *args)
else if (s_set) {
args->do_the_set = 1;
if (args->com) args->set = &args->_set;
if (make_settings("--set", s_set, &args->_set))
if (p7_makesettings(&args->_set, s_set)) {
log("--set: invalid format!\n");
log("--set: expected <speed><parity><stopbits>, "
"e.g. 9600N2 or 115200E1!\n");
return (0);
}
}
/* check local path */