mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
OP-21/Flight Bootloader Changed packet size to 64byte
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1398 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
12e447f010
commit
6da48dcc1a
@ -60,7 +60,7 @@ const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] =
|
||||
/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
|
||||
const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] =
|
||||
{
|
||||
0x09, /* bLength: Configuation Descriptor size */
|
||||
0x09, /* bLength: Configuration Descriptor size */
|
||||
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
|
||||
CUSTOMHID_SIZ_CONFIG_DESC,
|
||||
/* wTotalLength: Bytes returned */
|
||||
@ -131,16 +131,16 @@ const uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] =
|
||||
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
|
||||
0x25, 0xff, /* LOGICAL_MAXIMUM (1) */
|
||||
0x75, 0x08, /* REPORT_SIZE (8) */
|
||||
0x95, 9, /* REPORT_COUNT (1) */
|
||||
0x95, 63, /* REPORT_COUNT (1) */
|
||||
0x81, 0x83, /* FEATURE (Data,Var,Abs,Vol) */
|
||||
|
||||
|
||||
/* Led 2 */
|
||||
0x85, 0x02, /* REPORT_ID 2 */
|
||||
0x09, 0x03, /* USAGE (LED 2) */
|
||||
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
|
||||
0x25, 0xff, /* LOGICAL_MAXIMUM (1) */
|
||||
0x75, 0x08, /* REPORT_SIZE (8) */
|
||||
0x95, 9, /* REPORT_COUNT (1) */
|
||||
0x95, 63, /* REPORT_COUNT (1) */
|
||||
0x91, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
|
||||
|
||||
|
||||
|
@ -27,14 +27,15 @@
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
uint8_t Receive_Buffer[10];
|
||||
uint8_t Buffer[10];
|
||||
uint8_t Receive_Buffer[64];
|
||||
uint8_t Buffer[64];
|
||||
uint8_t Command=0;
|
||||
uint8_t EchoReqFlag=0;
|
||||
uint8_t EchoAnsFlag=0;
|
||||
uint8_t StartFlag=0;
|
||||
uint32_t Aditionals=0;
|
||||
uint32_t SizeOfTransfer=0;
|
||||
uint8_t SizeOfLastPacket=0;
|
||||
uint32_t Next_Packet=0;
|
||||
uint8_t TransferType;
|
||||
uint32_t Count=0;
|
||||
@ -43,7 +44,8 @@ uint8_t Data0;
|
||||
uint8_t Data1;
|
||||
uint8_t Data2;
|
||||
uint8_t Data3;
|
||||
|
||||
uint8_t offset=0;
|
||||
uint32_t aux;
|
||||
//Download vars
|
||||
volatile uint32_t downPacketCurrent=0;
|
||||
uint32_t downPacketTotal=0;
|
||||
@ -74,7 +76,7 @@ void FLASH_Download() {
|
||||
Buffer[7] = *FLASH_If_Read(MemLocations[downType] + 1+downPacketCurrent*4, 0);
|
||||
Buffer[8] = *FLASH_If_Read(MemLocations[downType] + 2+downPacketCurrent*4, 0);
|
||||
Buffer[9] = *FLASH_If_Read(MemLocations[downType] + 3+downPacketCurrent*4, 0);
|
||||
USB_SIL_Write(EP1_IN, (uint8_t*) Buffer, 10);
|
||||
USB_SIL_Write(EP1_IN, (uint8_t*) Buffer, 64);
|
||||
downPacketCurrent=downPacketCurrent+1;
|
||||
if(downPacketCurrent>downPacketTotal)
|
||||
{
|
||||
@ -141,6 +143,7 @@ void EP1_OUT_Callback(void)
|
||||
SizeOfTransfer=Count;
|
||||
Next_Packet=1;
|
||||
DeviceState=uploading;
|
||||
SizeOfLastPacket=Data1;
|
||||
|
||||
|
||||
}
|
||||
@ -149,7 +152,21 @@ void EP1_OUT_Callback(void)
|
||||
// STM_EVAL_LEDOn(LED2);
|
||||
if(Count==Next_Packet-1)
|
||||
{
|
||||
FLASH_ProgramWord(MemLocations[TransferType]+Count*4,Data);
|
||||
uint8_t numberOfWords=14;
|
||||
if(Count==SizeOfTransfer)//is this the last packet?
|
||||
{
|
||||
numberOfWords=SizeOfLastPacket;
|
||||
}
|
||||
for(uint8_t x=0;x<numberOfWords;++x)
|
||||
{
|
||||
offset=4*x;
|
||||
Data=Receive_Buffer[6+offset]<<24;
|
||||
Data+=Receive_Buffer[7+offset]<<16;
|
||||
Data+=Receive_Buffer[8+offset]<<8;
|
||||
Data+=Receive_Buffer[9+offset];
|
||||
aux=MemLocations[TransferType]+(uint32_t)(Count*14*4+x*4);
|
||||
FLASH_ProgramWord(aux,Data);
|
||||
}
|
||||
++Next_Packet;
|
||||
}
|
||||
else
|
||||
@ -236,7 +253,7 @@ void EP1_OUT_Callback(void)
|
||||
Buffer[8]=0;
|
||||
Buffer[9]=0;
|
||||
|
||||
USB_SIL_Write(EP1_IN, (uint8_t*)Buffer,10);
|
||||
USB_SIL_Write(EP1_IN, (uint8_t*)Buffer,64);
|
||||
SetEPTxValid(ENDP1);
|
||||
if(DeviceState==Last_operation_Success)
|
||||
{
|
||||
|
@ -167,8 +167,8 @@ void CustomHID_Reset(void)
|
||||
SetEPType(ENDP1, EP_INTERRUPT);
|
||||
SetEPTxAddr(ENDP1, ENDP1_TXADDR);
|
||||
SetEPRxAddr(ENDP1, ENDP1_RXADDR);
|
||||
SetEPTxCount(ENDP1, 11);
|
||||
SetEPRxCount(ENDP1, 11);
|
||||
SetEPTxCount(ENDP1, 64);
|
||||
SetEPRxCount(ENDP1, 64);
|
||||
SetEPRxStatus(ENDP1, EP_RX_VALID);
|
||||
SetEPTxStatus(ENDP1, EP_TX_NAK);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user