blob: e1b7ef541685c3e2979406b5c9f5ad30ca1bf8ea [file] [log] [blame]
#ifndef AOS_COMMON_CONFIGURATION_H_
#define AOS_COMMON_CONFIGURATION_H_
#include "aos/aos_stdint.h"
namespace aos {
// Constants representing the various ports used for communications and some
// documentation about what each is used for.
enum class NetworkPort : uint16_t {
// UDP socket sending motor values from the atom to the crio.
kMotors = 9710,
// UDP socket forwarding drivers station packets from the crio to the atom.
kDS = 9711,
// UDP socket sending sensor values from the crio to the atom.
kSensors = 9712,
// TCP socket(s) (automatically reconnects) sending logs from the crio to the
// atom.
kLogs = 9713,
// HTTP server that sends out camera feeds in mjpg format.
// Should not be changed because this number shows up elsewhere too.
kCameraStreamer = 9714,
};
// Holds global configuration data. All of the functions are safe to call
// from wherever (the ones that need to create locks on the cRIO).
namespace configuration {
// Constants indentifying various devices on the network.
enum class NetworkDevice {
// The computer that the cRIO talks to.
kAtom,
kCRIO,
// Whatever device this is being run on.
kSelf,
};
// Returns the IP address to get to the specified machine.
// The return value should be passed to free(3) if it is no longer needed.
const char *GetIPAddress(NetworkDevice device);
// Returns the "root directory" for this run. Under linux, this is the
// directory where the executable is located (from /proc/self/exe) and under
// vxworks it is just "/".
// The return value will always be to a static string, so no freeing is
// necessary.
const char *GetRootDirectory();
// Returns the directory where logs get written. Relative to GetRootDirectory().
// The return value will always be to a static string, so no freeing is
// necessary.
const char *GetLoggingDirectory();
} // namespace configuration
} // namespace aos
#endif