IEC61850 has four types of controls as described in IEC61850-7-2 chapter 17: Controls.
Direct control with normal security
SBO(Select Before Operate) control with normal security
Direct control with enhanced security
SBO(Select Before Operate) control with enhanced security

To operate these controls SystemCORP stack has got following control API functions on Client side.
IEC61850_ControlSelect()
IEC61850_ControlOperate()
IEC61850_ControlCancel()

On Server side SystemCORP stack has got callback functions which gets called when a Client tries to operate a Control element.
IEC61850_ControlSelectCallback()
IEC61850_ControlOperateCallback()
IEC61850_ControlCancelCallback()

The API stack has its own state machine and will turn away control requests if it is not in the right state.
This state machine acts in a manner as described in IEC61850-7-2 chapter 17: Controls.

Note*** SystemCORP stack uses DAID to refer to a unique point within the CID file. To operate a control element from Client side, the user application has to use SystemCORP
Control functions and not IEC61850_Write().


For Direct controls
Direct control with normal security => IEC61850_ControlOperate()
Direct control with enhanced security => IEC61850_ControlOperate()

To Select a control
SBO control with normal security => IEC61850_ControlSelect()
SBO control with enhanced security => IEC61850_ControlSelect()

To Operate a control
SBO control with normal security => IEC61850_ControlOperate()
SBO control with enhanced security => IEC61850_ControlOperate()

To Cancel a control
SBO control with normal security => IEC61850_ControlCancel()
SBO control with enhanced security => IEC61850_ControlCancel()