From 5614ec78df9401f97c976a09d93fb628c2063131 Mon Sep 17 00:00:00 2001 From: Dario Ernst Date: Fri, 10 Dec 2010 23:44:05 +0100 Subject: [PATCH] could work a bit better now? --- cmdline/read-temp.c | 34 +++++++++++++++++----------------- firmware/masterchip/usb.c | 10 +++++++--- firmware/shared/spi.h | 7 ++++++- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/cmdline/read-temp.c b/cmdline/read-temp.c index 449a6d8..19bb79f 100644 --- a/cmdline/read-temp.c +++ b/cmdline/read-temp.c @@ -67,24 +67,24 @@ int cnt, vid, pid; int rxValue, rxIndex; int value = 0, index = 0; - int i=0; - cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 1, value, index, buffer, sizeof(buffer), 5000); - if(cnt < 0){ - fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); - } - rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); - rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); - fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); - fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); + /* int i=0; */ + /* cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 1, value, index, buffer, sizeof(buffer), 5000); */ + /* if(cnt < 0){ */ + /* fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); */ + /* } */ + /* rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); */ + /* rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); */ + /* fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); */ + /* fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); */ - cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 2, value, index, buffer, sizeof(buffer), 5000); - if(cnt < 0){ - fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); - } - rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); - rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); - fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); - fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); + /* cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 2, value, index, buffer, sizeof(buffer), 5000); */ + /* if(cnt < 0){ */ + /* fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); */ + /* } */ + /* rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); */ + /* rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); */ + /* fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); */ + /* fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); */ usb_close(handle); diff --git a/firmware/masterchip/usb.c b/firmware/masterchip/usb.c index e1b646d..8afae2e 100644 --- a/firmware/masterchip/usb.c +++ b/firmware/masterchip/usb.c @@ -24,9 +24,13 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) { uint8_t valH = rq->wIndex & 0x00ff; uint8_t valL = (rq->wIndex & 0xff00)>>8; - // uint16_t reply = do_spi_stuff(opcode, addr, valH, valL); - dataBuffer[0] = (reply & 0xff00)>>8; - dataBuffer[1] = reply & 0x00ff; + uint8_t send[] = {opcode, addr, valH, valL}; + uint8_t recv[2]; + spi_mst_write(4, data); + spi_mst_read(2, data) + + dataBuffer[0] = recv[0]; + dataBuffer[1] = recv[1]; dataBuffer[2] = 0x0000; dataBuffer[3] = 0x0000; usbMsgPtr = dataBuffer; diff --git a/firmware/shared/spi.h b/firmware/shared/spi.h index 9ad1eba..fc54966 100644 --- a/firmware/shared/spi.h +++ b/firmware/shared/spi.h @@ -20,7 +20,12 @@ #define SPI_SSIN SPI_INPORT(SPI_SS_PORT) #define SPI_SSDDR SPI_DDRPORT(SPI_SS_PORT) -uint8_t spi_write(uint8_t *data, uint8_t len); void spi_init(); +void spi_mst_start_packet(); +void spi_mst_end_packet(); +void spi_mst_write(uint8_t len, uint8_t *data); +void spi_mst_read(uint8_t len, uint8_t *data); +void spi_sla_handle_packet(); + #endif