nucho
/
RTno_digitalInOut
Embed:
(wiki syntax)
Show/hide line numbers
ReceivePacket.cpp
00001 /******************************************* 00002 * ReceivePacket.h 00003 * @author Yuki Suga 00004 * @copyright Yuki Suga (ysuga.net) Nov, 10th, 2010. 00005 * @license LGPLv3 00006 *****************************************/ 00007 /******************************************** 00008 It changed a little for mbed. 00009 The serial buffer is not used. 00010 2011/7/27 @nucho 00011 ********************************************/ 00012 #include "ReceivePacket.h" 00013 #include "Serial.h" 00014 //#include <HardwareSerial.h> 00015 //#include <WConstants.h> 00016 00017 int ReceivePacket(char* packet) { 00018 //int counter = 0; 00019 unsigned char sum = 0; 00020 /* 00021 while (Serial.available() < PACKET_HEADER_SIZE) { 00022 delayMicroseconds(PACKET_WAITING_DELAY); 00023 counter++; 00024 if (counter == PACKET_WAITING_COUNT) { 00025 return -TIMEOUT; 00026 } 00027 }*/ 00028 // char host = Serial.read(); 00029 // char target = Serial.read(); 00030 00031 packet[INTERFACE] = pc.getc(); 00032 sum += packet[INTERFACE]; 00033 00034 packet[DATA_LENGTH] = pc.getc(); 00035 sum += packet[DATA_LENGTH]; 00036 00037 /* 00038 while (Serial.available() < packet[DATA_LENGTH]+1) { 00039 //delayMicroseconds(PACKET_WAITING_DELAY); 00040 wait_us(PACKET_WAITING_DELAY); 00041 counter++; 00042 if (counter == PACKET_WAITING_COUNT) { 00043 return -DATA_TIMEOUT; 00044 } 00045 }*/ 00046 00047 for (int i = 0; i < packet[DATA_LENGTH]; i++) { 00048 packet[PACKET_HEADER_SIZE+i] = pc.getc(); 00049 sum += packet[PACKET_HEADER_SIZE+i]; 00050 } 00051 packet[PACKET_HEADER_SIZE+packet[DATA_LENGTH]] = pc.getc(); 00052 if (sum != packet[PACKET_HEADER_SIZE+packet[DATA_LENGTH]]) { 00053 return -CHECKSUM_ERROR; 00054 } 00055 return PACKET_HEADER_SIZE + packet[DATA_LENGTH] + 1; 00056 } 00057 00058 /* 00059 int read_string(char* buffer, int flag=1) { 00060 int counter = 0; 00061 for(int i = 0;i < 100;i++) { 00062 if(Serial.available() > 0) { 00063 buffer[counter] = Serial.read(); 00064 if(buffer[counter] == '^') { 00065 buffer[counter] = 0; 00066 Serial.print("AO^"); 00067 return counter+1; 00068 } 00069 counter++; 00070 } 00071 delayMicroseconds(100); 00072 } 00073 if(flag) 00074 Serial.print("AE^"); 00075 return -1; 00076 } 00077 00078 */
Generated on Wed Jul 13 2022 13:00:00 by 1.7.2