11
11
#include <cybtldr_api.h>
12
12
#include <cybtldr_api2.h>
13
13
14
+
15
+ #ifdef DEBUG
16
+ # define dbg_printf printf
17
+ #else
18
+ # define dbg_printf
19
+ #endif
20
+
14
21
static char * g_tty_device = "/dev/ttyACM2" ;
15
22
static int g_serial_fd = -1 ;
16
23
@@ -23,7 +30,7 @@ static int serial_open()
23
30
{
24
31
struct termios tty ;
25
32
26
- printf ("Opening serial %s\n" , g_tty_device );
33
+ dbg_printf ("Opening serial %s\n" , g_tty_device );
27
34
28
35
g_serial_fd = open (g_tty_device , O_RDWR | O_NOCTTY );
29
36
if (g_serial_fd < 0 ) {
@@ -54,7 +61,7 @@ static int serial_open()
54
61
55
62
static int serial_close ()
56
63
{
57
- printf ("Closing serial\n" );
64
+ dbg_printf ("Closing serial\n" );
58
65
close (g_serial_fd );
59
66
60
67
return CYRET_SUCCESS ;
@@ -66,7 +73,7 @@ static int serial_read(unsigned char *bytes, int size)
66
73
unsigned long long start_milli = 0 , end_milli = 0 ;
67
74
ssize_t read_bytes ;
68
75
struct pollfd fds [1 ];
69
- int poll_ret ;
76
+ int poll_ret , i ;
70
77
unsigned int cur_byte = 0 ;
71
78
72
79
while (1 ) {
@@ -76,8 +83,8 @@ static int serial_read(unsigned char *bytes, int size)
76
83
77
84
clock_gettime (CLOCK_MONOTONIC , & tp );
78
85
end_milli = timespec_milliseconds (& tp );
79
- if (start_milli && (end_milli - start_milli ) > 1000 )
80
- return CYRET_SUCCESS ;
86
+ if (start_milli && (end_milli - start_milli ) > 100 )
87
+ break ;
81
88
82
89
poll_ret = poll (fds , 1 , 0 );
83
90
if (poll_ret == 0 ) {
@@ -92,7 +99,10 @@ static int serial_read(unsigned char *bytes, int size)
92
99
93
100
read_bytes = read (g_serial_fd , & bytes [cur_byte ++ ], 1 );
94
101
}
95
-
102
+ dbg_printf ("Read %d bytes\n" , cur_byte );
103
+ for (i = 0 ; i < cur_byte ; i ++ )
104
+ dbg_printf (" 0x%02x " , bytes [i ]);
105
+ dbg_printf ("\n" );
96
106
return CYRET_SUCCESS ;
97
107
}
98
108
@@ -101,7 +111,10 @@ static int serial_write(unsigned char *bytes, int size)
101
111
int i ;
102
112
ssize_t write_bytes ;
103
113
104
- printf ("Serial: writing %d bytes to bootloader\n" , size );
114
+ dbg_printf ("Serial: writing %d bytes to bootloader\n" , size );
115
+ for (i = 0 ; i < size ; i ++ )
116
+ dbg_printf (" 0x%02x " , bytes [i ]);
117
+ dbg_printf ("\n" );
105
118
write_bytes = write (g_serial_fd , bytes , size );
106
119
if (write_bytes != size ) {
107
120
printf ("Error when writing bytes\n" );
@@ -116,7 +129,7 @@ CyBtldr_CommunicationsData serial_coms = {
116
129
.CloseConnection = serial_close ,
117
130
.ReadData = serial_read ,
118
131
.WriteData = serial_write ,
119
- .MaxTransferSize = 256 ,
132
+ .MaxTransferSize = 64 ,
120
133
};
121
134
122
135
@@ -136,11 +149,6 @@ int main(int argc, char **argv)
136
149
printf ("Programming failed: %d\n" , ret );
137
150
return 1 ;
138
151
}
139
- printf ("Starting verifying\n" );
140
- ret = CyBtldr_RunAction (VERIFY , argv [1 ], NULL , 1 , & serial_coms , serial_progress_update );
141
- if (ret != CYRET_SUCCESS ) {
142
- printf ("Programming failed: %d\n" , ret );
143
- return 1 ;
144
- }
152
+ printf ("programming OK !\n" );
145
153
return 0 ;
146
154
}
0 commit comments