/*
| -----------------------------------------------------------------------------
| Filename: Blizhdt.c
|
| Author:       Courtney Smith
|		Nicholas Stamatiou
|               
| Description: 
| -------
| Updated for Front PSD
| HDT data for Blizzard EV using EyeBot MK4, UWA 2002
| -----------------------------------------------------------------------------
*/

#define VERSION 1.1      /* User specific version nr. for information */
#define NAME "Blizard"   /* controller name max. 7 chars, inform. only */
#define ID   3           /* Unique platform id (int), just for inform. */

#include "hdt.h"
#include "hdt_sem.h"

/* The HDT structure */
/*-------------------*/
int     magic = 123456789;
extern HDT_entry_type HDT[];
HDT_entry_type  *hdtbase = &HDT[0];

#include "types.h"
#include "const.h"
#include "rs232.h"
#include "cam.h"
#include "librobi/librobi.h"

/* infraread remote control on Servo S12 */
irtv_type irtv = {0, 13, TPU_HIGH_PRIO};

/* Blizzard Compass - Ivan rearranged pin to pin 10 --> DI5*/
 compass_type compass = {0,3,(void*)IOBase, 5,(void*)IOBase, 6, (BYTE*)IOBase, 5};

/* conventional compass - Using pin 9 --> DI4
compass_type compass = {0,6,(void*)IOBase, 5,(void*)IOBase, 6, (BYTE*)IOBase, 4}; */

short dist0[128] = { 60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
                     60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  65,  69,  70,  73,  75,
                     76,  77,  79,  81,  84,  85,  87,  88,  89,  90,  93,  95,  96,  98, 100,
                    103, 105, 107, 109, 110, 112, 114, 116, 117, 119, 121, 126, 127, 129, 131,
                    134, 137, 140, 144, 146, 149, 151, 156, 159, 167, 170, 175, 179, 183, 188,
                    195, 200, 205, 210, 220, 225, 235, 240, 250, 265, 275, 285, 295, 310, 320,
                    340, 350, 370, 380, 400, 410, 440, 460, 490, 530, 600, 610, 630, 680, 750,
                    830, 900, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                    999, 999, 999, 999, 999, 999, 999, 999};

short distF1[128] = { 46,  46,  46,  46,  46,  47,  48,  49,  50,  53,  57,  59,  61,  62,  63,
                      64,  65,  65,  66,  68,  70,  71,  72,  74,  75,  76,  77,  78,  79,  82,
                      85,  86,  87,  88,  89,  92,  94,  94,  95,  97, 100, 103, 105, 107, 108,
                     113, 118, 118, 119, 121, 124, 127, 130, 133, 137, 142, 147, 150, 152, 156,
                     161, 166, 170, 176, 182, 188, 191, 198, 205, 212, 221, 229, 234, 242, 251,
                     262, 273, 287, 301, 314, 327, 341, 354, 372, 392, 416, 439, 467, 496, 526,
                     556, 590, 625, 660, 694, 736, 777, 827, 875, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999};

short distF2[128] = { 80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  87,  92,  94,
                      97,  99, 100, 103, 105, 106, 108, 109, 110, 112, 114, 116, 118, 120, 121,
                     123, 125, 128, 130, 132, 134, 136, 139, 142, 145, 148, 151, 153, 156, 160,
                     164, 170, 176, 180, 185, 190, 196, 202, 208, 213, 219, 224, 229, 235, 241,
                     252, 257, 263, 269, 276, 284, 294, 304, 320, 335, 352, 368, 389, 410, 435,
                     462, 490, 519, 570, 617, 695, 767, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999};

short distL[128] = {  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
                      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  52,  54,  56,  58,  61,
                      63,  65,  67,  69,  70,  73,  74,  76,  80,  82,  86,  90,  94,  98, 101,
                     104, 108, 112, 116, 120, 124, 129, 134, 138, 145, 152, 160, 169, 177, 185,
                     192, 200, 211, 222, 234, 246, 256, 269, 284, 305, 323, 343, 355, 367, 411,
                     460, 510, 555, 675, 707, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999};

short distR[128] = {  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
                      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
                      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  52,  54,  55,  57,  59,
                      61,  64,  67,  68,  70,  72,  74,  77,  81,  84,  87,  90,  93,  95,  98,
                     103, 107, 111, 115, 119, 123, 128, 134, 139, 144, 150, 157, 163, 169, 177,
                     185, 192, 201, 210, 221, 232, 243, 257, 269, 284, 303, 320, 341, 365, 390,
                     420, 452, 492, 530, 570, 645, 715, 790, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999};

short distB1[128] = { 60,  60,  60,  60,  60,  61,  63,  66,  69,  70,  71,  72,  73,  74,  75,
                      76,  77,  79,  81,  82,  83,  85,  85,  86,  88,  90,  92,  94,  94,  95,
                      97,  99, 100, 102, 104, 106, 108, 110, 110, 111, 114, 116, 118, 120, 122,
                     124, 127, 129, 131, 133, 136, 139, 142, 144, 147, 150, 152, 154, 158, 161,
                     166, 171, 177, 182, 186, 190, 193, 195, 201, 207, 213, 220, 225, 231, 236,
                     242, 252, 261, 270, 280, 291, 303, 318, 330, 345, 362, 381, 400, 424, 448,
                     472, 500, 536, 573, 623, 675, 735, 811, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
                     999, 999, 999, 999, 999, 999, 999, 999};


/* SERVOs */
/* type, TPU-channel, Timer2, 20ms period, 0.7ms min, 1.7ms max */
/* here: servo 1 has TPU channel 2, and so on                   */
servo_type servo0 = {2, 8, TIMER1, 20000, 0, 2000}; 		/* Throttle */
servo_type servo1 = {2, 9, TIMER2, 20000, 1000, 2000}; 		/* Steering */
servo_type servo2 = {2, 10, TIMER2, 20000, 1400, 1800}; 	/* Camera Y */
servo_type servo3 = {2, 11, TIMER2, 20000, 900, 2100}; 		/* Camera Z */
servo_type servo4 = {2, 12, TIMER2, 20000, 900, 2300}; 	    /* Camera Tilt */
servo_type servo5 = {2, 4, TIMER2, 20000, 0, 19000}; 	    /* Gyro Forward*/
servo_type servo6 = {2, 5, TIMER2, 20000, 0, 19000}; 	    /* Gyro Tilt*/


/* PSD-infrared */
psd_type   psd0   = {0, 14, (BYTE*)IOBase, 0, AH, (BYTE*)IOBase, 0, AH,(short*)&distF1};
psd_type   psd1   = {0, 14, (BYTE*)IOBase, 1, AH, (BYTE*)IOBase, 0, AH,(short*)&distL};
psd_type   psd2   = {0, 14, (BYTE*)IOBase, 2, AH, (BYTE*)IOBase, 0, AH,(short*)&distR};
psd_type   psd3   = {0, 14, (BYTE*)IOBase, 3, AH, (BYTE*)IOBase, 0, AH,(short*)&dist0};
psd_type   psd4   = {0, 14, (BYTE*)sim_porte, 5, AH, (BYTE*)IOBase, 0, AH,(short*)&distB1};
psd_type   psd5   = {0, 14, (BYTE*)sim_porte, 4, AH, (BYTE*)IOBase, 0, AH,(short*)&distF2};
/*PSD copied from socbot34.c */

/* EyeBot SUMMARY */
info_type roboinfo  = {0,VEHICLE,SER115200,RTSCTS,SERIAL1,0,0,AUTOBRIGHTNESS,BATTERY_ON,35,VERSION,NAME,ID};

/* waitstates = 0..13, Fast Termination = 14, External = 15 */
/* Version, ROM, RAM, LCD, IO, Parallel+Serial2/3 */
/* 16MHz - 20Mhz */
/* waitstate_type waitstates = {0,3,0,1,0,2}; */
/* 21MHz - 41Mhz */
waitstate_type waitstates = {0,3,1,2,1,2};

/* this is a test HDT structure which contains ALL EyeBot hardware devices */

HDT_entry_type HDT[] =
{
    {SERVO,SERVO7,"Throt",(void *)&servo0},
    {SERVO,SERVO8,"Steer",(void *)&servo1},
    {SERVO,SERVO9,"Cam-Y",(void *)&servo2},
    {SERVO,SERVO10,"Cam-Z",(void *)&servo3},
    {SERVO,SERVO11,"Cam-T",(void *)&servo4},
    {SERVO,SERVO3,"Gyro" , (void *)&servo5},
    {SERVO,SERVO4,"Gyro2" ,(void *)&servo6},

    {PSD,PSD_FRONT,   	"Front0", (void *)&psd0},  /*Front Camera*/
    {PSD,PSD_LEFT,    	"Left 1", (void *)&psd1},  /*Left  */
    {PSD,PSD_RIGHT,   	"Right2", (void *)&psd2},  /*Right */
    {PSD,PSD_TEST,    	"BackD3", (void *)&psd3},  /*Diag */
    {PSD,PSD_BACK,    	"Back 5", (void *)&psd4},  /*Back */
    {PSD,PSD_FRONT2,  	"Front6", (void *)&psd5},  /*Front Low */

    {WAIT,WAIT,"WAIT",(void *)&waitstates},
    {INFO,INFO,"INFO",(void *)&roboinfo},

    {IRTV,IRTV,"IRTV",(void *)&irtv},
    {COMPASS,COMPASS,"COMPAS",(void *)&compass},
    {STARTMELODY,STARTMELODY,"Melody",0},
    /*{STARTIMAGE,STARTIMAGE,"Image",(void *)&startimage},*/

    {END_OF_HDT,UNKNOWN_SEMANTICS,"END",(void *)0}
};


