mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-25 17:58:32 +03:00
phone.c: Check return values of USB_Write
This commit is contained in:
@@ -295,7 +295,7 @@ void send_ATR(uint8_t *ATR, uint8_t status, uint32_t transferred, uint32_t remai
|
|||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
if (status != USBD_STATUS_SUCCESS) {
|
if (status != USBD_STATUS_SUCCESS) {
|
||||||
TRACE_ERROR("USB err status (%s): %d", __FUNCTION__, status);
|
TRACE_ERROR("USB err status: %d (%s)", __FUNCTION__, status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PR("Send %x %x .. %x (tr: %d, st: %x)", ATR[0], ATR[1], ATR[transferred-1], transferred, status);
|
PR("Send %x %x .. %x (tr: %d, st: %x)", ATR[0], ATR[1], ATR[transferred-1], transferred, status);
|
||||||
@@ -311,7 +311,7 @@ void sendResponse( uint8_t *pArg, uint8_t status, uint32_t transferred, uint32_t
|
|||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
if (status != USBD_STATUS_SUCCESS) {
|
if (status != USBD_STATUS_SUCCESS) {
|
||||||
TRACE_ERROR("USB err status (%s): %d", __FUNCTION__, status);
|
TRACE_ERROR("USB err status: %d (%s)", __FUNCTION__, status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PR("sendResp, stat: %X, trnsf: %x, rem: %x\n\r", status, transferred, remaining);
|
PR("sendResp, stat: %X, trnsf: %x, rem: %x\n\r", status, transferred, remaining);
|
||||||
@@ -335,19 +335,27 @@ extern ring_buffer buf;
|
|||||||
|
|
||||||
void wait_for_response(uint8_t pBuffer[]) {
|
void wait_for_response(uint8_t pBuffer[]) {
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
// uint8_t msg[] = {0xa0, 0xa4, 0x0, 0x0, 0x2};
|
|
||||||
if (rcvdChar != 0) {
|
if (rcvdChar != 0) {
|
||||||
printf(" rr ");
|
printf(" rr ");
|
||||||
|
|
||||||
/* DATA_IN for host side is data_out for simtrace side */
|
/* DATA_IN for host side is data_out for simtrace side */
|
||||||
/* FIXME: Performancewise sending a USB packet for every byte is a disaster */
|
|
||||||
ret = USBD_Write( PHONE_DATAIN, buf.buf, BUFLEN, 0, 0 );
|
ret = USBD_Write( PHONE_DATAIN, buf.buf, BUFLEN, 0, 0 );
|
||||||
//USBD_Write( PHONE_DATAIN, msg, BUFLEN, 0, 0 );
|
if (ret != USBD_STATUS_SUCCESS) {
|
||||||
|
TRACE_ERROR("USB err status: %d (%s)", __FUNCTION__, ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
PR("b:%x %x %x %x %x.\n\r", buf.buf[0], buf.buf[1],buf.buf[2], buf.buf[3], buf.buf[4]);
|
PR("b:%x %x %x %x %x.\n\r", buf.buf[0], buf.buf[1],buf.buf[2], buf.buf[3], buf.buf[4]);
|
||||||
|
|
||||||
rcvdChar = 0;
|
rcvdChar = 0;
|
||||||
} else if (timeout_occured && buf.idx != 0) {
|
} else if (timeout_occured && buf.idx != 0) {
|
||||||
printf(" to ");
|
printf(" to ");
|
||||||
|
|
||||||
ret = USBD_Write( PHONE_DATAIN, buf.buf, buf.idx, 0, 0 );
|
ret = USBD_Write( PHONE_DATAIN, buf.buf, buf.idx, 0, 0 );
|
||||||
|
if (ret != USBD_STATUS_SUCCESS) {
|
||||||
|
TRACE_ERROR("USB err status: %d (%s)", __FUNCTION__, ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
timeout_occured = 0;
|
timeout_occured = 0;
|
||||||
buf.idx = 0;
|
buf.idx = 0;
|
||||||
rcvdChar = 0;
|
rcvdChar = 0;
|
||||||
@@ -391,7 +399,8 @@ void Phone_run( void )
|
|||||||
switch (state) {
|
switch (state) {
|
||||||
case RST_RCVD:
|
case RST_RCVD:
|
||||||
if ((ret = USBD_Write( PHONE_INT, &msg, 1, 0, 0 )) != USBD_STATUS_SUCCESS) {
|
if ((ret = USBD_Write( PHONE_INT, &msg, 1, 0, 0 )) != USBD_STATUS_SUCCESS) {
|
||||||
PR("USB Error: %X", ret);
|
TRACE_ERROR("USB err status: %d (%s)", __FUNCTION__, ret);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
//buf.idx = 0;
|
//buf.idx = 0;
|
||||||
//rcvdChar = 0;
|
//rcvdChar = 0;
|
||||||
@@ -401,8 +410,8 @@ void Phone_run( void )
|
|||||||
PR("Reading started sucessfully (ATR)");
|
PR("Reading started sucessfully (ATR)");
|
||||||
state = WAIT_ATR;
|
state = WAIT_ATR;
|
||||||
} else {
|
} else {
|
||||||
// PR("USB Error: %X", ret);
|
TRACE_ERROR("USB err status: %d (%s)", __FUNCTION__, ret);
|
||||||
//FIXME: state = ERR;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WAIT_CMD_PHONE:
|
case WAIT_CMD_PHONE:
|
||||||
@@ -415,10 +424,4 @@ void Phone_run( void )
|
|||||||
// PR(":(");
|
// PR(":(");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Function Phone_run not implemented yet
|
|
||||||
|
|
||||||
/* Send and receive chars */
|
|
||||||
// ISO7816_GetChar(&rcv_char);
|
|
||||||
// ISO7816_SendChar(char_to_send);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user