22
33#define UF2_FAMILY_ID_HEX_SIZE (2 + 8 * 2 + 1)
44
5- uf2_family_ids_t * uf2_family_ids_new (void ) {
6- uf2_family_ids_t * ids = malloc (sizeof (uf2_family_ids_t ));
7- ids -> count = 0 ;
8- ids -> items = NULL ;
9- return ids ;
10- }
11-
12- void uf2_family_ids_add (uf2_family_ids_t * ids , const char * str ) {
5+ static void _add (uf2_family_ids_t * ids , const char * str ) {
136 ids -> items = realloc (ids -> items , (ids -> count + 1 ) * sizeof (char * ));
147 ids -> items [ids -> count ] = strdup (str );
158 if (ids -> items [ids -> count ] == NULL ) {
@@ -19,6 +12,29 @@ void uf2_family_ids_add(uf2_family_ids_t *ids, const char *str) {
1912 ids -> count ++ ;
2013}
2114
15+ static void _add_default_families (uf2_family_ids_t * ids , uint32_t flags ) {
16+ if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_ABSOLUTE_BITS )
17+ _add (ids , "absolute" );
18+ if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2040_BITS )
19+ _add (ids , "rp2040" );
20+ if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_S_BITS )
21+ _add (ids , "rp2350-arm-s" );
22+ if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_NS_BITS )
23+ _add (ids , "rp2350-arm-ns" );
24+ if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_RISCV_BITS )
25+ _add (ids , "rp2350-riscv" );
26+ if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_DATA_BITS )
27+ _add (ids , "data" );
28+ }
29+
30+ uf2_family_ids_t * uf2_family_ids_new (uint32_t flags ) {
31+ uf2_family_ids_t * ids = malloc (sizeof (uf2_family_ids_t ));
32+ ids -> count = 0 ;
33+ ids -> items = NULL ;
34+ _add_default_families (ids , flags );
35+ return ids ;
36+ }
37+
2238char * uf2_family_ids_join (const uf2_family_ids_t * ids , const char * sep ) {
2339 size_t total_length = 0 ;
2440 size_t sep_length = strlen (sep );
@@ -53,23 +69,8 @@ void uf2_family_ids_free(uf2_family_ids_t *ids) {
5369 free (ids );
5470}
5571
56- void uf2_family_ids_add_default_families (uf2_family_ids_t * ids , uint32_t flags ) {
57- if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_ABSOLUTE_BITS )
58- uf2_family_ids_add (ids , "absolute" );
59- if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2040_BITS )
60- uf2_family_ids_add (ids , "rp2040" );
61- if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_S_BITS )
62- uf2_family_ids_add (ids , "rp2350-arm-s" );
63- if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_NS_BITS )
64- uf2_family_ids_add (ids , "rp2350-arm-ns" );
65- if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_RISCV_BITS )
66- uf2_family_ids_add (ids , "rp2350-riscv" );
67- if (flags & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_DATA_BITS )
68- uf2_family_ids_add (ids , "data" );
69- }
70-
7172void uf2_family_ids_add_extra_family_id (uf2_family_ids_t * ids , uint32_t family_id ) {
7273 char hex_id [UF2_FAMILY_ID_HEX_SIZE ];
7374 sprintf (hex_id , "0x%08x" , family_id );
74- uf2_family_ids_add (ids , hex_id );
75+ _add (ids , hex_id );
7576}
0 commit comments