#include "Rpc.h"

// These variables and functions are to be defined on the vision stack.

/// OCU RPC

// WP/VS termination status, send RPC to OCU.

void send_ocu_wp_terminated_notify (WPTerminationStatus status);
void send_ocu_vs_terminated_notify (VSTerminationStatus status);


/// Frame grabber:

enum VSFrameGrabberCameraID {

    // We don't care which front camera, though we do want it to always be the
    // same one.
    VS_FG_FRONT,

    // Grab omni camera.
    VS_FG_OMNI,

    // VS not running, no grabbing needed.
    VS_FG_NONE};


// Turn on grabbing for the specified camera.  The result is the pointer to the
// grab buffer.  If VS_FG_NONE, grabbing is turned off, and NULL is returned.
unsigned char *VSFrameGrabberSetCamera (VSFrameGrabberCameraID camera);

// Visual servoing will wait for a new frame by taking this semaphore.  
// After each grab completes, the driver must give this semaphore.
SEM_ID VSFrameGrabberSem;


/// Arbiter:

// Send vote message to the arbiter.
void WPVSSendArbiterMsg (ArbiterVote *msg);

// The behavior ID used in outputs from the driving code.
const unsigned char WPVSBehaviorID = ???;

/// Pose:

// For now, we'll make do with the track encoder values.

void getTrackEncoders (unsigned short &left, unsigned short &right);

