Skip to content

spi_transfer Refactor Pointers into std::array - #3755

Merged
adrianchan787 merged 13 commits into
UBC-Thunderbots:masterfrom
adrianchan787:adrian/refactor_spitransfer_pointers
Sep 3, 2026
Merged

spi_transfer Refactor Pointers into std::array#3755
adrianchan787 merged 13 commits into
UBC-Thunderbots:masterfrom
adrianchan787:adrian/refactor_spitransfer_pointers

Conversation

@adrianchan787

@adrianchan787 adrianchan787 commented May 30, 2026

Copy link
Copy Markdown
Contributor

Description

Refactored pointers into arrays. Also changed the C-style casts for the relevant code, used uintptr instead of unsigned long for the casts, and made the receive buffers not constant.

Testing Done

No more pointers.

Resolved Issues

resolves #3751

Length Justification and Key Files to Review

Review Checklist

It is the reviewers responsibility to also make sure every item here has been covered

  • [ x ] Function & Class comments: All function definitions (usually in the .h file) should have a javadoc style comment at the start of them. For examples, see the functions defined in thunderbots/software/geom. Similarly, all classes should have an associated Javadoc comment explaining the purpose of the class.
  • [ x ] Remove all commented out code
  • [ x ] Remove extra print statements: for example, those just used for testing
  • [ x ] Resolve all TODO's: All TODO (or similar) statements should either be completed or associated with a github issue

@someone2060 someone2060 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've noticed that spi_utils.cpp241:: static const inline std::unordered_map<MotorIndex, const char*> SPI_PATHS still contains a pointer.
Is it possible to remove this pointer, or is it unnecessary to remove it?

@adrianchan787

Copy link
Copy Markdown
Contributor Author

I've noticed that spi_utils.cpp241:: static const inline std::unordered_map<MotorIndex, const char*> SPI_PATHS still contains a pointer. Is it possible to remove this pointer, or is it unnecessary to remove it?

I wanna say it's not necessary? way I interpreted the issue, it was just changing the spiTransfer functions in spi_utils. Maybe Grayson could clarify though

@adrianchan787
adrianchan787 marked this pull request as draft May 31, 2026 01:20
@adrianchan787
adrianchan787 marked this pull request as ready for review May 31, 2026 06:25

@GrayHoang GrayHoang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some nits

Comment thread src/software/embedded/motor_controller/tmc_motor_controller.cpp Outdated
Comment thread src/software/embedded/motor_controller/tmc_motor_controller.h Outdated
Comment thread src/software/embedded/spi_utils.hpp
@GrayHoang

Copy link
Copy Markdown
Contributor

the const char* is a c-style string and I think it should stay that way to be compatible with spidev open()

@williamckha williamckha left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding SPI_PATHS, we should use std::string_view. But that is out of scope for this task, so it's up to you if you want to make that change.

Comment thread src/software/embedded/spi_utils.h Outdated
Comment thread src/software/embedded/motor_controller/tmc_motor_controller.cpp
Comment thread src/software/embedded/motor_controller/stspin_motor_controller.cpp Outdated
Comment thread src/software/embedded/spi_utils.hpp
@StarrryNight

Copy link
Copy Markdown
Contributor

@adrianchan787 Any updates on this PR?

@adrianchan787

Copy link
Copy Markdown
Contributor Author

@adrianchan787 Any updates on this PR?

Sorry for scuffed communication, was on vacation for past few days and haven't worked on it at all, i did mostly fix everything before the vacation though so i just need to make a few checks and then push

@nycrat nycrat left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few comments. I think this PR is pretty close to done, just resolve those review comments whenever you have time 👍

Comment thread src/software/embedded/motor_controller/tmc_motor_controller.cpp Outdated
Comment thread src/software/embedded/motor_controller/tmc_motor_controller.cpp Outdated
Comment thread src/software/embedded/motor_controller/tmc_motor_controller.cpp Outdated
Comment thread src/software/embedded/motor_controller/tmc_motor_controller.h Outdated
@adrianchan787
adrianchan787 marked this pull request as draft September 2, 2026 16:52
@adrianchan787
adrianchan787 marked this pull request as ready for review September 2, 2026 16:52

@nycrat nycrat left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work!

@adrianchan787
adrianchan787 merged commit 8abb09d into UBC-Thunderbots:master Sep 3, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use std::array instead of a raw pointer in spi transfers

6 participants