nucho
/
RTno_digitalInOut
RTno/ReceivePacket.cpp
- Committer:
- nucho
- Date:
- 2011-07-29
- Revision:
- 0:b14546a3cfab
- Child:
- 1:b96a6ff9bb6f
File content as of revision 0:b14546a3cfab:
/******************************************* * ReceivePacket.h * @author Yuki Suga * @copyright Yuki Suga (ysuga.net) Nov, 10th, 2010. * @license LGPLv3 *****************************************/ /******************************************** It changed a little for mbed. The serial buffer is not used. 2011/7/27 @nucho ********************************************/ #include "ReceivePacket.h" #include "Serial.h" //#include <HardwareSerial.h> //#include <WConstants.h> int ReceivePacket(char* packet) { int counter = 0; unsigned char sum = 0; /* while (Serial.available() < PACKET_HEADER_SIZE) { delayMicroseconds(PACKET_WAITING_DELAY); counter++; if (counter == PACKET_WAITING_COUNT) { return -TIMEOUT; } }*/ // char host = Serial.read(); // char target = Serial.read(); packet[INTERFACE] = pc.getc(); sum += packet[INTERFACE]; packet[DATA_LENGTH] = pc.getc(); sum += packet[DATA_LENGTH]; /* while (Serial.available() < packet[DATA_LENGTH]+1) { //delayMicroseconds(PACKET_WAITING_DELAY); wait_us(PACKET_WAITING_DELAY); counter++; if (counter == PACKET_WAITING_COUNT) { return -DATA_TIMEOUT; } }*/ for (int i = 0; i < packet[DATA_LENGTH]; i++) { packet[PACKET_HEADER_SIZE+i] = pc.getc(); sum += packet[PACKET_HEADER_SIZE+i]; } packet[PACKET_HEADER_SIZE+packet[DATA_LENGTH]] = pc.getc(); if (sum != packet[PACKET_HEADER_SIZE+packet[DATA_LENGTH]]) { return -CHECKSUM_ERROR; } return PACKET_HEADER_SIZE + packet[DATA_LENGTH] + 1; } /* int read_string(char* buffer, int flag=1) { int counter = 0; for(int i = 0;i < 100;i++) { if(Serial.available() > 0) { buffer[counter] = Serial.read(); if(buffer[counter] == '^') { buffer[counter] = 0; Serial.print("AO^"); return counter+1; } counter++; } delayMicroseconds(100); } if(flag) Serial.print("AE^"); return -1; } */