10 #if FW_ENABLE_TEXT_LOGGING 32 this->m_recvReturnIn_InputPort[port].
init();
37 this->m_recvReturnIn_InputPort[port].
setPortNum(port);
39 #if FW_OBJECT_NAMES == 1 43 this->m_objName.toChar(),
46 this->m_recvReturnIn_InputPort[port].setObjName(portName.
toChar());
56 this->m_run_InputPort[port].
init();
63 #if FW_OBJECT_NAMES == 1 67 this->m_objName.toChar(),
70 this->m_run_InputPort[port].setObjName(portName.
toChar());
80 this->m_send_InputPort[port].
init();
87 #if FW_OBJECT_NAMES == 1 91 this->m_objName.toChar(),
94 this->m_send_InputPort[port].setObjName(portName.
toChar());
104 this->m_Log_OutputPort[port].
init();
106 #if FW_OBJECT_NAMES == 1 110 this->m_objName.toChar(),
113 this->m_Log_OutputPort[port].setObjName(portName.
toChar());
117 #if FW_ENABLE_TEXT_LOGGING == 1 121 port < static_cast<FwIndexType>(this->getNum_LogText_OutputPorts());
124 this->m_LogText_OutputPort[port].
init();
126 #if FW_OBJECT_NAMES == 1 130 this->m_objName.toChar(),
133 this->m_LogText_OutputPort[port].setObjName(portName.
toChar());
144 this->m_Time_OutputPort[port].
init();
146 #if FW_OBJECT_NAMES == 1 150 this->m_objName.toChar(),
153 this->m_Time_OutputPort[port].setObjName(portName.
toChar());
163 this->m_Tlm_OutputPort[port].
init();
165 #if FW_OBJECT_NAMES == 1 169 this->m_objName.toChar(),
172 this->m_Tlm_OutputPort[port].setObjName(portName.
toChar());
182 this->m_allocate_OutputPort[port].
init();
184 #if FW_OBJECT_NAMES == 1 188 this->m_objName.toChar(),
191 this->m_allocate_OutputPort[port].setObjName(portName.
toChar());
201 this->m_deallocate_OutputPort[port].
init();
203 #if FW_OBJECT_NAMES == 1 207 this->m_objName.toChar(),
210 this->m_deallocate_OutputPort[port].setObjName(portName.
toChar());
220 this->m_ready_OutputPort[port].
init();
222 #if FW_OBJECT_NAMES == 1 226 this->m_objName.toChar(),
229 this->m_ready_OutputPort[port].setObjName(portName.
toChar());
239 this->m_recv_OutputPort[port].
init();
241 #if FW_OBJECT_NAMES == 1 245 this->m_objName.toChar(),
248 this->m_recv_OutputPort[port].setObjName(portName.
toChar());
262 static_cast<FwAssertArgType>(portNum)
265 return &this->m_recvReturnIn_InputPort[portNum];
273 static_cast<FwAssertArgType>(portNum)
276 return &this->m_run_InputPort[portNum];
284 static_cast<FwAssertArgType>(portNum)
287 return &this->m_send_InputPort[portNum];
302 static_cast<FwAssertArgType>(portNum)
308 #if FW_ENABLE_TEXT_LOGGING == 1 310 void LinuxUartDriverComponentBase ::
311 set_LogText_OutputPort(
317 (0 <= portNum) && (portNum < this->getNum_LogText_OutputPorts()),
318 static_cast<FwAssertArgType>(portNum)
321 this->m_LogText_OutputPort[portNum].addCallPort(port);
334 static_cast<FwAssertArgType>(portNum)
337 this->m_Time_OutputPort[portNum].
addCallPort(port);
348 static_cast<FwAssertArgType>(portNum)
366 static_cast<FwAssertArgType>(portNum)
369 this->m_allocate_OutputPort[portNum].
addCallPort(port);
380 static_cast<FwAssertArgType>(portNum)
383 this->m_deallocate_OutputPort[portNum].
addCallPort(port);
394 static_cast<FwAssertArgType>(portNum)
397 this->m_ready_OutputPort[portNum].
addCallPort(port);
408 static_cast<FwAssertArgType>(portNum)
411 this->m_recv_OutputPort[portNum].
addCallPort(port);
414 #if FW_PORT_SERIALIZATION 423 Fw::InputSerializePort* port
428 static_cast<FwAssertArgType>(portNum)
431 this->m_Log_OutputPort[portNum].registerSerialPort(port);
434 #if FW_ENABLE_TEXT_LOGGING == 1 436 void LinuxUartDriverComponentBase ::
437 set_LogText_OutputPort(
439 Fw::InputSerializePort* port
443 (0 <= portNum) && (portNum < this->getNum_LogText_OutputPorts()),
444 static_cast<FwAssertArgType>(portNum)
447 this->m_LogText_OutputPort[portNum].registerSerialPort(port);
455 Fw::InputSerializePort* port
460 static_cast<FwAssertArgType>(portNum)
463 this->m_Time_OutputPort[portNum].registerSerialPort(port);
469 Fw::InputSerializePort* port
474 static_cast<FwAssertArgType>(portNum)
477 this->m_Tlm_OutputPort[portNum].registerSerialPort(port);
482 #if FW_PORT_SERIALIZATION 491 Fw::InputSerializePort* port
496 static_cast<FwAssertArgType>(portNum)
499 this->m_deallocate_OutputPort[portNum].registerSerialPort(port);
505 Fw::InputSerializePort* port
510 static_cast<FwAssertArgType>(portNum)
513 this->m_ready_OutputPort[portNum].registerSerialPort(port);
519 Fw::InputSerializePort* port
524 static_cast<FwAssertArgType>(portNum)
527 this->m_recv_OutputPort[portNum].registerSerialPort(port);
538 Fw::PassiveComponentBase(compName)
540 this->m_WriteErrorThrottle = 0;
541 this->m_ReadErrorThrottle = 0;
542 this->m_NoBuffersThrottle = 0;
560 static_cast<FwAssertArgType>(portNum)
563 return this->m_Log_OutputPort[portNum].
isConnected();
566 #if FW_ENABLE_TEXT_LOGGING == 1 568 bool LinuxUartDriverComponentBase ::
569 isConnected_LogText_OutputPort(
FwIndexType portNum)
572 (0 <= portNum) && (portNum < this->getNum_LogText_OutputPorts()),
573 static_cast<FwAssertArgType>(portNum)
576 return this->m_LogText_OutputPort[portNum].isConnected();
586 static_cast<FwAssertArgType>(portNum)
589 return this->m_Time_OutputPort[portNum].
isConnected();
597 static_cast<FwAssertArgType>(portNum)
600 return this->m_Tlm_OutputPort[portNum].
isConnected();
612 static_cast<FwAssertArgType>(portNum)
615 return this->m_allocate_OutputPort[portNum].
isConnected();
623 static_cast<FwAssertArgType>(portNum)
626 return this->m_deallocate_OutputPort[portNum].
isConnected();
634 static_cast<FwAssertArgType>(portNum)
637 return this->m_ready_OutputPort[portNum].
isConnected();
645 static_cast<FwAssertArgType>(portNum)
648 return this->m_recv_OutputPort[portNum].
isConnected();
666 static_cast<FwAssertArgType>(portNum)
691 static_cast<FwAssertArgType>(portNum)
710 static_cast<FwAssertArgType>(portNum)
742 static_cast<FwAssertArgType>(portNum)
746 this->m_allocate_OutputPort[portNum].isConnected(),
747 static_cast<FwAssertArgType>(portNum)
749 return this->m_allocate_OutputPort[portNum].
invoke(
762 static_cast<FwAssertArgType>(portNum)
766 this->m_deallocate_OutputPort[portNum].isConnected(),
767 static_cast<FwAssertArgType>(portNum)
769 this->m_deallocate_OutputPort[portNum].
invoke(
779 static_cast<FwAssertArgType>(portNum)
783 this->m_ready_OutputPort[portNum].isConnected(),
784 static_cast<FwAssertArgType>(portNum)
786 this->m_ready_OutputPort[portNum].
invoke();
798 static_cast<FwAssertArgType>(portNum)
802 this->m_recv_OutputPort[portNum].isConnected(),
803 static_cast<FwAssertArgType>(portNum)
805 this->m_recv_OutputPort[portNum].
invoke(
824 if (this->m_Time_OutputPort[0].isConnected()) {
825 this->m_Time_OutputPort[0].
invoke(_logTime);
833 if (this->m_Log_OutputPort[0].isConnected()) {
837 #if FW_AMPCS_COMPATIBLE 842 static_cast<FwAssertArgType>(_status)
849 static_cast<FwAssertArgType>(_status)
852 #if FW_AMPCS_COMPATIBLE 855 static_cast<U8>(
sizeof(I32))
859 static_cast<FwAssertArgType>(_status)
865 static_cast<FwAssertArgType>(_status)
871 static_cast<FwAssertArgType>(_status)
874 this->m_Log_OutputPort[0].
invoke(
883 #if FW_ENABLE_TEXT_LOGGING 884 if (this->m_LogText_OutputPort[0].isConnected()) {
885 #if FW_OBJECT_NAMES == 1 886 const char* _formatString =
887 "(%s) %s: Error opening UART device %s: %" PRIi32
" %s";
889 const char* _formatString =
890 "%s: Error opening UART device %s: %" PRIi32
" %s";
897 this->m_objName.toChar(),
905 this->m_LogText_OutputPort[0].invoke(
923 if (this->m_Time_OutputPort[0].isConnected()) {
924 this->m_Time_OutputPort[0].
invoke(_logTime);
932 if (this->m_Log_OutputPort[0].isConnected()) {
936 #if FW_AMPCS_COMPATIBLE 941 static_cast<FwAssertArgType>(_status)
948 static_cast<FwAssertArgType>(_status)
951 #if FW_AMPCS_COMPATIBLE 954 static_cast<U8>(
sizeof(I32))
958 static_cast<FwAssertArgType>(_status)
964 static_cast<FwAssertArgType>(_status)
967 this->m_Log_OutputPort[0].
invoke(
976 #if FW_ENABLE_TEXT_LOGGING 977 if (this->m_LogText_OutputPort[0].isConnected()) {
978 #if FW_OBJECT_NAMES == 1 979 const char* _formatString =
980 "(%s) %s: Error configuring UART device %s: %" PRIi32
"";
982 const char* _formatString =
983 "%s: Error configuring UART device %s: %" PRIi32
"";
990 this->m_objName.toChar(),
997 this->m_LogText_OutputPort[0].invoke(
1018 this->m_WriteErrorThrottle++;
1023 if (this->m_Time_OutputPort[0].isConnected()) {
1024 this->m_Time_OutputPort[0].
invoke(_logTime);
1032 if (this->m_Log_OutputPort[0].isConnected()) {
1036 #if FW_AMPCS_COMPATIBLE 1041 static_cast<FwAssertArgType>(_status)
1048 static_cast<FwAssertArgType>(_status)
1051 #if FW_AMPCS_COMPATIBLE 1054 static_cast<U8>(
sizeof(I32))
1058 static_cast<FwAssertArgType>(_status)
1064 static_cast<FwAssertArgType>(_status)
1067 this->m_Log_OutputPort[0].
invoke(
1076 #if FW_ENABLE_TEXT_LOGGING 1077 if (this->m_LogText_OutputPort[0].isConnected()) {
1078 #if FW_OBJECT_NAMES == 1 1079 const char* _formatString =
1080 "(%s) %s: Error writing UART device %s: %" PRIi32
"";
1082 const char* _formatString =
1083 "%s: Error writing UART device %s: %" PRIi32
"";
1090 this->m_objName.toChar(),
1097 this->m_LogText_OutputPort[0].invoke(
1118 this->m_ReadErrorThrottle++;
1123 if (this->m_Time_OutputPort[0].isConnected()) {
1124 this->m_Time_OutputPort[0].
invoke(_logTime);
1132 if (this->m_Log_OutputPort[0].isConnected()) {
1136 #if FW_AMPCS_COMPATIBLE 1141 static_cast<FwAssertArgType>(_status)
1148 static_cast<FwAssertArgType>(_status)
1151 #if FW_AMPCS_COMPATIBLE 1154 static_cast<U8>(
sizeof(I32))
1158 static_cast<FwAssertArgType>(_status)
1164 static_cast<FwAssertArgType>(_status)
1167 this->m_Log_OutputPort[0].
invoke(
1176 #if FW_ENABLE_TEXT_LOGGING 1177 if (this->m_LogText_OutputPort[0].isConnected()) {
1178 #if FW_OBJECT_NAMES == 1 1179 const char* _formatString =
1180 "(%s) %s: Error reading UART device %s: %" PRIi32
"";
1182 const char* _formatString =
1183 "%s: Error reading UART device %s: %" PRIi32
"";
1190 this->m_objName.toChar(),
1197 this->m_LogText_OutputPort[0].invoke(
1212 if (this->m_Time_OutputPort[0].isConnected()) {
1213 this->m_Time_OutputPort[0].
invoke(_logTime);
1221 if (this->m_Log_OutputPort[0].isConnected()) {
1225 #if FW_AMPCS_COMPATIBLE 1230 static_cast<FwAssertArgType>(_status)
1237 static_cast<FwAssertArgType>(_status)
1240 this->m_Log_OutputPort[0].
invoke(
1249 #if FW_ENABLE_TEXT_LOGGING 1250 if (this->m_LogText_OutputPort[0].isConnected()) {
1251 #if FW_OBJECT_NAMES == 1 1252 const char* _formatString =
1253 "(%s) %s: UART Device %s configured";
1255 const char* _formatString =
1256 "%s: UART Device %s configured";
1263 this->m_objName.toChar(),
1269 this->m_LogText_OutputPort[0].invoke(
1287 this->m_NoBuffersThrottle++;
1292 if (this->m_Time_OutputPort[0].isConnected()) {
1293 this->m_Time_OutputPort[0].
invoke(_logTime);
1301 if (this->m_Log_OutputPort[0].isConnected()) {
1305 #if FW_AMPCS_COMPATIBLE 1310 static_cast<FwAssertArgType>(_status)
1317 static_cast<FwAssertArgType>(_status)
1320 this->m_Log_OutputPort[0].
invoke(
1329 #if FW_ENABLE_TEXT_LOGGING 1330 if (this->m_LogText_OutputPort[0].isConnected()) {
1331 #if FW_OBJECT_NAMES == 1 1332 const char* _formatString =
1333 "(%s) %s: UART Device %s ran out of buffers";
1335 const char* _formatString =
1336 "%s: UART Device %s ran out of buffers";
1343 this->m_objName.toChar(),
1349 this->m_LogText_OutputPort[0].invoke(
1368 if (this->m_Time_OutputPort[0].isConnected()) {
1369 this->m_Time_OutputPort[0].
invoke(_logTime);
1377 if (this->m_Log_OutputPort[0].isConnected()) {
1381 #if FW_AMPCS_COMPATIBLE 1386 static_cast<FwAssertArgType>(_status)
1393 static_cast<FwAssertArgType>(_status)
1396 #if FW_AMPCS_COMPATIBLE 1399 static_cast<U8>(
sizeof(U32))
1403 static_cast<FwAssertArgType>(_status)
1409 static_cast<FwAssertArgType>(_status)
1412 #if FW_AMPCS_COMPATIBLE 1415 static_cast<U8>(
sizeof(U32))
1419 static_cast<FwAssertArgType>(_status)
1425 static_cast<FwAssertArgType>(_status)
1428 this->m_Log_OutputPort[0].
invoke(
1437 #if FW_ENABLE_TEXT_LOGGING 1438 if (this->m_LogText_OutputPort[0].isConnected()) {
1439 #if FW_OBJECT_NAMES == 1 1440 const char* _formatString =
1441 "(%s) %s: UART Device %s target buffer too small. Size: %" PRIu32
" Needs: %" PRIu32
"";
1443 const char* _formatString =
1444 "%s: UART Device %s target buffer too small. Size: %" PRIu32
" Needs: %" PRIu32
"";
1451 this->m_objName.toChar(),
1459 this->m_LogText_OutputPort[0].invoke(
1477 this->m_WriteErrorThrottle = 0;
1484 this->m_ReadErrorThrottle = 0;
1491 this->m_NoBuffersThrottle = 0;
1504 if (this->m_Tlm_OutputPort[0].isConnected()) {
1506 this->m_Time_OutputPort[0].isConnected() &&
1509 this->m_Time_OutputPort[0].
invoke(_tlmTime);
1516 static_cast<FwAssertArgType>(_stat)
1523 this->m_Tlm_OutputPort[0].
invoke(
1537 if (this->m_Tlm_OutputPort[0].isConnected()) {
1539 this->m_Time_OutputPort[0].isConnected() &&
1542 this->m_Time_OutputPort[0].
invoke(_tlmTime);
1549 static_cast<FwAssertArgType>(_stat)
1556 this->m_Tlm_OutputPort[0].
invoke(
1571 if (this->m_Time_OutputPort[0].isConnected()) {
1573 this->m_Time_OutputPort[0].
invoke(_time);
1591 this->m_guardedPortMutex.
lock();
1597 this->m_guardedPortMutex.
unLock();
1604 void LinuxUartDriverComponentBase ::
1605 m_p_recvReturnIn_in(
1619 void LinuxUartDriverComponentBase ::
1628 compPtr->run_handlerBase(
1643 return compPtr->send_handlerBase(
virtual void lock()
Lock the guarded mutex.
Serialization/Deserialization operation was successful.
virtual void unLock()
Unlock the guarded mutex.
bool isConnected_deallocate_OutputPort(FwIndexType portNum)
void addCallPort(InputTimePort *callPort)
Register an input port.
void addCallPort(InputByteStreamReadyPort *callPort)
Register an input port.
void log_WARNING_HI_BufferTooSmall(const Fw::StringBase &device, U32 size, U32 needed) const
static constexpr FwIndexType getNum_deallocate_OutputPorts()
Throttle reset count for NoBuffers.
bool isConnected_Time_OutputPort(FwIndexType portNum)
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG) override
Serialize an 8-bit unsigned integer value.
void recvReturnIn_handlerBase(FwIndexType portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port recvReturnIn.
FwIdType getIdBase() const
PlatformSizeType FwSizeType
Drv::ByteStreamStatus send_handlerBase(FwIndexType portNum, Fw::Buffer &sendBuffer)
Handler base-class function for input port send.
bool isConnected_allocate_OutputPort(FwIndexType portNum)
Drv::InputByteStreamSendPort * get_send_InputPort(FwIndexType portNum)
void set_Tlm_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to Tlm[portNum].
virtual void recvReturnIn_handler(FwIndexType portNum, Fw::Buffer &fwBuffer)=0
Handler for input port recvReturnIn.
static constexpr FwIndexType getNum_recv_OutputPorts()
void unLock()
unlock the mutex and assert success
void tlmWrite_BytesRecv(FwSizeType arg, Fw::Time _tlmTime=Fw::Time()) const
virtual const CHAR * toChar() const =0
Convert to a C-style char*.
LinuxUartDriverComponentBase(const char *compName="")
Construct LinuxUartDriverComponentBase object.
void init()
Initialization function.
Auto-generated base for LinuxUartDriver component.
No time base has been established (Required)
static constexpr FwIndexType getNum_Log_OutputPorts()
Throttle reset count for WriteError.
void log_WARNING_HI_WriteError(const Fw::StringBase &device, I32 error)
void addCallPort(InputTlmPort *callPort)
Register an input port.
void set_ready_OutputPort(FwIndexType portNum, Drv::InputByteStreamReadyPort *port)
Connect port to ready[portNum].
void init()
Object initializer.
void log_WARNING_HI_ReadError(const Fw::StringBase &device, I32 error)
SerializeStatus
forward declaration for string
void addCallPort(InputBufferGetPort *callPort)
Register an input port.
void addCallPort(InputByteStreamDataPort *callPort)
Register an input port.
void deallocate_out(FwIndexType portNum, Fw::Buffer &fwBuffer)
Invoke output port deallocate.
Fw::InputBufferSendPort * get_recvReturnIn_InputPort(FwIndexType portNum)
FwIdType FwEventIdType
The type of an event identifier.
Status returned by the send call.
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects) ...
Throttle reset count for ReadError.
void init()
Initialization function.
static constexpr FwIndexType getNum_ready_OutputPorts()
#define FW_MIN(a, b)
MIN macro.
void invoke(Fw::Buffer &buffer, const Drv::ByteStreamStatus &status) const
Invoke a port interface.
void invoke(Fw::Buffer &fwBuffer) const
Invoke a port interface.
void addCallPort(InputBufferSendPort *callPort)
Register an input port.
void invoke(Fw::Time &time) const
Invoke a port interface.
static constexpr FwIndexType getNum_recvReturnIn_InputPorts()
void set_Log_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to Log[portNum].
void recv_out(FwIndexType portNum, Fw::Buffer &buffer, const Drv::ByteStreamStatus &status)
Invoke output port recv.
void log_WARNING_HI_WriteError_ThrottleClear()
Reset throttle value for WriteError.
const char * toChar() const
Convert to a C-style char*.
FwIdType FwChanIdType
The type of a telemetry channel identifier.
void log_WARNING_HI_OpenError(const Fw::StringBase &device, I32 error, const Fw::StringBase &name) const
static constexpr FwIndexType getNum_run_InputPorts()
virtual Drv::ByteStreamStatus send_handler(FwIndexType portNum, Fw::Buffer &sendBuffer)=0
Handler for input port send.
A serious but recoverable event.
bool isConnected_Log_OutputPort(FwIndexType portNum)
void log_ACTIVITY_HI_PortOpened(const Fw::StringBase &device) const
void invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke a port interface.
void set_allocate_OutputPort(FwIndexType portNum, Fw::InputBufferGetPort *port)
Connect port to allocate[portNum].
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
void init()
Initialization function.
void log_WARNING_HI_NoBuffers(const Fw::StringBase &device)
static constexpr FwIndexType getNum_allocate_OutputPorts()
bool isConnected_Tlm_OutputPort(FwIndexType portNum)
static constexpr FwIndexType getNum_Time_OutputPorts()
Fw::Buffer invoke(FwSizeType size) const
Invoke a port interface.
static constexpr FwIndexType getNum_Tlm_OutputPorts()
bool isConnected_recv_OutputPort(FwIndexType portNum)
virtual void run_handler(FwIndexType portNum, U32 context)=0
Handler for input port run.
Important informational events.
Svc::InputSchedPort * get_run_InputPort(FwIndexType portNum)
void init()
Initialization function.
void invoke(FwEventIdType id, Fw::Time &timeTag, const Fw::LogSeverity &severity, Fw::LogBuffer &args) const
Invoke a port interface.
void run_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port run.
void init()
Initialization function.
void set_deallocate_OutputPort(FwIndexType portNum, Fw::InputBufferSendPort *port)
Connect port to deallocate[portNum].
PlatformIndexType FwIndexType
void invoke() const
Invoke a port interface.
void addCallPort(InputLogPort *callPort)
Register an input port.
void ready_out(FwIndexType portNum)
Invoke output port ready.
void init()
Initialization function.
Channel ID for BytesSent.
void set_Time_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to Time[portNum].
virtual ~LinuxUartDriverComponentBase()
Destroy LinuxUartDriverComponentBase object.
bool isConnected_ready_OutputPort(FwIndexType portNum)
void log_WARNING_HI_NoBuffers_ThrottleClear()
Reset throttle value for NoBuffers.
Implementation of malloc based allocator.
void set_recv_OutputPort(FwIndexType portNum, Drv::InputByteStreamDataPort *port)
Connect port to recv[portNum].
void tlmWrite_BytesSent(FwSizeType arg, Fw::Time _tlmTime=Fw::Time()) const
void init()
Initialization function.
Fw::Buffer allocate_out(FwIndexType portNum, FwSizeType size)
Invoke output port allocate.
Channel ID for BytesRecv.
void lock()
lock the mutex and assert success
void log_WARNING_HI_ReadError_ThrottleClear()
Reset throttle value for ReadError.
SerializeStatus serializeTo(SerialBufferBase &buffer, Endianness mode=Endianness::BIG) const override
Serialize the contents of this object to a buffer.
void log_WARNING_HI_ConfigError(const Fw::StringBase &device, I32 error) const
static constexpr FwIndexType getNum_send_InputPorts()