astra/f1c100s

The code defines the physical pin layout, labels, and footprint for the F1C100S system-on-chip (SoC) component used in electronic devices.

Version
0.9.2
License
unset
Stars
0

src/profiles.ts

export const LAYOUT_PROFILES = [
	"native",
	"lcd_top_storage_right",
	"lcd_right_storage_bottom",
	"lcd_top_storage_bottom",
	"lcd_right_storage_left",
] as const;
export type LayoutProfile = (typeof LAYOUT_PROFILES)[number];
export type Side = "top" | "right" | "bottom" | "left";
export const PROFILE_LAYOUTS: Record<
	LayoutProfile,
	{ rotation: number; lcd?: Side; storage?: Side }
> = {
	native: { rotation: -90 },
	lcd_top_storage_right: { rotation: 180, lcd: "top", storage: "right" },
	lcd_right_storage_bottom: { rotation: 90, lcd: "right", storage: "bottom" },
	lcd_top_storage_bottom: { rotation: 180, lcd: "top", storage: "bottom" },
	lcd_right_storage_left: { rotation: 90, lcd: "right", storage: "left" },
};
export function assertLayoutProfile(
	value: string,
): asserts value is LayoutProfile {
	if (!(LAYOUT_PROFILES as readonly string[]).includes(value))
		throw new Error(
			`Unsupported F1C100S layoutProfile '${value}'. Expected ${LAYOUT_PROFILES.join(", ")}`,
		);
}

export const MODULE_SIZE = 28;
export const TERMINAL_EDGE = 13.2;
export const EXIT_DIAMETER = 0.45;
export const EXIT_DRILL = 0.2;
export const RULES = {
	traceWidth: 0.12,
	clearance: 0.1,
	viaDiameter: 0.45,
	viaDrill: 0.2,
	layers: 4,
} as const;