This source file includes following definitions.
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include <sys/types.h>
19 #include <sys/uio.h>
20 #include <fcntl.h>
21 #include <sys/param.h>
22
23 #include <dev/usb/ezload.h>
24 #include "uyap_firmware.h"
25 #define FILENAME "uyap"
26
27 int
28 main(int argc, char *argv[])
29 {
30 const struct ezdata *ptr;
31 u_int16_t address;
32 int fd;
33
34 printf("creating %s length %d\n", FILENAME, sizeof uyap_firmware);
35 fd = open(FILENAME, O_WRONLY|O_CREAT|O_TRUNC, 0644);
36 if (fd == -1)
37 err(1, "%s", FILENAME);
38
39 for (ptr = uyap_firmware; ; ptr++) {
40 struct iovec iov[3];
41 u_int8_t length;
42 ssize_t tlen, rlen;
43
44 length = ptr->length;
45 iov[0].iov_base = &length;
46 iov[0].iov_len = 1;
47
48 address = htole16(ptr->address);
49 iov[1].iov_base = &address;
50 iov[1].iov_len = 2;
51
52 iov[2].iov_base = ptr->data;
53 iov[2].iov_len = ptr->length;
54
55 tlen = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len;
56
57 rlen = writev(fd, iov, 3);
58 if (rlen == -1)
59 err(1, "%s", FILENAME);
60 if (rlen != tlen)
61 err(1, "%s: short write", FILENAME);
62
63 if (ptr->length == 0)
64 break;
65 }
66
67 return 0;
68 }