@@ -82,16 +82,10 @@ int tty_open(const char *tty, struct termios *old)
8282static void fastboot_opened (struct fastboot * fb , void * data )
8383{
8484 const uint8_t one = 1 ;
85- struct msg * msg ;
8685
8786 warnx ("fastboot connection opened" );
8887
89- msg = alloca (sizeof (* msg ) + 1 );
90- msg -> type = MSG_FASTBOOT_PRESENT ;
91- msg -> len = 1 ;
92- memcpy (msg -> data , & one , 1 );
93-
94- write (STDOUT_FILENO , msg , sizeof (* msg ) + 1 );
88+ cdba_send_buf (MSG_FASTBOOT_PRESENT , 1 , & one );
9589}
9690
9791static void fastboot_info (struct fastboot * fb , const void * buf , size_t len )
@@ -102,14 +96,8 @@ static void fastboot_info(struct fastboot *fb, const void *buf, size_t len)
10296static void fastboot_disconnect (void * data )
10397{
10498 const uint8_t zero = 0 ;
105- struct msg * msg ;
10699
107- msg = alloca (sizeof (* msg ) + 1 );
108- msg -> type = MSG_FASTBOOT_PRESENT ;
109- msg -> len = 1 ;
110- memcpy (msg -> data , & zero , 1 );
111-
112- write (STDOUT_FILENO , msg , sizeof (* msg ) + 1 );
100+ cdba_send_buf (MSG_FASTBOOT_PRESENT , 1 , & zero );
113101}
114102
115103static struct fastboot_ops fastboot_ops = {
@@ -120,23 +108,20 @@ static struct fastboot_ops fastboot_ops = {
120108
121109static void msg_select_board (const void * param )
122110{
123- struct msg reply = { MSG_SELECT_BOARD , 0 };
124-
125111 selected_device = device_open (param , username , & fastboot_ops );
126112 if (!selected_device ) {
127113 fprintf (stderr , "failed to open %s\n" , (const char * )param );
128114 quit_invoked = true;
129115 }
130116
131- write ( STDOUT_FILENO , & reply , sizeof ( reply ) );
117+ cdba_send ( MSG_SELECT_BOARD );
132118}
133119
134120static void * fastboot_payload ;
135121static size_t fastboot_size ;
136122
137123static void msg_fastboot_download (const void * data , size_t len )
138124{
139- struct msg reply = { MSG_FASTBOOT_DOWNLOAD , };
140125 size_t new_size = fastboot_size + len ;
141126 char * newp ;
142127
@@ -152,18 +137,23 @@ static void msg_fastboot_download(const void *data, size_t len)
152137 if (!len ) {
153138 device_boot (selected_device , fastboot_payload , fastboot_size );
154139
155- write ( STDOUT_FILENO , & reply , sizeof ( reply ) );
140+ cdba_send ( MSG_FASTBOOT_DOWNLOAD );
156141 free (fastboot_payload );
157142 fastboot_payload = NULL ;
158143 fastboot_size = 0 ;
159144 }
160145}
161146
162- static void invoke_reply (int reply )
147+ void cdba_send_buf (int type , size_t len , const void * buf )
163148{
164- struct msg msg = { reply , };
149+ struct msg msg = {
150+ .type = type ,
151+ .len = len
152+ };
165153
166154 write (STDOUT_FILENO , & msg , sizeof (msg ));
155+ if (len )
156+ write (STDOUT_FILENO , buf , len );
167157}
168158
169159static int handle_stdin (int fd , void * buf )
@@ -206,12 +196,12 @@ static int handle_stdin(int fd, void *buf)
206196 case MSG_POWER_ON :
207197 device_power (selected_device , true);
208198
209- invoke_reply (MSG_POWER_ON );
199+ cdba_send (MSG_POWER_ON );
210200 break ;
211201 case MSG_POWER_OFF :
212202 device_power (selected_device , false);
213203
214- invoke_reply (MSG_POWER_OFF );
204+ cdba_send (MSG_POWER_OFF );
215205 break ;
216206 case MSG_FASTBOOT_DOWNLOAD :
217207 msg_fastboot_download (msg -> data , msg -> len );
0 commit comments