Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface mbed-rtos
Transport.cpp
00001 #define RTNO_SUBMODULE_DEFINE 00002 #include <stdint.h> 00003 #include "mbed.h" 00004 00005 #include "Transport.h" 00006 #include "Packet.h" 00007 00008 int8_t Transport_init() 00009 { 00010 return 0; 00011 } 00012 00013 00014 int8_t Transport_SendPacket(const char interface, const uint8_t data_length, const int8_t* packet_data) { 00015 uint8_t sum = 0;//0x0a + 0x0a; 00016 00017 uint8_t header[2] = {0x0a, 0x0a}; 00018 SerialDevice_putc(header[0]); 00019 SerialDevice_putc(header[1]); 00020 00021 SerialDevice_putc(interface); 00022 sum += interface; 00023 SerialDevice_putc(data_length); 00024 sum += data_length; 00025 00026 //uint8_t sender[4] = {'U', 'A', 'R', 'T'}; 00027 //for(uint8_t i = 0;i < 4;i++) { 00028 //sum += sender[i]; 00029 // SerialDevice_putc(sender[i]); 00030 //} 00031 00032 for(uint8_t i = 0;i < data_length;i++) { 00033 sum += packet_data[i]; 00034 SerialDevice_putc(packet_data[i]); 00035 } 00036 SerialDevice_putc(sum); 00037 return PACKET_HEADER_SIZE + data_length + 1; 00038 } 00039 00040 /** 00041 * Transport_ReceivePacket 00042 * ¥arg packet 00043 * ¥arg timeout 00044 */ 00045 int8_t Transport_ReceivePacket(uint8_t* packet, const uint32_t& timeout) { 00046 uint8_t counter = 0; 00047 uint8_t buf; 00048 int8_t ret; 00049 while(1) { 00050 if((ret=SerialDevice_read(&buf, 1, timeout)) < 0) { 00051 return 0; 00052 } 00053 if (buf != PACKET_STARTING_CHARACTOR_0) { 00054 counter++; 00055 continue; 00056 } 00057 if((ret=SerialDevice_read(&buf, 1, timeout)) < 0) { 00058 return 0; 00059 } 00060 if (buf != PACKET_STARTING_CHARACTOR_1) { 00061 counter++; 00062 continue; 00063 } 00064 break; 00065 } 00066 00067 00068 if((ret=SerialDevice_read(packet, PACKET_HEADER_SIZE, timeout)) < 0) { 00069 return ret; 00070 } 00071 00072 //if((ret=SerialDevice_read(packet+PACKET_HEADER_SIZE, 00073 // 4, 00074 // timeout)) < 0) { 00075 // return ret; 00076 //} 00077 00078 if((ret=SerialDevice_read(packet+PACKET_HEADER_SIZE, 00079 packet[DATA_LENGTH], 00080 timeout)) < 0) { 00081 return ret; 00082 } 00083 00084 if((ret=SerialDevice_read(&buf, 1, timeout)) < 0) { 00085 return ret; 00086 } 00087 00088 uint8_t sum = 0;//PACKET_STARTING_CHARACTOR_0 + PACKET_STARTING_CHARACTOR_1; 00089 for(uint8_t i = 0;i < PACKET_HEADER_SIZE+packet[DATA_LENGTH];i++) { 00090 sum += packet[i]; 00091 } 00092 if(buf != sum) { 00093 return -CHECKSUM_ERROR; 00094 } 00095 return PACKET_HEADER_SIZE + packet[DATA_LENGTH]; 00096 }
Generated on Fri Jul 22 2022 21:22:50 by
1.7.2