//
// CpcInfo.h
//
// Copyright 2004 Sony Corporation
//

#if !defined(AFX_CPCINFO_H__2E9F8109_E3A5_4BC7_BB6C_30E5F2418676__INCLUDED_)
#define AFX_CPCINFO_H__2E9F8109_E3A5_4BC7_BB6C_30E5F2418676__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


/*
	Joint list  declaration

*/

// Joint ID list
enum JOINTS_ID {
	JOINTS_PASS	=	0,	// 
	// Body
	JOINTS_BODY		 =	1000,	// Body (top of list)
	JOINTS_B_SENSOR1 =	1001,	// (Not supported)
	JOINTS_B_SENSOR2 =	1002,	// (Not supported)
	JOINTS_B_SENSOR3 =	1003,	// (Not supported)
	JOINTS_B_SENSOR4 =	1004,	// (Not supported)
	JOINTS_B_SENSOR5 =	1005,	// (Not supported)
	JOINTS_B_LED_G01 =	1006,	// (Not supported)
	JOINTS_B_LED_G10 =	1007,	// (Not supported)
	JOINTS_B_LED_G11 =	1008,	// (Not supported)
	JOINTS_B_LED_G12 =	1009,	// (Not supported)
	JOINTS_B_LED_G13 =	1010,	// (Not supported)
	JOINTS_B_LED_G14 =	1011,	// (Not supported)
	JOINTS_B_LED_G15 =	1012,	// (Not supported)
	JOINTS_B_LED_G16 =	1013,	// (Not supported)
	JOINTS_B_LED_G17 =	1014,	// (Not supported)
	JOINTS_B_LED_G18 =	1015,	// (Not supported)

	// “ª
	JOINTS_NECK		=	2000,	// SENSOR_HEAD_TILT
	JOINTS_H_PAN	=	2001,	// SENSOR_HEAD_PAN
	JOINTS_H_ROLL	=	2002,	// SENSOR_HEAD_ROLL (ERS-7 doesn't have this joint; for padding purposes only)
	JOINTS_H_TILT   =   2023,	// SENSOR_HEAD_TILT2
	JOINTS_H_JAW	=	2003,	// SENSOR_HEAD_MOUTH
	JOINTS_H_EAR_L	=	2004,	// Left ear (Not supported)
	JOINTS_H_EAR_R	=	2005,	// right ear (Not supported)
	JOINTS_H_LED_G1	=	2006,	// (Not supported)
	JOINTS_H_LED_G2	=	2007,	// (Not supported)
	JOINTS_H_LED_G3	=	2008,	// (Not supported)
	JOINTS_H_LED_G4	=	2009,	// (Not supported)
	JOINTS_H_LED_G5	=	2010,	// (Not supported)
	JOINTS_H_LED_G6 = 	2011,	// (Not supported)
	JOINTS_H_LED_G7	=	2012,	// (Not supported)
	JOINTS_H_LED_G8	=	2013,	// (Not supported)
	JOINTS_H_LED_G9	=	2014,	// (Not supported)
	JOINTS_H_LED_R1	=	2015,	// (Not supported)
	JOINTS_H_LED_R2	=	2016,	// (Not supported)
	JOINTS_H_LED_R3	=	2017,	// (Not supported)
	JOINTS_H_LED_R4 =	2018,	// (Not supported)
	JOINTS_H_SENSOR1 =	2019,	// (Not supported)
	JOINTS_H_SENSOR2 = 	2020,	// (Not supported)
	JOINTS_H_ANTENNA =	2021,	// (ERS-7 doesn't have this)
	JOINTS_H_LIGHT	=	2022,	// (ERS-7 doesn't have this)

	// Left forward leg
	JOINTS_LEG_FL1	=	3000,	// SENSOR_LF_J1
	JOINTS_LEG_FL2	=	3001,	// SENSOR_LF_J2
	JOINTS_LEG_FL3	=	3002,	// SENSOR_LF_J3
	// Left rear leg
	JOINTS_LEG_BL1	=	4000,	// SENSOR_LR_J1
	JOINTS_LEG_BL2	=	4001,	// SENSOR_LR_J2
	JOINTS_LEG_BL3	=	4002,	// SENSOR_LR_J3
	// Right forward leg
	JOINTS_LEG_FR1	=	5000,	// SENSOR_RF_J1
	JOINTS_LEG_FR2	=	5001,	// SENSOR_RF_J2
	JOINTS_LEG_FR3	=	5002,	// SENSOR_RF_J3
	// Right reard leg
	JOINTS_LEG_BR1	=	6000,	// SENSOR_RR_J1
	JOINTS_LEG_BR2	=	6001,	// SENSOR_RR_J2
	JOINTS_LEG_BR3	=	6002,	// SENSOR_RR_J3
	// tail
	JOINTS_T_PAN	=	7000,	// SENSOR_TAIL_J1
	JOINTS_T_TILT	=	7001,	// SENSOR_TAIL_J2
	JOINTS_T_LED1	=	7002,	// (ERS-7 doesn't have this)
	JOINTS_T_LED_G1	=	7003,	// (ERS-7 doesn't have this)
};


// Order of sensor information array
enum {
	SENSOR_HEAD_TILT	=	0,		// Head Tilt
	SENSOR_HEAD_PAN,				// Head Pan
	SENSOR_HEAD_ROLL,				// Head Roll
	SENSOR_HEAD_TILT2,				// Head Tilt2 
	SENSOR_HEAD_MOUTH,				// Mouth
	//
	SENSOR_LF_J1,					// Left Front J1
	SENSOR_LF_J2,					// Left Front J2
	SENSOR_LF_J3,					// Left Front J3
	//
	SENSOR_LR_J1,					// Left Rear J1
	SENSOR_LR_J2,					// Left Rear J2
	SENSOR_LR_J3,					// Left Rear J3
	//
	SENSOR_RF_J1,					// Right Front J1
	SENSOR_RF_J2,					// Right Front J2
	SENSOR_RF_J3,					// Right Front J3
	//
	SENSOR_RR_J1,					// Right Rear J1
	SENSOR_RR_J2,					// Right Rear J2
	SENSOR_RR_J3,					// Right Rear J3
	//
	SENSOR_TAIL_J1,					// Tail J1
	SENSOR_TAIL_J2,					// Tail J2
	//
	SENSOR_MAX,						// 
};

// Robot Design 
// VAIBO::GetRobotDesign()
// CpcInfo(Robot Design) - constructor
enum {
	DESIGN_UNKNOWN = 0,					// Unknown
	DESIGN_ERS7,						// ERS-7 
	DESIGN_MAX							// 
};

// Primitive Locator ID 
enum SensorID {
	Acc1 = 0,
	Acc2, Acc3, HeadTilt, HeadPan, HeadRoll,
	Head1, Head2, Chin, PSD, LFJ1, LFJ2, LFJ3, LFSW,
	LRJ1, LRJ2, LRJ3, LRSW, RFJ1, RFJ2, RFJ3, RFSW,
	RRJ1, RRJ2, RRJ3, RRSW, BackSW,
	LEar, REar, Mouth, Tail1, Tail2, Temp,
	MultiSW1, MultiSW2, MultiSW3, PSDWithXY,
	HeadTilt2, BackSW2, BackSW3,
	PSDWithXY_FN, PSDWithXY_N, PSDWithXY_F,
	PrimitiveMax
};


#ifdef _CPCINFO_DLLEXPORT	// 
class  __declspec( dllexport ) CCpcInfo  
#else
class  __declspec( dllimport ) CCpcInfo  
#endif // _CPCINFO_DLLEXPORT 
{
public:
	CCpcInfo( UINT robot );
	virtual ~CCpcInfo();

	int	GetJointArray( int *joints );
	int	GetSensorArray( int *array );
	int GetPrimitiveLocator( int nSensorID, char *szLocator );

// Internal use only
	static	UINT GetRobotDesign( unsigned short *cpcData, int nDataNum = 21 );
	int	GetSensorIDs( int *sensorIDs );

protected:
	UINT	m_robot;	// CpcInfo(Robot_Design) {m_robot = Robot_Design } DESIGN_ERS7

};

#endif // !defined(AFX_CPCINFO_H__2E9F8109_E3A5_4BC7_BB6C_30E5F2418676__INCLUDED_)
