diff options
Diffstat (limited to 'firmware/usbstack')
-rw-r--r-- | firmware/usbstack/usb_storage.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c index 4954c9272e..0b9e6a95db 100644 --- a/firmware/usbstack/usb_storage.c +++ b/firmware/usbstack/usb_storage.c @@ -31,7 +31,9 @@ /* Needed to get at the audio buffer */ #include "audio.h" #include "usb_storage.h" +#if CONFIG_RTC #include "timefuncs.h" +#endif /* For sector filter macro definitions */ #include "usb-target.h" @@ -299,7 +301,9 @@ static void send_command_result(void *data,int size); static void send_command_failed_result(void); static void send_block_data(void *data,int size); static void receive_block_data(void *data,int size); +#if CONFIG_RTC static void receive_time(void); +#endif static void fill_inquiry(IF_MD_NONVOID(int lun)); static void send_and_read_next(void); static bool ejected[NUM_DRIVES]; @@ -322,11 +326,14 @@ static enum { SENDING_RESULT, SENDING_FAILED_RESULT, RECEIVING_BLOCKS, +#if CONFIG_RTC RECEIVING_TIME, +#endif WAITING_FOR_CSW_COMPLETION_OR_COMMAND, WAITING_FOR_CSW_COMPLETION } state = WAITING_FOR_COMMAND; +#if CONFIG_RTC static void yearday_to_daymonth(int yd, int y, int *d, int *m) { static const char tnl[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; @@ -351,6 +358,7 @@ static void yearday_to_daymonth(int yd, int y, int *d, int *m) *d = yd+1; *m = i; } +#endif /* CONFIG_RTC */ static bool check_disk_present(IF_MD_NONVOID(int volume)) { @@ -491,7 +499,9 @@ void usb_storage_transfer_complete(int ep,int dir,int status,int length) { (void)ep; struct command_block_wrapper* cbw = (void*)cbw_buffer; +#if CONFIG_RTC struct tm tm; +#endif logf("transfer result for ep %d/%d %X %d", ep,dir,status, length); switch(state) { @@ -654,6 +664,7 @@ void usb_storage_transfer_complete(int ep,int dir,int status,int length) cur_sense_data.ascq=0; } break; +#if CONFIG_RTC case RECEIVING_TIME: tm.tm_year=(tb.transfer_buffer[0]<<8)+tb.transfer_buffer[1] - 1900; tm.tm_yday=(tb.transfer_buffer[2]<<8)+tb.transfer_buffer[3]; @@ -665,6 +676,7 @@ void usb_storage_transfer_complete(int ep,int dir,int status,int length) set_time(&tm); send_csw(UMS_STATUS_GOOD); break; +#endif /* CONFIG_RTC */ } } @@ -1131,6 +1143,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) } break; +#if CONFIG_RTC case SCSI_WRITE_BUFFER: if(cbw->command_block[1]==1 /* mode = vendor specific */ && cbw->command_block[2]==0 /* buffer id = 0 */ @@ -1148,6 +1161,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) && cbw->command_block[9]==0) receive_time(); break; +#endif /* CONFIG_RTC */ default: logf("scsi unknown cmd %x",cbw->command_block[0x0]); @@ -1177,11 +1191,14 @@ static void send_command_failed_result(void) state = SENDING_FAILED_RESULT; } +#if CONFIG_RTC static void receive_time(void) { usb_drv_recv(ep_out, tb.transfer_buffer, 12); state = RECEIVING_TIME; } +#endif /* CONFIG_RTC */ + static void receive_block_data(void *data,int size) { usb_drv_recv(ep_out, data, size); |