Skip to content

2.1 Status Codes and Common Types

Float32 / Float64

Header file: include/common.h

NameDefinition
Float32float
Float64double

STATUS_CODE

STATUS_CODE is the common SDK return value. This page lists only high-frequency status codes; the complete enum is defined by the SDK headers.

Status CodeValueTypical Scenario
OK0Call succeeded
CONNECTION_TIMEOUT-3Network connection timed out
INVALID_IP_ADDRESS-17Arm::Connect() / SubPub::Connect() received an invalid IP
FAILED_TO_DOWNLOAD_SAME_NAME_FILE-21The target file already exists during download and overwriting=false
FILE_NOTEXIST-25Controller file does not exist
INVALID_PARAMETER-27Input parameter failed local validation
NOT_FOUND-28Target data was not found
LOCAL_PROXY_UNSUPPORTED-29Local proxy mode does not support the current input environment
BUFFER_TOO_SMALL-30C99 out buffer is too small
NOT_CONNECTED-35Connection has not been established or has already been disconnected
SUB_PUB_RECEIVE_TIMEOUT-37SubPub::Receive() did not receive a message before timeout
CONTROLLER_ERROR-254Controller returned an error
OTHER_ERR-255Generic failure fallback

Reading Guidance

  • C++17 query APIs usually return std::pair<T, STATUS_CODE>
  • When STATUS_CODE != OK , do not continue consuming the data value
  • Some APIs return a "failure data value + status code" pair, for example:
    • Info::GetSoftMode() returns SoftModeEnum::UNKNOWN on failure
    • Info::GetOpMode() returns OpModeEnum::UNKNOWN on failure
    • SubPub::Receive() returns an empty Json::Value + SUB_PUB_RECEIVE_TIMEOUT on timeout

RobotType

Header file: include/arm_api.h

EnumValueDescription
RobotType::UNKNOWN0Unrecognized
RobotType::COBOT1Collaborative robot
RobotType::PUMA2PUMA robot
RobotType::SCARA3SCARA robot

Arm::Connect() fills the robotType field after a successful connection. Identification rules:

  • Models containing GBT-C are identified as COBOT
  • Models containing GBT-S are identified as SCARA
  • Other recognized models are classified as PUMA by default

Runtime Status Enums

Header FileType
include/ctrl_status_enum.hCtrlStatusEnum
include/robot_status_enum.hRobotStatusEnum
include/servo_status_enum.hServoStatusEnum
include/soft_mode_enum.hSoftModeEnum
include/op_mode_enum.hOpModeEnum

These enums are return types of ControllerInfo query APIs. They convert controller status codes into readable states; unrecognized values are mapped to the corresponding UNKNOWN item.

CtrlStatusEnum

Represents the motion-controller runtime state, corresponding to Info::GetCtrlStatus() .

EnumValueDescription
CtrlStatusEnum::CTRL_INIT0Motion controller is initializing
CtrlStatusEnum::CTRL_ENGAGED1Motion controller is engaged
CtrlStatusEnum::CTRL_ESTOP2Motion controller is in emergency stop
CtrlStatusEnum::CTRL_TERMINATED3Motion controller is terminated
CtrlStatusEnum::CTRL_ANY_TO_ESTOP101Intermediate state: another state is switching to emergency stop
CtrlStatusEnum::CTRL_ESTOP_TO_ENGAGED102Intermediate state: emergency stop is switching to engaged
CtrlStatusEnum::CTRL_ESTOP_TO_TERMINATED103Intermediate state: emergency stop is switching to terminated
CtrlStatusEnum::CTRL_UNKNOWN-1Unknown state

RobotStatusEnum

Represents the robot body runtime state, corresponding to Info::GetRobotStatus() .

EnumValueDescription
RobotStatusEnum::ROBOT_IDLE0Robot is idle
RobotStatusEnum::ROBOT_RUNNING1Robot is running
RobotStatusEnum::ROBOT_TEACHING2Robot is in teach mode
RobotStatusEnum::ROBOT_DRAG3Robot is in drag mode
RobotStatusEnum::ROBOT_FORCE_DRAG4Robot is in force-drag mode
RobotStatusEnum::ROBOT_IDLE_TO_RUNNING101Intermediate state: idle is switching to running
RobotStatusEnum::ROBOT_IDLE_TO_TEACHING102Intermediate state: idle is switching to teach mode
RobotStatusEnum::ROBOT_RUNNING_TO_IDLE103Intermediate state: running is switching to idle
RobotStatusEnum::ROBOT_TEACHING_TO_IDLE104Intermediate state: teach mode is switching to idle
RobotStatusEnum::ROBOT_UNKNOWN-1Unknown state

ServoStatusEnum

Represents servo status, corresponding to Info::GetServoStatus() .

EnumValueDescription
ServoStatusEnum::SERVO_IDLE1Servo is idle
ServoStatusEnum::SERVO_RUNNING2Servo is running
ServoStatusEnum::SERVO_DISABLE3Servo is disabled
ServoStatusEnum::SERVO_WAIT_READY4Servo is waiting to become ready
ServoStatusEnum::SERVO_WAIT_DOWN5Servo is waiting to power down
ServoStatusEnum::SERVO_INIT10Servo is initializing
ServoStatusEnum::SERVO_UNKNOWN-1Unknown state

SoftModeEnum

Represents controller soft_op_mode , corresponding to Info::GetSoftMode() / Info::SetSoftMode() .

EnumValueDescription
SoftModeEnum::UNKNOWN0Unknown mode
SoftModeEnum::AUTO1Automatic mode
SoftModeEnum::MANUAL_LIMIT2Manual limited-speed mode
SoftModeEnum::MANUAL3Manual mode

OpModeEnum

Represents controller user_op_mode , corresponding to Info::GetOpMode() / Info::SetOpMode() .

EnumValueDescription
OpModeEnum::UNKNOWN0Unknown operation mode
OpModeEnum::AUTO1Automatic operation mode
OpModeEnum::MANUAL_LIMIT2Manual limited-speed operation mode
OpModeEnum::MANUAL3Manual operation mode

LanguageType / RobotAlarm

Header file: include/alarm_types.h

LanguageType

LanguageType selects the language returned by alarm queries and is currently used by Alarm::GetAllActiveAlarms() . The SDK converts the enum into the alarm service's language parameter: Chinese is cn , English is en .

Enum ValueValueDescription
LanguageType::Chinese0Request Chinese alarm descriptions
LanguageType::English1Request English alarm descriptions

RobotAlarm

RobotAlarm is the alarm detail structure. Alarm::GetAllActiveAlarms() returns std::vector<RobotAlarm> , while Alarm::GetTopAlarm() returns a single RobotAlarm . If there is no active alarm, the string fields in the returned structure are usually empty.

FieldMeaning
user_codeUser-side alarm code
inner_codeController-side alarm code
nameAlarm name
reasonReason
suggestSuggested handling
consequenceImpact
ext_descExtended description

SignalType / SignalValue

Header file: include/signal_types.h

SignalType

SignalType distinguishes the IO types currently supported by the SDK. It covers digital signals, group signals, remote-control signals, wrist IO, and analog signals, so Signals can use one unified entry point to express "which IO type to read" and "which IO type to write".

EnumValueTypeDescription
DI1Digital inputDigital Input
DO2Digital outputDigital Output
UI3Dedicated inputUser Input
UO4Dedicated outputUser Output
RI5Remote inputRemote Input
RO6Remote outputRemote Output
GI7Group inputGroup Input
GO8Group outputGroup Output
TAI9Wrist analog inputTool Analog Input
TDI10Wrist digital inputTool Digital Input
TDO11Wrist digital outputTool Digital Output
AI12Analog inputAnalog Input
AO13Analog outputAnalog Output

SDK Usage Scope

  • Signals::Read() supports all SignalType values listed above.
  • Signals::Write(type, index, int32_t value) supports only DO , RO , GO , and TDO .
  • Signals::Write(type, index, Float64 value) supports only AO .
  • Signals::MultiRead() / MultiWrite() support only DO .
  • Port numbers passed to Signals follow controller-side numbering.

SignalValue

SignalValue provides readable constants for digital writes, so callers do not have to pass raw 0 or 1 values. For example, when writing DO, SignalValue::ON means set and SignalValue::OFF means reset.

ConstantValueDescription
SignalValue::OFF0Off, reset, or low level
SignalValue::ON1On, set, or high level