Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC DIO 5ch TTL a
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
6
Issues
6
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
FMC DIO 5ch TTL a
Commits
78d28cda
Commit
78d28cda
authored
May 05, 2020
by
Jorge Machado
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update wr-dio-cmd.c with new commands
parent
6f8ac345
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
2 deletions
+76
-2
wr-dio-cmd.c
sw/tools/wr-dio-cmd.c
+76
-2
No files found.
sw/tools/wr-dio-cmd.c
View file @
78d28cda
...
...
@@ -126,6 +126,11 @@ static int scan_pulse(int argc, char **argv)
prgname
,
argv
[
0
],
argv
[
4
]);
return
-
1
;
}
if
(
cmd
->
t
[
2
].
tv_nsec
<
1000000
)
{
fprintf
(
stderr
,
"%s: %s: Frequency is greater than 1 kHz
\n
"
,
prgname
,
argv
[
0
]);
}
if
(
sscanf
(
argv
[
5
],
"%i%c"
,
&
cmd
->
value
,
&
c
)
!=
1
)
{
fprintf
(
stderr
,
"%s: %s: invalid count
\"
%s
\"\n
"
,
prgname
,
argv
[
0
],
argv
[
5
]);
...
...
@@ -151,16 +156,17 @@ static int scan_stamp(int argc, char **argv, int ismask)
cmd
->
flags
=
WR_DIO_F_WAIT
;
argc
=
2
;
}
fprintf
(
stderr
,
"scan stamp argc %d
\n
"
,
argc
);
if
(
argc
==
1
)
{
ismask
=
1
;
ch
=
0x
1
f
;
ch
=
0x
3
f
;
}
else
if
(
argc
==
2
)
{
if
(
sscanf
(
argv
[
1
],
"%i%c"
,
&
ch
,
&
c
)
!=
1
)
{
fprintf
(
stderr
,
"%s: %s: not a channel
\"
%s
\"\n
"
,
prgname
,
argv
[
0
],
argv
[
1
]);
exit
(
1
);
}
if
(
ch
<
0
||
ch
>
31
||
(
!
ismask
&&
ch
>
4
))
{
if
(
ch
<
0
||
ch
>
31
||
(
!
ismask
&&
ch
>
5
))
{
fprintf
(
stderr
,
"%s: %s: out of range channel
\"
%s
\"\n
"
,
prgname
,
argv
[
0
],
argv
[
1
]);
exit
(
1
);
...
...
@@ -305,6 +311,67 @@ static int scan_inout(int argc, char **argv)
return
0
;
}
static
int
scan_irq
(
int
argc
,
char
**
argv
)
{
char
c
;
if
(
argc
!=
2
&&
argc
!=
4
)
{
fprintf
(
stderr
,
"%s: %s: wrong number of arguments
\n
"
,
prgname
,
argv
[
0
]);
fprintf
(
stderr
,
" Use: %s <when> "
"[<period> <count>]
\n
"
,
argv
[
0
]);
return
-
1
;
}
/* Next argument is the "when", position 0 in ioctl timestamp array */
if
(
!
strcmp
(
argv
[
1
],
"now"
))
{
cmd
->
flags
|=
WR_DIO_F_NOW
;
}
else
{
char
*
s2
=
argv
[
1
];
fprintf
(
stderr
,
"IRQ Relative time
\n
"
);
if
(
s2
[
0
]
==
'+'
)
{
cmd
->
flags
|=
WR_DIO_F_REL
;
s2
++
;
}
if
(
parse_ts
(
s2
,
cmd
->
t
)
<
0
)
{
fprintf
(
stderr
,
"%s: invalid time
\"
%s
\"\n
"
,
prgname
,
argv
[
1
]);
return
-
1
;
}
}
/* If argc is 4, we have period and count */
if
(
argc
==
4
)
{
cmd
->
flags
|=
WR_DIO_F_LOOP
;
if
(
parse_ts
(
argv
[
2
],
cmd
->
t
+
1
)
<
0
)
{
fprintf
(
stderr
,
"%s: %s: invalid time
\"
%s
\"\n
"
,
prgname
,
argv
[
0
],
argv
[
1
]);
return
-
1
;
}
fprintf
(
stderr
,
"%lu
\n
"
,
cmd
->
t
[
1
].
tv_nsec
);
if
(
cmd
->
t
[
1
].
tv_nsec
<
1000000
)
{
fprintf
(
stderr
,
"%s: %s: Frequency is greater than 1 kHz
\n
"
,
prgname
,
argv
[
0
]);
}
if
(
sscanf
(
argv
[
3
],
"%i%c"
,
&
cmd
->
value
,
&
c
)
!=
1
)
{
fprintf
(
stderr
,
"%s: %s: invalid count
\"
%s
\"\n
"
,
prgname
,
argv
[
0
],
argv
[
3
]);
return
-
1
;
}
}
if
(
ioctl
(
fd
,
PRIV_MEZZANINE_CMD
,
(
unsigned
long
)
cmd
)
<
0
)
{
fprintf
(
stderr
,
"%s: ioctl(PRIV_MEZZANINE_CMD(%s)): %s
\n
"
,
prgname
,
devname
,
strerror
(
errno
));
return
-
1
;
}
return
0
;
}
static
void
print_version
(
char
*
pname
)
{
printf
(
"%s %s
\n
"
,
pname
,
git_version
);
...
...
@@ -356,6 +423,8 @@ int main(int argc, char **argv)
*
* mode <01234>
* mode <ch> <mode> [...]
*
* irq <seconds>.<fraction> [<period> <count>]
*/
if
(
!
strcmp
(
argv
[
0
],
"pulse"
))
{
cmd
->
command
=
WR_DIO_CMD_PULSE
;
...
...
@@ -363,6 +432,7 @@ int main(int argc, char **argv)
exit
(
1
);
}
else
if
(
!
strcmp
(
argv
[
0
],
"stamp"
))
{
cmd
->
command
=
WR_DIO_CMD_STAMP
;
fprintf
(
stderr
,
"Calling scan_stamp
\n
"
);
if
(
scan_stamp
(
argc
,
argv
,
0
/* no mask */
)
<
0
)
exit
(
1
);
}
else
if
(
!
strcmp
(
argv
[
0
],
"stampm"
))
{
...
...
@@ -373,6 +443,10 @@ int main(int argc, char **argv)
cmd
->
command
=
WR_DIO_CMD_INOUT
;
if
(
scan_inout
(
argc
,
argv
)
<
0
)
exit
(
1
);
}
else
if
(
!
strcmp
(
argv
[
0
],
"irq"
))
{
cmd
->
command
=
WR_DIO_CMD_IRQ
;
if
(
scan_irq
(
argc
,
argv
)
<
0
)
exit
(
1
);
}
else
{
fprintf
(
stderr
,
"%s: unknown command
\"
%s
\"\n
"
,
prgname
,
argv
[
0
]);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment