mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 04:43:53 +00:00
- add '-f' option to force root node.
- fix byte order in read_write_quad() - show hostnames in the list - fix typo in manpage MFC after: 1 week
This commit is contained in:
parent
b455d946f5
commit
302176c71f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=176810
|
@ -39,6 +39,7 @@
|
||||||
.Op Fl o Ar node
|
.Op Fl o Ar node
|
||||||
.Op Fl s Ar node
|
.Op Fl s Ar node
|
||||||
.Op Fl l Ar file
|
.Op Fl l Ar file
|
||||||
|
.Op Fl f Ar node
|
||||||
.Op Fl g Ar gap_count
|
.Op Fl g Ar gap_count
|
||||||
.Op Fl b Ar pri_req
|
.Op Fl b Ar pri_req
|
||||||
.Op Fl M Ar mode
|
.Op Fl M Ar mode
|
||||||
|
@ -77,6 +78,10 @@ Write to the
|
||||||
register on the node.
|
register on the node.
|
||||||
.It Fl l Ar file
|
.It Fl l Ar file
|
||||||
Load hex dump file of the configuration ROM and parse it.
|
Load hex dump file of the configuration ROM and parse it.
|
||||||
|
.It Fl f Ar node
|
||||||
|
Force specified
|
||||||
|
.Ar node
|
||||||
|
to be the root node on the next bus reset.
|
||||||
.It Fl g Ar gap_count
|
.It Fl g Ar gap_count
|
||||||
Broadcast
|
Broadcast
|
||||||
.Ar gap_count
|
.Ar gap_count
|
||||||
|
@ -98,7 +103,7 @@ an error complaining about "format 0x20", try to force the "mpeg" mode.
|
||||||
.It Fl R Ar filename
|
.It Fl R Ar filename
|
||||||
Receive DV or MPEG TS stream and dump it to a file.
|
Receive DV or MPEG TS stream and dump it to a file.
|
||||||
Use Ctrl-C to stop the receiving.
|
Use Ctrl-C to stop the receiving.
|
||||||
Some DV cameras seem not to send the stream if a bus manager exits.
|
Some DV cameras seem not to send the stream if a bus manager exists.
|
||||||
If you cannot get the stream, try the following commands:
|
If you cannot get the stream, try the following commands:
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
sysctl hw.firewire.try_bmr=0
|
sysctl hw.firewire.try_bmr=0
|
||||||
|
|
|
@ -64,10 +64,12 @@ static void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"fwcontrol [-u bus_num] [-rt] [-g gap_count] [-o node] "
|
"fwcontrol [-u bus_num] [-rt] [-f node] [-g gap_count] "
|
||||||
|
"[-o node] "
|
||||||
"[-b pri_req] [-c node] [-d node] [-l file] "
|
"[-b pri_req] [-c node] [-d node] [-l file] "
|
||||||
"[-R file] [-S file] [-m target]\n"
|
"[-R file] [-S file] [-m target]\n"
|
||||||
"\t-u: specify bus number\n"
|
"\t-u: specify bus number\n"
|
||||||
|
"\t-f: broadcast force_root by phy_config packet\n"
|
||||||
"\t-g: broadcast gap_count by phy_config packet\n"
|
"\t-g: broadcast gap_count by phy_config packet\n"
|
||||||
"\t-o: send link-on packet to the node\n"
|
"\t-o: send link-on packet to the node\n"
|
||||||
"\t-s: write RESET_START register on the node\n"
|
"\t-s: write RESET_START register on the node\n"
|
||||||
|
@ -153,20 +155,23 @@ list_dev(int fd)
|
||||||
struct fw_devlstreq *data;
|
struct fw_devlstreq *data;
|
||||||
struct fw_devinfo *devinfo;
|
struct fw_devinfo *devinfo;
|
||||||
struct eui64 eui;
|
struct eui64 eui;
|
||||||
char addr[EUI64_SIZ];
|
char addr[EUI64_SIZ], hostname[40];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
data = get_dev(fd);
|
data = get_dev(fd);
|
||||||
printf("%d devices (info_len=%d)\n", data->n, data->info_len);
|
printf("%d devices (info_len=%d)\n", data->n, data->info_len);
|
||||||
printf("node EUI64 status\n");
|
printf("node EUI64 status hostname\n");
|
||||||
for (i = 0; i < data->info_len; i++) {
|
for (i = 0; i < data->info_len; i++) {
|
||||||
devinfo = &data->dev[i];
|
devinfo = &data->dev[i];
|
||||||
fweui2eui64(&devinfo->eui, &eui);
|
fweui2eui64(&devinfo->eui, &eui);
|
||||||
eui64_ntoa(&eui, addr, sizeof(addr));
|
eui64_ntoa(&eui, addr, sizeof(addr));
|
||||||
printf("%4d %s %6d\n",
|
if (eui64_ntohost(hostname, sizeof(hostname), &eui))
|
||||||
|
hostname[0] = 0;
|
||||||
|
printf("%4d %s %6d %s\n",
|
||||||
(devinfo->status || i == 0) ? devinfo->dst : -1,
|
(devinfo->status || i == 0) ? devinfo->dst : -1,
|
||||||
addr,
|
addr,
|
||||||
devinfo->status
|
devinfo->status,
|
||||||
|
hostname
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
free((void *)data);
|
free((void *)data);
|
||||||
|
@ -198,7 +203,7 @@ read_write_quad(int fd, struct fw_eui64 eui, u_int32_t addr_lo, int readmode, u_
|
||||||
|
|
||||||
qld = (u_int32_t *)&asyreq->pkt;
|
qld = (u_int32_t *)&asyreq->pkt;
|
||||||
if (!readmode)
|
if (!readmode)
|
||||||
asyreq->pkt.mode.wreqq.data = data;
|
asyreq->pkt.mode.wreqq.data = htonl(data);
|
||||||
|
|
||||||
if (ioctl(fd, FW_ASYREQ, asyreq) < 0) {
|
if (ioctl(fd, FW_ASYREQ, asyreq) < 0) {
|
||||||
err(1, "ioctl");
|
err(1, "ioctl");
|
||||||
|
@ -676,7 +681,7 @@ main(int argc, char **argv)
|
||||||
list_dev(fd);
|
list_dev(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "M:g:m:o:s:b:prtc:d:l:u:R:S:")) != -1)
|
while ((ch = getopt(argc, argv, "M:f:g:m:o:s:b:prtc:d:l:u:R:S:")) != -1)
|
||||||
switch(ch) {
|
switch(ch) {
|
||||||
case 'b':
|
case 'b':
|
||||||
tmp = strtol(optarg, NULL, 0);
|
tmp = strtol(optarg, NULL, 0);
|
||||||
|
@ -697,6 +702,11 @@ main(int argc, char **argv)
|
||||||
get_crom(fd, tmp, crom_buf, len);
|
get_crom(fd, tmp, crom_buf, len);
|
||||||
dump_crom(crom_buf);
|
dump_crom(crom_buf);
|
||||||
break;
|
break;
|
||||||
|
case 'f':
|
||||||
|
tmp = strtol(optarg, NULL, 0);
|
||||||
|
open_dev(&fd, devbase);
|
||||||
|
send_phy_config(fd, tmp, -1);
|
||||||
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
tmp = strtol(optarg, NULL, 0);
|
tmp = strtol(optarg, NULL, 0);
|
||||||
open_dev(&fd, devbase);
|
open_dev(&fd, devbase);
|
||||||
|
|
Loading…
Reference in a new issue