PageRenderTime 48ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/android-sercd/project/jni/sercd.h

http://android-serialport-api.googlecode.com/
C Header | 182 lines | 135 code | 22 blank | 25 comment | 0 complexity | 5b70a52d60cb7bac01a7ddfdb1936ab3 MD5 | raw file
Possible License(s): GPL-2.0
  1. /*
  2. * sercd
  3. * Copyright 2008 Peter ?&#x2026;strand <astrand@cendio.se> for Cendio AB
  4. * see file COPYING for license details
  5. */
  6. #ifndef SERCD_H
  7. #define SERCD_H
  8. #include "unix.h"
  9. #ifndef ANDROID
  10. #include "win.h"
  11. #endif
  12. #include <sys/types.h>
  13. /* Standard boolean definition */
  14. typedef enum
  15. { False, True }
  16. Boolean;
  17. /* Maximum length of temporary strings */
  18. #define TmpStrLen 255
  19. /* Error conditions constants */
  20. #define NoError 0
  21. #define Error 1
  22. #define OpenError -1
  23. /* Base Telnet protocol constants (STD 8) */
  24. #define TNSE ((unsigned char) 240)
  25. #define TNNOP ((unsigned char) 241)
  26. #define TNSB ((unsigned char) 250)
  27. #define TNWILL ((unsigned char) 251)
  28. #define TNWONT ((unsigned char) 252)
  29. #define TNDO ((unsigned char) 253)
  30. #define TNDONT ((unsigned char) 254)
  31. #define TNIAC ((unsigned char) 255)
  32. /* Base Telnet protocol options constants (STD 27, STD 28, STD 29) */
  33. #define TN_TRANSMIT_BINARY ((unsigned char) 0)
  34. #define TN_ECHO ((unsigned char) 1)
  35. #define TN_SUPPRESS_GO_AHEAD ((unsigned char) 3)
  36. /* Base Telnet Com Port Control (CPC) protocol constants (RFC 2217) */
  37. #define TNCOM_PORT_OPTION ((unsigned char) 44)
  38. /* CPC Client to Access Server constants */
  39. #define TNCAS_SIGNATURE ((unsigned char) 0)
  40. #define TNCAS_SET_BAUDRATE ((unsigned char) 1)
  41. #define TNCAS_SET_DATASIZE ((unsigned char) 2)
  42. #define TNCAS_SET_PARITY ((unsigned char) 3)
  43. #define TNCAS_SET_STOPSIZE ((unsigned char) 4)
  44. #define TNCAS_SET_CONTROL ((unsigned char) 5)
  45. #define TNCAS_NOTIFY_LINESTATE ((unsigned char) 6)
  46. #define TNCAS_NOTIFY_MODEMSTATE ((unsigned char) 7)
  47. #define TNCAS_FLOWCONTROL_SUSPEND ((unsigned char) 8)
  48. #define TNCAS_FLOWCONTROL_RESUME ((unsigned char) 9)
  49. #define TNCAS_SET_LINESTATE_MASK ((unsigned char) 10)
  50. #define TNCAS_SET_MODEMSTATE_MASK ((unsigned char) 11)
  51. #define TNCAS_PURGE_DATA ((unsigned char) 12)
  52. /* CPC Access Server to Client constants */
  53. #define TNASC_SIGNATURE ((unsigned char) 100)
  54. #define TNASC_SET_BAUDRATE ((unsigned char) 101)
  55. #define TNASC_SET_DATASIZE ((unsigned char) 102)
  56. #define TNASC_SET_PARITY ((unsigned char) 103)
  57. #define TNASC_SET_STOPSIZE ((unsigned char) 104)
  58. #define TNASC_SET_CONTROL ((unsigned char) 105)
  59. #define TNASC_NOTIFY_LINESTATE ((unsigned char) 106)
  60. #define TNASC_NOTIFY_MODEMSTATE ((unsigned char) 107)
  61. #define TNASC_FLOWCONTROL_SUSPEND ((unsigned char) 108)
  62. #define TNASC_FLOWCONTROL_RESUME ((unsigned char) 109)
  63. #define TNASC_SET_LINESTATE_MASK ((unsigned char) 110)
  64. #define TNASC_SET_MODEMSTATE_MASK ((unsigned char) 111)
  65. #define TNASC_PURGE_DATA ((unsigned char) 112)
  66. /* CPC set parity */
  67. #define TNCOM_PARITY_REQUEST ((unsigned char) 0)
  68. #define TNCOM_NOPARITY ((unsigned char) 1)
  69. #define TNCOM_ODDPARITY ((unsigned char) 2)
  70. #define TNCOM_EVENPARITY ((unsigned char) 3)
  71. #define TNCOM_MARKPARITY ((unsigned char) 4)
  72. #define TNCOM_SPACEPARITY ((unsigned char) 5)
  73. /* CPC set stopsize */
  74. #define TNCOM_STOPSIZE_REQUEST ((unsigned char) 0)
  75. #define TNCOM_ONESTOPBIT ((unsigned char) 1)
  76. #define TNCOM_TWOSTOPBITS ((unsigned char) 2)
  77. #define TNCOM_ONE5STOPBITS ((unsigned char) 3)
  78. /* CPC commands */
  79. #define TNCOM_CMD_FLOW_REQ ((unsigned char) 0)
  80. #define TNCOM_CMD_FLOW_NONE ((unsigned char) 1)
  81. #define TNCOM_CMD_FLOW_XONXOFF ((unsigned char) 2)
  82. #define TNCOM_CMD_FLOW_HARDWARE ((unsigned char) 3)
  83. #define TNCOM_CMD_BREAK_REQ ((unsigned char) 4)
  84. #define TNCOM_CMD_BREAK_ON ((unsigned char) 5)
  85. #define TNCOM_CMD_BREAK_OFF ((unsigned char) 6)
  86. #define TNCOM_CMD_DTR_REQ ((unsigned char) 7)
  87. #define TNCOM_CMD_DTR_ON ((unsigned char) 8)
  88. #define TNCOM_CMD_DTR_OFF ((unsigned char) 9)
  89. #define TNCOM_CMD_RTS_REQ ((unsigned char) 10)
  90. #define TNCOM_CMD_RTS_ON ((unsigned char) 11)
  91. #define TNCOM_CMD_RTS_OFF ((unsigned char) 12)
  92. #define TNCOM_CMD_INFLOW_REQ ((unsigned char) 13)
  93. #define TNCOM_CMD_INFLOW_NONE ((unsigned char) 14)
  94. #define TNCOM_CMD_INFLOW_XONXOFF ((unsigned char) 15)
  95. #define TNCOM_CMD_INFLOW_HARDWARE ((unsigned char) 16)
  96. #define TNCOM_CMD_FLOW_DCD ((unsigned char) 17)
  97. #define TNCOM_CMD_INFLOW_DTR ((unsigned char) 18)
  98. #define TNCOM_CMD_FLOW_DSR ((unsigned char) 19)
  99. /* CPC linestate mask and notifies */
  100. #define TNCOM_LINEMASK_TIMEOUT ((unsigned char) 128)
  101. #define TNCOM_LINEMASK_TRANS_SHIFT_EMTPY ((unsigned char) 64)
  102. #define TNCOM_LINEMASK_TRANS_HOLD_EMPTY ((unsigned char) 32)
  103. #define TNCOM_LINEMASK_BREAK_ERR ((unsigned char) 16)
  104. #define TNCOM_LINEMASK_FRAME_ERR ((unsigned char) 8)
  105. #define TNCOM_LINEMASK_PARITY_ERR ((unsigned char) 4)
  106. #define TNCOM_LINEMASK_OVERRUN_ERR ((unsigned char) 2)
  107. #define TNCOM_LINEMASK_DATA_RD ((unsigned char) 1)
  108. /* CPC modemstate mask and notifies */
  109. #define TNCOM_MODMASK_RLSD ((unsigned char) 128)
  110. #define TNCOM_MODMASK_RING ((unsigned char) 64)
  111. #define TNCOM_MODMASK_DSR ((unsigned char) 32)
  112. #define TNCOM_MODMASK_CTS ((unsigned char) 16)
  113. #define TNCOM_MODMASK_NODELTA (TNCOM_MODMASK_RLSD|TNCOM_MODMASK_RING|TNCOM_MODMASK_DSR|TNCOM_MODMASK_CTS)
  114. #define TNCOM_MODMASK_RLSD_DELTA ((unsigned char) 8)
  115. #define TNCOM_MODMASK_RING_TRAIL ((unsigned char) 4)
  116. #define TNCOM_MODMASK_DSR_DELTA ((unsigned char) 2)
  117. #define TNCOM_MODMASK_CTS_DELTA ((unsigned char) 1)
  118. /* CPC purge data */
  119. #define TNCOM_PURGE_RX ((unsigned char) 1)
  120. #define TNCOM_PURGE_TX ((unsigned char) 2)
  121. #define TNCOM_PURGE_BOTH ((unsigned char) 3)
  122. /* Generic log function with log level control. Uses the same log levels
  123. of the syslog(3) system call */
  124. void LogMsg(int LogLevel, const char *const Msg);
  125. /* Function executed when the program exits */
  126. void ExitFunction(void);
  127. /* Function called on break signal */
  128. void BreakFunction(int unused);
  129. /* Abstract platform-independent select function */
  130. int SercdSelect(PORTHANDLE *DeviceIn, PORTHANDLE *DeviceOut, PORTHANDLE *Modemstate,
  131. SERCD_SOCKET *SocketOut, SERCD_SOCKET *SocketIn,
  132. SERCD_SOCKET *SocketConnect, long PollInterval);
  133. #define SERCD_EV_DEVICEIN 1
  134. #define SERCD_EV_DEVICEOUT 2
  135. #define SERCD_EV_SOCKETOUT 4
  136. #define SERCD_EV_SOCKETIN 8
  137. #define SERCD_EV_SOCKETCONNECT 16
  138. #define SERCD_EV_MODEMSTATE 32
  139. /* macros */
  140. #ifndef MAX
  141. #define MAX(x,y) (((x) > (y)) ? (x) : (y))
  142. #endif
  143. #ifndef MIN
  144. #define MIN(x,y) (((x) > (y)) ? (y) : (x))
  145. #endif
  146. void NewListener(SERCD_SOCKET LSocketFd);
  147. #ifndef ANDROID
  148. void DropConnection(PORTHANDLE * DeviceFd, SERCD_SOCKET * InSocketFd, SERCD_SOCKET * OutSocketFd,
  149. const char *LockFileName);
  150. #else
  151. void DropConnection(PORTHANDLE * DeviceFd, SERCD_SOCKET * InSocketFd, SERCD_SOCKET * OutSocketFd);
  152. #endif
  153. ssize_t WriteToDev(PORTHANDLE port, const void *buf, size_t count);
  154. ssize_t ReadFromDev(PORTHANDLE port, void *buf, size_t count);
  155. ssize_t WriteToNet(SERCD_SOCKET sock, const void *buf, size_t count);
  156. ssize_t ReadFromNet(SERCD_SOCKET sock, void *buf, size_t count);
  157. void ModemStateNotified();
  158. void LogPortSettings(unsigned long speed, unsigned char datasize, unsigned char parity,
  159. unsigned char stopsize, unsigned char outflow, unsigned char inflow);
  160. #endif /* SERCD_H */