Julia DESMAZES / Mbed 2 deprecated Hexapode

Dependencies:   mbed BLE_API X_NUCLEO_IDB0XA1 MODSERIAL

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SSC-32.cpp Source File

SSC-32.cpp

00001 #include "SSC-32.h"
00002 #include "LOGGER.h"
00003 //#include <sstream>
00004 #include <string>
00005 #include <stdio.h>
00006 #define DEFAULT_VAL 1500
00007 static Logger *Ordi = Logger::Instance();
00008 data32::data32(char i,int v)
00009 {
00010     id=i;
00011     value=v;
00012 }
00013 SSC_32::SSC_32()
00014 {
00015     serial=new Serial(SSC_32_RX, SSC_32_TX);
00016     if(serial==NULL)Ordi->log("SSC_32::SSC_32 Erreur de creation du Serial, retourne NULL");
00017     else Ordi->log("SSC_32::SSC_32 Creation du Serial reussi");
00018     for(int i=0;i<18;i++)
00019 { old_val[i] = DEFAULT_VAL;
00020     }
00021     //les vrais valheurs de la position de chaque pate sur un doc de la ssc-30 X_XX eg : 0_2 3 
00022     real_id[0]='0';//
00023     real_id[1]='2';
00024     real_id[2]='3';
00025     real_id[3]='4';//
00026     real_id[4]='6';
00027     real_id[5]='7';
00028     real_id[6]='8';//
00029     real_id[7]="10";
00030     real_id[8]="11";
00031     //ranger de l'autre côte
00032     real_id[9]="16";//
00033     real_id[10]="18";
00034     real_id[11]="19";
00035     real_id[12]="20";//
00036     real_id[13]="22";
00037     real_id[14]="23";
00038     real_id[15]="24";//
00039     real_id[16]="26";
00040     real_id[17]="27";
00041 }
00042 SSC_32::~SSC_32()
00043 {
00044     ;
00045 }
00046 void SSC_32::close()
00047 {
00048     ~SSC_32();
00049 }
00050 void SSC_32::add(int leg, int val)
00051 {
00052     
00053     std::string msg;
00054     if( leg <18) {
00055             if(old_val[leg]!=val)
00056             {
00057             old_val[leg]=val;
00058             buffer.push(new data32(real_id[leg] ,val));
00059             msg="SSC_32 Data sent : id";
00060             msg+=buffer.front()->id+" valheur "+Ordi->log_itos(val); // conversion en string de l'int
00061             Ordi->log(msg);
00062             }else Ordi->log("SSC_32::add Warning, la jambe est deja a cette position il n'ya pas de besoin de la bouger");
00063     } else Ordi->log("SSC_32::add Error, Nom de leg sup 17");
00064 }
00065 void SSC_32::send()
00066 {
00067     std::string msg;
00068     data32 *tmp;
00069     int fin=13;
00070     if(buffer.empty()==false) {
00071         while(buffer.empty()!=true) {
00072             tmp=buffer.front();
00073             //traitement d'envoie sur le buffer (tmp)
00074             msg+='#'+tmp->id+" P"+Ordi->log_itos(tmp->value)+' ';
00075             buffer.pop();
00076         }
00077         msg+=(char)fin;
00078         serial->printf("%s",msg.c_str());
00079         Ordi->log("SSC_32::SSC_32 Message sent :"+msg);
00080     } else Ordi->log("SSC_32::send Error, buffer is empty");
00081 }