nucho
/
RTno_MotorControl
Embed:
(wiki syntax)
Show/hide line numbers
OutPort.cpp
00001 /******************************************* 00002 * OutPort.cpp 00003 * @author Yuki Suga 00004 * @copyright Yuki Suga (ysuga.net) Nov, 10th, 2010. 00005 * @license LGPLv3 00006 *****************************************/ 00007 00008 #include <string.h> 00009 #include "BasicDataType.h" 00010 #include "OutPort.h" 00011 #include "SendPacket.h" 00012 #include "ReceivePacket.h" 00013 #include "Serial.h" 00014 00015 OutPort::OutPort(char* name, TimedBoolean& Data) : 00016 OutPortBase(name) 00017 { 00018 // m_pData = pData; 00019 m_pData = &Data; 00020 m_TypeCode = 'b'; 00021 } 00022 00023 OutPort::OutPort(char* name, TimedChar& Data) : 00024 OutPortBase(name) 00025 { 00026 // m_pData = pData; 00027 m_pData = &Data; 00028 m_TypeCode = 'c'; 00029 } 00030 00031 OutPort::OutPort(char* name, TimedOctet& Data) : 00032 OutPortBase(name) 00033 { 00034 // m_pData = pData; 00035 m_pData = &Data; 00036 m_TypeCode = 'o'; 00037 } 00038 00039 OutPort::OutPort(char* name, TimedLong& Data) : 00040 OutPortBase(name) 00041 { 00042 // m_pData = pData; 00043 m_pData = &Data; 00044 m_TypeCode = 'l'; 00045 } 00046 00047 OutPort::OutPort(char* name, TimedFloat& Data) : 00048 OutPortBase(name) 00049 { 00050 // m_pData = pData; 00051 m_pData = &Data; 00052 m_TypeCode = 'f'; 00053 } 00054 00055 OutPort::OutPort(char* name, TimedDouble& Data) : 00056 OutPortBase(name) 00057 { 00058 // m_pData = pData; 00059 m_pData = &Data; 00060 m_TypeCode = 'd'; 00061 } 00062 00063 OutPort::OutPort(char* name, TimedBooleanSeq& Data) : 00064 OutPortBase(name) 00065 { 00066 // m_pData = pData; 00067 m_pData = &Data; 00068 m_TypeCode = 'B'; 00069 } 00070 00071 OutPort::OutPort(char* name, TimedCharSeq& Data) : 00072 OutPortBase(name) 00073 { 00074 // m_pData = pData; 00075 m_pData = &Data; 00076 m_TypeCode = 'C'; 00077 } 00078 00079 OutPort::OutPort(char* name, TimedOctetSeq& Data) : 00080 OutPortBase(name) 00081 { 00082 // m_pData = pData; 00083 m_pData = &Data; 00084 m_TypeCode = 'O'; 00085 } 00086 00087 00088 OutPort::OutPort(char* name, TimedLongSeq& Data) : 00089 OutPortBase(name) 00090 { 00091 // m_pData = pData; 00092 m_pData = &Data; 00093 m_TypeCode = 'L'; 00094 } 00095 00096 OutPort::OutPort(char* name, TimedFloatSeq& Data) : 00097 OutPortBase(name) 00098 { 00099 // m_pData = pData; 00100 m_pData = &Data; 00101 m_TypeCode = 'F'; 00102 } 00103 00104 OutPort::OutPort(char* name, TimedDoubleSeq& Data) : 00105 OutPortBase(name) 00106 { 00107 // m_pData = pData; 00108 m_pData = &Data; 00109 m_TypeCode = 'D'; 00110 } 00111 00112 OutPort::~OutPort() 00113 { 00114 00115 } 00116 00117 int OutPort::SizeofData() { 00118 switch(m_TypeCode) { 00119 case 'b': 00120 case 'B': 00121 case 'o': 00122 case 'O': 00123 case 'c': 00124 case 'C': 00125 return 1; 00126 default: 00127 return 4; 00128 } 00129 } 00130 00131 int OutPort::write() 00132 { 00133 int datalen = GetLength() * SizeofData(); 00134 int namelen = strlen(GetName()); 00135 char packet_buffer[MAX_PACKET_SIZE];; 00136 packet_buffer[0] = namelen; 00137 packet_buffer[1] = datalen; 00138 memcpy(&(packet_buffer[2]), GetName(), namelen); 00139 memcpy(&(packet_buffer[2 + namelen]), GetBuffer(), datalen); 00140 SendPacket(OUTPORT_WRITE, 2+namelen+datalen, packet_buffer); 00141 ReceivePacket(packet_buffer); 00142 return PACKET_HEADER_SIZE+2+namelen+datalen; 00143 }
Generated on Tue Jul 12 2022 20:43:51 by 1.7.2