AnasSarkiz/usb-c-pd-brushed-motor

USB-C PD-powered motor controller with protected input, selectable 5/9/12 V buck supply, MCU qualification, PWM H-bridge drive, overvoltage sensing, regenerative energy-dump resistors, and safety interlocks.

Version
0.0.1-a48-cloud-pipeline9-unrouted-c41d79a-305b1e7a
License
unset
Stars
0

firmware/stusb4500_nvm.h

#ifndef MOTOR_STUSB4500_NVM_H
#define MOTOR_STUSB4500_NVM_H
#include "stusb4500_rx.h"
#define STUSB_NVM_BYTES 40
struct stusb_nvm_image { uint8_t bytes[STUSB_NVM_BYTES]; };
enum stusb_nvm_result {
  STUSB_NVM_VERIFIED,
  STUSB_NVM_INVALID_ARGUMENT,
  STUSB_NVM_UNSAFE_PRECONDITION,
  STUSB_NVM_LATCHED,
  STUSB_NVM_IO_ERROR,
  STUSB_NVM_LATE,
  STUSB_NVM_TIMER_STALLED,
  STUSB_NVM_BUSY_TIMEOUT,
  STUSB_NVM_CONTROLLER_STATE,
  STUSB_NVM_MISMATCH
};
struct stusb_nvm_state {
  struct stusb_nvm_image observed_image;
  bool read_complete, image_matches, faulted;
};
struct stusb_nvm_check {
  struct stusb_nvm_state *state;
  /* Exact manufacturer-tool image independently approved for this board and
   * device revision. No default image, incomplete mask or guessed decoder. */
  const struct stusb_nvm_image *expected_image;
  uint32_t started_us;
  bool power_path_inhibited, bridge_inhibited, provenance_invalidated;
};
/* Read operations only: no erase/program/load opcode or buffer write.
 * A failure can leave customer mode unlocked; latch outputs off, then recover
 * explicitly by resetting/reinitializing the controller under inhibition.
 * Verified bytes do not establish their configuration meaning, RAM state,
 * source capabilities, a power contract or physical startup timing. */
enum stusb_nvm_result stusb_nvm_verify(const struct stusb_bus *bus,
                                      const struct stusb_nvm_check *check);
#endif