API Status Codes

In general, methods return 0 if all goes well. Exceptionally, there are some methods that return nothing, such as sleep() functions.

Below you can see how the different status return codes are organized as well as the list of codes and its description.

All codes have the type EmodRet , which is a 4-byte integer (uint32_t). Each code can be composed of 3 parts:

  • Module identifies in which module the return occurred
  • Function shows in which function of the module it has returned
  • Status Code is return code itself
Module
Function
Status Code
1 Byte 1 Byte 2 Bytes


Module and error codes are mandatories.

Modules

Module
 
Module Id.
 

Module Description
 
Datasheet
 

8SR

3

8 Signal relays module


Link


10DI

4

10 Digital inputs module


Link


7AI+2PR

5

7 Analog inputs and 2 power relays module


Link


12AI

6

12 Analog inputs module


Link


6_3 Level

7

6_3 Level Meters module





5DI+2PR

8

5 Digital inputs and 2 power relays module


Link


EM3

10

3 Phase Energy Meter module


Link


Supercap

255

Supercapacitor module


Link


On the other hand, return codes are classified into the following groups:

General codes

Constant
Status Code

Description
 

EmodRetOk

0x0

Success


EmodRetErr

0xffff

Error


Standard errno error codes

When system requests fail, error code are returned. To understand the nature of the error these codes need to be interpreted. They are recorded in /usr/include/asm-generic/errno-base.h and /usr/include/asm-generic/errno.h.

Here is a copy of that files included in Linux Kernel 5.4.0-42-generic.

The <errno.h> header file defines the integer variable errno, which is set by system calls and some library functions in the event of an error to indicate what went wrong.

Constant
Status Code

Description
 

EPERM

1

Operation not permitted


ENOENT

2

No such file or directory


ESRCH

3

No such process


EINTR

4

Interrupted system call


EIO

5

I/O error


ENXIO

6

No such device or address


E2BIG

7

Argument list too long


ENOEXEC

8

Exec format error


EBADF

9

Bad file number


ECHILD

10

No child processes


EAGAIN

11

Try again


ENOMEM

12

Out of memory


EACCES

13

Permission denied


EFAULT

14

Bad address


ENOTBLK

15

Block device required


EBUSY

16

Device or resource busy


EEXIST

17

File exists


EXDEV

18

Cross-device link


ENODEV

19

No such device


ENOTDIR

20

Not a directory


EISDIR

21

Is a directory


EINVAL

22

Invalid argument


ENFILE

23

File table overflow


EMFILE

24

Too many open files


ENOTTY

25

Not a typewriter


ETXTBSY

26

Text file busy


EFBIG

27

File too large


ENOSPC

28

No space left on device


ESPIPE

29

Illegal seek


EROFS

30

Read-only file system


EMLINK

31

Too many links


EPIPE

32

Broken pipe


EDOM

33

Math argument out of domain of func


ERANGE

34

Math result not representable


EDEADLK

35

Resource deadlock would occur


ENAMETOOLONG

36

File name too long


ENOLCK

37

No record locks available


ENOSYS

38

Invalid system call number


ENOTEMPTY

39

Directory not empty


ELOOP

40

Too many symbolic links encountered


EWOULDBLOCK

EAGAIN

Operation would block


ENOMSG

42

No message of desired type


EIDRM

43

Identifier removed


ECHRNG

44

Channel number out of range


EL2NSYNC

45

Level 2 not synchronized


EL3HLT

46

Level 3 halted


EL3RST

47

Level 3 reset


ELNRNG

48

Link number out of range


EUNATCH

49

Protocol driver not attached


ENOCSI

50

No CSI structure available


EL2HLT

51

Level 2 halted


EBADE

52

Invalid exchange


EBADR

53

Invalid request descriptor


EXFULL

54

Exchange full


ENOANO

55

No anode


EBADRQC

56

Invalid request code


EBADSLT

57

Invalid slot


EBFONT

59

Bad font file format


ENOSTR

60

Device not a stream


ENODATA

61

No data available


ETIME

62

Timer expired


ENOSR

63

Out of streams resources


ENONET

64

Machine is not on the network


ENOPKG

65

Package not installed


EREMOTE

66

Object is remote


ENOLINK

67

Link has been severed


EADV

68

Advertise error


ESRMNT

69

Srmount error


ECOMM

70

Communication error on send


EPROTO

71

Protocol error


EMULTIHOP

72

Multihop attempted


EDOTDOT

73

RFS specific error


EBADMSG

74

Not a data message


EOVERFLOW

75

Value too large for defined data type


ENOTUNIQ

76

Name not unique on network


EBADFD

77

File descriptor in bad state


EREMCHG

78

Remote address changed


ELIBACC

79

Can not access a needed shared library


ELIBBAD

80

Accessing a corrupted shared library


ELIBSCN

81

.lib section in a.out corrupted


ELIBMAX

82

Attempting to link in too many shared libraries


ELIBEXEC

83

Cannot exec a shared library directly


EILSEQ

84

Illegal byte sequence


ERESTART

85

Interrupted system call should be restarted


ESTRPIPE

86

Streams pipe error


EUSERS

87

Too many users


ENOTSOCK

88

Socket operation on non-socket


EDESTADDRREQ

89

Destination address required


EMSGSIZE

90

Message too long


EPROTOTYPE

91

Protocol wrong type for socket


ENOPROTOOPT

92

Protocol not available


EPROTONOSUPPORT

93

Protocol not supported


ESOCKTNOSUPPORT

94

Socket type not supported


EOPNOTSUPP

95

Operation not supported on transport endpoint


EPFNOSUPPORT

96

Protocol family not supported


EAFNOSUPPORT

97

Address family not supported by protocol


EADDRINUSE

98

Address already in use


EADDRNOTAVAIL

99

Cannot assign requested address


ENETDOWN

100

Network is down


ENETUNREACH

101

Network is unreachable


ENETRESET

102

Network dropped connection because of reset


ECONNABORTED

103

Software caused connection abort


ECONNRESET

104

Connection reset by peer


ENOBUFS

105

No buffer space available


EISCONN

106

Transport endpoint is already connected


ENOTCONN

107

Transport endpoint is not connected


ESHUTDOWN

108

Cannot send after transport endpoint shutdown


ETOOMANYREFS

109

Too many references: cannot splice


ETIMEDOUT

110

Connection timed out


ECONNREFUSED

111

Connection refused


EHOSTDOWN

112

Host is down


EHOSTUNREACH

113

No route to host


EALREADY

114

Operation already in progress


EINPROGRESS

115

Operation now in progress


ESTALE

116

Stale file handle


EUCLEAN

117

Structure needs cleaning


ENOTNAM

118

Not a XENIX named type file


ENAVAIL

119

No XENIX semaphores available


EISNAM

120

Is a named type file


EREMOTEIO

121

Remote I/O error


EDQUOT

122

Quota exceeded


ENOMEDIUM

123

No medium found


EMEDIUMTYPE

124

Wrong medium type


ECANCELED

125

Operation Canceled


ENOKEY

126

Required key not available


EKEYEXPIRED

127

Key has expired


EKEYREVOKED

128

Key has been revoked


EKEYREJECTED

129

Key was rejected by service


EOWNERDEAD

130

Owner died


ENOTRECOVERABLE

131

State not recoverable


ERFKILL

132

Operation not possible due to RF-kill


EHWPOISON

133

Memory page has hardware error




eMOD error codes

Constant
Status Code

Description
 

EmodRetErrWriteBus

1001

Cannot write frame into eMod bus


EmodRetErrNoDataReceived

1002

No module data received


EmodRetErrWrongdataReceived

1003

Wrong data received


EmodRetErrNotAck

1004

Command that requires acknowledgement, has not been acked


EmodRetErrSendConfig

1005

Configuration could not be sent to module


EmodRetErrRecvConfig

1006

Configuration could not be retrieved from module


EmodRetErrModuleNotFound

1007

Module not found


EmodRetErrNoModulesFound

1008

None of the modules have been found




API warning codes

Constant
Status Code

Description
 

EmodRetWrnPollingNotApply

2001

Callback is enabled. Polling does not apply


EmodRetWrnBadInputParam

2002

The value of the parameter passed to the function is incorrect




API information codes

Constant
Status Code

Description