mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-21 11:54:15 +01:00
OP-21/Bootloader - Maximize flash space available for user code. Bring back delay on HID send (board->pc) it still hangs when blasted with data. AHRS is now Readable.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2263 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
5748fe0e90
commit
14ef24a3de
@ -161,9 +161,7 @@ void process_spi_request(void) {
|
|||||||
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_VERSIONS);
|
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_VERSIONS);
|
||||||
user_tx_v0.payload.user.v.rsp.versions.bl_version = BOOTLOADER_VERSION;
|
user_tx_v0.payload.user.v.rsp.versions.bl_version = BOOTLOADER_VERSION;
|
||||||
user_tx_v0.payload.user.v.rsp.versions.hw_version = HW_VERSION;
|
user_tx_v0.payload.user.v.rsp.versions.hw_version = HW_VERSION;
|
||||||
user_tx_v0.payload.user.v.rsp.versions.fw_version = Fw_crc;
|
user_tx_v0.payload.user.v.rsp.versions.fw_crc = Fw_crc;
|
||||||
read_description(
|
|
||||||
(uint8_t *) &(user_tx_v0.payload.user.v.rsp.versions.description));
|
|
||||||
lfsm_user_set_tx_v0(&user_tx_v0);
|
lfsm_user_set_tx_v0(&user_tx_v0);
|
||||||
break;
|
break;
|
||||||
case OPAHRS_MSG_V0_REQ_MEM_MAP:
|
case OPAHRS_MSG_V0_REQ_MEM_MAP:
|
||||||
@ -213,6 +211,15 @@ void process_spi_request(void) {
|
|||||||
user_tx_v0.payload.user.v.rsp.fwup_status.status = boot_status;
|
user_tx_v0.payload.user.v.rsp.fwup_status.status = boot_status;
|
||||||
lfsm_user_set_tx_v0(&user_tx_v0);
|
lfsm_user_set_tx_v0(&user_tx_v0);
|
||||||
break;
|
break;
|
||||||
|
case OPAHRS_MSG_V0_REQ_FWDN_DATA:
|
||||||
|
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWDN_DATA);
|
||||||
|
uint32_t adr=user_rx_v0.payload.user.v.req.fwdn_data.adress;
|
||||||
|
for(uint8_t x=0;x<4;++x)
|
||||||
|
{
|
||||||
|
user_tx_v0.payload.user.v.rsp.fw_dn.data[x]=*FLASH_If_Read(adr+x);
|
||||||
|
}
|
||||||
|
lfsm_user_set_tx_v0(&user_tx_v0);
|
||||||
|
break;
|
||||||
case OPAHRS_MSG_V0_REQ_FWUP_START:
|
case OPAHRS_MSG_V0_REQ_FWUP_START:
|
||||||
FLASH_Unlock();
|
FLASH_Unlock();
|
||||||
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWUP_STATUS);
|
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWUP_STATUS);
|
||||||
|
@ -55,6 +55,7 @@ uint32_t baseOfAdressType(uint8_t type);
|
|||||||
uint8_t isBiggerThanAvailable(uint8_t type, uint32_t size);
|
uint8_t isBiggerThanAvailable(uint8_t type, uint32_t size);
|
||||||
void OPDfuIni(uint8_t discover);
|
void OPDfuIni(uint8_t discover);
|
||||||
void DataDownload(DownloadAction);
|
void DataDownload(DownloadAction);
|
||||||
|
bool flash_read(uint8_t * buffer, uint32_t adr, DFUProgType type);
|
||||||
#endif /* __OP_DFU_H */
|
#endif /* __OP_DFU_H */
|
||||||
|
|
||||||
/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/
|
/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/
|
||||||
|
@ -66,7 +66,6 @@ uint8_t Data2;
|
|||||||
uint8_t Data3;
|
uint8_t Data3;
|
||||||
uint8_t offset = 0;
|
uint8_t offset = 0;
|
||||||
uint32_t aux;
|
uint32_t aux;
|
||||||
uint8_t spi_dev_desc[200] = { 0 };
|
|
||||||
//Download vars
|
//Download vars
|
||||||
uint32_t downSizeOfLastPacket = 0;
|
uint32_t downSizeOfLastPacket = 0;
|
||||||
uint32_t downPacketTotal = 0;
|
uint32_t downPacketTotal = 0;
|
||||||
@ -102,6 +101,11 @@ void DataDownload(DownloadAction action) {
|
|||||||
for (uint8_t x = 0; x < packetSize; ++x) {
|
for (uint8_t x = 0; x < packetSize; ++x) {
|
||||||
partoffset = (downPacketCurrent * 14 * 4) + (x * 4);
|
partoffset = (downPacketCurrent * 14 * 4) + (x * 4);
|
||||||
offset = baseOfAdressType(downType) + partoffset;
|
offset = baseOfAdressType(downType) + partoffset;
|
||||||
|
if(!flash_read(SendBuffer+(6+x*4),offset,currentProgrammingDestination))
|
||||||
|
{
|
||||||
|
DeviceState = Last_operation_failed;
|
||||||
|
}
|
||||||
|
/*
|
||||||
switch (currentProgrammingDestination) {
|
switch (currentProgrammingDestination) {
|
||||||
case Remote_flash_via_spi:
|
case Remote_flash_via_spi:
|
||||||
if (downType == Descript) {
|
if (downType == Descript) {
|
||||||
@ -122,7 +126,7 @@ void DataDownload(DownloadAction action) {
|
|||||||
SendBuffer[9 + (x * 4)] = *FLASH_If_Read(offset + 3);
|
SendBuffer[9 + (x * 4)] = *FLASH_If_Read(offset + 3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
//PIOS USB_SIL_Write(EP1_IN, (uint8_t*) SendBuffer, 64);
|
//PIOS USB_SIL_Write(EP1_IN, (uint8_t*) SendBuffer, 64);
|
||||||
downPacketCurrent = downPacketCurrent + 1;
|
downPacketCurrent = downPacketCurrent + 1;
|
||||||
@ -495,13 +499,8 @@ void OPDfuIni(uint8_t discover) {
|
|||||||
if (PIOS_OPAHRS_bl_GetVersions(&rsp) == OPAHRS_RESULT_OK) {
|
if (PIOS_OPAHRS_bl_GetVersions(&rsp) == OPAHRS_RESULT_OK) {
|
||||||
dev.programmingType = Remote_flash_via_spi;
|
dev.programmingType = Remote_flash_via_spi;
|
||||||
dev.BL_Version = rsp.payload.user.v.rsp.versions.bl_version;
|
dev.BL_Version = rsp.payload.user.v.rsp.versions.bl_version;
|
||||||
dev.FW_Crc = rsp.payload.user.v.rsp.versions.fw_version;
|
dev.FW_Crc = rsp.payload.user.v.rsp.versions.fw_crc;
|
||||||
dev.devID = rsp.payload.user.v.rsp.versions.hw_version;
|
dev.devID = rsp.payload.user.v.rsp.versions.hw_version;
|
||||||
for (int x = 0; x < 200; ++x) {
|
|
||||||
spi_dev_desc[x]
|
|
||||||
= (uint8_t) rsp.payload.user.v.rsp.versions.description[x];
|
|
||||||
|
|
||||||
}
|
|
||||||
if (PIOS_OPAHRS_bl_GetMemMap(&rsp) == OPAHRS_RESULT_OK) {
|
if (PIOS_OPAHRS_bl_GetMemMap(&rsp) == OPAHRS_RESULT_OK) {
|
||||||
dev.readWriteFlags
|
dev.readWriteFlags
|
||||||
= rsp.payload.user.v.rsp.mem_map.rw_flags;
|
= rsp.payload.user.v.rsp.mem_map.rw_flags;
|
||||||
@ -558,7 +557,7 @@ uint32_t CalcFirmCRC() {
|
|||||||
PIOS_DELAY_WaitmS(1000);
|
PIOS_DELAY_WaitmS(1000);
|
||||||
PIOS_OPAHRS_bl_resync();
|
PIOS_OPAHRS_bl_resync();
|
||||||
if (PIOS_OPAHRS_bl_GetVersions(&rsp) == OPAHRS_RESULT_OK) {
|
if (PIOS_OPAHRS_bl_GetVersions(&rsp) == OPAHRS_RESULT_OK) {
|
||||||
return rsp.payload.user.v.rsp.versions.fw_version;
|
return rsp.payload.user.v.rsp.versions.fw_crc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,8 +573,36 @@ void sendData(uint8_t * buf,uint16_t size)
|
|||||||
{
|
{
|
||||||
if (ProgPort == Usb) {
|
if (ProgPort == Usb) {
|
||||||
|
|
||||||
PIOS_COM_SendBuffer(PIOS_COM_TELEM_USB, buf, size);//FIX+1
|
PIOS_COM_SendBuffer(PIOS_COM_TELEM_USB, buf, size);
|
||||||
|
if(DeviceState == downloading)
|
||||||
|
PIOS_DELAY_WaitmS(10);
|
||||||
|
|
||||||
} else if (ProgPort == Serial) {
|
} else if (ProgPort == Serial) {
|
||||||
ssp_SendData(&ssp_port, buf, size);
|
ssp_SendData(&ssp_port, buf, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool flash_read(uint8_t * buffer, uint32_t adr, DFUProgType type) {
|
||||||
|
struct opahrs_msg_v0 rsp;
|
||||||
|
struct opahrs_msg_v0 req;
|
||||||
|
switch (type) {
|
||||||
|
case Remote_flash_via_spi:
|
||||||
|
req.payload.user.v.req.fwdn_data.adress = adr;
|
||||||
|
if (PIOS_OPAHRS_bl_FwDlData(&req, &rsp) == OPAHRS_RESULT_OK) {
|
||||||
|
for (uint8_t x = 0; x < 4; ++x) {
|
||||||
|
buffer[x] = rsp.payload.user.v.rsp.fw_dn.data[x];
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
break;
|
||||||
|
case Self_flash:
|
||||||
|
for (uint8_t x = 0; x < 4; ++x) {
|
||||||
|
buffer[x] = *FLASH_If_Read(adr + x);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -76,7 +76,7 @@ TIM8 | | | |
|
|||||||
#elif STM32F10X_MD
|
#elif STM32F10X_MD
|
||||||
#define HW_TYPE 1 //0=high_density 1=medium_density;
|
#define HW_TYPE 1 //0=high_density 1=medium_density;
|
||||||
#endif
|
#endif
|
||||||
#define BOARD_READABLE FALSE
|
#define BOARD_READABLE TRUE
|
||||||
#define BOARD_WRITABLA TRUE
|
#define BOARD_WRITABLA TRUE
|
||||||
#define MAX_DEL_RETRYS 3
|
#define MAX_DEL_RETRYS 3
|
||||||
|
|
||||||
|
@ -74,8 +74,9 @@ TIM8 | Servo 5 | Servo 6 | Servo 7 | Servo 8
|
|||||||
#define BOOTLOADER_VERSION 0
|
#define BOOTLOADER_VERSION 0
|
||||||
#define MEM_SIZE 524288 //512K
|
#define MEM_SIZE 524288 //512K
|
||||||
#define SIZE_OF_DESCRIPTION (uint8_t) 100
|
#define SIZE_OF_DESCRIPTION (uint8_t) 100
|
||||||
|
#define START_OF_USER_CODE (uint32_t)0x08005000//REMEMBER SET ALSO IN link_stm32f10x_HD_BL.ld
|
||||||
#define SIZE_OF_CODE (uint32_t) (MEM_SIZE-(START_OF_USER_CODE-0x08000000)-SIZE_OF_DESCRIPTION)
|
#define SIZE_OF_CODE (uint32_t) (MEM_SIZE-(START_OF_USER_CODE-0x08000000)-SIZE_OF_DESCRIPTION)
|
||||||
#define START_OF_USER_CODE (uint32_t)0x08007800//FF00
|
|
||||||
#ifdef STM32F10X_HD
|
#ifdef STM32F10X_HD
|
||||||
#define HW_TYPE 0 //0=high_density 1=medium_density;
|
#define HW_TYPE 0 //0=high_density 1=medium_density;
|
||||||
#elif STM32F10X_MD
|
#elif STM32F10X_MD
|
||||||
|
@ -230,6 +230,24 @@ enum opahrs_result PIOS_OPAHRS_bl_FwupData(struct opahrs_msg_v0 *req, struct opa
|
|||||||
return opahrs_msg_v0_recv_rsp(OPAHRS_MSG_V0_RSP_FWUP_STATUS, rsp);
|
return opahrs_msg_v0_recv_rsp(OPAHRS_MSG_V0_RSP_FWUP_STATUS, rsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum opahrs_result PIOS_OPAHRS_bl_FwDlData(struct opahrs_msg_v0 *req, struct opahrs_msg_v0 *rsp)
|
||||||
|
{
|
||||||
|
if (!req || !rsp)
|
||||||
|
return OPAHRS_RESULT_FAILED;
|
||||||
|
|
||||||
|
/* Make up an attituderaw request */
|
||||||
|
opahrs_msg_v0_init_user_tx(req, OPAHRS_MSG_V0_REQ_FWDN_DATA);
|
||||||
|
enum opahrs_result rc;
|
||||||
|
/* Send the message until it is received */
|
||||||
|
rc = opahrs_msg_v0_send_req(req);
|
||||||
|
if (rc != OPAHRS_RESULT_OK) {
|
||||||
|
/* Failed to send the request, bail out */
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opahrs_msg_v0_recv_rsp(OPAHRS_MSG_V0_RSP_FWDN_DATA, rsp);
|
||||||
|
}
|
||||||
|
|
||||||
enum opahrs_result PIOS_OPAHRS_bl_FwupVerify(struct opahrs_msg_v0 *rsp)
|
enum opahrs_result PIOS_OPAHRS_bl_FwupVerify(struct opahrs_msg_v0 *rsp)
|
||||||
{
|
{
|
||||||
if (!rsp)
|
if (!rsp)
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
|
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
|
||||||
FLASH (rx) : ORIGIN = 0x08007800, LENGTH = 482K
|
FLASH (rx) : ORIGIN = 0x08005000, LENGTH = 492K
|
||||||
FLASHB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
|
FLASHB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
|
||||||
EXTMEMB0 (rx) : ORIGIN = 0x00000000, LENGTH = 0
|
EXTMEMB0 (rx) : ORIGIN = 0x00000000, LENGTH = 0
|
||||||
EXTMEMB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
|
EXTMEMB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
|
||||||
|
@ -54,6 +54,7 @@ extern enum opahrs_result PIOS_OPAHRS_bl_resync(void);
|
|||||||
extern enum opahrs_result PIOS_OPAHRS_bl_GetMemMap(struct opahrs_msg_v0 *rsp);
|
extern enum opahrs_result PIOS_OPAHRS_bl_GetMemMap(struct opahrs_msg_v0 *rsp);
|
||||||
extern enum opahrs_result PIOS_OPAHRS_bl_reset(uint32_t delay);
|
extern enum opahrs_result PIOS_OPAHRS_bl_reset(uint32_t delay);
|
||||||
extern enum opahrs_result PIOS_OPAHRS_bl_boot(uint32_t delay);
|
extern enum opahrs_result PIOS_OPAHRS_bl_boot(uint32_t delay);
|
||||||
|
extern enum opahrs_result PIOS_OPAHRS_bl_FwDlData(struct opahrs_msg_v0 *req, struct opahrs_msg_v0 *rsp);
|
||||||
/*
|
/*
|
||||||
* Protocol V1 messages used by application
|
* Protocol V1 messages used by application
|
||||||
*/
|
*/
|
||||||
|
@ -93,6 +93,10 @@ struct opahrs_msg_v0_req_fwup_data {
|
|||||||
uint8_t size;
|
uint8_t size;
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
|
struct opahrs_msg_v0_req_fwdn_data {
|
||||||
|
uint32_t adress;
|
||||||
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
struct opahrs_msg_v0_req_mem_map {
|
struct opahrs_msg_v0_req_mem_map {
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
@ -106,17 +110,21 @@ union opahrs_msg_v0_req {
|
|||||||
struct opahrs_msg_v0_req_boot boot;
|
struct opahrs_msg_v0_req_boot boot;
|
||||||
struct opahrs_msg_v0_req_serial serial;
|
struct opahrs_msg_v0_req_serial serial;
|
||||||
struct opahrs_msg_v0_req_fwup_status status_req;
|
struct opahrs_msg_v0_req_fwup_status status_req;
|
||||||
|
struct opahrs_msg_v0_req_fwdn_data fwdn_data;
|
||||||
struct opahrs_msg_v0_req_mem_map mem_map;
|
struct opahrs_msg_v0_req_mem_map mem_map;
|
||||||
struct opahrs_msg_v0_req_fwup_start fwup_start;
|
struct opahrs_msg_v0_req_fwup_start fwup_start;
|
||||||
struct opahrs_msg_v0_req_fwup_data fwup_data;
|
struct opahrs_msg_v0_req_fwup_data fwup_data;
|
||||||
struct opahrs_msg_v0_req_fwup_verify fwup_verify;
|
struct opahrs_msg_v0_req_fwup_verify fwup_verify;
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
|
struct opahrs_msg_v0_rsp_fwdn_data {
|
||||||
|
uint8_t data[4];
|
||||||
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
struct opahrs_msg_v0_rsp_versions {
|
struct opahrs_msg_v0_rsp_versions {
|
||||||
uint8_t hw_version;
|
uint8_t hw_version;
|
||||||
uint16_t bl_version;
|
uint16_t bl_version;
|
||||||
uint32_t fw_version;
|
uint32_t fw_crc;
|
||||||
uint8_t description[100];
|
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
struct opahrs_msg_v0_rsp_serial {
|
struct opahrs_msg_v0_rsp_serial {
|
||||||
@ -142,6 +150,7 @@ union opahrs_msg_v0_rsp {
|
|||||||
struct opahrs_msg_v0_rsp_serial serial;
|
struct opahrs_msg_v0_rsp_serial serial;
|
||||||
struct opahrs_msg_v0_rsp_fwup_status fwup_status;
|
struct opahrs_msg_v0_rsp_fwup_status fwup_status;
|
||||||
struct opahrs_msg_v0_rsp_mem_map mem_map;
|
struct opahrs_msg_v0_rsp_mem_map mem_map;
|
||||||
|
struct opahrs_msg_v0_rsp_fwdn_data fw_dn;
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
enum opahrs_msg_v0_tag {
|
enum opahrs_msg_v0_tag {
|
||||||
@ -150,7 +159,7 @@ enum opahrs_msg_v0_tag {
|
|||||||
OPAHRS_MSG_V0_REQ_RESET,
|
OPAHRS_MSG_V0_REQ_RESET,
|
||||||
OPAHRS_MSG_V0_REQ_BOOT,
|
OPAHRS_MSG_V0_REQ_BOOT,
|
||||||
OPAHRS_MSG_V0_REQ_SERIAL,
|
OPAHRS_MSG_V0_REQ_SERIAL,
|
||||||
|
OPAHRS_MSG_V0_REQ_FWDN_DATA,
|
||||||
OPAHRS_MSG_V0_REQ_MEM_MAP,
|
OPAHRS_MSG_V0_REQ_MEM_MAP,
|
||||||
|
|
||||||
OPAHRS_MSG_V0_REQ_FWUP_START,
|
OPAHRS_MSG_V0_REQ_FWUP_START,
|
||||||
@ -161,7 +170,7 @@ enum opahrs_msg_v0_tag {
|
|||||||
OPAHRS_MSG_V0_RSP_VERSIONS,
|
OPAHRS_MSG_V0_RSP_VERSIONS,
|
||||||
OPAHRS_MSG_V0_RSP_SERIAL,
|
OPAHRS_MSG_V0_RSP_SERIAL,
|
||||||
OPAHRS_MSG_V0_RSP_FWUP_STATUS,
|
OPAHRS_MSG_V0_RSP_FWUP_STATUS,
|
||||||
|
OPAHRS_MSG_V0_RSP_FWDN_DATA,
|
||||||
OPAHRS_MSG_V0_RSP_MEM_MAP,
|
OPAHRS_MSG_V0_RSP_MEM_MAP,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -263,7 +272,7 @@ union opahrs_msg_v1_req {
|
|||||||
struct opahrs_msg_v1_rsp_versions {
|
struct opahrs_msg_v1_rsp_versions {
|
||||||
uint8_t hw_version;
|
uint8_t hw_version;
|
||||||
uint16_t bl_version;
|
uint16_t bl_version;
|
||||||
uint32_t fw_version;
|
uint32_t fw_crc;
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
struct opahrs_msg_v1_rsp_serial {
|
struct opahrs_msg_v1_rsp_serial {
|
||||||
|
@ -249,7 +249,7 @@ bool OP_DFU::UploadData(qint32 const & numberOfBytes, QByteArray & data)
|
|||||||
// }
|
// }
|
||||||
// qDebug()<<" Data0="<<(int)data[0]<<" Data0="<<(int)data[1]<<" Data0="<<(int)data[2]<<" Data0="<<(int)data[3]<<" buf6="<<(int)buf[6]<<" buf7="<<(int)buf[7]<<" buf8="<<(int)buf[8]<<" buf9="<<(int)buf[9];
|
// qDebug()<<" Data0="<<(int)data[0]<<" Data0="<<(int)data[1]<<" Data0="<<(int)data[2]<<" Data0="<<(int)data[3]<<" buf6="<<(int)buf[6]<<" buf7="<<(int)buf[7]<<" buf8="<<(int)buf[8]<<" buf9="<<(int)buf[9];
|
||||||
//delay::msleep(send_delay);
|
//delay::msleep(send_delay);
|
||||||
if(int ret=StatusRequest()!=OP_DFU::uploading) return false;
|
// if(int ret=StatusRequest()!=OP_DFU::uploading) return false;
|
||||||
int result = sendData(buf, BUF_LEN);
|
int result = sendData(buf, BUF_LEN);
|
||||||
// qDebug()<<"sent:"<<result;
|
// qDebug()<<"sent:"<<result;
|
||||||
if(result<1)
|
if(result<1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user