Skip to content

Latest commit

 

History

History
58 lines (45 loc) · 1.42 KB

library.md

File metadata and controls

58 lines (45 loc) · 1.42 KB

uf2ota library

uf2ota library allows to write a LibreTiny UF2 file to the flash, while parsing all the necessary tags. It manages the target partitions, compatibility checks, and works on top of the FAL provided by FlashDB.

Usage example

uint8_t target	   = 1;			 // target OTA scheme - 1 or 2
uint32_t family	   = F_RTL8710B; // chip's UF2 family ID
uf2_ota_t *ctx	   = uf2_ctx_init(target, family);
uf2_info_t *info   = uf2_info_init(); // optional, for getting firmware info
uf2_block_t *block = (uf2_block_t *)malloc(UF2_BLOCK_SIZE);
uf2_err_t err;

// ... // read the first header block (512 bytes) into *block

// check the block for validity
err = uf2_check_block(ctx, block);
if (err > UF2_ERR_IGNORE)
	// handle the error
	return;

// parse the header block
// note: if you don't need info, you can skip this step and call uf2_write() directly
err = uf2_parse_header(ctx, block, info);
if (err)
	// handle the error
	return;

while (/* have input data */) {

	// ... // read the next block into *block

	// check the block for validity
	err = uf2_check_block(ctx, block);
	if (err == UF2_ERR_IGNORE)
		// skip this block
		continue;
	if (err)
		// handle the error
		return;

	// write the block to flash
	err = uf2_write(ctx, block);
	if (err > UF2_ERR_IGNORE)
		// handle the error
		return;
}

// finish the update process

// ... // activate your new OTA partition

// cleanup
free(ctx);
free(block);
uf2_info_free(info);