123123123123123123123123123

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers communication.h Source File

communication.h

00001 /******************************************************
00002 
00003 ****┏┓          ┏┓
00004 **┏┛┻━━━━━━┛┻┓
00005 **┃                 ┃
00006 **┃      ━━━      ┃
00007 **┃  ┳┛       ┗┳ ┃
00008 **┃                 ┃
00009 **┃ '''    ┻   ''' ┃
00010 **┃                 ┃
00011 **┗━━┓       ┏━━┛
00012 *******┃       ┃
00013 *******┃       ┃
00014 *******┃       ┃
00015 *******┃       ┗━━━━━━━━┓
00016 *******┃                      ┃━┓
00017 *******┃      NO BUG          ┏━┛
00018 *******┃                      ┃
00019 *******┗━┓  ┓  ┏━┏━┓  ━┛
00020 ***********┃  ┛  ┛    ┃  ┛  ┛
00021 ***********┃  ┃  ┃    ┃  ┃  ┃
00022 ***********┗━┛━┛     ┗━┛━┛
00023 
00024 This part is added by project ESDC2014 of CUHK team.
00025 All the code with this header are under GPL open source license.
00026 This program is running on Mbed Platform 'mbed LPC1768' avaliable in 'http://mbed.org'.
00027 **********************************************************/
00028 
00029 /*
00030 The communication protocol is inside source/intel_board/lib/message.h
00031 */
00032 #include "lifter.h"
00033 #include "camera_platform.h"
00034 #include "mbed.h"
00035 #include "compass.h"
00036 #include "buzzer.h"
00037 
00038 #ifndef _COMMUNICATION_H
00039 #define _COMMUNICATION_H
00040 
00041 #define BUFFER_SIZE 1024
00042 #define STARTER 0x7e
00043 #define COMPASS_STARTER 0x7d
00044 #define BUZZER_STARTER 0x7c
00045 
00046 #define DEBUG_ON 1
00047 
00048 class Communication
00049 {
00050 public:
00051     Communication(MySerial* _DEBUG, MySerial *_IntelToMbed, MySerial *_MbedToArduino, COMPASS *_compass);
00052     ~Communication();
00053 
00054     void putToBuffer(uint8_t _x, uint8_t communication_type); //0 is IntelToMbed, 1 is MbedTOArduino
00055     uint8_t getByte(uint8_t communication_type); //0 is IntelToMbed, 1 is MbedTOArduino
00056     uint16_t get2Bytes(uint8_t communication_type); //0 is IntelToMbed, 1 is MbedTOArduino
00057     void putByte(uint8_t _x, uint8_t _i); //_i = 0 is _DEBUG, _i = 1 is _IntelToMbed, _i = 2 is _MbedToArduino
00058     void put2Bytes(uint16_t _x, uint8_t _i);
00059     void parseMessage();
00060     void forwardMessage(); //forward the message to the Arduino
00061     void ACK(Lifter* lifter, Camera_platform* camera_platform); //send ACK back to the intel board
00062 
00063     uint8_t getInfoOK(uint8_t communication_type); //0 is IntelToMbed, 1 is MbedTOArduino
00064     void resetInfoOK(uint8_t communication_type); //0 is IntelToMbed, 1 is MbedTOArduino
00065     uint16_t getMoveDis();
00066     uint16_t getRotateDis();
00067     uint8_t getMoveDir();
00068     uint8_t getRotateDir();
00069 
00070     uint16_t campass_degree;
00071     COMPASS *compass;
00072     
00073 private:
00074     void init();
00075     uint8_t* buffer_IntelToMbed;
00076     uint8_t* buffer_MbedToArduino;
00077     uint8_t* forward_msg_buffer; //for forwarding message to the car
00078     uint16_t in_IntelToMbed;
00079     uint16_t out_IntelToMbed;
00080     uint16_t in_MbedToArduino;
00081     uint16_t out_MbedToArduino;
00082     uint8_t state_IntelToMbed;
00083     uint8_t state_MbedToArduino;
00084     uint8_t check_sum;
00085     uint8_t info_ok_IntelToMbed; //0 is not ok, 1 is car, 2 is lifter and 3 is camera platform
00086     uint8_t info_ok_MbedToArduino; //0 is not ok, 1 is ok
00087     
00088     uint8_t action_type;
00089     uint16_t move_dis;
00090     uint8_t move_dir;
00091     uint16_t rotate_dis;
00092     uint8_t rotate_dir;
00093     
00094     MySerial *_DEBUG;
00095     MySerial *_IntelToMbed;
00096     MySerial *_MbedToArduino;
00097     COMPASS *_compass;
00098 };
00099 
00100 #endif