/* 
 * File:   types.h
 * Author: hamilton
 *
 * Created on July 19, 2015, 11:21 AM
 */

#ifndef TYPES_H
#define	TYPES_H

enum STATES{ST_MAXON_POWERED_DOWN,
            ST_MAXON_POWERED_UP_AND_DISABLED,
            ST_MAXON_ENABLED,
            ST_MOVING_HOME_TOWARDS_CURRENT_POSITION,
            ST_VELOCITY_MOVE_TOWARDS_TARGET_POSITION,
            ST_MOVING_HOME_TOWARDS_TARGET_POSITION,
            ST_PERFORMING_BACKUP_MOVE,
            ST_DOORS_SUCCESSFULY_MOVED
};


struct StatusBits {
    unsigned int ChargeMode : 2;  // Offset = 0
    unsigned int ChargeEnabled : 1;  // Offset = 2
    unsigned int MaxonPwrMode : 2;  // Offset = 3
    unsigned int MaxonPower : 1;  // Offset = 5
    unsigned int MaxonEnabled : 1;  // Offset = 6
    unsigned int DoorPositionTarget : 1;  // Offset = 7
    unsigned int DoorPositionActual : 1;  // Offset = 8
    unsigned int State : 4;  // Offset = 9
    unsigned int Maxon_CommError : 2;  // Offset = 13
};

typedef  union
{
    unsigned int status;
    struct StatusBits bits;
}  STATUS;

typedef struct tagReceivedCmdParams {
    unsigned char id;  //Command ID
    void (*CmdFunc)(unsigned char *);   //Function to call.
}  ReceivedCmdParams;

#endif	/* TYPES_H */

