pico-binary-info
Portable Pi Pico binary_info parser
Loading...
Searching...
No Matches
pico_binary_info.h
1#pragma once
2
3#include <stddef.h>
4#include <stdint.h>
5
15
35
39
40
45 // Pointer to the "in-memory" image, NULL if using file descriptors
46 const uint8_t *image;
47
48 // File handle for a "file descriptor" image, or -1 if using the in-memory buffer
49 int fd;
50
51 // Total size of the image
52 size_t image_len;
53
54 // File offset for the start of the binary info record table
55 size_t table_off;
56
57 // End of the binary info record table
58 size_t table_end;
59
60 // File offset for the start of the copy-mapping table
61 long mapping_off;
62};
63
71
84int pico_binary_info_init(struct pico_binary_info *info, const uint8_t *image, size_t len);
85
96int pico_binary_info_init_fd(struct pico_binary_info *info, int fd, size_t len);
97
101
109
119int pico_binary_info_get_int(struct pico_binary_info *info, uint16_t tag, uint32_t id, uint32_t *out);
120
131int pico_binary_info_get_string(struct pico_binary_info *info, uint16_t tag, uint32_t id, char *out, size_t out_len);
132
136
144
153int pico_binary_info_get_program_name(struct pico_binary_info *info, char *out, size_t out_len);
154
163int pico_binary_info_get_program_version(struct pico_binary_info *info, char *out, size_t out_len);
164
173int pico_binary_info_get_program_build_date(struct pico_binary_info *info, char *out, size_t out_len);
174
183int pico_binary_info_get_program_url(struct pico_binary_info *info, char *out, size_t out_len);
184
193int pico_binary_info_get_program_description(struct pico_binary_info *info, char *out, size_t out_len);
194
205int pico_binary_info_get_program_feature(struct pico_binary_info *info, char *out, size_t out_len);
206
217int pico_binary_info_get_program_build_attribute(struct pico_binary_info *info, char *out, size_t out_len);
218
227int pico_binary_info_get_sdk_version(struct pico_binary_info *info, char *out, size_t out_len);
228
237int pico_binary_info_get_pico_board(struct pico_binary_info *info, char *out, size_t out_len);
238
247int pico_binary_info_get_boot2_name(struct pico_binary_info *info, char *out, size_t out_len);
248
256int pico_binary_info_get_binary_end(struct pico_binary_info *info, uint32_t *out);
257
pico_binary_info_error
Library error codes, returned negated (e.g.
Definition pico_binary_info.h:19
@ PICO_BI_ENOTFOUND
No record found matching that id.
Definition pico_binary_info.h:21
@ PICO_BI_ERANGE
Output buffer too small.
Definition pico_binary_info.h:30
@ PICO_BI_EBADADDR
A record's address could not be resolved to data within the image.
Definition pico_binary_info.h:33
@ PICO_BI_EWRONGTYPE
Record found but not the requested type.
Definition pico_binary_info.h:27
@ PICO_BI_ENOHEADER
No binary_info header found in the image.
Definition pico_binary_info.h:24
int pico_binary_info_get_string(struct pico_binary_info *info, uint16_t tag, uint32_t id, char *out, size_t out_len)
Fetch the string value of an id-and-string record for the given tag.
Definition pico_binary_info.c:208
int pico_binary_info_get_int(struct pico_binary_info *info, uint16_t tag, uint32_t id, uint32_t *out)
Fetch the integer value of an id-and-int record for the given tag.
Definition pico_binary_info.c:187
int pico_binary_info_get_program_build_date(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the program build date string.
Definition pico_binary_info.c:251
int pico_binary_info_get_program_version(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the program version string.
Definition pico_binary_info.c:246
int pico_binary_info_get_boot2_name(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the boot2 name string.
Definition pico_binary_info.c:286
int pico_binary_info_get_program_name(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the program name string.
Definition pico_binary_info.c:241
int pico_binary_info_get_program_description(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the program description string.
Definition pico_binary_info.c:261
int pico_binary_info_get_binary_end(struct pico_binary_info *info, uint32_t *out)
Fetch the binary end address.
Definition pico_binary_info.c:291
int pico_binary_info_get_sdk_version(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the SDK version string.
Definition pico_binary_info.c:276
int pico_binary_info_get_program_build_attribute(struct pico_binary_info *info, char *out, size_t out_len)
Fetch a program build attribute string.
Definition pico_binary_info.c:271
int pico_binary_info_get_pico_board(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the pico board string.
Definition pico_binary_info.c:281
int pico_binary_info_get_program_url(struct pico_binary_info *info, char *out, size_t out_len)
Fetch the program url string.
Definition pico_binary_info.c:256
int pico_binary_info_get_program_feature(struct pico_binary_info *info, char *out, size_t out_len)
Fetch a program feature string.
Definition pico_binary_info.c:266
int pico_binary_info_init(struct pico_binary_info *info, const uint8_t *image, size_t len)
Initialize a pico_binary_info struct using a pointer to a pico binary image which is in memory,...
Definition pico_binary_info.c:163
int pico_binary_info_init_fd(struct pico_binary_info *info, int fd, size_t len)
Initialize a pico_binary_info struct using a file handle.
Definition pico_binary_info.c:175
Struct representing a parsed pico binary info header.
Definition pico_binary_info.h:44