Alexandre Salconi-Denis / Mbed 2 deprecated ProjetOctopode

Dependencies:   debug mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ComSpi.h Source File

ComSpi.h

00001 /*
00002   * @file       ComSpi.h
00003   * @brief      Cette classe est le modele des 3 taches de controle.
00004   * @author     Salco
00005   * @version    2.00
00006   * @date       11 mars 2015
00007   */
00008 #ifndef COMSPI_H
00009 #define COMSPI_H
00010 
00011 #define DEBUG_SEND 0
00012 #define DEBUG_COMPACT /*1*/0
00013 #define DEBUG_SLIM /*1*/0
00014 #define MAXTABLE 20 
00015 
00016 #include "mbed.h"
00017 #include <stdio.h>
00018 #include <stdlib.h>
00019 #include <string>
00020 #include "debug.h"
00021 #include "CRC16.h"
00022 #include "ComSpiDefine.h"
00023 #include "OSNAPprotocoleDefine.h"
00024 
00025 
00026 
00027     
00028         
00029 
00030 struct module_t{
00031     struct osnapModule_t basicInfo ;
00032     unsigned char flagIN ;//ici l'utilisation de unsigned char au lieu de char* nous limite a la possibiliter de lire que le 1er byte dinfo, va faloire les modifier dans le future
00033     unsigned char dataIN ;
00034     unsigned char flagOUT ;
00035     unsigned char dataOUT ;
00036     struct module_t *next;
00037     };
00038 
00039 
00040 
00041 ////////////////////////////////////////////////////////////    
00042 class ComSpi : public SPI
00043 {
00044     
00045     union{
00046     unsigned int getBytes;
00047     struct
00048     {
00049         unsigned char syncReceive  : 1;
00050         unsigned char addrReceive  : 1;
00051         unsigned char optionReceive: 1;
00052         unsigned char flagReceive  : 1;
00053         unsigned char dataReceive  : 1;
00054         unsigned char crcReceive   : 1;
00055         unsigned char finishFlag   : 1;
00056         unsigned char flagNeed     : 1;
00057     };
00058 }flagSPI;
00059 
00060 string sneekpeek;
00061     
00062     bool demuxIsUse;
00063     char m_demuxPos;
00064     PinName m_demuxA;
00065     PinName m_demuxB;
00066     PinName m_demuxC;
00067     PinName m_demuxD;
00068     PinName m_demuxEnable;
00069     
00070     struct module_t *chainedListFirst;  
00071     struct module_t *chainedListLast;
00072     
00073     //char result; // variable tempo qui emagasine le resultat, je crois que sa allege le process mais augmente la memoire
00074     unsigned char bufferSend[MAXTABLE],bufferReceive[MAXTABLE];
00075     unsigned char counterData, counterTotale;
00076     
00077  void change_demux(void);
00078 public:
00079     ComSpi(PinName mosi, PinName miso, PinName sclk, PinName _unused=NC);
00080     ComSpi(PinName mosi, PinName miso, PinName sclk, PinName demuxA, PinName demuxB, PinName demuxC, PinName demuxD, PinName demuxEnable);
00081     virtual ~ComSpi();
00082 
00083 
00084  // renvois la position qu'il est rendu ( -1 == pas de demux ou problem)
00085     char next_demux(void);
00086     char back_demux(void);
00087     char get_demux(void);
00088 
00089     //fonction ajouter du C
00090     char initComSpi(void);// renvoi le premier char a metre dans le buffer SPI// ps: jaime pas trop le nom pt chercher une meilleur formulation
00091     struct module_t* createModule(void);
00092     char receiveSPI(char byte); //renvoi le prochain char a metre dans le buffer
00093     struct module_t* searchAddr(unsigned char addresse);
00094     char commIsfinish(void);
00095     char completeCommSend(void);
00096     /////
00097 
00098     virtual int write(int value);
00099     bool send(char portID,unsigned char adresseModule,string *flag,string *data);
00100    /* bool send(char portID, char adresseModule,char *flag,char *data);
00101     bool send(char portID, char adresseModule,int *flag,char *data);
00102     bool send(char portID, char adresseModule,char *flag,int *data);
00103     bool send(char portID, char adresseModule,int *flag,int *data);*/
00104 };
00105 #endif // COMSPI_H