Skip to content

PINS_COUNT is useless and inconsistent. #268

Open
@WestfW

Description

@WestfW

in the variants.h file, PINS_COUNT says it should be the number of pins in the array:

// Number of pins defined in PinDescription array
#define PINS_COUNT           (26u)

However, this rarely true, with the advent of internal pins, semi-internal pins, aliases for pins, and so on. This makes PINS_COUNT useless for error-checking a passed value in library code (for example.)
Worse, the meaning seems to vary from board to board, even when the boards are supposed to be somewhat compatible WRT pin numbering...

Also, nothing in the core actually USES PINS_COUNT

gid PINS_COUNT
variants/circuitplay/variant.h:40:#define PINS_COUNT           (39u)
variants/crickit_m0/variant.h:56:#define PINS_COUNT           (26u)
variants/feather_m0/variant.h:56:#define PINS_COUNT           (26u)
variants/feather_m0_express/variant.h:56:#define PINS_COUNT           (42u)
variants/feather_m4/variant.h:60:#define PINS_COUNT           (40u)
variants/gemma_m0/variant.h:56:#define PINS_COUNT           (16u)
variants/grand_central_m4/variant.h:60:#define PINS_COUNT           (96)
variants/hallowing_m0_express/variant.h:56:#define PINS_COUNT           (42u)
variants/hallowing_m4/variant.h:60:#define PINS_COUNT           (50u)
variants/itsybitsy_m0/variant.h:56:#define PINS_COUNT           (26u)
variants/itsybitsy_m4/variant.h:60:#define PINS_COUNT           (38u)
variants/metro_m0/variant.h:56:#define PINS_COUNT           (26u)
variants/metro_m4/variant.h:60:#define PINS_COUNT           (26u)
variants/metro_m4_airlift/variant.h:60:#define PINS_COUNT           (49u)
variants/monster_m4sk/variant.h:60:#define PINS_COUNT           (37u)
variants/pirkey/variant.h:56:#define PINS_COUNT           (22u)
variants/pybadge_airlift_m4/variant.h:60:#define PINS_COUNT           (55u)
variants/pybadge_m4/variant.h:60:#define PINS_COUNT           (51u)
variants/pygamer_advance_m4/variant.h:60:#define PINS_COUNT           (54u)
variants/pygamer_m4/variant.h:60:#define PINS_COUNT           (54u)
variants/pyportal_m4/variant.h:60:#define PINS_COUNT           (52u)
variants/pyportal_m4_titano/variant.h:60:#define PINS_COUNT           (52u)
variants/trellis_m4/variant.h:60:#define PINS_COUNT           (32u)
variants/trinket_m0/variant.h:56:#define PINS_COUNT           (22u)
variants/zero_radio/variant.h:56:#define PINS_COUNT           (51u)

(hey! I think the GCM4 is "correct"!)

This was fixed recently (well, relatively recently) in the arduino samd core:
arduino@a536cc8#diff-d93fff30801193a3f0511f85af4a2c56ad1056e133224838d32a171497f2af47
I don't particularly LIKE the way they did it (who needs a function when this could just be an int in variant.cpp, for example), but the adafruit SAMD cores ought to do something...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions