mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-26 17:38:39 +00:00
bootloader: refactor pb_parse_header to protobuf
This commit is contained in:
parent
92b2deb932
commit
3250967d62
@ -12,6 +12,7 @@
|
|||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#include "messages.h"
|
#include "messages.h"
|
||||||
|
#include "protobuf.h"
|
||||||
|
|
||||||
#define IMAGE_MAGIC 0x465A5254 // TRZF
|
#define IMAGE_MAGIC 0x465A5254 // TRZF
|
||||||
#define IMAGE_MAXSIZE (7 * 128 * 1024)
|
#define IMAGE_MAXSIZE (7 * 128 * 1024)
|
||||||
@ -164,13 +165,12 @@ void mainloop(void)
|
|||||||
if (r != sizeof(buf)) {
|
if (r != sizeof(buf)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
uint16_t msg_id;
|
||||||
|
uint32_t msg_size;
|
||||||
// invalid header
|
// invalid header
|
||||||
if (buf[0] != '?' || buf[1] != '#' || buf[2] != '#') {
|
if (!pb_parse_header(buf, &msg_id, &msg_size)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
uint16_t msg_id = (buf[3] << 8) + buf[4];
|
|
||||||
uint32_t msg_size = (buf[5] << 24) + (buf[6] << 16) + (buf[7] << 8) + buf[8];
|
|
||||||
(void)msg_size;
|
|
||||||
static uint32_t chunk = 0;
|
static uint32_t chunk = 0;
|
||||||
switch (msg_id) {
|
switch (msg_id) {
|
||||||
case 0: // Initialize
|
case 0: // Initialize
|
||||||
|
@ -71,3 +71,13 @@ void pb_add_varint(PB_CTX *ctx, uint32_t field_number, uint32_t val)
|
|||||||
pb_varint(ctx, field_number);
|
pb_varint(ctx, field_number);
|
||||||
pb_varint(ctx, val);
|
pb_varint(ctx, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool pb_parse_header(const uint8_t *buf, uint16_t *msg_id, uint32_t *msg_size)
|
||||||
|
{
|
||||||
|
if (buf[0] != '?' || buf[1] != '#' || buf[2] != '#') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
*msg_id = (buf[3] << 8) + buf[4];
|
||||||
|
*msg_size = (buf[5] << 24) + (buf[6] << 16) + (buf[7] << 8) + buf[8];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@ -17,4 +17,6 @@ void pb_add_bool(PB_CTX *ctx, uint32_t field_number, bool val);
|
|||||||
void pb_add_string(PB_CTX *ctx, uint32_t field_number, const char *val);
|
void pb_add_string(PB_CTX *ctx, uint32_t field_number, const char *val);
|
||||||
void pb_add_varint(PB_CTX *ctx, uint32_t field_number, uint32_t val);
|
void pb_add_varint(PB_CTX *ctx, uint32_t field_number, uint32_t val);
|
||||||
|
|
||||||
|
bool pb_parse_header(const uint8_t *buf, uint16_t *msg_id, uint32_t *msg_size);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user