existing FW file check to avoid redundant transmit

+ refactro dupliacte code
This commit is contained in:
2024-02-08 02:44:26 +01:00
parent 0ab07d6572
commit 19bcaaf18c
5 changed files with 121 additions and 51 deletions

View File

@@ -195,22 +195,30 @@ bool UsbDataPacket_head_check(const UsbDataPacket *p) {
#include "usbd_cdc_if.h"
#include <pb_encode.h>
static UsbDataPacket packet;
void USBDataResonse(void * msg, const pb_msgdesc_t* fields, UsbPackageType typeid) {
pb_ostream_t ostream = pb_ostream_from_buffer(packet.data,sizeof(packet.data));
bool UsbDataPacketSendMessage(uint32_t type , UsbDataPacket * buffer ,const pb_msgdesc_t * fields ,const void* msg) {
pb_ostream_t ostream = pb_ostream_from_buffer(buffer->data,sizeof(buffer->data));
bool status = pb_encode(&ostream, fields ,msg);
packet.head.length = ostream.bytes_written;
packet.head.type = typeid;
packet.head.check = UsbDataPacket_head_sum(&packet);
buffer->head.length = ostream.bytes_written;
buffer->head.type = type;
buffer->head.check = UsbDataPacket_head_sum(buffer);
if(status) {
while (CDC_Transmit_HS((uint8_t*)&packet, packet.head.length + sizeof(UsbDataPacketHead) ) == USBD_BUSY)
while (CDC_Transmit_HS((uint8_t*)buffer, buffer->head.length + sizeof(UsbDataPacketHead) ) == USBD_BUSY)
{
osDelay(3);
}
} else {
Error_Handler();
return false;
}
return true;
}
static UsbDataPacket packet;
void USBDataResonse(void * msg, const pb_msgdesc_t* fields, UsbPackageType typeid) {
UsbDataPacketSendMessage(typeid, &packet, fields, msg);
}
//__attribute__((weak)) void DataClbk_FirmwareStart(void *msg, uint32_t length) {}