|
Defines |
#define | CAN_MESSAGE_LENGTH 8 |
#define | CAN_TYPE 0 |
#define | CAN_DATA1 1 |
#define | xcuSRC(x) (((unsigned int) (x) & XCUSRC_MASK ) >> XCUSRC_LOC ) |
#define | xcuDST(x) (((unsigned int) (x) & XCUDST_MASK ) >> XCUDST_LOC ) |
#define | canIndex(x) (((unsigned int) (x) & CANINDEX_MASK ) >> CANINDEX_LOC ) |
#define | operation(x) (((unsigned int) (x) & OPERATION_MASK) >> OPERATION_LOC) |
#define | xcuSRC_patt(y) (((unsigned int) (y) << XCUSRC_LOC ) & XCUSRC_MASK ) |
#define | xcuDST_patt(y) (((unsigned int) (y) << XCUDST_LOC ) & XCUDST_MASK ) |
#define | canIndex_patt(y) (((unsigned int) (y) << CANINDEX_LOC ) & CANINDEX_MASK ) |
#define | operation_patt(y) (((unsigned int) (y) << OPERATION_LOC) & OPERATION_MASK) |
#define | filter(ind) (xcuDST_patt(HOST_SCU) | canIndex_patt(ind)) |
#define | identifierMSG(op, ind) (xcuSRC_patt(HOST_SCU) | xcuDST_patt(HOST_MCU) | canIndex_patt(ind) | operation_patt(op)) |
#define | scuSRC_patt(y) (byte) (((unsigned int) (y) << SCUSRC_LOC ) & SCUSRC_MASK ) |
#define | msgIndex_patt(y) (byte) (((unsigned int) (y) << MSGINDEX_LOC) & MSGINDEX_MASK) |
#define | special_patt(y) (byte) (((unsigned int) (y) << SPECIAL_LOC ) & SPECIAL_MASK ) |
#define | sensors_patt(y) (byte) (((unsigned int) (y) << SENSORS_LOC ) & SENSORS_MASK ) |
#define | footID_patt(y) (byte) (((unsigned int) (y) << FOOTID_LOC ) & FOOTID_MASK ) |
#define | typePacket(pack_id, sp, sens, foot) (scuSRC_patt(HOST_SCU) | msgIndex_patt(pack_id) | special_patt(sp) | sensors_patt(sens) | footID_patt(foot)) |
#define | deadlineError_patt (((byte) sensors.sysStatus.deadlineError << DEADLINEERROR_LOC) & DEADLINEERROR_MASK) |
#define | reset_patt (((byte) sensors.sysStatus.reset << RESET_LOC) & RESET_MASK) |
#define | controlOn_patt(srv) (((byte) sensors.sysStatus.controlOn[srv] & 1) << (CONTROLON_LOC+srv)) |
#define | motionFin_patt(srv) (((byte) sensors.sysStatus.motionFin[srv] & 1) << (MOTIONFIN_LOC+srv)) |
#define | applyControlOn(x, srv) (byte) ((x >> srv) & 1) |
Enumerations |
enum | MESSAGE_IDENTIFIER {
XCUSRC_MASK = 0b11110000000,
XCUDST_MASK = 0b00001111000,
CANINDEX_MASK = 0b00000000100,
OPERATION_MASK = 0b00000000011,
CAN_MASK = XCUDST_MASK | CANINDEX_MASK,
XCUSRC_LOC = 7,
XCUDST_LOC = 3,
CANINDEX_LOC = 2,
OPERATION_LOC = 0,
OP_UPDATE_SENSORS = 0b00,
OP_UPDATE_ACTUATORS = 0b01,
OP_SLAVECAN_STATUS = 0b10
} |
enum | MESSAGE_UPDATE_SENSORS {
SCUSRC_MASK = 0b11110000,
MSGINDEX_MASK = 0b00001000,
SPECIAL_MASK = 0b00000100,
SENSORS_MASK = 0b00000010,
FOOTID_MASK = 0b00000001,
SCUSRC_LOC = 4,
MSGINDEX_LOC = 3,
SPECIAL_LOC = 2,
SENSORS_LOC = 1,
FOOTID_LOC = 0,
MSGINDEX_1 = 0,
MSGINDEX_2 = 1
} |
enum | MESSAGE_SYSSTATUS_PACKET {
DEADLINEERROR_MASK = 0b10000000,
RESET_MASK = 0b01000000,
CONTROLON_MASK = 0b00111000,
MOTIONFIN_MASK = 0b00000111,
DEADLINEERROR_LOC = 7,
RESET_LOC = 6,
CONTROLON_LOC = 3,
MOTIONFIN_LOC = 0
} |
enum | CAN_ERRORS {
CAN_ERROR = 0b00000001,
RX_INVALIDMSG_ERROR = 0b00000010,
RX_OVERFLOW_ERROR = 0b00000100,
RX_INVALID_LENGTH = 0b00001000,
RX_INVALID_ID = 0b00010000,
RX_INVALID_DATA = 0b00100000,
TX_NOTPOSSIBLE = 0b01000000,
TX_ERROR = 0b10000000,
TX_BITS = 0b11000000,
RX_BITS = 0b00111111
} |
Functions |
byte | sysStatusPacket (void) |
void | update_applyControlOn (byte packet) |
static void | updateServoSensors (byte *message) |
static void | updateSpecialSensors (byte *message) |
static void | updateActuators (byte *can_message) |
static void | updateControllers (byte *can_message) |
static void | setError (enum CAN_ERRORS error) |
void | initCan (void) |
bool | sendCanMessage (byte index) |
bool | receiveCanMessage (byte buffer) |
Variables |
struct { |
enum CAN_ERRORS flags |
byte tx_count |
byte rx_count |
unsigned char which |
struct { |
unsigned char vpotImp |
unsigned int vpotMin |
unsigned int vpotMin_prev |
} measure [N_SERVOS] |
} | canErrors |