1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/*
Driver Robot
implémentation
drbt.c
*/
#include "drbt.h"
#include <stdlib.h>
struct drbt
{
unsigned port;
/* ... */
};
/* constructeur / destructeur */
drbt_s *drbt_create (unsigned port)
{
drbt_s *this = malloc (sizeof *this);
if (this != NULL)
{
this->port = port;
/* a continuer */
}
return this;
}
void drbt_delete (drbt_s * this)
{
if (this != NULL)
{
free (this);
}
}
/* actions */
/* Commandes des axes
E : contexte
E : axe
E : commande
R : 0=OK 1=Erreur
*/
int drbt_commande (drbt_s * this, drbt_axe_e axe, drbt_cde_e cde)
{
static const char matrice[DRBT_AXE_NB][DRBT_CDE_NB] = {
/* A H B G D O F */
{1, 0, 0, 1, 1, 0, 0}, /* 1 */
{1, 1, 1, 0, 0, 0, 0}, /* 2 */
{1, 1, 1, 0, 0, 0, 0}, /* 3 */
{1, 0, 0, 0, 0, 1, 1}, /* 5 */
};
int err = 0;
if (this != NULL)
{
/* verification des parametres */
err = axe >= DRBT_AXE_NB
|| cde >= DRBT_CDE_NB || matrice[axe][cde] != 1;
if (!err)
{
/* a continuer */
}
}
return err;
}
/* arret (d'urgence)
E : contexte
*/
void drbt_arret (drbt_s * this)
{
if (this != NULL)
{
/* a continuer */
}
} |
Partager