/*=======================================================================+
|             DEPARTAMENTO MECANICA UNIVERSIDADE AVEIRO                  |
|               Projecto Humanoide (PHUA - MODULROB)                     |
|                                                                        |
| Programadores:                                                         |
|              David Manuel Costa Gameiro          N:20281               |
|              Filipe Carvalho Mostardinha         N:22085               |
|                                                                        |
| Nome Ficheiro: MasterSec.h                                             |
|                                                                        |
|                            HEADER FILE                                 |
+=======================================================================*/

#include "Tipos.h"
#include "Can18xx8.h"
#include "MasterTrd.h"
#include "Usart.h"

#ifndef MASTERSEC_H

#define MASTERSEC_H



//////////////////////////////////////////
//   Mensagens tipo na recepcao         //
//////////////////////////////////////////

enum MsgRecebUsart
{
	BITS_TIPO_MSG = 0b11100000,//3 bits indicando o tipo de msg

	BIT_SIDE      = 0b00001000,
	BIT_TOP       = 0b00010000,
	BITS_SIDE_TOP = 0b00011000,//lado esquerdo/direito | braco/perna

	LER_TDOS_SENS = 0b01000000,//Le todos os sensores, perna ou junta
	LER_POS_ART   = 0b01100000,//Le posicao da articulacao
	LER_SENS_PE   = 0b10000000,//Le sensores forca pe
	NOV_POS_MOT   = 0b00100000,//Nova posicao a ocupar pelo motor

	BITS_IDENT    = 0b00000111 //Apenas estes bits possuem o identificador
};

enum MsgEnvUsart
{
	UM_BYTE = 0b00100000, // envia-s 1 byte pela usart
	DOIS_BYTES = 0b01000000,
	TRES_BYTES = 0b01100000,
	QUATRO_BYTES = 0b10000000,// envia quatro bytes
};

/*---------------------------------------------------------------------+
|              InitTab(PernBrac *Membros)                              |
| Entradas: Membros - ponteiro para a estrutura indicando o MCU e o    |
|                 PWM de controlo de cada junta                        |
| Saida: nada                                                          |
|                                                                      |
| Objectivo: Inicializar a estrutura com os dados de cada membro       |
+---------------------------------------------------------------------*/
void InitTab(PernaBraco *);


/*---------------------------------------------------------------------+
|AnalisaMsg(PernBrac * Membros, byte *Msg, byte *Inputs, byte *Outputs)|
| Entradas: Membros - estrutura indicando o MCU, PWM de controlo       |
|           Msg - Msg a analisar                                       |
|           Inputs - matriz com os dados a enviar pelo Can             |
|           Outputs - matriz dados a ler pra enviar pela porta serie   |
|                                                                      |
| Saida: nada                                                          |
|                                                                      |
| Objectivo: Analisar a msg, de forma a tomar uma decisao              |
+---------------------------------------------------------------------*/
void AnalisaMsgUsart(PernaBraco *, byte *, byte *,
					 byte *, byte *, byte *);



/*---------------------------------------------------------------------+
|		HomePosition(Servos)										   |
|                                                                      |
| Entradas: Servos - matriz com as posi‡oes a colocar nos servos       |
|                                                                      |
| Saida: nada                                                          |
|                                                                      |
| Objectivo: Analisar a msg, de forma a tomar uma decisao              |
+---------------------------------------------------------------------*/

void HomePosition(byte *);

#endif
