Dependencies:   mbed

Committer:
nucho
Date:
Mon Aug 01 14:45:42 2011 +0000
Revision:
1:ab3c75cf5906
Parent:
0:a70ea71286b6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucho 0:a70ea71286b6 1 /*******************************************
nucho 0:a70ea71286b6 2 * ReceivePacket.h
nucho 0:a70ea71286b6 3 * @author Yuki Suga
nucho 0:a70ea71286b6 4 * @copyright Yuki Suga (ysuga.net) Nov, 10th, 2010.
nucho 0:a70ea71286b6 5 * @license LGPLv3
nucho 0:a70ea71286b6 6 *****************************************/
nucho 0:a70ea71286b6 7 /********************************************
nucho 0:a70ea71286b6 8 It changed a little for mbed.
nucho 0:a70ea71286b6 9 The serial buffer is not used.
nucho 0:a70ea71286b6 10 2011/7/27 @nucho
nucho 0:a70ea71286b6 11 ********************************************/
nucho 0:a70ea71286b6 12 #include "ReceivePacket.h"
nucho 0:a70ea71286b6 13 #include "Serial.h"
nucho 0:a70ea71286b6 14 //#include <HardwareSerial.h>
nucho 0:a70ea71286b6 15 //#include <WConstants.h>
nucho 0:a70ea71286b6 16
nucho 0:a70ea71286b6 17 int ReceivePacket(char* packet) {
nucho 1:ab3c75cf5906 18 //int counter = 0;
nucho 0:a70ea71286b6 19 unsigned char sum = 0;
nucho 0:a70ea71286b6 20 /*
nucho 0:a70ea71286b6 21 while (Serial.available() < PACKET_HEADER_SIZE) {
nucho 0:a70ea71286b6 22 delayMicroseconds(PACKET_WAITING_DELAY);
nucho 0:a70ea71286b6 23 counter++;
nucho 0:a70ea71286b6 24 if (counter == PACKET_WAITING_COUNT) {
nucho 0:a70ea71286b6 25 return -TIMEOUT;
nucho 0:a70ea71286b6 26 }
nucho 0:a70ea71286b6 27 }*/
nucho 0:a70ea71286b6 28 // char host = Serial.read();
nucho 0:a70ea71286b6 29 // char target = Serial.read();
nucho 0:a70ea71286b6 30
nucho 0:a70ea71286b6 31 packet[INTERFACE] = pc.getc();
nucho 0:a70ea71286b6 32 sum += packet[INTERFACE];
nucho 0:a70ea71286b6 33
nucho 0:a70ea71286b6 34 packet[DATA_LENGTH] = pc.getc();
nucho 0:a70ea71286b6 35 sum += packet[DATA_LENGTH];
nucho 0:a70ea71286b6 36
nucho 0:a70ea71286b6 37 /*
nucho 0:a70ea71286b6 38 while (Serial.available() < packet[DATA_LENGTH]+1) {
nucho 0:a70ea71286b6 39 //delayMicroseconds(PACKET_WAITING_DELAY);
nucho 0:a70ea71286b6 40 wait_us(PACKET_WAITING_DELAY);
nucho 0:a70ea71286b6 41 counter++;
nucho 0:a70ea71286b6 42 if (counter == PACKET_WAITING_COUNT) {
nucho 0:a70ea71286b6 43 return -DATA_TIMEOUT;
nucho 0:a70ea71286b6 44 }
nucho 0:a70ea71286b6 45 }*/
nucho 0:a70ea71286b6 46
nucho 0:a70ea71286b6 47 for (int i = 0; i < packet[DATA_LENGTH]; i++) {
nucho 0:a70ea71286b6 48 packet[PACKET_HEADER_SIZE+i] = pc.getc();
nucho 0:a70ea71286b6 49 sum += packet[PACKET_HEADER_SIZE+i];
nucho 0:a70ea71286b6 50 }
nucho 0:a70ea71286b6 51 packet[PACKET_HEADER_SIZE+packet[DATA_LENGTH]] = pc.getc();
nucho 0:a70ea71286b6 52 if (sum != packet[PACKET_HEADER_SIZE+packet[DATA_LENGTH]]) {
nucho 0:a70ea71286b6 53 return -CHECKSUM_ERROR;
nucho 0:a70ea71286b6 54 }
nucho 0:a70ea71286b6 55 return PACKET_HEADER_SIZE + packet[DATA_LENGTH] + 1;
nucho 0:a70ea71286b6 56 }
nucho 0:a70ea71286b6 57
nucho 0:a70ea71286b6 58 /*
nucho 0:a70ea71286b6 59 int read_string(char* buffer, int flag=1) {
nucho 0:a70ea71286b6 60 int counter = 0;
nucho 0:a70ea71286b6 61 for(int i = 0;i < 100;i++) {
nucho 0:a70ea71286b6 62 if(Serial.available() > 0) {
nucho 0:a70ea71286b6 63 buffer[counter] = Serial.read();
nucho 0:a70ea71286b6 64 if(buffer[counter] == '^') {
nucho 0:a70ea71286b6 65 buffer[counter] = 0;
nucho 0:a70ea71286b6 66 Serial.print("AO^");
nucho 0:a70ea71286b6 67 return counter+1;
nucho 0:a70ea71286b6 68 }
nucho 0:a70ea71286b6 69 counter++;
nucho 0:a70ea71286b6 70 }
nucho 0:a70ea71286b6 71 delayMicroseconds(100);
nucho 0:a70ea71286b6 72 }
nucho 0:a70ea71286b6 73 if(flag)
nucho 0:a70ea71286b6 74 Serial.print("AE^");
nucho 0:a70ea71286b6 75 return -1;
nucho 0:a70ea71286b6 76 }
nucho 0:a70ea71286b6 77
nucho 0:a70ea71286b6 78 */