#include #include "usbdrv/usbdrv.h" #include "main.h" #include "spi_proto.h" #include "usb.h" usbMsgLen_t usbFunctionSetup(uchar data[8]) { usbRequest_t *rq = (void *)data; static uchar dataBuffer[5]; if(rq->bRequest == 100) { dataBuffer[0] = (thermoData [0] & 0xff00)>>8; dataBuffer[1] = thermoData [0] & 0x00ff; dataBuffer[2] = (thermoData [1] & 0xff00)>>8; dataBuffer[3] = thermoData [1] & 0x00ff; usbMsgPtr = dataBuffer; return 4; } else if(rq->bRequest == 101) { dataBuffer[0] = (thermoData [2] & 0xff00)>>8; dataBuffer[1] = thermoData [2] & 0x00ff; dataBuffer[2] = (thermoData [3] & 0xff00)>>8; dataBuffer[3] = thermoData [3] & 0x00ff; usbMsgPtr = dataBuffer; return 4; } else { uint8_t opcode = (uint8_t) ((rq->bRequest & 0xff00)>>8); uint8_t addr = (uint8_t) rq->wValue.bytes[0]; uint8_t valH = (uint8_t) rq->wIndex.bytes[0]; uint8_t valL = (uint8_t) rq->wIndex.bytes[1]; uint16_t send = (valH << 8) | valL; // uint16_t recv = spi_master_communicate(opcode, addr, send); dataBuffer[0] = opcode; dataBuffer[1] = addr; dataBuffer[2] = valH; dataBuffer[3] = valL; spi_mst_start_packet(); spi_mst_write_read(5,dataBuffer); spi_mst_end_packet(); usbMsgPtr = dataBuffer+1; return 4; } return 0; }