> For the complete documentation index, see [llms.txt](https://sandbox-docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sandbox-docs.verifone.com/s-adk-5.1-programmers-guide/sys_8h_source.md).

# sys.h

[Go to the documentation of this file.](/s-adk-5.1-programmers-guide/readme/files/dir_44d926a17fc606d3c25449ba60427c63/dir_048f823fee1bfb22502a8732b9a001aa/sys_8h.md)

```cpp
 1 /****************************************************************************
 2 * Product: InFusion
 3 * Company: Verifone
 4 * Author: GSS R&D Germany
 5 * Content: SDI-Server
 6 ****************************************************************************/
 7 
 8 #ifndef _SYS_H_
 9 #define _SYS_H_
 10 
 11 #define CLA_SYS 0x20 
 12 
 13 #define INS_SYS_SYNC_TURN_ON 0x00 
 14 #define INS_SYS_TURN_OFF 0x01 
 15 #define INS_SYS_ABORT 0x02 
 16 #define INS_SYS_GET_CONFIG 0x03 
 17 #define INS_SYS_GET_STATUS 0x04 
 18 #define INS_SYS_SELFTEST 0x05 
 19 #define INS_SYS_LOCK_PAYMENT 0x06 
 20 #define INS_SYS_SET_STATUS 0x09 
 21 #define INS_SYS_AUTH 0x11 
 22 
 23 #define INS_SYS_SET_IDLE_TEXT 0x13 
 24 
 25 #define INS_SYS_SW_UPLOAD_START 0x14 
 26 #define INS_SYS_SW_UPLOAD_TRANSFER 0x15 
 27 #define INS_SYS_SW_UPLOAD_FINALIZE 0x16 
 28 
 29 #define INS_SYS_SHUTDOWN_REBOOT_SLEEP 0x17 
 30 #define INS_SYS_MAC_SHOW_DESKTOP 0x18 
 31 
 32 #define INS_SYS_SET_PROPERTY 0x19 
 33 #define INS_SYS_GET_PROPERTY 0x1A 
 34 
 35 #define INS_SYS_INSTALL_SPONSOR_CERT 0x1B 
 36 
 37 #define INS_SYS_GET_VERSION_INFO 0x1C 
 38 #define INS_SYS_CHECK_FOR_UPDATE 0x1D 
 39 
 40 #define INS_SYS_SW_GET_LAST_INSTALL_ERROR 0x1E 
 41 
 42 #define INS_SYS_EXT_BUTTON 0x20 
 43 
 44 #define INS_SYS_EPP_ENABLE 0x21 
 45 
 46 #define INS_SYS_FACTORY_RESET 0x22 
 47 
 48 #define INS_SYS_READ_CERTIFICATE 0x23 
 49 
 50 #define INS_SYS_FORCE_CURR_ABBR 0x24 
 51 
 52 #define INS_SYS_STATISTIC_COUNTERS 0x25 
 53 
 54 #define INS_SYS_PUBLIC_ICC_RFID 0x26 
 55 
 56 #define MAX_OUT_MSG_SIZE_A 0xFFF0 // 16 * 0xFFF
 57 #define MAX_OUT_MSG_SIZE_B_C_D 0xFFFF // 64KB - 1
 58 
 59 #ifndef MIN
 60  #define MIN(a,b) ((a)<(b)?(a):(b))
 61 #endif
 62 
 63 typedef struct thread_data
 64 {
 65  char *cmdData;
 66  unsigned long cmdSize;
 67  void *addThreadData;
 68  int taskId;
 69 } Thread_Data;
 70 
 72 enum ExtserverResult
 73 {
 74  RESULT_OK = 0,
 75  RESULT_FAIL = -1,
 76  RESULT_TIMEOUT = -2,
 77  RESULT_USER_CANCEL = -3,
 78  RESULT_MOBILE_ABORT = -4,
 79  RESULT_NO_LINK = -5,
 80  RESULT_CLEAR_BUTTON = -6,
 81  RESULT_DATA_AVAILABLE = -7,
 82  RESULT_EXCESSIVE_PIN_REQUESTS = -8,
 83  RESULT_TAG_ERROR = -9,
 84  RESULT_TAG_LENGTH_ERROR = -10,
 85  RESULT_PARAMETER_ERROR = -11,
 86  RESULT_INTERCHAR_TIMEOUT = -12,
 87  RESULT_LOGIC_ERROR = -13
 88 };
 89 
 91 enum UploadType
 92 {
 93  UPLOAD_TYPE_SOFTWARE_UPDATE,
 94  UPLOAD_TYPE_CONFIG_WHITELIST,
 95  UPLOAD_TYPE_CONFIG_SENSITIVE_TAGS,
 96  UPLOAD_TYPE_CONFIG_CARD_RANGES,
 97  UPLOAD_TYPE_FIRMWARE_UPDATE,
 98  UPLOAD_TYPE_KEYS,
 99  UPLOAD_TYPE_CONFIG_SDIEMV,
 100  UPLOAD_TYPE_REMOVE_SPONSOR,
 101  UPLOAD_TYPE_REMOVE_CONFIG_SDIEMV,
 102  UPLOAD_TYPE_PLUGIN,
 103  UPLOAD_TYPE_REMOVE_PLUGIN,
 104  UPLOAD_TYPE_CP_PACKAGE,
 105  UPLOAD_TYPE_EMV_CONFIG_PACKAGE,
 106  UPLOAD_TYPE_UVRK_PACKAGE,
 108  UPLOAD_TYPE_MAX
 109 };
 110 
 121 bool handleSystemCmd(unsigned long msgBufSize, unsigned char *msg, unsigned long msgSize, unsigned short rspBufSize, unsigned char *rsp, unsigned short *rspSize);
 122 
 129 int check4Interrupt(void);
 130 
 134 void setInterrupt(enum ExtserverResult reason);
 135 
 140 int isCardRemoved(void);
 141 
 146 const char *errText(int err);
 147 
 151 void setDevice2Idle(void);
 152 
 153 enum IdleScreenMode
 154 {
 155  Idle_Normal = 0,
 156  Idle_MenuEnabled = 1,
 161  Idle_WaitLogo = 2,
 163  Idle_NoAdminMode = 4
 166 };
 170 void sysDisplayIdleScreen(unsigned mode = Idle_Normal, const char *idletext = 0);
 171 
 176 bool sysSetIdleScreenFinished(unsigned long id);
 177 
 183 void sysSetIdleScreenAdminMenu(bool on);
 184 
 199 bool sysSetIdleScreenLocked(bool lock = true, bool update_screen = true);
 200 
 201 enum IdleLockType
 202 {
 203  ILT_NoLock = 0,
 204  ILT_ApiLock = 1,
 205  ILT_AdminLock = 2
 206 };
 207 
 212 enum IdleLockType sysGetIdleScreenLocked();
 213 
 219 void setSW1SW2(int result, unsigned char *rsp);
 220 
 227 bool sys_internal_android();
 228 
 231 bool vos_sys8();
 232 
 240 bool checkBundleInstalled(const char *bdlname);
 241 
 247 bool isHwModelName(const char *targetHwModelName);
 248 
 258 void sysResetUpdateContext(void *handle);
 259 
 263 #ifdef _VOS3
 264 bool isUX412(); // this device has no contact card holder slot
 265 bool isUX302();
 266 #else
 267 inline bool isUX412()
 268 {
 269  return false;
 270 }
 271 
 272 inline bool isUX302()
 273 {
 274  return false;
 275 }
 276 #endif
 277 
 278 #ifdef _STM32
 279  #include <stdint.h>
 280  #include <string>
 284  void get_secins_error_message(uint32_t res, std::string &msg);
 285 #endif
 286 
 287 #endif // _SYS_H_
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sandbox-docs.verifone.com/s-adk-5.1-programmers-guide/sys_8h_source.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
