Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 73 additions & 20 deletions generated/COMPONENT_TYPES.md
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,35 @@ export const supplierProps = z.object({
supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),
})
export interface PinAttributeMap {
capabilities?: Array<
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
>
activeCapabilities?: Array<
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
>
activeCapability?:
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
providesPower?: boolean
requiresPower?: boolean
providesGround?: boolean
Expand All @@ -517,14 +546,6 @@ export interface PinAttributeMap {
includeInBoardPinout?: boolean
highlightColor?: string
mustBeConnected?: boolean
isI2cSda?: boolean
isI2cScl?: boolean
isSpiMosi?: boolean
isSpiMiso?: boolean
isSpiSck?: boolean
isSpiCs?: boolean
isUartTx?: boolean
isUartRx?: boolean
canUseInternalPullup?: boolean
isUsingInternalPullup?: boolean
needsExternalPullup?: boolean
Expand All @@ -537,6 +558,46 @@ export interface PinAttributeMap {
isUsingPushPull?: boolean
}
export const pinAttributeMap = z.object({
capabilities: z
.array(
z.enum([
"i2c_sda",
"i2c_scl",
"spi_cs",
"spi_sck",
"spi_mosi",
"spi_miso",
"uart_tx",
"uart_rx",
]),
)
.optional(),
activeCapabilities: z
.array(
z.enum([
"i2c_sda",
"i2c_scl",
"spi_cs",
"spi_sck",
"spi_mosi",
"spi_miso",
"uart_tx",
"uart_rx",
]),
)
.optional(),
activeCapability: z
.enum([
"i2c_sda",
"i2c_scl",
"spi_cs",
"spi_sck",
"spi_mosi",
"spi_miso",
"uart_tx",
"uart_rx",
])
.optional(),
providesPower: z.boolean().optional(),
requiresPower: z.boolean().optional(),
providesGround: z.boolean().optional(),
Expand All @@ -547,14 +608,6 @@ export const pinAttributeMap = z.object({
includeInBoardPinout: z.boolean().optional(),
highlightColor: z.string().optional(),
mustBeConnected: z.boolean().optional(),
isI2cSda: z.boolean().optional(),
isI2cScl: z.boolean().optional(),
isSpiMosi: z.boolean().optional(),
isSpiMiso: z.boolean().optional(),
isSpiSck: z.boolean().optional(),
isSpiCs: z.boolean().optional(),
isUartTx: z.boolean().optional(),
isUartRx: z.boolean().optional(),
canUseInternalPullup: z.boolean().optional(),
isUsingInternalPullup: z.boolean().optional(),
needsExternalPullup: z.boolean().optional(),
Expand Down Expand Up @@ -2866,7 +2919,7 @@ export interface PillPlatedHoleProps extends Omit<PcbLayoutProps, "layer"> {
}
/** @deprecated use holeHeight */
export interface CircularHoleWithRectPlatedProps
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
extends Omit<PcbLayoutProps, "layer"> {
name?: string
connectsTo?: string | string[]
shape: "circular_hole_with_rect_pad"
Expand All @@ -2883,7 +2936,7 @@ export interface CircularHoleWithRectPlatedProps
coveredWithSolderMask?: boolean
}
export interface PillWithRectPadPlatedHoleProps
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
extends Omit<PcbLayoutProps, "layer"> {
name?: string
connectsTo?: string | string[]
shape: "pill_hole_with_rect_pad"
Expand Down Expand Up @@ -2971,7 +3024,7 @@ pcbLayoutProps.omit({ layer: true }).extend({
solderMaskMargin: distance.optional(),
coveredWithSolderMask: z.boolean().optional(),
}),
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
pcbLayoutProps.omit({ layer: true }).extend({
name: z.string().optional(),
connectsTo: z.string().or(z.array(z.string())).optional(),
shape: z.literal("circular_hole_with_rect_pad"),
Expand All @@ -2987,7 +3040,7 @@ pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
solderMaskMargin: distance.optional(),
coveredWithSolderMask: z.boolean().optional(),
}),
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
pcbLayoutProps.omit({ layer: true }).extend({
name: z.string().optional(),
connectsTo: z.string().or(z.array(z.string())).optional(),
shape: z.literal("pill_hole_with_rect_pad"),
Expand Down
41 changes: 31 additions & 10 deletions generated/PROPS_OVERVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ export interface CircleSolderPasteProps


export interface CircularHoleWithRectPlatedProps
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
extends Omit<PcbLayoutProps, "layer"> {
name?: string
connectsTo?: string | string[]
shape: "circular_hole_with_rect_pad"
Expand Down Expand Up @@ -1406,7 +1406,7 @@ export interface PillSmtPadProps extends Omit<PcbLayoutProps, "pcbRotation"> {


export interface PillWithRectPadPlatedHoleProps
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
extends Omit<PcbLayoutProps, "layer"> {
name?: string
connectsTo?: string | string[]
shape: "pill_hole_with_rect_pad"
Expand All @@ -1425,6 +1425,35 @@ export interface PillWithRectPadPlatedHoleProps


export interface PinAttributeMap {
capabilities?: Array<
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
>
activeCapabilities?: Array<
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
>
activeCapability?:
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
providesPower?: boolean
requiresPower?: boolean
providesGround?: boolean
Expand All @@ -1435,14 +1464,6 @@ export interface PinAttributeMap {
includeInBoardPinout?: boolean
highlightColor?: string
mustBeConnected?: boolean
isI2cSda?: boolean
isI2cScl?: boolean
isSpiMosi?: boolean
isSpiMiso?: boolean
isSpiSck?: boolean
isSpiCs?: boolean
isUartTx?: boolean
isUartRx?: boolean
canUseInternalPullup?: boolean
isUsingInternalPullup?: boolean
needsExternalPullup?: boolean
Expand Down
85 changes: 69 additions & 16 deletions lib/common/layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,35 @@ export const supplierProps = z.object({
expectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)

export interface PinAttributeMap {
capabilities?: Array<
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
>
activeCapabilities?: Array<
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
>
activeCapability?:
| "i2c_sda"
| "i2c_scl"
| "spi_cs"
| "spi_sck"
| "spi_mosi"
| "spi_miso"
| "uart_tx"
| "uart_rx"
providesPower?: boolean
requiresPower?: boolean
providesGround?: boolean
Expand All @@ -236,14 +265,6 @@ export interface PinAttributeMap {
includeInBoardPinout?: boolean
highlightColor?: string
mustBeConnected?: boolean
isI2cSda?: boolean
isI2cScl?: boolean
isSpiMosi?: boolean
isSpiMiso?: boolean
isSpiSck?: boolean
isSpiCs?: boolean
isUartTx?: boolean
isUartRx?: boolean
canUseInternalPullup?: boolean
isUsingInternalPullup?: boolean
needsExternalPullup?: boolean
Expand All @@ -257,6 +278,46 @@ export interface PinAttributeMap {
}

export const pinAttributeMap = z.object({
capabilities: z
.array(
z.enum([
"i2c_sda",
"i2c_scl",
"spi_cs",
"spi_sck",
"spi_mosi",
"spi_miso",
"uart_tx",
"uart_rx",
]),
)
.optional(),
activeCapabilities: z
.array(
z.enum([
"i2c_sda",
"i2c_scl",
"spi_cs",
"spi_sck",
"spi_mosi",
"spi_miso",
"uart_tx",
"uart_rx",
]),
)
.optional(),
activeCapability: z
.enum([
"i2c_sda",
"i2c_scl",
"spi_cs",
"spi_sck",
"spi_mosi",
"spi_miso",
"uart_tx",
"uart_rx",
])
.optional(),
providesPower: z.boolean().optional(),
requiresPower: z.boolean().optional(),
providesGround: z.boolean().optional(),
Expand All @@ -267,14 +328,6 @@ export const pinAttributeMap = z.object({
includeInBoardPinout: z.boolean().optional(),
highlightColor: z.string().optional(),
mustBeConnected: z.boolean().optional(),
isI2cSda: z.boolean().optional(),
isI2cScl: z.boolean().optional(),
isSpiMosi: z.boolean().optional(),
isSpiMiso: z.boolean().optional(),
isSpiSck: z.boolean().optional(),
isSpiCs: z.boolean().optional(),
isUartTx: z.boolean().optional(),
isUartRx: z.boolean().optional(),
canUseInternalPullup: z.boolean().optional(),
isUsingInternalPullup: z.boolean().optional(),
needsExternalPullup: z.boolean().optional(),
Expand Down
4 changes: 3 additions & 1 deletion tests/chip3-type-tests.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,9 @@ test("[typetest] pinAttributes type matches pin labels", () => {
doNotConnect: true,
includeInBoardPinout: true,
highlightColor: "#00ff00",
isI2cScl: true,
capabilities: ["i2c_scl", "i2c_sda"],
activeCapabilities: ["i2c_scl"],
activeCapability: "i2c_scl",
canUseInternalPullup: true,
isUsingInternalPullup: true,
canUseOpenDrain: true,
Expand Down
22 changes: 18 additions & 4 deletions tests/pinAttributes2.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,18 @@ test("pinAttributes allows mustBeConnected", () => {
pinAttributes: {
pin1: {
mustBeConnected: true,
isI2cSda: true,
capabilities: ["i2c_sda", "i2c_scl"],
activeCapabilities: ["i2c_sda"],
activeCapability: "i2c_sda",
canUseInternalPullup: true,
isUsingInternalPullup: true,
canUseOpenDrain: true,
isUsingOpenDrain: true,
},
pin2: {
mustBeConnected: false,
isSpiMiso: true,
capabilities: ["spi_miso", "spi_mosi", "spi_sck", "spi_cs"],
activeCapability: "spi_miso",
canUseInternalPulldown: true,
needsExternalPulldown: true,
canUsePushPull: true,
Expand All @@ -27,12 +30,23 @@ test("pinAttributes allows mustBeConnected", () => {
const parsed = chipProps.parse(rawProps)
expect(parsed.pinAttributes?.pin1?.mustBeConnected).toBe(true)
expect(parsed.pinAttributes?.pin2?.mustBeConnected).toBe(false)
expect(parsed.pinAttributes?.pin1?.isI2cSda).toBe(true)
expect(parsed.pinAttributes?.pin1?.capabilities).toEqual([
"i2c_sda",
"i2c_scl",
])
expect(parsed.pinAttributes?.pin1?.activeCapabilities).toEqual(["i2c_sda"])
expect(parsed.pinAttributes?.pin1?.activeCapability).toBe("i2c_sda")
expect(parsed.pinAttributes?.pin1?.canUseInternalPullup).toBe(true)
expect(parsed.pinAttributes?.pin1?.isUsingInternalPullup).toBe(true)
expect(parsed.pinAttributes?.pin1?.canUseOpenDrain).toBe(true)
expect(parsed.pinAttributes?.pin1?.isUsingOpenDrain).toBe(true)
expect(parsed.pinAttributes?.pin2?.isSpiMiso).toBe(true)
expect(parsed.pinAttributes?.pin2?.capabilities).toEqual([
"spi_miso",
"spi_mosi",
"spi_sck",
"spi_cs",
])
expect(parsed.pinAttributes?.pin2?.activeCapability).toBe("spi_miso")
expect(parsed.pinAttributes?.pin2?.canUseInternalPulldown).toBe(true)
expect(parsed.pinAttributes?.pin2?.needsExternalPulldown).toBe(true)
expect(parsed.pinAttributes?.pin2?.canUsePushPull).toBe(true)
Expand Down