nucho
/
RTno_Template
RTno/ReceivePacket.cpp@1:ab3c75cf5906, 2011-08-01 (annotated)
- Committer:
- nucho
- Date:
- Mon Aug 01 14:45:42 2011 +0000
- Revision:
- 1:ab3c75cf5906
- Parent:
- 0:a70ea71286b6
Who changed what in which revision?
User | Revision | Line number | New 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 | */ |