Andres Guio / Mbed 2 deprecated Proyecto

Dependencies:   mbed

main.cpp

Committer:
DANIELOM1916
Date:
2018-03-13
Revision:
0:cc4ffe9bb764

File content as of revision 0:cc4ffe9bb764:

#include "mbed.h"
#include "draw.h"

#define CM_EJECUTAR 0xff    // FF COMO EJECUTAR
#define CM_GUARDAR 0xfe     // FE COMO GUARDAR
#define CM_VERTEX2D 0xfd    // FD COMO VERTEX
#define CM_DRAW 0xfc        // FC COMO DIBUJO
#define CM_NODRAW 0xfb      // FB COMO NO DIBUJO     
#define CM_STOP 0xfa        // FA COMO PARADA 
#define CM_END 0xf0         // F0 COMO FINALIZAR LINEA

#define MEM_SIZE 10
#define MEM_TYPE uint32_t


int mem_head = 0;
int mem_tail = 0;
uint8_t full = 0;

Serial command(USBTX, USBRX); // configurar comando serial
MEM_TYPE buffer[MEM_SIZE];    


void ejecutar(){  // subprograma ejecutar
    command.printf("se esta ejecutando el dibujo...");    
    uint32_t mem_free();
     
     while  (command.getc() != CM_END)
        {
            void initdraw();    // posicion inicio de dibujo
            void memory();      //revisar memoria
            void dinamic ();    //memoria dinamica
            uint8_t mem_get (); //leer
                        
            switch (command.getc())
            {
                 case CM_VERTEX2D:
                      
                      for (int i=0; i<4; i++){
                          void vertex2d(uint8_t x, uint8_t y);
                          }
                      break;
                 case CM_DRAW:
                      void draw ();
                      break;
                 case CM_NODRAW:
                      void nodraw ();
                      break;
                 default:
                      command.printf("error de comando");
                      break ;     
            }
        }
    }
    
    
void guardar(){    // subprograma guardar
    command.printf("se inicia el comando de guardar..");  
    uint32_t mem_free();  
   while  (command.getc() != CM_END)
        {
            void initdraw();  //posicion incial de dibujo
            void memory();
            void dinamic ();
            uint8_t mem_put(); //escribir
                        
         }   
     }   
    
void parada (){   //subprograma de parada
    command.printf("finalizando programa..");  
    uint32_t mem_free(); 
    void nodraw();
    void home();
    } 
    

void init_serial()
{
    command.baud(9600);    //configuracion velocidad de transmision
}

int main() {       // programa para reconocer efecutar o guardar
    init_servo();
    init_serial();
    home();
    char read_cc;
    while(1)
    {
        switch (read_cc) {
            case  CM_EJECUTAR: ejecutar(); break;
            case  CM_GUARDAR: guardar(); break;
            case  CM_STOP: parada (); break;
            default: command.printf("error de comando");break ;      
        }
    }
}

uint32_t mem_free() //memoria libre
{
 mem_head=0;
 full=0;
}

uint8_t mem_put(MEM_TYPE data)  //Escribir en espacio de memoria
{
 
    if (full)
        return 1;
    buffer[mem_head] = data;
    mem_head += 1;
    if (mem_head == MEM_SIZE)
        full =1;
    return 0;
}

uint8_t mem_get(MEM_TYPE* data)  // Leer espacio de memoria
{
    if (mem_head == 0)
        return 1; 
    if (mem_head == mem_tail)
        return 1; 
    
 
    *data = buffer[mem_tail];
    mem_tail += 1;
  
    return 0;
}


void dinamic ()  // memoria dinamica de 32 bits
    {
        int temp = command.getc();
            
            temp = temp<<8 + command.getc();
            temp = temp<<8 + command.getc();
            temp = temp<<8 + command.getc();
            temp = temp<<8 + command.getc();
     }
     
void memory ()  // memoria  para obtener el dato
    {     
        mem_put(command.getc());
        mem_put(command.getc());
        mem_put(command.getc());
        mem_put(command.getc());
        MEM_TYPE val;
        mem_get(&val);
        command.putc(val);
    }