22typedef struct __attribute__((__packed__)) _vcodesig {
29#define V5_SIG_MAGIC 0x35585658
30#define IQ_SIG_MAGIC 0x32515658
31#define EX_SIG_MAGIC 0x45585658
32#define V5_SIG_TYPE_USER 0
33#define V5_SIG_OWNER_SYS 0
34#define V5_SIG_OWNER_VEX 1
35#define V5_SIG_OWNER_PARTNER 2
36#define V5_SIG_OPTIONS_NONE 0
37#define V5_SIG_OPTIONS_INDG (1 << 0)
38#define V5_SIG_OPTIONS_EXIT (1 << 1)
39#define V5_SIG_OPTIONS_THDG (1 << 2)
41#define V5_CODE_SIG(type, owner, options) \
42 vcodesig vexCodeSig __attribute__((section(".boot_data"))) = {V5_SIG_MAGIC, type, owner, options};
59void vexDelay(uint32_t timems);
60void vexBackgroundProcessing(
void);
62uint32_t vexSystemTimeGet(
void);
63void vexGettime(
struct time* pTime);
64void vexGetdate(
struct date* pDate);
65void vexSystemMemoryDump(
void);
66void vexSystemDigitalIO(uint32_t pin, uint32_t value);
67uint32_t vexSystemStartupOptions(
void);
68void vexSystemExitRequest(
void);
69uint64_t vexSystemHighResTimeGet(
void);
70uint64_t vexSystemPowerupTimeGet(
void);
71uint32_t vexSystemLinkAddrGet(
void);
72uint32_t vexSystemUsbStatus(
void);
74uint32_t vexSystemVersion(
void);
75uint32_t vexStdlibVersion(
void);
77uint32_t vexSdkVersion(
void);
79uint32_t vexStdlibVersionLinked(
void);
80bool vexStdlibVersionVerify(
void);
84int32_t vexDebug(
char const* fmt, ...);
85int32_t vex_printf(
char const* fmt, ...);
86int32_t vex_sprintf(
char* out,
const char* format, ...);
87int32_t vex_snprintf(
char* out, uint32_t max_len,
const char* format, ...);
88int32_t vex_vsprintf(
char* out,
const char* format, va_list args);
89int32_t vex_vsnprintf(
char* out, uint32_t max_len,
const char* format, va_list args);
94 kDeviceTypeNoSensor = 0,
95 kDeviceTypeMotorSensor = 2,
96 kDeviceTypeLedSensor = 3,
97 kDeviceTypeAbsEncSensor = 4,
98 kDeviceTypeCrMotorSensor = 5,
99 kDeviceTypeImuSensor = 6,
100 kDeviceTypeRangeSensor = 7,
101 kDeviceTypeDistanceSensor = 7,
102 kDeviceTypeRadioSensor = 8,
103 kDeviceTypeTetherSensor = 9,
104 kDeviceTypeBrainSensor = 10,
105 kDeviceTypeVisionSensor = 11,
106 kDeviceTypeAdiSensor = 12,
107 kDeviceTypeRes1Sensor = 13,
108 kDeviceTypeRes2Sensor = 14,
109 kDeviceTypeRes3Sensor = 15,
110 kDeviceTypeOpticalSensor = 16,
111 kDeviceTypeMagnetSensor = 17,
112 kDeviceTypeGpsSensor = 20,
113 kDeviceTypeAicameraSensor = 26,
114 kDeviceTypeLightTowerSensor = 27,
115 kDeviceTypeArmDevice = 28,
116 kDeviceTypeAiVisionSensor = 29,
117 kDeviceTypePneumaticSensor = 30,
118 kDeviceTypeMC55MotorSensor = 31,
119 kDeviceTypeBumperSensor = 0x40,
120 kDeviceTypeGyroSensor = 0x46,
121 kDeviceTypeSonarSensor = 0x47,
122 kDeviceTypeGenericSensor = 128,
123 kDeviceTypeGenericSerial = 129,
124 kDeviceTypeUndefinedSensor = 255
127typedef struct _V5_Device* V5_DeviceT;
130#define V5_MAX_DEVICE_PORTS 32
131typedef V5_DeviceType V5_DeviceTypeBuffer[V5_MAX_DEVICE_PORTS];
133uint32_t vexDevicesGetNumber(
void);
134uint32_t vexDevicesGetNumberByType(V5_DeviceType type);
135V5_DeviceT vexDevicesGet(
void);
136V5_DeviceT vexDeviceGetByIndex(uint32_t index);
137int32_t vexDeviceGetStatus(V5_DeviceType* buffer);
138int32_t vexDeviceGetTimestamp(V5_DeviceT device);
139int32_t vexDeviceGetTimestampByIndex(int32_t index);
140uint32_t vexDeviceButtonStateGet(
void);
143#define VEX_DEVICE_GET(device, index) V5_DeviceT device = vexDeviceGetByIndex(index)
145int32_t vexDeviceGenericValueGet(V5_DeviceT device);
149#define V5_COMP_BIT_EBL 1
150#define V5_COMP_BIT_MODE 2
151#define V5_COMP_BIT_COMP 4
152#define V5_COMP_BIT_GAME 8
153#define V5_COMP_BIT_OPT1 16
154#define V5_COMP_BIT_OPT2 32
156uint32_t vexCompetitionStatus(
void);
157void vexCompetitionControl(uint32_t data);
161int32_t vexBatteryVoltageGet(
void);
162int32_t vexBatteryCurrentGet(
void);
163double vexBatteryTemperatureGet(
void);
164double vexBatteryCapacityGet(
void);
168typedef enum _V5_ControllerIndex {
209 ButtonDown = Button7D,
210 ButtonLeft = Button7L,
211 ButtonRight = Button7R,
219typedef enum _V5_ControllerStatus {
220 kV5ControllerOffline = 0,
221 kV5ControllerTethered,
223} V5_ControllerStatus;
225typedef enum _V5_ControllerId { kControllerMaster = 0, kControllerPartner } V5_ControllerId;
227int32_t vexControllerGet(V5_ControllerId
id, V5_ControllerIndex index);
228V5_ControllerStatus vexControllerConnectionStatusGet(V5_ControllerId
id);
229bool vexControllerTextSet(V5_ControllerId
id, uint32_t line, uint32_t col,
const char* str);
234 kMotorControlModeOFF = 0,
235 kMotorControlModeBRAKE = 1,
236 kMotorControlModeHOLD = 2,
237 kMotorControlModeSERVO = 3,
238 kMotorControlModePROFILE = 4,
239 kMotorControlModeVELOCITY = 5,
240 kMotorControlModeUNDEFINED = 6
243typedef enum _V5_MotorBrakeMode {
244 kV5MotorBrakeModeCoast = 0,
245 kV5MotorBrakeModeBrake = 1,
246 kV5MotorBrakeModeHold = 2
250 kMotorEncoderDegrees = 0,
251 kMotorEncoderRotations = 1,
252 kMotorEncoderCounts = 2
253} V5MotorEncoderUnits;
255typedef enum _V5MotorGearset {
256 kMotorGearSet_36 = 0,
257 kMotorGearSet_18 = 1,
262#define V5_MOTOR_COUNTS_PER_ROT 1800.0
265typedef struct __attribute__((__packed__)) _V5_DeviceMotorPid {
278void vexDeviceMotorVelocitySet(V5_DeviceT device, int32_t velocity);
279void vexDeviceMotorVelocityUpdate(V5_DeviceT device, int32_t velocity);
280void vexDeviceMotorVoltageSet(V5_DeviceT device, int32_t value);
281int32_t vexDeviceMotorVelocityGet(V5_DeviceT device);
282double vexDeviceMotorActualVelocityGet(V5_DeviceT device);
283int32_t vexDeviceMotorDirectionGet(V5_DeviceT device);
284void vexDeviceMotorModeSet(V5_DeviceT device, V5MotorControlMode mode);
285V5MotorControlMode vexDeviceMotorModeGet(V5_DeviceT device);
286void vexDeviceMotorPwmSet(V5_DeviceT device, int32_t value);
287int32_t vexDeviceMotorPwmGet(V5_DeviceT device);
288void vexDeviceMotorCurrentLimitSet(V5_DeviceT device, int32_t value);
289int32_t vexDeviceMotorCurrentLimitGet(V5_DeviceT device);
290void vexDeviceMotorVoltageLimitSet(V5_DeviceT device, int32_t value);
291int32_t vexDeviceMotorVoltageLimitGet(V5_DeviceT device);
292void vexDeviceMotorPositionPidSet(V5_DeviceT device, V5_DeviceMotorPid* pid);
293void vexDeviceMotorVelocityPidSet(V5_DeviceT device, V5_DeviceMotorPid* pid);
294int32_t vexDeviceMotorCurrentGet(V5_DeviceT device);
295int32_t vexDeviceMotorVoltageGet(V5_DeviceT device);
296double vexDeviceMotorPowerGet(V5_DeviceT device);
297double vexDeviceMotorTorqueGet(V5_DeviceT device);
298double vexDeviceMotorEfficiencyGet(V5_DeviceT device);
299double vexDeviceMotorTemperatureGet(V5_DeviceT device);
300bool vexDeviceMotorOverTempFlagGet(V5_DeviceT device);
301bool vexDeviceMotorCurrentLimitFlagGet(V5_DeviceT device);
302uint32_t vexDeviceMotorFaultsGet(V5_DeviceT device);
303bool vexDeviceMotorZeroVelocityFlagGet(V5_DeviceT device);
304bool vexDeviceMotorZeroPositionFlagGet(V5_DeviceT device);
305uint32_t vexDeviceMotorFlagsGet(V5_DeviceT device);
306void vexDeviceMotorReverseFlagSet(V5_DeviceT device,
bool value);
307bool vexDeviceMotorReverseFlagGet(V5_DeviceT device);
308void vexDeviceMotorEncoderUnitsSet(V5_DeviceT device, V5MotorEncoderUnits
units);
309V5MotorEncoderUnits vexDeviceMotorEncoderUnitsGet(V5_DeviceT device);
310void vexDeviceMotorBrakeModeSet(V5_DeviceT device, V5MotorBrakeMode mode);
311V5MotorBrakeMode vexDeviceMotorBrakeModeGet(V5_DeviceT device);
312void vexDeviceMotorPositionSet(V5_DeviceT device,
double position);
313double vexDeviceMotorPositionGet(V5_DeviceT device);
314int32_t vexDeviceMotorPositionRawGet(V5_DeviceT device, uint32_t* timestamp);
315void vexDeviceMotorPositionReset(V5_DeviceT device);
316double vexDeviceMotorTargetGet(V5_DeviceT device);
317void vexDeviceMotorServoTargetSet(V5_DeviceT device,
double position);
318void vexDeviceMotorAbsoluteTargetSet(V5_DeviceT device,
double position, int32_t velocity);
319void vexDeviceMotorRelativeTargetSet(V5_DeviceT device,
double position, int32_t velocity);
320void vexDeviceMotorGearingSet(V5_DeviceT device, V5MotorGearset value);
321V5MotorGearset vexDeviceMotorGearingGet(V5_DeviceT device);
322void vexDeviceMotorExternalProfileSet(V5_DeviceT device,
double position, int32_t velocity);
323int32_t vexDeviceMotorTypeGet(V5_DeviceT device);
327typedef enum _V5_AdiPortConfiguration {
328 kAdiPortTypeAnalogIn = 0,
329 kAdiPortTypeAnalogOut,
330 kAdiPortTypeDigitalIn,
331 kAdiPortTypeDigitalOut,
333 kAdiPortTypeSmartButton,
334 kAdiPortTypeSmartPot,
336 kAdiPortTypeLegacyButton,
337 kAdiPortTypeLegacyPotentiometer,
338 kAdiPortTypeLegacyLineSensor,
339 kAdiPortTypeLegacyLightSensor,
340 kAdiPortTypeLegacyGyro,
341 kAdiPortTypeLegacyAccelerometer,
343 kAdiPortTypeLegacyServo,
344 kAdiPortTypeLegacyPwm,
346 kAdiPortTypeQuadEncoder,
349 kAdiPortTypeLegacyPwmSlew,
351 kAdiPortTypeUndefined = 255
352} V5_AdiPortConfiguration;
354#define V5_ADI_PORT_NUM 8
356void vexDeviceAdiPortConfigSet(V5_DeviceT device, uint32_t port, V5_AdiPortConfiguration type);
357V5_AdiPortConfiguration vexDeviceAdiPortConfigGet(V5_DeviceT device, uint32_t port);
358void vexDeviceAdiValueSet(V5_DeviceT device, uint32_t port, int32_t value);
359int32_t vexDeviceAdiValueGet(V5_DeviceT device, uint32_t port);
363typedef enum _V5_DeviceBumperState { kBumperReleased = 0, kBumperPressed = 1 } V5_DeviceBumperState;
365V5_DeviceBumperState vexDeviceBumperGet(V5_DeviceT device);
369void vexDeviceAbsEncReset(V5_DeviceT device);
370void vexDeviceAbsEncPositionSet(V5_DeviceT device, int32_t position);
371int32_t vexDeviceAbsEncPositionGet(V5_DeviceT device);
372int32_t vexDeviceAbsEncVelocityGet(V5_DeviceT device);
373int32_t vexDeviceAbsEncAngleGet(V5_DeviceT device);
374void vexDeviceAbsEncReverseFlagSet(V5_DeviceT device,
bool value);
375bool vexDeviceAbsEncReverseFlagGet(V5_DeviceT device);
376uint32_t vexDeviceAbsEncStatusGet(V5_DeviceT device);
377void vexDeviceAbsEncDataRateSet(V5_DeviceT device, uint32_t rate);
381typedef struct __attribute__((__packed__)) _V5_DeviceImuQuaternion {
386} V5_DeviceImuQuaternion;
388typedef struct __attribute__((__packed__)) _V5_DeviceImuAttitude {
392} V5_DeviceImuAttitude;
394typedef struct __attribute__((__packed__)) _V5_DeviceImuRaw {
402typedef enum _V5ImuHeadingnMode {
403 kImuHeadingNative = 0x00,
407typedef enum _V5ImuOrientationMode {
408 kImuOrientationZUp = 0x00,
409 kImuOrientationZDown = 0x10,
410 kImuOrientationXUp = 0x20,
411 kImuOrientationXDown = 0x30,
412 kImuOrientationYUp = 0x40,
413 kImuOrientationYDown = 0x50,
414 kImuOrientationAuto = 0x80
415} V5ImuOrientationMode;
417typedef enum _V5ImuQuaternionMode {
418 kImuQuaternionProcessed = 0x000,
419 kImuQuaternionRaw = 0x100
420} V5ImuQuaternionMode;
422void vexDeviceImuReset(V5_DeviceT device);
423double vexDeviceImuHeadingGet(V5_DeviceT device);
424double vexDeviceImuDegreesGet(V5_DeviceT device);
425void vexDeviceImuQuaternionGet(V5_DeviceT device, V5_DeviceImuQuaternion* data);
426void vexDeviceImuAttitudeGet(V5_DeviceT device, V5_DeviceImuAttitude* data);
427void vexDeviceImuRawGyroGet(V5_DeviceT device, V5_DeviceImuRaw* data);
428void vexDeviceImuRawAccelGet(V5_DeviceT device, V5_DeviceImuRaw* data);
429uint32_t vexDeviceImuStatusGet(V5_DeviceT device);
430void vexDeviceImuModeSet(V5_DeviceT device, uint32_t mode);
431uint32_t vexDeviceImuModeGet(V5_DeviceT device);
432void vexDeviceImuDataRateSet(V5_DeviceT device, uint32_t rate);
436uint32_t vexDeviceDistanceDistanceGet(V5_DeviceT device);
437uint32_t vexDeviceDistanceConfidenceGet(V5_DeviceT device);
438int32_t vexDeviceDistanceObjectSizeGet(V5_DeviceT device);
439double vexDeviceDistanceObjectVelocityGet(V5_DeviceT device);
440uint32_t vexDeviceDistanceStatusGet(V5_DeviceT device);
450} V5_DeviceOpticalRaw;
457} V5_DeviceOpticalRgb;
468} V5_DeviceOpticalGesture;
470double vexDeviceOpticalHueGet(V5_DeviceT device);
471double vexDeviceOpticalSatGet(V5_DeviceT device);
472double vexDeviceOpticalBrightnessGet(V5_DeviceT device);
473int32_t vexDeviceOpticalProximityGet(V5_DeviceT device);
474void vexDeviceOpticalRgbGet(V5_DeviceT device, V5_DeviceOpticalRgb* data);
475void vexDeviceOpticalLedPwmSet(V5_DeviceT device, int32_t value);
476int32_t vexDeviceOpticalLedPwmGet(V5_DeviceT device);
477uint32_t vexDeviceOpticalStatusGet(V5_DeviceT device);
478void vexDeviceOpticalRawGet(V5_DeviceT device, V5_DeviceOpticalRaw* data);
479void vexDeviceOpticalModeSet(V5_DeviceT device, uint32_t mode);
480uint32_t vexDeviceOpticalModeGet(V5_DeviceT device);
481uint32_t vexDeviceOpticalGestureGet(V5_DeviceT, V5_DeviceOpticalGesture* pData);
482void vexDeviceOpticalGestureEnable(V5_DeviceT);
483void vexDeviceOpticalGestureDisable(V5_DeviceT);
484int32_t vexDeviceOpticalProximityThreshold(V5_DeviceT device, int32_t value);
485void vexDeviceOpticalIntegrationTimeSet(V5_DeviceT device,
double timeMs);
486double vexDeviceOpticalIntegrationTimeGet(V5_DeviceT device);
491 kVisionModeNormal = 0,
492 kVisionModeMixed = 1,
493 kVisionModeLineDetect = 2,
498 kVisionTypeNormal = 0,
499 kVisionTypeColorCode = 1,
500 kVisionTypeLineDetect = 2
503typedef enum { kVisionWBNormal = 0, kVisionWBStart = 1, kVisionWBManual = 2 } V5VisionWBMode;
505typedef enum { kVisionLedModeAuto = 0, kVisionLedModeManual = 1 } V5VisionLedMode;
507typedef enum { kVisionWifiModeOff = 0, kVisionWifiModeOn = 1 } V5VisionWifiMode;
510#define VISION_SIG_FLAG_STATUS (1 << 0)
513typedef struct __attribute__((__packed__)) _V5_DeviceVisionSignature {
526} V5_DeviceVisionSignature;
528typedef struct __attribute__((__packed__)) _V5_DeviceVisionObject {
530 V5VisionBlockType type;
536} V5_DeviceVisionObject;
539typedef struct __attribute__((__packed__)) _V5_DeviceVisionRgb {
546void vexDeviceVisionModeSet(V5_DeviceT device, V5VisionMode mode);
547V5VisionMode vexDeviceVisionModeGet(V5_DeviceT device);
548int32_t vexDeviceVisionObjectCountGet(V5_DeviceT device);
549int32_t vexDeviceVisionObjectGet(
550 V5_DeviceT device, uint32_t indexObj, V5_DeviceVisionObject* pObject
552void vexDeviceVisionSignatureSet(V5_DeviceT device, V5_DeviceVisionSignature* pSignature);
553bool vexDeviceVisionSignatureGet(
554 V5_DeviceT device, uint32_t
id, V5_DeviceVisionSignature* pSignature
556void vexDeviceVisionBrightnessSet(V5_DeviceT device, uint8_t percent);
557uint8_t vexDeviceVisionBrightnessGet(V5_DeviceT device);
558void vexDeviceVisionWhiteBalanceModeSet(V5_DeviceT device, V5VisionWBMode mode);
559V5VisionWBMode vexDeviceVisionWhiteBalanceModeGet(V5_DeviceT device);
560void vexDeviceVisionWhiteBalanceSet(V5_DeviceT device, V5_DeviceVisionRgb color);
561V5_DeviceVisionRgb vexDeviceVisionWhiteBalanceGet(V5_DeviceT device);
562void vexDeviceVisionLedModeSet(V5_DeviceT device, V5VisionLedMode mode);
563V5VisionLedMode vexDeviceVisionLedModeGet(V5_DeviceT device);
564void vexDeviceVisionLedBrigntnessSet(V5_DeviceT device, uint8_t percent);
565uint8_t vexDeviceVisionLedBrigntnessGet(V5_DeviceT device);
566void vexDeviceVisionLedColorSet(V5_DeviceT device, V5_DeviceVisionRgb color);
567V5_DeviceVisionRgb vexDeviceVisionLedColorGet(V5_DeviceT device);
568void vexDeviceVisionWifiModeSet(V5_DeviceT device, V5VisionWifiMode mode);
569V5VisionWifiMode vexDeviceVisionWifiModeGet(V5_DeviceT device);
573typedef struct __attribute((packed)) _V5_DeviceAiVisionObject {
604} V5_DeviceAiVisionObject;
606typedef struct __attribute__((__packed__)) _V5_DeviceAiVisionColor {
614} V5_DeviceAiVisionColor;
616typedef struct __attribute__((__packed__)) _V5_DeviceAiVisionCode {
626} V5_DeviceAiVisionCode;
628void vexDeviceAiVisionModeSet(V5_DeviceT device, uint32_t mode);
629uint32_t vexDeviceAiVisionModeGet(V5_DeviceT device);
630int32_t vexDeviceAiVisionObjectCountGet(V5_DeviceT device);
631int32_t vexDeviceAiVisionObjectGet(
632 V5_DeviceT device, uint32_t indexObj, V5_DeviceAiVisionObject* pObject
634void vexDeviceAiVisionColorSet(V5_DeviceT device, V5_DeviceAiVisionColor* pColor);
635bool vexDeviceAiVisionColorGet(V5_DeviceT device, uint32_t
id, V5_DeviceAiVisionColor* pColor);
636void vexDeviceAiVisionCodeSet(V5_DeviceT device, V5_DeviceAiVisionCode* pCode);
637bool vexDeviceAiVisionCodeGet(V5_DeviceT device, uint32_t
id, V5_DeviceAiVisionCode* pCode);
638uint32_t vexDeviceAiVisionStatusGet(V5_DeviceT device);
639double vexDeviceAiVisionTemperatureGet(V5_DeviceT device);
640int32_t vexDeviceAiVisionClassNameGet(V5_DeviceT device, int32_t
id, uint8_t* pName);
641void vexDeviceAiVisionReset(V5_DeviceT device);
642void vexDeviceAiVisionEnableSet(V5_DeviceT device, uint8_t nEnables, uint8_t nMask);
643uint8_t vexDeviceAiVisionEnableGet(V5_DeviceT device);
647typedef struct __attribute__((__packed__)) _V5_DeviceGpsQuaternion {
652} V5_DeviceGpsQuaternion;
654typedef struct __attribute__((__packed__)) _V5_DeviceGpsAttitude {
668} V5_DeviceGpsAttitude;
670typedef struct __attribute__((__packed__)) _V5_DeviceGpsRaw {
677void vexDeviceGpsReset(V5_DeviceT device);
678double vexDeviceGpsHeadingGet(V5_DeviceT device);
679double vexDeviceGpsDegreesGet(V5_DeviceT device);
680void vexDeviceGpsQuaternionGet(V5_DeviceT device, V5_DeviceGpsQuaternion* data);
681void vexDeviceGpsAttitudeGet(V5_DeviceT device, V5_DeviceGpsAttitude* data,
bool bRaw);
682void vexDeviceGpsRawGyroGet(V5_DeviceT device, V5_DeviceGpsRaw* data);
683void vexDeviceGpsRawAccelGet(V5_DeviceT device, V5_DeviceGpsRaw* data);
684uint32_t vexDeviceGpsStatusGet(V5_DeviceT device);
685void vexDeviceGpsModeSet(V5_DeviceT device, uint32_t mode);
686uint32_t vexDeviceGpsModeGet(V5_DeviceT device);
687void vexDeviceGpsDataRateSet(V5_DeviceT device, uint32_t rate);
688void vexDeviceGpsOriginSet(V5_DeviceT device,
double ox,
double oy);
689void vexDeviceGpsOriginGet(V5_DeviceT device,
double* ox,
double* oy);
690void vexDeviceGpsRotationSet(V5_DeviceT device,
double value);
691double vexDeviceGpsRotationGet(V5_DeviceT device);
692void vexDeviceGpsInitialPositionSet(
693 V5_DeviceT device,
double initial_x,
double initial_y,
double initial_rotation
695double vexDeviceGpsErrorGet(V5_DeviceT device);
699typedef enum _V5_DeviceMagnetDuration {
700 kMagnetDurationShort,
701 kMagnetDurationMedium,
703 kMagnetDurationExtraLong,
704} V5_DeviceMagnetDuration;
706void vexDeviceMagnetPowerSet(V5_DeviceT device, int32_t value, int32_t
time);
707int32_t vexDeviceMagnetPowerGet(V5_DeviceT device);
708void vexDeviceMagnetPickup(V5_DeviceT device, V5_DeviceMagnetDuration duration);
709void vexDeviceMagnetDrop(V5_DeviceT device, V5_DeviceMagnetDuration duration);
710double vexDeviceMagnetTemperatureGet(V5_DeviceT device);
711double vexDeviceMagnetCurrentGet(V5_DeviceT device);
712uint32_t vexDeviceMagnetStatusGet(V5_DeviceT device);
716void vexDeviceLightTowerRgbSet(V5_DeviceT device, uint32_t rgb_value, uint32_t xyw_value);
717void vexDeviceLightTowerColorSet(V5_DeviceT device, uint32_t color_id, uint32_t value);
718uint32_t vexDeviceLightTowerRgbGet(V5_DeviceT device);
719uint32_t vexDeviceLightTowerXywGet(V5_DeviceT device);
720uint32_t vexDeviceLightTowerStatusGet(V5_DeviceT device);
721void vexDeviceLightTowerBlinkSet(
722 V5_DeviceT device, uint8_t select, uint8_t mask, int32_t onTime, int32_t offTime
739} V5_DevicePneumaticCtrl;
741void vexDevicePneumaticCompressorSet(V5_DeviceT device,
bool bState);
742void vexDevicePneumaticCylinderSet(V5_DeviceT device, uint32_t
id,
bool bState);
743void vexDevicePneumaticCtrlSet(V5_DeviceT device, V5_DevicePneumaticCtrl* pCtrl);
744uint32_t vexDevicePneumaticStatusGet(V5_DeviceT device);
745void vexDevicePneumaticPwmSet(V5_DeviceT device, uint8_t pwm);
746uint32_t vexDevicePneumaticPwmGet(V5_DeviceT device);
747void vexDevicePneumaticCylinderPwmSet(V5_DeviceT device, uint32_t
id,
bool bState, uint8_t pwm);
748uint32_t vexDevicePneumaticActuationStatusGet(
749 V5_DeviceT device, uint16_t* ac1, uint16_t* ac2, uint16_t* ac3, uint16_t* ac4
755typedef struct __attribute__((__packed__)) _V5_DeviceAicamObject {
765 int16_t screenHeight;
768} V5_DeviceAicamObject;
782} V5_DeviceArmTipPosition;
786typedef enum _V5_DeviceLedColor {
788 kLedColorRed = 0xFF0000,
789 kLedColorGreen = 0x00FF00,
790 kLedColorBlue = 0x0000FF,
791 kLedColorYellow = 0xFFFF00,
792 kLedColorCyan = 0x00FFFF,
793 kLedColorMagenta = 0xFF00FF,
794 kLedColorWhite = 0xFFFFFF
797void vexDeviceLedSet(V5_DeviceT device, V5_DeviceLedColor value);
798void vexDeviceLedRgbSet(V5_DeviceT device, uint32_t color);
799V5_DeviceLedColor vexDeviceLedGet(V5_DeviceT device);
800uint32_t vexDeviceLedRgbGet(V5_DeviceT device);
804void vexDeviceGyroReset(V5_DeviceT device);
805double vexDeviceGyroHeadingGet(V5_DeviceT device);
806double vexDeviceGyroDegreesGet(V5_DeviceT device);
808int32_t vexDeviceSonarValueGet(V5_DeviceT device);
810int32_t vexDeviceRangeValueGet(V5_DeviceT device);
814void vexDeviceGenericSerialEnable(V5_DeviceT device, int32_t options);
815void vexDeviceGenericSerialBaudrate(V5_DeviceT device, int32_t baudrate);
816int32_t vexDeviceGenericSerialWriteChar(V5_DeviceT device, uint8_t c);
817int32_t vexDeviceGenericSerialWriteFree(V5_DeviceT device);
818int32_t vexDeviceGenericSerialTransmit(V5_DeviceT device, uint8_t* buffer, int32_t length);
819int32_t vexDeviceGenericSerialReadChar(V5_DeviceT device);
820int32_t vexDeviceGenericSerialPeekChar(V5_DeviceT device);
821int32_t vexDeviceGenericSerialReceiveAvail(V5_DeviceT device);
822int32_t vexDeviceGenericSerialReceive(V5_DeviceT device, uint8_t* buffer, int32_t length);
823void vexDeviceGenericSerialFlush(V5_DeviceT device);
827void vexDeviceGenericRadioConnection(
828 V5_DeviceT device,
char* pName,
bool bMaster,
bool bAllowRadioOverride
830int32_t vexDeviceGenericRadioWriteChar(V5_DeviceT device, uint8_t c);
831int32_t vexDeviceGenericRadioWriteFree(V5_DeviceT device);
832int32_t vexDeviceGenericRadioTransmit(V5_DeviceT device, uint8_t* buffer, int32_t length);
833int32_t vexDeviceGenericRadioReadChar(V5_DeviceT device);
834int32_t vexDeviceGenericRadioPeekChar(V5_DeviceT device);
835int32_t vexDeviceGenericRadioReceiveAvail(V5_DeviceT device);
836int32_t vexDeviceGenericRadioReceive(V5_DeviceT device, uint8_t* buffer, int32_t length);
837void vexDeviceGenericRadioFlush(V5_DeviceT device);
838bool vexDeviceGenericRadioLinkStatus(V5_DeviceT device);
842int32_t vexSerialWriteChar(uint32_t channel, uint8_t c);
843int32_t vexSerialWriteBuffer(uint32_t channel, uint8_t* data, uint32_t data_len);
844int32_t vexSerialReadChar(uint32_t channel);
845int32_t vexSerialPeekChar(uint32_t channel);
846int32_t vexSerialWriteFree(uint32_t channel);
851typedef struct __attribute__((__packed__)) _v5_image {
858#define SYSTEM_DISPLAY_WIDTH 480
859#define SYSTEM_DISPLAY_HEIGHT 272
861void vexDisplayForegroundColor(uint32_t col);
862void vexDisplayBackgroundColor(uint32_t col);
863uint32_t vexDisplayForegroundColorGet(
void);
864uint32_t vexDisplayBackgroundColorGet(
void);
865void vexDisplayErase(
void);
866void vexDisplayScroll(int32_t nStartLine, int32_t nLines);
867void vexDisplayScrollRect(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t nLines);
868void vexDisplayCopyRect(
869 int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t* pSrc, int32_t srcStride
871void vexDisplayPixelSet(uint32_t x, uint32_t y);
872void vexDisplayPixelClear(uint32_t x, uint32_t y);
873void vexDisplayLineDraw(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
874void vexDisplayLineClear(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
875void vexDisplayRectDraw(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
876void vexDisplayRectClear(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
877void vexDisplayRectFill(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
878void vexDisplayCircleDraw(int32_t xc, int32_t yc, int32_t radius);
879void vexDisplayCircleClear(int32_t xc, int32_t yc, int32_t radius);
880void vexDisplayCircleFill(int32_t xc, int32_t yc, int32_t radius);
883void vexDisplayPrintf(int32_t xpos, int32_t ypos, uint32_t bOpaque,
const char* format, ...);
884void vexDisplayString(
const int32_t nLineNumber,
const char* format, ...);
885void vexDisplayStringAt(int32_t xpos, int32_t ypos,
const char* format, ...);
886void vexDisplayBigString(
const int32_t nLineNumber,
const char* format, ...);
887void vexDisplayBigStringAt(int32_t xpos, int32_t ypos,
const char* format, ...);
888void vexDisplaySmallStringAt(int32_t xpos, int32_t ypos,
const char* format, ...);
889void vexDisplayCenteredString(
const int32_t nLineNumber,
const char* format, ...);
890void vexDisplayBigCenteredString(
const int32_t nLineNumber,
const char* format, ...);
893void vexDisplayVPrintf(
894 int32_t xpos, int32_t ypos, uint32_t bOpaque,
const char* format, va_list args
896void vexDisplayVString(
const int32_t nLineNumber,
const char* format, va_list args);
897void vexDisplayVStringAt(int32_t xpos, int32_t ypos,
const char* format, va_list args);
898void vexDisplayVBigString(
const int32_t nLineNumber,
const char* format, va_list args);
899void vexDisplayVBigStringAt(int32_t xpos, int32_t ypos,
const char* format, va_list args);
900void vexDisplayVSmallStringAt(int32_t xpos, int32_t ypos,
const char* format, va_list args);
901void vexDisplayVCenteredString(
const int32_t nLineNumber,
const char* format, va_list args);
902void vexDisplayVBigCenteredString(
const int32_t nLineNumber,
const char* format, va_list args);
905void vexDisplayTextSize(uint32_t n, uint32_t d);
906void vexDisplayFontNamedSet(
const char* pFontName);
907int32_t vexDisplayStringWidthGet(
const char* pString);
908int32_t vexDisplayStringHeightGet(
const char* pString);
911bool vexDisplayRender(
bool bVsyncWait,
bool bRunScheduler);
912void vexDisplayDoubleBufferDisable(
void);
915void vexDisplayClipRegionSet(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
916void vexDisplayClipRegionClear();
919uint32_t vexImageBmpRead(
const uint8_t* ibuf, v5_image* oBuf, uint32_t maxw, uint32_t maxh);
920uint32_t vexImagePngRead(
921 const uint8_t* ibuf, v5_image* oBuf, uint32_t maxw, uint32_t maxh, uint32_t ibuflen
926typedef enum _touchEvent {
933 V5_TouchEvent lastEvent;
937 int32_t releaseCount;
940void vexTouchUserCallbackSet(
void (*callback)(V5_TouchEvent, int32_t, int32_t));
941bool vexTouchDataGet(V5_TouchStatus* status);
952#define FS_FILE_EXIST 1
974 FR_TOO_MANY_OPEN_FILES,
978FRESULT vexFileMountSD(
void);
979FRESULT vexFileDirectoryGet(
const char* path,
char* buffer, uint32_t len);
980FIL* vexFileOpen(
const char* filename,
const char* mode);
981FIL* vexFileOpenWrite(
const char* filename);
982FIL* vexFileOpenCreate(
const char* filename);
983void vexFileClose(FIL* fdp);
984int32_t vexFileRead(
char* buf, uint32_t size, uint32_t nItems, FIL* fdp);
985int32_t vexFileWrite(
char* buf, uint32_t size, uint32_t nItems, FIL* fdp);
986int32_t vexFileSize(FIL* fdp);
987FRESULT vexFileSeek(FIL* fdp, uint32_t offset, int32_t whence);
988bool vexFileDriveStatus(uint32_t drive);
989int32_t vexFileTell(FIL* fdp);
990void vexFileSync(FIL* fdp);
991uint32_t vexFileStatus(
const char* filename);
995int32_t vexScratchMemoryPtr(
void** ptr);
996bool vexScratchMemoryLock(
void);
997void vexScratchMemoryUnlock(
void);
1001void vexSystemTimerStop();
1002void vexSystemTimerClearInterrupt();
1003int32_t vexSystemTimerReinitForRtos(uint32_t priority,
void (*handler)(
void* data));
1004void vexSystemApplicationIRQHandler(uint32_t ulICCIAR);
1005int32_t vexSystemWatchdogReinitRtos(
void);
1006uint32_t vexSystemWatchdogGet(
void);
1010void vexSystemBoot(
void);
1011void vexSystemUndefinedException(
void);
1012void vexSystemFIQInterrupt(
void);
1013void vexSystemIRQInterrupt(
void);
1014void vexSystemSWInterrupt(
void);
1015void vexSystemDataAbortInterrupt(
void);
1016void vexSystemPrefetchAbortInterrupt(
void);