# SFBProvenance Struct Reference

An SFBProvenance provides information that describes a sketch as a physical artifact. More...

`#include <SFBProvenance.h>`

## Data Fields
u32 | branchInstruction
| A single ARM instruction that jumps over the provenance block, making the block "executable" so it can appear in code flow.
u32 | checksum0
| Filled in by the bootloader.
u32 | checksum1
| See checksum0.
int | sourceOwnerId
| Filled in by the bootloader.
int | sourceBoardId
| Filled in by the bootloader.
u32 | magic
| A "magic value" (equal to SFB_PROVENANCE_MAGIC) identifying the beginning of the checksummed portion of a valid sketch.
u16 | flags
| Room for miscellaneous flags, as yet undefined.
u8 | rsrvd1
| Reserved for future use; value should be zero; value should not be read.
u8 | architecture
| The architecture code for the machine this code runs on.
int | creatorId
| The sketch creator id, or 0 if none; must not be -1.
int | programId
| The sketch program id, or 0 if none; must not be -1.
int | buildDate
| Filled in by the sketch build system.
int | buildTime
| Filled in by the sketch build system.
int | programLength
| The size of the sketch, in bytes, including this entire header block.
u32 | copyrightNotice
| A pointer to zstring in program area, or null if unspecified.
u32 | cigam
| A "backwards" magic value (equal to SFB_PROVENANCE_CIGAM) helping to identify a valid SFBProvenance block.

## Detailed Description

An SFBProvenance provides information that describes a sketch as a physical artifact.

It provides spatial information such as the sketch program length and a "checksum" describing the sketch content, temporal information such as when the sketch was built, and a few bits about the origin or "provenance" of the sketch, information such as a "sketch id", who created it, and where we got it.

An SBFProvenance block is automatically generated by the sketch build system, and placed just before the sketch itself in program memory, so the effective program starting address immediately follows the provenance block. (In addition, a "program footer" is placed after the sketch in program memory, to provide an additional consistency check.)

## Field Documentation

u32 SFBProvenance::branchInstruction

A single ARM instruction that jumps over the provenance block, making the block "executable" so it can appear in code flow.

int SFBProvenance::buildDate

Filled in by the sketch build system.

The UTC time zone date this was compiled. Interpreted as 0xYYYYMMDD.

int SFBProvenance::buildTime

Filled in by the sketch build system.

The UTC time zone time this was compiled. Interpreted as 0xHHMMSS with 0..24 for HH.

u32 SFBProvenance::checksum0

Filled in by the bootloader.

(Half of the) Checksum of all bytes starting at the magic and running for programLength-12]]

u32 SFBProvenance::cigam

A "backwards" magic value (equal to SFB_PROVENANCE_CIGAM) helping to identify a valid SFBProvenance block.

u32 SFBProvenance::copyrightNotice

A pointer to zstring in program area, or null if unspecified.

Represented as a u32 because this is always a 32 bit pointer (either on the actual h/w, or as an offset into a memory image), regardless of the native pointer size.

u32 SFBProvenance::magic

A "magic value" (equal to SFB_PROVENANCE_MAGIC) identifying the beginning of the checksummed portion of a valid sketch.

int SFBProvenance::programLength

The size of the sketch, in bytes, including this entire header block.

u8 SFBProvenance::rsrvd1

Reserved for future use; value should be zero; value should not be read.

int SFBProvenance::sourceBoardId

Filled in by the bootloader.

The provided board id of the board or other source that fed this sketch to us.

int SFBProvenance::sourceOwnerId

Filled in by the bootloader.

The provided owner id of the board or other source that fed this sketch to us.

The documentation for this struct was generated from the following file:

- src/include/SFBProvenance.h