Function for sending a UDP message with notification to a previously specified station.
The message mandatorily includes a response, which must be read via the udp_recv_notify() function. The function can be used only for communication from the client.
|
i32 udp_send_notify (i32 idx, buff, i32 buffLen)
|
|
UDP communication handler number
|
|
Generic buffer containing the data packet to be transmitted. It can be a string variable, a struct_p (packed structure), or an array of struct_p. In the case of struct_p, the variable must be declared global.
In the struct, the first member must be declared of type u32 and represents the message identifier msgId; the value is assigned by the udp_send_notify() function. msgId must be used server-side in the response message and is used to ensure routing to the correct client. All other data is for user use.
The maximum size of this structure is: MAX_UDP_DATA=508 bytes
|
|
Number of total bytes to be transmitted (including msgId)
|
|
Returns:
|
|
>= 0
|
Operation performed successfully. The number of characters sent is returned
|
-1
|
Illegal idx
|
-2
|
Socket not open
|
-3
|
Socket open as server and not as client
|
-4
|
buffLen greater than maximum allowed
|
-5
|
An udp_send_notify() already in progress for the specified idx
|
-1000 -:- -2000
|
Error code of the S.O. function sendto(), with offset 1000
|
To see some returned errors more specifically, see Returned Error Table
|
|
Rule, Task
|
|
Only one udp_send_notify() function can be active simultaneously toward each server (i.e., for each open idx)
|
For a concrete example see in the RDE environment: Workspace -> Specials -> Examples Library.
|
|
-1009
|
[EBADF] Id invalid
|
-1011
|
[EAGAIN or EWOULDBLOCK] Retry. The socket was non-blocking and receiving would block execution, or a timeout on receiving was imposed and that timeout expired before any data was received
|
-1013
|
[EACCES] The SO_BROADCAST option was not imposed on the socket and an address set is broadcast type
|
-1014
|
[EFAULT] The buffer pointer points to an area of memory outside the process space
|
-1022
|
[EINVAL] The total I/O length is greater than the maximum that can be represented by the returned type
|
-1032
|
[EPIPE] The socket has lost connection
|
-1088
|
[ENOTSOCK] Invalid id, does not refer to a socket
|
-1089
|
[EDESTADDRREQ] In an unconnected socket, the address was not specified
|
-1097
|
[EAFNOSUPPORT] The address specified in the address family cannot be used by this socket
|
-1105
|
[ENOBUFS] The message was not sent because it would have exceeded the maximum buffer size
|
-1106
|
[EISCONN] A destination address was specified and the socket is already connected
|
-1112
|
[EHOSTDOWN] The destination is a host on the local subnet and does not respond to the ARP protocol
|
-1113
|
[EHOSTUNREACH] Destination not reachable
|
-1122
|
[EMSGSIZE] Message too long
|
NOTE: For the complete table of error codes see Error codes functions paying attention at the offset.
|