Files
hexapod-robot/2026-current/sim/SimHardware.h
T

36 lines
1.2 KiB
C++
Raw Normal View History

#pragma once
// Internal interface between the hardware stand-ins (shim/, SimHardware.cpp)
// and the exported API (HexapodSimApi.cpp). Not visible to robot/ code.
#include <stdint.h>
namespace simhw {
// ---- Clock ----
void advanceMicros(uint32_t us);
uint64_t nowMicros();
// ---- Serial ----
void serialFeed(const char* bytes, int len); // Unity -> robot Serial.read()
int serialDrain(char* out, int cap); // robot Serial.print() -> Unity
// ---- Servos (indexed by pin) ----
constexpr int MAX_PINS = 64;
struct ServoPin {
bool attached = false;
int us = 1500; // Teensy Servo's default pulse after attach()
uint32_t writes = 0; // writeMicroseconds() calls since start
};
const ServoPin& servoPin(int pin);
// ---- MPU6050 ----
void imuSetPresent(bool present);
// Body-frame values as the chip would measure them: accel in g (reads +1 g
// on the axis pointing up when at rest), gyro in deg/s.
void imuSet(float ax, float ay, float az, float gx, float gy, float gz);
// ---- Radio ----
void radioSetPresent(bool present);
// Puts one packet "on air" using the protocol's channel/address/data rate.
void radioSend(const uint8_t* bytes, int len);
} // namespace simhw