36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
#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
|